Commit 746947f1 authored by Sergey.Konovalov's avatar Sergey.Konovalov Committed by Alexander.Trofimov

Правки для формул при вставке, удалении, перемещении, копировании sheet.

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@54173 954022d7-b5bf-4e40-9824-e11837661b57
parent d0c56133
...@@ -1888,25 +1888,6 @@ cArea3D.prototype.changeSheet = function ( lastName, newName ) { ...@@ -1888,25 +1888,6 @@ cArea3D.prototype.changeSheet = function ( lastName, newName ) {
this.wsTo = this._wb.getWorksheetByName( newName ).getId(); this.wsTo = this._wb.getWorksheetByName( newName ).getId();
} }
}; };
cArea3D.prototype.moveSheet = function ( tempW ) {
if ( this.wsFrom == this.wsTo ) {
return;
}
else if ( this.wsFrom == tempW.wFId ) {
var newWsFromIndex = this._wb.getWorksheetById( this.wsFrom ).getIndex(),
wsToIndex = this._wb.getWorksheetById( this.wsTo ).getIndex();
if ( newWsFromIndex > wsToIndex ) {
this.wsFrom = this._wb.getWorksheet( tempW.wFI ).getId();
}
}
else if ( this.wsTo == tempW.wFId ) {
var newWsToIndex = this._wb.getWorksheetById( this.wsTo ).getIndex(),
wsFromIndex = this._wb.getWorksheetById( this.wsFrom ).getIndex();
if ( newWsToIndex < wsFromIndex ) {
this.wsTo = this._wb.getWorksheet( tempW.wFI ).getId();
}
}
};
cArea3D.prototype.toString = function () { cArea3D.prototype.toString = function () {
var wsFrom = this._wb.getWorksheetById( this.wsFrom ).getName(); var wsFrom = this._wb.getWorksheetById( this.wsFrom ).getName();
var wsTo = this._wb.getWorksheetById( this.wsTo ).getName(); var wsTo = this._wb.getWorksheetById( this.wsTo ).getName();
...@@ -3187,15 +3168,92 @@ parserFormula.prototype = { ...@@ -3187,15 +3168,92 @@ parserFormula.prototype = {
} }
} }
}, },
insertSheet:function ( index ) {
moveSheet:function ( tempW ) { var bRes = false;
for ( var i = 0; i < this.outStack.length; i++ ) { for ( var i = 0; i < this.outStack.length; i++ ) {
if ( this.outStack[i] instanceof cArea3D ) { var elem = this.outStack[i];
this.outStack[i].moveSheet( tempW ); if ( elem instanceof cArea3D ) {
var wsTo = this.wb.getWorksheetById(elem.wsTo);
var wsToIndex = wsTo.getIndex();
var wsFrom = this.wb.getWorksheetById(elem.wsFrom);
var wsFromIndex = wsFrom.getIndex();
if(wsFromIndex <= index && index <= wsToIndex)
bRes = true;
} }
} }
return this; return bRes;
},
moveSheet:function ( tempW ) {
var nRes = 0;
for ( var i = 0; i < this.outStack.length; i++ ) {
var elem = this.outStack[i];
if ( elem instanceof cArea3D ) {
var wsTo = this.wb.getWorksheetById(elem.wsTo);
var wsToIndex = wsTo.getIndex();
var wsFrom = this.wb.getWorksheetById(elem.wsFrom);
var wsFromIndex = wsFrom.getIndex();
if(wsFromIndex <= tempW.wFI && tempW.wFI <= wsToIndex && 0 == nRes)
nRes = 1;
if(elem.wsFrom == tempW.wFId)
{
if(tempW.wTI > wsToIndex)
{
nRes = 2;
var wsNext = this.wb.getWorksheet(wsFromIndex + 1);
if(wsNext)
this.outStack[i].changeSheet( tempW.wFN, wsNext.getName() );
else
this.outStack[i] = new cError( cErrorType.bad_reference );
}
}
else if(elem.wsTo == tempW.wFId)
{
if(tempW.wTI <= wsFromIndex)
{
nRes = 2;
var wsPrev = this.wb.getWorksheet(wsToIndex - 1);
if(wsPrev)
this.outStack[i].changeSheet( tempW.wFN, wsPrev.getName() );
else
this.outStack[i] = new cError( cErrorType.bad_reference );
}
}
}
}
return nRes;
}, },
removeSheet:function(sheetId){
var bRes = false;
var ws = this.wb.getWorksheetById(sheetId);
if(ws)
{
var wsIndex = ws.getIndex();
var wsPrev = null;
if(wsIndex > 0)
wsPrev = this.wb.getWorksheet(wsIndex - 1);
var wsNext = null;
if(wsIndex < this.wb.getWorksheetCount() - 1)
wsNext = this.wb.getWorksheet(wsIndex + 1);
for ( var i = 0; i < this.outStack.length; i++ ) {
var elem = this.outStack[i];
if ( elem instanceof cArea3D )
{
bRes = true;
if(elem.wsFrom == sheetId)
{
if(elem.wsTo != sheetId && null != wsNext)
this.outStack[i].changeSheet( ws.getName(), wsNext.getName() );
else
this.outStack[i] = new cError( cErrorType.bad_reference );
}
else if(elem.wsTo == sheetId && null != wsPrev)
this.outStack[i].changeSheet( ws.getName(), wsPrev.getName() );
}
}
}
return bRes;
},
buildDependencies:function () { buildDependencies:function () {
......
...@@ -2980,12 +2980,13 @@ UndoRedoWoorksheet.prototype = { ...@@ -2980,12 +2980,13 @@ UndoRedoWoorksheet.prototype = {
if(bUndo) if(bUndo)
{ {
var sFormula = Data.sFormula var sFormula = Data.sFormula
var cell = ws._getCell(nRow, nCol); var cell = ws._getCellNoEmpty(nRow, nCol);
ws.workbook.dependencyFormulas.deleteMasterNodes(ws.getId(), cell.getName()); if(cell)
cell.setFormula(sFormula); {
addToArrRecalc(ws.workbook, ws.getId(), cell.getName()); var node = ws.workbook.dependencyFormulas.getNode(ws.getId(), cell.getName());
ws.workbook.needRecalc.nodes[ getVertexId(ws.getId(),cell.getName()) ] = [ ws.getId(),cell.getName() ]; if(node)
ws.workbook.needRecalc.length++; node.setFormula(Data.sFormula, false, true);
}
} }
} }
else if(historyitem_Worksheet_ColProp == Type) else if(historyitem_Worksheet_ColProp == Type)
......
This diff is collapsed.
...@@ -2131,9 +2131,11 @@ Col.prototype = ...@@ -2131,9 +2131,11 @@ Col.prototype =
{ {
this.ws._removeCol(this.index); this.ws._removeCol(this.index);
}, },
clone : function() clone : function(oNewWs)
{ {
var oNewCol = new Col(this.ws, this.index); if(!oNewWs)
oNewWs = this.ws;
var oNewCol = new Col(oNewWs, this.index);
if(null != this.BestFit) if(null != this.BestFit)
oNewCol.BestFit = this.BestFit; oNewCol.BestFit = this.BestFit;
if(null != this.hd) if(null != this.hd)
...@@ -2390,9 +2392,11 @@ Row.prototype = ...@@ -2390,9 +2392,11 @@ Row.prototype =
{ {
this.ws._removeRow(this.index); this.ws._removeRow(this.index);
}, },
clone : function() clone : function(oNewWs)
{ {
var oNewRow = new Row(this.ws); if(!oNewWs)
oNewWs = this.ws;
var oNewRow = new Row(oNewWs);
oNewRow.r = this.r; oNewRow.r = this.r;
if(null != this.xfs) if(null != this.xfs)
oNewRow.xfs = this.xfs.clone(); oNewRow.xfs = this.xfs.clone();
...@@ -2403,7 +2407,7 @@ Row.prototype = ...@@ -2403,7 +2407,7 @@ Row.prototype =
if(null != this.hd) if(null != this.hd)
oNewRow.hd = this.hd; oNewRow.hd = this.hd;
for(var i in this.c) for(var i in this.c)
oNewRow.c[i] = this.c[i].clone(); oNewRow.c[i] = this.c[i].clone(oNewWs);
return oNewRow; return oNewRow;
}, },
getDefaultXfs : function() getDefaultXfs : function()
...@@ -4573,4 +4577,4 @@ SortCondition.prototype.clone = function() { ...@@ -4573,4 +4577,4 @@ SortCondition.prototype.clone = function() {
if (this.dxf) if (this.dxf)
res.dxf = this.dxf.clone(); res.dxf = this.dxf.clone();
return res; return res;
}; };
\ No newline at end of file
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