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
aebbb827
Commit
aebbb827
authored
Jul 06, 2016
by
GoshaZotov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
changes for paste into cell editor
parent
aa9b1036
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
494 additions
and
407 deletions
+494
-407
cell/model/clipboard.js
cell/model/clipboard.js
+325
-283
cell/view/WorksheetView.js
cell/view/WorksheetView.js
+169
-124
No files found.
cell/model/clipboard.js
View file @
aebbb827
...
@@ -45,7 +45,7 @@
...
@@ -45,7 +45,7 @@
*/
*/
var
g_fontApplication
=
AscFonts
.
g_fontApplication
;
var
g_fontApplication
=
AscFonts
.
g_fontApplication
;
var
c_oAscBorderStyles
=
AscCommon
.
c_oAscBorderStyles
;
var
c_oAscBorderStyles
=
AscCommon
.
c_oAscBorderStyles
;
var
c_oAscMaxCellOrCommentLength
=
Asc
Common
.
c_oAscMaxCellOrCommentLength
;
var
c_oAscMaxCellOrCommentLength
=
Asc
.
c_oAscMaxCellOrCommentLength
;
var
doc
=
window
.
document
;
var
doc
=
window
.
document
;
var
copyPasteUseBinary
=
true
;
var
copyPasteUseBinary
=
true
;
var
CopyPasteCorrectString
=
AscCommon
.
CopyPasteCorrectString
;
var
CopyPasteCorrectString
=
AscCommon
.
CopyPasteCorrectString
;
...
@@ -1242,7 +1242,7 @@
...
@@ -1242,7 +1242,7 @@
if
(
node
==
undefined
)
if
(
node
==
undefined
)
return
;
return
;
var
aResult
,
binaryResult
,
pasteFragment
=
node
,
t
=
this
,
localStorageResult
;
var
binaryResult
,
pasteFragment
=
node
,
t
=
this
,
localStorageResult
;
t
.
alreadyLoadImagesOnServer
=
false
;
t
.
alreadyLoadImagesOnServer
=
false
;
//****binary****
//****binary****
...
@@ -1493,10 +1493,10 @@
...
@@ -1493,10 +1493,10 @@
var
result
=
false
;
var
result
=
false
;
var
isChange
=
false
;
var
isChange
=
false
;
var
currentCellData
=
aResult
[
r
][
c
];
var
currentCellData
=
aResult
.
content
[
r
][
c
];
if
(
currentCellData
&&
currentCellData
[
0
]
)
if
(
currentCellData
&&
currentCellData
.
content
)
{
{
currentCellData
=
currentCellData
[
0
]
;
currentCellData
=
currentCellData
.
content
;
for
(
var
i
=
0
;
i
<
currentCellData
.
length
;
i
++
)
for
(
var
i
=
0
;
i
<
currentCellData
.
length
;
i
++
)
{
{
if
(
currentCellData
[
i
]
&&
currentCellData
[
i
].
text
&&
currentCellData
[
i
].
text
.
length
>
c_oAscMaxCellOrCommentLength
)
if
(
currentCellData
[
i
]
&&
currentCellData
[
i
].
text
&&
currentCellData
[
i
].
text
.
length
>
c_oAscMaxCellOrCommentLength
)
...
@@ -1510,15 +1510,15 @@
...
@@ -1510,15 +1510,15 @@
for
(
var
j
=
0
;
j
<
iterCount
;
j
++
)
for
(
var
j
=
0
;
j
<
iterCount
;
j
++
)
{
{
splitText
=
text
.
substr
(
c_oAscMaxCellOrCommentLength
*
j
,
c_oAscMaxCellOrCommentLength
*
(
j
+
1
));
splitText
=
text
.
substr
(
c_oAscMaxCellOrCommentLength
*
j
,
c_oAscMaxCellOrCommentLength
*
(
j
+
1
));
if
(
!
aResult
[
r
])
if
(
!
aResult
.
content
[
r
])
aResult
[
r
]
=
[];
aResult
.
content
[
r
]
=
[];
if
(
!
aResult
[
r
][
c
])
if
(
!
aResult
.
content
[
r
][
c
])
aResult
[
r
][
c
]
=
[];
aResult
.
content
[
r
][
c
]
=
[];
if
(
!
aResult
[
r
][
c
][
0
]
)
if
(
!
aResult
.
content
[
r
][
c
].
content
)
aResult
[
r
][
c
][
0
]
=
[];
aResult
.
content
[
r
][
c
].
content
=
[];
aResult
[
r
][
c
][
0
]
=
currentCellData
;
aResult
.
content
[
r
][
c
].
content
[
0
]
=
currentCellData
[
0
]
;
aResult
[
r
][
c
][
0
]
[
0
].
text
=
splitText
;
aResult
.
content
[
r
][
c
].
content
[
0
].
text
=
splitText
;
if
(
iterCount
!==
j
+
1
)
if
(
iterCount
!==
j
+
1
)
r
++
;
r
++
;
...
@@ -1574,7 +1574,7 @@
...
@@ -1574,7 +1574,7 @@
History
.
StartTransaction
();
History
.
StartTransaction
();
var
api
=
window
[
"
Asc
"
][
"
editor
"
];
var
api
=
window
[
"
Asc
"
][
"
editor
"
];
var
addImagesFromWord
=
data
.
addImagesFromWord
;
var
addImagesFromWord
=
data
.
props
.
addImagesFromWord
;
//определяем стартовую позицию, если изображений несколько вставляется
//определяем стартовую позицию, если изображений несколько вставляется
for
(
var
i
=
0
;
i
<
addImagesFromWord
.
length
;
i
++
)
for
(
var
i
=
0
;
i
<
addImagesFromWord
.
length
;
i
++
)
{
{
...
@@ -1961,19 +1961,8 @@
...
@@ -1961,19 +1961,8 @@
return
;
return
;
}
}
var
aResult
=
[];
var
aResult
=
new
excelPasteContent
();
aResult
[
this
.
activeRange
.
r1
]
=
[];
aResult
=
aResult
.
getDefaultPasteContent
(
worksheet
,
this
.
activeRange
.
r1
,
this
.
activeRange
.
c1
,
text
);
var
oNewItem
=
[];
oNewItem
[
0
]
=
this
.
_getDefaultCell
(
worksheet
);
aResult
[
this
.
activeRange
.
r1
][
this
.
activeRange
.
c1
]
=
oNewItem
;
oNewItem
[
0
][
0
].
text
=
text
;
aResult
.
fontsNew
=
[];
aResult
.
rowSpanSpCount
=
0
;
aResult
.
cellCount
=
1
;
aResult
.
_images
=
undefined
;
aResult
.
_aPastedImages
=
undefined
;
if
(
aResult
&&
!
(
aResult
.
onlyImages
&&
window
[
"
Asc
"
][
"
editor
"
]
&&
window
[
"
Asc
"
][
"
editor
"
].
isChartEditor
))
if
(
aResult
&&
!
(
aResult
.
onlyImages
&&
window
[
"
Asc
"
][
"
editor
"
]
&&
window
[
"
Asc
"
][
"
editor
"
].
isChartEditor
))
{
{
...
@@ -1981,28 +1970,6 @@
...
@@ -1981,28 +1970,6 @@
}
}
},
},
_getDefaultCell
:
function
(
worksheet
)
{
var
res
=
[];
var
fn
=
worksheet
.
model
.
workbook
.
getDefaultFont
();
var
fs
=
worksheet
.
model
.
workbook
.
getDefaultSize
();
res
.
push
({
format
:
{
fn
:
fn
,
fs
:
fs
,
b
:
false
,
i
:
false
,
u
:
Asc
.
EUnderline
.
underlineNone
,
s
:
false
,
va
:
'
none
'
},
text
:
''
});
return
res
;
},
_getTextFromWorksheet
:
function
(
worksheet
)
_getTextFromWorksheet
:
function
(
worksheet
)
{
{
var
res
=
""
;
var
res
=
""
;
...
@@ -2095,11 +2062,137 @@
...
@@ -2095,11 +2062,137 @@
};
};
/** @constructor */
function
excelPasteContent
()
{
this
.
content
=
[];
this
.
props
=
{};
return
this
;
}
excelPasteContent
.
prototype
=
{
constructor
:
excelPasteContent
,
getDefaultPasteContent
:
function
(
worksheet
,
row
,
col
,
text
)
{
var
pasteCell
=
this
.
getCell
(
row
,
col
);
pasteCell
.
setDefaultCell
(
worksheet
);
pasteCell
.
content
[
0
].
text
=
text
;
this
.
props
.
fontsNew
=
[];
this
.
props
.
rowSpanSpCount
=
0
;
this
.
props
.
cellCount
=
1
;
this
.
props
.
_images
=
undefined
;
this
.
props
.
_aPastedImages
=
undefined
;
return
this
;
},
setCellContent
:
function
(
row
,
col
,
data
)
{
if
(
!
this
.
content
[
row
])
{
this
.
content
[
row
]
=
[];
}
if
(
!
this
.
content
[
row
][
col
])
{
this
.
content
[
row
][
col
]
=
[];
}
this
.
content
[
row
][
col
]
=
data
;
},
getCell
:
function
(
row
,
col
)
{
if
(
!
this
.
content
[
row
])
{
this
.
content
[
row
]
=
[];
}
if
(
!
this
.
content
[
row
][
col
])
{
this
.
content
[
row
][
col
]
=
new
pasteCell
();
}
return
this
.
content
[
row
][
col
];
},
deleteCell
:
function
(
row
,
col
)
{
delete
this
.
content
[
row
][
col
];
}
};
/** @constructor */
function
pasteCell
()
{
this
.
content
=
[];
this
.
rowSpan
=
null
;
this
.
colSpan
=
null
;
this
.
bc
=
null
;
this
.
borders
=
null
;
this
.
toolTip
=
null
;
this
.
hyperLink
=
null
;
return
this
;
}
pasteCell
.
prototype
=
{
constructor
:
pasteCell
,
addContentItem
:
function
(
item
)
{
this
.
content
.
push
(
item
);
},
clone
:
function
()
{
var
result
=
new
pasteCell
();
for
(
var
item
=
0
;
item
<
this
.
content
.
length
;
item
++
)
{
result
.
content
[
item
]
=
{
text
:
this
.
content
[
item
].
text
,
format
:
this
.
content
[
item
].
format
};
};
result
.
borders
=
this
.
borders
;
result
.
rowSpan
=
this
.
rowSpan
;
result
.
colSpan
=
this
.
colSpan
;
result
.
toolTip
=
this
.
toolTip
;
result
.
bc
=
this
.
bc
;
result
.
hyperLink
=
this
.
hyperLink
;
return
result
;
},
setDefaultCell
:
function
(
worksheet
)
{
var
fn
=
worksheet
.
model
.
workbook
.
getDefaultFont
();
var
fs
=
worksheet
.
model
.
workbook
.
getDefaultSize
();
this
.
content
.
push
({
format
:
{
fn
:
fn
,
fs
:
fs
,
b
:
false
,
i
:
false
,
u
:
Asc
.
EUnderline
.
underlineNone
,
s
:
false
,
va
:
'
none
'
},
text
:
''
});
}
};
/** @constructor */
/** @constructor */
function
pasteFromBinaryWord
(
clipboard
,
ws
)
{
function
pasteFromBinaryWord
(
clipboard
,
ws
)
{
this
.
aResult
=
new
excelPasteContent
();
this
.
fontsNew
=
{};
this
.
fontsNew
=
{};
this
.
aResult
=
[];
this
.
clipboard
=
clipboard
;
this
.
clipboard
=
clipboard
;
this
.
ws
=
ws
;
this
.
ws
=
ws
;
this
.
isUsuallyPutImages
=
null
;
this
.
isUsuallyPutImages
=
null
;
...
@@ -2126,18 +2219,18 @@
...
@@ -2126,18 +2219,18 @@
var
coverDocument
=
documentContentBounds
.
getBounds
(
0
,
0
,
documentContent
);
var
coverDocument
=
documentContentBounds
.
getBounds
(
0
,
0
,
documentContent
);
this
.
_parseChildren
(
coverDocument
,
activeRange
);
this
.
_parseChildren
(
coverDocument
,
activeRange
);
this
.
aResult
.
fontsNew
=
this
.
fontsNew
;
this
.
aResult
.
rowSpanSpCount
=
0
;
this
.
aResult
.
props
.
fontsNew
=
this
.
fontsNew
;
this
.
aResult
.
cellCount
=
coverDocument
.
width
;
this
.
aResult
.
props
.
rowSpanSpCount
=
0
;
this
.
aResult
.
_images
=
pasteData
.
images
?
pasteData
.
images
:
this
.
aResult
.
_images
;
this
.
aResult
.
props
.
cellCount
=
coverDocument
.
width
;
this
.
aResult
.
_aPastedImages
=
pasteData
.
aPastedImages
?
pasteData
.
aPastedImages
:
this
.
aResult
.
_aPastedImages
;
this
.
aResult
.
props
.
_images
=
pasteData
.
images
?
pasteData
.
images
:
this
.
aResult
.
props
.
_images
;
this
.
aResult
.
props
.
_aPastedImages
=
pasteData
.
aPastedImages
?
pasteData
.
aPastedImages
:
this
.
aResult
.
props
.
_aPastedImages
;
worksheet
.
setSelectionInfo
(
'
paste
'
,
this
.
aResult
,
this
);
worksheet
.
setSelectionInfo
(
'
paste
'
,
this
.
aResult
,
this
);
},
},
_parseChildren
:
function
(
children
,
activeRange
)
_parseChildren
:
function
(
children
,
activeRange
)
{
{
var
backgroundColor
;
var
childrens
=
children
.
children
;
var
childrens
=
children
.
children
;
for
(
var
i
=
0
;
i
<
childrens
.
length
;
i
++
)
for
(
var
i
=
0
;
i
<
childrens
.
length
;
i
++
)
{
{
...
@@ -2145,15 +2238,8 @@
...
@@ -2145,15 +2238,8 @@
{
{
for
(
var
row
=
childrens
[
i
].
top
;
row
<
childrens
[
i
].
top
+
childrens
[
i
].
height
;
row
++
)
for
(
var
row
=
childrens
[
i
].
top
;
row
<
childrens
[
i
].
top
+
childrens
[
i
].
height
;
row
++
)
{
{
if
(
!
this
.
aResult
[
row
+
activeRange
.
r1
])
this
.
aResult
[
row
+
activeRange
.
r1
]
=
[];
for
(
var
col
=
childrens
[
i
].
left
;
col
<
childrens
[
i
].
left
+
childrens
[
i
].
width
;
col
++
)
for
(
var
col
=
childrens
[
i
].
left
;
col
<
childrens
[
i
].
left
+
childrens
[
i
].
width
;
col
++
)
{
{
if
(
!
this
.
aResult
[
row
+
activeRange
.
r1
][
col
+
activeRange
.
c1
])
this
.
aResult
[
row
+
activeRange
.
r1
][
col
+
activeRange
.
c1
]
=
[];
if
(
!
this
.
aResult
[
row
+
activeRange
.
r1
][
col
+
activeRange
.
c1
][
0
])
this
.
aResult
[
row
+
activeRange
.
r1
][
col
+
activeRange
.
c1
][
0
]
=
[];
var
isCtable
=
false
;
var
isCtable
=
false
;
var
tempChildren
=
childrens
[
i
].
children
[
0
].
children
;
var
tempChildren
=
childrens
[
i
].
children
[
0
].
children
;
var
colSpan
=
null
;
var
colSpan
=
null
;
...
@@ -2174,15 +2260,20 @@
...
@@ -2174,15 +2260,20 @@
colSpan
=
childrens
[
i
].
width
;
colSpan
=
childrens
[
i
].
width
;
}
}
this
.
aResult
[
row
+
activeRange
.
r1
][
col
+
activeRange
.
c1
][
0
].
rowSpan
=
rowSpan
;
this
.
aResult
[
row
+
activeRange
.
r1
][
col
+
activeRange
.
c1
][
0
].
colSpan
=
colSpan
;
var
newCell
=
this
.
aResult
.
getCell
(
row
+
activeRange
.
r1
,
col
+
activeRange
.
c1
)
newCell
.
rowSpan
=
rowSpan
;
newCell
.
colSpan
=
colSpan
;
//backgroundColor
//backgroundColor
backgroundColor
=
this
.
getBackgroundColorTCell
(
childrens
[
i
]);
var
backgroundColor
=
this
.
getBackgroundColorTCell
(
childrens
[
i
]);
if
(
backgroundColor
)
if
(
backgroundColor
)
this
.
aResult
[
row
+
activeRange
.
r1
][
col
+
activeRange
.
c1
][
0
].
bc
=
backgroundColor
;
{
newCell
.
bc
=
backgroundColor
;
}
this
.
aResult
[
row
+
activeRange
.
r1
][
col
+
activeRange
.
c1
][
0
].
borders
=
this
.
_getBorders
(
childrens
[
i
],
row
,
col
,
this
.
aResult
[
row
+
activeRange
.
r1
][
col
+
activeRange
.
c1
][
0
].
borders
);
var
borders
=
this
.
_getBorders
(
childrens
[
i
],
row
,
col
,
newCell
.
borders
);
newCell
.
borders
=
borders
;
}
}
}
}
}
}
...
@@ -2200,67 +2291,18 @@
...
@@ -2200,67 +2291,18 @@
}
}
},
},
_getBorders
:
function
(
cellTable
,
top
,
left
,
oldBorders
)
{
var
borders
=
cellTable
.
elem
.
Get_Borders
();
var
widthCell
=
cellTable
.
width
;
var
heigthCell
=
cellTable
.
height
;
var
defaultStyle
=
"
solid
"
;
var
borderStyleName
;
var
formatBorders
=
oldBorders
?
oldBorders
:
new
AscCommonExcel
.
Border
();
//top border for cell
if
(
top
==
cellTable
.
top
&&
!
formatBorders
.
t
.
s
&&
borders
.
Top
.
Value
!==
0
/*border_None*/
)
{
borderStyleName
=
this
.
clipboard
.
_getBorderStyleName
(
defaultStyle
,
this
.
ws
.
objectRender
.
convertMetric
(
borders
.
Top
.
Size
,
3
,
1
));
if
(
null
!==
borderStyleName
)
{
formatBorders
.
t
.
setStyle
(
borderStyleName
);
formatBorders
.
t
.
c
=
new
AscCommonExcel
.
RgbColor
(
this
.
clipboard
.
_getBinaryColor
(
"
rgb(
"
+
borders
.
Top
.
Color
.
r
+
"
,
"
+
borders
.
Top
.
Color
.
g
+
"
,
"
+
borders
.
Top
.
Color
.
b
+
"
)
"
));
}
}
//left border for cell
if
(
left
==
cellTable
.
left
&&
!
formatBorders
.
l
.
s
&&
borders
.
Left
.
Value
!==
0
/*border_None*/
)
{
borderStyleName
=
this
.
clipboard
.
_getBorderStyleName
(
defaultStyle
,
this
.
ws
.
objectRender
.
convertMetric
(
borders
.
Left
.
Size
,
3
,
1
));
if
(
null
!==
borderStyleName
)
{
formatBorders
.
l
.
setStyle
(
borderStyleName
);
formatBorders
.
l
.
c
=
new
AscCommonExcel
.
RgbColor
(
this
.
clipboard
.
_getBinaryColor
(
"
rgb(
"
+
borders
.
Left
.
Color
.
r
+
"
,
"
+
borders
.
Left
.
Color
.
g
+
"
,
"
+
borders
.
Left
.
Color
.
b
+
"
)
"
));
}
}
//bottom border for cell
if
(
top
==
cellTable
.
top
+
heigthCell
-
1
&&
!
formatBorders
.
b
.
s
&&
borders
.
Bottom
.
Value
!==
0
/*border_None*/
)
{
borderStyleName
=
this
.
clipboard
.
_getBorderStyleName
(
defaultStyle
,
this
.
ws
.
objectRender
.
convertMetric
(
borders
.
Bottom
.
Size
,
3
,
1
));
if
(
null
!==
borderStyleName
)
{
formatBorders
.
b
.
setStyle
(
borderStyleName
);
formatBorders
.
b
.
c
=
new
AscCommonExcel
.
RgbColor
(
this
.
clipboard
.
_getBinaryColor
(
"
rgb(
"
+
borders
.
Bottom
.
Color
.
r
+
"
,
"
+
borders
.
Bottom
.
Color
.
g
+
"
,
"
+
borders
.
Bottom
.
Color
.
b
+
"
)
"
));
}
}
//right border for cell
if
(
left
==
cellTable
.
left
+
widthCell
-
1
&&
!
formatBorders
.
r
.
s
&&
borders
.
Right
.
Value
!==
0
/*border_None*/
)
{
borderStyleName
=
this
.
clipboard
.
_getBorderStyleName
(
defaultStyle
,
this
.
ws
.
objectRender
.
convertMetric
(
borders
.
Right
.
Size
,
3
,
1
));
if
(
null
!==
borderStyleName
)
{
formatBorders
.
r
.
setStyle
(
borderStyleName
);
formatBorders
.
r
.
c
=
new
AscCommonExcel
.
RgbColor
(
this
.
clipboard
.
_getBinaryColor
(
"
rgb(
"
+
borders
.
Right
.
Color
.
r
+
"
,
"
+
borders
.
Right
.
Color
.
g
+
"
,
"
+
borders
.
Right
.
Color
.
b
+
"
)
"
));
}
}
return
formatBorders
;
},
_parseParagraph
:
function
(
paragraph
,
activeRange
,
row
,
col
,
rowSpan
,
colSpan
)
_parseParagraph
:
function
(
paragraph
,
activeRange
,
row
,
col
,
rowSpan
,
colSpan
)
{
{
var
content
=
paragraph
.
elem
.
Content
;
var
content
=
paragraph
.
elem
.
Content
;
var
row
,
cTextPr
,
fontFamily
=
"
Arial
"
;
var
row
,
cTextPr
,
fontFamily
=
"
Arial
"
;
var
text
=
null
;
var
text
=
null
;
var
oNewItem
=
[]
,
cloneNewItem
;
var
oNewItem
=
new
pasteCell
()
,
cloneNewItem
;
var
paraRunContent
;
var
paraRunContent
;
var
aResult
=
this
.
aResult
;
var
aResult
=
this
.
aResult
;
if
(
row
===
undefined
)
if
(
row
===
undefined
)
{
{
if
(
aResult
.
length
==
0
)
if
(
aResult
.
content
.
length
==
0
)
{
{
row
=
activeRange
.
r1
;
row
=
activeRange
.
r1
;
}
}
...
@@ -2268,20 +2310,24 @@
...
@@ -2268,20 +2310,24 @@
row
=
aResult
.
length
;
row
=
aResult
.
length
;
}
}
if
(
this
.
aResult
[
row
+
this
.
maxLengthRowCount
]
&&
this
.
aResult
[
row
+
this
.
maxLengthRowCount
][
col
]
&&
this
.
aResult
[
row
+
this
.
maxLengthRowCount
][
col
][
0
]
&&
this
.
aResult
[
row
+
this
.
maxLengthRowCount
][
col
][
0
].
length
===
0
&&
(
this
.
aResult
[
row
+
this
.
maxLengthRowCount
][
col
][
0
].
borders
||
this
.
aResult
[
row
+
this
.
maxLengthRowCount
][
col
][
0
].
rowSpan
!=
null
))
var
cell
=
this
.
aResult
.
getCell
(
row
+
this
.
maxLengthRowCount
,
col
);
if
(
cell
&&
cell
.
length
===
0
&&
(
cell
.
borders
||
cell
.
rowSpan
!=
null
))
{
{
if
(
this
.
aResult
[
row
+
this
.
maxLengthRowCount
][
col
][
0
].
borders
)
if
(
cell
.
borders
)
oNewItem
.
borders
=
this
.
aResult
[
row
+
this
.
maxLengthRowCount
][
col
][
0
].
borders
;
{
if
(
this
.
aResult
[
row
+
this
.
maxLengthRowCount
][
col
][
0
].
rowSpan
!=
null
)
oNewItem
.
borders
=
cell
.
borders
;
}
if
(
cell
.
rowSpan
!=
null
)
{
{
oNewItem
.
rowSpan
=
this
.
aResult
[
row
+
this
.
maxLengthRowCount
][
col
][
0
]
.
rowSpan
;
oNewItem
.
rowSpan
=
cell
.
rowSpan
;
oNewItem
.
colSpan
=
this
.
aResult
[
row
+
this
.
maxLengthRowCount
][
col
][
0
]
.
colSpan
;
oNewItem
.
colSpan
=
cell
.
colSpan
;
}
}
delete
this
.
aResult
[
row
+
this
.
maxLengthRowCount
][
col
];
this
.
aResult
.
deleteCell
(
row
+
this
.
maxLengthRowCount
,
col
)
};
};
if
(
!
aResult
[
row
])
//
if(!aResult[row])
aResult
[
row
]
=
[];
//
aResult[row] = [];
var
s
=
0
;
var
s
=
0
;
var
c1
=
col
!==
undefined
?
col
:
activeRange
.
c1
;
var
c1
=
col
!==
undefined
?
col
:
activeRange
.
c1
;
...
@@ -2336,10 +2382,10 @@
...
@@ -2336,10 +2382,10 @@
fontFamily
=
formatText
.
format
.
fn
;
fontFamily
=
formatText
.
format
.
fn
;
this
.
fontsNew
[
fontFamily
]
=
1
;
this
.
fontsNew
[
fontFamily
]
=
1
;
oNewItem
.
push
(
formatText
);
oNewItem
.
content
.
push
(
formatText
);
if
(
text
!==
null
)
if
(
text
!==
null
)
oNewItem
[
oNewItem
.
length
-
1
].
text
=
text
;
oNewItem
.
content
[
oNewItem
.
content
.
length
-
1
].
text
=
text
;
text
=
""
;
text
=
""
;
};
};
...
@@ -2348,17 +2394,11 @@
...
@@ -2348,17 +2394,11 @@
//проходимся по контенту paragraph
//проходимся по контенту paragraph
for
(
var
n
=
0
;
n
<
content
.
length
;
n
++
)
for
(
var
n
=
0
;
n
<
content
.
length
;
n
++
)
{
{
if
(
!
aResult
[
row
+
this
.
maxLengthRowCount
])
this
.
aResult
.
getCell
(
row
+
this
.
maxLengthRowCount
,
s
+
c1
);
aResult
[
row
+
this
.
maxLengthRowCount
]
=
[];
//s - меняется в зависимости от табуляции
if
(
!
aResult
[
row
+
this
.
maxLengthRowCount
][
s
+
c1
])
aResult
[
row
+
this
.
maxLengthRowCount
][
s
+
c1
]
=
[];
if
(
text
==
null
)
if
(
text
==
null
)
text
=
""
;
text
=
""
;
switch
(
content
[
n
].
Type
)
switch
(
content
[
n
].
Type
)
{
{
case
para_Run
:
//*paraRun*
case
para_Run
:
//*paraRun*
...
@@ -2402,79 +2442,6 @@
...
@@ -2402,79 +2442,6 @@
},
},
_getAlignHorisontal
:
function
(
paraPr
)
{
var
result
;
var
settings
=
paraPr
.
ParaPr
;
if
(
!
settings
)
return
;
switch
(
settings
.
Jc
)
{
case
0
:
{
result
=
"
right
"
;
break
;
}
case
1
:
{
result
=
"
left
"
;
break
;
}
case
2
:
{
result
=
"
center
"
;
break
;
}
case
3
:
{
result
=
null
;
break
;
}
};
return
result
;
},
getBackgroundColorTCell
:
function
(
elem
)
{
var
compiledPrCell
,
color
;
var
backgroundColor
=
null
;
//TODO внутреннии таблицы без стиля - цвет фона белый
var
tableCell
=
this
.
_getParentByTag
(
elem
,
c_oAscBoundsElementType
.
Cell
);
if
(
tableCell
)
{
compiledPrCell
=
tableCell
.
elem
.
Get_CompiledPr
();
if
(
compiledPrCell
&&
compiledPrCell
.
Shd
.
Value
!==
1
/*shd_Nil*/
)
{
var
color
=
compiledPrCell
.
Shd
.
Color
;
backgroundColor
=
new
AscCommonExcel
.
RgbColor
(
this
.
clipboard
.
_getBinaryColor
(
"
rgb(
"
+
color
.
r
+
"
,
"
+
color
.
g
+
"
,
"
+
color
.
b
+
"
)
"
));
};
};
return
backgroundColor
;
},
_getParentByTag
:
function
(
elem
,
tag
)
{
var
result
;
if
(
!
elem
)
return
null
;
if
(
elem
.
type
==
tag
)
result
=
elem
;
else
if
(
elem
.
parent
)
result
=
this
.
_getParentByTag
(
elem
.
parent
,
tag
);
else
if
(
!
elem
.
parent
)
result
=
null
;
return
result
;
},
_parseParaRun
:
function
(
paraRun
,
oNewItem
,
paraPr
,
s
,
row
,
c1
,
text
)
_parseParaRun
:
function
(
paraRun
,
oNewItem
,
paraPr
,
s
,
row
,
c1
,
text
)
{
{
var
paraRunContent
=
paraRun
.
Content
;
var
paraRunContent
=
paraRun
.
Content
;
...
@@ -2508,38 +2475,30 @@
...
@@ -2508,38 +2475,30 @@
case
para_Tab
:
//*paraEnd / paraTab*
case
para_Tab
:
//*paraEnd / paraTab*
{
{
//if(!oNewItem.length)
//{
this
.
fontsNew
[
paragraphFontFamily
]
=
1
;
this
.
fontsNew
[
paragraphFontFamily
]
=
1
;
oNewItem
.
content
.
push
(
formatText
);
oNewItem
.
push
(
formatText
);
//}
if
(
text
!==
null
)
if
(
text
!==
null
)
oNewItem
[
oNewItem
.
length
-
1
].
text
=
text
;
oNewItem
.
content
[
oNewItem
.
content
.
length
-
1
].
text
=
text
;
cloneNewItem
=
this
.
_getCloneNewItem
(
oNewItem
);
cloneNewItem
=
oNewItem
.
clone
(
);
//переходим в следующую ячейку
//переходим в следующую ячейку
if
(
typeof
aResult
[
row
+
this
.
maxLengthRowCount
][
s
+
c1
]
==
"
object
"
)
var
cell
=
aResult
.
getCell
(
row
+
this
.
maxLengthRowCount
,
s
+
c1
);
aResult
[
row
+
this
.
maxLengthRowCount
][
s
+
c1
][
aResult
[
row
+
this
.
maxLengthRowCount
][
s
+
c1
].
length
]
=
cloneNewItem
;
aResult
.
setCellContent
(
row
+
this
.
maxLengthRowCount
,
s
+
c1
,
cloneNewItem
);
else
{
aResult
[
row
+
this
.
maxLengthRowCount
][
s
+
c1
]
=
[];
aResult
[
row
+
this
.
maxLengthRowCount
][
s
+
c1
][
0
]
=
cloneNewItem
;
}
text
=
""
;
text
=
""
;
oNewItem
=
[]
;
oNewItem
=
new
pasteCell
()
;
s
++
;
s
++
;
break
;
break
;
};
};
case
para_Drawing
:
case
para_Drawing
:
{
{
if
(
!
aResult
.
addImagesFromWord
)
if
(
!
aResult
.
props
.
addImagesFromWord
)
aResult
.
addImagesFromWord
=
[];
aResult
.
props
.
addImagesFromWord
=
[];
aResult
.
addImagesFromWord
[
aResult
.
addImagesFromWord
.
length
]
=
{
image
:
paraRunContent
[
pR
],
col
:
s
+
c1
,
row
:
row
}
;
aResult
.
props
.
addImagesFromWord
.
push
({
image
:
paraRunContent
[
pR
],
col
:
s
+
c1
,
row
:
row
})
;
if
(
null
===
this
.
isUsuallyPutImages
)
if
(
null
===
this
.
isUsuallyPutImages
)
this
.
_addImageToMap
(
paraRunContent
[
pR
]);
this
.
_addImageToMap
(
paraRunContent
[
pR
]);
...
@@ -2547,18 +2506,13 @@
...
@@ -2547,18 +2506,13 @@
case
para_End
:
case
para_End
:
{
{
if
(
typeof
aResult
[
row
][
s
+
c1
]
==
"
object
"
)
var
cell
=
aResult
.
getCell
(
row
,
s
+
c1
);
aResult
[
row
][
s
+
c1
][
aResult
[
row
][
s
+
c1
].
length
]
=
oNewItem
;
aResult
.
setCellContent
(
row
,
s
+
c1
,
oNewItem
);
else
{
aResult
[
row
][
s
+
c1
]
=
[];
aResult
[
row
][
s
+
c1
][
0
]
=
oNewItem
;
}
var
checkMaxTextLength
=
this
.
clipboard
.
_checkMaxTextLength
(
this
.
aResult
,
row
+
this
.
maxLengthRowCount
,
s
+
c1
);
var
checkMaxTextLength
=
this
.
clipboard
.
_checkMaxTextLength
(
this
.
aResult
,
row
+
this
.
maxLengthRowCount
,
s
+
c1
);
if
(
checkMaxTextLength
)
if
(
checkMaxTextLength
)
{
{
aResult
=
checkMaxTextLength
.
aResul
t
;
aResult
.
content
=
checkMaxTextLength
.
aResult
.
conten
t
;
this
.
maxLengthRowCount
+=
checkMaxTextLength
.
r
-
row
;
this
.
maxLengthRowCount
+=
checkMaxTextLength
.
r
-
row
;
}
}
};
};
...
@@ -2569,13 +2523,13 @@
...
@@ -2569,13 +2523,13 @@
{
{
this
.
fontsNew
[
paragraphFontFamily
]
=
1
;
this
.
fontsNew
[
paragraphFontFamily
]
=
1
;
oNewItem
.
push
(
formatText
);
oNewItem
.
content
.
push
(
formatText
);
if
(
text
!==
null
)
if
(
text
!==
null
)
oNewItem
[
oNewItem
.
length
-
1
].
text
=
text
;
oNewItem
.
content
[
oNewItem
.
content
.
length
-
1
].
text
=
text
;
cloneNewItem
=
this
.
_getCloneNewItem
(
oNewItem
);
cloneNewItem
=
oNewItem
.
clone
(
);
text
=
""
;
text
=
""
;
};
};
...
@@ -2586,18 +2540,141 @@
...
@@ -2586,18 +2540,141 @@
_addImageToMap
:
function
(
paraDrawing
)
_addImageToMap
:
function
(
paraDrawing
)
{
{
var
aResult
=
this
.
aResult
;
var
aResult
=
this
.
aResult
;
if
(
!
aResult
.
_aPastedImages
)
if
(
!
aResult
.
props
.
_aPastedImages
)
aResult
.
_aPastedImages
=
[];
aResult
.
props
.
_aPastedImages
=
[];
if
(
!
aResult
.
_images
)
if
(
!
aResult
.
props
.
_images
)
aResult
.
_images
=
[];
aResult
.
props
.
_images
=
[];
var
oGraphicObj
=
paraDrawing
.
GraphicObj
;
var
oGraphicObj
=
paraDrawing
.
GraphicObj
;
if
(
!
oGraphicObj
||
(
oGraphicObj
&&
!
oGraphicObj
.
blipFill
)
||
(
oGraphicObj
&&
oGraphicObj
.
blipFill
&&
!
oGraphicObj
.
blipFill
.
RasterImageId
))
if
(
!
oGraphicObj
||
(
oGraphicObj
&&
!
oGraphicObj
.
blipFill
)
||
(
oGraphicObj
&&
oGraphicObj
.
blipFill
&&
!
oGraphicObj
.
blipFill
.
RasterImageId
))
return
;
return
;
var
sImageUrl
=
oGraphicObj
.
blipFill
.
RasterImageId
;
var
sImageUrl
=
oGraphicObj
.
blipFill
.
RasterImageId
;
aResult
.
_aPastedImages
[
aResult
.
_aPastedImages
.
length
]
=
new
AscCommon
.
CBuilderImages
(
oGraphicObj
.
blipFill
,
sImageUrl
,
oGraphicObj
,
oGraphicObj
.
spPr
,
null
);
aResult
.
props
.
_aPastedImages
.
push
(
new
AscCommon
.
CBuilderImages
(
oGraphicObj
.
blipFill
,
sImageUrl
,
oGraphicObj
,
oGraphicObj
.
spPr
,
null
));
aResult
.
_images
[
aResult
.
_images
.
length
]
=
sImageUrl
;
aResult
.
props
.
_images
.
push
(
sImageUrl
);
},
_getBorders
:
function
(
cellTable
,
top
,
left
,
oldBorders
)
{
var
borders
=
cellTable
.
elem
.
Get_Borders
();
var
widthCell
=
cellTable
.
width
;
var
heigthCell
=
cellTable
.
height
;
var
defaultStyle
=
"
solid
"
;
var
borderStyleName
;
var
formatBorders
=
oldBorders
?
oldBorders
:
new
AscCommonExcel
.
Border
();
//top border for cell
if
(
top
==
cellTable
.
top
&&
!
formatBorders
.
t
.
s
&&
borders
.
Top
.
Value
!==
0
/*border_None*/
)
{
borderStyleName
=
this
.
clipboard
.
_getBorderStyleName
(
defaultStyle
,
this
.
ws
.
objectRender
.
convertMetric
(
borders
.
Top
.
Size
,
3
,
1
));
if
(
null
!==
borderStyleName
)
{
formatBorders
.
t
.
setStyle
(
borderStyleName
);
formatBorders
.
t
.
c
=
new
AscCommonExcel
.
RgbColor
(
this
.
clipboard
.
_getBinaryColor
(
"
rgb(
"
+
borders
.
Top
.
Color
.
r
+
"
,
"
+
borders
.
Top
.
Color
.
g
+
"
,
"
+
borders
.
Top
.
Color
.
b
+
"
)
"
));
}
}
//left border for cell
if
(
left
==
cellTable
.
left
&&
!
formatBorders
.
l
.
s
&&
borders
.
Left
.
Value
!==
0
/*border_None*/
)
{
borderStyleName
=
this
.
clipboard
.
_getBorderStyleName
(
defaultStyle
,
this
.
ws
.
objectRender
.
convertMetric
(
borders
.
Left
.
Size
,
3
,
1
));
if
(
null
!==
borderStyleName
)
{
formatBorders
.
l
.
setStyle
(
borderStyleName
);
formatBorders
.
l
.
c
=
new
AscCommonExcel
.
RgbColor
(
this
.
clipboard
.
_getBinaryColor
(
"
rgb(
"
+
borders
.
Left
.
Color
.
r
+
"
,
"
+
borders
.
Left
.
Color
.
g
+
"
,
"
+
borders
.
Left
.
Color
.
b
+
"
)
"
));
}
}
//bottom border for cell
if
(
top
==
cellTable
.
top
+
heigthCell
-
1
&&
!
formatBorders
.
b
.
s
&&
borders
.
Bottom
.
Value
!==
0
/*border_None*/
)
{
borderStyleName
=
this
.
clipboard
.
_getBorderStyleName
(
defaultStyle
,
this
.
ws
.
objectRender
.
convertMetric
(
borders
.
Bottom
.
Size
,
3
,
1
));
if
(
null
!==
borderStyleName
)
{
formatBorders
.
b
.
setStyle
(
borderStyleName
);
formatBorders
.
b
.
c
=
new
AscCommonExcel
.
RgbColor
(
this
.
clipboard
.
_getBinaryColor
(
"
rgb(
"
+
borders
.
Bottom
.
Color
.
r
+
"
,
"
+
borders
.
Bottom
.
Color
.
g
+
"
,
"
+
borders
.
Bottom
.
Color
.
b
+
"
)
"
));
}
}
//right border for cell
if
(
left
==
cellTable
.
left
+
widthCell
-
1
&&
!
formatBorders
.
r
.
s
&&
borders
.
Right
.
Value
!==
0
/*border_None*/
)
{
borderStyleName
=
this
.
clipboard
.
_getBorderStyleName
(
defaultStyle
,
this
.
ws
.
objectRender
.
convertMetric
(
borders
.
Right
.
Size
,
3
,
1
));
if
(
null
!==
borderStyleName
)
{
formatBorders
.
r
.
setStyle
(
borderStyleName
);
formatBorders
.
r
.
c
=
new
AscCommonExcel
.
RgbColor
(
this
.
clipboard
.
_getBinaryColor
(
"
rgb(
"
+
borders
.
Right
.
Color
.
r
+
"
,
"
+
borders
.
Right
.
Color
.
g
+
"
,
"
+
borders
.
Right
.
Color
.
b
+
"
)
"
));
}
}
return
formatBorders
;
},
_getAlignHorisontal
:
function
(
paraPr
)
{
var
result
;
var
settings
=
paraPr
.
ParaPr
;
if
(
!
settings
)
return
;
switch
(
settings
.
Jc
)
{
case
0
:
{
result
=
"
right
"
;
break
;
}
case
1
:
{
result
=
"
left
"
;
break
;
}
case
2
:
{
result
=
"
center
"
;
break
;
}
case
3
:
{
result
=
null
;
break
;
}
};
return
result
;
},
getBackgroundColorTCell
:
function
(
elem
)
{
var
compiledPrCell
,
color
;
var
backgroundColor
=
null
;
//TODO внутреннии таблицы без стиля - цвет фона белый
var
tableCell
=
this
.
_getParentByTag
(
elem
,
c_oAscBoundsElementType
.
Cell
);
if
(
tableCell
)
{
compiledPrCell
=
tableCell
.
elem
.
Get_CompiledPr
();
if
(
compiledPrCell
&&
compiledPrCell
.
Shd
.
Value
!==
1
/*shd_Nil*/
)
{
var
color
=
compiledPrCell
.
Shd
.
Color
;
backgroundColor
=
new
AscCommonExcel
.
RgbColor
(
this
.
clipboard
.
_getBinaryColor
(
"
rgb(
"
+
color
.
r
+
"
,
"
+
color
.
g
+
"
,
"
+
color
.
b
+
"
)
"
));
};
};
return
backgroundColor
;
},
_getParentByTag
:
function
(
elem
,
tag
)
{
var
result
;
if
(
!
elem
)
return
null
;
if
(
elem
.
type
==
tag
)
result
=
elem
;
else
if
(
elem
.
parent
)
result
=
this
.
_getParentByTag
(
elem
.
parent
,
tag
);
else
if
(
!
elem
.
parent
)
result
=
null
;
return
result
;
},
},
_getAllNumberingText
:
function
(
Lvl
,
numberingText
)
_getAllNumberingText
:
function
(
Lvl
,
numberingText
)
...
@@ -2648,22 +2725,6 @@
...
@@ -2648,22 +2725,6 @@
NumTextPr
.
Merge
(
TextPr_temp
);
NumTextPr
.
Merge
(
TextPr_temp
);
NumTextPr
.
Merge
(
NumLvl
.
TextPr
);
NumTextPr
.
Merge
(
NumLvl
.
TextPr
);
/*var X_start = X;
if ( align_Right === NumJc )
X_start = X - NumberingItem.WidthNum;
else if ( align_Center === NumJc )
X_start = X - NumberingItem.WidthNum / 2;
NumTextPr.Unifill.check(PDSE.Theme, PDSE.ColorMap);
var RGBA = NumTextPr.Unifill.getRGBAColor();
if ( true === NumTextPr.Color.Auto )
pGraphics.b_color1( AutoColor.r, AutoColor.g, AutoColor.b, 255);
else
pGraphics.b_color1(RGBA.R, RGBA.G, RGBA.B, 255 );*/
// Рисуется только сам символ нумерации
var
oNumPr
=
paragraph
.
Numbering_Get
();
var
oNumPr
=
paragraph
.
Numbering_Get
();
var
LvlPr
,
Lvl
;
var
LvlPr
,
Lvl
;
if
(
oNumPr
!=
null
)
if
(
oNumPr
!=
null
)
...
@@ -2904,25 +2965,6 @@
...
@@ -2904,25 +2965,6 @@
};
};
return
formatText
;
return
formatText
;
},
_getCloneNewItem
:
function
(
oNewItem
)
{
var
result
=
[];
for
(
var
item
=
0
;
item
<
oNewItem
.
length
;
item
++
)
{
result
[
item
]
=
{
text
:
oNewItem
[
item
].
text
,
format
:
oNewItem
[
item
].
format
};
};
result
.
borders
=
oNewItem
.
borders
;
result
.
rowSpan
=
oNewItem
.
rowSpan
;
result
.
colSpan
=
oNewItem
.
colSpan
;
result
.
toolTip
=
result
.
toolTip
;
result
.
bc
=
oNewItem
.
bc
;
result
.
hyperLink
=
oNewItem
.
hyperLink
;
return
result
;
}
}
};
};
...
...
cell/view/WorksheetView.js
View file @
aebbb827
...
@@ -9164,7 +9164,7 @@
...
@@ -9164,7 +9164,7 @@
break
;
break
;
case
"
paste
"
:
case
"
paste
"
:
// Вставляем текст из локального буфера или нет
// Вставляем текст из локального буфера или нет
isLocal
?
t
.
_paste
FromLocalBuff
(
isLargeRange
,
isLocal
,
val
,
bIsUpdate
,
canChangeColWidth
)
:
t
.
_pasteFromGlobalBuff
(
isLargeRange
,
isLocal
,
val
,
bIsUpdate
,
canChangeColWidth
);
isLocal
?
t
.
_paste
Data
(
isLargeRange
,
isLocal
,
val
,
bIsUpdate
,
canChangeColWidth
)
:
t
.
_loadDataBeforePaste
(
isLargeRange
,
isLocal
,
val
,
bIsUpdate
,
canChangeColWidth
);
bIsUpdate
=
false
;
bIsUpdate
=
false
;
break
;
break
;
case
"
hyperlink
"
:
case
"
hyperlink
"
:
...
@@ -9207,7 +9207,7 @@
...
@@ -9207,7 +9207,7 @@
t
.
_updateCellsRange
(
arn
,
canChangeColWidth
);
t
.
_updateCellsRange
(
arn
,
canChangeColWidth
);
}
}
//в случае, если вставляем из глобального буфера, транзакцию закрываем внутри функции _
pasteFromGlobalBuff
на callbacks от загрузки шрифтов и картинок
//в случае, если вставляем из глобального буфера, транзакцию закрываем внутри функции _
loadDataBeforePaste
на callbacks от загрузки шрифтов и картинок
if
(
prop
!==
"
paste
"
||
(
prop
===
"
paste
"
&&
isLocal
)
)
{
if
(
prop
!==
"
paste
"
||
(
prop
===
"
paste
"
&&
isLocal
)
)
{
History
.
EndTransaction
();
History
.
EndTransaction
();
}
}
...
@@ -9218,7 +9218,7 @@
...
@@ -9218,7 +9218,7 @@
checkRange
=
t
.
_pasteFromBinary
(
val
,
true
);
checkRange
=
t
.
_pasteFromBinary
(
val
,
true
);
}
}
else
{
else
{
checkRange
=
t
.
_
setInfoAfterPaste
(
val
,
true
);
checkRange
=
t
.
_
pasteFromHTML
(
val
,
true
);
}
}
}
}
if
(
"
paste
"
===
prop
&&
val
.
onlyImages
===
true
)
{
if
(
"
paste
"
===
prop
&&
val
.
onlyImages
===
true
)
{
...
@@ -9229,45 +9229,54 @@
...
@@ -9229,45 +9229,54 @@
}
}
};
};
WorksheetView
.
prototype
.
_paste
FromLocalBuff
=
function
(
isLargeRange
,
isLocal
,
val
,
bIsUpdate
,
canChangeColWidth
)
{
WorksheetView
.
prototype
.
_paste
Data
=
function
(
isLargeRange
,
isLocal
,
val
,
bIsUpdate
,
canChangeColWidth
)
{
var
t
=
this
;
var
t
=
this
;
var
callTrigger
=
false
;
var
callTrigger
=
false
;
if
(
isLargeRange
)
{
if
(
isLargeRange
)
{
callTrigger
=
true
;
callTrigger
=
true
;
t
.
handlers
.
trigger
(
"
slowOperation
"
,
true
);
t
.
handlers
.
trigger
(
"
slowOperation
"
,
true
);
}
}
t
.
model
.
workbook
.
lockDraw
();
t
.
model
.
workbook
.
lockDraw
();
var
selectData
;
var
selectData
;
if
(
isLocal
===
'
binary
'
)
{
if
(
isLocal
===
'
binary
'
)
{
selectData
=
t
.
_pasteFromBinary
(
val
);
selectData
=
t
.
_pasteFromBinary
(
val
);
}
}
else
{
else
selectData
=
t
.
_setInfoAfterPaste
(
val
);
{
selectData
=
t
.
_pasteFromHTML
(
val
);
}
}
t
.
model
.
autoFilters
.
renameTableColumn
(
t
.
activeRange
);
t
.
model
.
autoFilters
.
renameTableColumn
(
t
.
activeRange
);
if
(
!
selectData
)
{
if
(
!
selectData
)
{
bIsUpdate
=
false
;
bIsUpdate
=
false
;
t
.
model
.
workbook
.
unLockDraw
();
t
.
model
.
workbook
.
unLockDraw
();
t
.
model
.
workbook
.
buildRecalc
();
t
.
model
.
workbook
.
buildRecalc
();
if
(
callTrigger
)
{
if
(
callTrigger
)
{
t
.
handlers
.
trigger
(
"
slowOperation
"
,
false
);
t
.
handlers
.
trigger
(
"
slowOperation
"
,
false
);
}
}
return
;
return
;
}
}
this
.
expandColsOnScroll
(
false
,
true
);
this
.
expandColsOnScroll
(
false
,
true
);
this
.
expandRowsOnScroll
(
false
,
true
);
this
.
expandRowsOnScroll
(
false
,
true
);
var
arrFormula
=
selectData
[
1
];
var
arrFormula
=
selectData
[
1
];
for
(
var
i
=
0
;
i
<
arrFormula
.
length
;
++
i
)
{
//!!!
for
(
var
i
=
0
;
i
<
arrFormula
.
length
;
++
i
)
{
var
rangeF
=
arrFormula
[
i
].
range
;
var
rangeF
=
arrFormula
[
i
].
range
;
var
valF
=
arrFormula
[
i
].
val
;
var
valF
=
arrFormula
[
i
].
val
;
if
(
rangeF
.
isOneCell
()
)
{
if
(
rangeF
.
isOneCell
()
)
{
rangeF
.
setValue
(
valF
,
null
,
true
);
rangeF
.
setValue
(
valF
,
null
,
true
);
}
}
else
{
else
{
var
oBBox
=
rangeF
.
getBBox0
();
var
oBBox
=
rangeF
.
getBBox0
();
t
.
model
.
_getCell
(
oBBox
.
r1
,
oBBox
.
c1
).
setValue
(
valF
,
null
,
true
);
t
.
model
.
_getCell
(
oBBox
.
r1
,
oBBox
.
c1
).
setValue
(
valF
,
null
,
true
);
}
}
...
@@ -9279,27 +9288,8 @@
...
@@ -9279,27 +9288,8 @@
var
selectionRange
=
arn
.
clone
(
true
);
var
selectionRange
=
arn
.
clone
(
true
);
//добавляем автофильтры и форматированные таблицы
//добавляем автофильтры и форматированные таблицы
if
(
isLocal
===
true
&&
val
.
lStorage
&&
val
.
lStorage
.
autoFilters
&&
val
.
lStorage
.
autoFilters
.
length
)
{
if
(
isLocal
===
'
binary
'
&&
val
.
TableParts
&&
val
.
TableParts
.
length
)
var
aFilters
=
val
.
lStorage
.
autoFilters
;
{
var
range
;
for
(
var
aF
=
0
;
aF
<
aFilters
.
length
;
aF
++
)
{
range
=
t
.
model
.
getRange3
(
aFilters
[
aF
].
range
.
r1
+
selectionRange
.
r1
,
aFilters
[
aF
].
range
.
c1
+
selectionRange
.
c1
,
aFilters
[
aF
].
range
.
r2
+
selectionRange
.
r1
,
aFilters
[
aF
].
range
.
c2
+
selectionRange
.
c1
);
//если область вставки содержит форматированную таблицу, которая пересекается с вставляемой форматированной таблицей
var
intersectionRangeWithTableParts
=
t
.
model
.
autoFilters
.
_intersectionRangeWithTableParts
(
range
.
bbox
);
if
(
intersectionRangeWithTableParts
)
continue
;
if
(
aFilters
[
aF
].
style
)
{
range
.
cleanFormat
();
}
t
.
model
.
autoFilters
.
addAutoFilter
(
aFilters
[
aF
].
style
,
range
.
bbox
,
true
,
true
);
if
(
!
aFilters
[
aF
].
autoFilter
)
{
t
.
model
.
autoFilters
.
addAutoFilter
(
null
,
range
.
bbox
,
true
,
true
);
}
}
}
else
if
(
isLocal
===
'
binary
'
&&
val
.
TableParts
&&
val
.
TableParts
.
length
)
{
var
aFilters
=
val
.
TableParts
;
var
aFilters
=
val
.
TableParts
;
var
range
;
var
range
;
var
tablePartRange
;
var
tablePartRange
;
...
@@ -9345,16 +9335,20 @@
...
@@ -9345,16 +9335,20 @@
//делаем unmerge ф/т
//делаем unmerge ф/т
var
arnToRange
=
t
.
activeRange
;
var
arnToRange
=
t
.
activeRange
;
var
intersectionRangeWithTableParts
=
t
.
model
.
autoFilters
.
_intersectionRangeWithTableParts
(
arnToRange
);
var
intersectionRangeWithTableParts
=
t
.
model
.
autoFilters
.
_intersectionRangeWithTableParts
(
arnToRange
);
if
(
intersectionRangeWithTableParts
&&
intersectionRangeWithTableParts
.
length
)
{
if
(
intersectionRangeWithTableParts
&&
intersectionRangeWithTableParts
.
length
)
{
var
tablePart
;
var
tablePart
;
for
(
var
i
=
0
;
i
<
intersectionRangeWithTableParts
.
length
;
i
++
)
{
for
(
var
i
=
0
;
i
<
intersectionRangeWithTableParts
.
length
;
i
++
)
{
tablePart
=
intersectionRangeWithTableParts
[
i
];
tablePart
=
intersectionRangeWithTableParts
[
i
];
this
.
model
.
getRange3
(
tablePart
.
Ref
.
r1
,
tablePart
.
Ref
.
c1
,
tablePart
.
Ref
.
r2
,
tablePart
.
Ref
.
c2
).
unmerge
();
this
.
model
.
getRange3
(
tablePart
.
Ref
.
r1
,
tablePart
.
Ref
.
c1
,
tablePart
.
Ref
.
r2
,
tablePart
.
Ref
.
c2
).
unmerge
();
}
}
}
}
if
(
bIsUpdate
)
{
if
(
bIsUpdate
)
if
(
callTrigger
)
{
{
if
(
callTrigger
)
{
t
.
handlers
.
trigger
(
"
slowOperation
"
,
false
);
t
.
handlers
.
trigger
(
"
slowOperation
"
,
false
);
}
}
t
.
isChanged
=
true
;
t
.
isChanged
=
true
;
...
@@ -9362,7 +9356,8 @@
...
@@ -9362,7 +9356,8 @@
}
}
var
oSelection
=
History
.
GetSelection
();
var
oSelection
=
History
.
GetSelection
();
if
(
null
!=
oSelection
)
{
if
(
null
!=
oSelection
)
{
oSelection
=
oSelection
.
clone
();
oSelection
=
oSelection
.
clone
();
oSelection
.
assign
(
selectionRange
.
c1
,
selectionRange
.
r1
,
selectionRange
.
c2
,
selectionRange
.
r2
);
oSelection
.
assign
(
selectionRange
.
c1
,
selectionRange
.
r1
,
selectionRange
.
c2
,
selectionRange
.
r2
);
History
.
SetSelection
(
oSelection
);
History
.
SetSelection
(
oSelection
);
...
@@ -9370,28 +9365,25 @@
...
@@ -9370,28 +9365,25 @@
}
}
};
};
WorksheetView
.
prototype
.
_
pasteFromGlobalBuff
=
function
(
isLargeRange
,
isLocal
,
val
,
bIsUpdate
,
canChangeColWidth
)
{
WorksheetView
.
prototype
.
_
loadDataBeforePaste
=
function
(
isLargeRange
,
isLocal
,
pasteContent
,
bIsUpdate
,
canChangeColWidth
)
{
var
t
=
this
;
var
t
=
this
;
//загрузка шрифтов, в случае удачи на callback вставляем текст
//загрузка шрифтов, в случае удачи на callback вставляем текст
t
.
_loadFonts
(
val
.
fontsNew
,
function
()
{
t
.
_loadFonts
(
pasteContent
.
props
.
fontsNew
,
function
()
{
var
api
=
asc
[
"
editor
"
];
var
api
=
asc
[
"
editor
"
];
var
isEndTransaction
=
false
;
var
isEndTransaction
=
false
;
if
(
val
.
addImages
&&
val
.
addImages
.
length
!=
0
&&
!
(
window
[
"
Asc
"
][
"
editor
"
]
&&
window
[
"
Asc
"
][
"
editor
"
].
isChartEditor
)
)
{
if
(
val
.
onlyImages
!==
true
)
{
if
(
pasteContent
.
props
.
addImagesFromWord
&&
pasteContent
.
props
.
addImagesFromWord
.
length
!=
0
&&
!
(
window
[
"
Asc
"
][
"
editor
"
]
&&
window
[
"
Asc
"
][
"
editor
"
].
isChartEditor
)
)
t
.
_pasteFromLocalBuff
(
isLargeRange
,
isLocal
,
val
,
bIsUpdate
,
canChangeColWidth
);
{
}
var
oObjectsForDownload
=
AscCommon
.
GetObjectsForImageDownload
(
pasteContent
.
props
.
_aPastedImages
);
api
.
wb
.
clipboard
.
pasteProcessor
.
_insertImagesFromHTML
(
t
,
val
);
isEndTransaction
=
true
;
}
else
if
(
val
.
addImagesFromWord
&&
val
.
addImagesFromWord
.
length
!=
0
&&
!
(
window
[
"
Asc
"
][
"
editor
"
]
&&
window
[
"
Asc
"
][
"
editor
"
].
isChartEditor
)
)
{
var
oObjectsForDownload
=
AscCommon
.
GetObjectsForImageDownload
(
val
.
_aPastedImages
);
//if already load images on server
//if already load images on server
if
(
api
.
wb
.
clipboard
.
pasteProcessor
.
alreadyLoadImagesOnServer
===
true
)
{
if
(
api
.
wb
.
clipboard
.
pasteProcessor
.
alreadyLoadImagesOnServer
===
true
)
{
var
oImageMap
=
{};
var
oImageMap
=
{};
for
(
var
i
=
0
,
length
=
oObjectsForDownload
.
aBuilderImagesByUrl
.
length
;
i
<
length
;
++
i
)
{
for
(
var
i
=
0
,
length
=
oObjectsForDownload
.
aBuilderImagesByUrl
.
length
;
i
<
length
;
++
i
)
{
var
url
=
oObjectsForDownload
.
aUrls
[
i
];
var
url
=
oObjectsForDownload
.
aUrls
[
i
];
//get name from array already load on server urls
//get name from array already load on server urls
...
@@ -9413,52 +9405,56 @@
...
@@ -9413,52 +9405,56 @@
}
}
}
}
if
(
val
.
onlyImages
!==
true
)
{
if
(
pasteContent
.
props
.
onlyImages
!==
true
)
t
.
_pasteFromLocalBuff
(
isLargeRange
,
isLocal
,
val
,
bIsUpdate
,
canChangeColWidth
);
{
t
.
_pasteData
(
isLargeRange
,
isLocal
,
pasteContent
,
bIsUpdate
,
canChangeColWidth
);
}
}
api
.
wb
.
clipboard
.
pasteProcessor
.
_insertImagesFromBinaryWord
(
t
,
val
,
oImageMap
);
api
.
wb
.
clipboard
.
pasteProcessor
.
_insertImagesFromBinaryWord
(
t
,
pasteContent
,
oImageMap
);
isEndTransaction
=
true
;
isEndTransaction
=
true
;
}
}
else
{
else
{
AscCommon
.
sendImgUrls
(
api
,
oObjectsForDownload
.
aUrls
,
function
(
data
)
{
AscCommon
.
sendImgUrls
(
api
,
oObjectsForDownload
.
aUrls
,
function
(
data
)
{
var
oImageMap
=
{};
var
oImageMap
=
{};
AscCommon
.
ResetNewUrls
(
data
,
oObjectsForDownload
.
aUrls
,
oObjectsForDownload
.
aBuilderImagesByUrl
,
oImageMap
);
AscCommon
.
ResetNewUrls
(
data
,
oObjectsForDownload
.
aUrls
,
oObjectsForDownload
.
aBuilderImagesByUrl
,
oImageMap
);
if
(
val
.
onlyImages
!==
true
)
{
if
(
pasteContent
.
props
.
onlyImages
!==
true
)
{
t
.
_paste
FromLocalBuff
(
isLargeRange
,
isLocal
,
val
,
bIsUpdate
,
canChangeColWidth
);
t
.
_paste
Data
(
isLargeRange
,
isLocal
,
pasteContent
,
bIsUpdate
,
canChangeColWidth
);
}
}
api
.
wb
.
clipboard
.
pasteProcessor
.
_insertImagesFromBinaryWord
(
t
,
val
,
oImageMap
);
api
.
wb
.
clipboard
.
pasteProcessor
.
_insertImagesFromBinaryWord
(
t
,
pasteContent
,
oImageMap
);
//закрываем транзакцию, поскольку в setSelectionInfo она не закроется
//закрываем транзакцию, поскольку в setSelectionInfo она не закроется
History
.
EndTransaction
();
History
.
EndTransaction
();
},
true
);
},
true
);
}
}
}
}
else
if
(
val
.
onlyImages
!==
true
)
{
else
if
(
pasteContent
.
props
.
onlyImages
!==
true
)
t
.
_pasteFromLocalBuff
(
isLargeRange
,
isLocal
,
val
,
bIsUpdate
,
canChangeColWidth
);
{
t
.
_pasteData
(
isLargeRange
,
isLocal
,
pasteContent
,
bIsUpdate
,
canChangeColWidth
);
isEndTransaction
=
true
;
isEndTransaction
=
true
;
}
}
//закрываем транзакцию, поскольку в setSelectionInfo она не закроется
//закрываем транзакцию, поскольку в setSelectionInfo она не закроется
if
(
isEndTransaction
)
{
if
(
isEndTransaction
)
{
History
.
EndTransaction
();
History
.
EndTransaction
();
}
}
}
);
}
);
};
};
WorksheetView
.
prototype
.
_
setInfoAfterPaste
=
function
(
values
,
isCheckSelection
)
{
WorksheetView
.
prototype
.
_
pasteFromHTML
=
function
(
pasteContent
,
isCheckSelection
)
{
var
t
=
this
;
var
t
=
this
;
var
wb
=
window
[
"
Asc
"
][
"
editor
"
].
wb
;
var
wb
=
window
[
"
Asc
"
][
"
editor
"
].
wb
;
var
arn
=
wb
&&
wb
.
clipboard
&&
wb
.
clipboard
.
pasteProcessor
&&
wb
.
clipboard
.
pasteProcessor
.
activeRange
?
wb
.
clipboard
.
pasteProcessor
.
activeRange
:
t
.
activeRange
.
clone
(
true
);
var
arn
=
wb
&&
wb
.
clipboard
&&
wb
.
clipboard
.
pasteProcessor
&&
wb
.
clipboard
.
pasteProcessor
.
activeRange
?
wb
.
clipboard
.
pasteProcessor
.
activeRange
:
t
.
activeRange
.
clone
(
true
);
var
arrFormula
=
[];
var
arrFormula
=
[];
var
numFor
=
0
;
var
numFor
=
0
;
var
rMax
=
values
.
length
+
values
.
rowSpanSpCount
;
var
rMax
=
pasteContent
.
content
.
length
+
pasteContent
.
props
.
rowSpanSpCount
;
if
(
values
.
rowCount
&&
values
.
rowCount
!==
0
&&
values
.
isOneTable
)
{
if
(
pasteContent
.
props
.
rowCount
&&
pasteContent
.
props
.
rowCount
!==
0
&&
pasteContent
.
props
.
isOneTable
)
rMax
=
values
.
rowCount
+
arn
.
r1
;
{
rMax
=
pasteContent
.
props
.
rowCount
+
arn
.
r1
;
}
}
var
cMax
=
value
s
.
cellCount
+
arn
.
c1
;
var
cMax
=
pasteContent
.
prop
s
.
cellCount
+
arn
.
c1
;
var
isMultiple
=
false
;
var
isMultiple
=
false
;
var
firstCell
=
t
.
model
.
getRange3
(
arn
.
r1
,
arn
.
c1
,
arn
.
r1
,
arn
.
c1
);
var
firstCell
=
t
.
model
.
getRange3
(
arn
.
r1
,
arn
.
c1
,
arn
.
r1
,
arn
.
c1
);
...
@@ -9468,47 +9464,60 @@
...
@@ -9468,47 +9464,60 @@
//если вставляем в мерженную ячейку, диапазон которой больше или равен
//если вставляем в мерженную ячейку, диапазон которой больше или равен
if
(
arn
.
c2
>=
cMax
-
1
&&
arn
.
r2
>=
rMax
-
1
&&
isMergedFirstCell
&&
isMergedFirstCell
.
c1
===
arn
.
c1
&&
isMergedFirstCell
.
c2
===
arn
.
c2
&&
isMergedFirstCell
.
r1
===
arn
.
r1
&&
isMergedFirstCell
.
r2
===
arn
.
r2
&&
cMax
-
arn
.
c1
===
values
[
arn
.
r1
][
arn
.
c1
][
0
].
colSpan
&&
rMax
-
arn
.
r1
===
values
[
arn
.
r1
][
arn
.
c1
][
0
].
rowSpan
)
{
if
(
arn
.
c2
>=
cMax
-
1
&&
arn
.
r2
>=
rMax
-
1
&&
isMergedFirstCell
&&
isMergedFirstCell
.
c1
===
arn
.
c1
&&
isMergedFirstCell
.
c2
===
arn
.
c2
&&
isMergedFirstCell
.
r1
===
arn
.
r1
&&
isMergedFirstCell
.
r2
===
arn
.
r2
&&
cMax
-
arn
.
c1
===
pasteContent
.
content
[
arn
.
r1
][
arn
.
c1
].
colSpan
&&
rMax
-
arn
.
r1
===
pasteContent
.
content
[
arn
.
r1
][
arn
.
c1
].
rowSpan
)
if
(
!
isCheckSelection
)
{
{
values
[
arn
.
r1
][
arn
.
c1
][
0
].
colSpan
=
isMergedFirstCell
.
c2
-
isMergedFirstCell
.
c1
+
1
;
if
(
!
isCheckSelection
)
values
[
arn
.
r1
][
arn
.
c1
][
0
].
rowSpan
=
isMergedFirstCell
.
r2
-
isMergedFirstCell
.
r1
+
1
;
{
pasteContent
.
content
[
arn
.
r1
][
arn
.
c1
].
colSpan
=
isMergedFirstCell
.
c2
-
isMergedFirstCell
.
c1
+
1
;
pasteContent
.
content
[
arn
.
r1
][
arn
.
c1
].
rowSpan
=
isMergedFirstCell
.
r2
-
isMergedFirstCell
.
r1
+
1
;
}
}
isOneMerge
=
true
;
isOneMerge
=
true
;
}
}
else
if
(
arn
.
c2
>=
cMax
-
1
&&
arn
.
r2
>=
rMax
-
1
&&
values
.
isOneTable
)
{
else
if
(
arn
.
c2
>=
cMax
-
1
&&
arn
.
r2
>=
rMax
-
1
&&
pasteContent
.
props
.
isOneTable
)
{
//если область кратная куску вставки
//если область кратная куску вставки
var
widthArea
=
arn
.
c2
-
arn
.
c1
+
1
;
var
widthArea
=
arn
.
c2
-
arn
.
c1
+
1
;
var
heightArea
=
arn
.
r2
-
arn
.
r1
+
1
;
var
heightArea
=
arn
.
r2
-
arn
.
r1
+
1
;
var
widthPasteFr
=
cMax
-
arn
.
c1
;
var
widthPasteFr
=
cMax
-
arn
.
c1
;
var
heightPasteFr
=
rMax
-
arn
.
r1
;
var
heightPasteFr
=
rMax
-
arn
.
r1
;
//если кратны, то обрабатываем
//если кратны, то обрабатываем
if
(
widthArea
%
widthPasteFr
===
0
&&
heightArea
%
heightPasteFr
===
0
)
{
if
(
widthArea
%
widthPasteFr
===
0
&&
heightArea
%
heightPasteFr
===
0
)
{
isMultiple
=
true
;
isMultiple
=
true
;
}
}
else
if
(
firstCell
.
hasMerged
()
!==
null
)
//в противном случае ошибка
else
if
(
firstCell
.
hasMerged
()
!==
null
)
//в противном случае ошибка
{
{
if
(
isCheckSelection
)
{
if
(
isCheckSelection
)
{
return
arn
;
return
arn
;
}
}
else
{
else
{
this
.
handlers
.
trigger
(
"
onError
"
,
c_oAscError
.
ID
.
PastInMergeAreaError
,
c_oAscError
.
Level
.
NoCritical
);
this
.
handlers
.
trigger
(
"
onError
"
,
c_oAscError
.
ID
.
PastInMergeAreaError
,
c_oAscError
.
Level
.
NoCritical
);
return
;
return
;
}
}
}
}
}
}
else
{
else
{
//проверка на наличие части объединённой ячейки в области куда осуществляем вставку
//проверка на наличие части объединённой ячейки в области куда осуществляем вставку
for
(
var
rFirst
=
arn
.
r1
;
rFirst
<
rMax
;
++
rFirst
)
{
for
(
var
rFirst
=
arn
.
r1
;
rFirst
<
rMax
;
++
rFirst
)
for
(
var
cFirst
=
arn
.
c1
;
cFirst
<
cMax
;
++
cFirst
)
{
{
for
(
var
cFirst
=
arn
.
c1
;
cFirst
<
cMax
;
++
cFirst
)
{
range
=
t
.
model
.
getRange3
(
rFirst
,
cFirst
,
rFirst
,
cFirst
);
range
=
t
.
model
.
getRange3
(
rFirst
,
cFirst
,
rFirst
,
cFirst
);
var
merged
=
range
.
hasMerged
();
var
merged
=
range
.
hasMerged
();
if
(
merged
)
{
if
(
merged
)
if
(
merged
.
r1
<
arn
.
r1
||
merged
.
r2
>
rMax
-
1
||
merged
.
c1
<
arn
.
c1
||
merged
.
c2
>
cMax
-
1
)
{
{
if
(
merged
.
r1
<
arn
.
r1
||
merged
.
r2
>
rMax
-
1
||
merged
.
c1
<
arn
.
c1
||
merged
.
c2
>
cMax
-
1
)
{
//ошибка в случае если вставка происходит в часть объедененной ячейки
//ошибка в случае если вставка происходит в часть объедененной ячейки
if
(
isCheckSelection
)
{
if
(
isCheckSelection
)
{
return
arn
;
return
arn
;
}
}
else
{
else
{
this
.
handlers
.
trigger
(
"
onErrorEvent
"
,
c_oAscError
.
ID
.
PastInMergeAreaError
,
c_oAscError
.
Level
.
NoCritical
);
this
.
handlers
.
trigger
(
"
onErrorEvent
"
,
c_oAscError
.
ID
.
PastInMergeAreaError
,
c_oAscError
.
Level
.
NoCritical
);
return
;
return
;
}
}
...
@@ -9517,29 +9526,33 @@
...
@@ -9517,29 +9526,33 @@
}
}
}
}
}
}
var
rMax2
=
rMax
;
var
rMax2
=
rMax
;
var
cMax2
=
cMax
;
var
cMax2
=
cMax
;
var
rMax
=
values
.
length
;
var
rMax
=
pasteContent
.
content
.
length
;
var
trueArn
=
t
.
activeRange
;
var
trueArn
=
t
.
activeRange
;
if
(
isCheckSelection
)
{
if
(
isCheckSelection
)
{
var
newArr
=
arn
.
clone
(
true
);
var
newArr
=
arn
.
clone
(
true
);
newArr
.
r2
=
rMax2
-
1
;
newArr
.
r2
=
rMax2
-
1
;
newArr
.
c2
=
cMax2
-
1
;
newArr
.
c2
=
cMax2
-
1
;
if
(
isMultiple
||
isOneMerge
)
{
if
(
isMultiple
||
isOneMerge
)
{
newArr
.
r2
=
trueArn
.
r2
;
newArr
.
r2
=
trueArn
.
r2
;
newArr
.
c2
=
trueArn
.
c2
;
newArr
.
c2
=
trueArn
.
c2
;
}
}
return
newArr
;
return
newArr
;
}
}
//если не возникает конфликт, делаем unmerge
//если не возникает конфликт, делаем unmerge
rangeUnMerge
.
unmerge
();
rangeUnMerge
.
unmerge
();
if
(
!
isOneMerge
)
{
if
(
!
isOneMerge
)
{
arn
.
r2
=
(
rMax2
-
1
>
0
)
?
(
rMax2
-
1
)
:
0
;
arn
.
r2
=
(
rMax2
-
1
>
0
)
?
(
rMax2
-
1
)
:
0
;
arn
.
c2
=
(
cMax2
-
1
>
0
)
?
(
cMax2
-
1
)
:
0
;
arn
.
c2
=
(
cMax2
-
1
>
0
)
?
(
cMax2
-
1
)
:
0
;
}
}
var
mergeArr
=
[];
var
n
=
0
;
var
n
=
0
;
if
(
isMultiple
)
//случай автозаполнения сложных форм
if
(
isMultiple
)
//случай автозаполнения сложных форм
{
{
...
@@ -9549,39 +9562,51 @@
...
@@ -9549,39 +9562,51 @@
var
plRow
=
(
rMax2
-
arn
.
r1
);
var
plRow
=
(
rMax2
-
arn
.
r1
);
var
plCol
=
(
arn
.
c2
-
arn
.
c1
)
+
1
;
var
plCol
=
(
arn
.
c2
-
arn
.
c1
)
+
1
;
}
}
else
{
else
{
var
maxARow
=
1
;
var
maxARow
=
1
;
var
maxACol
=
1
;
var
maxACol
=
1
;
var
plRow
=
0
;
var
plRow
=
0
;
var
plCol
=
0
;
var
plCol
=
0
;
}
}
if
(
isMultiple
)
{
if
(
values
[
arn
.
r1
]
&&
values
[
arn
.
r1
][
arn
.
c1
]
)
{
if
(
isMultiple
)
var
currentObj
=
values
[
arn
.
r1
][
arn
.
c1
][
0
];
{
if
(
pasteContent
.
content
[
arn
.
r1
]
&&
pasteContent
.
content
[
arn
.
r1
][
arn
.
c1
]
)
{
var
currentObj
=
pasteContent
.
content
[
arn
.
r1
][
arn
.
c1
].
content
[
0
];
var
valFormat
=
''
;
var
valFormat
=
''
;
if
(
currentObj
[
0
]
!==
undefined
)
{
if
(
currentObj
[
0
]
!==
undefined
)
{
valFormat
=
currentObj
[
0
].
text
;
valFormat
=
currentObj
[
0
].
text
;
}
}
}
}
}
}
for
(
var
autoR
=
0
;
autoR
<
maxARow
;
++
autoR
)
{
for
(
var
autoC
=
0
;
autoC
<
maxACol
;
++
autoC
)
{
var
mergeArr
=
[];
for
(
var
r
=
arn
.
r1
;
r
<
rMax
;
++
r
)
{
for
(
var
autoR
=
0
;
autoR
<
maxARow
;
++
autoR
)
for
(
var
c
=
arn
.
c1
;
c
<
values
[
r
].
length
;
++
c
)
{
{
if
(
undefined
!==
values
[
r
][
c
]
)
{
for
(
var
autoC
=
0
;
autoC
<
maxACol
;
++
autoC
)
{
for
(
var
r
=
arn
.
r1
;
r
<
rMax
;
++
r
)
{
for
(
var
c
=
arn
.
c1
;
c
<
pasteContent
.
content
[
r
].
length
;
++
c
)
{
if
(
undefined
!==
pasteContent
.
content
[
r
][
c
]
)
{
var
range
=
t
.
model
.
getRange3
(
r
+
autoR
*
plRow
,
c
+
autoC
*
plCol
,
r
+
autoR
*
plRow
,
c
+
autoC
*
plCol
);
var
range
=
t
.
model
.
getRange3
(
r
+
autoR
*
plRow
,
c
+
autoC
*
plCol
,
r
+
autoR
*
plRow
,
c
+
autoC
*
plCol
);
var
currentObj
=
values
[
r
][
c
][
0
];
var
currentObj
=
pasteContent
.
content
[
r
][
c
].
content
;
if
(
currentObj
.
length
===
1
)
{
if
(
currentObj
.
length
===
1
)
//if(!isMultiple)
{
//{
var
valFormat
=
currentObj
[
0
].
text
;
var
valFormat
=
currentObj
[
0
].
text
;
var
nameFormat
=
false
;
var
nameFormat
=
false
;
//}
if
(
currentObj
[
0
].
cellFrom
)
{
if
(
currentObj
[
0
].
cellFrom
)
{
var
offset
=
range
.
getCells
()[
0
].
getOffset2
(
currentObj
[
0
].
cellFrom
),
assemb
,
_p_
=
new
AscCommonExcel
.
parserFormula
(
currentObj
[
0
].
text
.
substring
(
1
),
""
,
range
.
worksheet
);
var
offset
=
range
.
getCells
()[
0
].
getOffset2
(
currentObj
[
0
].
cellFrom
),
assemb
,
_p_
=
new
AscCommonExcel
.
parserFormula
(
currentObj
[
0
].
text
.
substring
(
1
),
""
,
range
.
worksheet
);
if
(
_p_
.
parse
()
)
{
if
(
_p_
.
parse
()
)
{
assemb
=
_p_
.
changeOffset
(
offset
).
assemble
();
assemb
=
_p_
.
changeOffset
(
offset
).
assemble
();
//range.setValue("="+assemb);
//range.setValue("="+assemb);
arrFormula
[
numFor
]
=
{};
arrFormula
[
numFor
]
=
{};
...
@@ -9590,16 +9615,20 @@
...
@@ -9590,16 +9615,20 @@
numFor
++
;
numFor
++
;
}
}
}
}
else
{
else
{
range
.
setValue
(
valFormat
);
range
.
setValue
(
valFormat
);
}
}
if
(
nameFormat
)
{
if
(
nameFormat
)
{
range
.
setNumFormat
(
nameFormat
);
range
.
setNumFormat
(
nameFormat
);
}
}
range
.
setBold
(
currentObj
[
0
].
format
.
b
);
range
.
setBold
(
currentObj
[
0
].
format
.
b
);
range
.
setItalic
(
currentObj
[
0
].
format
.
i
);
range
.
setItalic
(
currentObj
[
0
].
format
.
i
);
range
.
setStrikeout
(
currentObj
[
0
].
format
.
s
);
range
.
setStrikeout
(
currentObj
[
0
].
format
.
s
);
if
(
!
isOneMerge
&&
currentObj
[
0
].
format
&&
currentObj
[
0
].
format
.
c
!=
null
&&
currentObj
[
0
].
format
.
c
!=
undefined
)
{
if
(
!
isOneMerge
&&
currentObj
[
0
].
format
&&
currentObj
[
0
].
format
.
c
!=
null
&&
currentObj
[
0
].
format
.
c
!=
undefined
)
{
range
.
setFontcolor
(
currentObj
[
0
].
format
.
c
);
range
.
setFontcolor
(
currentObj
[
0
].
format
.
c
);
}
}
range
.
setUnderline
(
currentObj
[
0
].
format
.
u
);
range
.
setUnderline
(
currentObj
[
0
].
format
.
u
);
...
@@ -9607,54 +9636,68 @@
...
@@ -9607,54 +9636,68 @@
range
.
setFontname
(
currentObj
[
0
].
format
.
fn
);
range
.
setFontname
(
currentObj
[
0
].
format
.
fn
);
range
.
setFontsize
(
currentObj
[
0
].
format
.
fs
);
range
.
setFontsize
(
currentObj
[
0
].
format
.
fs
);
}
}
else
{
else
{
range
.
setValue2
(
currentObj
);
range
.
setValue2
(
currentObj
);
range
.
setAlignVertical
(
currentObj
.
va
);
range
.
setAlignVertical
(
currentObj
.
va
);
}
}
if
(
currentObj
.
length
===
1
&&
currentObj
[
0
].
format
.
fs
!==
''
&&
currentObj
[
0
].
format
.
fs
!==
null
&&
currentObj
[
0
].
format
.
fs
!==
undefined
)
{
if
(
currentObj
.
length
===
1
&&
currentObj
[
0
].
format
.
fs
!==
''
&&
currentObj
[
0
].
format
.
fs
!==
null
&&
currentObj
[
0
].
format
.
fs
!==
undefined
)
{
range
.
setFontsize
(
currentObj
[
0
].
format
.
fs
);
range
.
setFontsize
(
currentObj
[
0
].
format
.
fs
);
}
}
if
(
!
isOneMerge
)
{
if
(
!
isOneMerge
)
{
range
.
setAlignHorizontal
(
currentObj
.
a
);
range
.
setAlignHorizontal
(
currentObj
.
a
);
}
}
var
isMerged
=
false
;
var
isMerged
=
false
;
for
(
var
mergeCheck
=
0
;
mergeCheck
<
mergeArr
.
length
;
++
mergeCheck
)
{
for
(
var
mergeCheck
=
0
;
mergeCheck
<
mergeArr
.
length
;
++
mergeCheck
)
if
(
r
+
1
+
autoR
*
plRow
<=
mergeArr
[
mergeCheck
].
r2
&&
r
+
1
+
autoR
*
plRow
>=
mergeArr
[
mergeCheck
].
r1
&&
c
+
autoC
*
plCol
+
1
<=
mergeArr
[
mergeCheck
].
c2
&&
c
+
1
+
autoC
*
plCol
>=
mergeArr
[
mergeCheck
].
c1
)
{
{
if
(
r
+
1
+
autoR
*
plRow
<=
mergeArr
[
mergeCheck
].
r2
&&
r
+
1
+
autoR
*
plRow
>=
mergeArr
[
mergeCheck
].
r1
&&
c
+
autoC
*
plCol
+
1
<=
mergeArr
[
mergeCheck
].
c2
&&
c
+
1
+
autoC
*
plCol
>=
mergeArr
[
mergeCheck
].
c1
)
{
isMerged
=
true
;
isMerged
=
true
;
}
}
}
}
//обработка для мерженных ячеек
//обработка для мерженных ячеек
if
(
(
currentObj
.
colSpan
>
1
||
currentObj
.
rowSpan
>
1
)
&&
!
isMerged
)
{
if
(
(
currentObj
.
colSpan
>
1
||
currentObj
.
rowSpan
>
1
)
&&
!
isMerged
)
{
range
.
setOffsetLast
(
{
offsetCol
:
currentObj
.
colSpan
-
1
,
offsetRow
:
currentObj
.
rowSpan
-
1
}
);
range
.
setOffsetLast
(
{
offsetCol
:
currentObj
.
colSpan
-
1
,
offsetRow
:
currentObj
.
rowSpan
-
1
}
);
mergeArr
[
n
]
=
{
mergeArr
[
n
]
=
{
r1
:
range
.
first
.
row
,
r2
:
range
.
last
.
row
,
c1
:
range
.
first
.
col
,
c2
:
range
.
last
.
col
r1
:
range
.
first
.
row
,
r2
:
range
.
last
.
row
,
c1
:
range
.
first
.
col
,
c2
:
range
.
last
.
col
};
};
n
++
;
n
++
;
if
(
currentObj
[
0
]
==
undefined
)
{
if
(
currentObj
[
0
]
==
undefined
)
{
range
.
setValue
(
''
);
range
.
setValue
(
''
);
}
}
range
.
merge
(
c_oAscMergeOptions
.
Merge
);
range
.
merge
(
c_oAscMergeOptions
.
Merge
);
}
}
if
(
!
isOneMerge
)
{
if
(
!
isOneMerge
)
{
range
.
setBorderSrc
(
currentObj
.
borders
);
range
.
setBorderSrc
(
currentObj
.
borders
);
}
}
range
.
setWrap
(
currentObj
.
wrap
);
range
.
setWrap
(
currentObj
.
wrap
);
if
(
currentObj
.
bc
&&
currentObj
.
bc
.
rgb
)
{
if
(
currentObj
.
bc
&&
currentObj
.
bc
.
rgb
)
{
range
.
setFill
(
currentObj
.
bc
);
range
.
setFill
(
currentObj
.
bc
);
}
}
var
link
=
values
[
r
][
c
][
0
].
hyperLink
;
if
(
link
)
{
var
link
=
pasteContent
.
content
[
r
][
c
].
hyperLink
;
if
(
link
)
{
var
newHyperlink
=
new
AscCommonExcel
.
Hyperlink
();
var
newHyperlink
=
new
AscCommonExcel
.
Hyperlink
();
if
(
values
[
r
][
c
][
0
].
hyperLink
.
search
(
'
#
'
)
===
0
)
{
if
(
pasteContent
.
content
[
r
][
c
].
hyperLink
.
search
(
'
#
'
)
===
0
)
{
newHyperlink
.
setLocation
(
link
.
replace
(
'
#
'
,
''
)
);
newHyperlink
.
setLocation
(
link
.
replace
(
'
#
'
,
''
)
);
}
}
else
{
else
{
newHyperlink
.
Hyperlink
=
link
;
newHyperlink
.
Hyperlink
=
link
;
}
}
newHyperlink
.
Ref
=
range
;
newHyperlink
.
Ref
=
range
;
newHyperlink
.
Tooltip
=
values
[
r
][
c
][
0
].
toolTip
;
newHyperlink
.
Tooltip
=
pasteContent
.
content
[
r
][
c
].
toolTip
;
range
.
setHyperlink
(
newHyperlink
);
range
.
setHyperlink
(
newHyperlink
);
}
}
}
}
...
@@ -9662,7 +9705,9 @@
...
@@ -9662,7 +9705,9 @@
}
}
}
}
}
}
if
(
isMultiple
)
{
if
(
isMultiple
)
{
arn
.
r2
=
trueArn
.
r2
;
arn
.
r2
=
trueArn
.
r2
;
arn
.
c2
=
trueArn
.
c2
;
arn
.
c2
=
trueArn
.
c2
;
}
}
...
...
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