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
867fdfb6
Commit
867fdfb6
authored
May 09, 2019
by
Christoffer Ackelman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Web: Minor cleanup.
parent
121334c9
Changes
18
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
837 additions
and
937 deletions
+837
-937
java/jsw/co/src/cli.ts
java/jsw/co/src/cli.ts
+12
-14
java/jsw/co/src/gdh.ts
java/jsw/co/src/gdh.ts
+27
-48
java/jsw/co/src/plow.ts
java/jsw/co/src/plow.ts
+66
-99
java/jsw/co/src/pwr.ts
java/jsw/co/src/pwr.ts
+8
-2
java/jsw/ev/src/ev.html
java/jsw/ev/src/ev.html
+53
-29
java/jsw/ev/src/ev.ts
java/jsw/ev/src/ev.ts
+116
-119
java/jsw/flow/src/flow.html
java/jsw/flow/src/flow.html
+26
-18
java/jsw/flow/src/flow.ts
java/jsw/flow/src/flow.ts
+189
-292
java/jsw/ge/src/ge.html
java/jsw/ge/src/ge.html
+62
-62
java/jsw/ge/src/ge_appl.ts
java/jsw/ge/src/ge_appl.ts
+1
-0
java/jsw/ge/src/ge_dyn.ts
java/jsw/ge/src/ge_dyn.ts
+19
-18
java/jsw/ge/src/ge_graph.ts
java/jsw/ge/src/ge_graph.ts
+9
-3
java/jsw/opwind/src/crypt.ts
java/jsw/opwind/src/crypt.ts
+5
-5
java/jsw/opwind/src/opwind.html
java/jsw/opwind/src/opwind.html
+21
-20
java/jsw/opwind/src/opwind.ts
java/jsw/opwind/src/opwind.ts
+57
-61
java/jsw/opwind/src/opwind_menu.html
java/jsw/opwind/src/opwind_menu.html
+26
-27
java/jsw/xtt/src/xtt.html
java/jsw/xtt/src/xtt.html
+41
-25
java/jsw/xtt/src/xtt.ts
java/jsw/xtt/src/xtt.ts
+99
-95
No files found.
java/jsw/co/src/cli.ts
View file @
867fdfb6
...
...
@@ -3,6 +3,7 @@
class
CliTable
{
command
:
string
;
qualifier
:
Array
<
string
>
;
constructor
(
command
,
qualifier
)
{
this
.
command
=
command
;
this
.
qualifier
=
qualifier
;
...
...
@@ -32,19 +33,16 @@ enum State {
}
class
Cli
{
verb
:
Array
;
qualifier
:
Array
;
qualValue
:
Array
;
verb
:
Array
=
new
Array
(
CliC
.
VERB_VECT_SIZE
)
;
qualifier
:
Array
=
new
Array
(
30
)
;
qualValue
:
Array
=
new
Array
(
30
)
;
status
:
number
;
cliTableIndex
:
number
;
cliQualifierIndex
:
Array
;
cliQualifierIndex
:
Array
=
new
Array
(
30
)
;
configuredVerbs
:
number
;
cliTable
:
Array
<
CliTable
>
;
constructor
(
cliTable
)
{
this
.
verb
=
new
Array
(
CliC
.
VERB_VECT_SIZE
);
this
.
qualifier
=
new
Array
(
30
);
this
.
qualValue
=
new
Array
(
30
);
this
.
cliQualifierIndex
=
new
Array
(
30
);
this
.
cliTable
=
cliTable
;
}
...
...
@@ -161,7 +159,7 @@ class Cli {
state
=
State
.
SPACE
;
}
else
if
(
c
===
'
/
'
)
{
this
.
qualValue
[
this
.
qualifier
.
length
-
1
]
=
cmd
.
substring
(
start_pos
,
i
);
cmd
.
substring
(
start_pos
,
i
);
state
=
State
.
QUAL
;
start_pos
=
i
;
}
...
...
@@ -169,7 +167,7 @@ class Cli {
case
State
.
QUALVALUE_EXACT
:
if
(
c
===
'
"
'
)
{
this
.
qualValue
[
this
.
qualifier
.
length
-
1
]
=
cmd
.
substring
(
start_pos
,
i
);
cmd
.
substring
(
start_pos
,
i
);
state
=
State
.
SPACE
;
}
break
;
...
...
@@ -248,7 +246,7 @@ class Cli {
continue
;
}
if
(
this
.
verb
[
0
]
===
(
this
.
cliTable
[
i
].
command
.
substring
(
0
,
this
.
verb
[
0
].
length
)))
{
(
this
.
cliTable
[
i
].
command
.
substring
(
0
,
this
.
verb
[
0
].
length
)))
{
this
.
verb
[
0
]
=
this
.
cliTable
[
i
].
command
;
found
=
true
;
break
;
...
...
@@ -291,12 +289,12 @@ class Cli {
break
;
}
if
(
this
.
qualifier
[
j
].
length
>
this
.
cliTable
[
this
.
cliTableIndex
].
qualifier
[
i
].
length
)
{
this
.
cliTable
[
this
.
cliTableIndex
].
qualifier
[
i
].
length
)
{
continue
;
}
if
(
this
.
qualifier
[
j
]
===
(
this
.
cliTable
[
this
.
cliTableIndex
].
qualifier
[
i
].
substring
(
0
,
this
.
qualifier
[
j
].
length
)))
{
(
this
.
cliTable
[
this
.
cliTableIndex
].
qualifier
[
i
].
substring
(
0
,
this
.
qualifier
[
j
].
length
)))
{
this
.
cliQualifierIndex
[
j
]
=
i
;
found
=
true
;
this
.
qualifier
[
j
]
=
this
.
cliTable
[
this
.
cliTableIndex
].
qualifier
[
i
];
...
...
java/jsw/co/src/gdh.ts
View file @
867fdfb6
...
...
@@ -130,15 +130,13 @@ class GlowBarChartInfo {
class
GlowTableInfo
{
columns
;
rows
;
column_size
:
Array
;
constructor
()
{
this
.
column_size
=
new
Array
(
30
);
}
column_size
:
Array
=
new
Array
(
30
);
}
class
PendingData
{
func_cb
:
(
id
:
number
,
val
:
number
,
sts
:
number
=
0
,
res
:
number
=
0
)
=>
void
;
data
:
object
;
constructor
(
func_cb
,
data
)
{
this
.
func_cb
=
func_cb
;
this
.
data
=
data
;
...
...
@@ -227,6 +225,7 @@ enum Msg {
class
Uint8ArrayHelper
{
buf
:
Uint8Array
;
idx
:
number
;
constructor
(
size
,
tag
)
{
this
.
buf
=
new
Uint8Array
(
size
);
this
.
buf
[
0
]
=
tag
;
...
...
@@ -255,10 +254,10 @@ class Uint8ArrayHelper {
class
DataViewHelper
{
dv
:
DataView
;
offset
:
number
;
offset
=
0
;
constructor
(
data
:
ArrayBuffer
)
{
this
.
dv
=
new
DataView
(
data
);
this
.
offset
=
0
;
}
getUint8
()
{
...
...
@@ -266,11 +265,6 @@ class DataViewHelper {
return
this
.
dv
.
getUint8
(
this
.
offset
-
1
);
}
getInt16
()
{
this
.
offset
+=
2
;
return
this
.
dv
.
getInt16
(
this
.
offset
-
2
);
}
getUint16
()
{
this
.
offset
+=
2
;
return
this
.
dv
.
getUint8
(
this
.
offset
-
2
);
...
...
@@ -302,32 +296,17 @@ class DataViewHelper {
}
class
Gdh
{
debug
:
boolean
;
pending
:
Array
;
sub
:
Array
<
Sub
>
;
PORT
:
number
;
ws
:
WebSocket
;
open_cb
:
()
=>
void
;
close_cb
:
()
=>
void
;
return_cb
:
()
=>
void
;
next_id
:
number
;
subscriptionCount
:
number
;
listSent
:
boolean
;
constructor
()
{
this
.
debug
=
false
;
this
.
pending
=
[];
this
.
sub
=
[];
this
.
PORT
=
4448
;
this
.
ws
=
null
;
this
.
open_cb
=
null
;
this
.
close_cb
=
null
;
this
.
return_cb
=
null
;
this
.
next_id
=
1234
;
this
.
subscriptionCount
=
1
;
this
.
listSent
=
false
;
}
init
()
{
debug
=
false
;
pending
:
Array
=
[];
sub
:
Array
<
Sub
>
=
[];
static
PORT
=
4448
;
ws
:
WebSocket
=
null
;
return_cb
:
()
=>
void
=
null
;
next_id
=
1234
;
subscriptionCount
=
1
;
listSent
=
false
;
constructor
(
open_cb
,
close_cb
=
null
)
{
if
(
window
.
location
.
hostname
===
""
)
{
this
.
ws
=
new
WebSocket
(
"
ws:127.0.0.1:4448
"
);
}
else
{
...
...
@@ -336,8 +315,8 @@ class Gdh {
this
.
ws
.
binaryType
=
"
arraybuffer
"
;
this
.
ws
.
onopen
=
function
(
e
)
{
if
(
this
.
gdh
.
open_cb
!==
null
)
{
this
.
gdh
.
open_cb
();
if
(
open_cb
!==
null
)
{
open_cb
();
}
};
...
...
@@ -345,8 +324,8 @@ class Gdh {
if
(
this
.
debug
)
{
console
.
log
(
"
Socket closed
"
);
}
if
(
this
.
gdh
.
close_cb
!==
null
)
{
this
.
gdh
.
close_cb
();
if
(
close_cb
!==
null
)
{
close_cb
();
}
};
...
...
@@ -465,7 +444,7 @@ class Gdh {
let
elements
=
esize
;
if
(
elements
!==
sub
.
elements
)
{
console
.
log
(
"
Subscription size error
"
,
elements
,
sub
.
elements
,
eid
);
sub
.
elements
,
eid
);
}
value
=
new
Array
(
elements
);
for
(
let
k
=
0
;
k
<
elements
;
k
++
)
{
...
...
@@ -480,7 +459,7 @@ class Gdh {
let
elements
=
esize
/
4
;
if
(
elements
!==
sub
.
elements
)
{
console
.
log
(
"
Subscription size error
"
,
elements
,
sub
.
elements
,
eid
);
sub
.
elements
,
eid
);
}
value
=
new
Array
(
elements
);
for
(
let
k
=
0
;
k
<
elements
;
k
++
)
{
...
...
@@ -505,7 +484,7 @@ class Gdh {
let
elements
=
esize
/
4
;
if
(
elements
!==
sub
.
elements
)
{
console
.
log
(
"
Subscription size error
"
,
elements
,
sub
.
elements
,
eid
);
sub
.
elements
,
eid
);
}
value
=
new
Array
(
elements
);
for
(
let
k
=
0
;
k
<
elements
;
k
++
)
{
...
...
@@ -524,7 +503,7 @@ class Gdh {
let
elements
=
sub
.
elements
;
if
(
elements
!==
sub
.
elements
)
{
console
.
log
(
"
Subscription size error
"
,
elements
,
sub
.
elements
,
eid
);
sub
.
elements
,
eid
);
}
value
=
new
Array
(
elements
);
for
(
let
l
=
0
;
l
<
elements
;
l
++
)
{
...
...
@@ -827,7 +806,7 @@ class Gdh {
helper
.
packString
(
sub
.
name
);
this
.
pending
[
this
.
next_id
]
=
new
PendingData
(
this
.
refObjectInfoReply
,
null
);
new
PendingData
(
this
.
refObjectInfoReply
,
null
);
if
(
this
.
debug
)
{
console
.
log
(
"
Sending RefObjectInfo
"
,
this
.
next_id
,
size
);
}
...
...
@@ -858,7 +837,7 @@ class Gdh {
helper
.
pack32Bit
(
refid
);
this
.
pending
[
this
.
next_id
]
=
new
PendingData
(
this
.
unrefObjectInfoReply
,
null
);
new
PendingData
(
this
.
unrefObjectInfoReply
,
null
);
if
(
this
.
debug
)
{
console
.
log
(
"
Sending UnrefObjectInfo
"
,
this
.
next_id
,
size
,
refid
);
}
...
...
@@ -1037,7 +1016,7 @@ class Gdh {
this
.
pending
[
this
.
next_id
]
=
new
PendingData
(
return_cb
,
data
);
if
(
this
.
debug
)
{
console
.
log
(
"
Sending getAllClassAttributes
"
,
this
.
next_id
,
cid
,
oid
.
vid
,
oid
.
oix
);
oid
.
oix
);
}
this
.
ws
.
send
(
helper
.
buf
);
this
.
next_id
++
;
...
...
java/jsw/co/src/plow.ts
View file @
867fdfb6
...
...
@@ -122,15 +122,13 @@ enum Event {
class
PlowNodeClass
{
a
:
PlowArray
;
ctx
:
PlowCtx
;
nc_name
:
string
;
group
:
number
;
node_open
:
number
;
nc_name
=
""
;
group
=
0
;
node_open
=
0
;
constructor
(
ctx
)
{
this
.
a
=
new
PlowArray
(
ctx
);
this
.
ctx
=
ctx
;
this
.
nc_name
=
""
;
this
.
group
=
0
;
this
.
node_open
=
0
;
}
draw
(
g
,
p
,
node
,
highlight
)
{
...
...
@@ -143,10 +141,10 @@ class PlowNodeClass {
}
class
PlowArray
{
a
:
Array
<
PlowNode
>
;
a
:
Array
=
[]
;
ctx
:
PlowCtx
;
constructor
(
ctx
)
{
this
.
a
=
[];
this
.
ctx
=
ctx
;
}
...
...
@@ -391,56 +389,35 @@ class PlowArray {
class
PlowNode
{
ctx
:
PlowCtx
;
userdata
:
object
;
x_right
:
number
;
x_left
:
number
;
y_high
:
number
;
y_low
:
number
;
userdata
:
object
=
null
;
x_right
=
0.0
;
x_left
=
0.0
;
y_high
=
0.0
;
y_low
=
0.0
;
nc
:
PlowNodeClass
;
pos
:
Point
;
n_name
:
string
;
annotv
:
Array
;
annotsize
:
Array
;
pixmapv
:
Array
;
trace_object
:
string
;
trace_attribute
:
string
;
trace_attr_type
:
number
;
highlight
:
boolean
;
select
:
boolean
;
invert
:
boolean
;
pos
=
new
Point
()
;
n_name
=
""
;
annotv
=
[]
;
annotsize
=
[]
;
pixmapv
=
[]
;
trace_object
=
""
;
trace_attribute
=
""
;
trace_attr_type
=
0
;
highlight
=
false
;
select
=
false
;
invert
=
false
;
level
:
number
;
node_open
:
number
;
fill_color
:
number
;
p
:
number
;
old_value
:
number
;
first_scan
:
boolean
;
relative_position
:
number
;
node_open
=
0
;
fill_color
=
0
;
p
=
0
;
old_value
=
0
;
first_scan
=
true
;
relative_position
=
0
;
constructor
(
ctx
,
nc
,
level
)
{
this
.
ctx
=
ctx
;
this
.
userdata
=
null
;
this
.
x_right
=
0.0
;
this
.
x_left
=
0.0
;
this
.
y_high
=
0.0
;
this
.
y_low
=
0.0
;
this
.
nc
=
nc
;
this
.
pos
=
new
Point
();
this
.
n_name
=
""
;
this
.
annotv
=
[];
this
.
annotsize
=
[];
this
.
pixmapv
=
[];
this
.
trace_object
=
""
;
this
.
trace_attribute
=
""
;
this
.
trace_attr_type
=
0
;
this
.
highlight
=
false
;
this
.
select
=
false
;
this
.
invert
=
false
;
this
.
level
=
level
;
this
.
node_open
=
0
;
this
.
fill_color
=
0
;
this
.
p
=
0
;
this
.
old_value
=
0
;
this
.
first_scan
=
true
;
this
.
relative_position
=
0
;
}
set_annotation
(
number
,
text
)
{
...
...
@@ -518,9 +495,9 @@ class PlowNode {
event_handler
(
event
,
x
,
y
)
{
if
((
x
-
this
.
ctx
.
offset_x
)
/
this
.
ctx
.
zoom_factor
>=
this
.
x_left
&&
(
x
-
this
.
ctx
.
offset_x
)
/
this
.
ctx
.
zoom_factor
<=
this
.
x_right
&&
(
y
-
this
.
ctx
.
offset_y
)
/
this
.
ctx
.
zoom_factor
>=
this
.
y_low
&&
(
y
-
this
.
ctx
.
offset_y
)
/
this
.
ctx
.
zoom_factor
<=
this
.
y_high
)
{
(
x
-
this
.
ctx
.
offset_x
)
/
this
.
ctx
.
zoom_factor
<=
this
.
x_right
&&
(
y
-
this
.
ctx
.
offset_y
)
/
this
.
ctx
.
zoom_factor
>=
this
.
y_low
&&
(
y
-
this
.
ctx
.
offset_y
)
/
this
.
ctx
.
zoom_factor
<=
this
.
y_high
)
{
this
.
ctx
.
event_object
=
this
;
return
1
;
}
...
...
@@ -557,7 +534,7 @@ class PlowNode {
in_icon
(
x
,
y
)
{
return
x
>=
this
.
x_left
*
this
.
ctx
.
zoom_factor
&&
x
<=
(
this
.
x_left
+
1.75
)
*
this
.
ctx
.
zoom_factor
;
(
this
.
x_left
+
1.75
)
*
this
.
ctx
.
zoom_factor
;
}
measure
()
{
...
...
@@ -570,13 +547,14 @@ class PlowNode {
}
class
PlowAnnot
{
RELATIVE_OFFSET
=
1
;
static
RELATIVE_OFFSET
=
1
;
ctx
:
PlowCtx
;
p
:
Point
;
draw_type
:
number
;
text_size
:
number
;
annot_type
:
number
;
number
:
number
;
constructor
(
ctx
,
x
,
y
,
text_size
,
text_color
,
annot_type
,
number
)
{
this
.
p
=
new
Point
(
x
,
y
);
this
.
draw_type
=
text_color
;
...
...
@@ -596,7 +574,7 @@ class PlowAnnot {
let
tsize
=
0
;
let
idx
=
this
.
ctx
.
zoom_factor
/
this
.
ctx
.
base_zoom_factor
*
(
this
.
text_size
+
4
)
-
4
;
(
this
.
text_size
+
4
)
-
4
;
if
(
idx
<
0
)
{
return
;
}
...
...
@@ -646,8 +624,8 @@ class PlowAnnot {
let
y
=
(
this
.
p
.
y
+
p0
.
y
)
*
this
.
ctx
.
zoom_factor
-
tsize
/
4
;
if
((
this
.
annot_type
&
RELATIVE_POSITION
)
!==
0
)
{
let
rel_x
=
(
p0
.
x
+
node
.
relative_position
+
this
.
RELATIVE_OFFSET
)
*
this
.
ctx
.
zoom_factor
;
let
rel_x
=
(
p0
.
x
+
node
.
relative_position
+
PlowAnnot
.
RELATIVE_OFFSET
)
*
this
.
ctx
.
zoom_factor
;
if
(
x
<
rel_x
)
{
x
=
rel_x
;
}
...
...
@@ -659,10 +637,10 @@ class PlowAnnot {
y
+=
tsize
*
1.4
;
}
if
((
this
.
annot_type
&
NEXT_RELATIVE_POSITION
)
!==
0
||
(
this
.
annot_type
&
RELATIVE_POSITION
)
!==
0
)
{
(
this
.
annot_type
&
RELATIVE_POSITION
)
!==
0
)
{
node
.
relative_position
=
(
x
+
g
.
measureText
(
node
.
annotv
[
this
.
number
]).
width
)
/
this
.
ctx
.
zoom_factor
-
p0
.
x
;
(
x
+
g
.
measureText
(
node
.
annotv
[
this
.
number
]).
width
)
/
this
.
ctx
.
zoom_factor
-
p0
.
x
;
}
}
...
...
@@ -674,6 +652,7 @@ class PlowAnnotPixmap {
ctx
:
PlowCtx
;
p
:
Point
;
number
:
number
;
constructor
(
ctx
,
x
,
y
,
number
)
{
this
.
p
=
new
Point
(
x
,
y
);
this
.
number
=
number
;
...
...
@@ -704,7 +683,7 @@ class PlowAnnotPixmap {
img
.
onload
=
function
()
{
for
(
let
i
=
0
;
i
<
Bitmaps
.
pending
[
bix
].
length
;
i
++
)
{
gctx
.
drawImage
(
img
,
Bitmaps
.
pending
[
bix
][
i
].
x
,
Bitmaps
.
pending
[
bix
][
i
].
y
);
Bitmaps
.
pending
[
bix
][
i
].
y
);
}
Bitmaps
.
pending
[
bix
]
=
null
;
}
...
...
@@ -729,6 +708,7 @@ class PlowRect {
fill_color
:
number
;
fill
:
number
;
fix_color
:
number
;
constructor
(
ctx
,
x
,
y
,
width
,
height
,
fill_color
,
border_color
,
fill
,
fix_color
)
{
this
.
ll
=
new
Point
(
x
,
y
);
this
.
ur
=
new
Point
(
x
+
width
,
y
+
height
);
...
...
@@ -817,6 +797,7 @@ class GDraw {
canvas
:
HTMLCanvasElement
;
gctx
:
CanvasRenderingContext2D
;
offset_top
:
number
;
constructor
(
ctx
)
{
this
.
ctx
=
ctx
;
this
.
canvas
=
document
.
querySelector
(
"
canvas
"
);
...
...
@@ -826,43 +807,29 @@ class GDraw {
}
class
PlowCtx
{
gdh
:
Gdh
;
debug
:
boolean
;
nodraw
:
number
;
zoom_factor
:
number
;
base_zoom_factor
:
number
;
offset_x
:
number
;
offset_y
:
number
;
x_right
:
number
;
x_left
:
number
;
y_high
:
number
;
y_low
:
number
;
gdh
:
Gdh
=
null
;
debug
=
false
;
nodraw
=
0
;
zoom_factor
=
20.0
;
base_zoom_factor
=
20.0
;
offset_x
=
0
;
offset_y
=
0
;
x_right
=
0.0
;
x_left
=
0.0
;
y_high
=
0.0
;
y_low
=
0.0
;
a
:
PlowArray
;
a_nc
:
PlowArray
;
name
:
string
;
name
=
"
Claes context
"
;
gdraw
:
GDraw
;
select_object
:
PlowNode
;
event_cb
:
(
event
:
object
,
object
:
PlowNode
,
x
:
number
,
y
:
number
)
=>
void
;
event_object
:
PlowNode
;
select_object
:
PlowNode
=
null
;
event_cb
:
(
event
:
object
,
object
:
PlowNode
,
x
:
number
,
y
:
number
)
=>
void
=
null
;
event_object
:
PlowNode
=
null
;
constructor
()
{
this
.
gdh
=
null
;
this
.
debug
=
false
;
this
.
nodraw
=
0
;
this
.
zoom_factor
=
20.0
;
this
.
base_zoom_factor
=
20.0
;
this
.
offset_x
=
0
;
this
.
offset_y
=
0
;
this
.
x_right
=
0.0
;
this
.
x_left
=
0.0
;
this
.
y_high
=
0.0
;
this
.
y_low
=
0.0
;
this
.
a
=
new
PlowArray
(
this
);
this
.
a_nc
=
new
PlowArray
(
this
);
this
.
name
=
"
Claes context
"
;
this
.
gdraw
=
new
GDraw
(
this
);
this
.
select_object
=
null
;
this
.
event_cb
=
null
;
this
.
event_object
=
null
;
}
draw
()
{
...
...
@@ -871,7 +838,7 @@ class PlowCtx {
}
this
.
gdraw
.
gctx
.
fillStyle
=
"
white
"
;
this
.
gdraw
.
gctx
.
fillRect
(
0
,
0
,
this
.
gdraw
.
canvas
.
width
,
this
.
gdraw
.
canvas
.
height
);
this
.
gdraw
.
canvas
.
height
);
this
.
a
.
draw
(
this
.
gdraw
.
gctx
,
null
,
null
,
false
);
}
...
...
@@ -1002,13 +969,13 @@ class PlowCtx {
is_visible
(
o
)
{
return
(
o
.
y_high
*
this
.
zoom_factor
<=
window
.
pageYOffset
+
window
.
innerHeight
-
this
.
gdraw
.
offset_top
)
&&
(
o
.
y_low
*
this
.
zoom_factor
>=
window
.
pageYOffset
-
this
.
gdraw
.
offset_top
);
window
.
innerHeight
-
this
.
gdraw
.
offset_top
)
&&
(
o
.
y_low
*
this
.
zoom_factor
>=
window
.
pageYOffset
-
this
.
gdraw
.
offset_top
);
}
scroll
(
y
,
factor
)
{
window
.
scrollTo
(
window
.
scrollX
,
y
*
this
.
zoom_factor
-
window
.
innerHeight
*
factor
+
this
.
gdraw
.
offset_top
)
factor
+
this
.
gdraw
.
offset_top
)
};
}
\ No newline at end of file
java/jsw/co/src/pwr.ts
View file @
867fdfb6
...
...
@@ -159,6 +159,7 @@ enum XttMntMethodsMask {
class
PwrtObjid
{
vid
:
number
;
oix
:
number
;
constructor
(
vid
,
oix
)
{
this
.
oix
=
oix
;
this
.
vid
=
vid
;
...
...
@@ -176,6 +177,7 @@ class PwrtAttrRef {
class
CdhrNumber
{
value
:
number
;
sts
:
number
;
constructor
(
value
,
sts
)
{
this
.
value
=
value
;
this
.
sts
=
sts
;
...
...
@@ -195,9 +197,11 @@ class UserdataCbReturn {
class
Point
{
x
=
0
;
y
=
0
;
constructor
()
{
}
constructor
(
x
:
number
,
y
:
number
)
{
constructor
(
x
:
number
,
y
:
number
)
{
this
.
x
=
x
;
this
.
y
=
y
;
}
...
...
@@ -208,9 +212,11 @@ class Rect {
y
=
0
;
width
=
0
;
height
=
0
;
constructor
()
{
}
constructor
(
x
:
number
,
y
:
number
,
width
:
number
,
height
:
number
)
{
constructor
(
x
:
number
,
y
:
number
,
width
:
number
,
height
:
number
)
{
this
.
x
=
x
;
this
.
y
=
y
;
this
.
width
=
width
;
...
...
java/jsw/ev/src/ev.html
View file @
867fdfb6
<!DOCTYPE html>
<html>
<head>
<title>
Alarm List
</title>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"toolbar.css"
>
</head>
<head>
<title>
Alarm List
</title>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"toolbar.css"
>
</head>
<body>
<div
class=
"toolbar"
role=
"toolbar"
>
<div
id=
"toolitem1"
tabindex=
"0"
class=
"toolbar-item"
role=
"button"
><img
src=
"toolbar_ack.png"
><img>
....
</div>
<div
id=
"toolitem2"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
><img
src=
"toolbar_navigator.png"
><img></div>
<div
id=
"toolitem3"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
><img
src=
"toolbar_plc.png"
><img>
....
</div>
<div
id=
"toolitem4"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
><img
src=
"toolbar_graph.png"
><img></div>
<div
id=
"toolitem5"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
><img
src=
"toolbar_objectgraph.png"
><img></div>
<div
id=
"toolitem6"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
><img
src=
"toolbar_navigator.png"
><img></div>
<div
id=
"toolitem7"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
><img
src=
"toolbar_plc.png"
><img></div>
<div
id=
"toolitem8"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
><img
src=
"toolbar_history.png"
><img></div>
<div
id=
"toolitem9"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
><img
src=
"toolbar_object.png"
><img></div>
<div
id=
"toolitem10"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
><img
src=
"toolbar_crossref.png"
><img></div>
<div
id=
"toolitem11"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
><img
src=
"toolbar_help.png"
><img></div>
<div
id=
"toolitem12"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
><img
src=
"toolbar_classhelp.png"
><img></div>
</div>
<canvas
id=
"flowcanvas"
width=
"1200"
height=
"800"
></canvas>
<script
src=
"https://unpkg.com/@babel/standalone/babel.min.js"
></script>
<script
type=
"text/babel"
src=
"pwr.js"
></script>
<script
type=
"text/babel"
src=
"cli.js"
></script>
<script
type=
"text/babel"
src=
"gdh.js"
></script>
<script
type=
"text/babel"
src=
"plow.js"
></script>
<script
type=
"text/babel"
src=
"ev.ts"
></script>
<hr>
<address><a
href=
"mailto:claes@debian86.ssab.com"
></a></address>
</body>
<body>
<div
class=
"toolbar"
role=
"toolbar"
>
<div
id=
"toolitem1"
tabindex=
"0"
class=
"toolbar-item"
role=
"button"
>
<img
src=
"toolbar_ack.png"
/>
....
</div>
<div
id=
"toolitem2"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
>
<img
src=
"toolbar_navigator.png"
/>
</div>
<div
id=
"toolitem3"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
>
<img
src=
"toolbar_plc.png"
/>
....
</div>
<div
id=
"toolitem4"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
>
<img
src=
"toolbar_graph.png"
/>
</div>
<div
id=
"toolitem5"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
>
<img
src=
"toolbar_objectgraph.png"
/>
</div>
<div
id=
"toolitem6"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
>
<img
src=
"toolbar_navigator.png"
/>
</div>
<div
id=
"toolitem7"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
>
<img
src=
"toolbar_plc.png"
/>
</div>
<div
id=
"toolitem8"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
>
<img
src=
"toolbar_history.png"
/>
</div>
<div
id=
"toolitem9"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
>
<img
src=
"toolbar_object.png"
/>
</div>
<div
id=
"toolitem10"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
>
<img
src=
"toolbar_crossref.png"
/>
</div>
<div
id=
"toolitem11"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
>
<img
src=
"toolbar_help.png"
/>
</div>
<div
id=
"toolitem12"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
>
<img
src=
"toolbar_classhelp.png"
/>
</div>
</div>
<canvas
id=
"flowcanvas"
width=
"1200"
height=
"800"
></canvas>
<script
src=
"https://unpkg.com/@babel/standalone/babel.min.js"
></script>
<script
type=
"text/babel"
src=
"pwr.js"
></script>
<script
type=
"text/babel"
src=
"cli.js"
></script>
<script
type=
"text/babel"
src=
"gdh.js"
></script>
<script
type=
"text/babel"
src=
"plow.js"
></script>
<script
type=
"text/babel"
src=
"ev.ts"
></script>
<hr>
<address><a
href=
"mailto:claes@debian86.ssab.com"
></a></address>
</body>
</html>
java/jsw/ev/src/ev.ts
View file @
867fdfb6
...
...
@@ -15,14 +15,12 @@ class Ev {
ncSuccess
:
PlowNodeClass
;
scan_update
:
boolean
;
priv
:
number
;
mhSyncIdx
:
number
;
maxEve
:
number
;
mhSyncIdx
=
0
;
maxEve
=
30
;
type
:
EvType
;
timer
:
number
;
constructor
()
{
this
.
mhSyncIdx
=
0
;
this
.
maxEve
=
30
;
constructor
()
{
this
.
type
=
this
.
get_type
();
switch
(
this
.
type
)
{
case
EvType
.
EventList
:
...
...
@@ -39,9 +37,7 @@ class Ev {
this
.
ctx
.
event_cb
=
this
.
plow_event
;
this
.
createNodeClasses
();
this
.
ctx
.
gdh
=
new
Gdh
();
this
.
ctx
.
gdh
.
open_cb
=
this
.
gdh_init_cb
;
this
.
ctx
.
gdh
.
init
();
this
.
ctx
.
gdh
=
new
Gdh
(
this
.
gdh_init_cb
);
this
.
ctx
.
gdraw
.
canvas
.
addEventListener
(
"
click
"
,
function
(
event
)
{
let
y
=
event
.
pageY
-
this
.
ctx
.
gdraw
.
offset_top
;
...
...
@@ -88,122 +84,122 @@ class Ev {
});
// Ack
document
.
getElementById
(
"
toolitem1
"
)
.
addEventListener
(
"
click
"
,
function
(
event
)
{
console
.
log
(
"
Ack
"
);
this
.
ack
();
});
.
addEventListener
(
"
click
"
,
function
(
event
)
{
console
.
log
(
"
Ack
"
);
this
.
ack
();
});
// Navigator sup object
document
.
getElementById
(
"
toolitem2
"
)
.
addEventListener
(
"
click
"
,
function
(
event
)
{
let
o
=
this
.
ctx
.
get_select
();
if
(
o
===
null
||
typeof
o
===
'
undefined
'
)
{
return
;
}
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
);
console
.
log
(
"
toolitem2 event
"
);
});
.
addEventListener
(
"
click
"
,
function
(
event
)
{
let
o
=
this
.
ctx
.
get_select
();
if
(
o
===
null
||
typeof
o
===
'
undefined
'
)
{
return
;
}
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
);
console
.
log
(
"
toolitem2 event
"
);
});
// Trace sup object
document
.
getElementById
(
"
toolitem3
"
)
.
addEventListener
(
"
click
"
,
function
(
event
)
{
console
.
log
(
"
toolitem5 event
"
);
let
o
=
this
.
ctx
.
get_select
();
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
);
});
.
addEventListener
(
"
click
"
,
function
(
event
)
{
console
.
log
(
"
toolitem5 event
"
);
let
o
=
this
.
ctx
.
get_select
();
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
);
});
// 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
);
}
});
.
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
);
}
});
// Object raph event name
document
.
getElementById
(
"
toolitem5
"
)
.
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
);
}
});
.
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
);
}
});
// Navigator event name
document
.
getElementById
(
"
toolitem6
"
)
.
addEventListener
(
"
click
"
,
function
(
event
)
{
let
o
=
this
.
ctx
.
get_select
();
console
.
log
(
"
storage
"
,
localStorage
.
getItem
(
"
XttMethodNavigator
"
));
localStorage
.
setItem
(
"
XttMethodNavigator
"
,
o
.
userdata
.
e
.
eventName
);
console
.
log
(
"
storage
"
,
localStorage
.
getItem
(
"
XttMethodNavigator
"
));
console
.
log
(
"
toolitem6 event window
"
,
window
.
opener
);
window
.
opener
.
focus
();
});
.
addEventListener
(
"
click
"
,
function
(
event
)
{
let
o
=
this
.
ctx
.
get_select
();
console
.
log
(
"
storage
"
,
localStorage
.
getItem
(
"
XttMethodNavigator
"
));
localStorage
.
setItem
(
"
XttMethodNavigator
"
,
o
.
userdata
.
e
.
eventName
);
console
.
log
(
"
storage
"
,
localStorage
.
getItem
(
"
XttMethodNavigator
"
));
console
.
log
(
"
toolitem6 event window
"
,
window
.
opener
);
window
.
opener
.
focus
();
});
// Trace event name
document
.
getElementById
(
"
toolitem7
"
)
.
addEventListener
(
"
click
"
,
function
(
event
)
{
let
o
=
this
.
ctx
.
get_select
();
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
);
console
.
log
(
"
toolitem7 event
"
);
});
.
addEventListener
(
"
click
"
,
function
(
event
)
{
let
o
=
this
.
ctx
.
get_select
();
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
);
console
.
log
(
"
toolitem7 event
"
);
});
// History event name
document
.
getElementById
(
"
toolitem8
"
)
.
addEventListener
(
"
click
"
,
function
(
event
)
{
console
.
log
(
"
toolitem8 event
"
);
});
.
addEventListener
(
"
click
"
,
function
(
event
)
{
console
.
log
(
"
toolitem8 event
"
);
});
// Object event name
document
.
getElementById
(
"
toolitem9
"
)
.
addEventListener
(
"
click
"
,
function
(
event
)
{
console
.
log
(
"
toolitem9 event
"
);
let
o
=
this
.
ctx
.
get_select
();
if
(
o
===
null
)
{
return
;
}
let
item
=
o
.
userdata
;
item
.
open_attributes
(
this
);
});
.
addEventListener
(
"
click
"
,
function
(
event
)
{
console
.
log
(
"
toolitem9 event
"
);
let
o
=
this
.
ctx
.
get_select
();
if
(
o
===
null
)
{
return
;
}
let
item
=
o
.
userdata
;
item
.
open_attributes
(
this
);
});
// Crossref event name
document
.
getElementById
(
"
toolitem10
"
)
.
addEventListener
(
"
click
"
,
function
(
event
)
{
let
o
=
this
.
ctx
.
get_select
();
if
(
o
===
null
)
{
return
;
}
this
.
ctx
.
gdh
.
crrSignal
(
o
.
userdata
.
e
.
eventName
,
this
.
open_crr_cb
,
o
);
console
.
log
(
"
toolitem10 event
"
);
});
.
addEventListener
(
"
click
"
,
function
(
event
)
{
let
o
=
this
.
ctx
.
get_select
();
if
(
o
===
null
)
{
return
;
}
this
.
ctx
.
gdh
.
crrSignal
(
o
.
userdata
.
e
.
eventName
,
this
.
open_crr_cb
,
o
);
console
.
log
(
"
toolitem10 event
"
);
});
// Help event name
document
.
getElementById
(
"
toolitem11
"
)
.
addEventListener
(
"
click
"
,
function
(
event
)
{
console
.
log
(
"
toolitem11 event
"
);
});
.
addEventListener
(
"
click
"
,
function
(
event
)
{
console
.
log
(
"
toolitem11 event
"
);
});
// Class help event name
document
.
getElementById
(
"
toolitem12
"
)
.
addEventListener
(
"
click
"
,
function
(
event
)
{
console
.
log
(
"
toolitem12 event
"
);
let
o
=
this
.
ctx
.
get_select
();
if
(
o
===
null
)
{
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
);
}
});
.
addEventListener
(
"
click
"
,
function
(
event
)
{
console
.
log
(
"
toolitem12 event
"
);
let
o
=
this
.
ctx
.
get_select
();
if
(
o
===
null
)
{
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
);
}
});
}
...
...
@@ -316,7 +312,7 @@ class Ev {
o
=
this
.
ctx
.
get_next_object
(
o
))
{
let
item
=
o
.
get_userdata
();
if
(
item
.
e
.
eventId
.
nix
===
event_id
.
nix
&&
item
.
e
.
eventId
.
idx
===
event_id
.
idx
)
{
item
.
e
.
eventId
.
idx
===
event_id
.
idx
)
{
return
item
;
}
}
...
...
@@ -362,7 +358,7 @@ class Ev {
data
.
document
.
write
(
"
Error status
"
+
sts
);
}
else
{
data
.
location
.
href
=
"
ge.html?graph=
"
+
result
.
param1
+
"
&instance=
"
+
result
.
fullname
;
"
ge.html?graph=
"
+
result
.
param1
+
"
&instance=
"
+
result
.
fullname
;
data
.
document
.
title
=
result
.
fullname
;
}
}
...
...
@@ -397,10 +393,10 @@ class Ev {
param1
=
"
&obj=
"
+
result
.
param1
;
}
console
.
log
(
"
flow.html?vid=
"
+
result
.
objid
.
vid
+
"
&oix=
"
+
result
.
objid
.
oix
+
param1
);
result
.
objid
.
oix
+
param1
);
data
.
location
.
href
=
"
flow.html?vid=
"
+
result
.
objid
.
vid
+
"
&oix=
"
+
result
.
objid
.
oix
+
param1
;
"
flow.html?vid=
"
+
result
.
objid
.
vid
+
"
&oix=
"
+
result
.
objid
.
oix
+
param1
;
data
.
document
.
title
=
"
Trace
"
+
result
.
fullname
;
}
}
...
...
@@ -425,7 +421,7 @@ class Ev {
}
let
graphname
=
"
pwr_c_
"
+
classname
;
data
.
location
.
href
=
"
ge.html?graph=
"
+
graphname
+
"
&instance=
"
+
result
.
fullname
;
"
ge.html?graph=
"
+
graphname
+
"
&instance=
"
+
result
.
fullname
;
data
.
document
.
title
=
graphname
+
"
"
+
result
.
fullname
;
}
}
...
...
@@ -436,7 +432,7 @@ class Ev {
}
else
{
console
.
log
(
"
open_helpclass
"
,
result
.
param1
);
data
.
location
.
href
=
location
.
protocol
+
"
//
"
+
location
.
host
+
result
.
param1
;
location
.
protocol
+
"
//
"
+
location
.
host
+
result
.
param1
;
}
}
...
...
@@ -471,15 +467,15 @@ class Ev {
createNodeClasses
()
{
let
r1
=
new
PlowRect
(
this
.
ctx
,
0
,
0
,
50
,
1.0
,
Color
.
WHITE
,
Color
.
WHITE
,
true
,
false
);
Color
.
WHITE
,
true
,
false
);
let
r2a
=
new
PlowRect
(
this
.
ctx
,
0.1
,
0.15
,
0.7
,
0.7
,
Color
.
RED
,
Color
.
BLACK
,
true
,
false
);
Color
.
BLACK
,
true
,
false
);
let
r2b
=
new
PlowRect
(
this
.
ctx
,
0.1
,
0.15
,
0.7
,
0.7
,
Color
.
YELLOW
,
Color
.
BLACK
,
true
,
false
);
Color
.
BLACK
,
true
,
false
);
let
r2info
=
new
PlowRect
(
this
.
ctx
,
0.1
,
0.15
,
0.7
,
0.7
,
Color
.
WHITE
,
Color
.
BLACK
,
true
,
false
);
Color
.
BLACK
,
true
,
false
);
let
r2success
=
new
PlowRect
(
this
.
ctx
,
0.1
,
0.15
,
0.7
,
0.7
,
Color
.
GREEN
,
Color
.
BLACK
,
true
,
false
);
Color
.
GREEN
,
Color
.
BLACK
,
true
,
false
);
let
a1
=
new
PlowAnnot
(
this
.
ctx
,
1
,
0.9
,
4
,
Color
.
BLACK
,
0
,
0
);
let
p1
=
new
PlowAnnotPixmap
(
this
.
ctx
,
1.8
,
0.2
,
0
);
let
p2
=
new
PlowAnnotPixmap
(
this
.
ctx
,
2.4
,
0.2
,
1
);
...
...
@@ -487,9 +483,9 @@ class Ev {
let
p4
=
new
PlowAnnotPixmap
(
this
.
ctx
,
4.0
,
0.2
,
3
);
let
a2
=
new
PlowAnnot
(
this
.
ctx
,
4.8
,
0.9
,
4
,
Color
.
BLACK
,
0
,
1
);
let
a3
=
new
PlowAnnot
(
this
.
ctx
,
11.5
,
0.9
,
4
,
Color
.
BLACK
,
NEXT_RELATIVE_POSITION
,
2
);
NEXT_RELATIVE_POSITION
,
2
);
let
a4
=
new
PlowAnnot
(
this
.
ctx
,
22.5
,
0.9
,
4
,
Color
.
BLACK
,
RELATIVE_POSITION
,
3
);
RELATIVE_POSITION
,
3
);
// A alarm with red square
this
.
ncAlarmA
=
new
PlowNodeClass
(
this
.
ctx
);
...
...
@@ -575,7 +571,7 @@ class Ev {
break
;
case
Event
.
MB1Click
:
if
(
item
!==
null
&&
item
.
e
.
eventMoreText
!==
""
&&
x
>=
object
.
measure
().
ll_x
+
70
&&
x
<=
object
.
measure
().
ll_x
+
90
)
{
x
>=
object
.
measure
().
ll_x
+
70
&&
x
<=
object
.
measure
().
ll_x
+
90
)
{
window
.
alert
(
item
.
e
.
eventMoreText
);
}
else
if
(
object
.
select
)
{
object
.
set_select
(
false
);
...
...
@@ -629,7 +625,7 @@ class Ev {
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
.
open_plc_cb
,
newwindow
);
}
break
;
case
Event
.
Key_CtrlG
:
...
...
@@ -637,7 +633,7 @@ class Ev {
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
.
open_objectgraph_cb
,
newwindow
);
}
break
;
default
:
...
...
@@ -671,6 +667,7 @@ class Ev {
class
EvItemAlarm
{
node
:
PlowNode
;
e
:
MhEvent
;
constructor
(
ev
,
e
,
destination
,
destCode
)
{
this
.
e
=
e
;
...
...
java/jsw/flow/src/flow.html
View file @
867fdfb6
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>
Trace
</title>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"toolbar.css"
>
</head>
<head>
<title>
Trace
</title>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"toolbar.css"
>
</head>
<body>
<div
class=
"toolbar"
role=
"toolbar"
>
<div
id=
"toolitem1"
tabindex=
"0"
class=
"toolbar-item"
role=
"button"
><img
src=
"toolbar_graph.png"
><img></div>
<div
id=
"toolitem2"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
><img
src=
"toolbar_navigator.png"
><img></div>
<div
id=
"toolitem3"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
><img
src=
"toolbar_history.png"
><img></div>
<div
id=
"toolitem4"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
><img
src=
"toolbar_object.png"
><img></div>
<body>
<div
class=
"toolbar"
role=
"toolbar"
>
<div
id=
"toolitem1"
tabindex=
"0"
class=
"toolbar-item"
role=
"button"
>
<img
src=
"toolbar_graph.png"
/>
</div>
<canvas
id=
"flowcanvas"
width=
"1200"
height=
"800"
></canvas>
<script
src=
"https://unpkg.com/@babel/standalone/babel.min.js"
></script>
<script
type=
"text/babel"
src=
"pwr.js"
></script>
<script
type=
"text/babel"
src=
"gdh.js"
></script>
<script
type=
"text/babel"
src=
"flow.ts"
></script>
<hr>
<address><a
href=
"mailto:claes@debian86.ssab.com"
></a></address>
</body>
<div
id=
"toolitem2"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
>
<img
src=
"toolbar_navigator.png"
/>
</div>
<div
id=
"toolitem3"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
>
<img
src=
"toolbar_history.png"
/>
</div>
<div
id=
"toolitem4"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
>
<img
src=
"toolbar_object.png"
/>
</div>
</div>
<canvas
id=
"flowcanvas"
width=
"1200"
height=
"800"
></canvas>
<script
src=
"https://unpkg.com/@babel/standalone/babel.min.js"
></script>
<script
type=
"text/babel"
src=
"pwr.js"
></script>
<script
type=
"text/babel"
src=
"gdh.js"
></script>
<script
type=
"text/babel"
src=
"flow.ts"
></script>
<hr>
<address><a
href=
"mailto:claes@debian86.ssab.com"
></a></address>
</body>
</html>
java/jsw/flow/src/flow.ts
View file @
867fdfb6
"
use strict
"
;
enum
ConType
{
Straight
,
Fixed
,
AllFixed
,
Routed
,
StepDiv
,
StepConv
,
TransDiv
,
TransConv
,
StraightOneArrow
,
Reference
Straight
,
Fixed
,
AllFixed
,
Routed
,
StepDiv
,
StepConv
,
TransDiv
,
TransConv
,
StraightOneArrow
,
Reference
}
enum
DrawType
{
Line
,
LineRed
,
LineGray
,
LineErase
,
LineDashed
,
LineDashedRed
,
TextHelvetica
,
TextHelveticaBold
,
TextHelveticaErase
,
TextHelveticaEraseBold
,
_
,
Green
,
Yellow
,
DarkGray
,
Inherit
=
9999
Line
,
LineRed
,
LineGray
,
LineErase
,
LineDashed
,
LineDashedRed
,
TextHelvetica
,
TextHelveticaBold
,
TextHelveticaErase
,
TextHelveticaEraseBold
,
_
,
Green
,
Yellow
,
DarkGray
,
Inherit
=
9999
}
enum
DisplayLevel
{
One
=
1
<<
0
,
Two
=
1
<<
2
,
Three
=
1
<<
3
,
Four
=
1
<<
4
,
Five
=
1
<<
5
,
Six
=
1
<<
6
One
=
1
<<
0
,
Two
=
1
<<
2
,
Three
=
1
<<
3
,
Four
=
1
<<
4
,
Five
=
1
<<
5
,
Six
=
1
<<
6
}
enum
NodeGroup
{
...
...
@@ -220,6 +220,7 @@ class GDraw {
gctx
:
CanvasRenderingContext2D
;
offset_top
:
number
;
offset_left
:
number
;
constructor
(
ctx
:
FlowCtx
)
{
this
.
ctx
=
ctx
;
this
.
canvas
=
document
.
querySelector
(
"
canvas
"
);
...
...
@@ -243,9 +244,9 @@ class GDraw {
class
FlowArray
{
ctx
:
FlowCtx
;
a
:
Array
<
any
>
;
a
=
[];
constructor
(
ctx
:
FlowCtx
)
{
this
.
a
=
[];
this
.
ctx
=
ctx
;
}
...
...
@@ -335,7 +336,7 @@ class FlowArray {
this
.
a
.
push
(
arrow
);
break
;
case
Save
.
Point
:
let
point
=
new
FlowPoint
(
this
.
ctx
);
let
point
=
new
FlowPoint
();
i
=
point
.
open
(
lines
,
i
+
1
);
this
.
a
.
push
(
point
);
break
;
...
...
@@ -372,13 +373,12 @@ class FlowArray {
class
FlowNodeClass
{
ctx
:
FlowCtx
;
a
:
FlowArray
;
nc_name
:
string
;
group
:
number
;
nc_name
=
""
;
group
=
0
;
constructor
(
ctx
:
FlowCtx
)
{
this
.
a
=
new
FlowArray
(
ctx
);
this
.
ctx
=
ctx
;
this
.
nc_name
=
""
;
this
.
group
=
0
;
}
draw
(
g
,
p
,
node
,
highlight
)
{
...
...
@@ -424,25 +424,17 @@ class FlowNodeClass {
class
FlowConClass
{
ctx
:
FlowCtx
;
cc_name
:
string
;
con_type
:
number
;
corner
:
number
;
draw_type
:
number
;
line_width
:
number
;
arrow_width
:
number
;
arrow_length
:
number
;
round_corner_amount
:
number
;
group
:
number
;
cc_name
=
""
;
con_type
=
0
;
corner
=
0
;
draw_type
=
0
;
line_width
=
0
;
arrow_width
=
0.0
;
arrow_length
=
0.0
;
round_corner_amount
=
0.0
;
group
=
0
;
constructor
(
ctx
:
FlowCtx
)
{
this
.
cc_name
=
""
;
this
.
con_type
=
0
;
this
.
corner
=
0
;
this
.
draw_type
=
0
;
this
.
line_width
=
0
;
this
.
arrow_width
=
0.0
;
this
.
arrow_length
=
0.0
;
this
.
round_corner_amount
=
0.0
;
this
.
group
=
0
;
this
.
ctx
=
ctx
;
}
...
...
@@ -498,14 +490,8 @@ class FlowConClass {
}
class
FlowPoint
{
ctx
:
FlowCtx
;
x
:
number
;
y
:
number
;
constructor
(
ctx
:
FlowCtx
)
{
this
.
x
=
0.0
;
this
.
y
=
0.0
;
this
.
ctx
=
ctx
;
}
x
=
0.0
;
y
=
0.0
;
open
(
lines
,
row
)
{
let
i
;
...
...
@@ -513,10 +499,6 @@ class FlowPoint {
let
tokens
=
lines
[
i
].
split
(
'
'
);
let
key
=
parseInt
(
tokens
[
0
]);
if
(
this
.
ctx
.
debug
)
{
console
.
log
(
"
point :
"
+
lines
[
i
]);
}
switch
(
key
)
{
case
Save
.
Point
:
break
;
...
...
@@ -539,15 +521,12 @@ class FlowPoint {
class
FlowLine
{
ctx
:
FlowCtx
;
p1
:
FlowPoint
;
p2
:
FlowPoint
;
draw_type
:
DrawType
;
line_width
:
number
;
p1
=
new
FlowPoint
();
p2
=
new
FlowPoint
();
draw_type
:
DrawType
=
0
;
line_width
=
0
;
constructor
(
ctx
:
FlowCtx
)
{
this
.
p1
=
new
FlowPoint
(
ctx
);
this
.
p2
=
new
FlowPoint
(
ctx
);
this
.
draw_type
=
0
;
this
.
line_width
=
0
;
this
.
ctx
=
ctx
;
}
...
...
@@ -558,7 +537,7 @@ class FlowLine {
let
y2
=
(
this
.
p2
.
y
+
p
.
y
)
*
this
.
ctx
.
zoom_factor
;
g
.
lineWidth
=
this
.
ctx
.
zoom_factor
/
this
.
ctx
.
base_zoom_factor
*
this
.
line_width
;
this
.
ctx
.
zoom_factor
/
this
.
ctx
.
base_zoom_factor
*
this
.
line_width
;
if
(
g
.
lineWidth
<
1
)
{
g
.
lineWidth
=
1
;
}
...
...
@@ -637,19 +616,14 @@ class FlowLine {
class
FlowRect
{
ctx
:
FlowCtx
;
ll
:
FlowPoint
;
ur
:
FlowPoint
;
draw_type
:
DrawType
;
line_width
:
number
;
display_level
:
DisplayLevel
;
fill
:
number
;
ll
=
new
FlowPoint
();
ur
=
new
FlowPoint
();
draw_type
:
DrawType
=
0
;
line_width
=
0
;
display_level
:
DisplayLevel
=
0
;
fill
=
0
;
constructor
(
ctx
:
FlowCtx
)
{
this
.
ll
=
new
FlowPoint
(
ctx
);
this
.
ur
=
new
FlowPoint
(
ctx
);
this
.
draw_type
=
0
;
this
.
line_width
=
0
;
this
.
display_level
=
0
;
this
.
fill
=
0
;
this
.
ctx
=
ctx
;
}
...
...
@@ -705,7 +679,7 @@ class FlowRect {
let
height
=
(
this
.
ur
.
y
-
this
.
ll
.
y
)
*
this
.
ctx
.
zoom_factor
;
g
.
lineWidth
=
this
.
ctx
.
zoom_factor
/
this
.
ctx
.
base_zoom_factor
*
this
.
line_width
;
this
.
ctx
.
zoom_factor
/
this
.
ctx
.
base_zoom_factor
*
this
.
line_width
;
if
(
g
.
lineWidth
<
1
)
{
g
.
lineWidth
=
1
;
}
...
...
@@ -731,19 +705,14 @@ class FlowRect {
class
FlowArc
{
ctx
:
FlowCtx
;
ll
:
FlowPoint
;
ur
:
FlowPoint
;
angle1
:
number
;
angle2
:
number
;
draw_type
:
DrawType
;
line_width
:
number
;
ll
=
new
FlowPoint
();
ur
=
new
FlowPoint
();
angle1
=
0.0
;
angle2
=
0.0
;
draw_type
:
DrawType
=
0
;
line_width
=
0
;
constructor
(
ctx
:
FlowCtx
)
{
this
.
ll
=
new
FlowPoint
(
ctx
);
this
.
ur
=
new
FlowPoint
(
ctx
);
this
.
angle1
=
0.0
;
this
.
angle2
=
0.0
;
this
.
draw_type
=
0
;
this
.
line_width
=
0
;
this
.
ctx
=
ctx
;
}
...
...
@@ -759,7 +728,7 @@ class FlowArc {
}
let
a2
=
a1
+
this
.
angle2
/
180
*
Math
.
PI
;
g
.
lineWidth
=
this
.
ctx
.
zoom_factor
/
this
.
ctx
.
base_zoom_factor
*
this
.
line_width
;
this
.
ctx
.
zoom_factor
/
this
.
ctx
.
base_zoom_factor
*
this
.
line_width
;
if
(
g
.
lineWidth
<
1
)
{
g
.
lineWidth
=
1
;
}
...
...
@@ -818,22 +787,19 @@ class FlowArc {
class
FlowText
{
ctx
:
FlowCtx
;
p
:
FlowPoint
;
draw_type
:
DrawType
;
text_size
:
number
;
text
:
string
;
p
=
new
FlowPoint
();
draw_type
:
DrawType
=
0
;
text_size
=
0
;
text
=
""
;
constructor
(
ctx
:
FlowCtx
)
{
this
.
p
=
new
FlowPoint
(
ctx
);
this
.
draw_type
=
0
;
this
.
text_size
=
0
;
this
.
text
=
""
;
this
.
ctx
=
ctx
;
}
draw
(
g
,
p0
,
node
,
highlight
)
{
let
tsize
=
0
;
let
idx
=
this
.
ctx
.
zoom_factor
/
this
.
ctx
.
base_zoom_factor
*
(
this
.
text_size
+
4
)
-
4
;
(
this
.
text_size
+
4
)
-
4
;
if
(
idx
<
0
)
{
return
;
}
...
...
@@ -917,21 +883,15 @@ class FlowText {
class
FlowArrow
{
ctx
:
FlowCtx
;
p1
:
FlowPoint
;
p2
:
FlowPoint
;
p_dest
:
FlowPoint
;
arrow_width
:
number
;
arrow_length
:
number
;
draw_type
:
DrawType
;
line_width
:
number
;
p1
=
new
FlowPoint
();
p2
=
new
FlowPoint
();
p_dest
=
new
FlowPoint
();
arrow_width
=
0.0
;
arrow_length
=
0.0
;
draw_type
:
DrawType
=
0
;
line_width
=
0
;
constructor
(
ctx
:
FlowCtx
)
{
this
.
p1
=
new
FlowPoint
(
ctx
);
this
.
p2
=
new
FlowPoint
(
ctx
);
this
.
p_dest
=
new
FlowPoint
(
ctx
);
this
.
arrow_width
=
0.0
;
this
.
arrow_length
=
0.0
;
this
.
draw_type
=
0
;
this
.
line_width
=
0
;
this
.
ctx
=
ctx
;
}
...
...
@@ -1012,6 +972,7 @@ class FlowArrow {
class
FlowTriangle
extends
FlowRect
{
ctx
:
FlowCtx
;
constructor
(
ctx
:
FlowCtx
)
{
super
(
ctx
);
}
...
...
@@ -1091,18 +1052,14 @@ class FlowTriangle extends FlowRect {
class
FlowConPoint
{
ctx
:
FlowCtx
;
p
:
FlowPoint
;
number
:
number
;
direction
:
number
;
trace_attribute
:
string
;
trace_attr_type
:
number
;
p
=
new
FlowPoint
();
number
=
0
;
direction
=
0
;
trace_attribute
=
""
;
trace_attr_type
=
0
;
constructor
(
ctx
:
FlowCtx
)
{
this
.
ctx
=
ctx
;
this
.
p
=
new
FlowPoint
(
ctx
);
this
.
number
=
0
;
this
.
direction
=
0
;
this
.
trace_attribute
=
""
;
this
.
trace_attr_type
=
0
;
}
draw
(
g
,
p
,
node
,
highlight
)
{
...
...
@@ -1149,19 +1106,14 @@ class FlowConPoint {
class
FlowAnnot
{
ctx
:
FlowCtx
;
p
:
FlowPoint
;
draw_type
:
DrawType
;
text_size
:
number
;
display_level
:
DisplayLevel
;
annot_type
:
number
;
number
:
number
;
p
=
new
FlowPoint
();
draw_type
:
DrawType
=
0
;
text_size
=
0
display_level
:
DisplayLevel
=
0
;
annot_type
=
0
;
number
=
0
;
constructor
(
ctx
:
FlowCtx
)
{
this
.
p
=
new
FlowPoint
(
ctx
);
this
.
draw_type
=
0
;
this
.
text_size
=
0
;
this
.
display_level
=
0
;
this
.
annot_type
=
0
;
this
.
number
=
0
;
this
.
ctx
=
ctx
;
}
...
...
@@ -1178,7 +1130,7 @@ class FlowAnnot {
let
tsize
=
0
;
let
idx
=
this
.
ctx
.
zoom_factor
/
this
.
ctx
.
base_zoom_factor
*
(
this
.
text_size
+
4
)
-
4
;
(
this
.
text_size
+
4
)
-
4
;
if
(
idx
<
0
)
{
return
;
}
...
...
@@ -1279,65 +1231,47 @@ class FlowAnnot {
class
FlowCon
{
ctx
:
FlowCtx
;
x_right
:
number
;
x_left
:
number
;
y_high
:
number
;
y_low
:
number
;
cc
:
object
;
p_num
:
number
;
l_num
:
number
;
a_num
:
number
;
arrow_num
:
number
;
ref_num
:
number
;
point_x
:
FlowArray
;
point_y
:
FlowArray
;
line_a
:
FlowArray
;
arc_a
:
FlowArray
;
arrow_a
:
FlowArray
;
ref_a
:
FlowArray
;
c_name
:
string
;
trace_object
:
string
;
trace_attribute
:
string
;
trace_attr_type
:
number
;
temporary_ref
:
number
;
highlight
:
boolean
;
redraw
:
boolean
;
x_right
=
0.0
;
x_left
=
0.0
;
y_high
=
0.0
;
y_low
=
0.0
;
cc
=
null
;
p_num
=
0
;
l_num
=
0
;
a_num
=
0
;
arrow_num
=
0
;
ref_num
=
0
;
c_name
=
""
;
trace_object
=
""
;
trace_attribute
=
""
;
trace_attr_type
=
0
;
temporary_ref
=
0
;
highlight
=
false
;
redraw
=
true
;
constructor
(
ctx
:
FlowCtx
)
{
this
.
ctx
=
ctx
;
this
.
x_right
=
0.0
;
this
.
x_left
=
0.0
;
this
.
y_high
=
0.0
;
this
.
y_low
=
0.0
;
this
.
cc
=
null
;
this
.
p_num
=
0
;
this
.
l_num
=
0
;
this
.
a_num
=
0
;
this
.
arrow_num
=
0
;
this
.
ref_num
=
0
;
this
.
point_x
=
new
FlowArray
(
ctx
);
this
.
point_y
=
new
FlowArray
(
ctx
);
this
.
line_a
=
new
FlowArray
(
ctx
);
this
.
arc_a
=
new
FlowArray
(
ctx
);
this
.
arrow_a
=
new
FlowArray
(
ctx
);
this
.
ref_a
=
new
FlowArray
(
ctx
);
this
.
c_name
=
""
;
this
.
trace_object
=
""
;
this
.
trace_attribute
=
""
;
this
.
trace_attr_type
=
0
;
this
.
temporary_ref
=
0
;
this
.
highlight
=
false
;
this
.
redraw
=
true
;
}
draw
(
g
,
p0
,
node
,
highlight
)
{
if
(
!
this
.
redraw
)
{
return
;
}
let
p
=
new
FlowPoint
(
this
.
ctx
);
p
.
x
=
0
;
p
.
y
=
0
;
let
p
=
new
FlowPoint
();
if
(
this
.
temporary_ref
!==
0
||
this
.
cc
.
con_type
===
ConType
.
Reference
)
{
this
.
cc
.
con_type
===
ConType
.
Reference
)
{
this
.
ref_a
.
draw
(
g
,
p
,
null
,
highlight
);
}
else
{
this
.
line_a
.
draw
(
g
,
p
,
null
,
highlight
);
...
...
@@ -1480,46 +1414,28 @@ class FlowCon {
class
FlowNode
{
ctx
:
FlowCtx
;
x_right
:
number
;
x_left
:
number
;
y_high
:
number
;
y_low
:
number
;
nc
:
FlowNodeClass
;
pos
:
FlowPoint
;
n_name
:
string
;
annotv
:
Array
;
annotsize
:
Array
;
trace_object
:
string
;
trace_attribute
:
string
;
trace_attr_type
:
number
;
highlight
:
boolean
;
select
:
boolean
;
fill_color
:
number
;
p
:
number
;
old_value
:
number
;
first_scan
:
boolean
;
redraw
:
boolean
;
x_right
=
0.0
;
x_left
=
0.0
;
y_high
=
0.0
;
y_low
=
0.0
;
nc
:
FlowNodeClass
=
null
;
pos
=
new
FlowPoint
();
n_name
=
""
;
annotv
:
Array
=
[];
annotsize
:
Array
=
[];
trace_object
=
""
;
trace_attribute
=
""
;
trace_attr_type
=
0
;
highlight
=
false
;
select
=
false
;
fill_color
=
0
;
p
=
0
;
old_value
=
0
;
first_scan
=
true
;
redraw
=
true
;
constructor
(
ctx
:
FlowCtx
)
{
this
.
ctx
=
ctx
;
this
.
x_right
=
0.0
;
this
.
x_left
=
0.0
;
this
.
y_high
=
0.0
;
this
.
y_low
=
0.0
;
this
.
nc
=
null
;
this
.
pos
=
new
FlowPoint
(
ctx
);
this
.
n_name
=
""
;
this
.
annotv
=
[];
this
.
annotsize
=
[];
this
.
trace_object
=
""
;
this
.
trace_attribute
=
""
;
this
.
trace_attr_type
=
0
;
this
.
highlight
=
false
;
this
.
select
=
false
;
this
.
fill_color
=
0
;
this
.
p
=
0
;
this
.
old_value
=
0
;
this
.
first_scan
=
true
;
this
.
redraw
=
true
;
}
draw
(
g
,
p
,
node
,
highlight
)
{
...
...
@@ -1729,7 +1645,7 @@ class FlowNode {
let
zx
=
x
/
this
.
ctx
.
zoom_factor
+
this
.
ctx
.
x_left
;
let
zy
=
y
/
this
.
ctx
.
zoom_factor
+
this
.
ctx
.
y_low
;
if
(
zx
>=
this
.
x_left
&&
zx
<=
this
.
x_right
&&
zy
>=
this
.
y_low
&&
zy
<=
this
.
y_high
)
{
zy
<=
this
.
y_high
)
{
console
.
log
(
"
Hit in node
"
);
if
(
this
.
select
)
{
this
.
select
=
false
;
...
...
@@ -1758,41 +1674,29 @@ class FlowNode {
}
class
FlowCtx
{
display_level
:
DisplayLevel
;
gdh
:
Gdh
;
debug
:
boolean
;
zoom_factor
:
number
;
base_zoom_factor
:
number
;
offset_x
:
number
;
offset_y
:
number
;
x_right
:
number
;
x_left
:
number
;
y_high
:
number
;
y_low
:
number
;
a
:
FlowArray
;
a_nc
:
FlowArray
;
a_cc
:
FlowArray
;
name
:
string
;
gdraw
:
GDraw
;
select_object
:
FlowNode
;
display_level
=
DisplayLevel
.
One
;
gdh
:
Gdh
=
null
;
debug
=
false
;
zoom_factor
=
20.0
;
base_zoom_factor
=
20.0
;
offset_x
=
0
;
offset_y
=
0
;
x_right
=
0.0
;
x_left
=
0.0
;
y_high
=
0.0
;
y_low
=
0.0
;
name
=
"
Claes context
"
;
select_object
:
FlowNode
=
null
;
constructor
()
{
this
.
display_level
=
DisplayLevel
.
One
;
this
.
gdh
=
null
;
this
.
debug
=
false
;
this
.
zoom_factor
=
20.0
;
this
.
base_zoom_factor
=
20.0
;
this
.
offset_x
=
0
;
this
.
offset_y
=
0
;
this
.
x_right
=
0.0
;
this
.
x_left
=
0.0
;
this
.
y_high
=
0.0
;
this
.
y_low
=
0.0
;
this
.
a
=
new
FlowArray
(
this
);
this
.
a_nc
=
new
FlowArray
(
this
);
this
.
a_cc
=
new
FlowArray
(
this
);
this
.
name
=
"
Claes context
"
;
this
.
gdraw
=
new
GDraw
(
this
);
this
.
select_object
=
null
;
}
draw
()
{
...
...
@@ -1926,26 +1830,24 @@ class FlowCtx {
center_object
(
o
)
{
console
.
log
(
"
center_object
"
,
o
.
pos
.
x
*
this
.
zoom_factor
+
this
.
offset_x
,
window
.
innerWidth
,
o
.
pos
.
x
*
this
.
zoom_factor
+
this
.
offset_x
-
window
.
innerWidth
/
2
);
window
.
innerWidth
,
o
.
pos
.
x
*
this
.
zoom_factor
+
this
.
offset_x
-
window
.
innerWidth
/
2
);
console
.
log
(
"
center_object
"
,
o
.
pos
.
y
*
this
.
zoom_factor
+
this
.
offset_y
,
window
.
innerHeight
,
o
.
pos
.
y
*
this
.
zoom_factor
+
this
.
offset_y
-
window
.
innerHeight
/
2
);
window
.
innerHeight
,
o
.
pos
.
y
*
this
.
zoom_factor
+
this
.
offset_y
-
window
.
innerHeight
/
2
);
window
.
scrollTo
(
o
.
pos
.
x
*
this
.
zoom_factor
+
this
.
offset_x
-
window
.
innerWidth
/
2
,
o
.
pos
.
y
*
this
.
zoom_factor
+
this
.
offset_y
-
window
.
innerHeight
/
2
+
this
.
gdraw
.
offset_top
);
window
.
innerWidth
/
2
,
o
.
pos
.
y
*
this
.
zoom_factor
+
this
.
offset_y
-
window
.
innerHeight
/
2
+
this
.
gdraw
.
offset_top
);
}
}
class
FlowFrame
{
ctx
:
FlowCtx
;
timer
:
number
;
vars_object
:
string
;
timer
:
number
=
null
;
vars_object
:
string
=
null
;
constructor
()
{
this
.
ctx
=
new
FlowCtx
();
this
.
timer
=
null
;
console
.
log
(
"
ctx:
"
,
this
.
ctx
);
this
.
vars_object
=
null
;
}
readFlowWeb
(
fname
,
read_cb
)
{
...
...
@@ -1976,44 +1878,39 @@ class FlowFrame {
this
.
ctx
.
event_handler
(
x
,
y
);
});
document
.
getElementById
(
"
toolitem1
"
)
.
addEventListener
(
"
click
"
,
function
(
event
)
{
console
.
log
(
"
toolitem3 event
"
);
});
.
addEventListener
(
"
click
"
,
function
(
event
)
{
console
.
log
(
"
toolitem3 event
"
);
});
document
.
getElementById
(
"
toolitem2
"
)
.
addEventListener
(
"
click
"
,
function
(
event
)
{
console
.
log
(
"
toolitem1 event, storage
"
);
console
.
log
(
"
storage
"
,
localStorage
.
getItem
(
"
XttMethodNavigator
"
));
if
(
this
.
ctx
.
select_object
!==
null
)
{
localStorage
.
setItem
(
"
XttMethodNavigator
"
,
this
.
ctx
.
select_object
.
trace_object
);
}
console
.
log
(
"
storage
"
,
localStorage
.
getItem
(
"
XttMethodNavigator
"
));
console
.
log
(
"
toolitem2 event window
"
,
window
.
opener
);
window
.
opener
.
focus
();
});
.
addEventListener
(
"
click
"
,
function
(
event
)
{
console
.
log
(
"
toolitem1 event, storage
"
);
console
.
log
(
"
storage
"
,
localStorage
.
getItem
(
"
XttMethodNavigator
"
));
if
(
this
.
ctx
.
select_object
!==
null
)
{
localStorage
.
setItem
(
"
XttMethodNavigator
"
,
this
.
ctx
.
select_object
.
trace_object
);
}
console
.
log
(
"
storage
"
,
localStorage
.
getItem
(
"
XttMethodNavigator
"
));
console
.
log
(
"
toolitem2 event window
"
,
window
.
opener
);
window
.
opener
.
focus
();
});
document
.
getElementById
(
"
toolitem3
"
)
.
addEventListener
(
"
click
"
,
function
(
event
)
{
});
.
addEventListener
(
"
click
"
,
function
(
event
)
{
});
document
.
getElementById
(
"
toolitem4
"
)
.
addEventListener
(
"
click
"
,
function
(
event
)
{
});
.
addEventListener
(
"
click
"
,
function
(
event
)
{
});
this
.
ctx
.
gdraw
.
canvas
.
width
=
(
this
.
ctx
.
x_right
-
this
.
ctx
.
x_left
)
*
this
.
ctx
.
zoom_factor
;
(
this
.
ctx
.
x_right
-
this
.
ctx
.
x_left
)
*
this
.
ctx
.
zoom_factor
;
this
.
ctx
.
gdraw
.
canvas
.
height
=
(
this
.
ctx
.
y_high
-
this
.
ctx
.
y_low
)
*
this
.
ctx
.
zoom_factor
;
(
this
.
ctx
.
y_high
-
this
.
ctx
.
y_low
)
*
this
.
ctx
.
zoom_factor
;
this
.
ctx
.
gdraw
.
gctx
.
translate
(
-
this
.
ctx
.
x_left
*
this
.
ctx
.
zoom_factor
,
-
this
.
ctx
.
y_low
*
this
.
ctx
.
zoom_factor
);
this
.
ctx
.
zoom_factor
,
-
this
.
ctx
.
y_low
*
this
.
ctx
.
zoom_factor
);
this
.
ctx
.
offset_x
-=
this
.
ctx
.
x_left
*
this
.
ctx
.
zoom_factor
;
this
.
ctx
.
offset_y
-=
this
.
ctx
.
y_low
*
this
.
ctx
.
zoom_factor
;
this
.
ctx
.
draw
();
console
.
log
(
"
New Gdh
"
);
this
.
ctx
.
gdh
=
new
Gdh
();
this
.
ctx
.
gdh
.
open_cb
=
this
.
flow_open
;
this
.
ctx
.
gdh
.
close_cb
=
this
.
flow_close
;
console
.
log
(
"
ctx.gdh
"
,
this
.
ctx
.
gdh
);
this
.
ctx
.
gdh
.
init
();
this
.
ctx
.
gdh
=
new
Gdh
(
this
.
flow_open
,
this
.
flow_close
);
if
(
this
.
vars_object
!==
null
)
{
let
o
=
this
.
ctx
.
search_object
(
this
.
vars_object
);
...
...
@@ -2057,7 +1954,7 @@ class FlowFrame {
console
.
log
(
"
query
"
,
query
);
let
vars
=
query
.
split
(
'
&
'
);
console
.
log
(
"
vars
"
,
vars
.
length
,
vars
[
0
].
substring
(
4
),
vars
[
1
].
substring
(
4
));
vars
[
1
].
substring
(
4
));
let
vid
=
parseInt
(
vars
[
0
].
substring
(
4
));
let
oix
=
parseInt
(
vars
[
1
].
substring
(
4
));
let
avid
=
[];
...
...
@@ -2082,7 +1979,7 @@ class FlowFrame {
}
let
fname
=
"
pwr_
"
+
svid
[
3
]
+
"
_
"
+
svid
[
2
]
+
"
_
"
+
svid
[
1
]
+
"
_
"
+
svid
[
0
]
+
"
_
"
+
soix
+
"
.flw
"
;
svid
[
0
]
+
"
_
"
+
soix
+
"
.flw
"
;
console
.
log
(
fname
);
if
(
vars
.
length
>
2
)
{
...
...
java/jsw/ge/src/ge.html
View file @
867fdfb6
<!DOCTYPE html>
<html>
<head>
<title>
Ge graph
</title>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"toolbar.css"
>
</head>
<head>
<title>
Ge graph
</title>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"toolbar.css"
>
</head>
<body>
<canvas
id=
"flowcanvas"
width=
"1200"
height=
"800"
></canvas>
<script
src=
"https://unpkg.com/@babel/standalone/babel.min.js"
></script>
<script
type=
"text/babel"
src=
"pwr.js"
></script>
<script
type=
"text/babel"
src=
"cli.js"
></script>
<script
type=
"text/babel"
src=
"gdh.js"
></script>
<body>
<canvas
id=
"flowcanvas"
width=
"1200"
height=
"800"
></canvas>
<script
src=
"https://unpkg.com/@babel/standalone/babel.min.js"
></script>
<script
type=
"text/babel"
src=
"pwr.js"
></script>
<script
type=
"text/babel"
src=
"cli.js"
></script>
<script
type=
"text/babel"
src=
"gdh.js"
></script>
<script
type=
"text/babel"
src=
"glow.ts"
></script>
<script
type=
"text/babel"
src=
"glow_point.ts"
></script>
<script
type=
"text/babel"
src=
"glow_color.ts"
></script>
<script
type=
"text/babel"
src=
"glow_array.ts"
></script>
<script
type=
"text/babel"
src=
"glow_transform.ts"
></script>
<script
type=
"text/babel"
src=
"glow_nodeclass.ts"
></script>
<script
type=
"text/babel"
src=
"glow_nodegroup.ts"
></script>
<script
type=
"text/babel"
src=
"glow_conclass.ts"
></script>
<script
type=
"text/babel"
src=
"glow_con.ts"
></script>
<script
type=
"text/babel"
src=
"glow_line.ts"
></script>
<script
type=
"text/babel"
src=
"glow_arc.ts"
></script>
<script
type=
"text/babel"
src=
"glow_rect.ts"
></script>
<script
type=
"text/babel"
src=
"glow_text.ts"
></script>
<script
type=
"text/babel"
src=
"glow_conpoint.ts"
></script>
<script
type=
"text/babel"
src=
"glow_draw.ts"
></script>
<script
type=
"text/babel"
src=
"glow_cformat.ts"
></script>
<script
type=
"text/babel"
src=
"glow.ts"
></script>
<script
type=
"text/babel"
src=
"glow_point.ts"
></script>
<script
type=
"text/babel"
src=
"glow_color.ts"
></script>
<script
type=
"text/babel"
src=
"glow_array.ts"
></script>
<script
type=
"text/babel"
src=
"glow_transform.ts"
></script>
<script
type=
"text/babel"
src=
"glow_nodeclass.ts"
></script>
<script
type=
"text/babel"
src=
"glow_nodegroup.ts"
></script>
<script
type=
"text/babel"
src=
"glow_conclass.ts"
></script>
<script
type=
"text/babel"
src=
"glow_con.ts"
></script>
<script
type=
"text/babel"
src=
"glow_line.ts"
></script>
<script
type=
"text/babel"
src=
"glow_arc.ts"
></script>
<script
type=
"text/babel"
src=
"glow_rect.ts"
></script>
<script
type=
"text/babel"
src=
"glow_text.ts"
></script>
<script
type=
"text/babel"
src=
"glow_conpoint.ts"
></script>
<script
type=
"text/babel"
src=
"glow_draw.ts"
></script>
<script
type=
"text/babel"
src=
"glow_cformat.ts"
></script>
<script
type=
"text/babel"
src=
"grow_node.ts"
></script>
<script
type=
"text/babel"
src=
"grow_group.ts"
></script>
<script
type=
"text/babel"
src=
"grow_slider.ts"
></script>
<script
type=
"text/babel"
src=
"grow_toolbar.ts"
></script>
<script
type=
"text/babel"
src=
"grow_rect.ts"
></script>
<script
type=
"text/babel"
src=
"grow_rectrounded.ts"
></script>
<script
type=
"text/babel"
src=
"grow_line.ts"
></script>
<script
type=
"text/babel"
src=
"grow_arc.ts"
></script>
<script
type=
"text/babel"
src=
"grow_text.ts"
></script>
<script
type=
"text/babel"
src=
"grow_annot.ts"
></script>
<script
type=
"text/babel"
src=
"grow_polyline.ts"
></script>
<script
type=
"text/babel"
src=
"grow_conpoint.ts"
></script>
<script
type=
"text/babel"
src=
"grow_image.ts"
></script>
<script
type=
"text/babel"
src=
"grow_conglue.ts"
></script>
<script
type=
"text/babel"
src=
"grow_bar.ts"
></script>
<script
type=
"text/babel"
src=
"grow_bararc.ts"
></script>
<script
type=
"text/babel"
src=
"grow_trend.ts"
></script>
<script
type=
"text/babel"
src=
"grow_xycurve.ts"
></script>
<script
type=
"text/babel"
src=
"grow_menu.ts"
></script>
<script
type=
"text/babel"
src=
"grow_scrollbar.ts"
></script>
<script
type=
"text/babel"
src=
"grow_window.ts"
></script>
<script
type=
"text/babel"
src=
"grow_folder.ts"
></script>
<script
type=
"text/babel"
src=
"grow_axis.ts"
></script>
<script
type=
"text/babel"
src=
"grow_axisarc.ts"
></script>
<script
type=
"text/babel"
src=
"grow_pie.ts"
></script>
<script
type=
"text/babel"
src=
"grow_barchart.ts"
></script>
<script
type=
"text/babel"
src=
"grow_table.ts"
></script>
<script
type=
"text/babel"
src=
"grow_ctx.ts"
></script>
<script
type=
"text/babel"
src=
"grow_frame.ts"
></script>
<script
type=
"text/babel"
src=
"grow_node.ts"
></script>
<script
type=
"text/babel"
src=
"grow_group.ts"
></script>
<script
type=
"text/babel"
src=
"grow_slider.ts"
></script>
<script
type=
"text/babel"
src=
"grow_toolbar.ts"
></script>
<script
type=
"text/babel"
src=
"grow_rect.ts"
></script>
<script
type=
"text/babel"
src=
"grow_rectrounded.ts"
></script>
<script
type=
"text/babel"
src=
"grow_line.ts"
></script>
<script
type=
"text/babel"
src=
"grow_arc.ts"
></script>
<script
type=
"text/babel"
src=
"grow_text.ts"
></script>
<script
type=
"text/babel"
src=
"grow_annot.ts"
></script>
<script
type=
"text/babel"
src=
"grow_polyline.ts"
></script>
<script
type=
"text/babel"
src=
"grow_conpoint.ts"
></script>
<script
type=
"text/babel"
src=
"grow_image.ts"
></script>
<script
type=
"text/babel"
src=
"grow_conglue.ts"
></script>
<script
type=
"text/babel"
src=
"grow_bar.ts"
></script>
<script
type=
"text/babel"
src=
"grow_bararc.ts"
></script>
<script
type=
"text/babel"
src=
"grow_trend.ts"
></script>
<script
type=
"text/babel"
src=
"grow_xycurve.ts"
></script>
<script
type=
"text/babel"
src=
"grow_menu.ts"
></script>
<script
type=
"text/babel"
src=
"grow_scrollbar.ts"
></script>
<script
type=
"text/babel"
src=
"grow_window.ts"
></script>
<script
type=
"text/babel"
src=
"grow_folder.ts"
></script>
<script
type=
"text/babel"
src=
"grow_axis.ts"
></script>
<script
type=
"text/babel"
src=
"grow_axisarc.ts"
></script>
<script
type=
"text/babel"
src=
"grow_pie.ts"
></script>
<script
type=
"text/babel"
src=
"grow_barchart.ts"
></script>
<script
type=
"text/babel"
src=
"grow_table.ts"
></script>
<script
type=
"text/babel"
src=
"grow_ctx.ts"
></script>
<script
type=
"text/babel"
src=
"grow_frame.ts"
></script>
<script
type=
"text/babel"
src=
"ge.ts"
></script>
<script
type=
"text/babel"
src=
"ge_dyn.ts"
></script>
<script
type=
"text/babel"
src=
"ge_graph.ts"
></script>
<script
type=
"text/babel"
src=
"ge_appl.ts"
></script>
<hr>
<address><a
href=
"mailto:claes@debian86.ssab.com"
></a></address>
</body>
<script
type=
"text/babel"
src=
"ge.ts"
></script>
<script
type=
"text/babel"
src=
"ge_dyn.ts"
></script>
<script
type=
"text/babel"
src=
"ge_graph.ts"
></script>
<script
type=
"text/babel"
src=
"ge_appl.ts"
></script>
<hr>
<address><a
href=
"mailto:claes@debian86.ssab.com"
></a></address>
</body>
</html>
java/jsw/ge/src/ge_appl.ts
View file @
867fdfb6
...
...
@@ -14,6 +14,7 @@ let cliTable = [new CliTable("OPEN",
class
Appl
{
graph
:
Graph
;
constructor
()
{
this
.
graph
=
new
Graph
(
this
);
}
...
...
java/jsw/ge/src/ge_dyn.ts
View file @
867fdfb6
...
...
@@ -30,7 +30,7 @@ class Dyn {
resetColor
=
false
;
ignoreBgColor
=
false
;
resetBgColor
=
false
;
constructor
(
graph
)
{
this
.
graph
=
graph
;
}
...
...
@@ -106,7 +106,7 @@ class Dyn {
}
let
elem
=
null
;
switch
(
key
)
{
case
DynSave
.
Dyn
:
break
;
...
...
@@ -331,13 +331,13 @@ class Dyn {
console
.
log
(
"
Syntax error in Dyn
"
);
break
;
}
if
(
elem
!==
null
)
{
this
.
elements
.
push
(
elem
);
i
=
elem
.
open
(
lines
,
i
+
1
);
}
}
return
i
;
}
...
...
@@ -1026,7 +1026,7 @@ class DynDigLowColor extends DynElem {
if
(
this
.
dyn
.
debug
)
{
console
.
log
(
"
DynDigLowColor :
"
+
lines
[
i
]);
}
switch
(
key
)
{
case
DynSave
.
DigLowColor
:
break
;
...
...
@@ -1147,7 +1147,7 @@ class DynDigColor extends DynElem {
if
(
this
.
dyn
.
debug
)
{
console
.
log
(
"
DynDigColor :
"
+
lines
[
i
]);
}
switch
(
key
)
{
case
DynSave
.
DigColor
:
break
;
...
...
@@ -1172,7 +1172,7 @@ class DynDigColor extends DynElem {
break
;
}
}
return
i
;
}
}
...
...
@@ -1260,7 +1260,7 @@ class DynDigWarning extends DynElem {
if
(
this
.
dyn
.
debug
)
{
console
.
log
(
"
DynDigWarning :
"
+
lines
[
i
]);
}
switch
(
key
)
{
case
DynSave
.
DigWarning
:
break
;
...
...
@@ -1279,7 +1279,7 @@ class DynDigWarning extends DynElem {
break
;
}
}
return
i
;
}
}
...
...
@@ -1367,7 +1367,7 @@ class DynDigError extends DynElem {
if
(
this
.
dyn
.
debug
)
{
console
.
log
(
"
DynDigError :
"
+
lines
[
i
]);
}
switch
(
key
)
{
case
DynSave
.
DigError
:
break
;
...
...
@@ -1386,7 +1386,7 @@ class DynDigError extends DynElem {
break
;
}
}
return
i
;
}
}
...
...
@@ -1495,7 +1495,7 @@ class DynDigFlash extends DynElem {
if
(
this
.
dyn
.
debug
)
{
console
.
log
(
"
DynDigError :
"
+
lines
[
i
]);
}
switch
(
key
)
{
case
DynSave
.
DigFlash
:
break
;
...
...
@@ -1626,7 +1626,7 @@ class DynInvisible extends DynElem {
if
(
this
.
dyn
.
debug
)
{
console
.
log
(
"
DynInvisible :
"
+
lines
[
i
]);
}
switch
(
key
)
{
case
DynSave
.
Invisible
:
break
;
...
...
@@ -1727,7 +1727,7 @@ class DynDigTextColor extends DynElem {
if
(
this
.
dyn
.
debug
)
{
console
.
log
(
"
DigTextColor :
"
+
lines
[
i
]);
}
switch
(
key
)
{
case
DynSave
.
DigTextColor
:
break
;
...
...
@@ -1823,7 +1823,7 @@ class DynDigText extends DynElem {
if
(
this
.
dyn
.
debug
)
{
console
.
log
(
"
DigText :
"
+
lines
[
i
]);
}
switch
(
key
)
{
case
DynSave
.
DigText
:
break
;
...
...
@@ -1850,7 +1850,7 @@ class DynDigText extends DynElem {
break
;
}
}
return
i
;
}
}
...
...
@@ -1919,7 +1919,7 @@ class DynDigBorder extends DynElem {
if
(
this
.
dyn
.
debug
)
{
console
.
log
(
"
DynBorder :
"
+
lines
[
i
]);
}
switch
(
key
)
{
case
DynSave
.
DigBorder
:
break
;
...
...
@@ -2190,7 +2190,7 @@ class DynValue extends DynElem {
if
(
this
.
dyn
.
debug
)
{
console
.
log
(
"
DynBorder :
"
+
lines
[
i
]);
}
switch
(
key
)
{
case
DynSave
.
Value
:
break
;
...
...
@@ -8319,6 +8319,7 @@ class DynInputFocus extends DynElem {
action
(
o
,
e
)
{
return
1
;
}
open
(
lines
,
row
)
{
let
i
;
for
(
i
=
row
;
i
<
lines
.
length
;
i
++
)
{
...
...
java/jsw/ge/src/ge_graph.ts
View file @
867fdfb6
...
...
@@ -27,9 +27,11 @@ class LocalSub {
ref
()
{
this
.
refCount
++
;
}
unref
()
{
this
.
refCount
--
;
}
getRefCount
()
{
return
this
.
refCount
;
}
...
...
@@ -235,6 +237,7 @@ class Graph {
priv
=
0
;
timer
:
number
;
frame
:
GrowFrame
;
constructor
(
appl
)
{
this
.
appl
=
appl
;
if
(
typeof
InstallTrigger
!==
'
undefined
'
)
{
...
...
@@ -268,9 +271,7 @@ class Graph {
this
.
ctx
.
traceConnect
();
this
.
trace_cyclic
();
}
else
{
this
.
gdh
=
new
Gdh
();
this
.
gdh
.
open_cb
=
this
.
gdh_init_cb
;
this
.
gdh
.
init
();
this
.
gdh
=
new
Gdh
(
this
.
gdh_init_cb
);
}
}
...
...
@@ -303,6 +304,7 @@ class Graph {
this
.
gdh
.
getRefObjectInfoAll
(
this
.
trace_scan
);
}
}
trace_scan
(
id
,
sts
)
{
this
.
scan_time
=
this
.
ctx
.
scantime
;
this
.
fast_scan_time
=
this
.
ctx
.
fast_scantime
;
...
...
@@ -713,9 +715,11 @@ class Graph {
getLdb
()
{
return
this
.
ldb
;
}
getGdh
()
{
return
this
.
gdh
;
}
isAuthorized
(
access
)
{
return
!!
(
this
.
priv
&
access
);
// return appl.isAuthorized( access);
...
...
@@ -769,11 +773,13 @@ class Graph {
this
.
ctxPush
();
}
}
traceDisconnect
(
o
)
{
if
(
o
.
userdata
!==
null
)
{
o
.
userdata
.
disconnect
(
o
);
}
}
traceScan
(
o
)
{
if
(
o
.
userdata
!==
null
)
{
let
dyn
=
o
.
userdata
;
...
...
java/jsw/opwind/src/crypt.ts
View file @
867fdfb6
...
...
@@ -288,8 +288,8 @@ class JopCrypt {
c
=
results
[
1
];
d
=
(((
d
&
0x000000ff
)
<<
16
)
|
(
d
&
0x0000ff00
)
|
((
d
&
0x00ff0000
)
>>>
16
)
|
((
c
&
0xf0000000
)
>>>
4
));
(((
d
&
0x000000ff
)
<<
16
)
|
(
d
&
0x0000ff00
)
|
((
d
&
0x00ff0000
)
>>>
16
)
|
((
c
&
0xf0000000
)
>>>
4
));
c
&=
0x0fffffff
;
let
s
,
t
;
...
...
@@ -311,7 +311,7 @@ class JopCrypt {
JopCrypt
.
skb
[
1
][((
c
>>>
6
)
&
0x03
)
|
((
c
>>>
7
)
&
0x3c
)]
|
JopCrypt
.
skb
[
2
][((
c
>>>
13
)
&
0x0f
)
|
((
c
>>>
14
)
&
0x30
)]
|
JopCrypt
.
skb
[
3
][((
c
>>>
20
)
&
0x01
)
|
((
c
>>>
21
)
&
0x06
)
|
((
c
>>>
22
)
&
0x38
)];
((
c
>>>
22
)
&
0x38
)];
t
=
JopCrypt
.
skb
[
4
][(
d
)
&
0x3f
]
|
JopCrypt
.
skb
[
5
][((
d
>>>
7
)
&
0x03
)
|
((
d
>>>
8
)
&
0x3c
)]
|
...
...
@@ -448,8 +448,8 @@ class JopCrypt {
u
=
0x80
;
}
buffer
=
buffer
.
substring
(
0
,
i
)
+
String
.
fromCharCode
(
JopCrypt
.
cov_2char
[
c
])
+
buffer
.
substring
(
i
+
1
,
buffer
.
length
);
buffer
.
substring
(
0
,
i
)
+
String
.
fromCharCode
(
JopCrypt
.
cov_2char
[
c
])
+
buffer
.
substring
(
i
+
1
,
buffer
.
length
);
}
}
return
buffer
;
...
...
java/jsw/opwind/src/opwind.html
View file @
867fdfb6
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>
Operator window
</title>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"toolbar.css"
>
<style>
.menu
{
float
:
left
;
width
:
20%
;
height
:
100%
;
}
.main
{
float
:
left
;
width
:
79%
;
height
:
100%
;
}
</style>
</head>
<head>
<title>
Operator window
</title>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"toolbar.css"
>
<style>
.menu
{
float
:
left
;
width
:
20%
;
height
:
100%
;
}
<body>
<iframe
class=
"menu"
src=
"opwind_menu.html"
></iframe>
<iframe
class=
"main"
src=
"xtt_help_index.html"
></iframe>
</body>
.main
{
float
:
left
;
width
:
79%
;
height
:
100%
;
}
</style>
</head>
<body>
<iframe
class=
"menu"
src=
"opwind_menu.html"
></iframe>
<iframe
class=
"main"
src=
"xtt_help_index.html"
></iframe>
</body>
</html>
java/jsw/opwind/src/opwind.ts
View file @
867fdfb6
"
use strict
"
;
class
OpWindMenu
{
priv
:
number
;
user
:
string
;
user_text
:
Text
;
priv
=
0
;
user
=
""
;
user_text
:
Text
=
null
;
host
:
string
;
gdh
:
Gdh
;
info
:
OpwindMenuInfo
;
constructor
()
{
this
.
priv
=
0
;
this
.
user
=
""
;
this
.
user_text
=
null
;
this
.
host
=
window
.
location
.
hostname
;
if
(
this
.
host
===
""
)
{
this
.
host
=
"
localhost
"
;
}
this
.
gdh
=
new
Gdh
();
this
.
gdh
.
open_cb
=
this
.
gdh_init_cb
;
this
.
gdh
.
init
();
this
.
gdh
=
new
Gdh
(
this
.
gdh_init_cb
);
}
is_authorized
(
access
)
{
...
...
@@ -46,7 +42,7 @@ class OpWindMenu {
button
.
type
=
"
button
"
;
button
.
className
=
"
leftmenu-button
"
;
button
.
value
=
text
;
button
.
addEventListener
(
'
click
'
,
function
()
{
button
.
addEventListener
(
'
click
'
,
function
()
{
menu
.
button_cb
(
button
.
value
);
});
context
.
appendChild
(
button
);
...
...
@@ -68,47 +64,47 @@ class OpWindMenu {
context
.
appendChild
(
document
.
createElement
(
"
hr
"
));
document
.
getElementById
(
"
login_button
"
)
.
addEventListener
(
"
click
"
,
function
(
event
)
{
if
(
document
.
getElementById
(
"
login_frame
"
).
style
.
visibility
===
'
hidden
'
)
{
document
.
getElementById
(
"
login_user
"
).
innerHTML
=
""
;
document
.
getElementById
(
"
login_passw
"
).
innerHTML
=
""
;
document
.
getElementById
(
"
login_frame
"
).
style
.
visibility
=
'
visible
'
;
document
.
getElementById
(
"
login_frame
"
).
style
.
height
=
'
120px
'
;
document
.
getElementById
(
"
login_user
"
).
focus
();
}
else
{
.
addEventListener
(
"
click
"
,
function
(
event
)
{
if
(
document
.
getElementById
(
"
login_frame
"
).
style
.
visibility
===
'
hidden
'
)
{
document
.
getElementById
(
"
login_user
"
).
innerHTML
=
""
;
document
.
getElementById
(
"
login_passw
"
).
innerHTML
=
""
;
document
.
getElementById
(
"
login_frame
"
).
style
.
visibility
=
'
visible
'
;
document
.
getElementById
(
"
login_frame
"
).
style
.
height
=
'
120px
'
;
document
.
getElementById
(
"
login_user
"
).
focus
();
}
else
{
document
.
getElementById
(
"
login_frame
"
).
style
.
visibility
=
'
hidden
'
;
document
.
getElementById
(
"
login_frame
"
).
style
.
height
=
'
0px
'
;
}
});
document
.
getElementById
(
"
apply_button
"
)
.
addEventListener
(
"
click
"
,
function
(
event
)
{
let
user
=
document
.
getElementById
(
"
login_user
"
).
innerHTML
;
let
passwd
=
document
.
getElementById
(
"
login_passw
"
).
innerHTML
;
if
(
user
.
trim
()
===
""
)
{
return
;
}
document
.
getElementById
(
"
login_frame
"
).
style
.
visibility
=
'
hidden
'
;
document
.
getElementById
(
"
login_frame
"
).
style
.
height
=
'
0px
'
;
}
});
document
.
getElementById
(
"
apply_button
"
)
.
addEventListener
(
"
click
"
,
function
(
event
)
{
let
user
=
document
.
getElementById
(
"
login_user
"
).
innerHTML
;
let
passwd
=
document
.
getElementById
(
"
login_passw
"
).
innerHTML
;
if
(
user
.
trim
()
===
""
)
{
return
;
}
document
.
getElementById
(
"
login_frame
"
).
style
.
visibility
=
'
hidden
'
;
document
.
getElementById
(
"
login_frame
"
).
style
.
height
=
'
0px
'
;
let
c
=
new
JopCrypt
();
passwd
=
c
.
crypt
(
"
aa
"
,
passwd
);
this
.
user
=
user
;
this
.
gdh
.
login
(
user
,
passwd
,
this
.
login_cb
,
this
);
});
let
c
=
new
JopCrypt
();
passwd
=
c
.
crypt
(
"
aa
"
,
passwd
);
this
.
user
=
user
;
this
.
gdh
.
login
(
user
,
passwd
,
this
.
login_cb
,
this
);
});
document
.
getElementById
(
"
cancel_button
"
)
.
addEventListener
(
"
click
"
,
function
(
event
)
{
document
.
getElementById
(
"
login_frame
"
).
style
.
visibility
=
'
hidden
'
;
document
.
getElementById
(
"
login_frame
"
).
style
.
height
=
'
0px
'
;
});
.
addEventListener
(
"
click
"
,
function
(
event
)
{
document
.
getElementById
(
"
login_frame
"
).
style
.
visibility
=
'
hidden
'
;
document
.
getElementById
(
"
login_frame
"
).
style
.
height
=
'
0px
'
;
});
document
.
getElementById
(
"
logout_button
"
)
.
addEventListener
(
"
click
"
,
function
(
event
)
{
document
.
getElementById
(
"
login_frame
"
).
style
.
visibility
=
'
hidden
'
;
document
.
getElementById
(
"
login_frame
"
).
style
.
height
=
'
0px
'
;
this
.
priv
=
0
;
this
.
user
=
"
Default
"
;
this
.
gdh
.
login
(
""
,
""
,
this
.
login_cb
,
this
);
});
.
addEventListener
(
"
click
"
,
function
(
event
)
{
document
.
getElementById
(
"
login_frame
"
).
style
.
visibility
=
'
hidden
'
;
document
.
getElementById
(
"
login_frame
"
).
style
.
height
=
'
0px
'
;
this
.
priv
=
0
;
this
.
user
=
"
Default
"
;
this
.
gdh
.
login
(
""
,
""
,
this
.
login_cb
,
this
);
});
document
.
getElementById
(
"
login_user
"
).
innerHTML
=
""
;
document
.
getElementById
(
"
login_passw
"
).
innerHTML
=
""
;
...
...
@@ -154,9 +150,9 @@ class OpWindMenu {
}
else
if
(
this
.
info
.
enable_alarmlist
&&
text
===
"
AlarmList
"
)
{
console
.
log
(
"
AlarmList activated
"
);
if
(
this
.
is_authorized
(
Access
.
RtRead
|
Access
.
RtWrite
|
Access
.
AllOperators
|
Access
.
System
|
Access
.
Maintenance
|
Access
.
Process
|
Access
.
Instrument
))
{
Access
.
AllOperators
|
Access
.
System
|
Access
.
Maintenance
|
Access
.
Process
|
Access
.
Instrument
))
{
window
.
open
(
"
ev.html?list=alarm
"
,
"
_blank
"
);
}
else
{
window
.
alert
(
"
Not authorized for this operation
"
);
...
...
@@ -164,9 +160,9 @@ class OpWindMenu {
}
else
if
(
this
.
info
.
enable_alarmlist
&&
text
===
"
EventList
"
)
{
console
.
log
(
"
EventList activated
"
);
if
(
this
.
is_authorized
(
Access
.
RtRead
|
Access
.
RtWrite
|
Access
.
AllOperators
|
Access
.
System
|
Access
.
Maintenance
|
Access
.
Process
|
Access
.
Instrument
))
{
Access
.
AllOperators
|
Access
.
System
|
Access
.
Maintenance
|
Access
.
Process
|
Access
.
Instrument
))
{
window
.
open
(
"
ev.html?list=event
"
,
"
_blank
"
);
}
else
{
window
.
alert
(
"
Not authorized for this operation
"
);
...
...
@@ -174,9 +170,9 @@ class OpWindMenu {
}
else
if
(
this
.
info
.
enable_eventlog
&&
text
===
"
EventLog
"
)
{
console
.
log
(
"
EventLog activated
"
);
if
(
this
.
is_authorized
(
Access
.
RtRead
|
Access
.
RtWrite
|
Access
.
AllOperators
|
Access
.
System
|
Access
.
Maintenance
|
Access
.
Process
|
Access
.
Instrument
))
{
Access
.
AllOperators
|
Access
.
System
|
Access
.
Maintenance
|
Access
.
Process
|
Access
.
Instrument
))
{
window
.
alert
(
"
Not yet implemented
"
);
}
else
{
window
.
alert
(
"
Not authorized for this operation
"
);
...
...
@@ -184,8 +180,8 @@ class OpWindMenu {
}
else
if
(
this
.
info
.
enable_navigator
&&
text
===
"
Navigator
"
)
{
console
.
log
(
"
Navigator activated
"
);
if
(
this
.
is_authorized
(
Access
.
RtNavigator
|
Access
.
System
|
Access
.
Maintenance
|
Access
.
Process
|
Access
.
Instrument
))
{
Access
.
Maintenance
|
Access
.
Process
|
Access
.
Instrument
))
{
window
.
open
(
"
xtt.html
"
,
"
_blank
"
);
}
else
{
window
.
alert
(
"
Not authorized for this operation
"
);
...
...
@@ -198,9 +194,9 @@ class OpWindMenu {
window
.
open
(
"
http://www.proview.se
"
,
"
_blank
"
);
}
else
{
if
(
this
.
is_authorized
(
Access
.
RtRead
|
Access
.
RtWrite
|
Access
.
AllOperators
|
Access
.
System
|
Access
.
Maintenance
|
Access
.
Process
|
Access
.
Instrument
))
{
Access
.
AllOperators
|
Access
.
System
|
Access
.
Maintenance
|
Access
.
Process
|
Access
.
Instrument
))
{
for
(
let
i
=
0
;
i
<
this
.
info
.
buttons
.
length
;
i
++
)
{
if
(
this
.
info
.
buttons
[
i
].
text
===
text
)
{
console
.
log
(
"
Found
"
,
this
.
info
.
buttons
[
i
].
text
);
...
...
java/jsw/opwind/src/opwind_menu.html
View file @
867fdfb6
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>
Operator Menu
</title>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"toolbar.css"
>
</head>
<head>
<title>
Operator Menu
</title>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"toolbar.css"
>
</head>
<body>
<div
id=
"opwindmenu"
width=
"120"
height=
"800"
>
<h1
id=
"opwind_title"
></h1>
<p
id=
"opwind_text"
></p>
<hr>
<button
id=
"login_button"
type=
"button"
class=
"leftmenu-button"
>
Login
</button>
<div
id=
"login_frame"
class=
"login-frame"
>
Username
<br>
<input
id=
"login_user"
name=
"username"
class=
"login-field"
/><br>
Password
<br>
<input
id=
"login_passw"
name=
"password"
type=
"password"
class=
"login-field"
/><br>
<button
id=
"apply_button"
type=
"button"
style=
"flex-grow:1"
>
Apply
</button>
<button
id=
"cancel_button"
type=
"button"
style=
"float:right"
>
Cancel
</button><br>
<button
id=
"logout_button"
type=
"button"
class=
"leftmenu-button"
>
Logout
</button>
</div>
</div>
<script
src=
"https://unpkg.com/@babel/standalone/babel.min.js"
></script>
<script
type=
"text/babel"
src=
"crypt.ts"
></script>
<script
type=
"text/babel"
src=
"pwr.js"
></script>
<script
type=
"text/babel"
src=
"gdh.js"
></script>
<script
type=
"text/babel"
src=
"opwind.ts"
></script>
<body>
<div
id=
"opwindmenu"
width=
"120"
height=
"800"
>
<h1
id=
"opwind_title"
></h1>
<p
id=
"opwind_text"
></p>
<hr>
<address><a
href=
"mailto:claes@debian86.ssab.com"
></a></address>
</body>
<button
id=
"login_button"
type=
"button"
class=
"leftmenu-button"
>
Login
</button>
<div
id=
"login_frame"
class=
"login-frame"
>
Username
<br>
<input
id=
"login_user"
name=
"username"
class=
"login-field"
/><br>
Password
<br>
<input
id=
"login_passw"
name=
"password"
type=
"password"
class=
"login-field"
/><br>
<button
id=
"apply_button"
type=
"button"
style=
"flex-grow:1"
>
Apply
</button>
<button
id=
"cancel_button"
type=
"button"
style=
"float:right"
>
Cancel
</button>
<br>
<button
id=
"logout_button"
type=
"button"
class=
"leftmenu-button"
>
Logout
</button>
</div>
</div>
<script
src=
"https://unpkg.com/@babel/standalone/babel.min.js"
></script>
<script
type=
"text/babel"
src=
"crypt.ts"
></script>
<script
type=
"text/babel"
src=
"pwr.js"
></script>
<script
type=
"text/babel"
src=
"gdh.js"
></script>
<script
type=
"text/babel"
src=
"opwind.ts"
></script>
<hr>
<address><a
href=
"mailto:claes@debian86.ssab.com"
></a></address>
</body>
</html>
java/jsw/xtt/src/xtt.html
View file @
867fdfb6
<!DOCTYPE html>
<html>
<head>
<title>
Xtt
</title>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"toolbar.css"
>
</head>
<head>
<title>
Xtt
</title>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"toolbar.css"
>
</head>
<body>
<div
class=
"toolbar"
role=
"toolbar"
>
<div
id=
"toolitem1"
tabindex=
"0"
class=
"toolbar-item"
role=
"button"
><img
src=
"toolbar_graph.png"
><img></div>
<div
id=
"toolitem2"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
><img
src=
"toolbar_objectgraph.png"
><img></div>
<div
id=
"toolitem3"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
><img
src=
"toolbar_plc.png"
><img></div>
<div
id=
"toolitem4"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
><img
src=
"toolbar_history.png"
><img></div>
<div
id=
"toolitem5"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
><img
src=
"toolbar_object.png"
><img></div>
<div
id=
"toolitem6"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
><img
src=
"toolbar_crossref.png"
><img></div>
<div
id=
"toolitem7"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
><img
src=
"toolbar_help.png"
><img></div>
<div
id=
"toolitem8"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
><img
src=
"toolbar_classhelp.png"
><img></div>
</div>
<canvas
id=
"flowcanvas"
width=
"1200"
height=
"800"
></canvas>
<script
src=
"https://unpkg.com/@babel/standalone/babel.min.js"
></script>
<script
type=
"text/babel"
src=
"pwr.js"
></script>
<script
type=
"text/babel"
src=
"cli.js"
></script>
<script
type=
"text/babel"
src=
"gdh.js"
></script>
<script
type=
"text/babel"
src=
"plow.js"
></script>
<script
type=
"text/babel"
src=
"xtt.ts"
></script>
<hr>
<address><a
href=
"mailto:claes@debian86.ssab.com"
></a></address>
</body>
<body>
<div
class=
"toolbar"
role=
"toolbar"
>
<div
id=
"toolitem1"
tabindex=
"0"
class=
"toolbar-item"
role=
"button"
>
<img
src=
"toolbar_graph.png"
/>
</div>
<div
id=
"toolitem2"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
>
<img
src=
"toolbar_objectgraph.png"
/>
</div>
<div
id=
"toolitem3"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
>
<img
src=
"toolbar_plc.png"
/>
</div>
<div
id=
"toolitem4"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
>
<img
src=
"toolbar_history.png"
/>
</div>
<div
id=
"toolitem5"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
>
<img
src=
"toolbar_object.png"
/>
</div>
<div
id=
"toolitem6"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
>
<img
src=
"toolbar_crossref.png"
/>
</div>
<div
id=
"toolitem7"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
>
<img
src=
"toolbar_help.png"
/>
</div>
<div
id=
"toolitem8"
tabindex=
"-1"
class=
"toolbar-item"
role=
"button"
>
<img
src=
"toolbar_classhelp.png"
/>
</div>
</div>
<canvas
id=
"flowcanvas"
width=
"1200"
height=
"800"
></canvas>
<script
src=
"https://unpkg.com/@babel/standalone/babel.min.js"
></script>
<script
type=
"text/babel"
src=
"pwr.js"
></script>
<script
type=
"text/babel"
src=
"cli.js"
></script>
<script
type=
"text/babel"
src=
"gdh.js"
></script>
<script
type=
"text/babel"
src=
"plow.js"
></script>
<script
type=
"text/babel"
src=
"xtt.ts"
></script>
<hr>
<address><a
href=
"mailto:claes@debian86.ssab.com"
></a></address>
</body>
</html>
java/jsw/xtt/src/xtt.ts
View file @
867fdfb6
...
...
@@ -3,6 +3,7 @@
class
XttOpenChildrenData
{
node
:
PlowNode
;
open_next
:
PlowNode
;
constructor
(
node
,
open_next
)
{
this
.
node
=
node
;
this
.
open_next
=
open_next
;
...
...
@@ -10,13 +11,13 @@ class XttOpenChildrenData {
}
class
Xtt
{
ncObject
:
PlowNodeClass
;
ncObject
:
PlowNodeClass
=
null
;
scan_update
:
boolean
;
priv
:
number
;
ctx
:
PlowCtx
;
timer
:
number
;
timer
=
null
;
constructor
()
{
this
.
ncObject
=
null
;
this
.
priv
=
Number
(
sessionStorage
.
getItem
(
"
pwr_privilege
"
));
console
.
log
(
"
pwr_privilege
"
,
this
.
priv
);
...
...
@@ -25,9 +26,7 @@ class Xtt {
this
.
ctx
.
event_cb
=
this
.
plow_event
;
this
.
createNodeClasses
();
this
.
ctx
.
gdh
=
new
Gdh
();
this
.
ctx
.
gdh
.
open_cb
=
this
.
gdh_init_cb
;
this
.
ctx
.
gdh
.
init
();
this
.
ctx
.
gdh
=
new
Gdh
(
this
.
gdh_init_cb
);
this
.
ctx
.
gdraw
.
canvas
.
addEventListener
(
"
click
"
,
function
(
event
)
{
let
y
=
event
.
pageY
-
this
.
ctx
.
gdraw
.
offset_top
;
...
...
@@ -73,84 +72,84 @@ class Xtt {
}
});
document
.
getElementById
(
"
toolitem1
"
)
.
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
);
}
console
.
log
(
"
toolitem1 event
"
);
});
.
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
);
}
console
.
log
(
"
toolitem1 event
"
);
});
document
.
getElementById
(
"
toolitem2
"
)
.
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
);
}
console
.
log
(
"
toolitem2 event
"
);
});
.
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
);
}
console
.
log
(
"
toolitem2 event
"
);
});
document
.
getElementById
(
"
toolitem3
"
)
.
addEventListener
(
"
click
"
,
function
(
event
)
{
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
);
}
else
if
(
o
.
userdata
instanceof
XttItemCrr
)
{
let
idx
=
o
.
userdata
.
name
.
lastIndexOf
(
'
-
'
);
let
ostring
=
""
;
if
(
idx
!==
-
1
)
{
ostring
=
"
&obj=
"
+
o
.
userdata
.
name
.
substring
(
idx
+
1
);
.
addEventListener
(
"
click
"
,
function
(
event
)
{
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
);
}
else
if
(
o
.
userdata
instanceof
XttItemCrr
)
{
let
idx
=
o
.
userdata
.
name
.
lastIndexOf
(
'
-
'
);
let
ostring
=
""
;
if
(
idx
!==
-
1
)
{
ostring
=
"
&obj=
"
+
o
.
userdata
.
name
.
substring
(
idx
+
1
);
}
console
.
log
(
"
flow.html?vid=
"
+
o
.
userdata
.
objid
.
vid
+
"
&oix=
"
+
o
.
userdata
.
objid
.
oix
+
ostring
);
window
.
open
(
"
flow.html?vid=
"
+
o
.
userdata
.
objid
.
vid
+
"
&oix=
"
+
o
.
userdata
.
objid
.
oix
+
ostring
);
}
console
.
log
(
"
flow.html?vid=
"
+
o
.
userdata
.
objid
.
vid
+
"
&oix=
"
+
o
.
userdata
.
objid
.
oix
+
ostring
);
window
.
open
(
"
flow.html?vid=
"
+
o
.
userdata
.
objid
.
vid
+
"
&oix=
"
+
o
.
userdata
.
objid
.
oix
+
ostring
);
}
console
.
log
(
"
toolitem3 event
"
);
});
console
.
log
(
"
toolitem3 event
"
);
});
document
.
getElementById
(
"
toolitem4
"
)
.
addEventListener
(
"
click
"
,
function
(
event
)
{
console
.
log
(
"
toolitem4 event
"
);
});
.
addEventListener
(
"
click
"
,
function
(
event
)
{
console
.
log
(
"
toolitem4 event
"
);
});
document
.
getElementById
(
"
toolitem5
"
)
.
addEventListener
(
"
click
"
,
function
(
event
)
{
console
.
log
(
"
toolitem5 event
"
);
let
o
=
this
.
ctx
.
get_select
();
if
(
o
===
null
)
{
return
;
}
let
item
=
o
.
userdata
;
item
.
open_attributes
(
this
);
});
.
addEventListener
(
"
click
"
,
function
(
event
)
{
console
.
log
(
"
toolitem5 event
"
);
let
o
=
this
.
ctx
.
get_select
();
if
(
o
===
null
)
{
return
;
}
let
item
=
o
.
userdata
;
item
.
open_attributes
(
this
);
});
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
);
console
.
log
(
"
toolitem6 event
"
);
});
.
addEventListener
(
"
click
"
,
function
(
event
)
{
let
o
=
this
.
ctx
.
get_select
();
this
.
ctx
.
gdh
.
crrSignal
(
o
.
userdata
.
objid
,
this
.
open_crr_cb
,
o
);
console
.
log
(
"
toolitem6 event
"
);
});
document
.
getElementById
(
"
toolitem7
"
)
.
addEventListener
(
"
click
"
,
function
(
event
)
{
console
.
log
(
"
toolitem7 event
"
);
});
.
addEventListener
(
"
click
"
,
function
(
event
)
{
console
.
log
(
"
toolitem7 event
"
);
});
document
.
getElementById
(
"
toolitem8
"
)
.
addEventListener
(
"
click
"
,
function
(
event
)
{
console
.
log
(
"
toolitem8 event
"
);
let
o
=
this
.
ctx
.
get_select
();
if
(
o
===
null
)
{
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
);
}
});
.
addEventListener
(
"
click
"
,
function
(
event
)
{
console
.
log
(
"
toolitem8 event
"
);
let
o
=
this
.
ctx
.
get_select
();
if
(
o
===
null
)
{
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
);
}
});
window
.
addEventListener
(
"
storage
"
,
function
(
event
)
{
if
(
event
.
newValue
===
""
)
{
...
...
@@ -172,7 +171,7 @@ class Xtt {
let
oid
=
new
PwrtObjid
(
0
,
0
);
this
.
ctx
.
gdh
.
getAllXttChildren
(
oid
,
this
.
open_children_cb
,
new
XttOpenChildrenData
(
null
,
null
));
new
XttOpenChildrenData
(
null
,
null
));
this
.
ctx
.
gdh
.
listSent
=
true
;
this
.
trace_cyclic
();
...
...
@@ -195,7 +194,7 @@ class Xtt {
new
XttItemObject
(
this
,
result
[
i
],
null
,
Dest
.
AFTER
);
}
else
{
result
[
i
].
full_name
=
data
.
node
.
userdata
.
full_name
+
"
-
"
+
result
[
i
].
name
;
data
.
node
.
userdata
.
full_name
+
"
-
"
+
result
[
i
].
name
;
new
XttItemObject
(
this
,
result
[
i
],
data
.
node
,
Dest
.
INTOLAST
);
}
}
...
...
@@ -291,10 +290,10 @@ class Xtt {
param1
=
"
&obj=
"
+
result
.
param1
;
}
console
.
log
(
"
flow.html?vid=
"
+
result
.
objid
.
vid
+
"
&oix=
"
+
result
.
objid
.
oix
+
param1
);
result
.
objid
.
oix
+
param1
);
data
.
location
.
href
=
"
flow.html?vid=
"
+
result
.
objid
.
vid
+
"
&oix=
"
+
result
.
objid
.
oix
+
param1
;
"
flow.html?vid=
"
+
result
.
objid
.
vid
+
"
&oix=
"
+
result
.
objid
.
oix
+
param1
;
data
.
document
.
title
=
"
Trace
"
+
result
.
fullname
;
}
}
...
...
@@ -304,7 +303,7 @@ class Xtt {
data
.
document
.
write
(
"
Error status
"
+
sts
);
}
else
{
data
.
location
.
href
=
"
ge.html?graph=
"
+
result
.
param1
+
"
&instance=
"
+
result
.
fullname
;
"
ge.html?graph=
"
+
result
.
param1
+
"
&instance=
"
+
result
.
fullname
;
data
.
document
.
title
=
result
.
fullname
;
}
}
...
...
@@ -341,7 +340,7 @@ class Xtt {
}
else
{
console
.
log
(
"
open_helpclass
"
,
result
.
param1
);
data
.
location
.
href
=
location
.
protocol
+
"
//
"
+
location
.
host
+
result
.
param1
;
location
.
protocol
+
"
//
"
+
location
.
host
+
result
.
param1
;
}
}
...
...
@@ -446,7 +445,7 @@ class Xtt {
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
.
open_plc_cb
,
newwindow
);
}
else
if
(
o
.
userdata
instanceof
XttItemCrr
)
{
let
idx
=
o
.
userdata
.
name
.
lastIndexOf
(
'
-
'
);
let
ostring
=
""
;
...
...
@@ -454,7 +453,7 @@ class Xtt {
ostring
=
"
&obj=
"
+
o
.
userdata
.
name
.
substring
(
idx
+
1
);
}
window
.
open
(
"
flow.html?vid=
"
+
o
.
userdata
.
objid
.
vid
+
"
&oix=
"
+
o
.
userdata
.
objid
.
oix
+
ostring
);
o
.
userdata
.
objid
.
oix
+
ostring
);
}
break
;
case
Event
.
Key_CtrlG
:
...
...
@@ -463,8 +462,8 @@ class Xtt {
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
);
GdhOp
.
GET_OP_METHOD_OBJECTGRAPH
,
this
.
open_objectgraph_cb
,
newwindow
);
}
break
;
default
:
...
...
@@ -474,13 +473,13 @@ class Xtt {
createNodeClasses
()
{
let
r1
=
new
PlowRect
(
this
.
ctx
,
0
,
0
,
50
,
1.0
,
Color
.
WHITE
,
Color
.
WHITE
,
true
,
false
);
Color
.
WHITE
,
true
,
false
);
let
a1
=
new
PlowAnnot
(
this
.
ctx
,
3
,
0.9
,
4
,
Color
.
BLACK
,
NEXT_RELATIVE_POSITION
,
0
);
NEXT_RELATIVE_POSITION
,
0
);
let
a11
=
new
PlowAnnot
(
this
.
ctx
,
7.5
,
0.9
,
4
,
Color
.
BLACK
,
RELATIVE_POSITION
,
1
);
RELATIVE_POSITION
,
1
);
let
a12
=
new
PlowAnnot
(
this
.
ctx
,
12
,
0.9
,
4
,
Color
.
BLACK
,
RELATIVE_POSITION
,
2
);
RELATIVE_POSITION
,
2
);
let
p1
=
new
PlowAnnotPixmap
(
this
.
ctx
,
0.4
,
0.2
,
0
);
this
.
ncObject
=
new
PlowNodeClass
(
this
.
ctx
);
...
...
@@ -572,7 +571,7 @@ class Xtt {
openValueInputDialog
(
item
,
text
)
{
console
.
log
(
"
priv acc
"
,
this
.
priv
,
Access
.
RtWrite
|
Access
.
System
);
Access
.
System
);
if
(
this
.
is_authorized
(
Access
.
RtWrite
|
Access
.
System
))
{
let
value
=
prompt
(
text
,
""
);
if
(
value
!==
null
)
{
...
...
@@ -591,6 +590,7 @@ class XttItemObject {
full_name
:
string
;
has_children
:
boolean
;
node
:
PlowNode
;
constructor
(
xtt
,
object_info
,
destination
,
destCode
)
{
this
.
objid
=
object_info
.
objid
;
this
.
cid
=
object_info
.
cid
;
...
...
@@ -618,7 +618,7 @@ class XttItemObject {
this
.
open_attributes
(
xtt
,
null
);
}
else
{
xtt
.
ctx
.
gdh
.
getAllXttChildren
(
this
.
objid
,
xtt
.
open_children_cb
,
new
XttOpenChildrenData
(
this
.
node
,
open_next
));
new
XttOpenChildrenData
(
this
.
node
,
open_next
));
this
.
node
.
node_open
|=
Open
.
CHILDREN
;
this
.
node
.
set_annotation_pixmap
(
0
,
Bitmaps
.
openmap
);
}
...
...
@@ -627,7 +627,7 @@ class XttItemObject {
open_attributes
(
xtt
,
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
));
xtt
.
open_attributes_cb
,
new
XttOpenChildrenData
(
this
.
node
,
open_next
));
this
.
node
.
node_open
|=
Open
.
ATTRIBUTES
;
xtt
.
ctx
.
configure
();
...
...
@@ -690,6 +690,7 @@ class XttItemAttr {
firstScan
:
boolean
;
old_value
:
number
;
node
:
PlowNode
;
constructor
(
xtt
,
info
,
destination
,
destCode
)
{
this
.
name
=
info
.
name
;
this
.
objid
=
info
.
objid
;
...
...
@@ -807,6 +808,7 @@ class XttItemAttrArray {
size
:
number
;
elements
:
number
;
node
:
PlowNode
;
constructor
(
xtt
,
info
,
destination
,
destCode
)
{
this
.
name
=
info
.
name
;
this
.
objid
=
info
.
objid
;
...
...
@@ -882,6 +884,7 @@ class XttItemAttrObject {
flags
:
number
;
size
:
number
;
node
:
PlowNode
;
constructor
(
xtt
,
info
,
destination
,
destCode
)
{
this
.
name
=
info
.
name
;
this
.
classname
=
info
.
classname
;
...
...
@@ -905,7 +908,7 @@ class XttItemAttrObject {
open_attributes
(
xtt
,
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
));
xtt
.
open_attributes_cb
,
new
XttOpenChildrenData
(
this
.
node
,
open_next
));
this
.
node
.
node_open
|=
Open
.
ATTRIBUTES
;
}
else
{
...
...
@@ -941,6 +944,7 @@ class XttItemCrr {
objid
:
PwrtObjid
;
type
:
number
;
node
:
PlowNode
;
constructor
(
xtt
,
info
,
destination
,
destCode
)
{
this
.
name
=
info
.
name
;
this
.
classname
=
info
.
classname
;
...
...
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