Commit 151e5451 authored by konovalovsergey's avatar konovalovsergey

for ChangeColumnName, Workbook.onFormulaEvent move to class ForwardTransformationFormula

parent 353121c3
...@@ -7204,7 +7204,7 @@ ...@@ -7204,7 +7204,7 @@
if(c_oSerConstants.ReadOk == res) if(c_oSerConstants.ReadOk == res)
res = (new Binary_WorkbookTableReader(this.stream, wb)).Read(); res = (new Binary_WorkbookTableReader(this.stream, wb)).Read();
} }
wb.init(this.oReadResult.tableCustomFunc); wb.init(this.oReadResult.tableCustomFunc, false, true);
} else if(window["Asc"] && window["Asc"]["editor"] !== undefined){ } else if(window["Asc"] && window["Asc"]["editor"] !== undefined){
wb.init(this.oReadResult.tableCustomFunc, true); wb.init(this.oReadResult.tableCustomFunc, true);
} }
......
...@@ -3858,7 +3858,7 @@ UndoRedoAutoFilters.prototype = { ...@@ -3858,7 +3858,7 @@ UndoRedoAutoFilters.prototype = {
}, },
forwardTransformationIsAffect : function(Type) { forwardTransformationIsAffect : function(Type) {
return AscCH.historyitem_AutoFilter_Add === Type || AscCH.historyitem_AutoFilter_ChangeTableName === Type || return AscCH.historyitem_AutoFilter_Add === Type || AscCH.historyitem_AutoFilter_ChangeTableName === Type ||
AscCH.historyitem_AutoFilter_Empty === Type; AscCH.historyitem_AutoFilter_Empty === Type || AscCH.historyitem_AutoFilter_ChangeColumnName === Type;
} }
}; };
......
...@@ -1263,6 +1263,29 @@ function getRangeType(oBBox){ ...@@ -1263,6 +1263,29 @@ function getRangeType(oBBox){
} }
}; };
function ForwardTransformationFormula(elem, formula, parsed) {
this.elem = elem;
this.formula = formula;
this.parsed = parsed;
}
ForwardTransformationFormula.prototype = {
onFormulaEvent: function(type, eventData) {
if (AscCommon.c_oNotifyParentType.CanDo === type) {
return true;
} else if (AscCommon.c_oNotifyParentType.Change === type) {
this.parsed.setIsDirty(false);
} else if (AscCommon.c_oNotifyParentType.ChangeFormula === type) {
if (eventData.isRebuild) {
this.parsed = new AscCommonExcel.parserFormula(eventData.assemble, this, this.parsed.ws);
this.parsed.parse();
} else {
this.parsed.Formula = eventData.assemble;
}
this.formula = eventData.assemble;
this.parsed.buildDependencies();
}
}
};
function angleFormatToInterface(val) function angleFormatToInterface(val)
{ {
var nRes = 0; var nRes = 0;
...@@ -1329,7 +1352,7 @@ function Workbook(eventsHandlers, oApi){ ...@@ -1329,7 +1352,7 @@ function Workbook(eventsHandlers, oApi){
this.maxDigitWidth = 0; this.maxDigitWidth = 0;
this.paddingPlusBorder = 0; this.paddingPlusBorder = 0;
} }
Workbook.prototype.init=function(tableCustomFunc, bNoBuildDep){ Workbook.prototype.init=function(tableCustomFunc, bNoBuildDep, bSnapshot){
if(this.nActive < 0) if(this.nActive < 0)
this.nActive = 0; this.nActive = 0;
if(this.nActive >= this.aWorksheets.length) if(this.nActive >= this.aWorksheets.length)
...@@ -1374,7 +1397,9 @@ Workbook.prototype.init=function(tableCustomFunc, bNoBuildDep){ ...@@ -1374,7 +1397,9 @@ Workbook.prototype.init=function(tableCustomFunc, bNoBuildDep){
this.dependencyFormulas.initOpen(); this.dependencyFormulas.initOpen();
this.dependencyFormulas.calcTree(); this.dependencyFormulas.calcTree();
} }
this.snapshot = this._getSnapshot(); if (bSnapshot) {
this.snapshot = this._getSnapshot();
}
}; };
Workbook.prototype.rebuildColors=function(){ Workbook.prototype.rebuildColors=function(){
AscCommonExcel.g_oColorManager.rebuildColors(); AscCommonExcel.g_oColorManager.rebuildColors();
...@@ -1838,6 +1863,8 @@ Workbook.prototype.SerializeHistory = function(){ ...@@ -1838,6 +1863,8 @@ Workbook.prototype.SerializeHistory = function(){
wb.aWorksheets.push(ws); wb.aWorksheets.push(ws);
wb.aWorksheetsById[ws.getId()] = ws; wb.aWorksheetsById[ws.getId()] = ws;
} }
//init trigger
wb.init({}, true, false);
return wb; return wb;
}; };
Workbook.prototype._forwardTransformation = function(wbSnapshot, changesMine, changesTheir) { Workbook.prototype._forwardTransformation = function(wbSnapshot, changesMine, changesTheir) {
...@@ -1890,7 +1917,7 @@ Workbook.prototype.SerializeHistory = function(){ ...@@ -1890,7 +1917,7 @@ Workbook.prototype.SerializeHistory = function(){
var getRes = elem.oClass.forwardTransformationGet(elem.nActionType, elem.oData, elem.nSheetId); var getRes = elem.oClass.forwardTransformationGet(elem.nActionType, elem.oData, elem.nSheetId);
if (getRes && getRes.formula) { if (getRes && getRes.formula) {
//inserted formulas //inserted formulas
formulas.push({elem: elem, formula: getRes.formula, parsed: null}); formulas.push(new ForwardTransformationFormula(elem, getRes.formula, null));
} }
if (getRes && getRes.name) { if (getRes && getRes.name) {
//add/rename sheet //add/rename sheet
...@@ -1952,15 +1979,15 @@ Workbook.prototype.SerializeHistory = function(){ ...@@ -1952,15 +1979,15 @@ Workbook.prototype.SerializeHistory = function(){
}; };
Workbook.prototype._forwardTransformationFormula = function(wbSnapshot, formulas, changes, res) { Workbook.prototype._forwardTransformationFormula = function(wbSnapshot, formulas, changes, res) {
if (formulas.length > 0) { if (formulas.length > 0) {
var i, elem, elemWrap, ws; var i, elem, ftFormula, ws;
//parse formulas //parse formulas
for (i = 0; i < formulas.length; ++i) { for (i = 0; i < formulas.length; ++i) {
elemWrap = formulas[i]; ftFormula = formulas[i];
ws = wbSnapshot.getWorksheetById(elemWrap.elem.nSheetId); ws = wbSnapshot.getWorksheetById(ftFormula.elem.nSheetId);
if (ws) { if (ws) {
elemWrap.parsed = new parserFormula(elemWrap.formula, wbSnapshot, ws); ftFormula.parsed = new parserFormula(ftFormula.formula, ftFormula, ws);
elemWrap.parsed.parse(); ftFormula.parsed.parse();
elemWrap.parsed.buildDependencies(); ftFormula.parsed.buildDependencies();
} }
} }
//rename sheet first to prevent name conflict //rename sheet first to prevent name conflict
...@@ -1977,31 +2004,14 @@ Workbook.prototype.SerializeHistory = function(){ ...@@ -1977,31 +2004,14 @@ Workbook.prototype.SerializeHistory = function(){
} }
//assemble //assemble
for (i = 0; i < formulas.length; ++i) { for (i = 0; i < formulas.length; ++i) {
elemWrap = formulas[i]; ftFormula = formulas[i];
if (elemWrap.parsed) { if (ftFormula.parsed) {
elem = elemWrap.elem; ftFormula.parsed.removeDependencies();
elemWrap.parsed.removeDependencies(); res.modify.push(ftFormula);
elemWrap.formula = elemWrap.parsed.Formula;
res.modify.push(elemWrap);
} }
} }
} }
}; };
Workbook.prototype.onFormulaEvent = function(type, eventData) {
if (AscCommon.c_oNotifyParentType.CanDo === type) {
return true;
} else if (AscCommon.c_oNotifyParentType.Change === type) {
eventData.formula.setIsDirty(false);
} else if (AscCommon.c_oNotifyParentType.ChangeFormula === type) {
if (eventData.isRebuild) {
eventData.formula = new AscCommonExcel.parserFormula(eventData.assemble, this, eventData.formula.ws);
eventData.formula.parse();
} else {
eventData.formula.Formula = eventData.assemble;
}
eventData.formula.buildDependencies();
}
};
Workbook.prototype.DeserializeHistory = function(aChanges, fCallback){ Workbook.prototype.DeserializeHistory = function(aChanges, fCallback){
var oThis = this; var oThis = this;
//сохраняем те изменения, которые были до приема данных, потому что дальше undo/redo будет очищено //сохраняем те изменения, которые были до приема данных, потому что дальше undo/redo будет очищено
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment