Commit bf61c707 authored by Dmitry.Shahtanov's avatar Dmitry.Shahtanov Committed by Alexander.Trofimov

fix: Bug 30186 - [NamedRange] Удаление листа с именованным диапазоном,...

fix: Bug 30186 - [NamedRange] Удаление листа с именованным диапазоном, определенным только на этом листе, не осуществляется и вызывает ошибку в консоли (http://bugzserver/show_bug.cgi?id=30186)

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@64408 954022d7-b5bf-4e40-9824-e11837661b57
parent 20a1859d
...@@ -949,35 +949,40 @@ DependencyGraph.prototype = { ...@@ -949,35 +949,40 @@ DependencyGraph.prototype = {
removeDefNameBySheet:function ( sheetId ) { removeDefNameBySheet:function ( sheetId ) {
/*var ws = this.wb.getWorksheet( sheetId ); /*var ws = this.wb.getWorksheet( sheetId );
ws ? sheetId = ws.getId() : null;*/ ws ? sheetId = ws.getId() : null;*/
var nodesList = this.defNameList, retRes = {}, defN, seUndoRedo = [], nSE, wsIndex; var nodesList = this.defNameList, retRes = {}, defN, seUndoRedo = [], nSE, wsIndex;
for( var id in nodesList ){ for ( var id in nodesList ) {
/*if ( nodesList[id].isTable ) {
if( !nodesList[id].isTable && nodesList[id].parsedRef.removeSheet(sheetId) ){ if ( nodesList[id].sheetTableId == sheetId ) {
nodesList[id].Ref = null;
}
continue;
}*/
if ( !nodesList[id].isTable && nodesList[id].parsedRef && nodesList[id].parsedRef.removeSheet( sheetId ) ) {
seUndoRedo = []; seUndoRedo = [];
defN = nodesList[id]; defN = nodesList[id];
nSE = defN.getSlaveEdges(); nSE = defN.getSlaveEdges();
for( var nseID in nSE ){ for ( var nseID in nSE ) {
seUndoRedo.push(nseID); seUndoRedo.push( nseID );
} }
wsIndex = this.wb.getWorksheetById(defN.sheetId); wsIndex = this.wb.getWorksheetById( defN.sheetId );
History.Add( g_oUndoRedoWorkbook, historyitem_Workbook_DefinedNamesDelete, null, null, History.Add( g_oUndoRedoWorkbook, historyitem_Workbook_DefinedNamesDelete, null, null,
new UndoRedoData_DefinedNames( defN.Name, defN.Ref, wsIndex ? wsIndex.getIndex() : undefined, defN.isTable, seUndoRedo ) ); new UndoRedoData_DefinedNames( defN.Name, defN.Ref, wsIndex ? wsIndex.getIndex() : undefined, defN.isTable, seUndoRedo ) );
if( defN.sheetId == sheetId ){ if ( defN.sheetId == sheetId ) {
defN.Ref = null; defN.Ref = null;
defN.parsedRef = null; defN.parsedRef = null;
retRes[id] = defN; retRes[id] = defN;
} }
else{ else {
defN.Ref = defN.parsedRef.Formula = defN.parsedRef.assemble(true); defN.Ref = defN.parsedRef.Formula = defN.parsedRef.assemble( true );
retRes[id] = defN; retRes[id] = defN;
} }
...@@ -1598,7 +1603,7 @@ DefNameVertex.prototype = { ...@@ -1598,7 +1603,7 @@ DefNameVertex.prototype = {
returnCell:function () { returnCell:function () {
//todo //todo
if ( null == this.cell && this.wb && !this.isArea ) { if ( null == this.cell && this.wb && !this.isArea && this.Ref !== null && this.Ref !== undefined ) {
var ws = this.wb.getWorksheetById( this.sheetId ); var ws = this.wb.getWorksheetById( this.sheetId );
if ( ws ) if ( ws )
this.cell = ws._getCellNoEmpty( this.bbox.r1, this.bbox.c1 ); this.cell = ws._getCellNoEmpty( this.bbox.r1, this.bbox.c1 );
...@@ -2174,13 +2179,14 @@ Workbook.prototype.removeWorksheet=function(nIndex, outputParams){ ...@@ -2174,13 +2179,14 @@ Workbook.prototype.removeWorksheet=function(nIndex, outputParams){
} }
if(bEmpty) if(bEmpty)
return -1; return -1;
var removedSheet = this.getWorksheet(nIndex); var removedSheet = this.getWorksheet(nIndex);
if(removedSheet) if(removedSheet)
{ {
History.Create_NewPoint(); History.Create_NewPoint();
var removedSheetId = removedSheet.getId(); var removedSheetId = removedSheet.getId();
lockDraw(this); lockDraw(this);
var retRes = this.dependencyFormulas.removeDefNameBySheet( removedSheetId ), nSE, se, seUndoRedo = [];
var a = this.dependencyFormulas.getNodeBySheetId(removedSheetId); var a = this.dependencyFormulas.getNodeBySheetId(removedSheetId);
for(var i = 0; i < a.length; i++) for(var i = 0; i < a.length; i++)
{ {
...@@ -2198,14 +2204,12 @@ Workbook.prototype.removeWorksheet=function(nIndex, outputParams){ ...@@ -2198,14 +2204,12 @@ Workbook.prototype.removeWorksheet=function(nIndex, outputParams){
} }
} }
} }
//по всем удаленным листам пробегаемся и удаляем из workbook.cwf (cwf - cells with forluma) элементы с названием соответствующего листа. //по всем удаленным листам пробегаемся и удаляем из workbook.cwf (cwf - cells with forluma) элементы с названием соответствующего листа.
this.dependencyFormulas.removeNodeBySheetId(removedSheetId); this.dependencyFormulas.removeNodeBySheetId(removedSheetId);
var _cwf = this.cwf[removedSheetId]; var _cwf = this.cwf[removedSheetId];
delete this.cwf[removedSheetId]; delete this.cwf[removedSheetId];
var retRes = this.dependencyFormulas.removeDefNameBySheet( removedSheetId ), nSE, se, seUndoRedo = [];
if ( retRes ) { if ( retRes ) {
/* /*
* #1. поменяли название - перестроили формулу. нужно вызвать пересборку формул в ячейках, в которыйх есть эта именованная ссылка. * #1. поменяли название - перестроили формулу. нужно вызвать пересборку формул в ячейках, в которыйх есть эта именованная ссылка.
......
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