Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
P
proview
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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Esteban Blanc
proview
Commits
0501e23c
Commit
0501e23c
authored
May 15, 2019
by
Christoffer Ackelman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Web: Changed Gdh to use Promises
parent
115edd49
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
820 additions
and
1014 deletions
+820
-1014
java/jsw/co/src/gdh.ts
java/jsw/co/src/gdh.ts
+392
-563
java/jsw/ev/src/ev.ts
java/jsw/ev/src/ev.ts
+64
-70
java/jsw/flow/src/flow.ts
java/jsw/flow/src/flow.ts
+1
-4
java/jsw/ge/src/ge_appl.ts
java/jsw/ge/src/ge_appl.ts
+8
-8
java/jsw/ge/src/ge_dyn.ts
java/jsw/ge/src/ge_dyn.ts
+119
-127
java/jsw/ge/src/ge_graph.ts
java/jsw/ge/src/ge_graph.ts
+7
-11
java/jsw/opwind/src/opwind.ts
java/jsw/opwind/src/opwind.ts
+9
-10
java/jsw/xtt/src/xtt.ts
java/jsw/xtt/src/xtt.ts
+220
-221
No files found.
java/jsw/co/src/gdh.ts
View file @
0501e23c
...
...
@@ -222,36 +222,6 @@ enum Msg {
GET_OBJECT_FROM_AREF
}
class
Uint8ArrayHelper
{
buf
:
Uint8Array
;
idx
:
number
;
constructor
(
size
,
tag
)
{
this
.
buf
=
new
Uint8Array
(
size
);
this
.
buf
[
0
]
=
tag
;
this
.
idx
=
2
;
}
pack16Bit
(
value
)
{
this
.
buf
[
this
.
idx
++
]
=
value
&
0xFF
;
this
.
buf
[
this
.
idx
++
]
=
(
value
>>
8
)
&
0xFF
;
}
pack32Bit
(
value
)
{
this
.
buf
[
this
.
idx
++
]
=
value
&
0xFF
;
this
.
buf
[
this
.
idx
++
]
=
(
value
>>
8
)
&
0xFF
;
this
.
buf
[
this
.
idx
++
]
=
(
value
>>
16
)
&
0xFF
;
this
.
buf
[
this
.
idx
++
]
=
(
value
>>
24
)
&
0xFF
;
}
packString
(
string
)
{
this
.
pack16Bit
(
string
.
length
);
for
(
let
i
=
0
;
i
<
string
.
length
;
i
++
)
{
this
.
buf
[
this
.
idx
++
]
=
string
.
charCodeAt
(
i
);
}
}
}
class
DataViewHelper
{
dv
:
DataView
;
offset
=
0
;
...
...
@@ -296,20 +266,19 @@ class DataViewHelper {
}
class
Gdh
{
pending
:
Array
=
[];
sub
:
Array
<
Sub
>
=
[];
static
PORT
=
4448
;
ws
:
WebSocket
=
null
;
return_cb
:
()
=>
void
=
null
;
next_id
=
1234
;
subscriptionCount
=
1
;
listSent
=
false
;
pending
=
[];
constructor
(
open_cb
,
close_cb
=
null
)
{
if
(
window
.
location
.
hostname
===
""
)
{
this
.
ws
=
new
WebSocket
(
"
ws:127.0.0.1:
4448
"
);
this
.
ws
=
new
WebSocket
(
"
ws:127.0.0.1:
"
+
String
(
Gdh
.
PORT
)
);
}
else
{
this
.
ws
=
new
WebSocket
(
"
ws://
"
+
window
.
location
.
hostname
+
"
:
4448
"
);
this
.
ws
=
new
WebSocket
(
"
ws://
"
+
window
.
location
.
hostname
+
"
:
"
+
String
(
Gdh
.
PORT
)
);
}
this
.
ws
.
binaryType
=
"
arraybuffer
"
;
...
...
@@ -326,406 +295,253 @@ class Gdh {
};
this
.
ws
.
onmessage
=
function
(
e
)
{
if
(
typeof
e
.
data
===
"
string
"
)
{
let
dv
=
new
DataViewHelper
(
e
.
data
);
let
type
=
dv
.
getUint8
();
let
id
=
dv
.
getUint32
();
let
resolve
=
this
.
pending
[
id
];
if
(
type
===
Msg
.
GET_OBJECT_REF_INFO_ALL
)
{
resolve
(
new
DataViewHelper
(
e
.
data
));
delete
this
.
pending
[
id
];
}
else
{
if
(
e
.
data
instanceof
ArrayBuffer
)
{
let
dv
=
new
DataViewHelper
(
e
.
data
);
let
type
=
dv
.
getUint8
();
let
id
=
dv
.
getUint32
();
let
sts
=
dv
.
getUint32
();
switch
(
type
)
{
case
Msg
.
GET_OBJECT_INFO_BOOLEAN
:
let
value
=
dv
.
getUint8
();
let
func_cb
=
this
.
gdh
.
pending
[
id
].
func_cb
;
func_cb
(
id
,
sts
,
value
);
delete
this
.
gdh
.
pending
[
id
];
break
;
case
Msg
.
GET_OBJECT_INFO_INT
:
let
value
=
dv
.
getUint32
();
let
pending_data
=
this
.
gdh
.
pending
[
id
];
pending_data
.
func_cb
(
id
,
pending_data
.
data
,
sts
,
value
);
delete
this
.
gdh
.
pending
[
id
];
break
;
case
Msg
.
GET_OBJECT_INFO_FLOAT
:
let
value
=
dv
.
getFloat32
();
let
pending_data
=
this
.
gdh
.
pending
[
id
];
pending_data
.
func_cb
(
id
,
pending_data
.
data
,
sts
,
value
);
delete
this
.
gdh
.
pending
[
id
];
break
;
case
Msg
.
GET_OBJECT_INFO_FLOAT_ARRAY
:
let
asize
=
dv
.
getInt32
();
let
value
=
new
Array
(
asize
);
for
(
let
i
=
0
;
i
<
asize
;
i
++
)
{
value
[
i
]
=
dv
.
getFloat32
();
}
let
pending_data
=
this
.
gdh
.
pending
[
id
];
pending_data
.
func_cb
(
id
,
pending_data
.
data
,
sts
,
value
);
delete
this
.
gdh
.
pending
[
id
];
break
;
case
Msg
.
SET_OBJECT_INFO_BOOLEAN
:
break
;
case
Msg
.
SET_OBJECT_INFO_INT
:
break
;
case
Msg
.
SET_OBJECT_INFO_FLOAT
:
break
;
case
Msg
.
SET_OBJECT_INFO_STRING
:
break
;
case
Msg
.
TOGGLE_OBJECT_INFO
:
break
;
case
Msg
.
REF_OBJECT_INFO
:
delete
this
.
gdh
.
pending
[
id
];
break
;
case
Msg
.
UNREF_OBJECT_INFO
:
delete
this
.
gdh
.
pending
[
id
];
break
;
case
Msg
.
REF_OBJECT_INFO_LIST
:
let
func_cb
=
this
.
gdh
.
pending
[
id
].
func_cb
;
func_cb
(
id
,
sts
);
delete
this
.
gdh
.
pending
[
id
];
break
;
case
Msg
.
GET_OBJECT_REF_INFO_ALL
:
let
size
=
dv
.
getUint32
();
for
(
let
i
=
0
;
i
<
size
;
i
++
)
{
let
eid
=
dv
.
getUint32
();
let
esize
=
dv
.
getUint32
();
let
sub
=
this
.
gdh
.
sub
[
eid
];
if
(
typeof
sub
!==
'
undefined
'
)
{
let
value
;
switch
(
sub
.
type
)
{
case
Type
.
Boolean
:
if
(
sub
.
elements
<=
1
)
{
value
=
dv
.
getUint8
();
}
else
{
let
elements
=
esize
;
if
(
elements
!==
sub
.
elements
)
{
console
.
log
(
"
Subscription size error
"
,
elements
,
sub
.
elements
,
eid
);
}
value
=
new
Array
(
elements
);
for
(
let
k
=
0
;
k
<
elements
;
k
++
)
{
value
[
k
]
=
dv
.
getUint8
();
}
}
break
;
case
Type
.
Float32
:
if
(
sub
.
elements
<=
1
)
{
value
=
dv
.
getFloat32
();
}
else
{
let
elements
=
esize
/
4
;
if
(
elements
!==
sub
.
elements
)
{
console
.
log
(
"
Subscription size error
"
,
elements
,
sub
.
elements
,
eid
);
}
value
=
new
Array
(
elements
);
for
(
let
k
=
0
;
k
<
elements
;
k
++
)
{
value
[
k
]
=
dv
.
getFloat32
();
}
}
break
;
case
Type
.
Int8
:
case
Type
.
Int16
:
case
Type
.
Int32
:
case
Type
.
UInt8
:
case
Type
.
UInt16
:
case
Type
.
UInt32
:
case
Type
.
Status
:
case
Type
.
NetStatus
:
case
Type
.
Mask
:
case
Type
.
Enum
:
case
Type
.
Bit
:
if
(
sub
.
elements
<=
1
)
{
value
=
dv
.
getInt32
();
}
else
{
let
elements
=
esize
/
4
;
if
(
elements
!==
sub
.
elements
)
{
console
.
log
(
"
Subscription size error
"
,
elements
,
sub
.
elements
,
eid
);
}
value
=
new
Array
(
elements
);
for
(
let
k
=
0
;
k
<
elements
;
k
++
)
{
value
[
k
]
=
dv
.
getInt32
();
}
}
break
;
case
Type
.
String
:
case
Type
.
Time
:
case
Type
.
DeltaTime
:
case
Type
.
AttrRef
:
case
Type
.
Objid
:
if
(
sub
.
elements
<=
1
)
{
value
=
dv
.
getString
();
}
else
{
let
elements
=
sub
.
elements
;
if
(
elements
!==
sub
.
elements
)
{
console
.
log
(
"
Subscription size error
"
,
elements
,
sub
.
elements
,
eid
);
}
value
=
new
Array
(
elements
);
for
(
let
l
=
0
;
l
<
elements
;
l
++
)
{
value
[
l
]
=
dv
.
getString
();
}
}
break
;
default
:
break
;
}
this
.
gdh
.
sub
[
eid
].
value
=
value
;
}
}
if
(
typeof
this
.
gdh
.
pending
[
id
]
===
'
undefined
'
)
{
console
.
log
(
"
** GetObjectRefInfoAll received removed
"
,
id
);
break
;
}
let
func_cb
=
this
.
gdh
.
pending
[
id
].
func_cb
;
func_cb
(
id
,
sts
);
delete
this
.
gdh
.
pending
[
id
];
break
;
case
Msg
.
GET_ALL_XTT_CHILDREN
:
let
result
=
[];
let
size
=
dv
.
getUint32
();
for
(
let
i
=
0
;
i
<
size
;
i
++
)
{
let
info
=
new
ObjectInfo
();
let
vid
=
dv
.
getUint32
();
let
oix
=
dv
.
getUint32
();
info
.
objid
=
new
PwrtObjid
(
vid
,
oix
);
info
.
cid
=
dv
.
getUint32
();
info
.
has_children
=
dv
.
getUint16
()
!==
0
;
info
.
name
=
dv
.
getString
();
info
.
description
=
dv
.
getString
();
info
.
classname
=
dv
.
getString
();
result
.
push
(
info
);
}
let
pending_data
=
this
.
gdh
.
pending
[
id
];
pending_data
.
func_cb
(
id
,
pending_data
.
data
,
sts
,
result
);
delete
this
.
gdh
.
pending
[
id
];
break
;
case
Msg
.
GET_ALL_CLASS_ATTRIBUTES
:
let
result
=
[];
let
size
=
dv
.
getUint32
();
for
(
let
i
=
0
;
i
<
size
;
i
++
)
{
let
info
=
new
AttributeInfo
();
info
.
type
=
dv
.
getUint32
();
info
.
flags
=
dv
.
getUint32
();
info
.
size
=
dv
.
getUint16
();
info
.
elements
=
dv
.
getUint16
();
info
.
name
=
dv
.
getString
();
info
.
classname
=
dv
.
getString
();
result
.
push
(
info
);
}
let
pending_data
=
this
.
gdh
.
pending
[
id
];
pending_data
.
func_cb
(
id
,
pending_data
.
data
,
sts
,
result
);
delete
this
.
gdh
.
pending
[
id
];
break
;
case
Msg
.
GET_OBJECT
:
case
Msg
.
GET_OBJECT_FROM_AREF
:
case
Msg
.
GET_OBJECT_FROM_NAME
:
let
info
=
null
;
if
(
odd
(
sts
))
{
info
=
new
ObjectInfo
();
let
vid
=
dv
.
getUint32
();
let
oix
=
dv
.
getUint32
();
info
.
objid
=
new
PwrtObjid
(
vid
,
oix
);
info
.
cid
=
dv
.
getUint32
();
info
.
has_children
=
dv
.
getUint16
()
!==
0
;
info
.
name
=
dv
.
getString
();
info
.
fullname
=
dv
.
getString
();
info
.
classname
=
dv
.
getString
();
info
.
description
=
dv
.
getString
();
info
.
param1
=
dv
.
getString
();
}
let
pending_data
=
this
.
gdh
.
pending
[
id
];
pending_data
.
func_cb
(
id
,
pending_data
.
data
,
sts
,
info
);
delete
this
.
gdh
.
pending
[
id
];
break
;
case
Msg
.
CRR_SIGNAL
:
let
crrtext
=
null
;
let
result
=
[];
if
(
odd
(
sts
))
{
let
size
=
dv
.
getUint16
();
for
(
let
i
=
0
;
i
<
size
;
i
++
)
{
let
info
=
new
CrrInfo
();
info
.
type
=
dv
.
getUint16
();
let
vid
=
dv
.
getUint32
();
let
oix
=
dv
.
getUint32
();
info
.
objid
=
new
PwrtObjid
(
vid
,
oix
);
info
.
name
=
dv
.
getString
();
info
.
classname
=
dv
.
getString
();
result
.
push
(
info
);
}
}
let
pending_data
=
this
.
gdh
.
pending
[
id
];
pending_data
.
func_cb
(
id
,
pending_data
.
data
,
sts
,
result
);
delete
this
.
gdh
.
pending
[
id
];
break
;
case
Msg
.
GET_OPWIND_MENU
:
let
result
=
new
OpwindMenuInfo
();
if
(
odd
(
sts
))
{
result
.
title
=
dv
.
getString
();
result
.
text
=
dv
.
getString
();
result
.
enable_language
=
dv
.
getUint32
();
result
.
enable_login
=
dv
.
getUint32
();
result
.
enable_alarmlist
=
dv
.
getUint32
();
result
.
enable_eventlog
=
dv
.
getUint32
();
result
.
enable_navigator
=
dv
.
getUint32
();
result
.
disable_help
=
dv
.
getUint32
();
result
.
disable_proview
=
dv
.
getUint32
();
result
.
language
=
dv
.
getUint32
();
let
bsize
=
dv
.
getUint16
();
for
(
let
i
=
0
;
i
<
bsize
;
i
++
)
{
let
button
=
new
MenuButton
();
button
.
type
=
dv
.
getUint32
();
button
.
text
=
dv
.
getString
();
button
.
name
=
dv
.
getString
();
button
.
url
=
dv
.
getString
();
result
.
buttons
.
push
(
button
);
}
}
let
pending_data
=
this
.
gdh
.
pending
[
id
];
pending_data
.
func_cb
(
id
,
pending_data
.
data
,
sts
,
result
);
delete
this
.
gdh
.
pending
[
id
];
break
;
case
Msg
.
CHECK_USER
:
let
priv
=
0
;
if
(
odd
(
sts
))
{
priv
=
dv
.
getUint32
();
}
let
pending_data
=
this
.
gdh
.
pending
[
id
];
pending_data
.
func_cb
(
id
,
pending_data
.
data
,
sts
,
priv
);
delete
this
.
gdh
.
pending
[
id
];
break
;
case
Msg
.
GET_MSG
:
let
msg
=
""
;
if
(
odd
(
sts
))
{
msg
=
dv
.
getString
();
}
let
pending_data
=
this
.
gdh
.
pending
[
id
];
pending_data
.
func_cb
(
id
,
pending_data
.
data
,
sts
,
msg
);
delete
this
.
gdh
.
pending
[
id
];
break
;
case
Msg
.
MH_SYNC
:
let
result
=
[];
let
size
=
dv
.
getUint32
();
for
(
let
i
=
0
;
i
<
size
;
i
++
)
{
let
e
=
new
MhEvent
();
e
.
eventTime
=
dv
.
getString
();
e
.
eventText
=
dv
.
getString
();
e
.
eventName
=
dv
.
getString
();
e
.
eventFlags
=
dv
.
getUint32
();
e
.
eventStatus
=
dv
.
getUint32
();
e
.
eventPrio
=
dv
.
getUint32
();
e
.
eventId
=
new
MhEventId
();
e
.
eventId
.
nix
=
dv
.
getUint32
();
e
.
eventId
.
idx
=
dv
.
getUint32
();
e
.
eventId
.
birthTime
=
dv
.
getString
();
e
.
targetId
=
new
MhEventId
();
e
.
targetId
.
nix
=
dv
.
getUint32
();
e
.
targetId
.
idx
=
dv
.
getUint32
();
e
.
targetId
.
birthTime
=
dv
.
getString
();
e
.
eventType
=
dv
.
getUint32
();
let
objid
=
new
PwrtObjid
(
0
,
0
);
objid
.
vid
=
dv
.
getUint32
();
objid
.
oix
=
dv
.
getUint32
();
e
.
object
=
new
PwrtAttrRef
();
e
.
object
.
objid
=
objid
;
e
.
object
.
offset
=
dv
.
getUint32
();
e
.
object
.
body
=
dv
.
getUint32
();
e
.
object
.
size
=
dv
.
getUint32
();
e
.
object
.
flags
=
dv
.
getUint32
();
let
supObjid
=
new
PwrtObjid
(
0
,
0
);
supObjid
.
vid
=
dv
.
getUint32
();
supObjid
.
oix
=
dv
.
getUint32
();
e
.
supObject
=
new
PwrtAttrRef
();
e
.
supObject
.
objid
=
supObjid
;
e
.
supObject
.
offset
=
dv
.
getUint32
();
e
.
supObject
.
body
=
dv
.
getUint32
();
e
.
supObject
.
size
=
dv
.
getUint32
();
e
.
supObject
.
flags
=
dv
.
getUint32
();
e
.
eventMoreText
=
dv
.
getString
();
e
.
syncIdx
=
dv
.
getUint32
();
result
.
push
(
e
);
}
let
pending_data
=
this
.
gdh
.
pending
[
id
];
pending_data
.
func_cb
(
id
,
pending_data
.
data
,
sts
,
result
);
delete
this
.
gdh
.
pending
[
id
];
break
;
case
Msg
.
MH_ACK
:
let
pending_data
=
this
.
gdh
.
pending
[
id
];
pending_data
.
func_cb
(
id
,
pending_data
.
data
,
sts
);
delete
this
.
gdh
.
pending
[
id
];
break
;
default
:
console
.
log
(
"
Unknown message type
"
);
let
sts
=
dv
.
getUint32
();
let
value
=
this
.
unpackType
(
dv
,
sts
,
type
);
resolve
({
"
sts
"
:
sts
,
"
value
"
:
value
});
delete
this
.
pending
[
id
];
}
};
}
unpackType
(
dv
,
sts
,
type
)
{
switch
(
type
)
{
case
Msg
.
GET_OBJECT_INFO_BOOLEAN
:
return
dv
.
getUint8
();
case
Msg
.
GET_OBJECT_INFO_INT
:
return
dv
.
getUint32
();
case
Msg
.
GET_OBJECT_INFO_FLOAT
:
return
dv
.
getFloat32
();
case
Msg
.
GET_OBJECT_INFO_FLOAT_ARRAY
:
let
asize
=
dv
.
getInt32
();
let
value
=
new
Array
(
asize
);
for
(
let
i
=
0
;
i
<
asize
;
i
++
)
{
value
[
i
]
=
dv
.
getFloat32
();
}
return
value
;
case
Msg
.
GET_ALL_XTT_CHILDREN
:
let
result
=
[];
let
size
=
dv
.
getUint32
();
for
(
let
i
=
0
;
i
<
size
;
i
++
)
{
let
info
=
new
ObjectInfo
();
let
vid
=
dv
.
getUint32
();
let
oix
=
dv
.
getUint32
();
info
.
objid
=
new
PwrtObjid
(
vid
,
oix
);
info
.
cid
=
dv
.
getUint32
();
info
.
has_children
=
dv
.
getUint16
()
!==
0
;
info
.
name
=
dv
.
getString
();
info
.
description
=
dv
.
getString
();
info
.
classname
=
dv
.
getString
();
result
.
push
(
info
);
}
return
result
;
case
Msg
.
GET_ALL_CLASS_ATTRIBUTES
:
let
result
=
[];
let
size
=
dv
.
getUint32
();
for
(
let
i
=
0
;
i
<
size
;
i
++
)
{
let
info
=
new
AttributeInfo
();
info
.
type
=
dv
.
getUint32
();
info
.
flags
=
dv
.
getUint32
();
info
.
size
=
dv
.
getUint16
();
info
.
elements
=
dv
.
getUint16
();
info
.
name
=
dv
.
getString
();
info
.
classname
=
dv
.
getString
();
result
.
push
(
info
);
}
return
result
;
case
Msg
.
GET_OBJECT
:
case
Msg
.
GET_OBJECT_FROM_AREF
:
case
Msg
.
GET_OBJECT_FROM_NAME
:
let
info
=
null
;
if
(
odd
(
sts
))
{
info
=
new
ObjectInfo
();
let
vid
=
dv
.
getUint32
();
let
oix
=
dv
.
getUint32
();
info
.
objid
=
new
PwrtObjid
(
vid
,
oix
);
info
.
cid
=
dv
.
getUint32
();
info
.
has_children
=
dv
.
getUint16
()
!==
0
;
info
.
name
=
dv
.
getString
();
info
.
fullname
=
dv
.
getString
();
info
.
classname
=
dv
.
getString
();
info
.
description
=
dv
.
getString
();
info
.
param1
=
dv
.
getString
();
}
return
info
;
case
Msg
.
CRR_SIGNAL
:
let
crrtext
=
null
;
let
result
=
[];
if
(
odd
(
sts
))
{
let
size
=
dv
.
getUint16
();
for
(
let
i
=
0
;
i
<
size
;
i
++
)
{
let
info
=
new
CrrInfo
();
info
.
type
=
dv
.
getUint16
();
let
vid
=
dv
.
getUint32
();
let
oix
=
dv
.
getUint32
();
info
.
objid
=
new
PwrtObjid
(
vid
,
oix
);
info
.
name
=
dv
.
getString
();
info
.
classname
=
dv
.
getString
();
result
.
push
(
info
);
}
}
return
result
;
case
Msg
.
GET_OPWIND_MENU
:
let
result
=
new
OpwindMenuInfo
();
if
(
odd
(
sts
))
{
result
.
title
=
dv
.
getString
();
result
.
text
=
dv
.
getString
();
result
.
enable_language
=
dv
.
getUint32
();
result
.
enable_login
=
dv
.
getUint32
();
result
.
enable_alarmlist
=
dv
.
getUint32
();
result
.
enable_eventlog
=
dv
.
getUint32
();
result
.
enable_navigator
=
dv
.
getUint32
();
result
.
disable_help
=
dv
.
getUint32
();
result
.
disable_proview
=
dv
.
getUint32
();
result
.
language
=
dv
.
getUint32
();
let
bsize
=
dv
.
getUint16
();
for
(
let
i
=
0
;
i
<
bsize
;
i
++
)
{
let
button
=
new
MenuButton
();
button
.
type
=
dv
.
getUint32
();
button
.
text
=
dv
.
getString
();
button
.
name
=
dv
.
getString
();
button
.
url
=
dv
.
getString
();
result
.
buttons
.
push
(
button
);
}
}
return
result
;
case
Msg
.
CHECK_USER
:
let
priv
=
0
;
if
(
odd
(
sts
))
{
priv
=
dv
.
getUint32
();
}
return
priv
;
case
Msg
.
GET_MSG
:
let
msg
=
""
;
if
(
odd
(
sts
))
{
msg
=
dv
.
getString
();
}
return
msg
;
case
Msg
.
MH_SYNC
:
let
result
=
[];
let
size
=
dv
.
getUint32
();
for
(
let
i
=
0
;
i
<
size
;
i
++
)
{
let
e
=
new
MhEvent
();
e
.
eventTime
=
dv
.
getString
();
e
.
eventText
=
dv
.
getString
();
e
.
eventName
=
dv
.
getString
();
e
.
eventFlags
=
dv
.
getUint32
();
e
.
eventStatus
=
dv
.
getUint32
();
e
.
eventPrio
=
dv
.
getUint32
();
e
.
eventId
=
new
MhEventId
();
e
.
eventId
.
nix
=
dv
.
getUint32
();
e
.
eventId
.
idx
=
dv
.
getUint32
();
e
.
eventId
.
birthTime
=
dv
.
getString
();
e
.
targetId
=
new
MhEventId
();
e
.
targetId
.
nix
=
dv
.
getUint32
();
e
.
targetId
.
idx
=
dv
.
getUint32
();
e
.
targetId
.
birthTime
=
dv
.
getString
();
e
.
eventType
=
dv
.
getUint32
();
let
objid
=
new
PwrtObjid
(
0
,
0
);
objid
.
vid
=
dv
.
getUint32
();
objid
.
oix
=
dv
.
getUint32
();
e
.
object
=
new
PwrtAttrRef
();
e
.
object
.
objid
=
objid
;
e
.
object
.
offset
=
dv
.
getUint32
();
e
.
object
.
body
=
dv
.
getUint32
();
e
.
object
.
size
=
dv
.
getUint32
();
e
.
object
.
flags
=
dv
.
getUint32
();
let
supObjid
=
new
PwrtObjid
(
0
,
0
);
supObjid
.
vid
=
dv
.
getUint32
();
supObjid
.
oix
=
dv
.
getUint32
();
e
.
supObject
=
new
PwrtAttrRef
();
e
.
supObject
.
objid
=
supObjid
;
e
.
supObject
.
offset
=
dv
.
getUint32
();
e
.
supObject
.
body
=
dv
.
getUint32
();
e
.
supObject
.
size
=
dv
.
getUint32
();
e
.
supObject
.
flags
=
dv
.
getUint32
();
e
.
eventMoreText
=
dv
.
getString
();
e
.
syncIdx
=
dv
.
getUint32
();
result
.
push
(
e
);
}
return
result
;
default
:
return
null
;
}
}
Uint8ArrayHelper
(
tag
)
{
let
obj
=
{
buf
:
[
tag
,
0
],
pack16Bit
:
function
(
value
)
{
this
.
buf
.
push
(
value
&
0xFF
);
this
.
buf
.
push
((
value
>>
8
)
&
0xFF
);
},
pack32Bit
:
function
(
value
)
{
this
.
buf
.
push
(
value
&
0xFF
);
this
.
buf
.
push
((
value
>>
8
)
&
0xFF
);
this
.
buf
.
push
((
value
>>
16
)
&
0xFF
);
this
.
buf
.
push
((
value
>>
24
)
&
0xFF
);
},
packString
:
function
(
string
)
{
this
.
pack16Bit
(
string
.
length
);
for
(
let
i
=
0
;
i
<
string
.
length
;
i
++
)
{
this
.
buf
.
push
(
string
.
charCodeAt
(
i
));
}
}
};
obj
.
pack32Bit
(
this
.
next_id
);
return
obj
;
}
getObjectInfoBoolean
(
name
,
return_cb
)
{
this
.
return_cb
=
return_cb
;
let
helper
=
new
Uint8ArrayHelper
(
name
.
length
+
6
,
Msg
.
GET_OBJECT_INFO_BOOLEAN
);
helper
.
pack32Bit
(
this
.
next_id
);
getObjectInfoBoolean
(
name
)
{
let
helper
=
this
.
Uint8ArrayHelper
(
Msg
.
GET_OBJECT_INFO_BOOLEAN
);
helper
.
packString
(
name
);
this
.
pending
[
this
.
next_id
]
=
new
PendingData
(
return_cb
,
null
);
this
.
ws
.
send
(
helper
.
buf
);
this
.
next_id
++
;
return
this
.
sendRequest
(
helper
);
}
getObjectInfoInt
(
name
,
return_cb
,
data
)
{
this
.
return_cb
=
return_cb
;
let
helper
=
new
Uint8ArrayHelper
(
name
.
length
+
6
,
Msg
.
GET_OBJECT_INFO_INT
);
helper
.
pack32Bit
(
this
.
next_id
);
getObjectInfoInt
(
name
)
{
let
helper
=
this
.
Uint8ArrayHelper
(
Msg
.
GET_OBJECT_INFO_INT
);
helper
.
packString
(
name
);
this
.
pending
[
this
.
next_id
]
=
new
PendingData
(
return_cb
,
data
);
this
.
ws
.
send
(
helper
.
buf
);
this
.
next_id
++
;
return
this
.
sendRequest
(
helper
);
}
getObjectInfoIntArray
(
name
,
asize
,
return_cb
,
data
)
{
this
.
return_cb
=
return_cb
;
let
helper
=
new
Uint8ArrayHelper
(
name
.
length
+
10
,
Msg
.
GET_OBJECT_INFO_INT_ARRAY
);
helper
.
pack32Bit
(
this
.
next_id
);
getObjectInfoIntArray
(
name
,
asize
)
{
let
helper
=
this
.
Uint8ArrayHelper
(
Msg
.
GET_OBJECT_INFO_INT_ARRAY
);
helper
.
pack32Bit
(
asize
);
helper
.
packString
(
name
);
this
.
pending
[
this
.
next_id
]
=
new
PendingData
(
return_cb
,
data
);
this
.
ws
.
send
(
helper
.
buf
);
this
.
next_id
++
;
return
this
.
sendRequest
(
helper
);
}
getObjectInfoFloat
(
name
,
return_cb
,
data
)
{
this
.
return_cb
=
return_cb
;
let
helper
=
new
Uint8ArrayHelper
(
name
.
length
+
6
,
Msg
.
GET_OBJECT_INFO_FLOAT
);
helper
.
pack32Bit
(
this
.
next_id
);
getObjectInfoFloat
(
name
)
{
let
helper
=
this
.
Uint8ArrayHelper
(
Msg
.
GET_OBJECT_INFO_FLOAT
);
helper
.
packString
(
name
);
this
.
pending
[
this
.
next_id
]
=
new
PendingData
(
return_cb
,
data
);
this
.
ws
.
send
(
helper
.
buf
);
this
.
next_id
++
;
return
this
.
sendRequest
(
helper
);
}
getObjectInfoFloatArray
(
name
,
asize
,
return_cb
,
data
)
{
this
.
return_cb
=
return_cb
;
let
helper
=
new
Uint8ArrayHelper
(
name
.
length
+
10
,
Msg
.
GET_OBJECT_INFO_FLOAT_ARRAY
);
helper
.
pack32Bit
(
this
.
next_id
);
getObjectInfoFloatArray
(
name
,
asize
)
{
let
helper
=
this
.
Uint8ArrayHelper
(
Msg
.
GET_OBJECT_INFO_FLOAT_ARRAY
);
helper
.
pack32Bit
(
asize
);
helper
.
packString
(
name
);
this
.
pending
[
this
.
next_id
]
=
new
PendingData
(
return_cb
,
data
);
this
.
ws
.
send
(
helper
.
buf
);
this
.
next_id
++
;
return
this
.
sendRequest
(
helper
);
}
refObjectInfo
(
name
,
type
,
elements
)
{
...
...
@@ -737,81 +553,143 @@ class Gdh {
this
.
sub
[
this
.
subscriptionCount
]
=
sub
;
this
.
subscriptionCount
++
;
if
(
this
.
listSent
)
{
let
size
=
12
+
sub
.
name
.
length
;
let
helper
=
new
Uint8ArrayHelper
(
size
+
10
,
Msg
.
REF_OBJECT_INFO
);
helper
.
pack32Bit
(
this
.
next_id
);
let
helper
=
this
.
Uint8ArrayHelper
(
Msg
.
REF_OBJECT_INFO
);
helper
.
pack32Bit
(
sub
.
refid
);
helper
.
pack32Bit
(
sub
.
elements
);
helper
.
packString
(
sub
.
name
);
this
.
pending
[
this
.
next_id
]
=
new
PendingData
(
this
.
refObjectInfoReply
,
null
);
this
.
ws
.
send
(
helper
.
buf
);
this
.
next_id
++
;
}
return
sub
.
refid
;
}
refObjectInfoReply
(
id
,
sts
)
{
}
unrefObjectInfo
(
refid
)
{
let
size
=
4
;
let
helper
=
new
Uint8ArrayHelper
(
size
+
10
,
Msg
.
UNREF_OBJECT_INFO
);
helper
.
pack32Bit
(
this
.
next_id
);
let
helper
=
this
.
Uint8ArrayHelper
(
Msg
.
UNREF_OBJECT_INFO
);
helper
.
pack32Bit
(
refid
);
this
.
pending
[
this
.
next_id
]
=
new
PendingData
(
this
.
unrefObjectInfoReply
,
null
);
this
.
ws
.
send
(
helper
.
buf
);
this
.
next_id
++
;
delete
this
.
sub
[
refid
];
return
this
.
sendRequest
(
helper
);
}
unrefObjectInfoReply
(
id
,
sts
)
{
}
refObjectInfoList
(
return_cb
)
{
refObjectInfoList
()
{
let
size
=
0
;
let
len
=
0
;
this
.
return_cb
=
return_cb
;
for
(
let
i
in
this
.
sub
)
{
size
+=
12
+
this
.
sub
[
i
].
name
.
length
;
len
++
;
}
let
helper
=
new
Uint8ArrayHelper
(
size
+
10
,
Msg
.
REF_OBJECT_INFO_LIST
);
helper
.
pack32Bit
(
this
.
next_id
);
let
helper
=
this
.
Uint8ArrayHelper
(
Msg
.
REF_OBJECT_INFO_LIST
);
helper
.
pack32Bit
(
len
);
this
.
sub
.
slice
(
1
).
forEach
(
function
(
s
)
{
helper
.
pack32Bit
(
s
.
refid
);
helper
.
pack32Bit
(
s
.
elements
);
helper
.
packString
(
s
.
name
);
});
this
.
pending
[
this
.
next_id
]
=
new
PendingData
(
return_cb
,
null
);
this
.
ws
.
send
(
helper
.
buf
);
this
.
next_id
++
;
this
.
listSent
=
true
;
}
refObjectInfoListReply
(
id
,
sts
)
{
return
this
.
sendRequest
(
helper
);
}
getRefObjectInfoAll
(
return_cb
)
{
let
helper
=
new
Uint8ArrayHelper
(
6
,
Msg
.
GET_OBJECT_REF_INFO_ALL
);
helper
.
pack32Bit
(
this
.
next_id
);
this
.
pending
[
this
.
next_id
]
=
new
PendingData
(
return_cb
,
null
);
this
.
ws
.
send
(
helper
.
buf
);
this
.
next_id
++
;
}
getRefObjectInfoAllReply
(
id
,
sts
)
{
let
helper
=
this
.
Uint8ArrayHelper
(
Msg
.
GET_OBJECT_REF_INFO_ALL
);
this
.
sendRequest
(
helper
).
then
(
function
(
dv
)
{
let
type
=
dv
.
getUint8
();
let
id
=
dv
.
getUint32
();
let
sts
=
dv
.
getUint32
();
let
size
=
dv
.
getUint32
();
for
(
let
i
=
0
;
i
<
size
;
i
++
)
{
let
eid
=
dv
.
getUint32
();
let
esize
=
dv
.
getUint32
();
let
sub
=
this
.
gdh
.
sub
[
eid
];
if
(
typeof
sub
!==
'
undefined
'
)
{
let
value
;
switch
(
sub
.
type
)
{
case
Type
.
Boolean
:
if
(
sub
.
elements
<=
1
)
{
value
=
dv
.
getUint8
();
}
else
{
let
elements
=
esize
;
if
(
elements
!==
sub
.
elements
)
{
console
.
log
(
"
Subscription size error
"
,
elements
,
sub
.
elements
,
eid
);
}
value
=
new
Array
(
elements
);
for
(
let
k
=
0
;
k
<
elements
;
k
++
)
{
value
[
k
]
=
dv
.
getUint8
();
}
}
break
;
case
Type
.
Float32
:
if
(
sub
.
elements
<=
1
)
{
value
=
dv
.
getFloat32
();
}
else
{
let
elements
=
esize
/
4
;
if
(
elements
!==
sub
.
elements
)
{
console
.
log
(
"
Subscription size error
"
,
elements
,
sub
.
elements
,
eid
);
}
value
=
new
Array
(
elements
);
for
(
let
k
=
0
;
k
<
elements
;
k
++
)
{
value
[
k
]
=
dv
.
getFloat32
();
}
}
break
;
case
Type
.
Int8
:
case
Type
.
Int16
:
case
Type
.
Int32
:
case
Type
.
UInt8
:
case
Type
.
UInt16
:
case
Type
.
UInt32
:
case
Type
.
Status
:
case
Type
.
NetStatus
:
case
Type
.
Mask
:
case
Type
.
Enum
:
case
Type
.
Bit
:
if
(
sub
.
elements
<=
1
)
{
value
=
dv
.
getInt32
();
}
else
{
let
elements
=
esize
/
4
;
if
(
elements
!==
sub
.
elements
)
{
console
.
log
(
"
Subscription size error
"
,
elements
,
sub
.
elements
,
eid
);
}
value
=
new
Array
(
elements
);
for
(
let
k
=
0
;
k
<
elements
;
k
++
)
{
value
[
k
]
=
dv
.
getInt32
();
}
}
break
;
case
Type
.
String
:
case
Type
.
Time
:
case
Type
.
DeltaTime
:
case
Type
.
AttrRef
:
case
Type
.
Objid
:
if
(
sub
.
elements
<=
1
)
{
value
=
dv
.
getString
();
}
else
{
let
elements
=
sub
.
elements
;
if
(
elements
!==
sub
.
elements
)
{
console
.
log
(
"
Subscription size error
"
,
elements
,
sub
.
elements
,
eid
);
}
value
=
new
Array
(
elements
);
for
(
let
l
=
0
;
l
<
elements
;
l
++
)
{
value
[
l
]
=
dv
.
getString
();
}
}
break
;
default
:
break
;
}
this
.
gdh
.
sub
[
eid
].
value
=
value
;
}
}
if
(
typeof
this
.
gdh
.
pending
[
id
]
===
'
undefined
'
)
{
console
.
log
(
"
** GetObjectRefInfoAll received removed
"
,
id
);
return
;
}
return_cb
();
});
}
getObjectRefInfo
(
id
)
{
...
...
@@ -819,117 +697,83 @@ class Gdh {
}
setObjectInfoBoolean
(
name
,
value
)
{
let
helper
=
new
Uint8ArrayHelper
(
12
+
name
.
length
,
Msg
.
SET_OBJECT_INFO_BOOLEAN
);
helper
.
pack32Bit
(
this
.
next_id
);
let
helper
=
this
.
Uint8ArrayHelper
(
Msg
.
SET_OBJECT_INFO_BOOLEAN
);
helper
.
pack32Bit
(
value
);
helper
.
packString
(
name
);
this
.
ws
.
send
(
helper
.
buf
);
this
.
next_id
++
;
return
1
;
return
this
.
sendRequest
(
helper
);
}
setObjectInfoInt
(
name
,
value
)
{
let
helper
=
new
Uint8ArrayHelper
(
12
+
name
.
length
,
Msg
.
SET_OBJECT_INFO_INT
);
helper
.
pack32Bit
(
this
.
next_id
);
let
helper
=
this
.
Uint8ArrayHelper
(
Msg
.
SET_OBJECT_INFO_INT
);
helper
.
pack32Bit
(
value
);
helper
.
packString
(
name
);
// this.pending[this.next_id] = new PendingData( return_cb, null);
this
.
ws
.
send
(
helper
.
buf
);
this
.
next_id
++
;
return
1
;
return
this
.
sendRequest
(
helper
);
}
setObjectInfoFloat
(
name
,
value
)
{
let
helper
=
new
Uint8ArrayHelper
(
12
+
name
.
length
,
Msg
.
SET_OBJECT_INFO_FLOAT
);
helper
.
pack32Bit
(
this
.
next_id
);
let
helper
=
this
.
Uint8ArrayHelper
(
Msg
.
SET_OBJECT_INFO_FLOAT
);
let
fbuf
=
new
ArrayBuffer
(
4
);
let
fa
=
new
Float32Array
(
fbuf
);
fa
[
0
]
=
value
;
let
ba
=
new
Uint8Array
(
fbuf
);
helper
.
buf
[
helper
.
idx
++
]
=
ba
[
0
]
;
helper
.
buf
[
helper
.
idx
++
]
=
ba
[
1
]
;
helper
.
buf
[
helper
.
idx
++
]
=
ba
[
2
]
;
helper
.
buf
[
helper
.
idx
++
]
=
ba
[
3
]
;
helper
.
buf
.
push
(
ba
[
0
])
;
helper
.
buf
.
push
(
ba
[
1
])
;
helper
.
buf
.
push
(
ba
[
2
])
;
helper
.
buf
.
push
(
ba
[
3
])
;
helper
.
packString
(
name
);
// this.pending[this.next_id] = new PendingData( return_cb, null);
this
.
ws
.
send
(
helper
.
buf
);
this
.
next_id
++
;
return
1
;
return
this
.
sendRequest
(
helper
);
}
setObjectInfoString
(
name
,
value
)
{
let
helper
=
new
Uint8ArrayHelper
(
10
+
value
.
length
+
name
.
length
,
Msg
.
SET_OBJECT_INFO_STRING
);
helper
.
pack32Bit
(
this
.
next_id
);
let
helper
=
this
.
Uint8ArrayHelper
(
Msg
.
SET_OBJECT_INFO_STRING
);
helper
.
packString
(
value
);
helper
.
packString
(
name
);
// this.pending[this.next_id] = new PendingData( return_cb, null);
this
.
ws
.
send
(
helper
.
buf
);
this
.
next_id
++
;
return
1
;
return
this
.
sendRequest
(
helper
);
}
setObjectInfo
(
name
,
value
,
type
)
{
if
(
type
===
Type
.
Boolean
)
{
this
.
setObjectInfoBoolean
(
name
,
value
);
return
this
.
setObjectInfoBoolean
(
name
,
value
);
}
else
if
(
type
===
Type
.
Float32
||
type
===
Type
.
Float64
)
{
this
.
setObjectInfoFloat
(
name
,
value
);
return
this
.
setObjectInfoFloat
(
name
,
value
);
}
else
if
(
type
===
Type
.
String
)
{
this
.
setObjectInfoString
(
name
,
value
);
return
this
.
setObjectInfoString
(
name
,
value
);
}
else
{
this
.
setObjectInfoInt
(
name
,
value
);
return
this
.
setObjectInfoInt
(
name
,
value
);
}
}
toggleObjectInfo
(
name
)
{
let
helper
=
new
Uint8ArrayHelper
(
8
+
name
.
length
,
Msg
.
TOGGLE_OBJECT_INFO
);
helper
.
pack32Bit
(
this
.
next_id
);
let
helper
=
this
.
Uint8ArrayHelper
(
Msg
.
TOGGLE_OBJECT_INFO
);
helper
.
packString
(
name
);
// this.pending[this.next_id] = new PendingData( return_cb, null);
this
.
ws
.
send
(
helper
.
buf
);
this
.
next_id
++
;
return
1
;
return
this
.
sendRequest
(
helper
);
}
getAllXttChildren
(
oid
,
return_cb
,
data
)
{
let
helper
=
new
Uint8ArrayHelper
(
14
,
Msg
.
GET_ALL_XTT_CHILDREN
);
helper
.
pack32Bit
(
this
.
next_id
);
getAllXttChildren
(
oid
)
{
let
helper
=
this
.
Uint8ArrayHelper
(
Msg
.
GET_ALL_XTT_CHILDREN
);
helper
.
pack32Bit
(
oid
.
vid
);
helper
.
pack32Bit
(
oid
.
oix
);
this
.
pending
[
this
.
next_id
]
=
new
PendingData
(
return_cb
,
data
);
this
.
ws
.
send
(
helper
.
buf
);
this
.
next_id
++
;
return
this
.
sendRequest
(
helper
);
}
getAllClassAttributes
(
cid
,
oid
,
return_cb
,
data
)
{
let
helper
=
new
Uint8ArrayHelper
(
18
,
Msg
.
GET_ALL_CLASS_ATTRIBUTES
);
helper
.
pack32Bit
(
this
.
next_id
);
getAllClassAttributes
(
cid
,
oid
)
{
let
helper
=
this
.
Uint8ArrayHelper
(
Msg
.
GET_ALL_CLASS_ATTRIBUTES
);
helper
.
pack32Bit
(
cid
);
helper
.
pack32Bit
(
oid
.
vid
);
helper
.
pack32Bit
(
oid
.
oix
);
this
.
pending
[
this
.
next_id
]
=
new
PendingData
(
return_cb
,
data
);
this
.
ws
.
send
(
helper
.
buf
);
this
.
next_id
++
;
return
this
.
sendRequest
(
helper
);
}
getObject
(
oid
,
op
,
return_cb
,
data
)
{
let
helper
=
new
Uint8ArrayHelper
(
16
,
Msg
.
GET_OBJECT
);
helper
.
pack32Bit
(
this
.
next_id
);
getObject
(
oid
,
op
)
{
let
helper
=
this
.
Uint8ArrayHelper
(
Msg
.
GET_OBJECT
);
helper
.
pack16Bit
(
op
);
helper
.
pack32Bit
(
oid
.
vid
);
helper
.
pack32Bit
(
oid
.
oix
);
this
.
pending
[
this
.
next_id
]
=
new
PendingData
(
return_cb
,
data
);
this
.
ws
.
send
(
helper
.
buf
);
this
.
next_id
++
;
return
this
.
sendRequest
(
helper
);
}
getObjectFromAref
(
aref
,
op
,
return_cb
,
data
)
{
let
helper
=
new
Uint8ArrayHelper
(
32
,
Msg
.
GET_OBJECT_FROM_AREF
);
helper
.
pack32Bit
(
this
.
next_id
);
getObjectFromAref
(
aref
,
op
)
{
let
helper
=
this
.
Uint8ArrayHelper
(
Msg
.
GET_OBJECT_FROM_AREF
);
helper
.
pack16Bit
(
op
);
helper
.
pack32Bit
(
aref
.
objid
.
vid
);
helper
.
pack32Bit
(
aref
.
objid
.
oix
);
...
...
@@ -937,76 +781,61 @@ class Gdh {
helper
.
pack32Bit
(
aref
.
body
);
helper
.
pack32Bit
(
aref
.
size
);
helper
.
pack32Bit
(
aref
.
flags
);
this
.
pending
[
this
.
next_id
]
=
new
PendingData
(
return_cb
,
data
);
this
.
ws
.
send
(
helper
.
buf
);
this
.
next_id
++
;
return
this
.
sendRequest
(
helper
);
}
getObjectFromName
(
name
,
op
,
return_cb
,
data
)
{
let
helper
=
new
Uint8ArrayHelper
(
10
+
name
.
length
,
Msg
.
GET_OBJECT_FROM_NAME
);
helper
.
pack32Bit
(
this
.
next_id
);
getObjectFromName
(
name
,
op
)
{
let
helper
=
this
.
Uint8ArrayHelper
(
Msg
.
GET_OBJECT_FROM_NAME
);
helper
.
pack16Bit
(
op
);
helper
.
packString
(
name
);
this
.
pending
[
this
.
next_id
]
=
new
PendingData
(
return_cb
,
data
);
this
.
ws
.
send
(
helper
.
buf
);
this
.
next_id
++
;
return
this
.
sendRequest
(
helper
);
}
crrSignal
(
oid
,
return_cb
,
data
)
{
let
helper
=
new
Uint8ArrayHelper
(
14
,
Msg
.
CRR_SIGNAL
);
helper
.
pack32Bit
(
this
.
next_id
);
crrSignal
(
oid
)
{
let
helper
=
this
.
Uint8ArrayHelper
(
Msg
.
CRR_SIGNAL
);
helper
.
pack32Bit
(
oid
.
vid
);
helper
.
pack32Bit
(
oid
.
oix
);
this
.
pending
[
this
.
next_id
]
=
new
PendingData
(
return_cb
,
data
);
this
.
ws
.
send
(
helper
.
buf
);
this
.
next_id
++
;
return
this
.
sendRequest
(
helper
);
}
getOpwindMenu
(
name
,
return_cb
,
data
)
{
let
helper
=
new
Uint8ArrayHelper
(
8
+
name
.
length
,
Msg
.
GET_OPWIND_MENU
);
helper
.
pack32Bit
(
this
.
next_id
);
getOpwindMenu
(
name
)
{
let
helper
=
this
.
Uint8ArrayHelper
(
Msg
.
GET_OPWIND_MENU
);
helper
.
packString
(
name
);
this
.
pending
[
this
.
next_id
]
=
new
PendingData
(
return_cb
,
data
);
this
.
ws
.
send
(
helper
.
buf
);
this
.
next_id
++
;
return
this
.
sendRequest
(
helper
);
}
login
(
user
,
passwd
,
return_cb
,
data
)
{
let
helper
=
new
Uint8ArrayHelper
(
6
+
2
+
user
.
length
+
2
+
passwd
.
length
,
Msg
.
CHECK_USER
);
helper
.
pack32Bit
(
this
.
next_id
);
login
(
user
,
passwd
)
{
let
helper
=
this
.
Uint8ArrayHelper
(
Msg
.
CHECK_USER
);
helper
.
packString
(
user
);
helper
.
packString
(
passwd
);
this
.
pending
[
this
.
next_id
]
=
new
PendingData
(
return_cb
,
data
);
this
.
ws
.
send
(
helper
.
buf
);
this
.
next_id
++
;
return
this
.
sendRequest
(
helper
);
}
getMsg
(
value
,
return_cb
,
data
)
{
let
helper
=
new
Uint8ArrayHelper
(
10
,
Msg
.
GET_MSG
);
helper
.
pack32Bit
(
this
.
next_id
);
getMsg
(
value
)
{
let
helper
=
this
.
Uint8ArrayHelper
(
Msg
.
GET_MSG
);
helper
.
pack32Bit
(
value
);
this
.
pending
[
this
.
next_id
]
=
new
PendingData
(
return_cb
,
data
);
this
.
ws
.
send
(
helper
.
buf
);
this
.
next_id
++
;
return
this
.
sendRequest
(
helper
);
}
mhSync
(
sync
,
return_cb
,
data
)
{
let
helper
=
new
Uint8ArrayHelper
(
10
,
Msg
.
MH_SYNC
);
helper
.
pack32Bit
(
this
.
next_id
);
mhSync
(
sync
)
{
let
helper
=
this
.
Uint8ArrayHelper
(
Msg
.
MH_SYNC
);
helper
.
pack32Bit
(
sync
);
this
.
pending
[
this
.
next_id
]
=
new
PendingData
(
return_cb
,
data
);
this
.
ws
.
send
(
helper
.
buf
);
this
.
next_id
++
;
return
this
.
sendRequest
(
helper
);
}
mhAcknowledge
(
event_id
,
return_cb
,
data
)
{
let
helper
=
new
Uint8ArrayHelper
(
16
+
event_id
.
birthTime
.
length
,
Msg
.
MH_ACK
);
helper
.
pack32Bit
(
this
.
next_id
);
mhAcknowledge
(
event_id
)
{
let
helper
=
this
.
Uint8ArrayHelper
(
Msg
.
MH_ACK
);
helper
.
pack32Bit
(
event_id
.
nix
);
helper
.
pack32Bit
(
event_id
.
idx
);
helper
.
packString
(
event_id
.
birthTime
);
this
.
pending
[
this
.
next_id
]
=
new
PendingData
(
return_cb
,
data
);
this
.
ws
.
send
(
helper
.
buf
);
this
.
next_id
++
;
return
this
.
sendRequest
(
helper
);
}
sendRequest
(
data
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
this
.
pending
[
this
.
next_id
]
=
resolve
;
this
.
next_id
++
;
this
.
ws
.
send
(
Uint8Array
.
from
(
data
.
buf
));
});
}
}
\ No newline at end of file
java/jsw/ev/src/ev.ts
View file @
0501e23c
...
...
@@ -95,7 +95,7 @@ class Ev {
console
.
log
(
"
toolitem2
"
,
o
.
userdata
.
e
.
supObject
.
vid
,
o
.
userdata
.
e
.
supObject
.
oix
);
this
.
ctx
.
gdh
.
getObjectFromAref
(
o
.
userdata
.
e
.
supObject
,
GdhOp
.
GET_OP_SELF
,
this
.
open_navigator_cb
,
null
);
GdhOp
.
GET_OP_SELF
).
then
(
this
.
open_navigator_cb
);
console
.
log
(
"
toolitem2 event
"
);
});
// Trace sup object
...
...
@@ -106,18 +106,16 @@ class Ev {
if
(
o
===
null
)
{
return
;
}
let
newwindow
=
window
.
open
(
""
,
"
_blank
"
);
this
.
ctx
.
gdh
.
getObjectFromAref
(
o
.
userdata
.
e
.
supObject
,
GdhOp
.
GET_OP_METHOD_PLC
,
this
.
open_plc_cb
,
newwindow
);
GdhOp
.
GET_OP_METHOD_PLC
).
then
(
this
.
open_plc_cb
);
});
// Graph event name
document
.
getElementById
(
"
toolitem4
"
)
.
addEventListener
(
"
click
"
,
function
(
event
)
{
let
o
=
this
.
ctx
.
get_select
();
if
(
o
.
userdata
instanceof
EvItemAlarm
)
{
let
newwindow
=
window
.
open
(
""
,
"
_blank
"
);
this
.
ctx
.
gdh
.
getObjectFromName
(
o
.
userdata
.
e
.
eventName
,
GdhOp
.
GET_OP_METHOD_GRAPH
,
this
.
open_graph_cb
,
newwindow
);
GdhOp
.
GET_OP_METHOD_GRAPH
).
then
(
this
.
open_graph_cb
);
}
});
// Object raph event name
...
...
@@ -125,9 +123,8 @@ class Ev {
.
addEventListener
(
"
click
"
,
function
(
event
)
{
let
o
=
this
.
ctx
.
get_select
();
if
(
o
.
userdata
instanceof
EvItemAlarm
)
{
let
newwindow
=
window
.
open
(
""
,
"
_blank
"
);
this
.
ctx
.
gdh
.
getObjectFromName
(
o
.
userdata
.
e
.
eventName
,
GdhOp
.
GET_OP_METHOD_OBJECTGRAPH
,
this
.
open_graph_cb
,
newwindow
);
GdhOp
.
GET_OP_METHOD_OBJECTGRAPH
).
then
(
this
.
open_graph_cb
);
}
});
// Navigator event name
...
...
@@ -147,9 +144,8 @@ class Ev {
if
(
o
===
null
)
{
return
;
}
let
newwindow
=
window
.
open
(
""
,
"
_blank
"
);
this
.
ctx
.
gdh
.
getObjectFromName
(
o
.
userdata
.
e
.
eventName
,
GdhOp
.
GET_OP_METHOD_PLC
,
this
.
open_plc_cb
,
newwindow
);
GdhOp
.
GET_OP_METHOD_PLC
).
then
(
this
.
open_plc_cb
);
console
.
log
(
"
toolitem7 event
"
);
});
// History event name
...
...
@@ -175,7 +171,7 @@ class Ev {
if
(
o
===
null
)
{
return
;
}
this
.
ctx
.
gdh
.
crrSignal
(
o
.
userdata
.
e
.
eventName
,
this
.
open_crr_cb
,
o
);
this
.
ctx
.
gdh
.
crrSignal
(
o
.
userdata
.
e
.
eventName
).
then
(
this
.
open_crr_cb
(
o
)
);
console
.
log
(
"
toolitem10 event
"
);
});
// Help event name
...
...
@@ -192,12 +188,10 @@ class Ev {
return
;
}
if
(
o
.
userdata
instanceof
EvItemAlarm
)
{
let
newwindow
=
window
.
open
(
""
,
"
_blank
"
);
this
.
ctx
.
gdh
.
getObjectFromName
(
o
.
userdata
.
e
.
eventName
,
GdhOp
.
GET_OP_METHOD_HELPCLASS
,
this
.
open_helpclass_cb
,
newwindow
);
GdhOp
.
GET_OP_METHOD_HELPCLASS
).
then
(
this
.
open_helpclass_cb
);
}
});
}
is_authorized
(
access
)
{
...
...
@@ -206,25 +200,26 @@ class Ev {
gdh_init_cb
()
{
if
(
!
this
.
priv
)
{
this
.
ctx
.
gdh
.
login
(
""
,
""
,
this
.
login_cb
,
this
);
this
.
ctx
.
gdh
.
login
(
""
,
""
).
then
(
this
.
login_cb
);
}
//this.ctx.gdh.mhSync(
this.mhSyncIdx, this.sync_cb, this
);
//this.ctx.gdh.mhSync(
this.mhSyncIdx).then(this.sync_cb
);
this
.
ctx
.
gdh
.
listSent
=
true
;
this
.
trace_cyclic
();
}
login_cb
(
id
,
data
,
sts
,
result
)
{
console
.
log
(
"
Login:
"
,
sts
,
result
);
this
.
priv
=
(
sts
&
1
)
?
result
:
0
;
login_cb
(
res
)
{
console
.
log
(
"
Login:
"
,
res
.
sts
,
res
.
value
);
this
.
priv
=
(
res
.
sts
&
1
)
?
res
.
value
:
0
;
}
sync_cb
(
id
,
data
,
sts
,
result
)
{
if
(
!
(
sts
&
1
))
{
sync_cb
(
res
)
{
if
(
!
(
res
.
sts
&
1
))
{
return
;
}
let
result
=
res
.
value
;
if
(
result
.
length
===
0
)
{
return
;
}
...
...
@@ -326,7 +321,7 @@ class Ev {
let
item
=
node
.
get_userdata
();
console
.
log
(
"
Ack
"
,
item
.
e
.
eventText
);
this
.
ctx
.
gdh
.
mhAcknowledge
(
item
.
e
.
eventId
,
this
.
ack_cb
,
this
);
this
.
ctx
.
gdh
.
mhAcknowledge
(
item
.
e
.
eventId
).
then
(
this
.
ack_cb
);
if
(
item
.
e
.
eventStatus
&
EventStatus
.
NotRet
)
{
item
.
e
.
eventStatus
&=
~
EventStatus
.
NotAck
;
...
...
@@ -338,24 +333,28 @@ class Ev {
this
.
ctx
.
draw
();
}
ack_cb
(
id
,
data
,
st
s
)
{
console
.
log
(
"
ack sts
"
,
sts
);
ack_cb
(
re
s
)
{
console
.
log
(
"
ack sts
"
,
res
.
sts
);
}
open_objectgraph_cb
(
id
,
data
,
sts
,
result
)
{
if
((
sts
&
1
)
===
0
)
{
data
.
document
.
write
(
"
Error status
"
+
sts
);
open_objectgraph_cb
(
res
)
{
let
w
=
window
.
open
(
""
,
"
_blank
"
);
if
((
res
.
sts
&
1
)
===
0
)
{
w
.
document
.
write
(
"
Error status
"
+
res
.
sts
);
}
else
{
data
.
location
.
href
=
let
result
=
res
.
value
;
w
.
location
.
href
=
"
ge.html?graph=
"
+
result
.
param1
+
"
&instance=
"
+
result
.
fullname
;
data
.
document
.
title
=
result
.
fullname
;
w
.
document
.
title
=
result
.
fullname
;
}
}
open_graph_cb
(
id
,
data
,
sts
,
result
)
{
if
((
sts
&
1
)
===
0
)
{
data
.
document
.
write
(
"
Error status
"
+
sts
);
open_graph_cb
(
res
)
{
let
w
=
window
.
open
(
""
,
"
_blank
"
);
if
((
res
.
sts
&
1
)
===
0
)
{
w
.
document
.
write
(
"
Error status
"
+
res
.
sts
);
}
else
{
let
result
=
res
.
value
;
let
idx
=
result
.
param1
.
indexOf
(
'
.
'
);
if
(
idx
!==
-
1
)
{
result
.
param1
=
result
.
param1
.
substring
(
0
,
idx
);
...
...
@@ -366,62 +365,61 @@ class Ev {
instancestr
=
"
&instance=
"
+
result
.
fullname
;
}
data
.
location
.
href
=
"
ge.html?graph=
"
+
result
.
param1
+
instancestr
;
data
.
document
.
title
=
result
.
param1
;
w
.
location
.
href
=
"
ge.html?graph=
"
+
result
.
param1
+
instancestr
;
w
.
document
.
title
=
result
.
param1
;
}
}
open_plc_cb
(
id
,
data
,
sts
,
result
)
{
if
((
sts
&
1
)
===
0
)
{
data
.
document
.
write
(
"
Error status
"
+
sts
);
open_plc_cb
(
res
)
{
let
w
=
window
.
open
(
""
,
"
_blank
"
);
if
((
res
.
sts
&
1
)
===
0
)
{
w
.
document
.
write
(
"
Error status
"
+
res
.
sts
);
}
else
{
let
param1
;
if
(
result
.
param1
===
""
)
{
param1
=
""
;
}
else
{
param1
=
"
&obj=
"
+
result
.
param1
;
}
let
result
=
res
.
value
;
let
param1
=
result
.
param1
?
(
"
&obj=
"
+
result
.
param1
)
:
""
;
console
.
log
(
"
flow.html?vid=
"
+
result
.
objid
.
vid
+
"
&oix=
"
+
result
.
objid
.
oix
+
param1
);
data
.
location
.
href
=
w
.
location
.
href
=
"
flow.html?vid=
"
+
result
.
objid
.
vid
+
"
&oix=
"
+
result
.
objid
.
oix
+
param1
;
data
.
document
.
title
=
"
Trace
"
+
result
.
fullname
;
w
.
document
.
title
=
"
Trace
"
+
result
.
fullname
;
}
}
open_navigator_cb
(
id
,
data
,
sts
,
result
)
{
console
.
log
(
"
Open navigator
"
,
sts
);
if
((
sts
&
1
)
===
0
)
{
console
.
log
(
"
Error status
"
+
sts
);
open_navigator_cb
(
res
)
{
console
.
log
(
"
Open navigator
"
,
res
.
sts
);
if
((
res
.
sts
&
1
)
===
0
)
{
console
.
log
(
"
Error status
"
+
res
.
sts
);
}
else
{
localStorage
.
setItem
(
"
XttMethodNavigator
"
,
res
ult
.
fullname
);
localStorage
.
setItem
(
"
XttMethodNavigator
"
,
res
.
value
.
fullname
);
console
.
log
(
"
storage
"
,
localStorage
.
getItem
(
"
XttMethodNavigator
"
));
}
}
open_objectgraph_cb
(
id
,
data
,
sts
,
result
)
{
if
((
sts
&
1
)
===
0
)
{
data
.
document
.
write
(
"
Error status
"
+
sts
);
open_objectgraph_cb
(
res
)
{
let
w
=
window
.
open
(
""
,
"
_blank
"
);
if
((
res
.
sts
&
1
)
===
0
)
{
w
.
document
.
write
(
"
Error status
"
+
res
.
sts
);
}
else
{
let
classname
=
res
ult
.
classname
.
toLowerCase
();
let
classname
=
res
.
value
.
classname
.
toLowerCase
();
if
(
classname
.
substring
(
0
,
1
)
===
"
$
"
)
{
classname
=
classname
.
substring
(
1
);
}
let
graphname
=
"
pwr_c_
"
+
classname
;
data
.
location
.
href
=
"
ge.html?graph=
"
+
graphname
+
"
&instance=
"
+
res
ult
.
fullname
;
data
.
document
.
title
=
graphname
+
"
"
+
result
.
fullname
;
w
.
location
.
href
=
"
ge.html?graph=
"
+
graphname
+
"
&instance=
"
+
res
.
value
.
fullname
;
w
.
document
.
title
=
graphname
+
"
"
+
res
.
value
.
fullname
;
}
}
open_helpclass_cb
(
id
,
data
,
sts
,
result
)
{
if
((
sts
&
1
)
===
0
)
{
data
.
document
.
write
(
"
Error status
"
+
sts
);
open_helpclass_cb
(
res
)
{
let
w
=
window
.
open
(
""
,
"
_blank
"
);
if
((
res
.
sts
&
1
)
===
0
)
{
w
.
document
.
write
(
"
Error status
"
+
res
.
sts
);
}
else
{
console
.
log
(
"
open_helpclass
"
,
res
ult
.
param1
);
data
.
location
.
href
=
location
.
protocol
+
"
//
"
+
location
.
host
+
res
ult
.
param1
;
console
.
log
(
"
open_helpclass
"
,
res
.
value
.
param1
);
w
.
location
.
href
=
location
.
protocol
+
"
//
"
+
location
.
host
+
res
.
value
.
param1
;
}
}
...
...
@@ -442,12 +440,12 @@ class Ev {
}
trace_cyclic
()
{
this
.
ctx
.
gdh
.
mhSync
(
this
.
mhSyncIdx
,
this
.
sync_cb
,
this
);
this
.
ctx
.
gdh
.
mhSync
(
this
.
mhSyncIdx
).
then
(
this
.
sync_cb
);
this
.
timer
=
setTimeout
(
this
.
trace_cyclic
,
1000
);
}
trace_scan
(
id
,
st
s
)
{
trace_scan
(
re
s
)
{
this
.
scan_update
=
false
;
if
(
this
.
scan_update
)
{
this
.
ctx
.
draw
();
...
...
@@ -581,17 +579,13 @@ class Ev {
case
Event
.
Key_CtrlL
:
let
o
=
this
.
ctx
.
get_select
();
if
(
o
.
userdata
instanceof
EvItemAlarm
)
{
let
newwindow
=
window
.
open
(
""
,
"
_blank
"
);
this
.
ctx
.
gdh
.
getObject
(
o
.
userdata
.
objid
,
GdhOp
.
GET_OP_METHOD_PLC
,
this
.
open_plc_cb
,
newwindow
);
this
.
ctx
.
gdh
.
getObject
(
o
.
userdata
.
objid
,
GdhOp
.
GET_OP_METHOD_PLC
).
then
(
this
.
open_plc_cb
);
}
break
;
case
Event
.
Key_CtrlG
:
let
o
=
this
.
ctx
.
get_select
();
if
(
o
.
userdata
instanceof
EvItemAlarm
)
{
let
newwindow
=
window
.
open
(
""
,
"
_blank
"
);
this
.
ctx
.
gdh
.
getObject
(
o
.
userdata
.
objid
,
GdhOp
.
GET_OP_METHOD_PLC
,
this
.
open_objectgraph_cb
,
newwindow
);
this
.
ctx
.
gdh
.
getObject
(
o
.
userdata
.
objid
,
GdhOp
.
GET_OP_METHOD_PLC
).
then
(
this
.
open_objectgraph_cb
);
}
break
;
default
:
...
...
java/jsw/flow/src/flow.ts
View file @
0501e23c
...
...
@@ -1775,10 +1775,8 @@ class FlowFrame {
}
flow_open
()
{
console
.
log
(
"
flow_open
"
);
console
.
log
(
"
ctx.gdh
"
,
this
.
ctx
.
gdh
);
this
.
ctx
.
connect
();
this
.
ctx
.
gdh
.
refObjectInfoList
(
this
.
ctx
.
gdh
.
refObjectInfoListReply
);
this
.
ctx
.
gdh
.
refObjectInfoList
();
this
.
timer
=
setTimeout
(
this
.
flow_cyclic
,
1000
);
}
...
...
@@ -1793,7 +1791,6 @@ class FlowFrame {
}
flow_close
()
{
console
.
log
(
"
Close function
"
,
this
.
timer
);
clearTimeout
(
this
.
timer
);
for
(
let
i
in
this
.
ctx
.
gdh
.
pending
)
{
delete
this
.
ctx
.
gdh
.
pending
[
i
];
...
...
java/jsw/ge/src/ge_appl.ts
View file @
0501e23c
...
...
@@ -74,10 +74,8 @@ class Appl {
}
if
(
classGraph
)
{
console
.
log
(
"
Cmd classGraph
"
);
let
newwindow
=
window
.
open
(
""
,
"
_blank
"
);
this
.
graph
.
gdh
.
getObjectFromName
(
instanceValue
,
GdhOp
.
GET_OP_METHOD_OBJECTGRAPH
,
this
.
open_objectgraph_cb
,
newwindow
);
GdhOp
.
GET_OP_METHOD_OBJECTGRAPH
).
then
(
this
.
open_objectgraph_cb
);
}
else
{
let
graphName
=
cli
.
getQualValue
(
"
cli_arg2
"
).
toLowerCase
();
if
(
!
graphName
)
{
...
...
@@ -266,14 +264,16 @@ class Appl {
}
}
open_objectgraph_cb
(
id
,
data
,
sts
,
result
)
{
if
((
sts
&
1
)
===
0
)
{
data
.
document
.
write
(
"
Error status
"
+
sts
);
open_objectgraph_cb
(
res
)
{
let
w
=
window
.
open
(
""
,
"
_blank
"
);
if
((
res
.
sts
&
1
)
===
0
)
{
w
.
document
.
write
(
"
Error status
"
+
res
.
sts
);
}
else
{
let
result
=
res
.
value
;
console
.
log
(
"
param1
"
,
result
.
param1
);
data
.
location
.
href
=
w
.
location
.
href
=
"
ge.html?graph=
"
+
result
.
param1
+
"
&instance=
"
+
result
.
fullname
;
data
.
document
.
title
=
result
.
param1
+
"
"
+
result
.
fullname
;
w
.
document
.
title
=
result
.
param1
+
"
"
+
result
.
fullname
;
}
}
}
...
...
java/jsw/ge/src/ge_dyn.ts
View file @
0501e23c
...
...
@@ -1740,19 +1740,17 @@ class DynValue extends DynElem {
return
format
;
}
// TODO
return
format
;
// TODO
let
ret
=
this
.
dyn
.
graph
.
getGdh
().
getObjectInfoInt
(
pname
.
name
);
if
(
even
(
ret
))
{
let
sts
=
this
.
dyn
.
graph
.
getGdh
().
getObjectInfoInt
(
pname
.
name
);
if
(
even
(
sts
))
{
return
format
;
}
decimals
=
Math
.
max
(
ret
.
value
-
decr
,
0
);
decimals
=
Math
.
max
(
sts
-
decr
,
0
);
if
(
decimals
>=
10
)
{
return
format
;
}
if
(
format
===
null
)
{
if
(
!
format
)
{
return
"
%.
"
+
decimals
+
"
f
"
;
}
...
...
@@ -1764,7 +1762,7 @@ class DynValue extends DynElem {
if
(
s
<
2
||
format
.
charAt
(
s
-
2
)
!==
'
.
'
)
{
return
"
%.
"
+
decimals
+
"
f
"
;
}
else
{
return
format
.
substring
(
0
,
s
-
1
)
+
decimals
+
format
.
substring
(
s
)
;
return
format
.
substring
(
0
,
format
.
indexOf
(
'
.
'
)
+
1
)
+
decimals
+
"
f
"
;
}
}
}
...
...
@@ -1866,10 +1864,7 @@ class DynValue extends DynElem {
this
.
dyn
.
repaintNow
=
true
;
}
else
{
if
(
this
.
a
.
database
===
Database
.
Gdh
)
{
let
data
=
new
Array
(
2
);
data
[
0
]
=
this
;
data
[
1
]
=
object
;
this
.
dyn
.
graph
.
getGdh
().
getMsg
(
value0
,
DynValue
.
scan2
,
data
);
this
.
dyn
.
graph
.
getGdh
().
getMsg
(
value0
).
then
(
this
.
scan2
(
object
));
}
}
}
...
...
@@ -1897,16 +1892,16 @@ class DynValue extends DynElem {
}
}
static
scan2
(
id
,
data
,
sts
,
value
)
{
let
self
=
data
[
0
];
let
object
=
data
[
1
];
let
annot_num
=
Dyn
.
instance_to_number
(
self
.
instance
);
if
(
sts
&
1
!==
0
)
{
object
.
setAnnotation
(
annot_num
,
value
);
}
else
{
object
.
setAnnotation
(
annot_num
,
"
Unknown message
"
);
scan2
(
object
)
{
return
function
(
res
)
{
let
annot_num
=
Dyn
.
instance_to_number
(
this
.
instance
);
if
(
res
.
sts
&
1
!==
0
)
{
object
.
setAnnotation
(
annot_num
,
res
.
value
);
}
else
{
object
.
setAnnotation
(
annot_num
,
"
Unknown message
"
);
}
this
.
dyn
.
repaintNow
=
true
;
}
self
.
dyn
.
repaintNow
=
true
;
}
open
(
lines
,
row
)
{
...
...
@@ -3860,7 +3855,7 @@ class DynTrend extends DynElem {
if
(
dt
>=
0.001
)
{
object
.
set_scan_time
(
dt
);
this
.
scan_time
=
dt
;
if
(
this
.
cycle
===
Cycle
.
Slow
)
{
if
(
this
.
dyn
.
cycle
===
Cycle
.
Slow
)
{
let
current_graph_scan_time
=
this
.
dyn
.
graph
.
getScanTime
();
if
(
current_graph_scan_time
>
this
.
scan_time
||
this
.
scan_time
<=
this
.
orig_graph_scan_time
)
{
this
.
dyn
.
graph
.
setScanTime
(
this
.
scan_time
);
...
...
@@ -3932,7 +3927,7 @@ class DynTrend extends DynElem {
this
.
firstScan
=
false
;
}
if
(
this
.
cycle
===
Cycle
.
Slow
)
{
if
(
this
.
dyn
.
cycle
===
Cycle
.
Slow
)
{
this
.
acc_time
+=
this
.
dyn
.
graph
.
getScanTime
();
}
else
{
this
.
acc_time
+=
this
.
dyn
.
graph
.
getFastScanTime
();
...
...
@@ -4431,7 +4426,7 @@ class DynXY_Curve extends DynElem {
switch
(
this
.
xAttrType
)
{
case
Type
.
Float32
:
this
.
dyn
.
graph
.
getGdh
()
.
getObjectInfoFloatArray
(
pname
.
name
,
size
,
DynXY_Curve
.
scan2
,
this
);
.
getObjectInfoFloatArray
(
pname
.
name
,
size
).
then
(
this
.
scan2
);
break
;
case
Type
.
Int32
:
case
Type
.
Int16
:
...
...
@@ -4440,7 +4435,7 @@ class DynXY_Curve extends DynElem {
case
Type
.
UInt16
:
case
Type
.
UInt8
:
this
.
dyn
.
graph
.
getGdh
()
.
getObjectInfoIntArray
(
pname
.
name
,
size
,
DynXY_Curve
.
scan2
,
this
);
.
getObjectInfoIntArray
(
pname
.
name
,
size
).
then
(
this
.
scan2
);
break
;
default
:
return
;
...
...
@@ -4449,8 +4444,8 @@ class DynXY_Curve extends DynElem {
this
.
firstScan
=
false
;
}
s
tatic
scan2
(
id
,
self
,
sts
,
value
)
{
switch
(
self
.
xAttrType
)
{
s
can2
(
res
)
{
switch
(
this
.
xAttrType
)
{
case
Type
.
Float32
:
case
Type
.
Int32
:
case
Type
.
Int16
:
...
...
@@ -4458,31 +4453,31 @@ class DynXY_Curve extends DynElem {
case
Type
.
UInt32
:
case
Type
.
UInt16
:
case
Type
.
UInt8
:
if
(
!
(
sts
&
1
))
{
if
(
!
(
res
.
sts
&
1
))
{
return
;
}
switch
(
self
.
datatype
)
{
switch
(
this
.
datatype
)
{
case
CurveDataType
.
XYArrays
:
self
.
curveX
=
value
.
slice
(
0
,
self
.
noOfPoints
);
this
.
curveX
=
res
.
value
.
slice
(
0
,
this
.
noOfPoints
);
break
;
case
CurveDataType
.
PointArray
:
self
.
curveX
=
new
Array
(
self
.
noOfPoints
);
self
.
curveY
=
new
Array
(
self
.
noOfPoints
);
for
(
let
i
=
0
;
i
<
self
.
noOfPoints
;
i
++
)
{
self
.
curveX
[
i
]
=
value
[
2
*
i
];
self
.
curveY
[
i
]
=
value
[
2
*
i
+
1
];
this
.
curveX
=
new
Array
(
this
.
noOfPoints
);
this
.
curveY
=
new
Array
(
this
.
noOfPoints
);
for
(
let
i
=
0
;
i
<
this
.
noOfPoints
;
i
++
)
{
this
.
curveX
[
i
]
=
res
.
value
[
2
*
i
];
this
.
curveY
[
i
]
=
res
.
value
[
2
*
i
+
1
];
}
self
.
dyn
.
repaintNow
=
true
;
this
.
dyn
.
repaintNow
=
true
;
break
;
case
CurveDataType
.
TableObject
:
self
.
noOfPoints
=
Math
.
min
(
Math
.
floor
(
value
[
0
]),
self
.
noofpoints
);
self
.
curveY
=
new
Array
(
self
.
noOfPoints
);
self
.
curveX
=
new
Array
(
self
.
noOfPoints
);
for
(
let
i
=
0
;
i
<
self
.
noOfPoints
;
i
++
)
{
self
.
curveX
[
i
]
=
value
[
2
*
i
+
1
];
self
.
curveY
[
i
]
=
value
[
2
*
i
+
2
];
this
.
noOfPoints
=
Math
.
min
(
Math
.
floor
(
res
.
value
[
0
]),
this
.
noofpoints
);
this
.
curveY
=
new
Array
(
this
.
noOfPoints
);
this
.
curveX
=
new
Array
(
this
.
noOfPoints
);
for
(
let
i
=
0
;
i
<
this
.
noOfPoints
;
i
++
)
{
this
.
curveX
[
i
]
=
res
.
value
[
2
*
i
+
1
];
this
.
curveY
[
i
]
=
res
.
value
[
2
*
i
+
2
];
}
self
.
dyn
.
repaintNow
=
true
;
this
.
dyn
.
repaintNow
=
true
;
break
;
}
break
;
...
...
@@ -4491,18 +4486,17 @@ class DynXY_Curve extends DynElem {
}
// Read y-array
switch
(
self
.
datatype
)
{
switch
(
this
.
datatype
)
{
case
CurveDataType
.
XYArrays
:
let
pname
=
self
.
dyn
.
parseAttrName
(
self
.
y_attr
);
self
.
noOfPoints
=
Math
.
min
(
self
.
noOfPoints
,
pname
.
elements
);
self
.
yAttrType
=
pname
.
type
;
self
.
curveY
=
new
Array
(
self
.
noOfPoints
);
let
pname
=
this
.
dyn
.
parseAttrName
(
this
.
y_attr
);
this
.
noOfPoints
=
Math
.
min
(
this
.
noOfPoints
,
pname
.
elements
);
this
.
yAttrType
=
pname
.
type
;
this
.
curveY
=
new
Array
(
this
.
noOfPoints
);
switch
(
self
.
yAttrType
)
{
switch
(
this
.
yAttrType
)
{
case
Type
.
Float32
:
self
.
dyn
.
graph
.
getGdh
()
.
getObjectInfoFloatArray
(
pname
.
name
,
self
.
noOfPoints
,
self
.
scan3
,
self
);
this
.
dyn
.
graph
.
getGdh
()
.
getObjectInfoFloatArray
(
pname
.
name
,
this
.
noOfPoints
).
then
(
this
.
scan3
);
break
;
case
Type
.
Int32
:
case
Type
.
Int16
:
...
...
@@ -4510,9 +4504,8 @@ class DynXY_Curve extends DynElem {
case
Type
.
UInt32
:
case
Type
.
UInt16
:
case
Type
.
UInt8
:
self
.
dyn
.
graph
.
getGdh
()
.
getObjectInfoIntArray
(
pname
.
name
,
self
.
noOfPoints
,
self
.
scan3
,
self
);
this
.
dyn
.
graph
.
getGdh
()
.
getObjectInfoIntArray
(
pname
.
name
,
this
.
noOfPoints
).
then
(
this
.
scan3
);
break
;
default
:
return
;
...
...
@@ -4521,14 +4514,14 @@ class DynXY_Curve extends DynElem {
}
}
s
tatic
scan3
(
id
,
self
,
sts
,
value
)
{
if
(
!
(
sts
&
1
))
{
s
can3
(
res
)
{
if
(
!
(
res
.
sts
&
1
))
{
return
;
}
switch
(
self
.
datatype
)
{
switch
(
this
.
datatype
)
{
case
CurveDataType
.
XYArrays
:
switch
(
self
.
yAttrType
)
{
switch
(
this
.
yAttrType
)
{
case
Type
.
Float32
:
case
Type
.
Int32
:
case
Type
.
Int16
:
...
...
@@ -4536,8 +4529,8 @@ class DynXY_Curve extends DynElem {
case
Type
.
UInt32
:
case
Type
.
UInt16
:
case
Type
.
UInt8
:
self
.
curveY
=
value
.
slice
(
0
,
self
.
noOfPoints
);
self
.
dyn
.
repaintNow
=
true
;
this
.
curveY
=
res
.
value
.
slice
(
0
,
this
.
noOfPoints
);
this
.
dyn
.
repaintNow
=
true
;
break
;
default
:
return
;
...
...
@@ -4545,8 +4538,8 @@ class DynXY_Curve extends DynElem {
break
;
}
self
.
object
.
set_xy_data
(
self
.
curveY
,
self
.
curveX
,
self
.
curve_number
-
1
,
self
.
noOfPoints
);
this
.
object
.
set_xy_data
(
this
.
curveY
,
this
.
curveX
,
this
.
curve_number
-
1
,
this
.
noOfPoints
);
}
}
...
...
@@ -6674,16 +6667,16 @@ class DynIncrAnalog extends DynElem {
case
Database
.
Gdh
:
if
(
typeId
===
Type
.
Int32
)
{
this
.
dyn
.
graph
.
getGdh
()
.
getObjectInfoInt
(
pname
.
name
,
DynIncrAnalog
.
action2
,
this
);
.
getObjectInfoInt
(
pname
.
name
).
then
(
this
.
action2
);
}
else
{
this
.
dyn
.
graph
.
getGdh
()
.
getObjectInfoFloat
(
pname
.
name
,
DynIncrAnalog
.
action2
,
this
);
.
getObjectInfoFloat
(
pname
.
name
).
then
(
this
.
action2
);
}
break
;
case
Database
.
Local
:
let
ret
=
this
.
dyn
.
graph
.
getLdb
()
.
getObjectInfo
(
this
.
dyn
.
graph
,
pname
.
name
);
DynIncrAnalog
.
action2
(
0
,
this
,
1
,
ret
.
value
);
this
.
action2
({
id
:
0
,
sts
:
1
,
value
:
ret
.
value
}
);
break
;
}
break
;
...
...
@@ -6692,33 +6685,34 @@ class DynIncrAnalog extends DynElem {
return
1
;
}
static
action2
(
id
,
self
,
sts
,
value
)
{
if
(
!
(
sts
&
1
))
{
action2
(
res
)
{
if
(
!
(
res
.
sts
&
1
))
{
return
;
}
let
pname
=
self
.
dyn
.
parseAttrName
(
self
.
attribute
);
let
pname
=
this
.
dyn
.
parseAttrName
(
this
.
attribute
);
if
(
pname
===
null
)
{
return
1
;
}
let
typeId
=
(
pname
.
type
<
0
)
?
Type
.
Float32
:
pname
.
type
;
value
+=
self
.
increment
;
if
(
!
(
self
.
min_value
===
0
&&
self
.
max_value
===
0
))
{
let
sts
=
res
.
sts
;
let
value
=
res
.
value
+
this
.
increment
;
if
(
!
(
this
.
min_value
===
0
&&
this
.
max_value
===
0
))
{
if
(
typeId
===
Type
.
Int32
)
{
value
=
clamp
(
value
,
Math
.
floor
(
self
.
min_value
),
Math
.
floor
(
self
.
max_value
));
value
=
clamp
(
value
,
Math
.
floor
(
this
.
min_value
),
Math
.
floor
(
this
.
max_value
));
}
else
{
value
=
clamp
(
value
,
self
.
min_value
,
self
.
max_value
);
value
=
clamp
(
value
,
this
.
min_value
,
this
.
max_value
);
}
}
if
(
pname
.
database
===
Database
.
Gdh
)
{
if
(
typeId
===
Type
.
Int32
)
{
sts
=
self
.
dyn
.
graph
.
getGdh
().
setObjectInfoInt
(
pname
.
name
,
value
);
sts
=
this
.
dyn
.
graph
.
getGdh
().
setObjectInfoInt
(
pname
.
name
,
value
);
}
else
{
sts
=
self
.
dyn
.
graph
.
getGdh
().
setObjectInfoFloat
(
pname
.
name
,
value
);
sts
=
this
.
dyn
.
graph
.
getGdh
().
setObjectInfoFloat
(
pname
.
name
,
value
);
}
}
else
if
(
pname
.
database
===
Database
.
Local
)
{
sts
=
self
.
dyn
.
graph
.
getLdb
().
setObjectInfo
(
self
.
dyn
.
graph
,
pname
.
name
,
value
);
sts
=
this
.
dyn
.
graph
.
getLdb
().
setObjectInfo
(
this
.
dyn
.
graph
,
pname
.
name
,
value
);
}
if
(
even
(
sts
))
{
console
.
log
(
"
IncrAnalog
"
+
pname
.
name
);
...
...
@@ -8406,46 +8400,46 @@ class DynMethodToolbar extends DynElem {
this
.
pname_name
=
pname
.
name
;
let
parsed_name
=
this
.
pname_name
+
"
.XttMethodsMask.Flags
"
;
this
.
dyn
.
graph
.
getGdh
().
getObjectInfoInt
(
parsed_name
,
DynMethodToolbar
.
connect2
,
this
);
this
.
dyn
.
graph
.
getGdh
().
getObjectInfoInt
(
parsed_name
).
then
(
this
.
connect2
);
}
static
connect2
(
id
,
self
,
sts
,
value
)
{
if
(
sts
&
1
)
{
self
.
xm_mask_flags
=
value
;
connect2
(
res
)
{
if
(
res
.
sts
&
1
)
{
this
.
xm_mask_flags
=
res
.
value
;
if
((
self
.
xm_mask_flags
&
XttMethodsFlagsMask
.
IsConfigured
)
===
0
)
{
self
.
mask_configure
=
1
;
self
.
mask_store
=
1
;
self
.
connect5
();
if
((
this
.
xm_mask_flags
&
XttMethodsFlagsMask
.
IsConfigured
)
===
0
)
{
this
.
mask_configure
=
1
;
this
.
mask_store
=
1
;
this
.
connect5
();
}
else
{
let
parsed_name
=
self
.
pname_name
+
"
.XttMethodsMask.OpMethods
"
;
self
.
dyn
.
graph
.
getGdh
().
getObjectInfoInt
(
parsed_name
,
self
.
connect3
,
self
);
let
parsed_name
=
this
.
pname_name
+
"
.XttMethodsMask.OpMethods
"
;
this
.
dyn
.
graph
.
getGdh
().
getObjectInfoInt
(
parsed_name
).
then
(
this
.
connect3
);
}
}
else
{
self
.
mask_configure
=
1
;
self
.
connect5
();
this
.
mask_configure
=
1
;
this
.
connect5
();
}
}
static
connect3
(
id
,
self
,
sts
,
value
)
{
if
(
sts
&
1
)
{
self
.
xm_mask_opmethods
=
value
;
connect3
(
res
)
{
if
(
res
.
sts
&
1
)
{
this
.
xm_mask_opmethods
=
res
.
value
;
}
else
{
console
.
log
(
"
DynMethodToolbar:
"
+
self
.
pname_name
);
self
.
mask_configure
=
1
;
console
.
log
(
"
DynMethodToolbar:
"
+
this
.
pname_name
);
this
.
mask_configure
=
1
;
}
let
parsed_name
=
self
.
pname_name
+
"
.XttMethodsMask.MntMethods
"
;
self
.
dyn
.
graph
.
getGdh
().
getObjectInfoInt
(
parsed_name
,
self
.
connect4
,
self
);
let
parsed_name
=
this
.
pname_name
+
"
.XttMethodsMask.MntMethods
"
;
this
.
dyn
.
graph
.
getGdh
().
getObjectInfoInt
(
parsed_name
).
then
(
this
.
connect4
);
}
static
connect4
(
id
,
self
,
sts
,
value
)
{
if
(
sts
&
1
)
{
self
.
xm_mask_mntmethods
=
value
;
connect4
(
res
)
{
if
(
res
.
sts
&
1
)
{
this
.
xm_mask_mntmethods
=
res
.
value
;
}
else
{
console
.
log
(
"
DynMethodToolbar:
"
+
self
.
pname_name
);
self
.
mask_configure
=
1
;
console
.
log
(
"
DynMethodToolbar:
"
+
this
.
pname_name
);
this
.
mask_configure
=
1
;
}
self
.
connect5
();
this
.
connect5
();
}
connect5
()
{
...
...
@@ -8667,8 +8661,7 @@ class DynMethodPulldownMenu extends DynElem {
this
.
pname_name
=
pname
.
name
;
let
parsed_name
=
this
.
pname_name
+
"
.XttMethodsMask.Flags
"
;
this
.
dyn
.
graph
.
getGdh
()
.
getObjectInfoInt
(
parsed_name
,
DynMethodPulldownMenu
.
action2
,
this
);
this
.
dyn
.
graph
.
getGdh
().
getObjectInfoInt
(
parsed_name
).
then
(
this
.
action2
);
}
break
;
...
...
@@ -8744,46 +8737,45 @@ class DynMethodPulldownMenu extends DynElem {
return
1
;
}
static
action2
(
id
,
self
,
sts
,
value
)
{
if
(
sts
&
1
)
{
self
.
xm_mask_flags
=
value
;
action2
(
res
)
{
if
(
res
.
sts
&
1
)
{
this
.
xm_mask_flags
=
res
.
value
;
if
((
self
.
xm_mask_flags
&
XttMethodsFlagsMask
.
IsConfigured
)
===
0
)
{
self
.
mask_configure
=
1
;
self
.
mask_store
=
1
;
self
.
action5
();
if
((
this
.
xm_mask_flags
&
XttMethodsFlagsMask
.
IsConfigured
)
===
0
)
{
this
.
mask_configure
=
1
;
this
.
mask_store
=
1
;
this
.
action5
();
}
else
{
let
parsed_name
=
self
.
pname_name
+
"
.XttMethodsMask.OpMethods
"
;
let
parsed_name
=
this
.
pname_name
+
"
.XttMethodsMask.OpMethods
"
;
self
.
dyn
.
graph
.
getGdh
()
.
getObjectInfoInt
(
parsed_name
,
self
.
action3
,
self
);
this
.
dyn
.
graph
.
getGdh
().
getObjectInfoInt
(
parsed_name
).
then
(
this
.
action3
);
}
}
else
{
self
.
mask_configure
=
1
;
self
.
action5
();
this
.
mask_configure
=
1
;
this
.
action5
();
}
}
static
action3
(
id
,
self
,
sts
,
value
)
{
if
(
sts
&
1
)
{
self
.
xm_mask_opmethods
=
value
;
action3
(
res
)
{
if
(
res
.
sts
&
1
)
{
this
.
xm_mask_opmethods
=
res
.
value
;
}
else
{
console
.
log
(
"
DynMethodToolbar:
"
+
self
.
pname_name
);
self
.
mask_configure
=
1
;
console
.
log
(
"
DynMethodToolbar:
"
+
this
.
pname_name
);
this
.
mask_configure
=
1
;
}
let
parsed_name
=
self
.
pname_name
+
"
.XttMethodsMask.MntMethods
"
;
self
.
dyn
.
graph
.
getGdh
().
getObjectInfoInt
(
parsed_name
,
self
.
action4
,
self
);
let
parsed_name
=
this
.
pname_name
+
"
.XttMethodsMask.MntMethods
"
;
this
.
dyn
.
graph
.
getGdh
().
getObjectInfoInt
(
parsed_name
).
then
(
this
.
action4
);
}
static
action4
(
id
,
self
,
sts
,
value
)
{
if
(
sts
&
1
)
{
self
.
xm_mask_mntmethods
=
value
;
action4
(
res
)
{
if
(
res
.
sts
&
1
)
{
this
.
xm_mask_mntmethods
=
res
.
value
;
}
else
{
console
.
log
(
"
DynMethodToolbar:
"
+
self
.
pname_name
);
self
.
mask_configure
=
1
;
console
.
log
(
"
DynMethodToolbar:
"
+
this
.
pname_name
);
this
.
mask_configure
=
1
;
}
self
.
action5
();
this
.
action5
();
}
action5
()
{
...
...
java/jsw/ge/src/ge_graph.ts
View file @
0501e23c
...
...
@@ -249,31 +249,27 @@ class Graph {
gdh_init_cb
()
{
if
(
this
.
priv
===
null
)
{
this
.
gdh
.
login
(
""
,
""
,
this
.
login_cb
,
this
);
this
.
gdh
.
login
(
""
,
""
).
then
(
this
.
login_cb
);
}
this
.
ctx
.
traceConnect
();
this
.
gdh
.
refObjectInfoList
(
this
.
trace_connected
);
this
.
gdh
.
refObjectInfoList
(
).
then
(
e
=>
this
.
trace_cyclic
()
);
}
login_cb
(
id
,
data
,
sts
,
result
)
{
console
.
log
(
"
Login:
"
,
sts
,
result
);
this
.
priv
=
(
sts
&
1
)
?
result
:
0
;
}
trace_connected
(
id
,
sts
)
{
this
.
trace_cyclic
();
login_cb
(
res
)
{
console
.
log
(
"
Login:
"
,
res
.
sts
,
res
.
value
);
this
.
priv
=
(
res
.
sts
&
1
)
?
res
.
value
:
0
;
}
trace_cyclic
()
{
if
(
this
.
frame
.
nogdh
)
{
this
.
trace_scan
(
0
,
0
);
this
.
trace_scan
();
}
else
{
this
.
gdh
.
getRefObjectInfoAll
(
this
.
trace_scan
);
}
}
trace_scan
(
id
,
sts
)
{
trace_scan
()
{
this
.
scan_time
=
this
.
ctx
.
scantime
;
this
.
fast_scan_time
=
this
.
ctx
.
fast_scantime
;
this
.
animation_scan_time
=
this
.
ctx
.
animation_scantime
;
...
...
java/jsw/opwind/src/opwind.ts
View file @
0501e23c
...
...
@@ -32,8 +32,8 @@ class OpWindMenu {
gdh_init_cb
()
{
let
oid
=
new
PwrtObjid
(
0
,
0
);
this
.
user
=
"
Default
"
;
this
.
gdh
.
login
(
""
,
""
,
this
.
login_cb
,
this
);
this
.
gdh
.
getOpwindMenu
(
this
.
get_opplace
()
,
this
.
get_menu_cb
,
999
);
this
.
gdh
.
login
(
""
,
""
).
then
(
this
.
login_cb
);
this
.
gdh
.
getOpwindMenu
(
this
.
get_opplace
()
).
then
(
this
.
get_menu_cb
);
}
add_menu_button
(
context
,
text
)
{
...
...
@@ -49,9 +49,9 @@ class OpWindMenu {
return
button
;
}
get_menu_cb
(
id
,
data
,
sts
,
result
)
{
get_menu_cb
(
res
)
{
let
result
=
res
.
value
;
this
.
info
=
result
;
console
.
log
(
"
Menu received
"
,
sts
,
data
,
result
.
buttons
.
length
);
let
context
=
document
.
getElementById
(
"
opwindmenu
"
);
document
.
getElementById
(
"
opwind_title
"
).
innerHTML
=
result
.
title
;
...
...
@@ -89,7 +89,7 @@ class OpWindMenu {
passwd
=
c
.
crypt
(
"
aa
"
,
passwd
);
this
.
user
=
user
;
this
.
gdh
.
login
(
user
,
passwd
,
this
.
login_cb
,
this
);
this
.
gdh
.
login
(
user
,
passwd
).
then
(
this
.
login_cb
);
});
document
.
getElementById
(
"
cancel_button
"
)
.
addEventListener
(
"
click
"
,
function
(
event
)
{
...
...
@@ -102,7 +102,7 @@ class OpWindMenu {
document
.
getElementById
(
"
login_frame
"
).
style
.
height
=
'
0px
'
;
this
.
priv
=
0
;
this
.
user
=
"
Default
"
;
this
.
gdh
.
login
(
""
,
""
,
this
.
login_cb
,
this
);
this
.
gdh
.
login
(
""
,
""
).
then
(
this
.
login_cb
);
});
document
.
getElementById
(
"
login_user
"
).
innerHTML
=
""
;
...
...
@@ -200,10 +200,9 @@ class OpWindMenu {
}
}
login_cb
(
id
,
data
,
sts
,
result
)
{
console
.
log
(
"
Login:
"
,
sts
,
result
);
if
(
sts
&
1
)
{
this
.
priv
=
result
;
login_cb
(
res
)
{
if
(
res
.
sts
&
1
)
{
this
.
priv
=
res
.
value
;
sessionStorage
.
setItem
(
"
pwr_privilege
"
,
String
(
this
.
priv
));
if
(
this
.
user_text
!==
null
)
{
this
.
user_text
.
textContent
=
this
.
user
+
"
on
"
+
this
.
host
;
...
...
java/jsw/xtt/src/xtt.ts
View file @
0501e23c
...
...
@@ -32,9 +32,9 @@ class Xtt {
let
y
=
event
.
pageY
-
this
.
ctx
.
gdraw
.
offset_top
;
let
x
=
event
.
pageX
;
if
(
event
.
shiftKey
)
{
xtt
.
ctx
.
event_handler
(
Event
.
MB1ClickShift
,
x
,
y
);
this
.
ctx
.
event_handler
(
Event
.
MB1ClickShift
,
x
,
y
);
}
else
{
xtt
.
ctx
.
event_handler
(
Event
.
MB1Click
,
x
,
y
);
this
.
ctx
.
event_handler
(
Event
.
MB1Click
,
x
,
y
);
}
});
document
.
addEventListener
(
"
keydown
"
,
function
(
event
)
{
...
...
@@ -62,9 +62,7 @@ class Xtt {
.
addEventListener
(
"
click
"
,
function
(
event
)
{
let
o
=
this
.
ctx
.
get_select
();
if
(
o
.
userdata
instanceof
XttItemObject
)
{
let
newwindow
=
window
.
open
(
""
,
"
_blank
"
);
this
.
ctx
.
gdh
.
getObject
(
o
.
userdata
.
objid
,
GdhOp
.
GET_OP_METHOD_GRAPH
,
this
.
open_graph_cb
,
newwindow
);
this
.
ctx
.
gdh
.
getObject
(
o
.
userdata
.
objid
,
GdhOp
.
GET_OP_METHOD_GRAPH
).
then
(
this
.
open_graph_cb
);
}
console
.
log
(
"
toolitem1 event
"
);
});
...
...
@@ -72,10 +70,7 @@ class Xtt {
.
addEventListener
(
"
click
"
,
function
(
event
)
{
let
o
=
this
.
ctx
.
get_select
();
if
(
o
.
userdata
instanceof
XttItemObject
)
{
let
newwindow
=
window
.
open
(
""
,
"
_blank
"
);
this
.
ctx
.
gdh
.
getObject
(
o
.
userdata
.
objid
,
GdhOp
.
GET_OP_METHOD_OBJECTGRAPH
,
this
.
open_objectgraph_cb
,
newwindow
);
this
.
ctx
.
gdh
.
getObject
(
o
.
userdata
.
objid
,
GdhOp
.
GET_OP_METHOD_OBJECTGRAPH
).
then
(
this
.
open_objectgraph_cb
);
}
console
.
log
(
"
toolitem2 event
"
);
});
...
...
@@ -84,9 +79,7 @@ class Xtt {
console
.
log
(
"
toolitem1 event
"
);
let
o
=
this
.
ctx
.
get_select
();
if
(
o
.
userdata
instanceof
XttItemObject
)
{
let
newwindow
=
window
.
open
(
""
,
"
_blank
"
);
this
.
ctx
.
gdh
.
getObject
(
o
.
userdata
.
objid
,
GdhOp
.
GET_OP_METHOD_PLC
,
this
.
open_plc_cb
,
newwindow
);
this
.
ctx
.
gdh
.
getObject
(
o
.
userdata
.
objid
,
GdhOp
.
GET_OP_METHOD_PLC
).
then
(
this
.
open_plc_cb
);
}
else
if
(
o
.
userdata
instanceof
XttItemCrr
)
{
let
idx
=
o
.
userdata
.
name
.
lastIndexOf
(
'
-
'
);
let
ostring
=
""
;
...
...
@@ -117,7 +110,7 @@ class Xtt {
document
.
getElementById
(
"
toolitem6
"
)
.
addEventListener
(
"
click
"
,
function
(
event
)
{
let
o
=
this
.
ctx
.
get_select
();
this
.
ctx
.
gdh
.
crrSignal
(
o
.
userdata
.
objid
,
this
.
open_crr_cb
,
o
);
this
.
ctx
.
gdh
.
crrSignal
(
o
.
userdata
.
objid
).
then
(
this
.
open_crr_cb
(
o
)
);
console
.
log
(
"
toolitem6 event
"
);
});
document
.
getElementById
(
"
toolitem7
"
)
...
...
@@ -132,9 +125,8 @@ class Xtt {
return
;
}
if
(
o
.
userdata
instanceof
XttItemObject
)
{
let
newwindow
=
window
.
open
(
""
,
"
_blank
"
);
this
.
ctx
.
gdh
.
getObject
(
o
.
userdata
.
objid
,
GdhOp
.
GET_OP_METHOD_HELPCLASS
,
this
.
open_helpclass_cb
,
newwindow
);
GdhOp
.
GET_OP_METHOD_HELPCLASS
).
then
(
this
.
open_helpclass_cb
);
}
});
...
...
@@ -153,148 +145,151 @@ class Xtt {
gdh_init_cb
()
{
if
(
this
.
priv
===
null
)
{
this
.
ctx
.
gdh
.
login
(
""
,
""
,
this
.
login_cb
,
this
);
this
.
ctx
.
gdh
.
login
(
""
,
""
).
then
(
this
.
login_cb
);
}
let
oid
=
new
PwrtObjid
(
0
,
0
);
this
.
ctx
.
gdh
.
getAllXttChildren
(
oid
,
this
.
open_children_cb
,
new
XttOpenChildrenData
(
null
,
null
));
this
.
ctx
.
gdh
.
getAllXttChildren
(
oid
).
then
(
this
.
open_children_cb
(
new
XttOpenChildrenData
(
null
,
null
)));
this
.
ctx
.
gdh
.
listSent
=
true
;
this
.
trace_cyclic
();
}
login_cb
(
id
,
data
,
sts
,
result
)
{
console
.
log
(
"
Login:
"
,
sts
,
result
);
this
.
priv
=
(
sts
&
1
)
?
result
:
0
;
login_cb
(
res
)
{
console
.
log
(
"
Login:
"
,
res
.
sts
,
res
.
value
);
this
.
priv
=
(
res
.
sts
&
1
)
?
res
.
value
:
0
;
}
open_children_cb
(
id
,
data
,
sts
,
result
)
{
this
.
ctx
.
set_nodraw
();
for
(
let
i
=
0
;
i
<
result
.
length
;
i
++
)
{
if
(
data
.
node
===
null
)
{
result
[
i
].
full_name
=
result
[
i
].
name
;
new
XttItemObject
(
this
,
result
[
i
],
null
,
Dest
.
AFTER
);
}
else
{
result
[
i
].
full_name
=
data
.
node
.
userdata
.
full_name
+
"
-
"
+
result
[
i
].
name
;
new
XttItemObject
(
this
,
result
[
i
],
data
.
node
,
Dest
.
INTOLAST
);
open_children_cb
(
child
)
{
return
function
(
res
)
{
let
result
=
res
.
value
;
this
.
ctx
.
set_nodraw
();
for
(
let
i
=
0
;
i
<
result
.
length
;
i
++
)
{
if
(
child
.
node
===
null
)
{
result
[
i
].
full_name
=
result
[
i
].
name
;
new
XttItemObject
(
this
,
result
[
i
],
null
,
Dest
.
AFTER
);
}
else
{
result
[
i
].
full_name
=
child
.
node
.
userdata
.
full_name
+
"
-
"
+
result
[
i
].
name
;
new
XttItemObject
(
this
,
result
[
i
],
child
.
node
,
Dest
.
INTOLAST
);
}
}
}
this
.
ctx
.
configure
();
this
.
ctx
.
configure
();
if
(
data
.
open_next
!==
null
)
{
if
(
data
.
open_next
.
length
===
0
)
{
this
.
ctx
.
reset_nodraw
();
return
;
}
let
child
=
this
.
ctx
.
a
.
get_first_child
(
data
.
node
);
while
(
child
!==
null
)
{
if
(
child
.
userdata
.
name
===
data
.
open_next
[
0
])
{
if
(
data
.
open_next
.
length
===
1
)
{
child
.
set_select
(
true
);
child
.
set_invert
(
true
);
if
(
!
this
.
ctx
.
is_visible
(
child
))
{
this
.
ctx
.
scroll
(
child
.
ll_y
,
0.50
);
}
window
.
focus
();
// Doesn't work
}
else
{
data
.
open_next
.
splice
(
0
,
1
);
if
(
data
.
open_next
[
0
]
===
'
.
'
)
{
data
.
open_next
.
splice
(
0
,
1
);
child
.
userdata
.
open_attributes
(
this
,
data
.
open_next
);
if
(
child
.
open_next
!==
null
)
{
if
(
child
.
open_next
.
length
===
0
)
{
this
.
ctx
.
reset_nodraw
();
return
;
}
let
child
=
this
.
ctx
.
a
.
get_first_child
(
child
.
node
);
while
(
child
!==
null
)
{
if
(
child
.
userdata
.
name
===
child
.
open_next
[
0
])
{
if
(
child
.
open_next
.
length
===
1
)
{
child
.
set_select
(
true
);
child
.
set_invert
(
true
);
if
(
!
this
.
ctx
.
is_visible
(
child
))
{
this
.
ctx
.
scroll
(
child
.
ll_y
,
0.50
);
}
window
.
focus
();
// Doesn't work
}
else
{
child
.
userdata
.
open_children
(
this
,
data
.
open_next
);
child
.
open_next
.
splice
(
0
,
1
);
if
(
child
.
open_next
[
0
]
===
'
.
'
)
{
child
.
open_next
.
splice
(
0
,
1
);
child
.
userdata
.
open_attributes
(
this
,
child
.
open_next
);
}
else
{
child
.
userdata
.
open_children
(
child
.
open_next
);
}
}
break
;
}
break
;
child
=
this
.
ctx
.
a
.
get_next_sibling
(
child
)
;
}
child
=
this
.
ctx
.
a
.
get_next_sibling
(
child
);
}
}
this
.
ctx
.
reset_nodraw
();
this
.
ctx
.
draw
();
this
.
ctx
.
reset_nodraw
();
this
.
ctx
.
draw
();
}
}
open_attributes_cb
(
id
,
data
,
sts
,
result
)
{
this
.
ctx
.
set_nodraw
();
for
(
let
i
=
0
;
i
<
result
.
length
;
i
++
)
{
result
[
i
].
objid
=
data
.
node
.
userdata
.
objid
;
result
[
i
].
full_name
=
data
.
node
.
userdata
.
full_name
+
"
.
"
+
result
[
i
].
name
;
if
((
result
[
i
].
flags
&
Adef
.
Array
)
!==
0
)
{
new
XttItemAttrArray
(
this
,
result
[
i
],
data
.
node
,
Dest
.
INTOLAST
);
}
else
if
((
result
[
i
].
flags
&
Adef
.
Class
)
!==
0
)
{
new
XttItemAttrObject
(
this
,
result
[
i
],
data
.
node
,
Dest
.
INTOLAST
);
}
else
{
new
XttItemAttr
(
this
,
result
[
i
],
data
.
node
,
Dest
.
INTOLAST
);
open_attributes_cb
(
child
)
{
return
function
(
res
)
{
let
result
=
res
.
value
;
this
.
ctx
.
set_nodraw
();
for
(
let
i
=
0
;
i
<
result
.
length
;
i
++
)
{
result
[
i
].
objid
=
child
.
node
.
userdata
.
objid
;
result
[
i
].
full_name
=
child
.
node
.
userdata
.
full_name
+
"
.
"
+
result
[
i
].
name
;
if
((
result
[
i
].
flags
&
Adef
.
Array
)
!==
0
)
{
new
XttItemAttrArray
(
this
,
result
[
i
],
child
.
node
,
Dest
.
INTOLAST
);
}
else
if
((
result
[
i
].
flags
&
Adef
.
Class
)
!==
0
)
{
new
XttItemAttrObject
(
this
,
result
[
i
],
child
.
node
,
Dest
.
INTOLAST
);
}
else
{
new
XttItemAttr
(
this
,
result
[
i
],
child
.
node
,
Dest
.
INTOLAST
);
}
}
}
this
.
ctx
.
configure
();
this
.
ctx
.
configure
();
if
(
data
.
open_next
!==
null
)
{
if
(
data
.
open_next
.
length
===
0
)
{
this
.
ctx
.
reset_nodraw
();
return
;
}
let
child
=
this
.
ctx
.
a
.
get_first_child
(
data
.
node
);
while
(
child
!==
null
)
{
if
(
child
.
userdata
.
name
===
data
.
open_next
[
0
])
{
if
(
data
.
open_next
.
length
===
1
)
{
child
.
set_select
(
true
);
child
.
set_invert
(
true
);
if
(
!
this
.
ctx
.
is_visible
(
child
))
{
this
.
ctx
.
scroll
(
child
.
ll_y
,
0.50
);
if
(
child
.
open_next
!==
null
)
{
if
(
child
.
open_next
.
length
===
0
)
{
this
.
ctx
.
reset_nodraw
();
return
;
}
let
child2
=
this
.
ctx
.
a
.
get_first_child
(
child
.
node
);
while
(
child2
!==
null
)
{
if
(
child2
.
userdata
.
name
===
child
.
open_next
[
0
])
{
if
(
child
.
open_next
.
length
===
1
)
{
child2
.
set_select
(
true
);
child2
.
set_invert
(
true
);
if
(
!
this
.
ctx
.
is_visible
(
child2
))
{
this
.
ctx
.
scroll
(
child2
.
ll_y
,
0.50
);
}
window
.
focus
();
// Doesn't work
}
else
{
child
.
open_next
.
splice
(
0
,
1
);
child2
.
userdata
.
open_attributes
(
this
,
child
.
open_next
);
}
window
.
focus
();
// Doesn't work
}
else
{
data
.
open_next
.
splice
(
0
,
1
);
child
.
userdata
.
open_attributes
(
this
,
data
.
open_next
);
break
;
}
break
;
child2
=
this
.
ctx
.
a
.
get_next_sibling
(
child2
)
;
}
child
=
this
.
ctx
.
a
.
get_next_sibling
(
child
);
}
}
this
.
ctx
.
reset_nodraw
();
this
.
ctx
.
draw
();
this
.
ctx
.
reset_nodraw
();
this
.
ctx
.
draw
();
}
}
open_plc_cb
(
id
,
data
,
sts
,
result
:
ObjectInfo
)
{
if
((
sts
&
1
)
===
0
)
{
data
.
document
.
write
(
"
Error status
"
+
sts
);
open_plc_cb
(
res
)
{
let
w
=
window
.
open
(
""
,
"
_blank
"
);
if
((
res
.
sts
&
1
)
===
0
)
{
w
.
document
.
write
(
"
Error status
"
+
res
.
sts
);
}
else
{
let
param1
;
if
(
result
.
param1
===
""
)
{
param1
=
""
;
}
else
{
param1
=
"
&obj=
"
+
result
.
param1
;
}
console
.
log
(
"
flow.html?vid=
"
+
result
.
objid
.
vid
+
"
&oix=
"
+
result
.
objid
.
oix
+
param1
);
data
.
location
.
href
=
"
flow.html?vid=
"
+
result
.
objid
.
vid
+
"
&oix=
"
+
result
.
objid
.
oix
+
param1
;
data
.
document
.
title
=
"
Trace
"
+
result
.
fullname
;
let
result
=
res
.
value
;
let
param1
=
result
.
param1
?
(
"
&obj=
"
+
result
.
param1
)
:
""
;
w
.
location
.
href
=
"
flow.html?vid=
"
+
result
.
objid
.
vid
+
"
&oix=
"
+
result
.
objid
.
oix
+
param1
;
w
.
document
.
title
=
"
Trace
"
+
result
.
fullname
;
}
}
open_objectgraph_cb
(
id
,
data
,
sts
,
result
:
ObjectInfo
)
{
if
((
sts
&
1
)
===
0
)
{
data
.
document
.
write
(
"
Error status
"
+
sts
);
open_objectgraph_cb
(
res
)
{
let
w
=
window
.
open
(
""
,
"
_blank
"
);
if
((
res
.
sts
&
1
)
===
0
)
{
w
.
document
.
write
(
"
Error status
"
+
res
.
sts
);
}
else
{
data
.
location
.
href
=
let
result
=
res
.
value
;
w
.
location
.
href
=
"
ge.html?graph=
"
+
result
.
param1
+
"
&instance=
"
+
result
.
fullname
;
data
.
document
.
title
=
result
.
fullname
;
w
.
document
.
title
=
result
.
fullname
;
}
}
open_graph_cb
(
id
,
data
,
sts
,
result
:
ObjectInfo
)
{
if
((
sts
&
1
)
===
0
)
{
data
.
document
.
write
(
"
Error status
"
+
sts
);
open_graph_cb
(
res
)
{
let
w
=
window
.
open
(
""
,
"
_blank
"
);
if
((
res
.
sts
&
1
)
===
0
)
{
w
.
document
.
write
(
"
Error status
"
+
res
.
sts
);
}
else
{
let
result
=
res
.
value
;
let
idx
=
result
.
param1
.
indexOf
(
'
.
'
);
if
(
idx
!==
-
1
)
{
result
.
param1
=
result
.
param1
.
substring
(
0
,
idx
);
...
...
@@ -305,25 +300,28 @@ class Xtt {
instancestr
=
"
&instance=
"
+
result
.
fullname
;
}
data
.
location
.
href
=
"
ge.html?graph=
"
+
result
.
param1
+
instancestr
;
data
.
document
.
title
=
result
.
param1
;
w
.
location
.
href
=
"
ge.html?graph=
"
+
result
.
param1
+
instancestr
;
w
.
document
.
title
=
result
.
param1
;
}
}
open_crr_cb
(
id
,
node
,
sts
,
crrdata
)
{
if
((
sts
&
1
)
===
0
)
{
return
;
open_crr_cb
(
node
)
{
return
function
(
res
)
{
if
((
res
.
sts
&
1
)
===
0
)
{
return
;
}
node
.
userdata
.
open_crossreferences
(
res
.
value
);
}
node
.
userdata
.
open_crossreferences
(
this
,
crrdata
);
}
open_helpclass_cb
(
id
,
data
,
sts
,
result
:
ObjectInfo
)
{
if
((
sts
&
1
)
===
0
)
{
data
.
document
.
write
(
"
Error status
"
+
sts
);
open_helpclass_cb
(
res
)
{
let
w
=
window
.
open
(
""
,
"
_blank
"
);
if
((
res
.
sts
&
1
)
===
0
)
{
w
.
document
.
write
(
"
Error status
"
+
res
.
sts
);
}
else
{
console
.
log
(
"
open_helpclass
"
,
res
ult
.
param1
);
data
.
location
.
href
=
location
.
protocol
+
"
//
"
+
location
.
host
+
res
ult
.
param1
;
console
.
log
(
"
open_helpclass
"
,
res
.
value
.
param1
);
w
.
location
.
href
=
location
.
protocol
+
"
//
"
+
location
.
host
+
res
.
value
.
param1
;
}
}
...
...
@@ -336,12 +334,12 @@ class Xtt {
switch
(
event
)
{
case
Event
.
ObjectDeleted
:
if
(
object
.
userdata
instanceof
XttItemAttr
)
{
object
.
userdata
.
scan_close
(
this
);
object
.
userdata
.
scan_close
();
}
break
;
case
Event
.
MB1Click
:
if
(
object
.
in_icon
(
x
,
y
))
{
item
.
open_children
(
this
,
null
);
item
.
open_children
(
null
);
}
else
{
if
(
object
.
select
)
{
object
.
set_select
(
false
);
...
...
@@ -400,7 +398,7 @@ class Xtt {
let
o
=
this
.
ctx
.
get_select
();
if
(
o
!==
null
)
{
item
=
o
.
userdata
;
item
.
open_children
(
this
,
null
);
item
.
open_children
(
null
);
}
break
;
case
Event
.
Key_Left
:
...
...
@@ -420,15 +418,13 @@ class Xtt {
case
Event
.
Key_CtrlR
:
let
o
=
this
.
ctx
.
get_select
();
if
(
o
!==
null
)
{
this
.
ctx
.
gdh
.
crrSignal
(
o
.
userdata
.
objid
,
this
.
open_crr_cb
,
o
);
this
.
ctx
.
gdh
.
crrSignal
(
o
.
userdata
.
objid
).
then
(
this
.
open_crr_cb
(
o
)
);
}
break
;
case
Event
.
Key_CtrlL
:
let
o
=
this
.
ctx
.
get_select
();
if
(
o
.
userdata
instanceof
XttItemObject
)
{
let
newwindow
=
window
.
open
(
""
,
"
_blank
"
);
this
.
ctx
.
gdh
.
getObject
(
o
.
userdata
.
objid
,
GdhOp
.
GET_OP_METHOD_PLC
,
this
.
open_plc_cb
,
newwindow
);
this
.
ctx
.
gdh
.
getObject
(
o
.
userdata
.
objid
,
GdhOp
.
GET_OP_METHOD_PLC
).
then
(
this
.
open_plc_cb
);
}
else
if
(
o
.
userdata
instanceof
XttItemCrr
)
{
let
idx
=
o
.
userdata
.
name
.
lastIndexOf
(
'
-
'
);
let
ostring
=
""
;
...
...
@@ -443,10 +439,7 @@ class Xtt {
let
o
=
this
.
ctx
.
get_select
();
if
(
o
.
userdata
instanceof
XttItemObject
)
{
console
.
log
(
"
CtrlG
"
,
o
.
userdata
.
objid
.
vid
,
o
.
userdata
.
objid
.
oix
);
let
newwindow
=
window
.
open
(
""
,
"
_blank
"
);
this
.
ctx
.
gdh
.
getObject
(
o
.
userdata
.
objid
,
GdhOp
.
GET_OP_METHOD_OBJECTGRAPH
,
this
.
open_objectgraph_cb
,
newwindow
);
this
.
ctx
.
gdh
.
getObject
(
o
.
userdata
.
objid
,
GdhOp
.
GET_OP_METHOD_OBJECTGRAPH
).
then
(
this
.
open_objectgraph_cb
);
}
break
;
default
:
...
...
@@ -526,7 +519,7 @@ class Xtt {
window
.
focus
();
// Doesn't work
}
else
{
path
.
splice
(
0
,
1
);
(
<
XttItemObject
>
this
.
ctx
.
a
.
get
(
j
).
userdata
).
open_children
(
this
,
path
);
(
<
XttItemObject
>
this
.
ctx
.
a
.
get
(
j
).
userdata
).
open_children
(
path
);
}
break
;
}
...
...
@@ -537,13 +530,12 @@ class Xtt {
this
.
ctx
.
gdh
.
getRefObjectInfoAll
(
this
.
trace_scan
);
}
trace_scan
(
id
,
sts
)
{
trace_scan
()
{
this
.
scan_update
=
false
;
let
self
=
this
;
this
.
ctx
.
a
.
forEach
(
function
(
e
)
{
let
item
=
e
.
userdata
;
if
(
item
instanceof
XttItemAttr
)
{
item
.
scan
(
self
);
item
.
scan
();
}
});
if
(
this
.
scan_update
)
{
...
...
@@ -567,6 +559,7 @@ class Xtt {
}
class
XttItemObject
{
xtt
:
Xtt
;
objid
:
PwrtObjid
;
cid
:
number
;
name
:
string
;
...
...
@@ -575,6 +568,7 @@ class XttItemObject {
node
:
PlowNode
;
constructor
(
xtt
,
object_info
,
destination
,
destCode
)
{
this
.
xtt
=
xtt
;
this
.
objid
=
object_info
.
objid
;
this
.
cid
=
object_info
.
cid
;
this
.
name
=
object_info
.
name
;
...
...
@@ -590,67 +584,65 @@ class XttItemObject {
this
.
node
.
set_annotation_pixmap
(
0
,
object_info
.
has_children
?
Bitmaps
.
map
:
Bitmaps
.
leaf
);
}
open_children
(
xtt
,
open_next
)
{
open_children
(
open_next
)
{
if
(
this
.
node
.
node_open
!==
0
)
{
this
.
close
(
xtt
);
this
.
close
();
}
else
if
(
!
this
.
has_children
)
{
this
.
open_attributes
(
xtt
,
null
);
this
.
open_attributes
(
null
);
}
else
{
xtt
.
ctx
.
gdh
.
getAllXttChildren
(
this
.
objid
,
xtt
.
open_children_cb
,
new
XttOpenChildrenData
(
this
.
node
,
open_next
));
this
.
xtt
.
ctx
.
gdh
.
getAllXttChildren
(
this
.
objid
).
then
(
this
.
xtt
.
open_children_cb
(
new
XttOpenChildrenData
(
this
.
node
,
open_next
)));
this
.
node
.
node_open
|=
Open
.
CHILDREN
;
this
.
node
.
set_annotation_pixmap
(
0
,
Bitmaps
.
openmap
);
}
}
open_attributes
(
xtt
,
open_next
)
{
open_attributes
(
open_next
)
{
if
(
this
.
node
.
node_open
===
0
)
{
xtt
.
ctx
.
gdh
.
getAllClassAttributes
(
this
.
cid
,
this
.
objid
,
xtt
.
open_attributes_cb
,
new
XttOpenChildrenData
(
this
.
node
,
open_next
));
this
.
xtt
.
ctx
.
gdh
.
getAllClassAttributes
(
this
.
cid
,
this
.
objid
).
then
(
this
.
xtt
.
open_attributes_cb
(
new
XttOpenChildrenData
(
this
.
node
,
open_next
)));
this
.
node
.
node_open
|=
Open
.
ATTRIBUTES
;
xtt
.
ctx
.
configure
();
xtt
.
ctx
.
draw
();
this
.
xtt
.
ctx
.
configure
();
this
.
xtt
.
ctx
.
draw
();
}
else
{
this
.
close
(
xtt
);
this
.
close
();
}
}
open_crossreferences
(
xtt
,
crrdata
)
{
open_crossreferences
(
crrdata
)
{
if
(
this
.
node
.
node_open
===
0
)
{
for
(
let
i
=
0
;
i
<
crrdata
.
length
;
i
++
)
{
new
XttItemCrr
(
xtt
,
crrdata
[
i
],
this
.
node
,
Dest
.
INTOLAST
);
new
XttItemCrr
(
this
.
xtt
,
crrdata
[
i
],
this
.
node
,
Dest
.
INTOLAST
);
}
this
.
node
.
node_open
|=
Open
.
CROSSREFERENCES
;
xtt
.
ctx
.
configure
();
xtt
.
ctx
.
draw
();
this
.
xtt
.
ctx
.
configure
();
this
.
xtt
.
ctx
.
draw
();
}
else
{
this
.
close
(
xtt
);
this
.
close
();
}
}
close
(
xtt
)
{
close
()
{
if
(
this
.
node
.
node_open
&
Open
.
CHILDREN
)
{
xtt
.
ctx
.
close_node
(
this
.
node
);
this
.
xtt
.
ctx
.
close_node
(
this
.
node
);
this
.
node
.
node_open
&=
~
Open
.
CHILDREN
;
this
.
node
.
set_annotation_pixmap
(
0
,
Bitmaps
.
map
);
xtt
.
ctx
.
configure
();
xtt
.
ctx
.
draw
();
this
.
xtt
.
ctx
.
configure
();
this
.
xtt
.
ctx
.
draw
();
}
else
if
(
this
.
node
.
node_open
&
Open
.
ATTRIBUTES
)
{
xtt
.
ctx
.
close_node
(
this
.
node
);
this
.
xtt
.
ctx
.
close_node
(
this
.
node
);
this
.
node
.
node_open
&=
~
Open
.
ATTRIBUTES
;
xtt
.
ctx
.
configure
();
xtt
.
ctx
.
draw
();
this
.
xtt
.
ctx
.
configure
();
this
.
xtt
.
ctx
.
draw
();
}
else
if
(
this
.
node
.
node_open
&
Open
.
CROSSREFERENCES
)
{
xtt
.
ctx
.
close_node
(
this
.
node
);
this
.
xtt
.
ctx
.
close_node
(
this
.
node
);
this
.
node
.
node_open
&=
~
Open
.
CROSSREFERENCES
;
xtt
.
ctx
.
configure
();
xtt
.
ctx
.
draw
();
this
.
xtt
.
ctx
.
configure
();
this
.
xtt
.
ctx
.
draw
();
}
else
{
let
parent
=
xtt
.
ctx
.
get_parent_object
(
this
.
node
);
let
parent
=
this
.
xtt
.
ctx
.
get_parent_object
(
this
.
node
);
if
(
parent
!==
null
)
{
parent
.
userdata
.
close
(
xtt
);
parent
.
userdata
.
close
();
parent
.
set_select
(
true
);
parent
.
set_invert
(
true
);
}
...
...
@@ -659,6 +651,7 @@ class XttItemObject {
}
class
XttItemAttr
{
xtt
:
Xtt
;
name
:
string
;
objid
:
PwrtObjid
;
full_name
:
string
;
...
...
@@ -671,6 +664,7 @@ class XttItemAttr {
node
:
PlowNode
;
constructor
(
xtt
,
info
,
destination
,
destCode
)
{
this
.
xtt
=
xtt
;
this
.
name
=
info
.
name
;
this
.
objid
=
info
.
objid
;
this
.
full_name
=
info
.
full_name
;
...
...
@@ -687,15 +681,15 @@ class XttItemAttr {
this
.
refid
=
xtt
.
ctx
.
gdh
.
refObjectInfo
(
this
.
full_name
,
info
.
type
,
1
);
}
open_children
(
xtt
,
open_next
)
{
xtt
.
openValueInputDialog
(
this
,
"
Enter value
"
);
open_children
(
open_next
)
{
this
.
xtt
.
openValueInputDialog
(
this
,
"
Enter value
"
);
}
set_value
(
xtt
,
value
)
{
set_value
(
value
)
{
switch
(
this
.
type
)
{
case
Type
.
Float32
:
let
inputValue
=
parseFloat
(
value
.
trim
());
xtt
.
ctx
.
gdh
.
setObjectInfoFloat
(
this
.
full_name
,
inputValue
);
this
.
xtt
.
ctx
.
gdh
.
setObjectInfoFloat
(
this
.
full_name
,
inputValue
);
break
;
case
Type
.
Int8
:
case
Type
.
Int16
:
...
...
@@ -708,37 +702,37 @@ class XttItemAttr {
case
Type
.
Enum
:
case
Type
.
Boolean
:
let
inputValue
=
parseInt
(
value
.
trim
(),
10
);
xtt
.
ctx
.
gdh
.
setObjectInfoInt
(
this
.
full_name
,
inputValue
);
this
.
xtt
.
ctx
.
gdh
.
setObjectInfoInt
(
this
.
full_name
,
inputValue
);
break
;
case
Type
.
String
:
case
Type
.
Time
:
case
Type
.
DeltaTime
:
case
Type
.
AttrRef
:
case
Type
.
Objid
:
xtt
.
ctx
.
gdh
.
setObjectInfoString
(
this
.
full_name
,
value
);
this
.
xtt
.
ctx
.
gdh
.
setObjectInfoString
(
this
.
full_name
,
value
);
break
;
default
:
break
;
}
}
open_attributes
(
xtt
,
open_next
)
{
open_attributes
(
open_next
)
{
}
close
(
xtt
)
{
let
parent
=
xtt
.
ctx
.
get_parent_object
(
this
.
node
);
close
()
{
let
parent
=
this
.
xtt
.
ctx
.
get_parent_object
(
this
.
node
);
if
(
parent
!==
null
)
{
parent
.
userdata
.
close
(
xtt
);
parent
.
userdata
.
close
();
parent
.
set_select
(
true
);
parent
.
set_invert
(
true
);
}
}
scan
(
xtt
)
{
scan
()
{
if
(
!
this
.
refid
)
{
return
;
}
let
value
=
xtt
.
ctx
.
gdh
.
getObjectRefInfo
(
this
.
refid
);
let
value
=
this
.
xtt
.
ctx
.
gdh
.
getObjectRefInfo
(
this
.
refid
);
if
(
this
.
firstScan
||
value
!==
this
.
old_value
)
{
let
value_str
;
...
...
@@ -768,17 +762,18 @@ class XttItemAttr {
this
.
old_value
=
value
;
this
.
node
.
set_annotation
(
1
,
value_str
);
xtt
.
scan_update
=
true
;
this
.
xtt
.
scan_update
=
true
;
}
this
.
firstScan
=
false
;
}
scan_close
(
xtt
)
{
xtt
.
ctx
.
gdh
.
unrefObjectInfo
(
this
.
refid
);
scan_close
()
{
this
.
xtt
.
ctx
.
gdh
.
unrefObjectInfo
(
this
.
refid
);
}
}
class
XttItemAttrArray
{
xtt
:
Xtt
;
name
:
string
;
objid
:
PwrtObjid
;
full_name
:
string
;
...
...
@@ -789,6 +784,7 @@ class XttItemAttrArray {
node
:
PlowNode
;
constructor
(
xtt
,
info
,
destination
,
destCode
)
{
this
.
xtt
=
xtt
;
this
.
name
=
info
.
name
;
this
.
objid
=
info
.
objid
;
this
.
full_name
=
info
.
full_name
;
...
...
@@ -803,11 +799,11 @@ class XttItemAttrArray {
xtt
.
ctx
.
insertNode
(
this
.
node
,
destination
,
destCode
);
}
open_children
(
xtt
,
open_next
)
{
this
.
open_attributes
(
xtt
,
open_next
);
open_children
(
open_next
)
{
this
.
open_attributes
(
open_next
);
}
open_attributes
(
xtt
,
open_next
)
{
open_attributes
(
open_next
)
{
let
info
=
new
AttributeInfo
();
info
.
objid
=
this
.
objid
;
...
...
@@ -819,34 +815,34 @@ class XttItemAttrArray {
info
.
full_name
=
""
;
info
.
classname
=
""
;
xtt
.
ctx
.
set_nodraw
();
this
.
xtt
.
ctx
.
set_nodraw
();
for
(
let
i
=
0
;
i
<
this
.
elements
;
i
++
)
{
info
.
name
=
this
.
name
+
"
[
"
+
i
+
"
]
"
;
info
.
full_name
=
this
.
full_name
+
"
[
"
+
i
+
"
]
"
;
if
((
info
.
flags
&
Adef
.
Array
)
!==
0
)
{
new
XttItemAttrArray
(
xtt
,
info
,
this
.
node
,
Dest
.
INTOLAST
);
new
XttItemAttrArray
(
this
.
xtt
,
info
,
this
.
node
,
Dest
.
INTOLAST
);
}
else
if
((
info
.
flags
&
Adef
.
Class
)
!==
0
)
{
new
XttItemAttrObject
(
xtt
,
info
,
this
.
node
,
Dest
.
INTOLAST
);
new
XttItemAttrObject
(
this
.
xtt
,
info
,
this
.
node
,
Dest
.
INTOLAST
);
}
else
{
new
XttItemAttr
(
xtt
,
info
,
this
.
node
,
Dest
.
INTOLAST
);
new
XttItemAttr
(
this
.
xtt
,
info
,
this
.
node
,
Dest
.
INTOLAST
);
}
}
this
.
node
.
node_open
|=
Open
.
ATTRIBUTES
;
xtt
.
ctx
.
configure
();
xtt
.
ctx
.
reset_nodraw
();
xtt
.
ctx
.
draw
();
this
.
xtt
.
ctx
.
configure
();
this
.
xtt
.
ctx
.
reset_nodraw
();
this
.
xtt
.
ctx
.
draw
();
}
close
(
xtt
)
{
close
()
{
if
(
this
.
node
.
node_open
&
Open
.
ATTRIBUTES
)
{
xtt
.
ctx
.
close_node
(
this
.
node
);
this
.
xtt
.
ctx
.
close_node
(
this
.
node
);
this
.
node
.
node_open
&=
~
Open
.
ATTRIBUTES
;
xtt
.
ctx
.
configure
();
xtt
.
ctx
.
draw
();
this
.
xtt
.
ctx
.
configure
();
this
.
xtt
.
ctx
.
draw
();
}
else
{
let
parent
=
xtt
.
ctx
.
get_parent_object
(
this
.
node
);
let
parent
=
this
.
xtt
.
ctx
.
get_parent_object
(
this
.
node
);
if
(
parent
!==
null
)
{
parent
.
userdata
.
close
(
xtt
);
parent
.
userdata
.
close
();
parent
.
set_select
(
true
);
parent
.
set_invert
(
true
);
}
...
...
@@ -855,6 +851,7 @@ class XttItemAttrArray {
}
class
XttItemAttrObject
{
xtt
:
Xtt
;
name
:
string
;
classname
:
string
;
objid
:
PwrtObjid
;
...
...
@@ -865,6 +862,7 @@ class XttItemAttrObject {
node
:
PlowNode
;
constructor
(
xtt
,
info
,
destination
,
destCode
)
{
this
.
xtt
=
Xtt
;
this
.
name
=
info
.
name
;
this
.
classname
=
info
.
classname
;
this
.
objid
=
info
.
objid
;
...
...
@@ -880,36 +878,35 @@ class XttItemAttrObject {
xtt
.
ctx
.
insertNode
(
this
.
node
,
destination
,
destCode
);
}
open_children
(
xtt
,
open_next
)
{
this
.
open_attributes
(
xtt
,
null
);
open_children
(
open_next
)
{
this
.
open_attributes
(
null
);
}
open_attributes
(
xtt
,
open_next
)
{
open_attributes
(
open_next
)
{
if
(
this
.
node
.
node_open
===
0
)
{
xtt
.
ctx
.
gdh
.
getAllClassAttributes
(
this
.
cid
,
this
.
objid
,
xtt
.
open_attributes_cb
,
new
XttOpenChildrenData
(
this
.
node
,
open_next
));
this
.
xtt
.
ctx
.
gdh
.
getAllClassAttributes
(
this
.
cid
,
this
.
objid
).
then
(
this
.
xtt
.
open_attributes_cb
(
new
XttOpenChildrenData
(
this
.
node
,
open_next
)));
this
.
node
.
node_open
|=
Open
.
ATTRIBUTES
;
}
else
{
this
.
close
(
xtt
);
this
.
close
();
}
}
close
(
xtt
)
{
close
()
{
if
(
this
.
node
.
node_open
&
Open
.
ATTRIBUTES
)
{
xtt
.
ctx
.
close_node
(
this
.
node
);
this
.
xtt
.
ctx
.
close_node
(
this
.
node
);
this
.
node
.
node_open
&=
~
Open
.
ATTRIBUTES
;
xtt
.
ctx
.
configure
();
xtt
.
ctx
.
draw
();
this
.
xtt
.
ctx
.
configure
();
this
.
xtt
.
ctx
.
draw
();
}
else
if
(
this
.
node
.
node_open
&
Open
.
CROSSREFERENCES
)
{
xtt
.
ctx
.
close_node
(
this
.
node
);
this
.
xtt
.
ctx
.
close_node
(
this
.
node
);
this
.
node
.
node_open
&=
~
Open
.
CROSSREFERENCES
;
xtt
.
ctx
.
configure
();
xtt
.
ctx
.
draw
();
this
.
xtt
.
ctx
.
configure
();
this
.
xtt
.
ctx
.
draw
();
}
else
{
let
parent
=
xtt
.
ctx
.
get_parent_object
(
this
.
node
);
let
parent
=
this
.
xtt
.
ctx
.
get_parent_object
(
this
.
node
);
if
(
parent
!==
null
)
{
parent
.
userdata
.
close
(
xtt
);
parent
.
userdata
.
close
();
parent
.
set_select
(
true
);
parent
.
set_invert
(
true
);
}
...
...
@@ -918,6 +915,7 @@ class XttItemAttrObject {
}
class
XttItemCrr
{
xtt
:
Xtt
;
name
:
string
;
classname
:
string
;
objid
:
PwrtObjid
;
...
...
@@ -925,6 +923,7 @@ class XttItemCrr {
node
:
PlowNode
;
constructor
(
xtt
,
info
,
destination
,
destCode
)
{
this
.
xtt
=
Xtt
;
this
.
name
=
info
.
name
;
this
.
classname
=
info
.
classname
;
this
.
objid
=
info
.
objid
;
...
...
@@ -939,10 +938,10 @@ class XttItemCrr {
xtt
.
ctx
.
insertNode
(
this
.
node
,
destination
,
destCode
);
}
close
(
xtt
)
{
let
parent
=
xtt
.
ctx
.
get_parent_object
(
this
.
node
);
close
()
{
let
parent
=
this
.
xtt
.
ctx
.
get_parent_object
(
this
.
node
);
if
(
parent
)
{
parent
.
userdata
.
close
(
xtt
);
parent
.
userdata
.
close
();
parent
.
set_select
(
true
);
parent
.
set_invert
(
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