Files
DocumentServer-v-9.2.0/sdkjs/cell/model/Slicer.js
Yajbir Singh f1b860b25c
Some checks failed
check / markdownlint (push) Has been cancelled
check / spellchecker (push) Has been cancelled
updated
2025-12-11 19:03:17 +05:30

3244 lines
90 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* (c) Copyright Ascensio System SIA 2010-2024
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish
* street, Riga, Latvia, EU, LV-1050.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
"use strict";
(function (window, undefined) {
var insertSlicerType = {
table: 0,
pivotTable: 1
};
var ST_olapSlicerCacheSortOrder = {
Natural: 0,
Ascending: 1,
Descending: 2
};
var ST_tabularSlicerCacheSortOrder = {
Ascending: 0,
Descending: 1
};
var ST_slicerCacheCrossFilter = {
None: 0,
ShowItemsWithDataAtTop: 1,
ShowItemsWithNoData: 2
};
var ST_slicerStyleType = {
unselectedItemWithData: 0,
selectedItemWithData: 1,
unselectedItemWithNoData: 2,
selectedItemWithNoData: 3,
hoveredUnselectedItemWithData: 4,
hoveredSelectedItemWithData: 5,
hoveredUnselectedItemWithNoData: 6,
hoveredSelectedItemWithNoData: 7
};
function CT_slicerStyleElement() {
this.type = null;
this.dxfId = null;
return this;
}
CT_slicerStyleElement.prototype.toStream = function (s) {
s.WriteUChar(AscCommon.g_nodeAttributeStart);
s._WriteUChar2(0, this.type);
s._WriteUInt2(1, this.dxfId);
s.WriteUChar(AscCommon.g_nodeAttributeEnd);
};
CT_slicerStyleElement.prototype.fromStream = function (s) {
var _type;
var _len = s.GetULong();
var _start_pos = s.cur;
var _end_pos = _len + _start_pos;
var _at;
// attributes
s.GetUChar();
while (true) {
_at = s.GetUChar();
if (_at === AscCommon.g_nodeAttributeEnd) {
break;
}
switch (_at) {
case 0: {
this.type = s.GetUChar();
break;
}
case 1: {
this.dxfId = s.GetULong();
break;
}
default:
s.Seek2(_end_pos);
return;
}
}
//members
while (true) {
if (s.cur >= _end_pos) {
break;
}
_type = s.GetUChar();
switch (_type) {
default: {
s.SkipRecord();
break;
}
}
}
s.Seek2(_end_pos);
};
function CT_slicerStyle() {
this.name = null;
this.slicerStyleElements = [];
return this;
}
CT_slicerStyle.prototype.toStream = function (s) {
s.WriteUChar(AscCommon.g_nodeAttributeStart);
s._WriteString2(0, this.name);
s.WriteUChar(AscCommon.g_nodeAttributeEnd);
s.WriteRecordArray4(0, 0, this.slicerStyleElements);
};
CT_slicerStyle.prototype.fromStream = function (s) {
var _type;
var _len = s.GetULong();
var _start_pos = s.cur;
var _end_pos = _len + _start_pos;
var _at;
// attributes
s.GetUChar();
while (true) {
_at = s.GetUChar();
if (_at === AscCommon.g_nodeAttributeEnd) {
break;
}
switch (_at) {
case 0: {
this.name = s.GetString2();
break;
}
default:
s.Seek2(_end_pos);
return;
}
}
//members
while (true) {
if (s.cur >= _end_pos) {
break;
}
_type = s.GetUChar();
switch (_type) {
case 0: {
s.Skip2(4);
var _c = s.GetULong();
for (var i = 0; i < _c; ++i) {
s.Skip2(1); // type
var tmp = new CT_slicerStyleElement();
tmp.fromStream(s);
this.slicerStyleElements.push(tmp);
}
break;
}
default: {
s.SkipRecord();
break;
}
}
}
s.Seek2(_end_pos);
};
function CT_slicerStyles() {
this.defaultSlicerStyle = null;
this.slicerStyle = [];
return this;
}
CT_slicerStyles.prototype.toStream = function (s) {
s.WriteUChar(AscCommon.g_nodeAttributeStart);
s._WriteString2(0, this.defaultSlicerStyle);
s.WriteUChar(AscCommon.g_nodeAttributeEnd);
s.WriteRecordArray4(0, 0, this.slicerStyle);
};
CT_slicerStyles.prototype.fromStream = function (s) {
var _type;
var _len = s.GetULong();
var _start_pos = s.cur;
var _end_pos = _len + _start_pos;
var _at;
// attributes
s.GetUChar();
while (true) {
_at = s.GetUChar();
if (_at === AscCommon.g_nodeAttributeEnd) {
break;
}
switch (_at) {
case 0: {
this.defaultSlicerStyle = s.GetString2();
break;
}
default:
s.Seek2(_end_pos);
return;
}
}
//members
while (true) {
if (s.cur >= _end_pos) {
break;
}
_type = s.GetUChar();
switch (_type) {
case 0: {
s.Skip2(4);
var _c = s.GetULong();
for (var i = 0; i < _c; ++i) {
s.Skip2(1); // type
var tmp = new CT_slicerStyle();
tmp.fromStream(s);
this.slicerStyle.push(tmp);
}
break;
}
default: {
s.SkipRecord();
break;
}
}
}
s.Seek2(_end_pos);
};
function CT_slicers(opt_ws) {
this.slicer = [];
this._ws = opt_ws;
return this;
}
CT_slicers.prototype.toStream = function (s) {
s.WriteUChar(AscCommon.g_nodeAttributeStart);
s.WriteUChar(AscCommon.g_nodeAttributeEnd);
s.WriteRecordArray4(0, 0, this.slicer);
};
CT_slicers.prototype.fromStream = function (s, ws, slicerCaches) {
var _len = s.GetULong();
var _start_pos = s.cur;
var _end_pos = _len + _start_pos;
var _at;
// attributes
s.GetUChar();
while (true) {
_at = s.GetUChar();
if (_at === AscCommon.g_nodeAttributeEnd)
break;
switch (_at) {
default:
s.Seek2(_end_pos);
return;
}
}
//members
var _type;
while (true) {
if (s.cur >= _end_pos)
break;
_type = s.GetUChar();
switch (_type) {
case 0: {
s.Skip2(4);
var _c = s.GetULong();
for (var i = 0; i < _c; ++i) {
s.Skip2(1); // type
var tmp = new CT_slicer(ws);
tmp.fromStream(s, slicerCaches);
this.slicer.push(tmp);
}
break;
}
default: {
s.SkipRecord();
break;
}
}
}
s.Seek2(_end_pos);
};
function CT_slicer(ws) {
//from documentation
this.name = null;
this.uid = AscCommon.CreateGUID();
this.cacheDefinition = null;
this.caption = null;
this.startItem = 0;
this.columnCount = 1;
this.showCaption = true;
this.level = 0;
this.style = null;
this.lockedPosition = false;
this.rowHeight = null;
this.ws = ws;
this._writeBinaryForHistory = null;
this._ascSourceName = null;
this._ascNameInFormulas = null;
this._ascSortOrder = null;
this._ascCustomListSort = null;
this._ascHideItemsWithNoData = null;
this._ascIndicateItemsWithNoData = null;
this._ascShowItemsWithNoDataLast = null;
this._ascButtonWidth = null;
return this;
}
CT_slicer.prototype.getType = function () {
return AscCommonExcel.UndoRedoDataTypes.Slicer;
};
CT_slicer.prototype.clone = function (ws) {
//если ws-> undefined, то клонирование для интерфейса, только CT_slicer без внутренних структур
var res = new CT_slicer(ws);
res.name = this.name;
//res.uid = this.uid;
res.caption = this.caption;
res.startItem = this.startItem;
res.columnCount = this.columnCount;
res.showCaption = this.showCaption;
res.level = this.level;
res.style = this.style;
res.lockedPosition = this.lockedPosition;
res.rowHeight = this.rowHeight;
if (ws) {
res.uid = AscCommon.CreateGUID();
res.cacheDefinition = this.cacheDefinition.clone(ws.workbook);
return res;
}
this.initInterfaceOptions();
res._ascSourceName = this._ascSourceName;
res._ascNameInFormulas = this._ascNameInFormulas;
res._ascSortOrder = this._ascSortOrder;
res._ascCustomListSort = this._ascCustomListSort;
res._ascHideItemsWithNoData = this._ascHideItemsWithNoData;
res._ascIndicateItemsWithNoData = this._ascIndicateItemsWithNoData;
res._ascShowItemsWithNoDataLast = this._ascShowItemsWithNoDataLast;
res._ascButtonWidth = this._ascButtonWidth;
return res;
};
CT_slicer.prototype.merge = function (val) {
if (val.name !== this.name) {
this.name = undefined;
}
if (val.caption !== this.caption) {
this.caption = undefined;
}
if (val.startItem !== this.startItem) {
this.startItem = undefined;
}
if (val.columnCount !== this.columnCount) {
this.columnCount = undefined;
}
if (val.showCaption !== this.showCaption) {
this.showCaption = undefined;
}
if (val.level !== this.level) {
this.level = undefined;
}
if (val.style !== this.style) {
this.style = undefined;
}
if (val.lockedPosition !== this.lockedPosition) {
this.lockedPosition = undefined;
}
if (val.rowHeight !== this.rowHeight) {
this.rowHeight = undefined;
}
if (val._ascSourceName !== this._ascSourceName) {
this._ascSourceName = undefined;
}
if (val._ascNameInFormulas !== this._ascNameInFormulas) {
this._ascNameInFormulas = undefined;
}
if (val._ascSortOrder !== this._ascSortOrder) {
this._ascSortOrder = undefined;
}
if (val._ascCustomListSort !== this._ascCustomListSort) {
this._ascCustomListSort = undefined;
}
if (val._ascHideItemsWithNoData !== this._ascHideItemsWithNoData) {
this._ascHideItemsWithNoData = undefined;
}
if (val._ascIndicateItemsWithNoData !== this._ascIndicateItemsWithNoData) {
this._ascIndicateItemsWithNoData = undefined;
}
if (val._ascShowItemsWithNoDataLast !== this._ascShowItemsWithNoDataLast) {
this._ascShowItemsWithNoDataLast = undefined;
}
if (val._ascButtonWidth !== this._ascButtonWidth) {
this._ascButtonWidth = undefined;
}
};
CT_slicer.prototype.init = function (name, obj_name, type, ws, pivotTable) {
var isNewCache = false;
if (name) {
this.name = this.generateName(name);
this.caption = name;
}
if (!this.rowHeight) {
this.rowHeight = 241300;
}
if (!this.cacheDefinition) {
//необходимо проверить, возможно данный кэш уже существует
var cache;
var caches = this.ws.getSlicerCachesBySourceName(name);
if (caches) {
for (var i = 0; i < caches.length; i++) {
if (caches[i].checkObjApply(name, obj_name, type, pivotTable)) {
cache = caches[i];
break;
}
}
}
if (!cache) {
cache = new CT_slicerCacheDefinition(this.ws.workbook);
cache.init(name, obj_name, type, pivotTable);
isNewCache = true;
}
this.cacheDefinition = cache;
}
if (ws && !this.ws) {
this.ws = ws;
if (!this.cacheDefinition.isInit()) {
this.cacheDefinition.initAfterSerialize(ws.workbook);
}
}
return isNewCache;
};
CT_slicer.prototype.initPostOpen = function (tableIds, sheetIds) {
if (this.cacheDefinition) {
this.cacheDefinition.initAfterSerialize(this.ws.workbook);
var tableCache = this.cacheDefinition.tableSlicerCache;
if (tableCache) {
var _obj = tableCache.initPostOpen(tableIds, this.cacheDefinition.sourceName);
if (_obj) {
this.cacheDefinition._type = insertSlicerType.table;
}
}
var tabular = this.cacheDefinition.getTabular();
if (tabular) {
this.cacheDefinition._type = insertSlicerType.pivotTable;
}
for (var i = 0; i < this.cacheDefinition.pivotTables.length; ++i) {
this.cacheDefinition.pivotTables[i].initPostOpen(sheetIds);
}
}
};
CT_slicer.prototype.getIndexSheetCache = function () {
if (this.cacheDefinition) {
return this.cacheDefinition.getIndexSheetCache();
}
return null;
};
CT_slicer.prototype.initPostOpenZip = function (pivotCaches) {
if (this.cacheDefinition) {
this.cacheDefinition.initAfterSerialize(this.ws.workbook, pivotCaches);
}
};
CT_slicer.prototype.initInterfaceOptions = function () {
this._ascSourceName = this.getSourceName();
this._ascNameInFormulas = this.getNameInFormulas();
this._ascSortOrder = this.getSortOrder();
this._ascCustomListSort = this.getCustomListSort();
this._ascHideItemsWithNoData = this.getHideItemsWithNoData();
this._ascIndicateItemsWithNoData = this.getIndicateItemsWithNoData();
this._ascShowItemsWithNoDataLast = this.getShowItemsWithNoDataLast();
};
CT_slicer.prototype.Write_ToBinary2 = function (w) {
this._writeBinaryForHistory = true;
var old = new AscCommon.CMemory(true);
pptx_content_writer.BinaryFileWriter.ExportToMemory(old);
pptx_content_writer.BinaryFileWriter.ImportFromMemory(w);
pptx_content_writer.BinaryFileWriter.WriteRecord4(0, this);
pptx_content_writer.BinaryFileWriter.ExportToMemory(w);
pptx_content_writer.BinaryFileWriter.ImportFromMemory(old);
this._writeBinaryForHistory = false;
};
CT_slicer.prototype.Read_FromBinary2 = function (r) {
var fileStream = r.ToFileStream();
fileStream.GetUChar();
this.fromStream(fileStream, null, true);
r.FromFileStream(fileStream);
}
CT_slicer.prototype.toStream = function (s) {
var historySerialize = this._writeBinaryForHistory;
s.WriteUChar(AscCommon.g_nodeAttributeStart);
s._WriteString2(0, this.name);
s._WriteString2(1, this.uid);
if (this.cacheDefinition && !historySerialize) {
s._WriteString2(2, this.cacheDefinition.name);
}
s._WriteString2(3, this.caption);
s._WriteUInt2(4, this.startItem);
s._WriteUInt2(5, this.columnCount);
s._WriteBool2(6, this.showCaption);
s._WriteUInt2(7, this.level);
s._WriteString2(8, this.style);
s._WriteBool2(9, this.lockedPosition);
s._WriteUInt2(10, this.rowHeight);
s.WriteUChar(AscCommon.g_nodeAttributeEnd);
if (null != this.cacheDefinition && historySerialize) {
s.StartRecord(0);
this.cacheDefinition.toStream(s, null, null, true);
s.EndRecord();
}
};
CT_slicer.prototype.fromStream = function (s, slicerCaches, historySerialize) {
var _len = s.GetULong();
var _start_pos = s.cur;
var _end_pos = _len + _start_pos;
var _at;
// attributes
s.GetUChar();
while (true) {
_at = s.GetUChar();
if (_at === AscCommon.g_nodeAttributeEnd)
break;
switch (_at) {
case 0: {
this.name = s.GetString2();
break;
}
case 1: {
this.uid = s.GetString2();
break;
}
case 2: {
var cache = s.GetString2();
this.cacheDefinition = slicerCaches[cache] || null;
break;
}
case 3: {
this.caption = s.GetString2();
if (typeof this.caption === "string") {
if (AscFonts.IsCheckSymbols) {
AscFonts.FontPickerByCharacter.getFontsByString(this.caption);
}
}
break;
}
case 4: {
this.startItem = s.GetULong();
break;
}
case 5: {
this.columnCount = s.GetULong();
break;
}
case 6: {
this.showCaption = s.GetBool();
break;
}
case 7: {
this.level = s.GetULong();
break;
}
case 8: {
this.style = s.GetString2();
break;
}
case 9: {
this.lockedPosition = s.GetBool();
break;
}
case 10: {
this.rowHeight = s.GetULong();
break;
}
default:
s.Seek2(_end_pos);
return;
}
}
while (true) {
if (s.cur >= _end_pos)
break;
_at = s.GetUChar();
switch (_at) {
case 0: {
this.cacheDefinition = new CT_slicerCacheDefinition();
this.cacheDefinition.fromStream(s, historySerialize);
break;
}
default: {
s.SkipRecord();
break;
}
}
}
s.Seek2(_end_pos);
};
CT_slicer.prototype.isExt = function () {
return !!this.getTableSlicerCache();
};
CT_slicer.prototype.setName = function (val) {
var oldVal = this.name;
this.name = val;
History.Add(AscCommonExcel.g_oUndoRedoSlicer, AscCH.historyitem_Slicer_SetName,
this.ws.getId(), null, new AscCommonExcel.UndoRedoData_Slicer(null, oldVal, val));
this.ws.workbook.onSlicerChangeName(oldVal, val);
};
CT_slicer.prototype.setCaption = function (val) {
var oldVal = this.caption;
this.caption = val;
if (typeof this.caption === "string") {
if (AscFonts.IsCheckSymbols) {
AscFonts.FontPickerByCharacter.getFontsByString(this.caption);
}
}
History.Add(AscCommonExcel.g_oUndoRedoSlicer, AscCH.historyitem_Slicer_SetCaption,
this.ws.getId(), null, new AscCommonExcel.UndoRedoData_Slicer(this.name, oldVal, val));
};
CT_slicer.prototype.getSlicerCache = function () {
return this.cacheDefinition;
};
CT_slicer.prototype.getTableSlicerCache = function () {
return this.cacheDefinition && this.cacheDefinition.getTableSlicerCache();
};
CT_slicer.prototype.getTabular = function () {
return this.cacheDefinition && this.cacheDefinition.getTabular();
};
CT_slicer.prototype.getCacheDefinition = function () {
return this.cacheDefinition;
};
CT_slicer.prototype.generateName = function (name) {
var wb = this.ws.workbook;
var mapNames = [];
var isContainName = false;
for (var i = 0; i < wb.aWorksheets.length; i++) {
if (!wb.aWorksheets[i].aSlicers) {
continue;
}
for (var j = 0; j < wb.aWorksheets[i].aSlicers.length; j++) {
if (name === wb.aWorksheets[i].aSlicers[j].name) {
isContainName = true;
}
mapNames[wb.aWorksheets[i].aSlicers[j].name] = 1;
}
}
if (isContainName) {
var baseName = name + " ";
var counter = 1;
while (mapNames[baseName + counter]) {
counter++;
}
name = baseName + counter;
}
return name;
};
CT_slicer.prototype.setTableColName = function (oldVal, newVal) {
History.Create_NewPoint();
History.StartTransaction();
//TODO передать информацию во view о смене caption
if (this.caption === oldVal) {
this.setCaption(newVal);
}
this.setSourceName(newVal);
this.setTableCacheColName(newVal);
History.EndTransaction();
};
CT_slicer.prototype.setSourceName = function (val) {
if (this.cacheDefinition) {
var oldVal = this.cacheDefinition.sourceName;
this.cacheDefinition.setSourceName(val);
History.Add(AscCommonExcel.g_oUndoRedoSlicer, AscCH.historyitem_Slicer_SetCacheSourceName,
this.ws.getId(), null, new AscCommonExcel.UndoRedoData_Slicer(this.name, oldVal, val));
}
};
CT_slicer.prototype.setTableCacheColName = function (val) {
if (!this.cacheDefinition) {
return;
}
var _tableCache = this.cacheDefinition.getTableSlicerCache();
if (_tableCache) {
var oldVal = _tableCache.column;
_tableCache.setColName(val);
History.Add(AscCommonExcel.g_oUndoRedoSlicer, AscCH.historyitem_Slicer_SetTableColName,
this.ws.getId(), null, new AscCommonExcel.UndoRedoData_Slicer(this.name, oldVal, val));
}
};
CT_slicer.prototype.setTableName = function (val) {
if (!this.cacheDefinition) {
return;
}
var _tableCache = this.cacheDefinition.getTableSlicerCache();
if (_tableCache) {
var oldVal = _tableCache.tableId;
_tableCache.setTableName(val);
History.Add(AscCommonExcel.g_oUndoRedoSlicer, AscCH.historyitem_Slicer_SetTableName,
this.ws.getId(), null, new AscCommonExcel.UndoRedoData_Slicer(this.name, oldVal, val));
}
};
CT_slicer.prototype.setCacheName = function (val) {
if (!this.cacheDefinition) {
return;
}
var oldVal = this.cacheDefinition.name;
this.cacheDefinition.setName(val);
History.Add(AscCommonExcel.g_oUndoRedoSlicer, AscCH.historyitem_Slicer_SetCacheName,
this.ws.getId(), null, new AscCommonExcel.UndoRedoData_Slicer(this.name, oldVal, val));
};
CT_slicer.prototype.set = function (val, opt_moveSheet) {
if (!opt_moveSheet && this.name !== val.name && val.name !== undefined) {
this.setName(val.name);
}
this.caption = this.checkProperty(this.caption, val.caption, AscCH.historyitem_Slicer_SetCaption);
this.startItem = this.checkProperty(this.startItem, val.startItem, AscCH.historyitem_Slicer_SetStartItem);
this.columnCount = this.checkProperty(this.columnCount, val.columnCount, AscCH.historyitem_Slicer_SetColumnCount);
this.showCaption = this.checkProperty(this.showCaption, val.showCaption, AscCH.historyitem_Slicer_SetShowCaption);
this.level = this.checkProperty(this.level, val.level, AscCH.historyitem_Slicer_SetLevel);
this.style = this.checkProperty(this.style, val.style, AscCH.historyitem_Slicer_SetStyle);
this.lockedPosition = this.checkProperty(this.lockedPosition, val.lockedPosition, AscCH.historyitem_Slicer_SetLockedPosition);
this.rowHeight = this.checkProperty(this.rowHeight, val.rowHeight, AscCH.historyitem_Slicer_SetRowHeight);
var isChangedSortOrder = false;
if (val._ascSortOrder !== undefined) {
isChangedSortOrder = this.setSortOrder(val._ascSortOrder);
}
if (val._ascCustomListSort !== undefined) {
this.setCustomListSort(val._ascCustomListSort);
}
var isChangedHideItemsWithNoData = false;
if (val._ascHideItemsWithNoData !== undefined) {
isChangedHideItemsWithNoData = this.setHideItemsWithNoData(val._ascHideItemsWithNoData);
}
var isChangedCrossFilter = false;
var crossFilter = this._ascGenerateCrossFilter(val._ascHideItemsWithNoData, val._ascIndicateItemsWithNoData, val._ascShowItemsWithNoDataLast);
if (crossFilter !== undefined) {
isChangedCrossFilter = this.setCrossFilter(crossFilter);
}
if (isChangedSortOrder || isChangedHideItemsWithNoData || isChangedCrossFilter) {
this.updateItemsWithNoData();
}
//TODO ws?
if (!opt_moveSheet) {
var slicers = this.ws.getSlicersByCacheName(this.cacheDefinition.name);
if (slicers) {
for (var i = 0; i < slicers.length; i++) {
this.ws.workbook.onSlicerUpdate(slicers[i].name);
}
}
}
};
CT_slicer.prototype.checkProperty = function (propOld, propNew, type) {
if (propOld !== propNew && undefined !== propNew) {
History.Add(AscCommonExcel.g_oUndoRedoSlicer, type,
this.ws.getId(), null, new AscCommonExcel.UndoRedoData_Slicer(this.name, propOld, propNew));
return propNew;
}
return propOld;
};
CT_slicer.prototype.getSourceName = function () {
return this.cacheDefinition.sourceName;
};
CT_slicer.prototype.getNameInFormulas = function () {
return this.cacheDefinition.name;
};
CT_slicer.prototype.getSortOrder = function () {
//TODO может быть не только таблица
var table = this.cacheDefinition.getTableSlicerCache() || this.cacheDefinition.getTabular();
if (table) {
return table.sortOrder;
}
return ST_tabularSlicerCacheSortOrder.Ascending;
};
CT_slicer.prototype.getCustomListSort = function () {
var table = this.cacheDefinition.getTableSlicerCache() || this.cacheDefinition.getTabular();
if (table) {
return table.customListSort;
}
return true;
};
CT_slicer.prototype.getHideItemsWithNoData = function () {
return this.cacheDefinition.getHideItemsWithNoData();
};
CT_slicer.prototype.getIndicateItemsWithNoData = function () {
return this.cacheDefinition.getIndicateItemsWithNoData();
};
CT_slicer.prototype.getShowItemsWithNoDataLast = function () {
return this.cacheDefinition.getShowItemsWithNoDataLast();
};
CT_slicer.prototype.setSortOrder = function (val) {
return this.cacheDefinition.setSortOrder(val);
};
CT_slicer.prototype.setCustomListSort = function (val) {
this.cacheDefinition.setCustomListSort(val);
};
CT_slicer.prototype.setHideItemsWithNoData = function (val) {
return this.cacheDefinition.setHideItemsWithNoData(val);
};
CT_slicer.prototype.setCrossFilter = function (val) {
return this.cacheDefinition.setCrossFilter(val);
};
CT_slicer.prototype.updateItemsWithNoData = function () {
return this.cacheDefinition.updateItemsWithNoData();
};
CT_slicer.prototype._ascGenerateCrossFilter = function (_ascHideItemsWithNoData, _ascIndicateItemsWithNoData, _ascShowItemsWithNoDataLast) {
if (_ascHideItemsWithNoData || (_ascIndicateItemsWithNoData && _ascShowItemsWithNoDataLast)) {
return ST_slicerCacheCrossFilter.ShowItemsWithDataAtTop;
}
if (!_ascIndicateItemsWithNoData && !_ascShowItemsWithNoDataLast) {
return ST_slicerCacheCrossFilter.None;
}
if (_ascIndicateItemsWithNoData && !_ascShowItemsWithNoDataLast) {
return ST_slicerCacheCrossFilter.ShowItemsWithNoData;
}
return ST_slicerCacheCrossFilter.None;
};
CT_slicer.prototype.asc_setName = function (val) {
this.name = val;
};
CT_slicer.prototype.asc_setCaption = function (val) {
this.caption = val;
};
CT_slicer.prototype.asc_setStartItem = function (val) {
this.startItem = val;
};
CT_slicer.prototype.asc_setColumnCount = function (val) {
this.columnCount = val;
};
CT_slicer.prototype.asc_setShowCaption = function (val) {
this.showCaption = val;
};
CT_slicer.prototype.asc_setLevel = function (val) {
this.level = val;
};
CT_slicer.prototype.asc_setStyle = function (val) {
this.style = val;
};
CT_slicer.prototype.asc_setLockedPosition = function (val) {
this.lockedPosition = val;
};
CT_slicer.prototype.asc_setRowHeight = function (val) {
this.rowHeight = val;
};
CT_slicer.prototype.asc_setSortOrder = function (val) {
this._ascSortOrder = val;
};
CT_slicer.prototype.asc_setHideItemsWithNoData = function (val) {
this._ascHideItemsWithNoData = val;
};
CT_slicer.prototype.asc_setCustomListSort = function (val) {
this._ascCustomListSort = val;
};
CT_slicer.prototype.asc_setIndicateItemsWithNoData = function (val) {
this._ascIndicateItemsWithNoData = val;
};
CT_slicer.prototype.asc_setShowItemsWithNoDataLast = function (val) {
this._ascShowItemsWithNoDataLast = val;
};
CT_slicer.prototype.asc_setButtonWidth = function (val) {
this._ascButtonWidth = val;
};
CT_slicer.prototype.asc_getName = function () {
return this.name;
};
CT_slicer.prototype.asc_getCaption = function () {
return this.caption;
};
CT_slicer.prototype.asc_getStartItem = function () {
return this.startItem;
};
CT_slicer.prototype.asc_getColumnCount = function () {
return this.columnCount;
};
CT_slicer.prototype.asc_getShowCaption = function () {
return this.showCaption;
};
CT_slicer.prototype.asc_getLevel = function () {
return this.level;
};
CT_slicer.prototype.asc_getStyle = function () {
var sStyle = this.style;
if (sStyle) {
return sStyle;
}
var wb = Asc.editor.wbModel;
if (wb) {
return wb.SlicerStyles.DefaultStyle;
}
return null;
};
CT_slicer.prototype.asc_getLockedPosition = function () {
return this.lockedPosition;
};
CT_slicer.prototype.asc_getRowHeight = function () {
return this.rowHeight;
};
CT_slicer.prototype.asc_getSourceName = function () {
return this._ascSourceName;
};
CT_slicer.prototype.asc_getNameInFormulas = function () {
return this._ascNameInFormulas;
};
CT_slicer.prototype.asc_getSortOrder = function () {
return this._ascSortOrder;
};
CT_slicer.prototype.asc_getCrossFilter = function () {
var table = this.cacheDefinition.getTableSlicerCache() || this.cacheDefinition.getTabular();
if (table) {
return table.crossFilter;
}
return ST_slicerCacheCrossFilter.ShowItemsWithDataAtTop;
};
CT_slicer.prototype.asc_getCustomListSort = function () {
return this._ascCustomListSort;
};
CT_slicer.prototype.asc_getHideItemsWithNoData = function () {
return this._ascHideItemsWithNoData;
};
CT_slicer.prototype.asc_getIndicateItemsWithNoData = function () {
return this._ascIndicateItemsWithNoData;
};
CT_slicer.prototype.asc_getShowItemsWithNoDataLast = function () {
return this._ascShowItemsWithNoDataLast;
};
CT_slicer.prototype.asc_getButtonWidth = function () {
return this._ascButtonWidth;
};
CT_slicer.prototype.asc_getStylesPictures = function () {
return Asc.editor.asc_getSlicerPictures();
};
CT_slicer.prototype.checkModelContent = function (model) {
return this.cacheDefinition.checkModelContent(model);
};
CT_slicer.prototype.getPivotCache = function () {
return this.cacheDefinition.getPivotCache();
};
function CT_slicerCacheDefinition(wb) {
this.pivotTables = [];//SlicerCachePivotTable
this.data = null;//CSlicerCacheData
this.name = null;
this.uid = AscCommon.CreateGUID();
this.sourceName = null;
this.tableSlicerCache = null;
this.slicerCacheHideItemsWithNoData = null;
this.wb = wb;
//пока добавил объект для хранения типа, чтобы не проходится по внутреннему дереву
this._type = null;
return this;
}
CT_slicerCacheDefinition.prototype.isInit = function () {
return !!this.wb && (insertSlicerType.pivotTable !== this.getType() || !!this.getPivotCache());
};
CT_slicerCacheDefinition.prototype.init = function (name, obj_name, type, pivotTable) {
switch (type) {
case insertSlicerType.table: {
this.sourceName = name;
//TODO для генерации имени нужна отдельная функция
this.name = this.generateSlicerCacheName(name);
this.tableSlicerCache = new CT_tableSlicerCache();
this.tableSlicerCache.tableId = obj_name;
this.tableSlicerCache.column = name;
break;
}
case insertSlicerType.pivotTable: {
var cacheDefinition = pivotTable.cacheDefinition;
var cacheFields = cacheDefinition.getFields();
var fieldIndex = pivotTable.asc_getFieldIndexByName(name);
var cacheField = -1 !== fieldIndex && cacheFields[fieldIndex];
if (cacheField) {
this.sourceName = cacheField.asc_getName();
//TODO для генерации имени нужна отдельная функция
this.name = this.generateSlicerCacheName(name);
this.data = new CT_slicerCacheData();
this.data.tabular = new CT_tabularSlicerCache();
pivotTable.checkPivotCacheId();
this.setPivotCacheDefinition(cacheDefinition);
var table = new CT_slicerCachePivotTable();
table.name = pivotTable.asc_getName();
table.sheetId = pivotTable.GetWS().getId();
this.pivotTables.push(table);
}
break;
}
}
this._type = type;
};
CT_slicerCacheDefinition.prototype.initAfterSerialize = function (wb, pivotCachesOpen) {
this.wb = wb;
var tabular = this.getTabular();
if (tabular) {
tabular.initAfterSerialize(this.wb, pivotCachesOpen);
}
var olap = this.getOlap();
if (olap) {
olap.initAfterSerialize(this.wb, pivotCachesOpen);
}
};
CT_slicerCacheDefinition.prototype.setPivotCacheDefinition = function (pivotCacheDefinition) {
var tabular = this.getTabular();
if (tabular) {
tabular.setPivotCacheDefinition(pivotCacheDefinition);
}
var olap = this.getOlap();
if (olap) {
olap.setPivotCacheDefinition(pivotCacheDefinition);
}
};
CT_slicerCacheDefinition.prototype.moveToWb = function (wb) {
this.initAfterSerialize(wb);
var realPivotTables = wb.getPivotTablesByCacheId(this.getPivotCacheId());
var oldPivotTables = this.pivotTables;
this.pivotTables = [];
for (var i = 0; i < oldPivotTables.length; ++i) {
for (var j = 0; j < realPivotTables.length; ++j) {
if (oldPivotTables[i].name === realPivotTables[j].name) {
this.addPivotTable(realPivotTables[j]);
}
}
}
return !this.getTabular() || -1 !== this.getPivotFieldIndex();
};
CT_slicerCacheDefinition.prototype.addPivotTable = function (pivotTable) {
var table = new CT_slicerCachePivotTable();
table.name = pivotTable.asc_getName();
table.sheetId = pivotTable.GetWS().getId();
this.pivotTables.push(table);
};
CT_slicerCacheDefinition.prototype.clone = function (wb) {
var res = new CT_slicerCacheDefinition(wb);
var i
for (i = 0; i < this.pivotTables.length; i++) {
res.pivotTables[i] = this.pivotTables[i].clone();//SlicerCachePivotTable
}
res.data = this.data ? this.data.clone() : null;//CSlicerCacheData
res.name = this.name;
res.uid = AscCommon.CreateGUID();
res.sourceName = this.sourceName;
res.tableSlicerCache = this.tableSlicerCache ? this.tableSlicerCache.clone() : null;
if (this.slicerCacheHideItemsWithNoData) {
if (this.slicerCacheHideItemsWithNoData.length === 0) {
res.slicerCacheHideItemsWithNoData = this.slicerCacheHideItemsWithNoData;
} else {
//TODO проверить структуру
for (i = 0; i < this.slicerCacheHideItemsWithNoData.length; i++) {
if (!res.slicerCacheHideItemsWithNoData) {
res.slicerCacheHideItemsWithNoData = [];
}
res.slicerCacheHideItemsWithNoData[i] = this.slicerCacheHideItemsWithNoData[i];
}
}
}
return res;
};
CT_slicerCacheDefinition.prototype.copyFrom = function (slicerCacheDefinition) {
this.pivotTables = slicerCacheDefinition.pivotTables;
this.data = slicerCacheDefinition.data;
this.name = slicerCacheDefinition.name;
this.uid = slicerCacheDefinition.uid;
this.sourceName = slicerCacheDefinition.sourceName;
this.tableSlicerCache = slicerCacheDefinition.tableSlicerCache;
this.slicerCacheHideItemsWithNoData = slicerCacheDefinition.slicerCacheHideItemsWithNoData;
};
CT_slicerCacheDefinition.prototype.generateSlicerCacheName = function (name) {
var wb = this.wb;
var checkAlreadyAdd = function (_name) {
var _res = false;
if (wb.getSlicerCacheByCacheName(_name)) {
_res = true;
} else if (wb.getDefinesNames(_name)) {
_res = true;
}
return _res;
};
//replace not valid symbols
name = name.replace(/[-+*\/^&%<=>: ;//),]/g, "_");
//TODO дополнительная проверка - пересмотреть
if (!AscCommon.rx_defName.test(name)) {
name = name.replace(/[^a-zA-ZА-Яа-яЁё0-9]/gi, "_")
}
var index = 1;
name = AscCommon.translateManager.getValue("Slicer") + "_" + name;
var newName = name;
while (checkAlreadyAdd(newName)) {
newName = name + index;
index++;
}
return newName;
};
CT_slicerCacheDefinition.prototype.Write_ToBinary2 = function (w) {
var old = new AscCommon.CMemory(true);
pptx_content_writer.BinaryFileWriter.ExportToMemory(old);
pptx_content_writer.BinaryFileWriter.ImportFromMemory(w);
pptx_content_writer.BinaryFileWriter.StartRecord(0);
this.toStream(pptx_content_writer.BinaryFileWriter, null, null, true);
pptx_content_writer.BinaryFileWriter.EndRecord();
pptx_content_writer.BinaryFileWriter.ExportToMemory(w);
pptx_content_writer.BinaryFileWriter.ImportFromMemory(old);
};
CT_slicerCacheDefinition.prototype.Read_FromBinary2 = function (r) {
var fileStream = r.ToFileStream();
fileStream.GetUChar();
this.fromStream(fileStream, true, null);
r.FromFileStream(fileStream);
};
CT_slicerCacheDefinition.prototype.toStream = function (s, tableIds, sheetIds, historySerialize) {
s.WriteUChar(AscCommon.g_nodeAttributeStart);
s._WriteString2(0, this.name);
s._WriteString2(1, this.uid);
s._WriteString2(2, this.sourceName);
s.WriteUChar(AscCommon.g_nodeAttributeEnd);
if (this.pivotTables.length > 0) {
s.StartRecord(0);
s.WriteULong(this.pivotTables.length);
for (var i = 0; i < this.pivotTables.length; i++) {
s.StartRecord(0);
this.pivotTables[i].toStream(s, sheetIds, historySerialize);
s.EndRecord();
}
s.EndRecord();
}
s.WriteRecord4(1, this.data);
if (null != this.tableSlicerCache) {
s.StartRecord(3);
this.tableSlicerCache.toStream(s, tableIds, historySerialize);
s.EndRecord();
}
if (null != this.slicerCacheHideItemsWithNoData) {
var hideNoData = new CT_slicerCacheHideNoData();
hideNoData.slicerCacheOlapLevelName = this.slicerCacheHideItemsWithNoData;
hideNoData.count = this.slicerCacheHideItemsWithNoData.length;
s.WriteRecord4(4, hideNoData);
}
};
CT_slicerCacheDefinition.prototype.fromStream = function (s, historySerialize) {
var _type;
var _len = s.GetULong();
var _start_pos = s.cur;
var _end_pos = _len + _start_pos;
var _at;
// attributes
s.GetUChar();
while (true) {
_at = s.GetUChar();
if (_at === AscCommon.g_nodeAttributeEnd)
break;
switch (_at) {
case 0: {
this.name = s.GetString2();
break;
}
case 1: {
this.uid = s.GetString2();
break;
}
case 2: {
this.sourceName = s.GetString2();
break;
}
default:
s.Seek2(_end_pos);
return;
}
}
//members
while (true) {
if (s.cur >= _end_pos)
break;
_type = s.GetUChar();
switch (_type) {
case 0:
case 2: {
s.Skip2(4);
var _c = s.GetULong();
for (var i = 0; i < _c; ++i) {
s.Skip2(1); // type
var tmp = new CT_slicerCachePivotTable();
tmp.fromStream(s, historySerialize);
this.pivotTables.push(tmp);
}
break;
}
case 1: {
this.data = new CT_slicerCacheData();
this.data.fromStream(s);
break;
}
case 3: {
this.tableSlicerCache = new CT_tableSlicerCache();
this.tableSlicerCache.fromStream(s, historySerialize);
break;
}
case 4: {
var hideNoData = new CT_slicerCacheHideNoData();
hideNoData.fromStream(s);
this.slicerCacheHideItemsWithNoData = hideNoData.slicerCacheOlapLevelName;
break;
}
default: {
s.SkipRecord();
break;
}
}
}
s.Seek2(_end_pos);
};
CT_slicerCacheDefinition.prototype.getIndexSheetCache = function () {
//TODO позже можно использовать данную функцию в функции getFilterValues. сейчас часть кода дублируется.
var res = null;
var type = this.getType();
var wb = this.wb;
switch (type) {
case insertSlicerType.table: {
//пока беру первый элемент, поскольку не очень понятно в каких случаях их вообще может быть несколько
var tableCache = this.tableSlicerCache;
var tableObj = wb.getTableByName(tableCache.tableId, true);
res = tableObj ? tableObj.index : null;
break;
}
case insertSlicerType.pivotTable: {
//slicer can connect to pivots in different worksheet or can have zero connection
res = 0;
break;
}
}
return res;
};
CT_slicerCacheDefinition.prototype.getFilterValues = function () {
var res = null;
var type = this.getType();
var wb = this.wb;
switch (type) {
case insertSlicerType.table: {
//пока беру первый элемент, поскольку не очень понятно в каких случаях их вообще может быть несколько
var tableCache = this.tableSlicerCache;
var tableObj = wb.getTableByName(tableCache.tableId, true);
var table = tableObj ? tableObj.table : null;
if (table) {
var ws = wb.aWorksheets[tableObj.index];
var colId = table.getColIdByName(tableCache.column);
if (colId !== null) {
var sortObj = {};
sortObj.fullValues = true;
sortObj.sortOrder = this.tableSlicerCache.sortOrder === ST_tabularSlicerCacheSortOrder.Ascending;
sortObj.hideItemsWithNoData = this.getHideItemsWithNoData();
sortObj.indicateItemsWithNoData = this.getIndicateItemsWithNoData();
sortObj.showItemsWithNoDataLast = this.getShowItemsWithNoDataLast();
res = ws.autoFilters.getOpenAndClosedValues(table, colId, null, sortObj);
}
}
break;
}
case insertSlicerType.pivotTable: {
var tabular = this.data.tabular;
var cacheDefinition = tabular.pivotCacheDefinition;
let pivotTables = this.getPivotTables();
if (cacheDefinition) {
var fieldIndex = cacheDefinition.getFieldIndexByName(this.sourceName);
if (-1 !== fieldIndex) {
let pivotField;
if (pivotTables.length > 0) {
pivotField = pivotTables[0].asc_getPivotFields()[fieldIndex];
}
var cacheField = cacheDefinition.getFields()[fieldIndex];
res = {
values: tabular.getFilterObject(cacheField, this.slicerCacheHideItemsWithNoData, pivotField),
automaticRowCount: null,
ignoreCustomFilter: null
};
}
}
break;
}
}
return res;
};
CT_slicerCacheDefinition.prototype.getFilterObj = function () {
var res = null;
var type = this.getType();
var wb = this.wb;
switch (type) {
case insertSlicerType.table: {
//пока беру первый элемент, поскольку не очень понятно в каких случаях их вообще может быть несколько
var tableCache = this.tableSlicerCache;
var table = wb.getTableByName(tableCache.tableId);
if (table) {
var colId = table.getColIdByName(tableCache.column);
res = {obj: table, colId: colId}
}
break;
}
case insertSlicerType.pivotTable: {
res = this;
break;
}
}
return res;
};
CT_slicerCacheDefinition.prototype.getLinkedPivotSlicers = function () {
var res = {};
var wb = this.wb;
var pivotTables = this.getPivotTables();
pivotTables.forEach(function (pivotTable) {
var slicerCaches = wb.getSlicerCachesByPivotTable(pivotTable.GetWS().getId(), pivotTable.asc_getName());
slicerCaches.forEach(function (slicerCache) {
var slicers = wb.getSlicersByCacheName(slicerCache.name);
slicers.forEach(function (slicer) {
res[slicer.name] = slicer;
});
});
});
return res;
};
CT_slicerCacheDefinition.prototype.applyPivotFilterWithLock = function (api, values, slicerName, excludePivot, confirmation) {
var t = this;
var fld = this.getPivotFieldIndex();
var pivotTables = this.getPivotTables();
if (-1 !== fld && pivotTables.length > 0) {
api._isLockedPivotAndConnectedBySlicer(pivotTables[0], [fld], function (res) {
if (!res) {
api.wbModel.onSlicerUpdate(slicerName);
return;
}
History.Create_NewPoint();
History.StartTransaction();
api.wbModel.dependencyFormulas.lockRecal();
var changeRes = t.applyPivotFilter(api, values, excludePivot, confirmation);
api.wbModel.dependencyFormulas.unlockRecal();
History.EndTransaction();
let success = api._changePivotEndCheckError(changeRes, function () {
t.applyPivotFilterWithLock(api, values, slicerName, excludePivot, true);
});
if (success) {
//todo pivot
api.updateWorksheetByPivotTable(pivotTables[0], changeRes, true, false);
}
});
} else {
api.wbModel.onSlicerUpdate(slicerName);
}
};
CT_slicerCacheDefinition.prototype.applyPivotFilter = function (api, values, excludePivot, confirmation) {
var changeRes = new AscCommonExcel.PivotChangeResult();
var fld = this.getPivotFieldIndex();
if (-1 === fld) {
return;
}
var pivotTables = this.getPivotTables();
if (pivotTables.length === 0) {
return;
}
//todo assign values instead of setVisibleFromValues ?
var visible = {};
for (var i = 0; i < values.length; ++i) {
if (values[i].visible) {
visible[values[i].val] = 1;
}
}
var wb = this.wb;
for (var i = 0; i < pivotTables.length; ++i) {
var pivotTable = pivotTables[i];
if (pivotTable === excludePivot) {
continue;
}
var autoFilterObject = new Asc.AutoFiltersOptions();
pivotTable.fillAutoFiltersOptions(autoFilterObject, fld);
autoFilterObject.setVisibleFromValues(visible);
autoFilterObject.filter.type = Asc.c_oAscAutoFilterTypes.Filters;
let changeResCur = api._changePivot(pivotTable, confirmation, true, function (ws) {
pivotTable.filterPivotItems(fld, autoFilterObject);
});
changeRes.merge(changeResCur);
if (c_oAscError.ID.No !== changeRes.error || c_oAscError.ID.No !== changeRes.warning) {
return changeRes;
}
if (changeResCur.updateRes) {
pivotTable.syncSlicersWithPivot(changeResCur.updateRes.cacheFieldsWithData);
}
}
var oldVal = new AscCommonExcel.UndoRedoData_BinaryWrapper2(this);
this.data.tabular.fromAutoFiltersOptionsElements(visible);
//add to history for 0 connection case(usually duplicate of syncSlicersWithPivot)
var newVal = new AscCommonExcel.UndoRedoData_BinaryWrapper2(this);
History.Add(AscCommonExcel.g_oUndoRedoSlicer, AscCH.historyitem_Slicer_SetCacheData,
null, null, new AscCommonExcel.UndoRedoData_Slicer(this.name, oldVal, newVal));
var slicers = this.getLinkedPivotSlicers();
for (var name in slicers) {
if (slicers.hasOwnProperty(name)) {
wb.onSlicerUpdate(name);
}
}
return changeRes;
};
CT_slicerCacheDefinition.prototype.getSourceName = function () {
return this.sourceName;
};
CT_slicerCacheDefinition.prototype.setSourceName = function (val) {
this.sourceName = val;
};
CT_slicerCacheDefinition.prototype.getTableSlicerCache = function () {
return this.tableSlicerCache;
};
CT_slicerCacheDefinition.prototype.getTabular = function () {
return this.data && this.data.tabular;
};
CT_slicerCacheDefinition.prototype.getOlap = function () {
return this.data && this.data.olap;
};
CT_slicerCacheDefinition.prototype.checkObjApply = function (name, obj_name, type, pivotTable) {
var res = false;
var _obj;
switch (type) {
case window['AscCommonExcel'].insertSlicerType.table : {
_obj = this.getTableSlicerCache();
if (_obj && _obj.tableId === obj_name && _obj.column === name) {
res = true;
}
break;
}
case window['AscCommonExcel'].insertSlicerType.pivotTable : {
res = this.indexOfPivotTable(pivotTable.GetWS().getId(), pivotTable.asc_getName()) >= 0;
break;
}
}
return res;
};
CT_slicerCacheDefinition.prototype.setName = function (val) {
this.name = val;
};
CT_slicerCacheDefinition.prototype.getType = function () {
if (this._type !== null) {
return this._type;
}
var tableCache = this.getTableSlicerCache();
if (tableCache) {
this._type = insertSlicerType.table;
}
var tabular = this.getTabular();
if (tabular) {
this._type = insertSlicerType.pivotTable;
}
return this._type;
};
CT_slicerCacheDefinition.prototype.getRange = function () {
var res = null;
var type = this.getType();
var wb = this.wb;
switch (type) {
case insertSlicerType.table: {
//пока беру первый элемент, поскольку не очень понятно в каких случаях их вообще может быть несколько
var tableCache = this.tableSlicerCache;
var table = wb.getTableByName(tableCache.tableId);
if (table) {
var colId = table.getColIdByName(tableCache.column);
res = new Asc.Range(table.Ref.c1 + colId, table.Ref.r1, table.Ref.c1 + colId, table.Ref.r2);
}
break;
}
case insertSlicerType.pivotTable: {
//
break;
}
}
return res;
};
CT_slicerCacheDefinition.prototype.setSortOrder = function (val) {
var obj = this.getTableSlicerCache() || this.getTabular();
if (obj && obj.sortOrder !== val) {
var oldVal = obj.sortOrder;
obj.setSortOrder(val);
History.Add(AscCommonExcel.g_oUndoRedoSlicer, AscCH.historyitem_Slicer_SetCacheSortOrder,
null, null, new AscCommonExcel.UndoRedoData_Slicer(this.name, oldVal, val));
return true;
}
return false;
};
CT_slicerCacheDefinition.prototype.setCustomListSort = function (val) {
var obj = this.getTableSlicerCache() || this.getTabular();
if (obj && obj.customListSort !== val) {
var oldVal = obj.customListSort;
obj.setCustomListSort(val);
History.Add(AscCommonExcel.g_oUndoRedoSlicer, AscCH.historyitem_Slicer_SetCacheCustomListSort,
null, null, new AscCommonExcel.UndoRedoData_Slicer(this.name, oldVal, val));
}
};
CT_slicerCacheDefinition.prototype.setCrossFilter = function (val) {
var obj = this.getTableSlicerCache() || this.getTabular();
if (obj && obj.crossFilter !== val) {
var oldVal = obj.crossFilter;
obj.setCrossFilter(val);
History.Add(AscCommonExcel.g_oUndoRedoSlicer, AscCH.historyitem_Slicer_SetCacheCrossFilter,
null, null, new AscCommonExcel.UndoRedoData_Slicer(this.name, oldVal, val));
return true;
}
return false;
};
CT_slicerCacheDefinition.prototype.setHideItemsWithNoData = function (val) {
//TODO ?
var oldVal = this.slicerCacheHideItemsWithNoData;
var newVal = val ? [] : null;
if (oldVal !== newVal) {
this.slicerCacheHideItemsWithNoData = val ? [] : null;
History.Add(AscCommonExcel.g_oUndoRedoSlicer, AscCH.historyitem_Slicer_SetCacheHideItemsWithNoData,
null, null, new AscCommonExcel.UndoRedoData_Slicer(this.name, oldVal, val));
return true;
}
return false;
};
CT_slicerCacheDefinition.prototype.updateItemsWithNoData = function () {
var tabular = this.getTabular();
var pivotTables = this.getPivotTables();
if (tabular && pivotTables.length > 0) {
var pivotTable = pivotTables[0];
var calculateRes = pivotTable.calculateDataRow();
this.syncWithPivot(pivotTable, calculateRes.cacheFieldsWithData);
}
};
CT_slicerCacheDefinition.prototype.getHideItemsWithNoData = function () {
return null !== this.slicerCacheHideItemsWithNoData;
};
CT_slicerCacheDefinition.prototype.getIndicateItemsWithNoData = function () {
var hideItemsWithNoData = this.getHideItemsWithNoData();
if (hideItemsWithNoData) {
return true;
} else {
var table = this.getTableSlicerCache() || this.getTabular();
if (table) {
return table.crossFilter !== ST_slicerCacheCrossFilter.None;
}
return true;
}
};
CT_slicerCacheDefinition.prototype.getShowItemsWithNoDataLast = function () {
var hideItemsWithNoData = this.getHideItemsWithNoData();
if (hideItemsWithNoData) {
return true;
} else {
var table = this.getTableSlicerCache() || this.getTabular();
if (table) {
return table.crossFilter === ST_slicerCacheCrossFilter.ShowItemsWithDataAtTop;
}
return true;
}
};
CT_slicerCacheDefinition.prototype.checkModelContent = function (model) {
var res = null;
var type = this.getType();
var wb = model.workbook;
switch (type) {
case insertSlicerType.table: {
var tableCache = this.tableSlicerCache;
var table = wb.getTableByName(tableCache.tableId);
if (table) {
if (null !== table.getColIdByName(tableCache.column)) {
res = true;
}
}
break;
}
case insertSlicerType.pivotTable: {
var tabular = this.getTabular();
var olap = this.getOlap();
if ((!tabular || tabular.checkModelContent(wb)) && (!olap || olap.checkModelContent(wb))) {
res = true;
}
break;
}
}
return res;
};
CT_slicerCacheDefinition.prototype.getPivotCache = function () {
var tabular = this.getTabular();
return tabular && tabular.pivotCacheDefinition || null;
};
CT_slicerCacheDefinition.prototype.getPivotCacheId = function () {
//todo olap
var tabular = this.getTabular();
return tabular && tabular.pivotCacheDefinition && tabular.pivotCacheDefinition.getPivotCacheId() || null;
};
CT_slicerCacheDefinition.prototype.getPivotFieldIndex = function () {
var tabular = this.getTabular();
if (tabular && tabular.pivotCacheDefinition) {
var fieldIndex = tabular.pivotCacheDefinition.getFieldIndexByName(this.sourceName);
if (-1 !== fieldIndex) {
return fieldIndex;
}
}
return -1;
};
CT_slicerCacheDefinition.prototype.getPivotTables = function () {
var res = [];
var wb = this.wb;
this.pivotTables.forEach(function (table) {
var pivotTable = table.getPivotTable(wb);
if (pivotTable) {
res.push(pivotTable);
}
});
return res;
};
CT_slicerCacheDefinition.prototype.indexOfPivotTable = function (sheetId, pivotName) {
return this.pivotTables.findIndex(function (elem) {
return elem.sheetId === sheetId && elem.name === pivotName;
});
};
CT_slicerCacheDefinition.prototype.deletePivotTable = function (sheetId, pivotName) {
var oldVal = new AscCommonExcel.UndoRedoData_BinaryWrapper2(this);
var index = this.indexOfPivotTable(sheetId, pivotName);
if (index >= 0) {
this.pivotTables.splice(index, 1);
}
var newVal = new AscCommonExcel.UndoRedoData_BinaryWrapper2(this);
History.Add(AscCommonExcel.g_oUndoRedoSlicer, AscCH.historyitem_Slicer_SetCacheData,
null, null, new AscCommonExcel.UndoRedoData_Slicer(this.name, oldVal, newVal));
};
CT_slicerCacheDefinition.prototype.getPivotTablesCount = function () {
return this.pivotTables.length;
};
CT_slicerCacheDefinition.prototype.syncWithPivot = function (pivotTable, cacheFieldsWithData) {
var tabular = this.getTabular();
if (!tabular) {
return;
}
var cacheFields = pivotTable.cacheDefinition.getFields();
var fieldIndex = pivotTable.cacheDefinition.getFieldIndexByName(this.sourceName);
var cacheField = -1 !== fieldIndex && cacheFields[fieldIndex];
if (cacheField) {
pivotTable.checkPivotFieldItems(fieldIndex);
var pivotField = pivotTable.asc_getPivotFields()[fieldIndex];
var oldVal = new AscCommonExcel.UndoRedoData_BinaryWrapper2(this);
tabular.syncWithCache(cacheField, pivotField, cacheFieldsWithData[fieldIndex]);
var newVal = new AscCommonExcel.UndoRedoData_BinaryWrapper2(this);
History.Add(AscCommonExcel.g_oUndoRedoSlicer, AscCH.historyitem_Slicer_SetCacheData,
null, null, new AscCommonExcel.UndoRedoData_Slicer(this.name, oldVal, newVal));
}
};
CT_slicerCacheDefinition.prototype.movePivotTable = function (sheetIdFrom, nameFrom, sheetIdTo, nameTo) {
this.pivotTables.forEach(function (table) {
if (table.sheetId === sheetIdFrom && table.name === nameFrom) {
table.sheetId = sheetIdTo;
table.name = nameTo;
}
});
var from = new AscCommonExcel.UndoRedoData_CellData(sheetIdFrom, nameFrom);
var to = new AscCommonExcel.UndoRedoData_CellData(sheetIdTo, nameTo);
History.Add(AscCommonExcel.g_oUndoRedoSlicer, AscCH.historyitem_Slicer_SetCacheMovePivot,
null, null, new AscCommonExcel.UndoRedoData_Slicer(this.name, from, to));
};
CT_slicerCacheDefinition.prototype.forCopySheet = function (sheetIdFrom, sheetIdTo) {
this.pivotTables.forEach(function (table) {
if (table.sheetId === sheetIdFrom) {
table.sheetId = sheetIdTo;
}
});
History.Add(AscCommonExcel.g_oUndoRedoSlicer, AscCH.historyitem_Slicer_SetCacheCopySheet,
null, null, new AscCommonExcel.UndoRedoData_Slicer(this.name, sheetIdFrom, sheetIdTo));
};
function CT_slicerCacheData() {
this.olap = null;//OlapSlicerCache
this.tabular = null;//TabularSlicerCache
}
CT_slicerCacheData.prototype.clone = function () {
var res = new CT_slicerCacheData();
if (this.olap) {
res.olap = this.olap.clone();
}
if (this.tabular) {
res.tabular = this.tabular.clone();
}
return res;
};
CT_slicerCacheData.prototype.toStream = function (s) {
s.WriteUChar(AscCommon.g_nodeAttributeStart);
s.WriteUChar(AscCommon.g_nodeAttributeEnd);
s.WriteRecord4(0, this.olap);
s.WriteRecord4(1, this.tabular);
};
CT_slicerCacheData.prototype.fromStream = function (s) {
var _len = s.GetULong();
var _start_pos = s.cur;
var _end_pos = _len + _start_pos;
var _at;
// attributes
s.GetUChar();
while (true) {
_at = s.GetUChar();
if (_at === AscCommon.g_nodeAttributeEnd)
break;
switch (_at) {
default:
s.Seek2(_end_pos);
return;
}
}
//members
var _type;
while (true) {
if (s.cur >= _end_pos)
break;
_type = s.GetUChar();
switch (_type) {
case 0: {
this.olap = new CT_olapSlicerCache();
this.olap.fromStream(s);
break;
}
case 1: {
this.tabular = new CT_tabularSlicerCache();
this.tabular.fromStream(s);
break;
}
default: {
s.SkipRecord();
break;
}
}
}
s.Seek2(_end_pos);
};
function CT_slicerCachePivotTable() {
this.sheetId = null;
this.tabIdOpen = null;
this.name = null;
}
CT_slicerCachePivotTable.prototype.initPostOpen = function (sheetIds) {
var ws = null;
if (null != this.tabIdOpen) {
ws = sheetIds[this.tabIdOpen];
if (ws) {
this.sheetId = ws.getId();
}
}
return ws;
};
CT_slicerCachePivotTable.prototype.clone = function () {
var res = new CT_slicerCachePivotTable();
res.sheetId = this.sheetId;
res.tabIdOpen = this.tabIdOpen;
res.name = this.name;
return res;
};
CT_slicerCachePivotTable.prototype.toStream = function (s, sheetIds, historySerialize) {
s.WriteUChar(AscCommon.g_nodeAttributeStart);
if (historySerialize) {
s._WriteString2(0, this.sheetId);
} else {
s._WriteUInt2(0, sheetIds[this.sheetId] || 1);
}
s._WriteString2(1, this.name);
s.WriteUChar(AscCommon.g_nodeAttributeEnd);
};
CT_slicerCachePivotTable.prototype.fromStream = function (s, historySerialize) {
var _len = s.GetULong();
var _start_pos = s.cur;
var _end_pos = _len + _start_pos;
var _at;
// attributes
s.GetUChar();
while (true) {
_at = s.GetUChar();
if (_at === AscCommon.g_nodeAttributeEnd)
break;
switch (_at) {
case 0: {
if (historySerialize) {
this.sheetId = s.GetString2();
} else {
this.tabIdOpen = s.GetULong();
}
break;
}
case 1: {
this.name = s.GetString2();
break;
}
default:
s.Seek2(_end_pos);
return;
}
}
s.Seek2(_end_pos);
};
CT_slicerCachePivotTable.prototype.getPivotTable = function (wb) {
var ws = wb.getWorksheetById(this.sheetId);
if (ws) {
return ws.getPivotTableByName(this.name);
}
return null;
};
function CT_olapSlicerCacheItem() {
this.p = [];//OlapSlicerCacheItemParent - состоит из одного поля, поэтому данную структуру не добавляю
this.n = null;
this.c = null;
this.nd = false;
}
CT_olapSlicerCacheItem.prototype.clone = function () {
var res = new CT_olapSlicerCacheItem();
//TODO ?p
res.n = this.n;
res.c = this.c;
res.nd = this.nd;
return res;
};
CT_olapSlicerCacheItem.prototype.toStream = function (s) {
s.WriteUChar(AscCommon.g_nodeAttributeStart);
s._WriteString2(0, this.n);
s._WriteString2(1, this.c);
s._WriteBool2(2, this.nd);
s.WriteUChar(AscCommon.g_nodeAttributeEnd);
if (this.p.length > 0) {
var p = this.p.map(function (currentValue) {
var res = new CT_olapSlicerCacheItemParent();
res.n = currentValue;
return res;
});
s.WriteRecordArray4(0, 0, p);
}
};
CT_olapSlicerCacheItem.prototype.fromStream = function (s) {
var _len = s.GetULong();
var _start_pos = s.cur;
var _end_pos = _len + _start_pos;
var _at;
// attributes
s.GetUChar();
while (true) {
_at = s.GetUChar();
if (_at === AscCommon.g_nodeAttributeEnd)
break;
switch (_at) {
case 0: {
this.n = s.GetString2();
break;
}
case 1: {
this.c = s.GetString2();
break;
}
case 2: {
this.nd = s.GetBool();
break;
}
default:
s.Seek2(_end_pos);
return;
}
}
//members
var _type;
while (true) {
if (s.cur >= _end_pos)
break;
_type = s.GetUChar();
switch (_type) {
case 0: {
s.Skip2(4);
var _c = s.GetULong();
for (var i = 0; i < _c; ++i) {
s.Skip2(1); // type
var tmp = new CT_olapSlicerCacheItemParent();
tmp.fromStream(s);
this.p.push(tmp.n);
}
break;
}
default: {
s.SkipRecord();
break;
}
}
}
s.Seek2(_end_pos);
};
function CT_olapSlicerCacheRange() {
this.i = [];//OlapSlicerCacheItem
this.startItem = null
}
CT_olapSlicerCacheRange.prototype.clone = function () {
var res = new CT_olapSlicerCacheRange();
for (var i = 0; i < this.i.length; i++) {
res.i[i] = this.i[i].clone();//OlapSlicerCacheItem
}
return res;
};
CT_olapSlicerCacheRange.prototype.toStream = function (s) {
s.WriteUChar(AscCommon.g_nodeAttributeStart);
s._WriteUInt2(0, this.startItem);
s.WriteUChar(AscCommon.g_nodeAttributeEnd);
s.WriteRecordArray4(0, 0, this.i);
};
CT_olapSlicerCacheRange.prototype.fromStream = function (s) {
var _len = s.GetULong();
var _start_pos = s.cur;
var _end_pos = _len + _start_pos;
var _at;
// attributes
s.GetUChar();
while (true) {
_at = s.GetUChar();
if (_at === AscCommon.g_nodeAttributeEnd)
break;
switch (_at) {
case 0: {
this.startItem = s.GetULong();
break;
}
default:
s.Seek2(_end_pos);
return;
}
}
//members
var _type;
while (true) {
if (s.cur >= _end_pos)
break;
_type = s.GetUChar();
switch (_type) {
case 0: {
s.Skip2(4);
var _c = s.GetULong();
for (var i = 0; i < _c; ++i) {
s.Skip2(1); // type
var tmp = new CT_olapSlicerCacheItem();
tmp.fromStream(s);
this.i.push(tmp);
}
break;
}
default: {
s.SkipRecord();
break;
}
}
}
s.Seek2(_end_pos);
};
function CT_olapSlicerCacheLevelData() {
this.ranges = [];//OlapSlicerCacheRange
this.uniqueName = null;
this.sourceCaption = null;
this.count = null;
this.sortOrder = ST_olapSlicerCacheSortOrder.Natural;
this.crossFilter = ST_slicerCacheCrossFilter.ShowItemsWithDataAtTop;
}
CT_olapSlicerCacheLevelData.prototype.clone = function () {
var res = new CT_olapSlicerCacheLevelData();
for (var i = 0; i < this.ranges.length; i++) {
res.ranges[i] = this.ranges[i].clone();//OlapSlicerCacheItem
}
res.uniqueName = this.uniqueName;
res.sourceCaption = this.sourceCaption;
res.count = this.count;
res.sortOrder = this.sortOrder;
res.crossFilter = this.crossFilter;
return res;
};
CT_olapSlicerCacheLevelData.prototype.toStream = function (s) {
s.WriteUChar(AscCommon.g_nodeAttributeStart);
s._WriteString2(0, this.uniqueName);
s._WriteString2(1, this.sourceCaption);
s._WriteUInt2(2, this.count);
s._WriteUChar2(3, this.sortOrder);
s._WriteUChar2(4, this.crossFilter);
s.WriteUChar(AscCommon.g_nodeAttributeEnd);
s.WriteRecordArray4(0, 0, this.ranges);
};
CT_olapSlicerCacheLevelData.prototype.fromStream = function (s) {
var _len = s.GetULong();
var _start_pos = s.cur;
var _end_pos = _len + _start_pos;
var _at;
// attributes
s.GetUChar();
while (true) {
_at = s.GetUChar();
if (_at === AscCommon.g_nodeAttributeEnd)
break;
switch (_at) {
case 0: {
this.uniqueName = s.GetString2();
break;
}
case 1: {
this.sourceCaption = s.GetString2();
break;
}
case 2: {
this.count = s.GetULong();
break;
}
case 3: {
this.sortOrder = s.GetUChar();
break;
}
case 4: {
this.crossFilter = s.GetUChar();
break;
}
default:
s.Seek2(_end_pos);
return;
}
}
//members
var _type;
while (true) {
if (s.cur >= _end_pos)
break;
_type = s.GetUChar();
switch (_type) {
case 0: {
s.Skip2(4);
var _c = s.GetULong();
for (var i = 0; i < _c; ++i) {
s.Skip2(1); // type
var tmp = new CT_olapSlicerCacheRange();
tmp.fromStream(s);
this.ranges.push(tmp);
}
break;
}
default: {
s.SkipRecord();
break;
}
}
}
s.Seek2(_end_pos);
};
function CT_olapSlicerCache() {
this.levels = [];//OlapSlicerCacheLevelData
this.selections = [];//OlapSlicerCacheSelection
this.pivotCacheId = null;
this.pivotCacheDefinition = null;
}
CT_olapSlicerCache.prototype.initAfterSerialize = function (wb, pivotCachesOpen) {
if (null !== this.pivotCacheId) {
this.pivotCacheDefinition = wb.getPivotCacheById(this.pivotCacheId, pivotCachesOpen);
this.pivotCacheId = null;
}
};
CT_olapSlicerCache.prototype.setPivotCacheDefinition = function (pivotCacheDefinition) {
this.pivotCacheDefinition = pivotCacheDefinition;
this.pivotCacheId = null;
};
CT_olapSlicerCache.prototype.checkModelContent = function (wb) {
return null !== this.pivotCacheId && !!wb.getPivotCacheById(this.pivotCacheId);
};
CT_olapSlicerCache.prototype.clone = function () {
var res = new CT_olapSlicerCache();
var i;
for (i = 0; i < this.levels.length; i++) {
res.levels[i] = this.levels[i].clone();
}
for (i = 0; i < this.selections.length; i++) {
res.selections[i] = this.selections[i].clone();
}
res.pivotCacheId = this.pivotCacheId;
res.pivotCacheDefinition = this.pivotCacheDefinition;
return res;
};
CT_olapSlicerCache.prototype.toStream = function (s) {
s.WriteUChar(AscCommon.g_nodeAttributeStart);
s._WriteUInt2(0, this.getPivotCacheId());
s.WriteUChar(AscCommon.g_nodeAttributeEnd);
if (this.levels.length > 0) {
var levelsData = new CT_olapSlicerCacheLevelsData();
levelsData.level = this.levels;
levelsData.count = this.levels.length;
s.WriteRecord4(0, levelsData);
}
if (this.selections.length > 0) {
var selections = new CT_olapSlicerCacheSelections();
selections.selection = this.selections;
selections.count = this.selections.length;
s.WriteRecord4(1, selections);
}
};
CT_olapSlicerCache.prototype.fromStream = function (s) {
var _len = s.GetULong();
var _start_pos = s.cur;
var _end_pos = _len + _start_pos;
var _at;
// attributes
s.GetUChar();
while (true) {
_at = s.GetUChar();
if (_at === AscCommon.g_nodeAttributeEnd)
break;
switch (_at) {
case 0: {
this.pivotCacheId = s.GetULong();
break;
}
default:
s.Seek2(_end_pos);
return;
}
}
//members
var _type;
while (true) {
if (s.cur >= _end_pos)
break;
_type = s.GetUChar();
switch (_type) {
case 0: {
var levelsData = new CT_olapSlicerCacheLevelsData();
levelsData.fromStream(s);
this.levels = levelsData.level;
break;
}
case 1: {
var selections = new CT_olapSlicerCacheSelections();
selections.fromStream(s);
this.selections = selections.selection;
break;
}
default: {
s.SkipRecord();
break;
}
}
}
s.Seek2(_end_pos);
};
CT_olapSlicerCache.prototype.getPivotCacheId = function () {
return this.pivotCacheDefinition && this.pivotCacheDefinition.getPivotCacheId() || 0;
};
function CT_olapSlicerCacheLevelsData() {
this.count = null;
this.level = [];
return this;
}
CT_olapSlicerCacheLevelsData.prototype.clone = function () {
var res = new CT_olapSlicerCacheLevelsData();
res.count = this.count;
for (var i = 0; i < this.level.length; i++) {
//TODO need clone?
res.level[i] = this.level[i].clone();
}
return res;
};
CT_olapSlicerCacheLevelsData.prototype.toStream = function (s) {
s.WriteUChar(AscCommon.g_nodeAttributeStart);
s._WriteUInt2(0, this.count);
s.WriteUChar(AscCommon.g_nodeAttributeEnd);
s.WriteRecordArray4(0, 0, this.level);
};
CT_olapSlicerCacheLevelsData.prototype.fromStream = function (s) {
var _len = s.GetULong();
var _start_pos = s.cur;
var _end_pos = _len + _start_pos;
var _at;
// attributes
s.GetUChar();
while (true) {
_at = s.GetUChar();
if (_at === AscCommon.g_nodeAttributeEnd)
break;
switch (_at) {
case 0: {
this.count = s.GetULong();
break;
}
default:
s.Seek2(_end_pos);
return;
}
}
//members
var _type;
while (true) {
if (s.cur >= _end_pos)
break;
_type = s.GetUChar();
switch (_type) {
case 0: {
s.Skip2(4);
var _c = s.GetULong();
for (var i = 0; i < _c; ++i) {
s.Skip2(1); // type
var tmp = new CT_olapSlicerCacheLevelData();
tmp.fromStream(s);
this.level.push(tmp);
}
break;
}
default: {
s.SkipRecord();
break;
}
}
}
s.Seek2(_end_pos);
};
function CT_olapSlicerCacheSelections() {
this.count = null;
this.selection = [];
return this;
}
CT_olapSlicerCacheSelections.prototype.clone = function () {
var res = new CT_olapSlicerCacheSelections();
res.count = this.count;
for (var i = 0; i < this.selection.length; i++) {
//TODO need clone?
res.selection[i] = this.selection[i].clone();
}
return res;
};
CT_olapSlicerCacheSelections.prototype.toStream = function (s) {
s.WriteUChar(AscCommon.g_nodeAttributeStart);
s._WriteUInt2(0, this.count);
s.WriteUChar(AscCommon.g_nodeAttributeEnd);
s.WriteRecordArray4(0, 0, this.selection);
};
CT_olapSlicerCacheSelections.prototype.fromStream = function (s) {
var _len = s.GetULong();
var _start_pos = s.cur;
var _end_pos = _len + _start_pos;
var _at;
// attributes
s.GetUChar();
while (true) {
_at = s.GetUChar();
if (_at === AscCommon.g_nodeAttributeEnd)
break;
switch (_at) {
case 0: {
this.count = s.GetULong();
break;
}
default:
s.Seek2(_end_pos);
return;
}
}
//members
var _type;
while (true) {
if (s.cur >= _end_pos)
break;
_type = s.GetUChar();
switch (_type) {
case 0: {
s.Skip2(4);
var _c = s.GetULong();
for (var i = 0; i < _c; ++i) {
s.Skip2(1); // type
var tmp = new CT_olapSlicerCacheSelection();
tmp.fromStream(s);
this.selection.push(tmp);
}
break;
}
default: {
s.SkipRecord();
break;
}
}
}
s.Seek2(_end_pos);
};
function CT_olapSlicerCacheSelection() {
this.p = [];//OlapSlicerCacheItemParent - состоит из одного поля, поэтому данную структуру не добавляю
this.n = null;
}
CT_olapSlicerCacheSelections.prototype.clone = function () {
var res = new CT_olapSlicerCacheSelection();
for (var i = 0; i < this.p.length; i++) {
//TODO need clone?
res.p[i] = this.p[i].clone();
}
res.n = this.n;
return res;
};
CT_olapSlicerCacheSelection.prototype.toStream = function (s) {
s.WriteUChar(AscCommon.g_nodeAttributeStart);
s._WriteString2(0, this.n);
s.WriteUChar(AscCommon.g_nodeAttributeEnd);
if (this.p.length > 0) {
var p = this.p.map(function (currentValue) {
var res = new CT_olapSlicerCacheItemParent();
res.n = currentValue;
return res;
});
s.WriteRecordArray4(0, 0, p);
}
};
CT_olapSlicerCacheSelection.prototype.fromStream = function (s) {
var _len = s.GetULong();
var _start_pos = s.cur;
var _end_pos = _len + _start_pos;
var _at;
// attributes
s.GetUChar();
while (true) {
_at = s.GetUChar();
if (_at === AscCommon.g_nodeAttributeEnd)
break;
switch (_at) {
case 0: {
this.n = s.GetString2();
break;
}
default:
s.Seek2(_end_pos);
return;
}
}
//members
var _type;
while (true) {
if (s.cur >= _end_pos)
break;
_type = s.GetUChar();
switch (_type) {
case 0: {
s.Skip2(4);
var _c = s.GetULong();
for (var i = 0; i < _c; ++i) {
s.Skip2(1); // type
var tmp = new CT_olapSlicerCacheItemParent();
tmp.fromStream(s);
this.p.push(tmp.n);
}
break;
}
default: {
s.SkipRecord();
break;
}
}
}
s.Seek2(_end_pos);
};
function CT_olapSlicerCacheItemParent() {
this.n = null;
return this;
}
CT_olapSlicerCacheItemParent.prototype.clone = function () {
var res = new CT_olapSlicerCacheItemParent();
res.n = this.n;
return res;
};
CT_olapSlicerCacheItemParent.prototype.toStream = function (s) {
s.WriteUChar(AscCommon.g_nodeAttributeStart);
s._WriteString2(0, this.n);
s.WriteUChar(AscCommon.g_nodeAttributeEnd);
};
CT_olapSlicerCacheItemParent.prototype.fromStream = function (s) {
var _len = s.GetULong();
var _start_pos = s.cur;
var _end_pos = _len + _start_pos;
var _at;
// attributes
s.GetUChar();
while (true) {
_at = s.GetUChar();
if (_at === AscCommon.g_nodeAttributeEnd)
break;
switch (_at) {
case 0: {
this.n = s.GetString2();
break;
}
default:
s.Seek2(_end_pos);
return;
}
}
s.Seek2(_end_pos);
};
function CT_tableSlicerCache() {
this.tableId = null;
this.tableIdOpen = null;//?
this.column = null;
this.columnOpen = null;//?
this.sortOrder = ST_tabularSlicerCacheSortOrder.Ascending;
this.customListSort = true;
this.crossFilter = ST_slicerCacheCrossFilter.ShowItemsWithDataAtTop;
return this;
}
CT_tableSlicerCache.prototype.clone = function () {
var res = new CT_tableSlicerCache();
res.tableId = this.tableId;
res.tableIdOpen = this.tableIdOpen;
res.column = this.column;
res.columnOpen = this.columnOpen;
res.sortOrder = this.sortOrder;
res.customListSort = this.customListSort;
res.crossFilter = this.crossFilter;
return res;
};
CT_tableSlicerCache.prototype.initPostOpen = function (tableIds, sourceName) {
var table = null;
if (null != this.tableIdOpen && null != this.columnOpen) {
table = tableIds[this.tableIdOpen];
if (table) {
this.tableId = table.DisplayName;
if (sourceName && null !== table.getIndexByColumnName(sourceName)) {
this.column = sourceName;
} else {
this.column = table.getTableNameColumnByIndex(this.columnOpen - 1);
}
}
}
return table;
};
CT_tableSlicerCache.prototype.toStream = function (s, tableIds, historySerialize) {
var tableIdOpen = null;
var columnOpen = null;
var elem = !historySerialize && tableIds && tableIds[this.tableId];
if (elem) {
tableIdOpen = elem.id;
columnOpen = (elem.table.getTableIndexColumnByName(this.column) + 1) || null;
} else if (historySerialize) {
tableIdOpen = this.tableId;
columnOpen = this.column;
}
s.WriteUChar(AscCommon.g_nodeAttributeStart);
if (historySerialize) {
s._WriteString2(0, tableIdOpen);
s._WriteString2(1, columnOpen);
} else {
s._WriteUInt2(0, tableIdOpen);
s._WriteUInt2(1, columnOpen);
}
s._WriteUChar2(2, this.sortOrder);
s._WriteBool2(3, this.customListSort);
s._WriteUChar2(4, this.crossFilter);
s.WriteUChar(AscCommon.g_nodeAttributeEnd);
};
CT_tableSlicerCache.prototype.fromStream = function (s, historySerialize) {
var _len = s.GetULong();
var _start_pos = s.cur;
var _end_pos = _len + _start_pos;
var _at;
// attributes
s.GetUChar();
while (true) {
_at = s.GetUChar();
if (_at === AscCommon.g_nodeAttributeEnd)
break;
switch (_at) {
case 0: {
if (historySerialize) {
this.tableId = s.GetString2();
} else {
this.tableIdOpen = s.GetULong();
}
break;
}
case 1: {
if (historySerialize) {
this.column = s.GetString2();
} else {
this.columnOpen = s.GetULong();
}
break;
}
case 2: {
this.sortOrder = s.GetUChar();
break;
}
case 3: {
this.customListSort = s.GetBool();
break;
}
case 4: {
this.crossFilter = s.GetUChar();
break;
}
default:
s.Seek2(_end_pos);
return;
}
}
s.Seek2(_end_pos);
};
CT_tableSlicerCache.prototype.setTableName = function (val) {
//TODO history
this.tableId = val;
};
CT_tableSlicerCache.prototype.setColName = function (val) {
//TODO history
this.column = val;
};
CT_tableSlicerCache.prototype.setSortOrder = function (val) {
this.sortOrder = val;
};
CT_tableSlicerCache.prototype.setCustomListSort = function (val) {
this.customListSort = val;
};
CT_tableSlicerCache.prototype.setCrossFilter = function (val) {
this.crossFilter = val;
};
function CT_tabularSlicerCache() {
this.items = [];//TabularSlicerCacheItem
this.pivotCacheId = null;
this.pivotCacheDefinition = null;
this.sortOrder = ST_tabularSlicerCacheSortOrder.Ascending;
this.customListSort = true;
this.showMissing = true;
this.crossFilter = ST_slicerCacheCrossFilter.ShowItemsWithDataAtTop;
}
CT_tabularSlicerCache.prototype.initAfterSerialize = function (wb, pivotCachesOpen) {
if (null !== this.pivotCacheId) {
this.pivotCacheDefinition = wb.getPivotCacheById(this.pivotCacheId, pivotCachesOpen);
if (this.pivotCacheDefinition) {
this.pivotCacheId = null;
}
}
};
CT_tabularSlicerCache.prototype.setPivotCacheDefinition = function (pivotCacheDefinition) {
this.pivotCacheDefinition = pivotCacheDefinition;
this.pivotCacheId = null;
};
CT_tabularSlicerCache.prototype.checkModelContent = function (wb) {
return null !== this.pivotCacheId && !!wb.getPivotCacheById(this.pivotCacheId);
};
CT_tabularSlicerCache.prototype.clone = function () {
var res = new CT_tabularSlicerCache();
for (var i = 0; i < this.items.length; i++) {
res.items[i] = this.items[i].clone();
}
res.pivotCacheId = this.pivotCacheId;
res.pivotCacheDefinition = this.pivotCacheDefinition;
res.sortOrder = this.sortOrder;
res.customListSort = this.customListSort;
res.showMissing = this.showMissing;
res.crossFilter = this.crossFilter;
return res;
};
CT_tabularSlicerCache.prototype.toStream = function (s) {
s.WriteUChar(AscCommon.g_nodeAttributeStart);
s._WriteUInt2(0, this.getPivotCacheId());
s._WriteUChar2(1, this.sortOrder);
s._WriteBool2(2, this.customListSort);
s._WriteBool2(3, this.showMissing);
s._WriteUChar2(4, this.crossFilter);
s.WriteUChar(AscCommon.g_nodeAttributeEnd);
if (this.items.length > 0) {
var items = new CT_tabularSlicerCacheItems();
items.i = this.items;
items.count = this.items.length;
s.WriteRecord4(0, items);
}
};
CT_tabularSlicerCache.prototype.fromStream = function (s) {
var _len = s.GetULong();
var _start_pos = s.cur;
var _end_pos = _len + _start_pos;
var _at;
// attributes
s.GetUChar();
while (true) {
_at = s.GetUChar();
if (_at === AscCommon.g_nodeAttributeEnd)
break;
switch (_at) {
case 0: {
this.pivotCacheId = s.GetULong();
break;
}
case 1: {
this.sortOrder = s.GetUChar();
break;
}
case 2: {
this.customListSort = s.GetBool();
break;
}
case 3: {
this.showMissing = s.GetBool();
break;
}
case 4: {
this.crossFilter = s.GetUChar();
break;
}
default:
s.Seek2(_end_pos);
return;
}
}
//members
var _type;
while (true) {
if (s.cur >= _end_pos)
break;
_type = s.GetUChar();
switch (_type) {
case 0: {
var items = new CT_tabularSlicerCacheItems();
items.fromStream(s);
this.items = items.i;
break;
}
default: {
s.SkipRecord();
break;
}
}
}
s.Seek2(_end_pos);
};
CT_tabularSlicerCache.prototype.syncWithCache = function (cacheField, pivotField, cacheFieldWithData) {
var pivotItems = pivotField.getItems();
var count = Math.min(cacheField.getGroupOrSharedSize(), pivotItems.length);
if (cacheFieldWithData) {
count = Math.min(count, cacheFieldWithData.length);
}
this.items = [];
for (var i = 0; i < count; ++i) {
var pivotItem = pivotItems[i];
if (Asc.c_oAscItemType.Data === pivotItem.t || Asc.c_oAscItemType.Blank === pivotItem.t) {
var item = new CT_tabularSlicerCacheItem();
item.x = pivotItem.x;
item.s = !pivotItem.h;
if (this.crossFilter !== ST_slicerCacheCrossFilter.None) {
item.nd = !(!cacheFieldWithData || cacheFieldWithData[item.x]);
}
this.items.push(item);
}
}
this.sortItems(this.sortOrder, cacheField.getGroupOrSharedItems());
};
CT_tabularSlicerCache.prototype.sortItems = function (type, sharedItems) {
var sign = ST_tabularSlicerCacheSortOrder.Ascending === type ? 1 : -1;
if (this.crossFilter === ST_slicerCacheCrossFilter.ShowItemsWithDataAtTop) {
this.items.sort(function (a, b) {
if (a.nd === b.nd) {
return sign * AscCommonExcel.cmpPivotItems(sharedItems, a, b);
} else {
return a.nd - b.nd;
}
});
} else {
this.items.sort(function (a, b) {
return sign * AscCommonExcel.cmpPivotItems(sharedItems, a, b);
});
}
};
CT_tabularSlicerCache.prototype.getFilterObject = function (cacheField, slicerCacheHideItemsWithNoData, opt_pivotField) {
var values = [];
let pivotItems;
if (opt_pivotField) {
pivotItems = opt_pivotField.getItems();
}
for (var i = 0; i < this.items.length; ++i) {
var item = this.items[i];
var elem = AscCommonExcel.AutoFiltersOptionsElements();
var sharedItem = cacheField.getGroupOrSharedItem(item.x);
var num = sharedItem.isDateOrNum() && cacheField.getNumFormat();
let name;
if (pivotItems) {
const pivotItem = pivotItems[opt_pivotField.getItemIndexByValue(item.x)];
name = pivotItem.getName(cacheField, num);
} else {
name = sharedItem.getCellValue().getTextValue(num);
}
elem.val = item.x;
elem.text = name;
elem.visible = item.s;
elem.hiddenByOtherColumns = item.nd || undefined;//todo
elem.isDateFormat = false;
elem.repeats = undefined;
//todo isDateFormat
if (!slicerCacheHideItemsWithNoData || !elem.hiddenByOtherColumns) {
values.push(elem);
}
}
return values;
};
CT_tabularSlicerCache.prototype.fromAutoFiltersOptionsElements = function (visible) {
for (var i = 0; i < this.items.length; ++i) {
this.items[i].s = !!visible[this.items[i].x];
}
};
CT_tabularSlicerCache.prototype.setSortOrder = function (val) {
this.sortOrder = val;
};
CT_tabularSlicerCache.prototype.setCustomListSort = function (val) {
this.customListSort = val;
};
CT_tabularSlicerCache.prototype.setCrossFilter = function (val) {
this.crossFilter = val;
};
CT_tabularSlicerCache.prototype.getPivotCacheId = function () {
return this.pivotCacheDefinition && this.pivotCacheDefinition.getPivotCacheId() || 0;
};
function CT_slicerCacheOlapLevelName() {
this.uniqueName = null;
this.count = null;
return this;
}
CT_slicerCacheOlapLevelName.prototype.clone = function () {
var res = new CT_slicerCacheOlapLevelName();
res.uniqueName = this.uniqueName;
res.count = this.count;
return res;
};
CT_slicerCacheOlapLevelName.prototype.toStream = function (s) {
s.WriteUChar(AscCommon.g_nodeAttributeStart);
s._WriteString2(0, this.uniqueName);
s._WriteUInt2(1, this.count);
s.WriteUChar(AscCommon.g_nodeAttributeEnd);
};
CT_slicerCacheOlapLevelName.prototype.fromStream = function (s) {
var _len = s.GetULong();
var _start_pos = s.cur;
var _end_pos = _len + _start_pos;
var _at;
// attributes
s.GetUChar();
while (true) {
_at = s.GetUChar();
if (_at === AscCommon.g_nodeAttributeEnd)
break;
switch (_at) {
case 0: {
this.uniqueName = s.GetString2();
break;
}
case 1: {
this.count = s.GetULong();
break;
}
default:
s.Seek2(_end_pos);
return;
}
}
s.Seek2(_end_pos);
};
function CT_slicerCacheHideNoData() {
this.count = 0;
this.slicerCacheOlapLevelName = [];
return this;
}
CT_slicerCacheHideNoData.prototype.clone = function () {
var res = new CT_slicerCacheHideNoData();
res.count = this.count;
for (var i = 0; i < this.slicerCacheOlapLevelName.length; i++) {
res.slicerCacheOlapLevelName[i] = this.slicerCacheOlapLevelName[i].clone();
}
return res;
};
CT_slicerCacheHideNoData.prototype.toStream = function (s) {
s.WriteUChar(AscCommon.g_nodeAttributeStart);
s._WriteUInt2(0, this.count);
s.WriteUChar(AscCommon.g_nodeAttributeEnd);
s.WriteRecordArray4(0, 0, this.slicerCacheOlapLevelName);
};
CT_slicerCacheHideNoData.prototype.fromStream = function (s) {
var _len = s.GetULong();
var _start_pos = s.cur;
var _end_pos = _len + _start_pos;
var _at;
// attributes
s.GetUChar();
while (true) {
_at = s.GetUChar();
if (_at === AscCommon.g_nodeAttributeEnd)
break;
switch (_at) {
case 0: {
this.count = s.GetULong();
break;
}
default:
s.Seek2(_end_pos);
return;
}
}
//members
var _type;
while (true) {
if (s.cur >= _end_pos)
break;
_type = s.GetUChar();
switch (_type) {
case 0: {
s.Skip2(4);
var _c = s.GetULong();
for (var i = 0; i < _c; ++i) {
s.Skip2(1); // type
var tmp = new CT_slicerCacheOlapLevelName();
tmp.fromStream(s);
this.slicerCacheOlapLevelName.push(tmp);
}
break;
}
default: {
s.SkipRecord();
break;
}
}
}
s.Seek2(_end_pos);
};
function CT_tabularSlicerCacheItems() {
this.count = null;
this.i = [];
return this;
}
CT_tabularSlicerCacheItems.prototype.clone = function () {
var res = new CT_tabularSlicerCacheItems();
res.count = this.count;
for (var i = 0; i < this.i.length; i++) {
res.i[i] = this.i[i].clone();
}
return res;
};
CT_tabularSlicerCacheItems.prototype.toStream = function (s) {
s.WriteUChar(AscCommon.g_nodeAttributeStart);
s._WriteUInt2(0, this.count);
s.WriteUChar(AscCommon.g_nodeAttributeEnd);
s.WriteRecordArray4(0, 0, this.i);
};
CT_tabularSlicerCacheItems.prototype.fromStream = function (s) {
var _len = s.GetULong();
var _start_pos = s.cur;
var _end_pos = _len + _start_pos;
var _at;
// attributes
s.GetUChar();
while (true) {
_at = s.GetUChar();
if (_at === AscCommon.g_nodeAttributeEnd)
break;
switch (_at) {
case 0: {
this.count = s.GetULong();
break;
}
default:
s.Seek2(_end_pos);
return;
}
}
//members
var _type;
while (true) {
if (s.cur >= _end_pos)
break;
_type = s.GetUChar();
switch (_type) {
case 0: {
s.Skip2(4);
var _c = s.GetULong();
for (var i = 0; i < _c; ++i) {
s.Skip2(1); // type
var tmp = new CT_tabularSlicerCacheItem();
tmp.fromStream(s);
this.i.push(tmp);
}
break;
}
default: {
s.SkipRecord();
break;
}
}
}
s.Seek2(_end_pos);
};
function CT_tabularSlicerCacheItem() {
this.x = null;
this.s = false;
this.nd = false;
}
CT_tabularSlicerCacheItem.prototype.clone = function () {
var res = new CT_tabularSlicerCacheItem();
res.x = this.x;
res.s = this.s;
res.nd = this.nd;
return res;
};
CT_tabularSlicerCacheItem.prototype.toStream = function (s) {
s.WriteUChar(AscCommon.g_nodeAttributeStart);
s._WriteUInt2(0, this.x);
s._WriteBool2(1, this.s);
s._WriteBool2(2, this.nd);
s.WriteUChar(AscCommon.g_nodeAttributeEnd);
};
CT_tabularSlicerCacheItem.prototype.fromStream = function (s) {
var _len = s.GetULong();
var _start_pos = s.cur;
var _end_pos = _len + _start_pos;
var _at;
// attributes
s.GetUChar();
while (true) {
_at = s.GetUChar();
if (_at === AscCommon.g_nodeAttributeEnd)
break;
switch (_at) {
case 0: {
this.x = s.GetULong();
break;
}
case 1: {
this.s = s.GetBool();
break;
}
case 2: {
this.nd = s.GetBool();
break;
}
default:
s.Seek2(_end_pos);
return;
}
}
s.Seek2(_end_pos);
};
var prot;
window['Asc'] = window['Asc'] || {};
window['AscCommonExcel'] = window['AscCommonExcel'] || {};
window['Asc']['CT_slicer'] = window['Asc'].CT_slicer = CT_slicer;
prot = CT_slicer.prototype;
prot["asc_setName"] = prot.asc_setName;
prot["asc_setCaption"] = prot.asc_setCaption;
prot["asc_setStartItem"] = prot.asc_setStartItem;
prot["asc_setColumnCount"] = prot.asc_setColumnCount;
prot["asc_setShowCaption"] = prot.asc_setShowCaption;
prot["asc_setStyle"] = prot.asc_setStyle;
prot["asc_setLockedPosition"] = prot.asc_setLockedPosition;
prot["asc_setRowHeight"] = prot.asc_setRowHeight;
prot["asc_setLockedPosition"] = prot.asc_setLockedPosition;
prot["asc_setSortOrder"] = prot.asc_setSortOrder;
prot["asc_setHideItemsWithNoData"] = prot.asc_setHideItemsWithNoData;
prot["asc_setCustomListSort"] = prot.asc_setCustomListSort;
prot["asc_setIndicateItemsWithNoData"] = prot.asc_setIndicateItemsWithNoData;
prot["asc_setShowItemsWithNoDataLast"] = prot.asc_setShowItemsWithNoDataLast;
prot["asc_setButtonWidth"] = prot.asc_setButtonWidth;
prot["asc_getName"] = prot.asc_getName;
prot["asc_getCaption"] = prot.asc_getCaption;
prot["asc_getStartItem"] = prot.asc_getStartItem;
prot["asc_getColumnCount"] = prot.asc_getColumnCount;
prot["asc_getShowCaption"] = prot.asc_getShowCaption;
prot["asc_getStyle"] = prot.asc_getStyle;
prot["asc_getLockedPosition"] = prot.asc_getLockedPosition;
prot["asc_getRowHeight"] = prot.asc_getRowHeight;
prot["asc_getSourceName"] = prot.asc_getSourceName;
prot["asc_getNameInFormulas"] = prot.asc_getNameInFormulas;
prot["asc_getSortOrder"] = prot.asc_getSortOrder;
prot["asc_getCrossFilter"] = prot.asc_getCrossFilter;
prot["asc_getHideItemsWithNoData"] = prot.asc_getHideItemsWithNoData;
prot["asc_getCustomListSort"] = prot.asc_getCustomListSort;
prot["asc_getIndicateItemsWithNoData"] = prot.asc_getIndicateItemsWithNoData;
prot["asc_getShowItemsWithNoDataLast"] = prot.asc_getShowItemsWithNoDataLast;
prot["asc_getButtonWidth"] = prot.asc_getButtonWidth;
prot["asc_getStylesPictures"] = prot.asc_getStylesPictures;
window['Asc']['CT_slicers'] = window['Asc'].CT_slicers = CT_slicers;
window['Asc']['CT_slicerCacheDefinition'] = window['Asc'].CT_slicerCacheDefinition = CT_slicerCacheDefinition;
window['Asc']['CT_slicerCacheData'] = window['Asc'].CT_slicerCacheData = CT_slicerCacheData;
window['Asc']['CT_slicerCachePivotTable'] = window['Asc'].CT_slicerCachePivotTable = CT_slicerCachePivotTable;
window['Asc']['CT_olapSlicerCacheItem'] = window['Asc'].CT_olapSlicerCacheItem = CT_olapSlicerCacheItem;
window['Asc']['CT_olapSlicerCacheRange'] = window['Asc'].CT_olapSlicerCacheRange = CT_olapSlicerCacheRange;
window['Asc']['CT_olapSlicerCacheLevelData'] = window['Asc'].CT_olapSlicerCacheLevelData = CT_olapSlicerCacheLevelData;
window['Asc']['CT_olapSlicerCache'] = window['Asc'].CT_olapSlicerCache = CT_olapSlicerCache;
window['Asc']['CT_olapSlicerCacheSelection'] = window['Asc'].CT_olapSlicerCacheSelection = CT_olapSlicerCacheSelection;
window['Asc']['CT_tableSlicerCache'] = window['Asc'].CT_tableSlicerCache = CT_tableSlicerCache;
window['Asc']['CT_tabularSlicerCache'] = window['Asc'].CT_tabularSlicerCache = CT_tabularSlicerCache;
window['Asc']['CT_tabularSlicerCacheItem'] = window['Asc'].CT_tabularSlicerCacheItem = CT_tabularSlicerCacheItem;
window['Asc']['CT_slicerStyles'] = window['Asc'].CT_slicerStyles = CT_slicerStyles;
window['Asc']['CT_slicerStyle'] = window['Asc'].CT_slicerStyle = CT_slicerStyle;
window['Asc']['CT_slicerStyleElement'] = window['Asc'].CT_slicerStyleElement = CT_slicerStyleElement;
window['Asc']['CT_slicerCacheHideNoData'] = window['Asc'].CT_slicerCacheHideNoData = CT_slicerCacheHideNoData;
window['Asc']['CT_slicerCacheOlapLevelName'] = window['Asc'].CT_slicerCacheOlapLevelName = CT_slicerCacheOlapLevelName;
window['Asc']['CT_olapSlicerCacheItemParent'] = window['Asc'].CT_olapSlicerCacheItemParent = CT_olapSlicerCacheItemParent;
window['Asc']['ST_olapSlicerCacheSortOrder'] = window['AscCommonExcel'].ST_olapSlicerCacheSortOrder = ST_olapSlicerCacheSortOrder;
prot = ST_olapSlicerCacheSortOrder;
prot['Natural'] = prot.Natural;
prot['Ascending'] = prot.Ascending;
prot['Descending'] = prot.Descending;
window['Asc']['ST_tabularSlicerCacheSortOrder'] = window['Asc'].ST_tabularSlicerCacheSortOrder = ST_tabularSlicerCacheSortOrder;
prot = ST_tabularSlicerCacheSortOrder;
prot['Ascending'] = prot.Ascending;
prot['Descending'] = prot.Descending;
window['Asc']['ST_slicerCacheCrossFilter'] = window['Asc'].ST_slicerCacheCrossFilter = ST_slicerCacheCrossFilter;
prot = ST_slicerCacheCrossFilter;
prot['None'] = prot.None;
prot['ShowItemsWithDataAtTop'] = prot.ShowItemsWithDataAtTop;
prot['ShowItemsWithNoData'] = prot.ShowItemsWithNoData;
window['Asc']['ST_slicerStyleType'] = window['Asc'].ST_slicerStyleType = ST_slicerStyleType;
prot = ST_slicerStyleType;
prot['unselectedItemWithData'] = prot.unselectedItemWithData;
prot['selectedItemWithData'] = prot.selectedItemWithData;
prot['unselectedItemWithNoData'] = prot.unselectedItemWithNoData;
prot['selectedItemWithNoData'] = prot.selectedItemWithNoData;
prot['hoveredUnselectedItemWithData'] = prot.hoveredUnselectedItemWithData;
prot['hoveredSelectedItemWithData'] = prot.hoveredSelectedItemWithData;
prot['hoveredUnselectedItemWithNoData'] = prot.hoveredUnselectedItemWithNoData;
prot['hoveredSelectedItemWithNoData'] = prot.hoveredSelectedItemWithNoData;
window['AscCommonExcel'].insertSlicerType = insertSlicerType;
prot = insertSlicerType;
prot['table'] = prot.table;
prot['pivotTable'] = prot.pivotTable;
})(window);