Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
sdkjs
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boris Kocherov
sdkjs
Commits
5da40db3
Commit
5da40db3
authored
Aug 15, 2016
by
konovalovsergey
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bug move sheet, defNamee bugs, test RangeTree
parent
a0f1c6ca
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
225 additions
and
136 deletions
+225
-136
cell/.unit-tests/tests.js
cell/.unit-tests/tests.js
+118
-0
cell/api.js
cell/api.js
+1
-1
cell/model/FormulaObjects/parserFormula.js
cell/model/FormulaObjects/parserFormula.js
+76
-57
cell/model/Workbook.js
cell/model/Workbook.js
+27
-75
cell/view/WorkbookView.js
cell/view/WorkbookView.js
+2
-2
cell/view/WorksheetView.js
cell/view/WorksheetView.js
+1
-1
No files found.
cell/.unit-tests/tests.js
View file @
5da40db3
...
...
@@ -342,4 +342,122 @@ $(function () {
l3
.
trigger
(
"
onEvent1
"
,
"
trigger event with all handlers removed by 'remove()'
"
);
//-
});
test
(
"
RangeTree
"
,
function
test_HandlersList
()
{
function
getRandomArbitary
(
min
,
max
)
{
return
Math
.
round
(
Math
.
random
()
*
(
max
-
min
)
+
min
);
}
function
getCellIndex
(
row
,
col
)
{
return
row
*
AscCommon
.
gc_nMaxCol
+
col
;
}
function
testCells
(
cells
,
tree
,
standart
)
{
var
starndartRes
=
{};
var
treeCells
=
{};
for
(
var
i
=
0
;
i
<
cells
.
length
;
++
i
){
var
cell
=
cells
[
i
];
treeCells
[
cell
.
index
]
=
cell
.
index
;
for
(
var
id
in
standart
){
var
data
=
standart
[
id
];
if
(
data
.
bbox
.
contains
(
cell
.
col
,
cell
.
row
)){
starndartRes
[
data
.
id
]
=
data
;
}
}
}
var
starndartResArr
=
[];
for
(
var
i
in
starndartRes
){
starndartResArr
.
push
(
starndartRes
[
i
].
id
);
}
var
treeRes
=
[];
var
areas
=
tree
.
getByCells
(
treeCells
);
for
(
var
i
=
0
;
i
<
areas
.
length
;
++
i
){
treeRes
.
push
(
areas
[
i
].
data
.
id
);
}
tree
.
getByCellsEnd
(
areas
);
treeRes
.
sort
();
starndartResArr
.
sort
();
var
res
=
JSON
.
stringify
(
starndartResArr
)
==
JSON
.
stringify
(
treeRes
);
return
res
;
}
function
test
(
row
,
col
,
tree
,
standart
)
{
var
cells
=
[];
var
cellsCount
=
10
;
while
(
cellsCount
--
>
0
)
{
var
r1
=
getRandomArbitary
(
0
,
row
);
var
c1
=
getRandomArbitary
(
0
,
col
);
cells
.
push
({
row
:
r1
,
col
:
c1
,
index
:
getCellIndex
(
r1
,
c1
)});
}
return
testCells
(
cells
,
tree
,
standart
);
}
var
bboxCount
=
1000
;
var
colMax
=
100
;
var
rowMax
=
100
;
var
tree
=
new
AscCommonExcel
.
RangeTree
();
var
standard
=
{};
var
count
=
0
;
for
(
var
i
=
0
;
i
<
bboxCount
;
++
i
){
var
r1
=
getRandomArbitary
(
0
,
rowMax
);
var
r2
=
getRandomArbitary
(
0
,
rowMax
);
var
c1
=
getRandomArbitary
(
0
,
colMax
);
var
c2
=
getRandomArbitary
(
0
,
colMax
);
var
bbox
=
new
Asc
.
Range
(
c1
,
c2
,
r1
,
r2
,
true
);
var
name
=
bbox
.
getName
();
if
(
!
standard
[
name
])
{
var
data
=
{
bbox
:
bbox
,
id
:
i
};
standard
[
name
]
=
data
;
tree
.
add
(
bbox
,
data
);
var
res
=
test
(
rowMax
,
colMax
,
tree
,
standard
);
count
+=
res
?
0
:
1
;
}
}
strictEqual
(
count
,
0
,
"
RangeTree missmatch
"
);
count
=
0
;
for
(
var
i
in
standard
){
var
data
=
standard
[
i
];
delete
standard
[
i
];
tree
.
remove
(
data
.
bbox
,
data
);
var
res
=
test
(
rowMax
,
colMax
,
tree
,
standard
);
count
+=
res
?
0
:
1
;
}
strictEqual
(
count
,
0
,
"
RangeTree no empty
"
);
});
test
(
"
DependencyGraph.startListeningRange
"
,
function
test_HandlersList
()
{
function
getRandomArbitary
(
min
,
max
)
{
return
Math
.
round
(
Math
.
random
()
*
(
max
-
min
)
+
min
);
}
var
bboxCount
=
100
;
var
colMax
=
100
;
var
rowMax
=
100
;
var
sheetId
=
0
;
var
graph
=
new
AscCommonExcel
.
DependencyGraph
(
null
);
var
standard
=
{};
for
(
var
i
=
0
;
i
<
bboxCount
;
++
i
){
var
r1
=
getRandomArbitary
(
0
,
rowMax
);
var
r2
=
getRandomArbitary
(
0
,
rowMax
);
var
c1
=
getRandomArbitary
(
0
,
colMax
);
var
c2
=
getRandomArbitary
(
0
,
colMax
);
var
bbox
=
new
Asc
.
Range
(
c1
,
c2
,
r1
,
r2
,
true
);
var
listener
=
{
bbox
:
bbox
,
getListenerId
:
function
(){
return
i
;}};
standard
[
listener
.
getListenerId
()]
=
listener
;
graph
.
startListeningRange
(
sheetId
,
bbox
,
listener
);
}
for
(
var
i
in
standard
){
var
data
=
standard
[
i
];
delete
standard
[
i
];
graph
.
endListeningRange
(
sheetId
,
data
.
bbox
,
data
);
}
var
res
=
""
;
var
sheetContainer
=
graph
.
sheetListeners
[
sheetId
];
for
(
var
i
in
sheetContainer
.
cellMap
){
res
+=
i
;
}
for
(
var
i
in
sheetContainer
.
areaMap
){
res
+=
i
;
}
strictEqual
(
res
,
""
,
"
DependencyGraph no empty
"
);
});
});
cell/api.js
View file @
5da40db3
...
...
@@ -1904,7 +1904,7 @@ var editor;
if
(
1
===
d
)
{
where
-=
1
;
}
History
.
Create_NewPoint
();
this
.
wb
.
replaceWorksheet
(
i
,
where
);
this
.
wbModel
.
replaceWorksheet
(
i
,
where
);
...
...
cell/model/FormulaObjects/parserFormula.js
View file @
5da40db3
...
...
@@ -1216,13 +1216,17 @@ cArea3D.prototype.getRange = function () {
return
(
null
==
_val
[
0
])
?
new
cEmpty
()
:
_val
[
0
];
};
cArea3D
.
prototype
.
changeSheet
=
function
(
lastName
,
newName
)
{
if
(
this
.
wsFrom
===
this
.
_wb
.
getWorksheetByName
(
lastName
).
getId
()
&&
this
.
wsTo
===
this
.
_wb
.
getWorksheetByName
(
lastName
).
getId
())
{
this
.
wsFrom
=
this
.
wsTo
=
this
.
_wb
.
getWorksheetByName
(
newName
).
getId
();
}
else
if
(
this
.
wsFrom
===
this
.
_wb
.
getWorksheetByName
(
lastName
).
getId
())
{
this
.
wsFrom
=
this
.
_wb
.
getWorksheetByName
(
newName
).
getId
();
}
else
if
(
this
.
wsTo
===
this
.
_wb
.
getWorksheetByName
(
lastName
).
getId
())
{
this
.
wsTo
=
this
.
_wb
.
getWorksheetByName
(
newName
).
getId
();
var
wsLast
=
this
.
_wb
.
getWorksheetByName
(
lastName
);
var
wsNew
=
this
.
_wb
.
getWorksheetByName
(
newName
);
if
(
wsLast
&&
wsNew
){
var
sheetIdLast
=
wsLast
.
getId
();
var
sheetIdNew
=
wsNew
.
getId
();
if
(
this
.
wsFrom
===
sheetIdLast
){
this
.
wsFrom
=
sheetIdNew
;
}
if
(
this
.
wsTo
===
sheetIdLast
){
this
.
wsTo
=
sheetIdNew
;
}
}
};
cArea3D
.
prototype
.
toString
=
function
()
{
...
...
@@ -3766,6 +3770,7 @@ function parserFormula( formula, parent, _ws ) {
AscCommon
.
c_oNotifyType
.
Delete
===
data
.
type
)
{
this
.
shiftCells
(
data
.
type
,
data
.
sheetId
,
data
.
bbox
,
data
.
offset
);
eventData
.
assembleType
=
AscCommon
.
c_oNotifyParentAssemble
.
Flag
;
eventData
.
isRebuild
=
false
;
}
else
if
(
AscCommon
.
c_oNotifyType
.
ChangeDefName
===
data
.
type
)
{
if
(
data
.
from
.
Name
!=
data
.
to
.
Name
)
{
this
.
changeDefName
(
data
.
from
,
data
.
to
);
...
...
@@ -3777,16 +3782,28 @@ function parserFormula( formula, parent, _ws ) {
eventData
.
assembleType
=
AscCommon
.
c_oNotifyParentAssemble
.
Normal
;
eventData
.
isRebuild
=
true
;
}
else
if
(
AscCommon
.
c_oNotifyType
.
ChangeSheet
===
data
.
type
)
{
eventData
.
assembleType
=
AscCommon
.
c_oNotifyParentAssemble
.
Current
;
if
(
this
.
is3D
)
{
var
changeData
=
data
.
data
;
if
(
changeData
.
insert
)
{
this
.
insertSheet
(
changeData
.
insert
);
}
else
if
(
changeData
.
replace
)
{
this
.
moveSheet
(
changeData
.
replace
);
eventData
.
isRebuild
=
this
.
insertSheet
(
changeData
.
insert
);
}
else
if
(
changeData
.
replace
||
changeData
.
remove
)
{
eventData
.
isRebuild
=
true
;
var
moveSheetRes
=
0
;
if
(
changeData
.
replace
)
{
moveSheetRes
=
this
.
moveSheet
(
changeData
.
replace
);
}
else
{
moveSheetRes
=
this
.
removeSheet
(
changeData
.
remove
);
}
if
(
2
===
moveSheetRes
)
{
eventData
.
assembleType
=
AscCommon
.
c_oNotifyParentAssemble
.
Normal
;
}
else
if
(
1
!==
moveSheetRes
)
{
eventData
.
isRebuild
=
false
;
}
}
else
if
(
changeData
.
rename
)
{
this
.
renameSheet
(
changeData
.
rename
.
from
,
changeData
.
rename
.
to
);
}
else
if
(
changeData
.
remove
)
{
this
.
removeSheet
(
changeData
.
remove
)
;
eventData
.
assembleType
=
AscCommon
.
c_oNotifyParentAssemble
.
Normal
;
eventData
.
isRebuild
=
false
;
}
}
}
...
...
@@ -4940,20 +4957,17 @@ parserFormula.prototype.getRef = function() {
};
parserFormula
.
prototype
.
renameSheet
=
function
(
lastName
,
newName
)
{
for
(
var
i
=
0
;
i
<
this
.
outStack
.
length
;
i
++
)
{
if
(
cElementType
.
cell3D
==
this
.
outStack
[
i
].
type
)
{
this
.
outStack
[
i
].
changeSheet
(
lastName
,
newName
);
}
if
(
cElementType
.
cellsRange3D
==
this
.
outStack
[
i
].
type
)
{
this
.
outStack
[
i
].
changeSheet
(
lastName
,
newName
);
var
elem
=
this
.
outStack
[
i
];
if
(
cElementType
.
cell3D
===
elem
.
type
||
cElementType
.
cellsRange3D
===
elem
.
type
)
{
elem
.
changeSheet
(
lastName
,
newName
);
}
}
this
.
Formula
=
this
.
assemble
();
return
this
;
};
parserFormula
.
prototype
.
removeSheet
=
function
(
sheetId
)
{
var
nRes
=
0
;
var
ws
=
this
.
wb
.
getWorksheetById
(
sheetId
);
if
(
ws
)
{
var
isChanged
=
false
;
var
wsIndex
=
ws
.
getIndex
();
var
wsPrev
=
null
;
if
(
wsIndex
>
0
)
{
...
...
@@ -4965,29 +4979,38 @@ parserFormula.prototype.getRef = function() {
}
for
(
var
i
=
0
;
i
<
this
.
outStack
.
length
;
i
++
)
{
var
elem
=
this
.
outStack
[
i
];
if
(
elem
instanceof
cArea3D
)
{
if
(
cElementType
.
cellsRange3D
===
elem
.
type
)
{
var
wsTo
=
this
.
wb
.
getWorksheetById
(
elem
.
wsTo
);
var
wsToIndex
=
wsTo
.
getIndex
();
var
wsFrom
=
this
.
wb
.
getWorksheetById
(
elem
.
wsFrom
);
var
wsFromIndex
=
wsFrom
.
getIndex
();
if
(
wsFromIndex
<=
wsIndex
&&
wsIndex
<=
wsToIndex
&&
0
==
nRes
)
{
nRes
=
1
;
}
if
(
elem
.
wsFrom
==
sheetId
)
{
if
(
elem
.
wsTo
!=
sheetId
&&
null
!=
wsNext
)
{
this
.
outStack
[
i
].
changeSheet
(
ws
.
getName
(),
wsNext
.
getName
());
elem
.
changeSheet
(
ws
.
getName
(),
wsNext
.
getName
());
}
else
{
this
.
outStack
[
i
]
=
new
cError
(
cErrorType
.
bad_reference
);
}
nRes
=
2
;
}
else
if
(
elem
.
wsTo
==
sheetId
)
{
if
(
null
!=
wsPrev
)
{
elem
.
changeSheet
(
ws
.
getName
(),
wsPrev
.
getName
());
}
else
{
this
.
outStack
[
i
]
=
new
cError
(
cErrorType
.
bad_reference
);
}
isChanged
=
true
;
}
else
if
(
elem
.
wsTo
==
sheetId
&&
null
!=
wsPrev
)
{
this
.
outStack
[
i
].
changeSheet
(
ws
.
getName
(),
wsPrev
.
getName
());
isChanged
=
true
;
nRes
=
2
;
}
}
else
if
(
elem
instanceof
cRef3D
)
{
}
else
if
(
cElementType
.
cell3D
===
elem
.
type
)
{
if
(
elem
.
ws
.
getId
()
==
sheetId
)
{
this
.
outStack
[
i
]
=
new
cError
(
cErrorType
.
bad_reference
);
isChanged
=
true
;
nRes
=
2
;
}
}
}
if
(
isChanged
){
this
.
Formula
=
this
.
assemble
();
}
}
return
nRes
;
};
parserFormula
.
prototype
.
insertSheet
=
function
(
index
)
{
var
bRes
=
false
;
...
...
@@ -5000,18 +5023,17 @@ parserFormula.prototype.getRef = function() {
var
wsFromIndex
=
wsFrom
.
getIndex
();
if
(
wsFromIndex
<=
index
&&
index
<=
wsToIndex
)
{
bRes
=
true
;
break
;
}
}
}
if
(
bRes
)
{
this
.
Formula
=
null
;
}
return
bRes
;
};
parserFormula
.
prototype
.
moveSheet
=
function
(
tempW
)
{
var
nRes
=
0
;
for
(
var
i
=
0
;
i
<
this
.
outStack
.
length
;
i
++
)
{
var
elem
=
this
.
outStack
[
i
];
if
(
elem
instanceof
cArea3D
)
{
if
(
cElementType
.
cellsRange3D
==
elem
.
type
)
{
var
wsTo
=
this
.
wb
.
getWorksheetById
(
elem
.
wsTo
);
var
wsToIndex
=
wsTo
.
getIndex
();
var
wsFrom
=
this
.
wb
.
getWorksheetById
(
elem
.
wsFrom
);
...
...
@@ -5019,35 +5041,32 @@ parserFormula.prototype.getRef = function() {
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
);
if
(
elem
.
wsFrom
!==
elem
.
wsTo
)
{
if
(
elem
.
wsFrom
==
tempW
.
wFId
)
{
if
(
tempW
.
wTI
>
wsToIndex
)
{
nRes
=
2
;
var
wsNext
=
this
.
wb
.
getWorksheet
(
wsFromIndex
+
1
);
if
(
wsNext
)
{
elem
.
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
);
}
else
if
(
elem
.
wsTo
==
tempW
.
wFId
)
{
if
(
tempW
.
wTI
<=
wsFromIndex
)
{
nRes
=
2
;
var
wsPrev
=
this
.
wb
.
getWorksheet
(
wsToIndex
-
1
)
;
if
(
wsPrev
)
{
elem
.
changeSheet
(
tempW
.
wFN
,
wsPrev
.
getName
());
}
else
{
this
.
outStack
[
i
]
=
new
cError
(
cErrorType
.
bad_reference
);
}
}
}
}
}
}
if
(
2
==
nRes
){
this
.
Formula
=
this
.
assemble
();
}
else
if
(
1
==
nRes
){
//todo
this
.
Formula
=
null
;
}
return
nRes
;
};
/* Сборка функции в инфиксную форму */
...
...
cell/model/Workbook.js
View file @
5da40db3
...
...
@@ -465,7 +465,7 @@ function getRangeType(oBBox){
}
},
//defined name
getDefNameByName
:
function
(
name
,
sheetId
)
{
getDefNameByName
:
function
(
name
,
sheetId
,
opt_exact
)
{
var
res
=
null
;
var
nameIndex
=
getDefNameIndex
(
name
);
if
(
sheetId
)
{
...
...
@@ -474,14 +474,14 @@ function getRangeType(oBBox){
res
=
sheetContainer
[
nameIndex
];
}
}
if
(
!
res
)
{
if
(
!
res
&&
!
(
opt_exact
&&
sheetId
)
)
{
res
=
this
.
defNames
.
wb
[
nameIndex
];
}
return
res
;
},
getDefNameByNodeId
:
function
(
nodeId
)
{
getFromDefNameId
(
nodeId
);
return
this
.
getDefNameByName
(
g_FDNI
.
name
,
g_FDNI
.
sheetId
);
return
this
.
getDefNameByName
(
g_FDNI
.
name
,
g_FDNI
.
sheetId
,
true
);
},
getDefNameByRef
:
function
(
ref
,
sheetId
)
{
var
getByRef
=
function
(
defName
)
{
...
...
@@ -601,7 +601,7 @@ function getRangeType(oBBox){
}
var
sheetId
=
this
.
wb
.
getSheetIdByIndex
(
sheetIndex
);
var
defName
=
this
.
getDefNameByName
(
name
,
sheetId
);
var
defName
=
this
.
getDefNameByName
(
name
,
sheetId
,
true
);
if
(
defName
)
{
defName
=
defName
.
getAscCDefName
();
res
.
status
=
false
;
...
...
@@ -624,18 +624,18 @@ function getRangeType(oBBox){
},
copyDefNameByWorksheet
:
function
(
wsFrom
,
wsTo
)
{
var
sheetContainerFrom
=
this
.
defNames
.
sheet
[
wsFrom
.
getId
()];
if
(
sheetContainerFrom
){
var
sheetContainerTo
=
this
.
defNames
.
sheet
[
wsTo
.
getId
()];
if
(
sheetContainerFrom
)
{
var
nameFrom
=
wsFrom
.
getName
();
var
nameTo
=
wsFrom
.
getName
();
var
notifyData
=
{
type
:
AscCommon
.
c_oNotifyType
.
ChangeSheet
,
data
:
{
rename
:
{
from
:
nameFrom
,
to
:
nameTo
}}};
for
(
var
name
in
sheetContainerFrom
){
var
nameTo
=
wsTo
.
getName
();
for
(
var
name
in
sheetContainerFrom
)
{
var
defNameOld
=
sheetContainerFrom
[
name
];
var
defNameNew
=
defNameOld
.
clone
();
if
(
defNameNew
.
parsedRef
){
defNameNew
.
parsedRef
.
notify
(
notifyData
);
if
(
!
defNameOld
.
isTable
&&
defNameOld
.
parsedRef
)
{
var
parsedRefNew
=
defNameOld
.
parsedRef
.
clone
();
parsedRefNew
.
renameSheet
(
nameFrom
,
nameTo
);
var
refNew
=
parsedRefNew
.
assemble
();
var
defNameNew
=
new
DefName
(
this
.
wb
,
defNameOld
.
name
,
refNew
,
wsTo
.
getId
(),
defNameOld
.
hidden
,
defNameOld
.
isTable
);
this
.
_addDefName
(
defNameNew
);
}
sheetContainerTo
[
name
]
=
defNameNew
;
}
}
},
...
...
@@ -804,8 +804,7 @@ function getRangeType(oBBox){
}
}
for
(
var
defNameId
in
this
.
buildDefName
)
{
getFromDefNameId
(
defNameId
);
var
defName
=
this
.
getDefNameByName
(
g_FDNI
.
name
,
g_FDNI
.
sheetId
);
var
defName
=
this
.
getDefNameByNodeId
(
defNameId
);
if
(
defName
&&
defName
.
parsedRef
)
{
defName
.
parsedRef
.
parse
();
defName
.
parsedRef
.
buildDependencies
();
...
...
@@ -975,12 +974,12 @@ function getRangeType(oBBox){
var
changedDefName
=
this
.
changedDefName
;
this
.
changedDefName
=
null
;
for
(
var
nodeId
in
changedDefName
)
{
getFromDefNameId
(
nodeId
);
var
defName
=
this
.
getDefNameByName
(
g_FDNI
.
name
,
g_FDNI
.
sheetId
);
var
defName
=
this
.
getDefNameByNodeId
(
nodeId
);
if
(
defName
&&
defName
.
parsedRef
)
{
defName
.
parsedRef
.
setIsDirty
(
true
);
calcTrack
.
push
(
defName
.
parsedRef
);
}
getFromDefNameId
(
nodeId
);
this
.
_broadcastDefName
(
g_FDNI
.
name
,
notifyData
);
}
}
...
...
@@ -1457,35 +1456,26 @@ Workbook.prototype._insertTablePartsName = function (sheet) {
}
};
Workbook
.
prototype
.
_insertWorksheetFormula
=
function
(
index
){
if
(
index
>
0
&&
index
<
this
.
aWorksheets
.
length
){
var
oWs
To
=
this
.
aWorksheets
[
index
-
1
];
this
.
dependencyFormulas
.
changeSheet
(
oWs
To
.
getId
(),
{
insert
:
index
});
if
(
index
>
0
&&
index
<
this
.
aWorksheets
.
length
)
{
var
oWs
Before
=
this
.
aWorksheets
[
index
-
1
];
this
.
dependencyFormulas
.
changeSheet
(
oWs
Before
.
getId
(),
{
insert
:
index
});
}
};
Workbook
.
prototype
.
replaceWorksheet
=
function
(
indexFrom
,
indexTo
){
if
(
indexFrom
>=
0
&&
indexFrom
<
this
.
aWorksheets
.
length
&&
indexTo
>=
0
&&
indexTo
<
this
.
aWorksheets
.
length
){
History
.
Create_NewPoint
();
History
.
TurnOff
();
var
wsActive
=
this
.
getActiveWs
();
var
oWsFrom
=
this
.
aWorksheets
[
indexFrom
];
var
oWsTo
=
this
.
aWorksheets
[
indexTo
];
var
tempW
=
{
wFN
:
oWsFrom
.
getName
(),
wFI
:
indexFrom
,
wFId
:
oWsFrom
.
getId
(),
wTN
:
oWsTo
.
getName
(),
wTI
:
indexTo
,
wTId
:
oWsTo
.
getId
()
wTI
:
indexTo
};
//
переводим обратно в индекс sheet перед которым надо вставить
//
wTI index insert before
if
(
tempW
.
wFI
<
tempW
.
wTI
)
tempW
.
wTI
++
;
/*
Формулы:
перестройка графа для трехмерных формул вида Sheet1:Sheet3!A1:A3, Sheet1:Sheet3!A1.
пересчет трехмерных формул, перестройка формул при изменении положения листа: Sheet1, Sheet2, Sheet3, Sheet4 - Sheet1:Sheet4!A1 -> Sheet4, Sheet1, Sheet2, Sheet3 - Sheet1:Sheet3!A1;
*/
this
.
dependencyFormulas
.
lockRecal
();
this
.
dependencyFormulas
.
changeSheet
(
tempW
.
wFId
,
{
replace
:
tempW
});
History
.
TurnOn
();
...
...
@@ -1493,7 +1483,7 @@ Workbook.prototype.replaceWorksheet=function(indexFrom, indexTo){
this
.
aWorksheets
.
splice
(
indexTo
,
0
,
movedSheet
[
0
]);
this
.
_updateWorksheetIndexes
(
wsActive
);
this
.
_insertWorksheetFormula
(
tempW
.
wTI
);
this
.
_insertWorksheetFormula
(
indexTo
);
History
.
Add
(
AscCommonExcel
.
g_oUndoRedoWorkbook
,
AscCH
.
historyitem_Workbook_SheetMove
,
null
,
null
,
new
UndoRedoData_FromTo
(
indexFrom
,
indexTo
),
true
);
this
.
dependencyFormulas
.
unlockRecal
();
...
...
@@ -1542,7 +1532,7 @@ Workbook.prototype.removeWorksheet=function(nIndex, outputParams){
History
.
Create_NewPoint
();
var
removedSheetId
=
removedSheet
.
getId
();
this
.
dependencyFormulas
.
lockRecal
();
this
.
dependencyFormulas
.
changeSheet
(
removedSheetId
,
{
remove
:
removedSheet
.
getName
()
});
this
.
dependencyFormulas
.
changeSheet
(
removedSheetId
,
{
remove
:
removedSheet
Id
});
var
wsActive
=
this
.
getActiveWs
();
var
oVisibleWs
=
null
;
...
...
@@ -1697,46 +1687,6 @@ Workbook.prototype.unlockDefName = function(){
Workbook
.
prototype
.
checkDefNameLock
=
function
(){
return
this
.
dependencyFormulas
.
checkDefNameLock
();
};
Workbook
.
prototype
.
getUniqueDefinedNameFrom
=
function
(
name
,
bCopy
){
var
nIndex
=
1
,
dnNewName
=
""
,
fGetPostfix
=
null
,
name
=
name
.
Name
,
sheetId
=
name
.
sheetId
;
if
(
bCopy
)
{
var
result
=
/^
(
.*
)(\d)
$/
.
exec
(
name
);
if
(
result
)
{
fGetPostfix
=
function
(
nIndex
){
return
""
+
nIndex
;};
name
=
result
[
1
];
}
else
{
fGetPostfix
=
function
(
nIndex
){
return
"
_
"
+
nIndex
;};
name
=
name
;
}
}
else
{
fGetPostfix
=
function
(
nIndex
){
return
nIndex
.
toString
();};
}
while
(
nIndex
<
10000
)
{
var
sPosfix
=
fGetPostfix
(
nIndex
);
dnNewName
=
name
+
sPosfix
;
var
bUniqueName
=
false
;
if
(
!
this
.
getDefNameByName
(
dnNewName
,
sheetId
)){
bUniqueName
=
true
;
break
;
}
if
(
bUniqueName
)
break
;
nIndex
++
;
}
return
dnNewName
;
};
Workbook
.
prototype
.
_SerializeHistoryBase64
=
function
(
oMemory
,
item
,
aPointChangesBase64
)
{
if
(
!
item
.
LocalChange
)
{
var
nPosStart
=
oMemory
.
GetCurPosition
();
...
...
@@ -2623,9 +2573,9 @@ Woorksheet.prototype.setName=function(name, bFromUndoRedo){
var
lastName
=
this
.
sName
;
this
.
sName
=
name
;
History
.
Create_NewPoint
();
History
.
Add
(
AscCommonExcel
.
g_oUndoRedoWorksheet
,
AscCH
.
historyitem_Worksheet_Rename
,
this
.
getId
(),
null
,
new
UndoRedoData_FromTo
(
lastName
,
name
));
this
.
workbook
.
dependencyFormulas
.
changeSheet
(
this
.
getId
(),
{
rename
:
{
from
:
lastName
,
to
:
name
}});
History
.
Add
(
AscCommonExcel
.
g_oUndoRedoWorksheet
,
AscCH
.
historyitem_Worksheet_Rename
,
this
.
getId
(),
null
,
new
UndoRedoData_FromTo
(
lastName
,
name
));
if
(
!
bFromUndoRedo
)
{
var
_lastName
=
parserHelp
.
getEscapeSheetName
(
lastName
);
...
...
@@ -8737,6 +8687,8 @@ DrawingObjectsManager.prototype.rebuildCharts = function(data)
window
[
'
AscCommonExcel
'
].
Woorksheet
=
Woorksheet
;
window
[
'
AscCommonExcel
'
].
Cell
=
Cell
;
window
[
'
AscCommonExcel
'
].
Range
=
Range
;
window
[
'
AscCommonExcel
'
].
RangeTree
=
RangeTree
;
window
[
'
AscCommonExcel
'
].
DependencyGraph
=
DependencyGraph
;
window
[
'
AscCommonExcel
'
].
preparePromoteFromTo
=
preparePromoteFromTo
;
window
[
'
AscCommonExcel
'
].
promoteFromTo
=
promoteFromTo
;
})(
window
);
cell/view/WorkbookView.js
View file @
5da40db3
...
...
@@ -2296,7 +2296,7 @@
var
defNameId
;
if
(
oldName
)
{
defNameId
=
t
.
model
.
getDefinedName
(
oldName
);
defNameId
=
defNameId
?
defNameId
.
nodeId
:
null
;
defNameId
=
defNameId
?
defNameId
.
getNodeId
()
:
null
;
}
var
callback
=
function
()
{
...
...
@@ -2341,7 +2341,7 @@
}
t
.
_onSelectionNameChanged
(
ws
.
getSelectionName
(
/*bRangeText*/
false
));
};
var
defNameId
=
t
.
model
.
getDefinedName
(
oldName
).
nodeId
;
var
defNameId
=
t
.
model
.
getDefinedName
(
oldName
).
getNodeId
()
;
ws
.
_isLockedDefNames
(
delDefinedNamesCallback
,
defNameId
);
...
...
cell/view/WorksheetView.js
View file @
5da40db3
...
...
@@ -11177,7 +11177,7 @@
if
(
defName
)
{
range
=
true
;
this
.
_isLockedDefNames
(
null
,
defName
.
nodeId
);
this
.
_isLockedDefNames
(
null
,
defName
.
getNodeId
()
);
if
(
defName
.
isTable
)
{
sheetName
=
defName
.
Ref
.
split
(
"
!
"
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment