Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
bi
Project
Project
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
张苑
bi
Commits
83c64a2c
Commit
83c64a2c
authored
Sep 18, 2021
by
莫坚培
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 增加新的轮询函数
parent
5b719b02
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
65 additions
and
45 deletions
+65
-45
dashboard.js
js/dashboard.js
+65
-45
No files found.
js/dashboard.js
View file @
83c64a2c
...
...
@@ -24,7 +24,9 @@ var currentBoardNode = {} //树选中的节点
var
Controls
=
{}
var
Common
=
{}
var
time
=
5000
let
requestDataPool
=
[]
// 各个组件实时刷新的请求数据,放到一个集合里,原来的多个组件请求合并成一个请求发送
let
dataPoolRequestingFlag
=
false
// requestDataPool请求中标志,正在请求时不进行下一波轮询,前一波请求完成才执行下一波
// 添加定时器
var
timer1
=
null
...
...
@@ -854,7 +856,7 @@ function setTimer() {
if
(
item
.
ControlType
===
'staticimage'
||
item
.
ControlType
===
'image'
)
{
renderImage
(
index
)
}
if
(
item
.
ControlType
===
'datatextblock'
)
{
if
(
item
.
ControlType
===
'datatextblock'
&&
S
==
1
)
{
renderDataText
(
index
)
}
if
(
item
.
ControlType
===
'dynamictext'
)
{
...
...
@@ -912,29 +914,48 @@ function setTimer() {
// 轮询数据,用新逻辑,合并各组件的请求数据,做合并请求,例如,300个组件,分成6个请求,每个请求包含50个组件的数据
function
refreshDataLoop
()
{
console
.
log
(
'Controls'
,
Controls
);
let
requestDataList
=
handleControlListInArray
()
console
.
log
(
9999
,
requestDataList
);
if
(
requestDataList
.
length
)
{
request
.
post
(
`/bi/
${
appId
}
/variables/real-time/data/mergeReq`
,
requestDataList
).
then
(
res
=>
{
console
.
log
(
'res123'
,
res
);
})
requestDataPool
=
handleControlListInArray
()
let
dataPoolList
=
sliceRequestDataPool
(
10
)
timer1
=
setInterval
(
async
()
=>
{
if
(
dataPoolRequestingFlag
)
{
return
}
// timer1 = setInterval(()=> {
for
(
let
i
=
0
,
len
=
dataPoolList
.
length
;
i
<
len
;
i
++
)
{
dataPoolRequestingFlag
=
true
// 进入循环即表示已经开始请求
await
sendDataPoolRequest
(
dataPoolList
[
i
],
i
,
len
)
}
},
time
)
}
// }, time)
// 发起requestDataPool的合并请求
function
sendDataPoolRequest
(
list
,
i
,
len
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
request
.
post
(
`/bi/
${
appId
}
/variables/real-time/data/mergeReq`
,
list
)
.
then
(
res
=>
{
if
(
i
===
len
-
1
)
{
dataPoolRequestingFlag
=
false
}
resolve
(
res
)
})
.
catch
(
err
=>
{
if
(
i
===
len
-
1
)
{
dataPoolRequestingFlag
=
false
}
reject
(
err
)
})
})
}
//
对组件的请求数据分组
function
handleControlListInArray
(
sliceNum
)
{
let
dataPool
=
[]
//
整合所有组件的请求数据,放到一个数组里
function
handleControlListInArray
()
{
let
resList
=
[]
Controls
.
ControlList
.
forEach
((
item
,
index
)
=>
{
switch
(
item
.
ControlType
)
{
case
'datatextblock'
:
// 数值显示
case
'rwtextbox'
:
// 读写框
dataPool
.
push
({
resList
.
push
({
urlType
:
'status'
,
assemblyKey
:
`
${
index
}
`
,
assemblyKey
:
`
${
index
}
-
${
item
.
CheckData
.
name
}
`
,
statusDataDTO
:
{
deviceId
:
item
.
CheckData
.
equipmentId
?
item
.
CheckData
.
equipmentId
:
item
.
CheckData
.
equipmentid
,
variableId
:
item
.
CheckData
.
id
,
...
...
@@ -948,9 +969,9 @@ function handleControlListInArray(sliceNum) {
case
'ellipselamp'
:
// 圆形状态灯
item
.
DataList
.
forEach
((
dlItem
,
dlIndex
)
=>
{
if
(
dlItem
.
variable
!==
'选择'
&&
dlItem
.
CheckData
)
{
dataPool
.
push
({
resList
.
push
({
urlType
:
'status'
,
assemblyKey
:
`
${
index
}
-
${
dlIndex
}
`
,
assemblyKey
:
`
${
index
}
-
${
dlIndex
}
-
${
dlItem
.
CheckData
.
name
}
`
,
statusDataDTO
:
{
deviceId
:
dlItem
.
CheckData
.
equipmentId
?
dlItem
.
CheckData
.
equipmentId
:
dlItem
.
CheckData
.
equipmentid
,
variableId
:
dlItem
.
CheckData
.
id
,
...
...
@@ -973,9 +994,9 @@ function handleControlListInArray(sliceNum) {
variableCode
:
vc
.
name
}
})
dataPool
.
push
({
resList
.
push
({
urlType
:
'pieChartOrPanel'
,
assemblyKey
:
`
${
index
}
`
,
assemblyKey
:
`
${
index
}
-
${
item
.
Name
}
`
,
pieChartOrPanel
})
}
...
...
@@ -987,9 +1008,9 @@ function handleControlListInArray(sliceNum) {
if
(
dashItem
.
name
===
item
.
Name
)
{
if
(
dashItem
.
defaultDataConfig
.
datatype
===
'实时数据'
)
{
let
VariableCheckDataObj
=
dashItem
.
option
?.
Variable
?.
CheckData
||
{}
dataPool
.
push
({
resList
.
push
({
urlType
:
'pieChartOrPanel'
,
assemblyKey
:
`
${
index
}
`
,
assemblyKey
:
`
${
index
}
-
${
item
.
Name
}
`
,
pieChartOrPanel
:
[{
deviceId
:
VariableCheckDataObj
.
equipmentId
?
VariableCheckDataObj
.
equipmentId
:
VariableCheckDataObj
.
equipmentid
,
variableId
:
VariableCheckDataObj
.
id
,
...
...
@@ -1001,36 +1022,25 @@ function handleControlListInArray(sliceNum) {
})
break
case
'linechart'
:
Controls
.
Data
.
LineChartItemList
.
forEach
(
pieItem
=>
{
if
(
pieItem
.
name
===
item
.
Name
)
{
if
(
pieItem
.
defaultDataConfig
.
datatype
===
'实时数据'
)
{
let
list
=
pieItem
.
option
?.
Variables
||
[]
list
.
forEach
((
variableItem
,
variableIndex
)
=>
{
let
vc
=
variableItem
.
CheckData
dataPool
.
push
({
urlType
:
'limit'
,
assemblyKey
:
`
${
index
}
-
${
variableIndex
}
`
,
limitData
:
{
deviceId
:
vc
.
equipmentId
?
vc
.
equipmentId
:
vc
.
equipmentid
,
variableId
:
vc
.
id
,
variableCode
:
vc
.
name
}
})
})
}
}
})
line_bar_handleRequestData
(
'LineChartItemList'
)
break
case
'barchart'
:
Controls
.
Data
.
BarChartItemList
.
forEach
(
pieItem
=>
{
line_bar_handleRequestData
(
'BarChartItemList'
)
break
default
:
break
}
// 把折线图、柱状图的请求数据推到请求池
function
line_bar_handleRequestData
(
label
)
{
Controls
.
Data
[
label
].
forEach
(
pieItem
=>
{
if
(
pieItem
.
name
===
item
.
Name
)
{
if
(
pieItem
.
defaultDataConfig
.
datatype
===
'实时数据'
)
{
let
list
=
pieItem
.
option
?.
Variables
||
[]
list
.
forEach
((
variableItem
,
variableIndex
)
=>
{
let
vc
=
variableItem
.
CheckData
dataPool
.
push
({
resList
.
push
({
urlType
:
'limit'
,
assemblyKey
:
`
${
index
}
-
${
variableIndex
}
`
,
assemblyKey
:
`
${
index
}
-
${
variableIndex
}
-
${
item
.
Name
}
`
,
limitData
:
{
deviceId
:
vc
.
equipmentId
?
vc
.
equipmentId
:
vc
.
equipmentid
,
variableId
:
vc
.
id
,
...
...
@@ -1041,12 +1051,22 @@ function handleControlListInArray(sliceNum) {
}
}
})
break
}
})
return
dataPool
return
resList
}
// 对requestDataPool进行分组
function
sliceRequestDataPool
(
num
)
{
let
list
=
[]
let
groupNum
=
Math
.
ceil
(
requestDataPool
.
length
/
num
)
for
(
let
i
=
0
;
i
<
groupNum
;
i
++
)
{
list
.
push
(
requestDataPool
.
slice
(
i
*
num
,
(
i
+
1
)
*
num
))
}
return
list
}
// 点击触发刷新功能
function
manualTrigger
(
item
,
type
)
{
if
(
!
type
)
{
...
...
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