Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
V
vue-gojs
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
吴斌
vue-gojs
Commits
2913e9a5
Commit
2913e9a5
authored
Nov 06, 2023
by
吴斌
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update:自定义规则
parent
856382f9
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
120 additions
and
1 deletions
+120
-1
App.vue
src/App.vue
+0
-0
GOJSKit.ts
src/kit/GOJSKit.ts
+20
-1
ModelData.ts
src/kit/ModelData.ts
+0
-0
Analyse.ts
src/kit/core/Analyse.ts
+1
-0
Rule.ts
src/kit/rule/Rule.ts
+99
-0
No files found.
src/App.vue
View file @
2913e9a5
This diff is collapsed.
Click to expand it.
src/kit/GOJSKit.ts
View file @
2913e9a5
...
...
@@ -6,7 +6,6 @@ export var GO = go.GraphObject.make;
* 获取节点的所有连接,存储为一个Map。{key:{next:[], data:{}}}
*/
export
function
getMapData
(
myDiagram
:
any
)
{
let
model
=
myDiagram
.
model
let
nodeDataArray
=
model
.
nodeDataArray
let
linkDataArray
=
model
.
linkDataArray
...
...
@@ -26,6 +25,26 @@ export function getMapData(myDiagram:any) {
}
/**
* 不区分节点和连接
*/
export
function
getDeviceMapData
(
myDiagram
:
any
){
let
nodeDataArray
=
myDiagram
.
model
.
nodeDataArray
let
linkDataArray
=
myDiagram
.
model
.
linkDataArray
let
deviceMap
:
Record
<
any
,
any
>
=
{}
nodeDataArray
.
forEach
((
item
:
any
)
=>
{
deviceMap
[
item
.
key
]
=
item
})
linkDataArray
.
forEach
((
item
:
any
)
=>
{
let
from
=
item
.
from
?
deviceMap
[
item
.
from
][
'name'
]:
""
let
to
=
item
.
to
?
deviceMap
[
item
.
to
][
'name'
]:
""
item
.
name
=
from
+
" -> "
+
to
deviceMap
[
item
.
key
]
=
item
})
return
deviceMap
}
/**
* 获取所有选择的节点
* @param {go.Diagram} myDiagram
* @return [{},{}]
...
...
src/kit/ModelData.ts
View file @
2913e9a5
This diff is collapsed.
Click to expand it.
src/kit/core/Analyse.ts
View file @
2913e9a5
import
*
as
math
from
'mathjs'
/* DeviceType 类定义不同类型设备的常量。 */
export
class
DeviceType
{
static
CONTAINER
=
'container'
;
static
PUMP
=
'pump'
;
...
...
src/kit/rule/Rule.ts
0 → 100644
View file @
2913e9a5
import
{
uuid
}
from
"vue3-uuid"
;
import
{
diagramModelData
}
from
"../ModelData.ts"
;
export
const
rules
:
Record
<
string
,
any
>
[]
=
diagramModelData
[
'ruleData'
]
/**
* 添加规则
* @param name 规则名称
* @param inputs 输入参数 [{key:-1 ,valueKey:'thick',testData:""}] key表示节点在diagram中的唯一id,valueKey表示节点的属性key
* @param func 规则函数
*/
export
function
addRule
(
name
:
string
,
inputs
:
any
[],
func
:
Function
){
rules
.
push
({
id
:
uuid
.
v4
(),
name
:
name
,
inputs
:
inputs
,
func
:
func
,
enable
:
false
,
})
}
/**
* 更新规则
* @param id 规则id
* @param name 规则名称
* @param inputs 输入参数
* @param func 规则函数
*/
export
function
updateRule
(
id
:
string
,
name
:
string
,
inputs
:[],
func
:
Function
){
let
ruleIndex
=
rules
.
findIndex
((
item
:
any
)
=>
item
.
id
==
id
)
if
(
ruleIndex
!==
-
1
){
rules
[
ruleIndex
].
name
=
name
rules
[
ruleIndex
].
inputs
=
inputs
rules
[
ruleIndex
].
func
=
func
}
}
/**
* 删除规则
* @param id
*/
export
function
deleteRuleById
(
id
:
string
){
rules
.
splice
(
rules
.
findIndex
((
item
:
any
)
=>
item
.
id
==
id
),
1
)
}
/**
* 运行规则
* @param rule 规则
* @param deviceMap 设备数据
*/
export
function
runRule
(
rule
:
any
,
deviceMap
:
Record
<
string
,
any
>
){
let
inputData
=
[]
let
runFunc
=
null
if
(
rule
){
for
(
let
input
of
rule
.
inputs
){
inputData
.
push
(
deviceMap
[
input
.
key
][
input
.
valueKey
])
}
runFunc
=
new
Function
(
"return "
+
rule
.
func
)
try
{
runFunc
()(...
inputData
)
}
catch
(
e
){
alert
(
e
)
}
}
}
export
function
runAllEnableRule
(
deviceMap
:
Record
<
string
,
any
>
){
rules
.
forEach
((
item
:
any
)
=>
{
if
(
item
[
'enabled'
])
runRule
(
item
,
deviceMap
)
})
}
export
function
runRuleById
(
id
:
string
,
deviceMap
:
Record
<
string
,
any
>
){
let
rule
=
rules
.
find
((
item
:
any
)
=>
item
.
id
==
id
)
runRule
(
rule
,
deviceMap
)
}
export
function
testRule
(
rule
:
any
){
let
inputData
=
[]
let
runFunc
=
null
if
(
rule
){
for
(
let
input
of
rule
.
inputs
){
inputData
.
push
(
input
[
'testData'
])
}
runFunc
=
new
Function
(
"return "
+
rule
.
func
)
try
{
runFunc
()(...
inputData
)
}
catch
(
e
){
alert
(
e
)
}
}
}
export
function
testRuleById
(
id
:
string
){
let
rule
=
rules
.
find
((
item
:
any
)
=>
item
.
id
==
id
)
testRule
(
rule
)
}
\ No newline at end of file
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