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
5397fc2b
Commit
5397fc2b
authored
Sep 23, 2016
by
alexey.musinov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mobile-coautoring
parent
d51719cc
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
229 additions
and
57 deletions
+229
-57
cell/api.js
cell/api.js
+8
-6
cell/native/common.js
cell/native/common.js
+57
-31
cell/native/native.js
cell/native/native.js
+125
-11
common/Charts/DrawingObjects.js
common/Charts/DrawingObjects.js
+4
-2
common/apiBase.js
common/apiBase.js
+2
-2
common/docscoapi.js
common/docscoapi.js
+10
-3
common/editorscommon.js
common/editorscommon.js
+23
-2
No files found.
cell/api.js
View file @
5397fc2b
/*
/*
* (c) Copyright Ascensio System SIA 2010-2016
*
* This program is a free software product. You can redistribute it and/or
...
...
@@ -3086,14 +3086,16 @@ var editor;
}
};
spreadsheet_api
.
prototype
.
asc_nativeOpenFile
=
function
(
base64File
,
version
)
{
spreadsheet_api
.
prototype
.
asc_nativeOpenFile
=
function
(
base64File
,
version
,
isUser
)
{
asc
[
"
editor
"
]
=
this
;
this
.
SpellCheckUrl
=
''
;
this
.
User
=
new
AscCommon
.
asc_CUser
();
this
.
User
.
setId
(
"
TM
"
);
this
.
User
.
setUserName
(
"
native
"
);
if
(
undefined
==
isUser
)
{
this
.
User
=
new
AscCommon
.
asc_CUser
();
this
.
User
.
setId
(
"
TM
"
);
this
.
User
.
setUserName
(
"
native
"
);
}
this
.
wbModel
=
new
AscCommonExcel
.
Workbook
(
this
.
handlers
,
this
);
this
.
initGlobalObjects
(
this
.
wbModel
);
...
...
cell/native/common.js
View file @
5397fc2b
...
...
@@ -42,6 +42,8 @@ window.location.host = "";
window
.
location
.
href
=
""
;
window
.
location
.
pathname
=
""
;
window
.
XMLHttpRequest
=
function
()
{};
window
.
NATIVE_EDITOR_ENJINE
=
true
;
window
.
NATIVE_EDITOR_ENJINE_SYNC_RECALC
=
true
;
window
.
IS_NATIVE_EDITOR
=
true
;
...
...
@@ -280,58 +282,80 @@ window["native"] = native;
var
_api
=
null
;
window
.
NativeSupportTimeouts
=
fals
e
;
window
.
NativeSupportTimeouts
=
tru
e
;
window
.
NativeTimeoutObject
=
{};
function
clearTimeout
(
_id
)
{
if
(
!
window
.
NativeSupportTimeouts
)
return
;
window
.
NativeTimeoutObject
[
""
+
_id
]
=
undefined
;
window
.
native
[
"
ClearTimeout
"
](
_id
);
}
function
setTimeout
(
func
,
interval
)
{
if
(
!
window
.
NativeSupportTimeouts
)
return
;
var
_id
=
window
.
native
[
"
GenerateTimeoutId
"
](
interval
);
window
.
NativeTimeoutObject
[
""
+
_id
]
=
func
;
return
_id
;
var
id
=
window
[
"
native
"
][
"
GenerateTimeoutId
"
](
interval
);
window
.
NativeTimeoutObject
[
""
+
id
]
=
{
"
func
"
:
func
,
repeat
:
false
};
return
id
;
}
function
offline_timeoutFire
(
_id
)
{
function
clearTimeout
(
id
)
{
if
(
!
window
.
NativeSupportTimeouts
)
return
;
var
_prop
=
""
+
_i
d
;
var
_func
=
window
.
NativeTimeoutObject
[
_prop
]
;
window
.
NativeTimeoutObject
[
_prop
]
=
undefined
;
window
.
NativeTimeoutObject
[
""
+
id
]
=
undefine
d
;
window
[
"
native
"
][
"
ClearTimeout
"
](
id
)
;
}
if
(
!
_func
)
function
setInterval
(
func
,
interval
)
{
if
(
!
window
.
NativeSupportTimeouts
)
return
;
_func
.
call
(
null
);
_func
=
null
;
// console.log("setInterval");
// var intervalFunc = function() {
//
// console.log("intervalFunc");
//
// func.call(null);
// setInterval(func, interval);
// }
var
id
=
window
[
"
native
"
][
"
GenerateTimeoutId
"
](
interval
);
window
.
NativeTimeoutObject
[
""
+
id
]
=
{
func
:
func
,
repeat
:
true
,
interval
:
interval
};
// intervalFunc;
return
id
;
}
function
clearInterval
(
_
id
)
{
function
clearInterval
(
id
)
{
if
(
!
window
.
NativeSupportTimeouts
)
return
;
window
.
NativeTimeoutObject
[
""
+
_
id
]
=
undefined
;
window
.
native
[
"
ClearTimeout
"
](
_
id
);
window
.
NativeTimeoutObject
[
""
+
id
]
=
undefined
;
window
[
"
native
"
][
"
ClearTimeout
"
](
id
);
}
function
setInterval
(
func
,
interval
)
{
function
offline_timeoutFire
(
id
)
{
if
(
!
window
.
NativeSupportTimeouts
)
return
;
var
_intervalFunc
=
function
()
{
func
.
call
(
null
);
setTimeout
(
func
,
interval
);
};
var
prop
=
""
+
id
;
if
(
undefined
===
window
.
NativeTimeoutObject
[
prop
])
{
return
;
}
var
func
=
window
.
NativeTimeoutObject
[
prop
].
func
;
var
repeat
=
window
.
NativeTimeoutObject
[
prop
].
repeat
;
var
interval
=
window
.
NativeTimeoutObject
[
prop
].
interval
;
window
.
NativeTimeoutObject
[
prop
]
=
undefined
;
if
(
!
func
)
return
;
var
_id
=
window
.
native
[
"
GenerateTimeoutId
"
](
interval
);
window
.
NativeTimeoutObject
[
""
+
_id
]
=
_intervalFunc
;
return
_id
;
func
.
call
(
null
);
if
(
repeat
)
{
setInterval
(
func
,
interval
);
}
func
=
null
;
}
window
.
clearTimeout
=
clearTimeout
;
...
...
@@ -468,4 +492,6 @@ var FT_Common = new _FT_Common();
var
global_memory_stream_menu
=
CreateNativeMemoryStream
();
window
[
'
AscFonts
'
]
=
window
[
'
AscFonts
'
]
||
{};
window
[
'
AscFonts
'
].
FT_Common
=
FT_Common
;
\ No newline at end of file
window
[
'
AscFonts
'
].
FT_Common
=
FT_Common
;
window
[
'
SockJS
'
]
=
createSockJS
();
cell/native/native.js
View file @
5397fc2b
...
...
@@ -2702,10 +2702,11 @@ function OfflineEditor () {
this
.
col0
=
0
;
this
.
row0
=
0
;
this
.
translate
=
null
;
this
.
initSettings
=
null
;
// main
this
.
beforeOpen
=
function
()
{
this
.
beforeOpen
=
function
()
{
var
offlineEditor
=
this
;
...
...
@@ -3756,8 +3757,10 @@ function OfflineEditor () {
};
};
this
.
openFile
=
function
(
)
{
this
.
openFile
=
function
(
settings
)
{
this
.
initSettings
=
settings
;
this
.
beforeOpen
();
window
[
"
CreateMainTextMeasurerWrapper
"
]();
...
...
@@ -3769,25 +3772,32 @@ function OfflineEditor () {
_api
=
new
window
[
"
Asc
"
][
"
spreadsheet_api
"
]({});
var
userInfo
=
new
Asc
.
asc_CUserInfo
();
userInfo
.
asc_putId
(
'
ios
'
);
userInfo
.
asc_putFullName
(
'
ios
'
);
userInfo
.
asc_getLastName
(
'
ios
'
);
userInfo
.
asc_putId
(
this
.
initSettings
.
userId
);
userInfo
.
asc_putFullName
(
this
.
initSettings
.
fullName
);
userInfo
.
asc_putFirstName
(
this
.
initSettings
.
firstName
);
userInfo
.
asc_putLastName
(
this
.
initSettings
.
lastName
);
var
docInfo
=
new
Asc
.
asc_CDocInfo
();
docInfo
.
put_Id
(
'
ios
'
);
var
docInfo
=
new
Asc
.
asc_CDocInfo
();
docInfo
.
put_Id
(
this
.
initSettings
.
documentId
);
docInfo
.
put_UserInfo
(
userInfo
);
_api
.
asc_setDocInfo
(
docInfo
);
this
.
offline_beforeInit
();
this
.
registerEventsHandlers
();
_api
.
asc_setAutoSaveGap
(
1
);
_api
.
asc_nativeOpenFile
(
window
.
native
[
"
GetFileString
"
](),
undefined
,
true
);
_api
.
asc_setDocInfo
(
docInfo
);
_api
.
asc_nativeOpenFile
(
window
.
native
[
"
GetFileString
"
]());
_api
.
asc_SetFastCollaborative
(
true
);
this
.
asc_WriteAllWorksheets
(
true
);
_api
.
asc_SendThemeColorScheme
();
_api
.
asc_ApplyColorScheme
(
false
);
_api
.
_applyFirstLoadChanges
();
window
[
"
NativeSupportTimeouts
"
]
=
true
;
...
...
@@ -3805,6 +3815,14 @@ function OfflineEditor () {
// TODO: Implement Text Art Styles
this
.
offline_afteInit
();
setInterval
(
function
()
{
//checkAUtoSave();
//console.log("autosave");
_api
.
_autoSave
();
},
100
);
};
this
.
registerEventsHandlers
=
function
()
{
...
...
@@ -3893,6 +3911,25 @@ function OfflineEditor () {
asc_WriteAutoFiltersOptions
(
state
,
stream
);
window
[
"
native
"
][
"
OnCallMenuEvent
"
](
3060
,
stream
);
// ASC_SPREADSHEETS_EVENT_TYPE_FILTER_DIALOG
});
_api
.
asc_registerCallback
(
'
asc_onGetEditorPermissions
'
,
function
(
state
)
{
//console.log("asc_onGetEditorPermissions");
var
rData
=
{
"
c
"
:
'
open
'
,
"
id
"
:
t
.
initSettings
.
documentId
,
"
userid
"
:
t
.
initSettings
.
userId
,
"
format
"
:
"
xlsx
"
,
"
vkey
"
:
undefined
,
"
url
"
:
this
.
documentUrl
,
"
title
"
:
this
.
documentTitle
,
"
embeddedfonts
"
:
false
,
"
viewmode
"
:
false
// this.getViewMode()
};
_api
.
CoAuthoringApi
.
auth
(
false
,
// this.getViewMode()
rData
);
});
};
this
.
updateFrozen
=
function
()
{
var
ws
=
_api
.
wb
.
getWorksheet
();
...
...
@@ -5228,7 +5265,7 @@ function OfflineEditor () {
}
var
_s
=
new
OfflineEditor
();
function
offline_of
(
)
{
_s
.
openFile
(
);}
function
offline_of
(
arg
)
{
_s
.
openFile
(
arg
);}
function
offline_stz
(
v
)
{
_s
.
zoom
=
v
;
_api
.
asc_setZoom
(
v
);}
function
offline_ds
(
x
,
y
,
width
,
height
,
ratio
,
istoplayer
)
{
_s
.
drawSheet
(
x
,
y
,
width
,
height
,
ratio
,
istoplayer
);}
function
offline_dh
(
x
,
y
,
width
,
height
,
type
,
ratio
)
{
_s
.
drawHeader
(
x
,
y
,
width
,
height
,
type
,
ratio
);}
...
...
@@ -7143,7 +7180,84 @@ function offline_apply_event(type,params) {
ws
.
changeRowHeight
(
toRow
,
height
,
0
);
break
;
}
case
10000
:
// ASC_SOCKET_EVENT_TYPE_OPEN
{
var
t
=
_api
.
CoAuthoringApi
.
_CoAuthoringApi
;
t
.
_state
=
AscCommon
.
ConnectionState
.
WaitAuth
;
t
.
onFirstConnect
();
break
;
}
case
10010
:
// ASC_SOCKET_EVENT_TYPE_CLOSE
{
break
;
}
case
10020
:
// ASC_SOCKET_EVENT_TYPE_MESSAGE
{
var
t
=
_api
.
CoAuthoringApi
.
_CoAuthoringApi
;
var
dataObject
=
JSON
.
parse
(
params
);
// console.log(params + " : " + dataObject['type']);
switch
(
dataObject
[
'
type
'
])
{
case
'
auth
'
:
t
.
_onAuth
(
dataObject
);
break
;
case
'
message
'
:
t
.
_onMessages
(
dataObject
,
false
);
break
;
case
'
cursor
'
:
t
.
_onCursor
(
dataObject
);
break
;
case
'
getLock
'
:
t
.
_onGetLock
(
dataObject
);
break
;
case
'
releaseLock
'
:
t
.
_onReleaseLock
(
dataObject
);
break
;
case
'
connectState
'
:
t
.
_onConnectionStateChanged
(
dataObject
);
break
;
case
'
saveChanges
'
:
t
.
_onSaveChanges
(
dataObject
);
break
;
case
'
saveLock
'
:
t
.
_onSaveLock
(
dataObject
);
break
;
case
'
unSaveLock
'
:
t
.
_onUnSaveLock
(
dataObject
);
break
;
case
'
savePartChanges
'
:
t
.
_onSavePartChanges
(
dataObject
);
break
;
case
'
drop
'
:
t
.
_onDrop
(
dataObject
);
break
;
case
'
waitAuth
'
:
/*Ждем, когда придет auth, документ залочен*/
break
;
case
'
error
'
:
/*Старая версия sdk*/
t
.
_onDrop
(
dataObject
);
break
;
case
'
documentOpen
'
:
t
.
_documentOpen
(
dataObject
);
break
;
case
'
warning
'
:
t
.
_onWarning
(
dataObject
);
break
;
case
'
license
'
:
t
.
_onLicense
(
dataObject
);
break
;
}
break
;
}
default
:
break
;
}
...
...
common/Charts/DrawingObjects.js
View file @
5397fc2b
...
...
@@ -1336,8 +1336,10 @@ function DrawingObjects() {
//-----------------------------------------------------------------------------------
_this
.
init
=
function
(
currentSheet
)
{
setInterval
(
drawTaskFunction
,
5
);
if
(
!
window
[
'
IS_NATIVE_EDITOR
'
])
{
setInterval
(
drawTaskFunction
,
5
);
}
var
api
=
window
[
"
Asc
"
][
"
editor
"
];
worksheet
=
currentSheet
;
...
...
common/apiBase.js
View file @
5397fc2b
/*
/*
* (c) Copyright Ascensio System SIA 2010-2016
*
* This program is a free software product. You can redistribute it and/or
...
...
@@ -515,7 +515,7 @@
}
//в обычном серверном режиме портим ссылку, потому что CoAuthoring теперь имеет встроенный адрес
//todo надо использовать проверку get_OfflineApp
if
(
!
(
window
[
'
NATIVE_EDITOR_ENJINE
'
]
||
offlineMode
===
this
.
documentUrl
))
if
(
!
(
window
[
'
NATIVE_EDITOR_ENJINE
'
]
||
offlineMode
===
this
.
documentUrl
)
||
window
[
'
IS_NATIVE_EDITOR
'
]
)
{
this
.
CoAuthoringApi
.
set_url
(
null
);
}
...
...
common/docscoapi.js
View file @
5397fc2b
...
...
@@ -1259,9 +1259,16 @@
DocsCoApi
.
prototype
.
_initSocksJs
=
function
()
{
var
t
=
this
;
//ограничиваем transports WebSocket и XHR / JSONP polling, как и engine.io https://github.com/socketio/engine.io
//при переборе streaming transports у клиента с wirewall происходило зацикливание(не повторялось в версии sock.js 0.3.4)
var
sockjs
=
this
.
sockjs
=
new
(
this
.
_getSockJs
())(
this
.
sockjs_url
,
null
,
{
transports
:
[
'
websocket
'
,
'
xdr-polling
'
,
'
xhr-polling
'
,
'
iframe-xhr-polling
'
,
'
jsonp-polling
'
]});
if
(
window
[
'
IS_NATIVE_EDITOR
'
])
{
var
sockjs
=
this
.
sockjs
=
window
[
'
SockJS
'
];
sockjs
.
open
();
return
sockjs
;
}
else
{
//ограничиваем transports WebSocket и XHR / JSONP polling, как и engine.io https://github.com/socketio/engine.io
//при переборе streaming transports у клиента с wirewall происходило зацикливание(не повторялось в версии sock.js 0.3.4)
var
sockjs
=
this
.
sockjs
=
new
(
this
.
_getSockJs
())(
this
.
sockjs_url
,
null
,
{
transports
:
[
'
websocket
'
,
'
xdr-polling
'
,
'
xhr-polling
'
,
'
iframe-xhr-polling
'
,
'
jsonp-polling
'
]});
}
sockjs
.
onopen
=
function
()
{
if
(
t
.
reconnectTimeout
)
{
...
...
common/editorscommon.js
View file @
5397fc2b
/*
/*
* (c) Copyright Ascensio System SIA 2010-2016
*
* This program is a free software product. You can redistribute it and/or
...
...
@@ -268,7 +268,26 @@ function openFileCommand(binUrl, changesUrl, Signature, callback) {
};
var
sFileUrl
=
binUrl
;
sFileUrl
=
sFileUrl
.
replace
(
/
\\
/g
,
"
/
"
);
asc_ajax
({
if
(
window
[
'
IS_NATIVE_EDITOR
'
])
{
result
=
window
[
"
native
"
][
"
openFileCommand
"
](
sFileUrl
,
changesUrl
,
Signature
);
var
url
;
var
nIndex
=
sFileUrl
.
lastIndexOf
(
"
/
"
);
url
=
(
-
1
!==
nIndex
)
?
sFileUrl
.
substring
(
0
,
nIndex
+
1
)
:
sFileUrl
;
if
(
0
<
result
.
length
)
{
oResult
.
bSerFormat
=
Signature
===
result
.
substring
(
0
,
Signature
.
length
);
oResult
.
data
=
result
;
oResult
.
url
=
url
;
}
else
{
bError
=
true
;
}
bEndLoadFile
=
true
;
onEndOpen
();
}
else
{
asc_ajax
({
url
:
sFileUrl
,
dataType
:
"
text
"
,
success
:
function
(
result
)
{
...
...
@@ -292,6 +311,8 @@ function openFileCommand(binUrl, changesUrl, Signature, callback) {
onEndOpen
();
}
});
}
if
(
null
!=
changesUrl
)
{
getJSZipUtils
().
getBinaryContent
(
changesUrl
,
function
(
err
,
data
)
{
bEndLoadChanges
=
true
;
...
...
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