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

1143 lines
32 KiB
JavaScript

/*
* (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 (undefined) {
var prot;
var asc = window["Asc"];
var c_oAscError = asc.c_oAscError;
var History = AscCommon.History;
// 1. интерфейс
// asc_addNamedSheetView - создание нового вью и дублирование текущего.
// лочим созднанный лист, проверяем лок менеджера. при принятии лока другими пользователями - лочится менеджер.
// для добавления в историю используем historyitem_Worksheet_SheetViewAdd, в историю кладём весь объект.
// asc_getNamedSheetViews - отдаём массив отображений активного листа
// asc_getActiveNamedSheetView - отдаём имя активного листа
// asc_deleteNamedSheetViews - удаление массива отображений. лочим удаляемое отображение.
// в данном случае(как и в именованных диапазонах) у других пользователей нельзя добавить новое отображение. Удалить другие можно.
// для истории при удалении использую UndoRedoData_NamedSheetViewRedo, потому что весь объект необходим только при undo, пересылать его не нужно.
// asc_setActiveNamedSheetView - выставление активного отображения. ничего не лочим. внутри функции описана процедура взаимодействия со скрытыми строками при переходе между вью.
// 1.1 Ограничения строгого совместного редактирования:
// - Локи работают следующим образом: при переходе между вью локов нет. при примении а/ф в режиме вью ничего не лочится.
// - при взаимных изменениях с одним а/ф, применяем тот а/ф, который был последним сохраненным.
// - при скрытии строк в режиме дефолт - лочится лист, но в режиме вью можно использовать а/ф для скрытия строчек, скрывать строки через контекстное меню после скрытия строк в дефолте - нельзя.
// - при добавлении нового вью - лочим менеджер
// - при удалении вью - лочим менеджер. но при удалении не проверяем залочен ли менеджер. проверяем только залоченность конкретного вью.
// - при переименовании - лочим менеджер
// 2. служебные функции в приватном апи
// _isLockedNamedSheetView - проверка лока массива отображений
// _onUpdateNamedSheetViewLock - вызывается из onLocksAcquired, добавляем информацию о локах
// _onUpdateAllSheetViewLock - снимаем локи со всех листов и отображний. !!! вызывается через "updateAllSheetViewLock"(пересмотреть). возможно, необходимо добавить вызов в onLocksReleased !!!
// isNamedSheetViewManagerLocked - проверка лока листа. !!! храним в прототипе апи - sheetViewManagerLocks. пересмореть!!!
// updateAllFilters
function CT_NamedSheetViews() {
this.namedSheetView = [];
// this.extLst = null;
return this;
}
CT_NamedSheetViews.prototype.toStream = function (s, tableIds) {
s.WriteUChar(AscCommon.g_nodeAttributeStart);
s.WriteUChar(AscCommon.g_nodeAttributeEnd);
s.StartRecord(0);
var len = this.namedSheetView.length;
s.WriteULong(len);
for (var i = 0; i < len; i++) {
s.StartRecord(0);
this.namedSheetView[i].toStream(s, tableIds);
s.EndRecord();
}
s.EndRecord();
};
CT_NamedSheetViews.prototype.fromStream = function (s, wb) {
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_NamedSheetView();
tmp.fromStream(s, wb);
this.namedSheetView.push(tmp);
}
break;
}
default: {
s.SkipRecord();
break;
}
}
}
s.Seek2(_end_pos);
};
CT_NamedSheetViews.prototype.hasColorFilter = function () {
return this.namedSheetView.some(function (namedSheetView) {
return namedSheetView.hasColorFilter();
});
}
function CT_NamedSheetView() {
this.nsvFilters = [];
//this.extLst
this.name = null;
this.id = AscCommon.CreateGUID();
this.ws = null;
this.isLock = null;
this._isActive = null;
this.Id = AscCommon.g_oIdCounter.Get_NewId();
return this;
}
CT_NamedSheetView.prototype.Get_Id = function () {
return this.Id;
};
CT_NamedSheetView.prototype.getObjectType = function () {
return AscDFH.historyitem_type_NamedSheetView;
};
CT_NamedSheetView.prototype.getType = function () {
return AscCommonExcel.UndoRedoDataTypes.NamedSheetView;
};
CT_NamedSheetView.prototype.toStream = function (s, tableIds) {
s.WriteUChar(AscCommon.g_nodeAttributeStart);
s._WriteString2(0, this.name);
s._WriteString2(1, this.id);
s.WriteUChar(AscCommon.g_nodeAttributeEnd);
s.StartRecord(0);
var len = this.nsvFilters.length;
s.WriteULong(len);
for (var i = 0; i < len; i++) {
s.StartRecord(0);
this.nsvFilters[i].toStream(s, tableIds);
s.EndRecord();
}
s.EndRecord();
};
CT_NamedSheetView.prototype.fromStream = function (s, wb) {
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.id = 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_NsvFilter();
tmp.fromStream(s, wb);
this.nsvFilters.push(tmp);
}
break;
}
default: {
s.SkipRecord();
break;
}
}
}
s.Seek2(_end_pos);
};
CT_NamedSheetView.prototype.Read_FromBinary2 = function (reader) {
var length = reader.GetLong();
for (var i = 0; i < length; ++i) {
var _filter = new CT_NsvFilter();
_filter.Read_FromBinary2(reader);
this.nsvFilters.push(_filter);
}
this.name = reader.GetString2();
this.id = reader.GetString2();
};
CT_NamedSheetView.prototype.initPostOpen = function (tableIds, ws) {
for (var i = 0; i < this.nsvFilters.length; ++i) {
this.nsvFilters[i].initPostOpen(tableIds);
}
if (!this.ws) {
this.setWS(ws);
}
};
CT_NamedSheetView.prototype.clone = function (tableNameMap) {
var res = new CT_NamedSheetView(true);
for (var i = 0; i < this.nsvFilters.length; ++i) {
res.nsvFilters[i] = this.nsvFilters[i].clone(tableNameMap);
}
res.name = this.name;
res.ws = this.ws;
return res;
};
CT_NamedSheetView.prototype.setWS = function (ws) {
this.ws = ws;
};
CT_NamedSheetView.prototype.hasColorFilter = function () {
return this.nsvFilters.some(function (nsvFilter) {
return nsvFilter.hasColorFilter();
});
}
CT_NamedSheetView.prototype.asc_getName = function () {
return this.name;
};
CT_NamedSheetView.prototype.asc_setName = function (val) {
var t = this;
var api = window["Asc"]["editor"];
if (this.name !== val) {
if (api.isNamedSheetViewManagerLocked(t.ws.getId())) {
t.ws.workbook.handlers.trigger("asc_onError", c_oAscError.ID.LockedEditView, c_oAscError.Level.NoCritical);
return;
}
api._isLockedNamedSheetView([t], function (success) {
if (!success) {
t.ws.workbook.handlers.trigger("asc_onError", c_oAscError.ID.LockedEditView, c_oAscError.Level.NoCritical);
return;
}
History.Create_NewPoint();
History.StartTransaction();
var oldVal = t.name;
t.setName(val);
History.Add(AscCommonExcel.g_oUndoRedoNamedSheetViews, AscCH.historyitem_NamedSheetView_SetName,
t.ws.getId(), null, new AscCommonExcel.UndoRedoData_NamedSheetView(t.Id, oldVal, val));
History.EndTransaction();
api.handlers.trigger("asc_onRefreshNamedSheetViewList", t.ws.index);
});
}
};
CT_NamedSheetView.prototype.setName = function (val) {
this.name = val;
};
CT_NamedSheetView.prototype.asc_getIsActive = function () {
return this._isActive;
};
CT_NamedSheetView.prototype.generateName = function () {
var ws = this.ws;
if (!ws) {
return;
}
var mapNames = [], isContains, name = this.name;
for (var i = 0; i < ws.aNamedSheetViews.length; i++) {
if (name && name === ws.aNamedSheetViews[i].name) {
isContains = true;
}
mapNames[ws.aNamedSheetViews[i].name] = 1;
}
var baseName, counter;
if (!name) {
name = AscCommon.translateManager.getValue("View");
baseName = name;
counter = 1;
while (mapNames[baseName + counter]) {
counter++;
}
name = baseName + counter;
} else if (isContains) {
//так делаяем при создании дубликата
baseName = name + " ";
counter = 2;
while (mapNames[baseName + "(" + counter + ")"]) {
counter++;
}
name = baseName + "(" + counter + ")";
}
return name;
};
CT_NamedSheetView.prototype.asc_getIsLock = function () {
return this.isLock;
};
CT_NamedSheetView.prototype.addFilter = function (filter) {
var nsvFilter = new CT_NsvFilter();
nsvFilter.init(filter);
this.nsvFilters.push(nsvFilter);
//TODO history
};
CT_NamedSheetView.prototype.deleteFilter = function (filter) {
if (!this.nsvFilters || !this.nsvFilters.length || !filter) {
return;
}
for (var i = 0; i < this.nsvFilters.length; i++) {
var isAutoFilter = filter.isAutoFilter();
var isDelete = false;
if (isAutoFilter && this.nsvFilters[i].tableId === "0") {
isDelete = true;
} else if (!isAutoFilter && this.nsvFilters[i].tableId === filter.DisplayName) {
isDelete = true;
}
if (isDelete) {
var historyFilter = this.nsvFilters[i].clone();
this.nsvFilters.splice(i, 1);
History.Add(AscCommonExcel.g_oUndoRedoNamedSheetViews, AscCH.historyitem_NamedSheetView_DeleteFilter,
this.ws.getId(), null, new AscCommonExcel.UndoRedoData_NamedSheetViewRedo(this.Id, historyFilter, null));
break;
}
}
};
CT_NamedSheetView.prototype.getNsvFiltersByTableId = function (val) {
if (!this.nsvFilters) {
return null;
}
if (!val) {
val = "0";
}
for (var i = 0; i < this.nsvFilters.length; i++) {
if (this.nsvFilters[i].tableId === val) {
return this.nsvFilters[i];
}
}
return null;
};
CT_NamedSheetView.prototype.Write_ToBinary2 = function (writer) {
//for wrapper
writer.WriteLong(this.getObjectType());
writer.WriteLong(this.nsvFilters ? this.nsvFilters.length : 0);
if (this.nsvFilters) {
for (var i = 0, length = this.nsvFilters.length; i < length; ++i) {
this.nsvFilters[i].Write_ToBinary2(writer);
}
}
writer.WriteString2(this.name);
writer.WriteString2(this.id);
};
function CT_NsvFilter() {
this.columnsFilter = [];
this.sortRules = null;
//this.extLst
this.filterId = AscCommon.CreateGUID();
this.ref = null;
this.tableId = null;
this.tableIdOpen = null;
return this;
}
CT_NsvFilter.prototype.toStream = function (s, tableIds) {
s.WriteUChar(AscCommon.g_nodeAttributeStart);
s._WriteString2(0, this.filterId);
if (null !== this.ref) {
s._WriteString2(1, this.ref.getName(AscCommonExcel.referenceType.R));
}
if ("0" === this.tableId) {
s._WriteUInt2(2, 0);
} else {
var elem = tableIds && tableIds[this.tableId];
if (elem) {
s._WriteUInt2(2, elem.id);
}
}
s._WriteUInt2(2, this.tableIdOpen);
s.WriteUChar(AscCommon.g_nodeAttributeEnd);
s.WriteRecordArray4(0, 0, this.columnsFilter);
if (null !== this.sortRules) {
var sortRules = new CT_SortRules();
sortRules.sortRule = this.sortRules;
s.WriteRecord4(1, sortRules);
}
};
CT_NsvFilter.prototype.fromStream = function (s, wb) {
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.filterId = s.GetString2();
break;
}
case 1: {
this.ref = AscCommonExcel.g_oRangeCache.getAscRange(s.GetString2());
break;
}
case 2: {
this.tableIdOpen = 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_ColumnFilter();
tmp.fromStream(s, wb);
this.columnsFilter.push(tmp);
}
break;
}
case 1: {
var sortRules = new CT_SortRules();
sortRules.fromStream(s, wb);
this.sortRules = sortRules.sortRule;
break;
}
default: {
s.SkipRecord();
break;
}
}
}
s.Seek2(_end_pos);
};
CT_NsvFilter.prototype.Write_ToBinary2 = function (writer) {
writer.WriteLong(this.columnsFilter ? this.columnsFilter.length : 0);
var i, length;
if (this.columnsFilter) {
for (i = 0, length = this.columnsFilter.length; i < length; ++i) {
this.columnsFilter[i].Write_ToBinary2(writer);
}
}
writer.WriteLong(this.sortRules ? this.sortRules.length : 0);
if (this.sortRules) {
for (i = 0, length = this.sortRules.length; i < length; ++i) {
this.sortRules[i].Write_ToBinary2(writer);
}
}
writer.WriteString2(this.filterId);
if (null != this.Ref) {
writer.WriteBool(true);
writer.WriteLong(this.Ref.r1);
writer.WriteLong(this.Ref.c1);
writer.WriteLong(this.Ref.r2);
writer.WriteLong(this.Ref.c2);
} else {
writer.WriteBool(false);
}
if (null != this.tableId) {
writer.WriteBool(true);
writer.WriteString2(this.tableId);
} else {
writer.WriteBool(false);
}
if (null != this.tableIdOpen) {
writer.WriteBool(true);
writer.WriteString2(this.tableIdOpen);
} else {
writer.WriteBool(false);
}
};
CT_NsvFilter.prototype.Read_FromBinary2 = function (reader) {
var i, obj;
var length = reader.GetLong();
for (i = 0; i < length; ++i) {
_obj = new CT_ColumnFilter();
_obj.Read_FromBinary2(reader)
this.columnsFilter.push(_obj);
}
length = reader.GetLong();
for (i = 0; i < length; ++i) {
var _obj = new CT_SortRule();
if (!this.sortRules) {
this.sortRules = [];
}
_obj.Read_FromBinary2(reader)
this.sortRules.push(_obj);
}
this.filterId = reader.GetString2();
if (reader.GetBool()) {
var r1 = reader.GetLong();
var c1 = reader.GetLong();
var r2 = reader.GetLong();
var c2 = reader.GetLong();
this.ref = new Asc.Range(c1, r1, c2, r2);
}
if (reader.GetBool()) {
this.tableId = reader.GetString2();
}
if (reader.GetBool()) {
this.tableIdOpen = reader.GetString2();
}
};
CT_NsvFilter.prototype.clone = function (tableNameMap) {
var res = new CT_NsvFilter();
var i;
if (this.columnsFilter) {
for (i = 0; i < this.columnsFilter.length; ++i) {
res.columnsFilter[i] = this.columnsFilter[i].clone();
}
}
if (this.sortRules) {
for (i = 0; i < this.sortRules.length; ++i) {
res.sortRules[i] = this.sortRules[i].clone();
}
}
//res.filterId = this.filterId;
res.ref = this.ref;
res.tableId = tableNameMap && tableNameMap[this.tableId] ? tableNameMap[this.tableId] : this.tableId;
res.tableIdOpen = this.tableIdOpen;
return res;
};
CT_NsvFilter.prototype.initPostOpen = function (tableIds) {
var table = null;
if (null != this.tableIdOpen) {
if (0 !== this.tableIdOpen) {
table = tableIds[this.tableIdOpen];
if (table) {
this.tableId = table.DisplayName;
}
} else {
this.tableId = "0";
}
this.tableIdOpen = null;
}
return table;
};
CT_NsvFilter.prototype.getColumnFilterByColId = function (id, isGetIndex) {
for (var i = 0; i < this.columnsFilter.length; ++i) {
if (this.columnsFilter[i].filter && this.columnsFilter[i].filter.ColId === id) {
return !isGetIndex ? this.columnsFilter[i].filter : {filter: this.columnsFilter[i].filter, index: i};
}
}
return null;
};
CT_NsvFilter.prototype.init = function (obj) {
if (obj) {
var af;
if (!obj.isAutoFilter()) {
this.ref = obj.Ref;
this.tableId = obj.DisplayName;
af = obj.AutoFilter;
} else {
this.ref = obj.Ref;
this.tableId = "0";
af = obj;
}
if (af && af.FilterColumns) {
for (var i = 0; i < af.FilterColumns.length; i++) {
var newColumnFilter = new CT_ColumnFilter();
newColumnFilter.colId = af.FilterColumns[i].ColId;
newColumnFilter.filter = af.FilterColumns[i].clone();
this.columnsFilter.push(newColumnFilter);
}
}
}
};
CT_NsvFilter.prototype.isApplyAutoFilter = function () {
var res = null
if (this.columnsFilter && this.columnsFilter.length) {
for (var i = 0; i < this.columnsFilter.length; i++) {
var _filterColumn = this.columnsFilter[i] && this.columnsFilter[i].filter;
if (_filterColumn.isApplyAutoFilter()) {
res = true;
break;
}
}
}
return res;
};
CT_NsvFilter.prototype.getFilterColumnByIndex = function (index) {
return this.columnsFilter && this.columnsFilter[index] && this.columnsFilter[index].filter;
};
CT_NsvFilter.prototype.getIndexByColId = function (colId) {
var res = null;
if (!this.columnsFilter) {
return res;
}
for (var i = 0; i < this.columnsFilter.length; i++) {
if (this.columnsFilter[i].filter && this.columnsFilter[i].filter.ColId === colId) {
res = i;
break;
}
}
return res;
};
CT_NsvFilter.prototype.deleteFilterColumn = function (index) {
if (this.columnsFilter && this.columnsFilter[index]) {
this.columnsFilter.splice(index, 1)
}
};
CT_NsvFilter.prototype.hasColorFilter = function () {
return this.columnsFilter.some(function (columnsFilter) {
return columnsFilter.hasColorFilter();
});
}
function CT_ColumnFilter() {
this.filter = null;
this.dxf = null;
//this.extLst
//нужно ли?
this.colId = null;
this.id = AscCommon.CreateGUID();
return this;
}
CT_ColumnFilter.prototype.toStream = function (s) {
s.WriteUChar(AscCommon.g_nodeAttributeStart);
s._WriteUInt2(0, this.colId);
s._WriteString2(1, this.id);
s.WriteUChar(AscCommon.g_nodeAttributeEnd);
var initSaveManager = new AscCommonExcel.InitSaveManager();
if (null !== this.filter) {
s.StartRecord(1);
s.WriteULong(1);
s.StartRecord(0);
var tmp = new AscCommon.CMemory(true);
s.ExportToMemory(tmp);
var btw = new AscCommonExcel.BinaryTableWriter(tmp, initSaveManager, false, {});
btw.WriteFilterColumn(this.filter);
s.ImportFromMemory(tmp);
s.EndRecord();
s.EndRecord();
}
if (initSaveManager && initSaveManager.aDxfs.length > 0) {
s.StartRecord(0);
var tmp = new AscCommon.CMemory(true);
s.ExportToMemory(tmp);
var bstw = new AscCommonExcel.BinaryStylesTableWriter(tmp, null, null);
bstw.WriteDxf(initSaveManager.aDxfs[0]);
s.ImportFromMemory(tmp);
s.EndRecord();
}
};
CT_ColumnFilter.prototype.fromStream = function (s, wb) {
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.colId = s.GetULong();
break;
}
case 1: {
this.id = s.GetString2();
break;
}
default:
s.Seek2(_end_pos);
return;
}
}
//members
var dxfs = [];
var _type;
while (true) {
if (s.cur >= _end_pos)
break;
_type = s.GetUChar();
switch (_type) {
case 0: {
var _stream = new AscCommon.FT_Stream2();
_stream.FromFileStream(s);
var bsr = new AscCommonExcel.Binary_StylesTableReader(_stream, wb);
dxfs.push(bsr.ReadDxfExternal());
_stream.ToFileStream2(s);
break;
}
case 1: {
s.Skip2(4);
var _c = s.GetULong();
for (var i = 0; i < _c; ++i) {
s.Skip2(1); // type
var _stream = new AscCommon.FT_Stream2();
_stream.FromFileStream(s);
var initOpenManager = new AscCommonExcel.InitOpenManager();
initOpenManager.Dxfs = dxfs;
var bwtr = new AscCommonExcel.Binary_TableReader(_stream, initOpenManager);
this.filter = bwtr.ReadFilterColumnExternal();
_stream.ToFileStream2(s);
}
break;
}
default: {
s.SkipRecord();
break;
}
}
}
s.Seek2(_end_pos);
};
CT_ColumnFilter.prototype.Write_ToBinary2 = function (writer) {
if (null != this.dxf) {
var dxf = this.dxf;
writer.WriteBool(true);
var oBinaryStylesTableWriter = new AscCommonExcel.BinaryStylesTableWriter(writer);
oBinaryStylesTableWriter.bs.WriteItem(0, function () {
oBinaryStylesTableWriter.WriteDxf(dxf);
});
} else {
writer.WriteBool(false);
}
if (null != this.filter) {
writer.WriteBool(true);
this.filter.Write_ToBinary2(writer);
} else {
writer.WriteBool(false);
}
//?
/* this.colId = null;
this.id = null;*/
};
CT_ColumnFilter.prototype.Read_FromBinary2 = function (reader) {
if (reader.GetBool()) {
var api_sheet = Asc['editor'];
var wb = api_sheet.wbModel;
var bsr = new AscCommonExcel.Binary_StylesTableReader(reader, wb);
var bcr = new AscCommon.Binary_CommonReader(reader);
var oDxf = new AscCommonExcel.CellXfs();
reader.GetUChar();
var length = reader.GetULongLE();
bcr.Read1(length, function (t, l) {
return bsr.ReadDxf(t, l, oDxf);
});
this.dxf = oDxf;
}
if (reader.GetBool()) {
var obj = new window['AscCommonExcel'].FilterColumn();
obj.Read_FromBinary2(reader);
this.colId = obj ? obj.ColId : null;
this.filter = obj;
}
};
CT_ColumnFilter.prototype.clone = function () {
var res = new CT_ColumnFilter();
res.filter = this.filter ? this.filter.clone() : null;
res.colId = this.colId;
this.dxf = this.dxf ? this.dxf.clone() : null;
return res;
};
CT_ColumnFilter.prototype.hasColorFilter = function () {
return null !== this.filter && this.filter.isColorFilter();
};
function CT_SortRules() {
this.sortMethod = null;//none
this.caseSensitive = null;//False
this.sortRule = [];
// this.extLst = null;
return this;
}
CT_SortRules.prototype.toStream = function (s) {
s.WriteUChar(AscCommon.g_nodeAttributeStart);
s._WriteUChar2(0, this.sortMethod);
s._WriteBool2(1, this.caseSensitive);
s.WriteUChar(AscCommon.g_nodeAttributeEnd);
s.WriteRecordArray4(0, 0, this.sortRule);
};
CT_SortRules.prototype.fromStream = function (s, wb) {
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.sortMethod = s.GetUChar();
break;
}
case 1: {
this.caseSensitive = 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_SortRule();
tmp.fromStream(s, wb);
this.sortRule.push(tmp);
}
break;
}
default: {
s.SkipRecord();
break;
}
}
}
s.Seek2(_end_pos);
};
function CT_SortRule() {
this.sortCondition = null;
this.richSortCondition = null;
//нужно ли?
this.colId = null;
this.id = AscCommon.CreateGUID();
return this;
}
CT_SortRule.prototype.toStream = function (s) {
s.WriteUChar(AscCommon.g_nodeAttributeStart);
s._WriteUInt2(0, this.colId);
s._WriteString2(1, this.id);
s.WriteUChar(AscCommon.g_nodeAttributeEnd);
// s.WriteRecord4(1, this.richSortCondition);
var initSaveManager = new AscCommonExcel.InitSaveManager();
if (null !== this.sortCondition) {
s.StartRecord(2);
var tmp = new AscCommon.CMemory(true);
s.ExportToMemory(tmp);
var btw = new AscCommonExcel.BinaryTableWriter(tmp, initSaveManager, false, {});
//dxfId is absent in sortCondition
if (this.sortCondition.dxf) {
initSaveManager.aDxfs.push(this.sortCondition.dxf);
this.sortCondition.dxf = null;
}
btw.WriteSortCondition(this.sortCondition);
if (initSaveManager.aDxfs.length > 0) {
this.sortCondition.dxf = initSaveManager.aDxfs[0];
}
s.ImportFromMemory(tmp);
s.EndRecord();
}
if (initSaveManager && initSaveManager.aDxfs.length > 0) {
s.StartRecord(0);
var tmp = new AscCommon.CMemory(true);
s.ExportToMemory(tmp);
var bstw = new AscCommonExcel.BinaryStylesTableWriter(tmp, null, null);
bstw.WriteDxf(initSaveManager.aDxfs[0]);
s.ImportFromMemory(tmp);
s.EndRecord();
}
};
CT_SortRule.prototype.fromStream = function (s, wb) {
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.colId = s.GetULong();
break;
}
case 1: {
this.id = s.GetString2();
break;
}
default:
s.Seek2(_end_pos);
return;
}
}
//members
var dxfs = [];
var _type;
while (true) {
if (s.cur >= _end_pos)
break;
_type = s.GetUChar();
switch (_type) {
case 0: {
var _stream = new AscCommon.FT_Stream2();
_stream.FromFileStream(s);
var bsr = new AscCommonExcel.Binary_StylesTableReader(_stream, wb);
dxfs.push(bsr.ReadDxfExternal());
_stream.ToFileStream2(s);
break;
}
// case 1:
// {
// this.richSortCondition = new CT_RichSortCondition();
// this.richSortCondition.fromStream(s);
// break;
// }
case 2: {
var _stream = new AscCommon.FT_Stream2();
_stream.FromFileStream(s);
var initOpenManager = new AscCommonExcel.InitOpenManager();
initOpenManager.Dxfs = dxfs;
var bwtr = new AscCommonExcel.Binary_TableReader(_stream, initOpenManager);
this.sortCondition = bwtr.ReadSortConditionExternal();
//dxfId is absent in sortCondition
if ((Asc.ESortBy.sortbyCellColor === this.sortCondition.ConditionSortBy ||
Asc.ESortBy.sortbyFontColor === this.sortCondition.ConditionSortBy)
&& null === this.sortCondition.dxf && dxfs.length > 0) {
this.sortCondition.dxf = dxfs[0];
}
_stream.ToFileStream2(s);
break;
}
default: {
s.SkipRecord();
break;
}
}
}
s.Seek2(_end_pos);
};
CT_SortRule.prototype.Write_ToBinary2 = function (writer) {
if (null != this.dxf) {
var dxf = this.dxf;
writer.WriteBool(true);
var oBinaryStylesTableWriter = new AscCommonExcel.BinaryStylesTableWriter(writer);
oBinaryStylesTableWriter.bs.WriteItem(0, function () {
oBinaryStylesTableWriter.WriteDxf(dxf);
});
} else {
writer.WriteBool(false);
}
if (null != this.sortCondition) {
writer.WriteBool(true);
this.sortCondition.Write_ToBinary2(writer);
} else {
writer.WriteBool(false);
}
if (null != this.richSortCondition) {
writer.WriteBool(true);
this.richSortCondition.Write_ToBinary2(writer);
} else {
writer.WriteBool(false);
}
};
CT_SortRule.prototype.Read_FromBinary2 = function (reader) {
if (reader.GetBool()) {
var api_sheet = Asc['editor'];
var wb = api_sheet.wbModel;
var bsr = new AscCommonExcel.Binary_StylesTableReader(reader, wb);
var bcr = new AscCommon.Binary_CommonReader(reader);
var oDxf = new AscCommonExcel.CellXfs();
reader.GetUChar();
var length = reader.GetULongLE();
bcr.Read1(length, function (t, l) {
return bsr.ReadDxf(t, l, oDxf);
});
this.dxf = oDxf;
}
var obj;
if (reader.GetBool()) {
obj = new AscCommonExcel.SortCondition();
obj.Read_FromBinary2(reader);
this.sortCondition = obj;
}
if (reader.GetBool()) {
obj = new AscCommonExcel.SortCondition();
obj.Read_FromBinary2(reader);
//TODO CT_RichSortCondition ?
this.richSortCondition = obj;
}
};
CT_SortRule.prototype.clone = function () {
var res = new CT_SortRule();
res.sortCondition = this.sortCondition ? this.sortCondition.clone() : null;
res.richSortCondition = this.richSortCondition ? this.richSortCondition.clone() : null;
return res;
};
window["Asc"]["CT_NamedSheetViews"] = window['Asc'].CT_NamedSheetViews = CT_NamedSheetViews;
prot = CT_NamedSheetView.prototype;
prot["asc_getName"] = prot.asc_getName;
prot["asc_setName"] = prot.asc_setName;
prot["asc_getIsActive"] = prot.asc_getIsActive;
prot["asc_setIsActive"] = prot.asc_setIsActive;
prot["asc_getIsLock"] = prot.asc_getIsLock;
window["Asc"]["CT_NamedSheetView"] = window['Asc'].CT_NamedSheetView = CT_NamedSheetView;
window["Asc"]["CT_NsvFilter"] = window['Asc'].CT_NsvFilter = CT_NsvFilter;
window["Asc"]["CT_ColumnFilter"] = window['Asc'].CT_ColumnFilter = CT_ColumnFilter;
window["Asc"]["CT_SortRule"] = window['Asc'].CT_SortRule = CT_SortRule;
window["Asc"]["CT_SortRules"] = window['Asc'].CT_SortRules = CT_SortRules;
})(window);