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
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
386 additions
and
66 deletions
+386
-66
App.vue
src/App.vue
+180
-65
GOJSKit.ts
src/kit/GOJSKit.ts
+20
-1
ModelData.ts
src/kit/ModelData.ts
+86
-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
...
...
@@ -34,8 +34,8 @@
<!-- placeholder="搜索图形"-->
<!-- :prefix-icon="Search"-->
<!-- />-->
<div
class=
"w-full"
:style=
"{height:
node
AreaHeight}"
>
<el-scrollbar
:max-height=
"
node
AreaHeight"
>
<div
class=
"w-full"
:style=
"{height:
panelScroll
AreaHeight}"
>
<el-scrollbar
:max-height=
"
panelScroll
AreaHeight"
>
<SourceNodeCollection></SourceNodeCollection>
</el-scrollbar>
</div>
...
...
@@ -89,14 +89,7 @@
>
<el-form>
<el-form-item
label=
"路线:"
>
{{spliceListMapWithKey(path, 'nodeName', '->')}}
</el-form-item>
<!-- <el-form-item label="权重">-->
<!-- <el-input v-model="value.weight"></el-input>-->
<!-- </el-form-item>-->
</el-form>
<!-- <div class="flex justify-center">-->
<!-- <el-checkbox @change="highlightPath(key)" v-model="value.highlight">高亮</el-checkbox>-->
<!-- <el-button type="primary">确定</el-button>-->
<!-- </div>-->
</el-collapse-item>
</el-collapse>
</el-scrollbar>
...
...
@@ -104,6 +97,34 @@
</div>
</div>
</el-tab-pane>
<el-tab-pane
label=
"规则"
>
<div
class=
"space-y-1 p-2 flex flex-col"
>
<el-button
icon=
"Plus"
type=
"primary"
@
click=
"showAddRuleDialog"
>
新建规则
</el-button>
<el-empty
description=
"暂无规则"
v-if=
"ruleList.length === 0"
></el-empty>
<el-scrollbar
:max-height=
"panelScrollAreaHeight"
>
<div
class=
"space-y-1 p-2 flex flex-col"
v-show=
"ruleList.length > 0"
v-for=
"rule in ruleList"
>
<div
class=
"flex-col rounded-lg bg-white p-4 shadow-[0_2px_10px_2px_rgba(0,0,0,0.1),0_10px_20px_-2px_rgba(0,0,0,0.08)] dark:bg-black"
>
<div
class=
"flex space-x-1"
>
<el-text
truncated
>
{{rule['name']}}
</el-text>
<div
class=
"flex-1"
></div>
<el-switch
v-model=
"rule['enable']"
></el-switch>
</div>
<el-text
class=
"text-xs text-gray-400"
v-if=
"rule['description']"
>
{{rule['description']}}
</el-text>
<el-divider
class=
"m-2"
></el-divider>
<div
class=
"flex space-x-1"
>
<el-button
text
type=
"success"
class=
"p-2"
@
click=
"runRuleWithTestData(rule['id'])"
>
<el-icon
size=
"20px"
>
<CaretRight/>
</el-icon>
</el-button>
<el-button
icon=
"edit"
text
class=
"p-2"
@
click=
"showEditRuleDialog(rule)"
></el-button>
<el-button
icon=
"delete"
text
class=
"p-2"
type=
"danger"
@
click=
"deleteRule(rule['id'])"
></el-button>
</div>
</div>
</div>
</el-scrollbar>
</div>
</el-tab-pane>
</el-tabs>
</div>
</div>
...
...
@@ -159,6 +180,52 @@
<el-button
type=
"primary"
@
click=
"confirmEditPort"
>
确定
</el-button>
</
template
>
</el-dialog>
<!-- 添加/修改规则弹窗-->
<el-dialog
v-model=
"ruleDialog.visible"
:title=
"ruleDialog.type === 'update'?'修改规则':'新建规则'"
class=
"w-[500px] h-[500px] flex-col"
>
<el-scrollbar
max-height=
"300px"
>
<el-form
v-model=
"ruleDialog.data"
>
<el-form-item
label=
"规则名称"
>
<el-input
v-model=
"ruleDialog.data.name"
></el-input>
</el-form-item>
<el-form-item
label=
"规则描述"
>
<el-input
v-model=
"ruleDialog.data.description"
></el-input>
</el-form-item>
<el-form-item
label=
"输入参数"
>
<div>
<el-button
type=
"primary"
@
click=
"addRuleParam"
>
添加参数
</el-button>
<div
v-for=
"(input,index) in ruleDialog.data.inputs"
class=
"flex mt-2 space-x-1"
>
<el-select
v-model=
"input['key']"
class=
"flex-1"
>
<el-option
v-for=
"device in deviceMap"
:key=
"device.key"
:label=
"device.name"
:value=
"device.key"
/>
</el-select>
<el-select
v-model=
"input['valueKey']"
class=
"flex-1"
>
<el-option
v-for=
"(_value,key) in deviceMap[input['key']]"
:key=
"key"
:label=
"key"
:value=
"key"
/>
</el-select>
<el-input
placeholder=
"测试数据"
v-model=
"input['testData']"
class=
"flex-1"
></el-input>
<el-button
icon=
"Delete"
type=
"danger"
@
click=
"deleteRuleParam(index)"
></el-button>
</div>
</div>
</el-form-item>
<el-form-item
label=
"规则函数"
>
<el-input
type=
"textarea"
v-model=
"ruleDialog.data.func"
></el-input>
</el-form-item>
</el-form>
</el-scrollbar>
<
template
#
footer
>
<div
class=
"flex justify-end"
>
<el-button
type=
"primary"
@
click=
"confirmAddRule"
>
{{
ruleDialog
.
type
===
'update'
?
"修改"
:
"添加"
}}
</el-button>
</div>
</
template
>
</el-dialog>
</div>
</template>
<
script
setup
lang=
"ts"
>
...
...
@@ -172,7 +239,7 @@ import {
findNodesAllWayBetween
,
highlightLink
,
cancelHighlightLink
,
spliceListMapWithKey
,
spliceListMapWithKey
,
getDeviceMapData
,
}
from
"./kit/GOJSKit.ts"
;
import
{
createRotatingTool
,
makeDiagramNodeTemplate
}
from
"./kit/NodeTemplateKit.ts"
;
import
{
GuidedDraggingTool
}
from
"./kit/extensions/GuidedDraggingTool.ts"
;
...
...
@@ -181,7 +248,7 @@ import {ArrowLink, FlowLink} from "./kit/LinkTemplateKit.ts";
import
{
Inspector
}
from
"./kit/extensions/DataInspector.ts"
;
import
{
uuid
}
from
"vue3-uuid"
;
import
{
SnapLinkReshapingTool
}
from
"./kit/extensions/SnapLinkReshapingTool.ts"
;
import
{
Edit
,
View
}
from
"@element-plus/icons-vue"
;
import
{
CaretRight
,
Edit
,
View
}
from
"@element-plus/icons-vue"
;
import
{
ElMessage
}
from
"element-plus"
;
import
{
DeviceType
,
...
...
@@ -191,6 +258,8 @@ import {
getExceedingDefectInfluenceCoefficient
,
getManagementSystemEvaluationCoefficient
}
from
"./kit/core/Analyse.ts"
;
import
{
addRule
,
deleteRuleById
,
rules
,
runAllEnableRule
,
testRuleById
,
updateRule
}
from
"./kit/rule/Rule"
;
import
{
diagramModelData
}
from
"./kit/ModelData.ts"
;
// 变量定义
// region
// 图表配置
...
...
@@ -249,14 +318,29 @@ const portTypeList =[
// 线路分析结果的名称
const
analyzePathsName
=
ref
<
Record
<
string
,
any
>
[][]
>
([])
// 显示规则库弹窗
const
ruleList
=
ref
<
Record
<
string
,
any
>
[]
>
([])
const
deviceMap
=
ref
<
Record
<
string
,
any
>>
({})
// const deviceParamsList = ref
<
any
[]
>
([])
const
ruleDialog
=
ref
<
Record
<
string
,
any
>>
({
visible
:
false
,
type
:
"add"
,
data
:{
name
:
""
,
inputs
:[],
func
:
""
,
}
})
// 源节点搜索
// let inputSearchNode = ref('')
// 用于计算
源区域的滚动条区域高度
let
node
AreaHeight
=
ref
()
// 用于计算
左右面板滚动区域高度,主要是为了自适应
let
panelScroll
AreaHeight
=
ref
()
// endregion
onMounted
(()
=>
{
get
NodeSource
ScrollAreaHeight
()
get
Panel
ScrollAreaHeight
()
initDiagram
()
listenDiagram
()
initInspector
()
...
...
@@ -283,63 +367,27 @@ function changeDiagramConfig(key:string, value:string){
// Toolbar 相关函数
// region
function
importData
(){
let
json
=
{
"class"
:
"GraphLinksModel"
,
"copiesArrays"
:
true
,
"copiesArrayObjects"
:
true
,
"linkFromPortIdProperty"
:
"fromPort"
,
"linkToPortIdProperty"
:
"toPort"
,
'linkKeyProperty'
:
"key"
,
"nodeDataArray"
:
[
{
"name"
:
"氨分离罐"
,
"nodeCollection"
:
"ammonia"
,
"img"
:
"src/assets/models/ammonia/氨分离罐.svg"
,
"category"
:
"svg"
,
"key"
:
-
1
,
"loc"
:
"-450 -400"
,
"size"
:
"100 209.94475138121547"
,
"portArray"
:[{
"name"
:
"端口1"
,
"portId"
:
"11c8ba71-e7cc-41ee-b7d3-cd2814e26f0f"
,
"alignment"
:
"0.7939024142622645 0.4946518480722313 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"1 0.5 0 0"
,
"toSpot"
:
"1 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口2"
,
"portId"
:
"256b782d-5870-4e05-94ff-34f130c5060e"
,
"alignment"
:
"0.5 0 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 0 0 0"
,
"toSpot"
:
"0.5 0 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口3"
,
"portId"
:
"dcd15cc2-ec1b-4a35-b861-377b6f75d0b9"
,
"alignment"
:
"0.5 1 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 1 0 0"
,
"toSpot"
:
"0.5 1 0 0"
}]},
{
"name"
:
"冷却器"
,
"nodeCollection"
:
"ammonia"
,
"img"
:
"src/assets/models/ammonia/冷却器.svg"
,
"category"
:
"svg"
,
"key"
:
-
5
,
"loc"
:
"-250 -330"
,
"size"
:
"97.77777777777777 40"
,
"portArray"
:[{
"name"
:
"端口1"
,
"portId"
:
"51b9d16b-8eea-4c4e-92a2-5bb9d99d294f"
,
"alignment"
:
"0 0.5 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0 0.5 0 0"
,
"toSpot"
:
"0 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口2"
,
"portId"
:
"a8e9572b-53fb-4791-a173-e272c28bc8af"
,
"alignment"
:
"1 0.5 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"1 0.5 0 0"
,
"toSpot"
:
"1 0.5 0 0"
,
"isHighlighted"
:
false
}]},
{
"name"
:
"压缩机"
,
"nodeCollection"
:
"ammonia"
,
"img"
:
"src/assets/models/ammonia/压缩机.svg"
,
"category"
:
"svg"
,
"key"
:
-
7
,
"loc"
:
"-457.5 -60"
,
"size"
:
"80 65.625"
,
"portArray"
:[{
"name"
:
"端口1"
,
"portId"
:
"55950fe5-ebe1-4d75-b6b4-30da5e97af17"
,
"alignment"
:
"0 0.5 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
"0"
,
"toMaxLinks"
:
"1"
,
"fromSpot"
:
"0 0.5 0 0"
,
"toSpot"
:
"0 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口2"
,
"portId"
:
"4226d10a-0eb2-4c7a-b839-287003f573ff"
,
"alignment"
:
"0.5200892857142833 0.09365079365079423 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 0 0 0"
,
"toSpot"
:
"0.5 0 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口3"
,
"portId"
:
"3f0de33c-e4c4-4187-b7bf-d8192b0708d9"
,
"alignment"
:
"1 0.5 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"1 0.5 0 0"
,
"toSpot"
:
"1 0.5 0 0"
,
"isHighlighted"
:
false
}]},
{
"name"
:
"冷却器-2"
,
"nodeCollection"
:
"ammonia"
,
"img"
:
"src/assets/models/ammonia/冷却器-2.svg"
,
"category"
:
"svg"
,
"key"
:
-
6
,
"loc"
:
"-263 -70.3125"
,
"size"
:
"100 40"
,
"portArray"
:[{
"name"
:
"端口1"
,
"portId"
:
"0be6a460-df3a-423f-be3d-b38a4adead36"
,
"alignment"
:
"0.11857314993877253 0 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 0 0 0"
,
"toSpot"
:
"0.5 0 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口2"
,
"portId"
:
"0d7b8599-993d-4474-9fb7-a1f1425cbe32"
,
"alignment"
:
"0.11857314993877253 1 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 1 0 0"
,
"toSpot"
:
"0.5 1 0 0"
}]},
{
"name"
:
"三头"
,
"nodeCollection"
:
"pipe"
,
"geometry"
:
"F1 M0 0 L60 0 60 20 50 20 Q40 20 40 30 L40 40 20 40 20 30 Q20 20 10 20 L0 20z"
,
"fill"
:
"rgba(128, 128, 128, 0.5)"
,
"category"
:
"geometry"
,
"portArray"
:[{
"name"
:
"端口1"
,
"portId"
:
"854f9c8e-0652-44aa-9705-95dc825ad577"
,
"alignment"
:
"0 0.25 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0 0.5 0 0"
,
"toSpot"
:
"0 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口2"
,
"portId"
:
"9c6c8565-d1f4-46fa-b67b-db673fd127aa"
,
"alignment"
:
"1 0.25 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"1 0.5 0 0"
,
"toSpot"
:
"1 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口3"
,
"portId"
:
"d88aaad3-7e10-47ab-81ec-0040f3c21cf7"
,
"alignment"
:
"0.5 1 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 1 0 0"
,
"toSpot"
:
"0.5 1 0 0"
,
"isHighlighted"
:
false
}],
"key"
:
-
2
,
"loc"
:
"-180 -200"
,
"angle"
:
180
},
{
"name"
:
"换热器"
,
"nodeCollection"
:
"ammonia"
,
"img"
:
"src/assets/models/ammonia/换热器.svg"
,
"category"
:
"svg"
,
"key"
:
-
3
,
"loc"
:
"20 -100"
,
"size"
:
"135.51724137931035 30.000000000000004"
,
"portArray"
:[{
"name"
:
"端口1"
,
"portId"
:
"e8cd7aef-9139-480c-ade2-1ef79cc4261d"
,
"alignment"
:
"0 0.47043270833333206 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0 0.5 0 0"
,
"toSpot"
:
"0 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口2"
,
"portId"
:
"fdc201ee-d40d-4d87-bd11-df445f3f976d"
,
"alignment"
:
"0.4984260146753545 0 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 0 0 0"
,
"toSpot"
:
"0.5 0 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口3"
,
"portId"
:
"17fac662-e52f-43de-8c27-d24452d9ed2a"
,
"alignment"
:
"1 0.4299158333333329 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"1 0.5 0 0"
,
"toSpot"
:
"1 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口4"
,
"portId"
:
"2b860c7b-eafc-49b2-90ba-d32d007a2e7b"
,
"alignment"
:
"0.4984260146753545 1 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 1 0 0"
,
"toSpot"
:
"0.5 1 0 0"
}]},
{
"name"
:
"换热器"
,
"nodeCollection"
:
"ammonia"
,
"img"
:
"src/assets/models/ammonia/换热器.svg"
,
"category"
:
"svg"
,
"key"
:
-
8
,
"loc"
:
"20 10"
,
"size"
:
"135.51724137931035 30.000000000000004"
,
"portArray"
:[{
"name"
:
"端口2"
,
"portId"
:
"fdc201ee-d40d-4d87-bd11-df445f3f976d"
,
"alignment"
:
"0.5 0 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 0 0 0"
,
"toSpot"
:
"0.5 0 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口3"
,
"portId"
:
"17fac662-e52f-43de-8c27-d24452d9ed2a"
,
"alignment"
:
"1 0.5301687499999994 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"1 0.5 0 0"
,
"toSpot"
:
"1 0.5 0 0"
,
"isHighlighted"
:
false
}]},
{
"name"
:
"冷却器"
,
"nodeCollection"
:
"ammonia"
,
"img"
:
"src/assets/models/ammonia/冷却器.svg"
,
"category"
:
"svg"
,
"key"
:
-
9
,
"loc"
:
"250 100"
,
"portArray"
:[{
"name"
:
"端口1"
,
"portId"
:
"d5501d1f-5fa8-4d71-8a77-37c64482de72"
,
"alignment"
:
"0.5 0 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 0 0 0"
,
"toSpot"
:
"0.5 0 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口2"
,
"portId"
:
"d17eb676-1f01-43f1-b658-b16fde8e4159"
,
"alignment"
:
"0 0.5 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0 0.5 0 0"
,
"toSpot"
:
"0 0.5 0 0"
},{
"name"
:
"端口3"
,
"portId"
:
"96dee2d1-babb-4b4d-b5cb-0bafad3131d9"
,
"alignment"
:
"0.5 1 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
"1"
,
"toMaxLinks"
:
"0"
,
"fromSpot"
:
"0.5 1 0 0"
,
"toSpot"
:
"0.5 1 0 0"
,
"isHighlighted"
:
false
}]},
{
"name"
:
"冷却器-2"
,
"nodeCollection"
:
"ammonia"
,
"img"
:
"src/assets/models/ammonia/冷却器-2.svg"
,
"category"
:
"svg"
,
"key"
:
-
10
,
"loc"
:
"20 -400"
,
"portArray"
:[{
"name"
:
"端口1"
,
"portId"
:
"16d8e009-b1b1-45c2-a94f-1a90943ee090"
,
"alignment"
:
"1 0.5 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"1 0.5 0 0"
,
"toSpot"
:
"1 0.5 0 0"
},{
"name"
:
"端口2"
,
"portId"
:
"ba564564-2ac8-48da-a430-3af06ea4997d"
,
"alignment"
:
"0.5 0 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 0 0 0"
,
"toSpot"
:
"0.5 0 0 0"
}],
"angle"
:
90
},
{
"name"
:
"合成塔"
,
"nodeCollection"
:
"ammonia"
,
"img"
:
"src/assets/models/ammonia/合成塔.svg"
,
"category"
:
"svg"
,
"key"
:
-
11
,
"loc"
:
"220 -460"
,
"portArray"
:[{
"name"
:
"端口1"
,
"portId"
:
"415f271d-1dd7-415f-ab4f-d5a7221b095a"
,
"alignment"
:
"0.9735206395348852 0.9054140969669111 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"1 0.5 0 0"
,
"toSpot"
:
"1 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口2"
,
"portId"
:
"ab215031-702e-4d22-9663-8c4f631c19ed"
,
"alignment"
:
"0.8675171875000016 0.23956692325367507 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"1 0.5 0 0"
,
"toSpot"
:
"1 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口3"
,
"portId"
:
"ec58dcb4-39fb-400e-bb0e-018ecee51d56"
,
"alignment"
:
"0.5 0 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 0 0 0"
,
"toSpot"
:
"0.5 0 0 0"
,
"isHighlighted"
:
false
}]},
{
"name"
:
"开工炉"
,
"nodeCollection"
:
"ammonia"
,
"img"
:
"src/assets/models/ammonia/开工炉.svg"
,
"category"
:
"svg"
,
"key"
:
-
4
,
"loc"
:
"470 -441.25"
,
"portArray"
:[{
"name"
:
"端口1"
,
"portId"
:
"3a24769a-5f3a-49e6-953d-a5e1fce7e8be"
,
"alignment"
:
"0.5 1 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 1 0 0"
,
"toSpot"
:
"0.5 1 0 0"
},{
"name"
:
"端口2"
,
"portId"
:
"58c1fc66-36b0-4e21-af4f-85e52828ac76"
,
"alignment"
:
"0.19673376572327342 0.33276178892215375 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0 0.5 0 0"
,
"toSpot"
:
"0 0.5 0 0"
}]},
{
"name"
:
"三头"
,
"nodeCollection"
:
"pipe"
,
"geometry"
:
"F1 M0 0 L60 0 60 20 50 20 Q40 20 40 30 L40 40 20 40 20 30 Q20 20 10 20 L0 20z"
,
"fill"
:
"rgba(128, 128, 128, 0.5)"
,
"category"
:
"geometry"
,
"portArray"
:[{
"name"
:
"端口1"
,
"portId"
:
"854f9c8e-0652-44aa-9705-95dc825ad577"
,
"alignment"
:
"0 0.25 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0 0.5 0 0"
,
"toSpot"
:
"0 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口2"
,
"portId"
:
"9c6c8565-d1f4-46fa-b67b-db673fd127aa"
,
"alignment"
:
"1 0.25 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"1 0.5 0 0"
,
"toSpot"
:
"1 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口3"
,
"portId"
:
"d88aaad3-7e10-47ab-81ec-0040f3c21cf7"
,
"alignment"
:
"0.5 1 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 1 0 0"
,
"toSpot"
:
"0.5 1 0 0"
,
"isHighlighted"
:
false
}],
"key"
:
-
12
,
"loc"
:
"470 -114.5625"
,
"angle"
:
180
},
{
"name"
:
"三头"
,
"nodeCollection"
:
"pipe"
,
"geometry"
:
"F1 M0 0 L60 0 60 20 50 20 Q40 20 40 30 L40 40 20 40 20 30 Q20 20 10 20 L0 20z"
,
"fill"
:
"rgba(128, 128, 128, 0.5)"
,
"category"
:
"geometry"
,
"portArray"
:[{
"name"
:
"端口1"
,
"portId"
:
"854f9c8e-0652-44aa-9705-95dc825ad577"
,
"alignment"
:
"0 0.25 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0 0.5 0 0"
,
"toSpot"
:
"0 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口2"
,
"portId"
:
"9c6c8565-d1f4-46fa-b67b-db673fd127aa"
,
"alignment"
:
"1 0.25 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"1 0.5 0 0"
,
"toSpot"
:
"1 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口3"
,
"portId"
:
"d88aaad3-7e10-47ab-81ec-0040f3c21cf7"
,
"alignment"
:
"0.5 1 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 1 0 0"
,
"toSpot"
:
"0.5 1 0 0"
,
"isHighlighted"
:
false
}],
"key"
:
-
13
,
"loc"
:
"680 -240"
,
"angle"
:
90
},
{
"name"
:
"三头"
,
"nodeCollection"
:
"pipe"
,
"geometry"
:
"F1 M0 0 L60 0 60 20 50 20 Q40 20 40 30 L40 40 20 40 20 30 Q20 20 10 20 L0 20z"
,
"fill"
:
"rgba(128, 128, 128, 0.5)"
,
"category"
:
"geometry"
,
"portArray"
:[{
"name"
:
"端口1"
,
"portId"
:
"854f9c8e-0652-44aa-9705-95dc825ad577"
,
"alignment"
:
"0 0.25 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0 0.5 0 0"
,
"toSpot"
:
"0 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口2"
,
"portId"
:
"9c6c8565-d1f4-46fa-b67b-db673fd127aa"
,
"alignment"
:
"1 0.25 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"1 0.5 0 0"
,
"toSpot"
:
"1 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口3"
,
"portId"
:
"d88aaad3-7e10-47ab-81ec-0040f3c21cf7"
,
"alignment"
:
"0.5 1 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 1 0 0"
,
"toSpot"
:
"0.5 1 0 0"
,
"isHighlighted"
:
false
}],
"key"
:
-
15
,
"loc"
:
"357.5 -620"
,
"angle"
:
0
}
],
"linkDataArray"
:
[
{
"key"
:
-
1
,
"from"
:
-
5
,
"to"
:
-
1
,
"fromPort"
:
"51b9d16b-8eea-4c4e-92a2-5bb9d99d294f"
,
"toPort"
:
"11c8ba71-e7cc-41ee-b7d3-cd2814e26f0f"
,
"points"
:[
-
301.3888888888889
,
-
330
,
-
311.3888888888889
,
-
330
,
-
311.3888888888889
,
-
330
,
-
311.3888888888889
,
-
401.1228164268244
,
-
408.10975857377355
,
-
401.1228164268244
,
-
418.10975857377355
,
-
401.1228164268244
],
"category"
:
"Arrow"
,
'highlightColor'
:
'red'
,
'color'
:
'black'
},
{
"key"
:
-
2
,
"from"
:
-
1
,
"fromPort"
:
"256b782d-5870-4e05-94ff-34f130c5060e"
,
"toPort"
:
""
,
"points"
:[
-
450
,
-
507.47237569060775
,
-
450
,
-
517.4723756906078
,
-
450
,
-
547.6190476190478
,
-
519.0476190476192
,
-
547.6190476190478
,
-
588.0952380952383
,
-
547.6190476190478
,
-
598.0952380952383
,
-
547.6190476190478
],
"from_text"
:
""
,
"middle_text"
:
""
,
"to_text"
:
"燃料气"
,
"category"
:
"Arrow"
,
'highlightColor'
:
'red'
,
'color'
:
'black'
},
{
"key"
:
-
3
,
"from"
:
-
1
,
"fromPort"
:
"dcd15cc2-ec1b-4a35-b861-377b6f75d0b9"
,
"toPort"
:
""
,
"points"
:[
-
450
,
-
292.5276243093923
,
-
450
,
-
282.5276243093923
,
-
450
,
-
248.57142857142867
,
-
519.0476190476192
,
-
248.57142857142867
,
-
588.0952380952383
,
-
248.57142857142867
,
-
598.0952380952383
,
-
248.57142857142867
],
"from_text"
:
""
,
"middle_text"
:
""
,
"to_text"
:
"氨产品"
,
"category"
:
"Arrow"
,
'highlightColor'
:
'red'
,
'color'
:
'black'
},
{
"key"
:
-
4
,
"from"
:
-
7
,
"to"
:
-
6
,
"fromPort"
:
"3f0de33c-e4c4-4187-b7bf-d8192b0708d9"
,
"toPort"
:
"0be6a460-df3a-423f-be3d-b38a4adead36"
,
"points"
:[
-
415
,
-
60
,
-
405
,
-
60
,
-
370
,
-
60
,
-
370
,
-
102.8125
,
-
301.14268500612275
,
-
102.8125
,
-
301.14268500612275
,
-
92.8125
],
"category"
:
"Arrow"
,
'highlightColor'
:
'red'
,
'color'
:
'black'
},
{
"key"
:
-
5
,
"from"
:
-
2
,
"to"
:
-
5
,
"fromPort"
:
"d88aaad3-7e10-47ab-81ec-0040f3c21cf7"
,
"toPort"
:
"a8e9572b-53fb-4791-a173-e272c28bc8af"
,
"points"
:[
-
180
,
-
221.75
,
-
180
,
-
231.75
,
-
180
,
-
330
,
-
184.30555555555557
,
-
330
,
-
188.61111111111114
,
-
330
,
-
198.61111111111114
,
-
330
],
"category"
:
"Arrow"
,
'highlightColor'
:
'red'
,
'color'
:
'black'
},
{
"key"
:
-
6
,
"from"
:
-
2
,
"to"
:
-
7
,
"fromPort"
:
"9c6c8565-d1f4-46fa-b67b-db673fd127aa"
,
"toPort"
:
"4226d10a-0eb2-4c7a-b839-287003f573ff"
,
"points"
:[
-
213
,
-
188.5
,
-
223
,
-
188.5
,
-
455.89285714285734
,
-
188.5
,
-
455.89285714285734
,
-
143.83333333333331
,
-
455.89285714285734
,
-
99.16666666666663
,
-
455.89285714285734
,
-
89.16666666666663
],
"category"
:
"Arrow"
,
'highlightColor'
:
'red'
,
'color'
:
'black'
},
{
"key"
:
-
7
,
"to"
:
-
7
,
"fromPort"
:
""
,
"toPort"
:
"55950fe5-ebe1-4d75-b6b4-30da5e97af17"
,
"points"
:[
-
599.2109634992121
,
-
61.18966252420353
,
-
589.2109634992121
,
-
61.18966252420353
,
-
550
,
-
61.18966252420353
,
-
550
,
-
60
,
-
510
,
-
60
,
-
500
,
-
60
],
"from_text"
:
"原料气"
,
"middle_text"
:
""
,
"to_text"
:
""
,
"category"
:
"Arrow"
,
'highlightColor'
:
'red'
,
'color'
:
'black'
},
{
"key"
:
-
8
,
"from"
:
-
6
,
"to"
:
-
9
,
"fromPort"
:
"0d7b8599-993d-4474-9fb7-a1f1425cbe32"
,
"toPort"
:
"d17eb676-1f01-43f1-b658-b16fde8e4159"
,
"points"
:[
-
301.14268500612275
,
-
47.8125
,
-
301.14268500612275
,
-
37.8125
,
-
301.14268500612275
,
100
,
-
64.19634250306137
,
100
,
172.75
,
100
,
182.75
,
100
],
"category"
:
"Arrow"
,
'highlightColor'
:
'red'
,
'color'
:
'black'
},
{
"key"
:
-
9
,
"from"
:
-
9
,
"to"
:
-
8
,
"fromPort"
:
"d5501d1f-5fa8-4d71-8a77-37c64482de72"
,
"toPort"
:
"17fac662-e52f-43de-8c27-d24452d9ed2a"
,
"points"
:[
251.25
,
70.5
,
251.25
,
60.5
,
251.25
,
12.155062499999984
,
175.1293103448276
,
12.155062499999984
,
99.00862068965517
,
12.155062499999984
,
89.00862068965517
,
12.155062499999984
],
"category"
:
"Arrow"
,
'highlightColor'
:
'red'
,
'color'
:
'black'
},
{
"key"
:
-
10
,
"from"
:
-
9
,
"fromPort"
:
"96dee2d1-babb-4b4d-b5cb-0bafad3131d9"
,
"toPort"
:
""
,
"points"
:[
251.25
,
129.5
,
251.25
,
139.5
,
251.25
,
208.17973750000021
,
251.60979375000034
,
208.17973750000021
,
251.60979375000034
,
276.85947500000043
,
251.60979375000034
,
286.85947500000043
],
"category"
:
"Arrow"
,
'highlightColor'
:
'red'
,
'color'
:
'black'
},
{
"key"
:
-
11
,
"from"
:
-
3
,
"to"
:
-
2
,
"fromPort"
:
"e8cd7aef-9139-480c-ade2-1ef79cc4261d"
,
"toPort"
:
"854f9c8e-0652-44aa-9705-95dc825ad577"
,
"points"
:[
-
50.258620689655174
,
-
100.88701875000004
,
-
60.258620689655174
,
-
100.88701875000004
,
-
98.62931034482759
,
-
100.88701875000004
,
-
98.62931034482759
,
-
188.5
,
-
137
,
-
188.5
,
-
147
,
-
188.5
],
"category"
:
"Arrow"
,
'highlightColor'
:
'red'
,
'color'
:
'black'
},
{
"key"
:
-
12
,
"from"
:
-
8
,
"to"
:
-
3
,
"fromPort"
:
"fdc201ee-d40d-4d87-bd11-df445f3f976d"
,
"toPort"
:
"2b860c7b-eafc-49b2-90ba-d32d007a2e7b"
,
"points"
:[
18.75
,
-
6.25
,
18.75
,
-
16.25
,
18.75
,
-
44.375
,
19
,
-
44.375
,
19
,
-
72.5
,
19
,
-
82.5
],
"category"
:
"Arrow"
,
'highlightColor'
:
'red'
,
'color'
:
'black'
},
{
"key"
:
-
13
,
"from"
:
-
10
,
"to"
:
-
3
,
"fromPort"
:
"16d8e009-b1b1-45c2-a94f-1a90943ee090"
,
"toPort"
:
"fdc201ee-d40d-4d87-bd11-df445f3f976d"
,
"points"
:[
18.75
,
-
316.75
,
18.75
,
-
306.75
,
18.75
,
-
217.125
,
19.786697850832525
,
-
217.125
,
19.786697850832525
,
-
127.5
,
19.786697850832525
,
-
117.5
],
"category"
:
"Arrow"
,
'highlightColor'
:
'red'
,
'color'
:
'black'
},
{
"key"
:
-
14
,
"from"
:
-
3
,
"to"
:
-
12
,
"fromPort"
:
"17fac662-e52f-43de-8c27-d24452d9ed2a"
,
"toPort"
:
"9c6c8565-d1f4-46fa-b67b-db673fd127aa"
,
"points"
:[
90.25862068965517
,
-
102.10252500000001
,
100.25862068965517
,
-
102.10252500000001
,
263.62931034482756
,
-
102.10252500000001
,
263.62931034482756
,
-
103.0625
,
427
,
-
103.0625
,
437
,
-
103.0625
],
"category"
:
"Arrow"
,
'highlightColor'
:
'red'
,
'color'
:
'black'
},
{
"key"
:
-
15
,
"from"
:
-
12
,
"to"
:
-
4
,
"fromPort"
:
"d88aaad3-7e10-47ab-81ec-0040f3c21cf7"
,
"toPort"
:
"3a24769a-5f3a-49e6-953d-a5e1fce7e8be"
,
"points"
:[
470
,
-
136.3125
,
470
,
-
146.3125
,
470
,
-
204.65625
,
470
,
-
204.65625
,
470
,
-
263
,
470
,
-
273
],
"category"
:
"Arrow"
,
'highlightColor'
:
'red'
,
'color'
:
'black'
},
{
"key"
:
-
16
,
"from"
:
-
12
,
"to"
:
-
13
,
"fromPort"
:
"854f9c8e-0652-44aa-9705-95dc825ad577"
,
"toPort"
:
"9c6c8565-d1f4-46fa-b67b-db673fd127aa"
,
"points"
:[
503
,
-
103.0625
,
513
,
-
103.0625
,
691.5
,
-
103.0625
,
691.5
,
-
150.03125
,
691.5
,
-
197
,
691.5
,
-
207
],
"category"
:
"Arrow"
,
'highlightColor'
:
'red'
,
'color'
:
'black'
},
{
"key"
:
-
17
,
"from"
:
-
13
,
"to"
:
-
11
,
"fromPort"
:
"d88aaad3-7e10-47ab-81ec-0040f3c21cf7"
,
"toPort"
:
"415f271d-1dd7-415f-ab4f-d5a7221b095a"
,
"points"
:[
658.25
,
-
240
,
648.25
,
-
240
,
481.0977750000001
,
-
240
,
481.0977750000001
,
-
238.20473125000035
,
313.94555000000025
,
-
238.20473125000035
,
303.94555000000025
,
-
238.20473125000035
],
"category"
:
"Arrow"
,
'highlightColor'
:
'red'
,
'color'
:
'black'
},
{
"key"
:
-
18
,
"from"
:
-
4
,
"to"
:
-
15
,
"fromPort"
:
"58c1fc66-36b0-4e21-af4f-85e52828ac76"
,
"toPort"
:
"d88aaad3-7e10-47ab-81ec-0040f3c21cf7"
,
"points"
:[
419.2806687500005
,
-
498.35756250000065
,
409.2806687500005
,
-
498.35756250000065
,
412
,
-
498.35756250000065
,
412
,
-
498.35756250000065
,
357.5
,
-
498.35756250000065
,
357.5
,
-
588.25
,
357.5
,
-
598.25
],
"category"
:
"Arrow"
,
'highlightColor'
:
'red'
,
'color'
:
'black'
},
{
"key"
:
-
19
,
"from"
:
-
15
,
"to"
:
-
11
,
"fromPort"
:
"854f9c8e-0652-44aa-9705-95dc825ad577"
,
"toPort"
:
"ab215031-702e-4d22-9663-8c4f631c19ed"
,
"points"
:[
324.5
,
-
631.5
,
314.5
,
-
631.5
,
314.5
,
-
631.5
,
314.5
,
-
600
,
295
,
-
600
,
285
,
-
600
],
"category"
:
"Arrow"
,
'highlightColor'
:
'red'
,
'color'
:
'black'
},
{
"key"
:
-
20
,
"from"
:
-
13
,
"to"
:
-
15
,
"fromPort"
:
"854f9c8e-0652-44aa-9705-95dc825ad577"
,
"toPort"
:
"9c6c8565-d1f4-46fa-b67b-db673fd127aa"
,
"points"
:[
691.5
,
-
273
,
691.5
,
-
283
,
691.5
,
-
631.5
,
546
,
-
631.5
,
400.5
,
-
631.5
,
390.5
,
-
631.5
],
"category"
:
"Arrow"
,
'highlightColor'
:
'red'
,
'color'
:
'black'
},
{
"key"
:
-
21
,
"from"
:
-
11
,
"to"
:
-
10
,
"fromPort"
:
"ec58dcb4-39fb-400e-bb0e-018ecee51d56"
,
"toPort"
:
"ba564564-2ac8-48da-a430-3af06ea4997d"
,
"category"
:
"Arrow"
,
'highlightColor'
:
'red'
,
'color'
:
'black'
,
"points"
:[
220
,
-
733.25
,
220
,
-
743.25
,
92.125
,
-
743.25
,
92.125
,
-
401.25
,
58.25
,
-
401.25
,
48.25
,
-
401.25
]}
]}
let
json
=
diagramModelData
[
'diagramData'
]
myDiagram
.
model
=
go
.
Model
.
fromJson
(
json
)
getRuleList
()
changeDiagramConfig
(
'mode'
,
'readonly'
)
}
function
exportData
(){
console
.
log
(
myDiagram
.
model
.
toJson
())
let
diagramData
=
myDiagram
.
model
.
toJson
()
let
ruleData
=
ruleList
.
value
console
.
log
({
'diagramData'
:
JSON
.
parse
(
diagramData
),
'ruleData'
:
ruleData
})
}
function
saveData
(){
console
.
log
(
selectedNode
.
value
)
}
// endregion
// diagram 部分
...
...
@@ -429,7 +477,6 @@ function listenDiagram(){
selectedNode
.
value
=
null
selectedLink
.
value
=
null
let
currentSelected
=
myDiagram
.
selection
.
first
()
console
.
log
(
currentSelected
)
if
(
currentSelected
===
null
)
{
ifSelectNode
.
value
=
false
ifSelectLink
.
value
=
false
...
...
@@ -457,6 +504,9 @@ function listenDiagram(){
}
})
});
myDiagram
.
addModelChangedListener
(
function
(
e
:
any
){
if
(
e
.
isTransactionFinished
)
runAllEnableRule
(
getDeviceMapData
(
myDiagram
));
})
}
function
freshSelectionNode
(){
...
...
@@ -630,6 +680,7 @@ function changeDeviceData(){
let
model
=
myDiagram
.
model
let
nodeDataArray
=
myDiagram
.
model
.
nodeDataArray
let
linkDataArray
=
myDiagram
.
model
.
linkDataArray
myDiagram
.
startTransaction
(
'changeDeviceData'
)
nodeDataArray
.
forEach
((
item
:
any
)
=>
{
// model.set(item, "press", Math.floor(Math.random()*100))
// model.set(item, "thick", Math.random().toFixed(2))
...
...
@@ -665,7 +716,7 @@ function changeDeviceData(){
model
.
set
(
item
,
'failurePossibility'
,
deviceFailurePossibility
.
valueOf
())
}
)
myDiagram
.
commitTransaction
(
'changeDeviceData'
)
}
function
changeDataRealTime
(){
...
...
@@ -704,17 +755,81 @@ function analyzeData(){
}
//endregion
// 规则部分
//region
function
getRuleList
(){
ruleList
.
value
=
rules
triggerRef
(
ruleList
)
}
function
showAddRuleDialog
(){
ruleDialog
.
value
.
visible
=
true
ruleDialog
.
value
.
type
=
'add'
// 图表有修改,需要更新设备列表
deviceMap
.
value
=
getDeviceMapData
(
myDiagram
)
ruleDialog
.
value
.
data
=
{
name
:
""
,
inputs
:[],
func
:
""
,
}
}
function
showEditRuleDialog
(
ruleData
:
any
){
ruleDialog
.
value
.
visible
=
true
ruleDialog
.
value
.
type
=
'update'
ruleDialog
.
value
.
data
=
ruleData
}
function
addRuleParam
(){
ruleDialog
.
value
.
data
.
inputs
.
push
(
{
key
:
""
,
valueKey
:
""
,
testData
:
""
}
)
}
function
confirmAddRule
(){
let
ruleData
=
ruleDialog
.
value
.
data
console
.
log
(
ruleData
)
if
(
!
ruleData
.
name
)
{
ElMessage
.
error
(
'规则名称不能为空'
)
return
}
if
(
ruleDialog
.
value
.
type
===
'add'
){
addRule
(
ruleData
.
name
,
ruleData
.
inputs
,
ruleData
.
func
)
}
else
if
(
ruleDialog
.
value
.
type
===
'update'
){
updateRule
(
ruleData
.
id
,
ruleData
.
name
,
ruleData
.
inputs
,
ruleData
.
func
)
}
ruleDialog
.
value
.
visible
=
false
getRuleList
()
}
function
deleteRuleParam
(
index
:
number
){
ruleDialog
.
value
.
data
.
inputs
.
splice
(
index
,
1
)
}
function
runRuleWithTestData
(
id
:
string
){
testRuleById
(
id
)
}
function
deleteRule
(
id
:
string
){
deleteRuleById
(
id
)
getRuleList
()
}
//endregion
// 其他
// region
// 浏览器大小变化时
window
.
onresize
=
function
(){
get
NodeSource
ScrollAreaHeight
()
get
Panel
ScrollAreaHeight
()
}
// 为了在页面大小变化时,让节点区域的滚动条区域高度自适应
function
get
NodeSource
ScrollAreaHeight
(){
function
get
Panel
ScrollAreaHeight
(){
// 滚动区域高度为浏览器窗口高度 - 144px(固定的上方ToolBar + 本页面的输入框和最下方的按钮)
node
AreaHeight
.
value
=
window
.
innerHeight
-
144
+
'px'
panelScroll
AreaHeight
.
value
=
window
.
innerHeight
-
144
+
'px'
}
// endregion
</
script
>
...
...
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
...
...
@@ -69,3 +69,89 @@ export const SourceNodeModel = [
]
}
]
export
const
diagramModelData
=
{
diagramData
:{
"class"
:
"GraphLinksModel"
,
"copiesArrays"
:
true
,
"copiesArrayObjects"
:
true
,
"linkKeyProperty"
:
"key"
,
"linkFromPortIdProperty"
:
"fromPort"
,
"linkToPortIdProperty"
:
"toPort"
,
"nodeDataArray"
:
[
{
"name"
:
"氨分离罐"
,
"nodeCollection"
:
"ammonia"
,
"img"
:
"src/assets/models/ammonia/氨分离罐.svg"
,
"category"
:
"svg"
,
"key"
:
"2e1c41ef-f5bd-4365-a9b9-988e3f13b8e7"
,
"loc"
:
"-450 -399.99999999999994"
,
"size"
:
"100 209.94475138121547"
,
"portArray"
:[{
"name"
:
"端口1"
,
"portId"
:
"11c8ba71-e7cc-41ee-b7d3-cd2814e26f0f"
,
"alignment"
:
"0.7939024142622645 0.4946518480722313 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"1 0.5 0 0"
,
"toSpot"
:
"1 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口2"
,
"portId"
:
"256b782d-5870-4e05-94ff-34f130c5060e"
,
"alignment"
:
"0.5 0 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 0 0 0"
,
"toSpot"
:
"0.5 0 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口3"
,
"portId"
:
"dcd15cc2-ec1b-4a35-b861-377b6f75d0b9"
,
"alignment"
:
"0.5 1 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 1 0 0"
,
"toSpot"
:
"0.5 1 0 0"
}]},
{
"name"
:
"冷却器"
,
"nodeCollection"
:
"ammonia"
,
"img"
:
"src/assets/models/ammonia/冷却器.svg"
,
"category"
:
"svg"
,
"key"
:
"f78b6be4-4cc2-4812-96e1-aa065118398a"
,
"loc"
:
"-250 -330"
,
"size"
:
"97.77777777777777 40"
,
"portArray"
:[{
"name"
:
"端口1"
,
"portId"
:
"51b9d16b-8eea-4c4e-92a2-5bb9d99d294f"
,
"alignment"
:
"0 0.5 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0 0.5 0 0"
,
"toSpot"
:
"0 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口2"
,
"portId"
:
"a8e9572b-53fb-4791-a173-e272c28bc8af"
,
"alignment"
:
"1 0.5 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"1 0.5 0 0"
,
"toSpot"
:
"1 0.5 0 0"
,
"isHighlighted"
:
false
}]},
{
"name"
:
"压缩机"
,
"nodeCollection"
:
"ammonia"
,
"img"
:
"src/assets/models/ammonia/压缩机.svg"
,
"category"
:
"svg"
,
"key"
:
"c768e62d-251e-4eb6-bcd0-b80310bcca97"
,
"loc"
:
"-457.5 -60"
,
"size"
:
"80 65.625"
,
"portArray"
:[{
"name"
:
"端口1"
,
"portId"
:
"55950fe5-ebe1-4d75-b6b4-30da5e97af17"
,
"alignment"
:
"0 0.5 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
"0"
,
"toMaxLinks"
:
"1"
,
"fromSpot"
:
"0 0.5 0 0"
,
"toSpot"
:
"0 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口2"
,
"portId"
:
"4226d10a-0eb2-4c7a-b839-287003f573ff"
,
"alignment"
:
"0.5200892857142833 0.09365079365079423 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 0 0 0"
,
"toSpot"
:
"0.5 0 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口3"
,
"portId"
:
"3f0de33c-e4c4-4187-b7bf-d8192b0708d9"
,
"alignment"
:
"1 0.5 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"1 0.5 0 0"
,
"toSpot"
:
"1 0.5 0 0"
,
"isHighlighted"
:
false
}]},
{
"name"
:
"冷却器-2"
,
"nodeCollection"
:
"ammonia"
,
"img"
:
"src/assets/models/ammonia/冷却器-2.svg"
,
"category"
:
"svg"
,
"key"
:
"f188844a-ad0e-42bc-9112-6a1c3126bb81"
,
"loc"
:
"-263 -70.3125"
,
"size"
:
"100 40"
,
"portArray"
:[{
"name"
:
"端口1"
,
"portId"
:
"0be6a460-df3a-423f-be3d-b38a4adead36"
,
"alignment"
:
"0.11857314993877253 0 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 0 0 0"
,
"toSpot"
:
"0.5 0 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口2"
,
"portId"
:
"0d7b8599-993d-4474-9fb7-a1f1425cbe32"
,
"alignment"
:
"0.11857314993877253 1 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 1 0 0"
,
"toSpot"
:
"0.5 1 0 0"
}]},
{
"name"
:
"三头"
,
"nodeCollection"
:
"pipe"
,
"geometry"
:
"F1 M0 0 L60 0 60 20 50 20 Q40 20 40 30 L40 40 20 40 20 30 Q20 20 10 20 L0 20z"
,
"fill"
:
"rgba(128, 128, 128, 0.5)"
,
"category"
:
"geometry"
,
"portArray"
:[{
"name"
:
"端口1"
,
"portId"
:
"854f9c8e-0652-44aa-9705-95dc825ad577"
,
"alignment"
:
"0 0.25 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0 0.5 0 0"
,
"toSpot"
:
"0 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口2"
,
"portId"
:
"9c6c8565-d1f4-46fa-b67b-db673fd127aa"
,
"alignment"
:
"1 0.25 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"1 0.5 0 0"
,
"toSpot"
:
"1 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口3"
,
"portId"
:
"d88aaad3-7e10-47ab-81ec-0040f3c21cf7"
,
"alignment"
:
"0.5 1 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 1 0 0"
,
"toSpot"
:
"0.5 1 0 0"
,
"isHighlighted"
:
false
}],
"key"
:
"df1e7ada-0f3f-4d9e-a3f5-e20ff03674f5"
,
"loc"
:
"-180 -200"
,
"angle"
:
180
},
{
"name"
:
"换热器"
,
"nodeCollection"
:
"ammonia"
,
"img"
:
"src/assets/models/ammonia/换热器.svg"
,
"category"
:
"svg"
,
"key"
:
"989dd43f-e522-446a-9983-bb0652f82606"
,
"loc"
:
"20 -100"
,
"size"
:
"135.51724137931035 30.000000000000004"
,
"portArray"
:[{
"name"
:
"端口1"
,
"portId"
:
"e8cd7aef-9139-480c-ade2-1ef79cc4261d"
,
"alignment"
:
"0 0.47043270833333206 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0 0.5 0 0"
,
"toSpot"
:
"0 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口2"
,
"portId"
:
"fdc201ee-d40d-4d87-bd11-df445f3f976d"
,
"alignment"
:
"0.4984260146753545 0 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 0 0 0"
,
"toSpot"
:
"0.5 0 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口3"
,
"portId"
:
"17fac662-e52f-43de-8c27-d24452d9ed2a"
,
"alignment"
:
"1 0.4299158333333329 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"1 0.5 0 0"
,
"toSpot"
:
"1 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口4"
,
"portId"
:
"2b860c7b-eafc-49b2-90ba-d32d007a2e7b"
,
"alignment"
:
"0.4984260146753545 1 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 1 0 0"
,
"toSpot"
:
"0.5 1 0 0"
}]},
{
"name"
:
"换热器"
,
"nodeCollection"
:
"ammonia"
,
"img"
:
"src/assets/models/ammonia/换热器.svg"
,
"category"
:
"svg"
,
"key"
:
"140db11d-8c76-4b77-9513-d08927e9a898"
,
"loc"
:
"20 10"
,
"size"
:
"135.51724137931035 30.000000000000004"
,
"portArray"
:[{
"name"
:
"端口2"
,
"portId"
:
"fdc201ee-d40d-4d87-bd11-df445f3f976d"
,
"alignment"
:
"0.5 0 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 0 0 0"
,
"toSpot"
:
"0.5 0 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口3"
,
"portId"
:
"17fac662-e52f-43de-8c27-d24452d9ed2a"
,
"alignment"
:
"1 0.5301687499999994 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"1 0.5 0 0"
,
"toSpot"
:
"1 0.5 0 0"
,
"isHighlighted"
:
false
}]},
{
"name"
:
"冷却器"
,
"nodeCollection"
:
"ammonia"
,
"img"
:
"src/assets/models/ammonia/冷却器.svg"
,
"category"
:
"svg"
,
"key"
:
"518ecc34-5089-45b6-85fa-6347bcf6c3b0"
,
"loc"
:
"250 100"
,
"portArray"
:[{
"name"
:
"端口1"
,
"portId"
:
"d5501d1f-5fa8-4d71-8a77-37c64482de72"
,
"alignment"
:
"0.5 0 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 0 0 0"
,
"toSpot"
:
"0.5 0 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口2"
,
"portId"
:
"d17eb676-1f01-43f1-b658-b16fde8e4159"
,
"alignment"
:
"0 0.5 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0 0.5 0 0"
,
"toSpot"
:
"0 0.5 0 0"
},{
"name"
:
"端口3"
,
"portId"
:
"96dee2d1-babb-4b4d-b5cb-0bafad3131d9"
,
"alignment"
:
"0.5 1 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
"1"
,
"toMaxLinks"
:
"0"
,
"fromSpot"
:
"0.5 1 0 0"
,
"toSpot"
:
"0.5 1 0 0"
,
"isHighlighted"
:
false
}]},
{
"name"
:
"冷却器-2"
,
"nodeCollection"
:
"ammonia"
,
"img"
:
"src/assets/models/ammonia/冷却器-2.svg"
,
"category"
:
"svg"
,
"key"
:
"ebd9e84e-03cb-446c-8a01-45b0c72cd28b"
,
"loc"
:
"20 -400"
,
"portArray"
:[{
"name"
:
"端口1"
,
"portId"
:
"16d8e009-b1b1-45c2-a94f-1a90943ee090"
,
"alignment"
:
"1 0.5 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"1 0.5 0 0"
,
"toSpot"
:
"1 0.5 0 0"
},{
"name"
:
"端口2"
,
"portId"
:
"ba564564-2ac8-48da-a430-3af06ea4997d"
,
"alignment"
:
"0.5 0 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 0 0 0"
,
"toSpot"
:
"0.5 0 0 0"
}],
"angle"
:
90
},
{
"name"
:
"合成塔"
,
"nodeCollection"
:
"ammonia"
,
"img"
:
"src/assets/models/ammonia/合成塔.svg"
,
"category"
:
"svg"
,
"key"
:
"875e1fd3-4e77-4def-86cb-aba8b62285c4"
,
"loc"
:
"220 -460"
,
"portArray"
:[{
"name"
:
"端口1"
,
"portId"
:
"415f271d-1dd7-415f-ab4f-d5a7221b095a"
,
"alignment"
:
"0.9735206395348852 0.9054140969669111 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"1 0.5 0 0"
,
"toSpot"
:
"1 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口2"
,
"portId"
:
"ab215031-702e-4d22-9663-8c4f631c19ed"
,
"alignment"
:
"0.8675171875000016 0.23956692325367507 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"1 0.5 0 0"
,
"toSpot"
:
"1 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口3"
,
"portId"
:
"ec58dcb4-39fb-400e-bb0e-018ecee51d56"
,
"alignment"
:
"0.5 0 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 0 0 0"
,
"toSpot"
:
"0.5 0 0 0"
,
"isHighlighted"
:
false
}]},
{
"name"
:
"开工炉"
,
"nodeCollection"
:
"ammonia"
,
"img"
:
"src/assets/models/ammonia/开工炉.svg"
,
"category"
:
"svg"
,
"key"
:
"fe4eae7d-50ed-431d-a37a-3b21d6bc4d58"
,
"loc"
:
"470 -441.25"
,
"portArray"
:[{
"name"
:
"端口1"
,
"portId"
:
"3a24769a-5f3a-49e6-953d-a5e1fce7e8be"
,
"alignment"
:
"0.5 1 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 1 0 0"
,
"toSpot"
:
"0.5 1 0 0"
},{
"name"
:
"端口2"
,
"portId"
:
"58c1fc66-36b0-4e21-af4f-85e52828ac76"
,
"alignment"
:
"0.19673376572327342 0.33276178892215375 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0 0.5 0 0"
,
"toSpot"
:
"0 0.5 0 0"
}]},
{
"name"
:
"三头"
,
"nodeCollection"
:
"pipe"
,
"geometry"
:
"F1 M0 0 L60 0 60 20 50 20 Q40 20 40 30 L40 40 20 40 20 30 Q20 20 10 20 L0 20z"
,
"fill"
:
"rgba(128, 128, 128, 0.5)"
,
"category"
:
"geometry"
,
"portArray"
:[{
"name"
:
"端口1"
,
"portId"
:
"854f9c8e-0652-44aa-9705-95dc825ad577"
,
"alignment"
:
"0 0.25 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0 0.5 0 0"
,
"toSpot"
:
"0 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口2"
,
"portId"
:
"9c6c8565-d1f4-46fa-b67b-db673fd127aa"
,
"alignment"
:
"1 0.25 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"1 0.5 0 0"
,
"toSpot"
:
"1 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口3"
,
"portId"
:
"d88aaad3-7e10-47ab-81ec-0040f3c21cf7"
,
"alignment"
:
"0.5 1 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 1 0 0"
,
"toSpot"
:
"0.5 1 0 0"
,
"isHighlighted"
:
false
}],
"key"
:
"92578a96-c463-4233-a1c8-f2909365828d"
,
"loc"
:
"470 -114.5625"
,
"angle"
:
180
},
{
"name"
:
"三头"
,
"nodeCollection"
:
"pipe"
,
"geometry"
:
"F1 M0 0 L60 0 60 20 50 20 Q40 20 40 30 L40 40 20 40 20 30 Q20 20 10 20 L0 20z"
,
"fill"
:
"rgba(128, 128, 128, 0.5)"
,
"category"
:
"geometry"
,
"portArray"
:[{
"name"
:
"端口1"
,
"portId"
:
"854f9c8e-0652-44aa-9705-95dc825ad577"
,
"alignment"
:
"0 0.25 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0 0.5 0 0"
,
"toSpot"
:
"0 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口2"
,
"portId"
:
"9c6c8565-d1f4-46fa-b67b-db673fd127aa"
,
"alignment"
:
"1 0.25 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"1 0.5 0 0"
,
"toSpot"
:
"1 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口3"
,
"portId"
:
"d88aaad3-7e10-47ab-81ec-0040f3c21cf7"
,
"alignment"
:
"0.5 1 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 1 0 0"
,
"toSpot"
:
"0.5 1 0 0"
,
"isHighlighted"
:
false
}],
"key"
:
"0b219174-ad9c-4e57-bd52-a1b8981c4d05"
,
"loc"
:
"680 -240"
,
"angle"
:
90
},
{
"name"
:
"三头"
,
"nodeCollection"
:
"pipe"
,
"geometry"
:
"F1 M0 0 L60 0 60 20 50 20 Q40 20 40 30 L40 40 20 40 20 30 Q20 20 10 20 L0 20z"
,
"fill"
:
"rgba(128, 128, 128, 0.5)"
,
"category"
:
"geometry"
,
"portArray"
:[{
"name"
:
"端口1"
,
"portId"
:
"854f9c8e-0652-44aa-9705-95dc825ad577"
,
"alignment"
:
"0 0.25 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0 0.5 0 0"
,
"toSpot"
:
"0 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口2"
,
"portId"
:
"9c6c8565-d1f4-46fa-b67b-db673fd127aa"
,
"alignment"
:
"1 0.25 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"1 0.5 0 0"
,
"toSpot"
:
"1 0.5 0 0"
,
"isHighlighted"
:
false
},{
"name"
:
"端口3"
,
"portId"
:
"d88aaad3-7e10-47ab-81ec-0040f3c21cf7"
,
"alignment"
:
"0.5 1 0 0"
,
"fromLinkable"
:
true
,
"toLinkable"
:
true
,
"fromMaxLinks"
:
999
,
"toMaxLinks"
:
999
,
"fromSpot"
:
"0.5 1 0 0"
,
"toSpot"
:
"0.5 1 0 0"
,
"isHighlighted"
:
false
}],
"key"
:
"b3f1e722-12cc-47b0-a612-bf148b7e0844"
,
"loc"
:
"357.5 -620"
,
"angle"
:
0
}
],
"linkDataArray"
:
[
{
"key"
:
"4a76dc14-276a-4c31-8ed5-26bb673d163d"
,
"from"
:
"f78b6be4-4cc2-4812-96e1-aa065118398a"
,
"to"
:
"2e1c41ef-f5bd-4365-a9b9-988e3f13b8e7"
,
"fromPort"
:
"51b9d16b-8eea-4c4e-92a2-5bb9d99d294f"
,
"toPort"
:
"11c8ba71-e7cc-41ee-b7d3-cd2814e26f0f"
,
"points"
:[
-
301.3888888888889
,
-
330
,
-
311.3888888888889
,
-
330
,
-
311.3888888888889
,
-
330
,
-
311.3888888888889
,
-
401.1228164268244
,
-
408.10975857377355
,
-
401.1228164268244
,
-
418.10975857377355
,
-
401.1228164268244
],
"category"
:
"Arrow"
,
"highlightColor"
:
"red"
,
"color"
:
"black"
},
{
"key"
:
"c892d490-b8c6-4419-a119-890ade12e00e"
,
"from"
:
"2e1c41ef-f5bd-4365-a9b9-988e3f13b8e7"
,
"fromPort"
:
"256b782d-5870-4e05-94ff-34f130c5060e"
,
"toPort"
:
""
,
"points"
:[
-
450
,
-
507.47237569060775
,
-
450
,
-
517.4723756906078
,
-
450
,
-
547.6190476190478
,
-
588.0952380952383
,
-
547.6190476190478
,
-
588.0952380952383
,
-
547.6190476190478
,
-
598.0952380952383
,
-
547.6190476190478
],
"from_text"
:
""
,
"middle_text"
:
""
,
"to_text"
:
"燃料气"
,
"category"
:
"Arrow"
,
"highlightColor"
:
"red"
,
"color"
:
"black"
},
{
"key"
:
"bba68221-f36d-407b-8092-638688122a5d"
,
"from"
:
"2e1c41ef-f5bd-4365-a9b9-988e3f13b8e7"
,
"fromPort"
:
"dcd15cc2-ec1b-4a35-b861-377b6f75d0b9"
,
"toPort"
:
""
,
"points"
:[
-
450
,
-
292.5276243093923
,
-
450
,
-
282.5276243093923
,
-
450
,
-
248.57142857142867
,
-
588.0952380952383
,
-
248.57142857142867
,
-
588.0952380952383
,
-
248.57142857142867
,
-
598.0952380952383
,
-
248.57142857142867
],
"from_text"
:
""
,
"middle_text"
:
""
,
"to_text"
:
"氨产品"
,
"category"
:
"Arrow"
,
"highlightColor"
:
"red"
,
"color"
:
"black"
},
{
"key"
:
"fc015221-552a-4524-8dc7-67088046eaec"
,
"from"
:
"c768e62d-251e-4eb6-bcd0-b80310bcca97"
,
"to"
:
"f188844a-ad0e-42bc-9112-6a1c3126bb81"
,
"fromPort"
:
"3f0de33c-e4c4-4187-b7bf-d8192b0708d9"
,
"toPort"
:
"0be6a460-df3a-423f-be3d-b38a4adead36"
,
"points"
:[
-
415
,
-
60
,
-
405
,
-
60
,
-
370
,
-
60
,
-
370
,
-
102.8125
,
-
301.14268500612275
,
-
102.8125
,
-
301.14268500612275
,
-
92.8125
],
"category"
:
"Arrow"
,
"highlightColor"
:
"red"
,
"color"
:
"black"
},
{
"key"
:
"e905f3b0-480d-45b2-b922-f978995e3106"
,
"from"
:
"df1e7ada-0f3f-4d9e-a3f5-e20ff03674f5"
,
"to"
:
"f78b6be4-4cc2-4812-96e1-aa065118398a"
,
"fromPort"
:
"d88aaad3-7e10-47ab-81ec-0040f3c21cf7"
,
"toPort"
:
"a8e9572b-53fb-4791-a173-e272c28bc8af"
,
"points"
:[
-
180
,
-
221.75
,
-
180
,
-
231.75
,
-
180
,
-
330
,
-
188.61111111111114
,
-
330
,
-
188.61111111111114
,
-
330
,
-
198.61111111111114
,
-
330
],
"category"
:
"Arrow"
,
"highlightColor"
:
"red"
,
"color"
:
"black"
},
{
"key"
:
"83744eca-100d-4458-9406-1fb5efcd345e"
,
"to"
:
"c768e62d-251e-4eb6-bcd0-b80310bcca97"
,
"fromPort"
:
""
,
"toPort"
:
"55950fe5-ebe1-4d75-b6b4-30da5e97af17"
,
"points"
:[
-
603.1746031746034
,
-
58.95691609977325
,
-
593.1746031746034
,
-
58.95691609977325
,
-
560
,
-
58.95691609977325
,
-
560
,
-
60
,
-
510
,
-
60
,
-
500
,
-
60
],
"from_text"
:
"原料气"
,
"middle_text"
:
""
,
"to_text"
:
""
,
"category"
:
"Arrow"
,
"highlightColor"
:
"red"
,
"color"
:
"black"
,
"adjusting"
:
"End"
},
{
"key"
:
"fccb1002-adab-4624-9564-450c9168c82c"
,
"from"
:
"f188844a-ad0e-42bc-9112-6a1c3126bb81"
,
"to"
:
"518ecc34-5089-45b6-85fa-6347bcf6c3b0"
,
"fromPort"
:
"0d7b8599-993d-4474-9fb7-a1f1425cbe32"
,
"toPort"
:
"d17eb676-1f01-43f1-b658-b16fde8e4159"
,
"points"
:[
-
301.14268500612275
,
-
47.8125
,
-
301.14268500612275
,
-
37.8125
,
-
301.14268500612275
,
100
,
172.75
,
100
,
172.75
,
100
,
182.75
,
100
],
"category"
:
"Arrow"
,
"highlightColor"
:
"red"
,
"color"
:
"black"
},
{
"key"
:
"9dc2f55f-574d-49d8-8858-3b1a9d9f9cc3"
,
"from"
:
"518ecc34-5089-45b6-85fa-6347bcf6c3b0"
,
"to"
:
"140db11d-8c76-4b77-9513-d08927e9a898"
,
"fromPort"
:
"d5501d1f-5fa8-4d71-8a77-37c64482de72"
,
"toPort"
:
"17fac662-e52f-43de-8c27-d24452d9ed2a"
,
"points"
:[
251.25
,
70.5
,
251.25
,
60.5
,
251.25
,
12.155062499999984
,
99.00862068965517
,
12.155062499999984
,
99.00862068965517
,
12.155062499999984
,
89.00862068965517
,
12.155062499999984
],
"category"
:
"Arrow"
,
"highlightColor"
:
"red"
,
"color"
:
"black"
},
{
"key"
:
"4e31a0bc-34b4-4a85-99b6-b87322620410"
,
"from"
:
"518ecc34-5089-45b6-85fa-6347bcf6c3b0"
,
"fromPort"
:
"96dee2d1-babb-4b4d-b5cb-0bafad3131d9"
,
"toPort"
:
""
,
"points"
:[
251.25
,
129.5
,
251.25
,
139.5
,
251.25
,
208.17973750000021
,
251.60979375000034
,
208.17973750000021
,
251.60979375000034
,
276.85947500000043
,
251.60979375000034
,
286.85947500000043
],
"category"
:
"Arrow"
,
"highlightColor"
:
"red"
,
"color"
:
"black"
},
{
"key"
:
"a795b94a-93ab-4e59-b0c2-e6c33f9820b3"
,
"from"
:
"989dd43f-e522-446a-9983-bb0652f82606"
,
"to"
:
"df1e7ada-0f3f-4d9e-a3f5-e20ff03674f5"
,
"fromPort"
:
"e8cd7aef-9139-480c-ade2-1ef79cc4261d"
,
"toPort"
:
"854f9c8e-0652-44aa-9705-95dc825ad577"
,
"points"
:[
-
50.258620689655174
,
-
100.88701875000004
,
-
60.258620689655174
,
-
100.88701875000004
,
-
98.62931034482759
,
-
100.88701875000004
,
-
98.62931034482759
,
-
188.5
,
-
137
,
-
188.5
,
-
147
,
-
188.5
],
"category"
:
"Arrow"
,
"highlightColor"
:
"red"
,
"color"
:
"black"
},
{
"key"
:
"efe3745c-23b2-41b9-a08c-1a08ab23c0ef"
,
"from"
:
"140db11d-8c76-4b77-9513-d08927e9a898"
,
"to"
:
"989dd43f-e522-446a-9983-bb0652f82606"
,
"fromPort"
:
"fdc201ee-d40d-4d87-bd11-df445f3f976d"
,
"toPort"
:
"2b860c7b-eafc-49b2-90ba-d32d007a2e7b"
,
"points"
:[
18.75
,
-
6.25
,
18.75
,
-
16.25
,
18.75
,
-
44.375
,
19.786697850832525
,
-
44.375
,
19.786697850832525
,
-
72.5
,
19.786697850832525
,
-
82.5
],
"category"
:
"Arrow"
,
"highlightColor"
:
"red"
,
"color"
:
"black"
},
{
"key"
:
"97b97604-8d4b-400f-968f-bc872835548d"
,
"from"
:
"ebd9e84e-03cb-446c-8a01-45b0c72cd28b"
,
"to"
:
"989dd43f-e522-446a-9983-bb0652f82606"
,
"fromPort"
:
"16d8e009-b1b1-45c2-a94f-1a90943ee090"
,
"toPort"
:
"fdc201ee-d40d-4d87-bd11-df445f3f976d"
,
"points"
:[
18.75
,
-
316.75
,
18.75
,
-
306.75
,
18.75
,
-
217.125
,
19.786697850832525
,
-
217.125
,
19.786697850832525
,
-
127.5
,
19.786697850832525
,
-
117.5
],
"category"
:
"Arrow"
,
"highlightColor"
:
"red"
,
"color"
:
"black"
},
{
"key"
:
"da9b8c04-edfb-4def-823c-d073ae591a30"
,
"from"
:
"989dd43f-e522-446a-9983-bb0652f82606"
,
"to"
:
"92578a96-c463-4233-a1c8-f2909365828d"
,
"fromPort"
:
"17fac662-e52f-43de-8c27-d24452d9ed2a"
,
"toPort"
:
"9c6c8565-d1f4-46fa-b67b-db673fd127aa"
,
"points"
:[
90.25862068965517
,
-
102.10252500000001
,
100.25862068965517
,
-
102.10252500000001
,
263.62931034482756
,
-
102.10252500000001
,
263.62931034482756
,
-
103.0625
,
427
,
-
103.0625
,
437
,
-
103.0625
],
"category"
:
"Arrow"
,
"highlightColor"
:
"red"
,
"color"
:
"black"
},
{
"key"
:
"87fc47be-0a0f-454d-b81a-bbf94043927b"
,
"from"
:
"0b219174-ad9c-4e57-bd52-a1b8981c4d05"
,
"to"
:
"875e1fd3-4e77-4def-86cb-aba8b62285c4"
,
"fromPort"
:
"d88aaad3-7e10-47ab-81ec-0040f3c21cf7"
,
"toPort"
:
"415f271d-1dd7-415f-ab4f-d5a7221b095a"
,
"points"
:[
658.25
,
-
240
,
648.25
,
-
240
,
481.0977750000001
,
-
240
,
481.0977750000001
,
-
238.20473125000035
,
313.94555000000025
,
-
238.20473125000035
,
303.94555000000025
,
-
238.20473125000035
],
"category"
:
"Arrow"
,
"highlightColor"
:
"red"
,
"color"
:
"black"
},
{
"key"
:
"83ff62ba-92cf-41ce-86dc-8b626f6df1d0"
,
"from"
:
"fe4eae7d-50ed-431d-a37a-3b21d6bc4d58"
,
"to"
:
"b3f1e722-12cc-47b0-a612-bf148b7e0844"
,
"fromPort"
:
"58c1fc66-36b0-4e21-af4f-85e52828ac76"
,
"toPort"
:
"d88aaad3-7e10-47ab-81ec-0040f3c21cf7"
,
"points"
:[
419.2806687500005
,
-
498.35756250000065
,
409.2806687500005
,
-
498.35756250000065
,
412
,
-
498.35756250000065
,
412
,
-
498.35756250000065
,
357.5
,
-
498.35756250000065
,
357.5
,
-
588.25
,
357.5
,
-
598.25
],
"category"
:
"Arrow"
,
"highlightColor"
:
"red"
,
"color"
:
"black"
},
{
"key"
:
"b86e2225-a5b4-4678-9150-df63e61075b3"
,
"from"
:
"b3f1e722-12cc-47b0-a612-bf148b7e0844"
,
"to"
:
"875e1fd3-4e77-4def-86cb-aba8b62285c4"
,
"fromPort"
:
"854f9c8e-0652-44aa-9705-95dc825ad577"
,
"toPort"
:
"ab215031-702e-4d22-9663-8c4f631c19ed"
,
"points"
:[
324.5
,
-
631.5
,
314.5
,
-
631.5
,
314.5
,
-
631.5
,
314.5
,
-
600.4255937500008
,
295.7129562500003
,
-
600.4255937500008
,
285.7129562500003
,
-
600.4255937500008
],
"category"
:
"Arrow"
,
"highlightColor"
:
"red"
,
"color"
:
"black"
},
{
"key"
:
"9b61f83c-6340-4f5b-b290-49c0c1a92d1b"
,
"from"
:
"875e1fd3-4e77-4def-86cb-aba8b62285c4"
,
"to"
:
"ebd9e84e-03cb-446c-8a01-45b0c72cd28b"
,
"fromPort"
:
"ec58dcb4-39fb-400e-bb0e-018ecee51d56"
,
"toPort"
:
"ba564564-2ac8-48da-a430-3af06ea4997d"
,
"category"
:
"Arrow"
,
"highlightColor"
:
"red"
,
"color"
:
"black"
,
"points"
:[
220
,
-
733.25
,
220
,
-
743.25
,
92.125
,
-
743.25
,
92.125
,
-
401.25
,
58.25
,
-
401.25
,
48.25
,
-
401.25
]},
{
"from"
:
"df1e7ada-0f3f-4d9e-a3f5-e20ff03674f5"
,
"to"
:
"c768e62d-251e-4eb6-bcd0-b80310bcca97"
,
"fromPort"
:
"9c6c8565-d1f4-46fa-b67b-db673fd127aa"
,
"toPort"
:
"4226d10a-0eb2-4c7a-b839-287003f573ff"
,
"key"
:
-
21
,
"category"
:
"Arrow"
,
"highlight"
:
false
,
"highlightColor"
:
"red"
,
"color"
:
"black"
,
"points"
:[
-
213
,
-
188.5
,
-
223
,
-
188.5
,
-
455.89285714285734
,
-
188.5
,
-
455.89285714285734
,
-
143.83333333333331
,
-
455.89285714285734
,
-
99.16666666666663
,
-
455.89285714285734
,
-
89.16666666666663
]},
{
"from"
:
"92578a96-c463-4233-a1c8-f2909365828d"
,
"to"
:
"0b219174-ad9c-4e57-bd52-a1b8981c4d05"
,
"fromPort"
:
"854f9c8e-0652-44aa-9705-95dc825ad577"
,
"toPort"
:
"9c6c8565-d1f4-46fa-b67b-db673fd127aa"
,
"key"
:
-
22
,
"category"
:
"Arrow"
,
"highlight"
:
false
,
"highlightColor"
:
"red"
,
"color"
:
"black"
,
"points"
:[
503
,
-
103.0625
,
513
,
-
103.0625
,
691.5
,
-
103.0625
,
691.5
,
-
150.03125
,
691.5
,
-
197
,
691.5
,
-
207
]},
{
"from"
:
"0b219174-ad9c-4e57-bd52-a1b8981c4d05"
,
"to"
:
"b3f1e722-12cc-47b0-a612-bf148b7e0844"
,
"fromPort"
:
"854f9c8e-0652-44aa-9705-95dc825ad577"
,
"toPort"
:
"9c6c8565-d1f4-46fa-b67b-db673fd127aa"
,
"key"
:
-
23
,
"category"
:
"Arrow"
,
"highlight"
:
false
,
"highlightColor"
:
"red"
,
"color"
:
"black"
,
"points"
:[
691.5
,
-
273
,
691.5
,
-
283
,
691.5
,
-
631.5
,
546
,
-
631.5
,
400.5
,
-
631.5
,
390.5
,
-
631.5
]},
{
"from"
:
"92578a96-c463-4233-a1c8-f2909365828d"
,
"to"
:
"fe4eae7d-50ed-431d-a37a-3b21d6bc4d58"
,
"fromPort"
:
"d88aaad3-7e10-47ab-81ec-0040f3c21cf7"
,
"toPort"
:
"3a24769a-5f3a-49e6-953d-a5e1fce7e8be"
,
"key"
:
-
24
,
"category"
:
"Arrow"
,
"highlight"
:
false
,
"highlightColor"
:
"red"
,
"color"
:
"black"
,
"points"
:[
470
,
-
136.3125
,
470
,
-
146.3125
,
470
,
-
204.65625
,
470
,
-
204.65625
,
470
,
-
263
,
470
,
-
273
]}
]
},
ruleData
:[
{
id
:
"51b9d16b-8eea-4c4e-92a2-5bb9d99d298t"
,
name
:
"测试脚本"
,
inputs
:[{
"key"
:
"f78b6be4-4cc2-4812-96e1-aa065118398a"
,
"valueKey"
:
"failurePossibility"
}],
func
:
'function a(data) {if(data<0.1)alert("测试小于0.1"+data)}'
,
enable
:
true
,
description
:
"测试小于0.1"
,
},
{
id
:
"51b9d15b-8eea-4c4e-92a2-5bb9d99d298t"
,
name
:
"测试脚本"
,
inputs
:[{
"key"
:
"f78b6be4-4cc2-4812-96e1-aa065118398a"
,
"valueKey"
:
"failurePossibility"
}],
func
:
'function a(data) {if(data ===0);alert("测试等于零"+data)}'
,
enable
:
true
,
description
:
"测试等于零"
,
},
{
id
:
"51b9d16b-8eea-4c4e-92a2-5bb9599d298t"
,
name
:
"测试脚本"
,
inputs
:[{
"key"
:
"f78b6be4-4cc2-4812-96e1-aa065118398a"
,
"valueKey"
:
"failurePossibility"
}],
func
:
'function a(data) {if(data < 0)alert("测试小于零"+data)}'
,
enable
:
true
,
description
:
"测试<0"
,
},
]
}
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