Commit ad5e940e authored by 莫坚培's avatar 莫坚培

fix: 去掉旧的实时刷新逻辑

parent 83e9cb68
......@@ -422,7 +422,7 @@ async function initCanvas() {
</div>
</div>
`
renderImage(index)
// renderImage(index)
} else if (item.ControlType === 'datatextblock') { //数值显示
let align = ''
if (item.PropertyList.JustifyContent === 'flex-start') {
......@@ -487,7 +487,7 @@ async function initCanvas() {
</div>
</div>
`
renderDynamicText(index)
// renderDynamicText(index)
} else if (item.ControlType === 'solidellipse') { //圆形
html += `<div class="commonModule" draggable="false" data-id="${index}"
......@@ -509,7 +509,7 @@ async function initCanvas() {
</div>
`
renderEllipselamp(index)
// renderEllipselamp(index)
} else if (item.ControlType === 'commonlamp') { //矩形状态灯
html += `<div class="commonModule" id="commonlamp${index}" draggable="false" data-id="${index}"
......@@ -935,7 +935,7 @@ function startRequestLoop() {
if (requestLoopStopFlag) {
return
}
// 使用await等待前一组完成,再进行下一组,且利用requestLoopStopFlag控制每一批(一批多个组)完成才能进行下一批
for (let i = 0, len = requestLoopGroupSliceRes.length; i < len; i++) {
requestLoopStopFlag = true // 进入循环即表示已经开始请求
await sendLoopDataRequest(requestLoopGroupSliceRes[i], i, len)
......@@ -948,6 +948,7 @@ function sendLoopDataRequest(list, i, len) {
return new Promise((resolve, reject) => {
request.post(`/bi/${appId}/variables/real-time/data/mergeReq`, list)
.then(res => {
// requestLoopGroupSliceRes的最后一个完成即表示这一批请求完成,可以进行下一批(既执行下一次定时器)
if (i === len - 1) {
requestLoopStopFlag = false
}
......@@ -957,19 +958,15 @@ function sendLoopDataRequest(list, i, len) {
let handleResMap = {}
Object.keys(res.data.data).forEach(key => {
let keyIndex = Number(key.split('-')[0])
if (!handleResMap[keyIndex]) {
handleResMap[keyIndex] = {}
}
handleResMap[keyIndex][key] = res.data.data[key]
})
console.log('handleResMap', handleResMap)
console.log('dataPoolMap', Controls.dataPoolMap)
Object.keys(handleResMap).forEach(key => {
renderRequestLoopData(Controls.dataPoolMap[key], handleResMap[key], res.data.code)
})
}
}
resolve(res)
})
.catch(err => {
......@@ -1104,8 +1101,6 @@ function loopRenderBarchart(poolData, resData, resCode) {
// 渲染折线图
function loopRenderLinechart(poolData, resData, resCode) {
console.log('折线图', poolData)
console.log('折线图', resData)
// 清空数据
if (resCode !== 0) {
resetLineChart(poolData.name)
......@@ -1321,8 +1316,6 @@ function loopRenderDatatextblock(poolData, resData, label) {
return
}
console.log(`${label === 'datatextblock' ? '数值显示' : '读写框'}的值`, resDataValue)
console.log(`${label === 'datatextblock' ? '数值显示' : '读写框'}的mData.dataPoolMapIndex`, poolData.dataPoolMapIndex)
// 给读写框赋值、默认颜色
if (label === 'datatextblock') {
resDataValue = resDataValue.toFixed(Number(dight))
......@@ -1353,7 +1346,6 @@ function loopRenderDatatextblock(poolData, resData, label) {
// 渲染矩形、圆形状态灯 label: commonlamp矩形状态灯 ellipselamp圆形状态灯
function loopRenderLamp(poolData, resData, label) {
console.log(`${label === 'ellipselamp' ? '圆形状态灯' : '矩形状态灯'}`, poolData, resData)
// 给默认颜色、闪烁
$(`#${label}${poolData.dataPoolMapIndex}`).css('background-color', poolData.DefaultColor)
if (poolData.DefaultFlashing) { // 默认闪烁
......@@ -1437,6 +1429,7 @@ function handleRequestDataText(item, index) {
variableCode: item.CheckData.name
}
})
Controls.dataPoolMap[index] = item
Controls.dataPoolMap[index].dataPoolMapIndex = index
}
......@@ -1445,6 +1438,7 @@ function handleRequestDataText(item, index) {
function handleRequestDataDataList(item, index) {
Controls.dataPoolMap[index] = item
Controls.dataPoolMap[index].dataPoolMapIndex = index
item.DataList.forEach((dlItem, dlIndex) => {
if (dlItem.variable !== '选择' && dlItem.CheckData) {
requestLoopDataPool.push({
......@@ -1465,6 +1459,7 @@ function handleRequestDataPie(item, index) {
let pieItem = Controls.Data.PieChartItemList.find(dItem => dItem.name === item.Name)
if (pieItem && pieItem.defaultDataConfig.datatype === '实时数据') {
let list = pieItem.option?.Variables || []
let pieChartOrPanel = list.map(variableItem => {
let vc = variableItem.CheckData
return {
......@@ -2150,116 +2145,6 @@ async function renderDynamicText(index) {
// 数值显示实时刷新
async function renderDataText(index) {
let item = Controls.ControlList[index]
let dight = item.DecimalDigits === null ? 0 : item.DecimalDigits
// if (item.conCheck) {
let times = 0
if (item.DataList.length !== 0) {
for (let i = 0; i < item.DataList.length; i++) {
if (item.CheckData && item.CheckData.name !== '') {
await request.get(`/bi/${appId}/variables/${item.CheckData.equipmentId ? item.CheckData.equipmentId : item.CheckData.equipmentid}/${item.CheckData.id}/${item.CheckData.name}/status`).then(res => {
// res.data.data[item.CheckData.name] = 1
if (res.data.data) {
try{
res.data.data[item.CheckData.name] = res.data.data[item.CheckData.name].toFixed(dight)
}catch(e){
console.log('error')
}
let Data = res.data.data[item.CheckData.name]
if (JSON.stringify(res.data.data) !== "{}") {
item.DataList[i].flag = transFlag(item.DataList[i].flag)
if (item.DataList[i].flag === '=') {
if (item.DataList[i].num == Data) {
$(`#datatextblock${index}`).text(res.data.data[item.CheckData.name])
if (item.conCheck) {
$(`#datatextblock${index}`).css('color', item.DataList[i].backColor)
}
times++
} else {
$(`#datatextblock${index}`).css('color', '#000')
}
} else if (item.DataList[i].flag === '>=') {
if (Data >= item.DataList[i].num) {
$(`#datatextblock${index}`).text(res.data.data[item.CheckData.name])
if (item.conCheck) {
$(`#datatextblock${index}`).css('color', item.DataList[i].backColor)
}
times++
} else {
$(`#datatextblock${index}`).css('color', '#000')
}
} else if (item.DataList[i].flag === '<=') {
if (Data <= item.DataList[i].num) {
$(`#datatextblock${index}`).text(res.data.data[item.CheckData.name])
if (item.conCheck) {
$(`#datatextblock${index}`).css('color', item.DataList[i].backColor)
}
times++
} else {
$(`#datatextblock${index}`).css('color', '#000')
}
} else if (item.DataList[i].flag === '>') {
if (Data > item.DataList[i].num) {
$(`#datatextblock${index}`).text(res.data.data[item.CheckData.name])
if (item.conCheck) {
$(`#datatextblock${index}`).css('color', item.DataList[i].backColor)
}
times++
} else {
$(`#datatextblock${index}`).css('color', '#000')
}
} else if (item.DataList[i].flag === '<') {
if (Data < item.DataList[i].num) {
$(`#datatextblock${index}`).text(res.data.data[item.CheckData.name])
if (item.conCheck) {
$(`#datatextblock${index}`).css('color', item.DataList[i].backColor)
}
times++
} else {
$(`#datatextblock${index}`).css('color', '#000')
}
} else if (item.DataList[i].flag === '!=') {
if (item.DataList[i].num != Data) {
$(`#datatextblock${index}`).text(res.data.data[item.CheckData.name])
if (item.conCheck) {
$(`#datatextblock${index}`).css('color', item.DataList[i].backColor)
}
times++
} else {
$(`#datatextblock${index}`).css('color', '#000')
}
}
if (i === item.DataList.length - 1 && times === 0) {
$(`#datatextblock${index}`).text(res.data.data[item.CheckData.name])
}
}
}
})
if (times !== 0) {
break
}
}
}
} else {
await request.get(`/bi/${appId}/variables/${item.CheckData.equipmentId ? item.CheckData.equipmentId : item.CheckData.equipmentid}/${item.CheckData.id}/${item.CheckData.name}/status`).then(res => {
// res.data.data[item.CheckData.name] = 1
if (res.data.data) {
try{
res.data.data[item.CheckData.name] = res.data.data[item.CheckData.name].toFixed(dight)
}catch(e){
console.log('error')
}
let Data = res.data.data[item.CheckData.name]
$(`#datatextblock${index}`).text(res.data.data[item.CheckData.name])
if (item.conCheck) {
$(`#datatextblock${index}`).css('color', '#000')
}
}
})
}
// }
if (item.dblCheck) {
setTimeout(() => {
$(`#dbl-datatextblock${index}`).dblclick(function () {
......@@ -2550,100 +2435,7 @@ function renderLineChart(item) {
})
} else if (c.defaultDataConfig.datatype === '实时数据') { // 实时数据 && 历史数据
let variableSearchList = []
let list = Controls.Data.LineChartItemList[cIndex].option.Variables
for (let i = 0; i < list.length; i++) {
let d = list[i]
if (d.CheckData) {
variableSearchList.push({
deviceId: d.CheckData.equipmentId ? d.CheckData.equipmentId : d.CheckData.equipmentid,
variableId: d.CheckData.id,
variableName: d.CheckData.name
})
} else {
return
}
}
let postData = {
limit: c.DataCount,
variableSearchList
}
request.post(`/bi/${appId}/variables/real-time/data`, postData).then(res => {
if (res.data.code !== 0) {
// 清除图表数据
resetLineChart(c.name)
// appTips.errorMsg(res.data.msg)
return
}
c.defaultDataConfig.timedate = changerealTimeFormat(c.defaultDataConfig.timedate)
res.data.data.x.forEach((rx, rxi) => { // 此处遍历修改x轴显示格式
res.data.data.x[rxi] = dayjs(rx).format(c.defaultDataConfig.timedate)
})
let chart = {}
if (document.getElementById(`${c.name}`)) {
chart = echarts.init(document.getElementById(`${c.name}`));
let a = chart.getOption();
let keys = []
Object.keys(res.data.data).filter(f => f != 'x').forEach(kk => {
keys.push(kk.split(',')[1])
})
a.xAxis[0].data = res.data.data.x.flat(Infinity)
// a.legend[0].data = keys
let serireData = []
let d = Controls.Data.LineChartItemList[cIndex].option.Variables
let left = Controls.Data.LineChartItemList[cIndex].option.DrawContent.LeftMargin
variableSearchList.forEach((k, ki) => {
let dataList = res.data.data[k.deviceId + ',' + k.variableName]
dataList = dataList.map(item1 => {
if (item1) {
if (left <= getTextWidth(String(item1*100), 16)) {
left = getTextWidth(String(item1*100), 16)
}
item1 = item1.toFixed(d[ki].d ? d[ki].d : 0)
}
return item1
})
serireData.push({
name: a.legend[0].data[ki],
data: dataList,
type: 'line',
label: a.series[0].label,
emphasis: a.series[0].emphasis
});
})
if (Controls.Data.LineChartItemList[cIndex].option.Legend.Position == "RightCenter") {
a.grid = {
left: left,
right: Controls.Data.LineChartItemList[cIndex].option.DrawContent.RightMargin
}
}
a.series = []
let dateArr = judegData(a.xAxis[0].data)
let bottom = dataZoomVal
if (dateArr.length > 0) {
a.xAxis[0].axisLabel.rotate = -45
// let leni = getMaxLen(a.xAxis[0].data)
// bottom = getBottomWidth(a.xAxis[0].data[leni])
bottom = getMaxWidth(dateArr)
}
a.dataZoom = addDataZoom()
a.grid.bottom = bottom
// a.grid.bottom = dataZoomVal
a.series = serireData
chart.setOption(a, true);
}
})
} else { // 历史数据
} else if (c.defaultDataConfig.datatype === '历史数据') { // 历史数据
let variableSearchList = []
let seriesName = []
c.option.Variables.forEach(d => {
......@@ -3102,137 +2894,7 @@ function renderBarChart(item) {
// dd.getTime()+24*3600*1000
})
} else if (c.defaultDataConfig.datatype === '实时数据') { // 实时数据 && 历史数据
let variableSearchList = []
Controls.Data.BarChartItemList[cIndex].option.Variables.forEach((d, dIndex) => {
variableSearchList.push({
deviceId: d.CheckData.equipmentId ? d.CheckData.equipmentId : d.CheckData.equipmentid,
variableId: d.CheckData.id,
variableName: d.CheckData.name
})
})
let postData = {
limit: c.DataCount,
variableSearchList
}
request.post(`/bi/${appId}/variables/real-time/data`, postData).then(res => {
if (res.data.code !== 0) {
// 清除图表数据
resetBarChart(c.name)
// appTips.errorMsg(res.data.msg)
return
}
let chart = {}
if (document.getElementById(`${c.name}`)) {
chart = echarts.init(document.getElementById(`${c.name}`));
let a = chart.getOption();
let keys = []
Object.keys(res.data.data).filter(f => f != 'x').forEach(kk => {
keys.push(kk.split(',')[1])
})
c.defaultDataConfig.timedate = changerealTimeFormat(c.defaultDataConfig.timedate)
res.data.data.x.forEach((rx, rxi) => { // 此处遍历修改x轴显示格式
res.data.data.x[rxi] = dayjs(rx).format(c.defaultDataConfig.timedate)
})
// a.xAxis[0].data = res.data.data.x
// a.legend[0].data = keys
let serireData = []
let d = Controls.Data.BarChartItemList[cIndex].option.Variables
let IsTime = Controls.Data.BarChartItemList[cIndex].option.IsTime
let left = Controls.Data.BarChartItemList[cIndex].option.DrawContent.LeftMargin
variableSearchList.forEach((k, ki) => {
let dataList = res.data.data[k.deviceId + ',' + k.variableName]
dataList = dataList.map(i => {
if (i) {
if (left <= getTextWidth(String(i), 16)) {
left = getTextWidth(String(i), 16)
}
i = i.toFixed(d[ki].d ? d[ki].d : 0)
}
return i
})
if (!IsTime) {
serireData.push({
name: d[ki].DimensionName,
data: dataList,
stack: '堆积',
type: 'bar',
label: a.series[0].label,
emphasis: a.series[0].emphasis
});
} else {
serireData.push({
name: d[ki].DimensionName,
data: dataList,
type: 'bar',
label: a.series[0].label,
emphasis: a.series[0].emphasis
});
}
})
// a.yAxis[0].axisLabel = a.yAxis[0].axisLabel
if (Controls.Data.BarChartItemList[cIndex].option.AxisChartYAxis.yAxisData) {
a.yAxis[0].data = res.data.data.x ? res.data.data.x : Controls.Data.BarChartItemList[cIndex].option.BarChartData.option.AxisChartYAxis.yAxisData
let list = a.yAxis[0].data[0]
if (left <= getTextWidth(list, 16)) {
left = getTextWidth(list, 16)
}
// for (let i = 0; i < list.lenght; i++) {
// if (left <= getTextWidth(list[i], 16)) {
// left = getTextWidth(list[i], 16)
// }
// }
} else {
a.xAxis[0].data = res.data.data.x ? res.data.data.x : Controls.Data.BarChartItemList[cIndex].option.XData
}
a.series = []
// a.xAxis[0].axisLabel = {
// interval:0,//代表显示所有x轴标签显示
// rotate:45, //代表逆时针旋转45度
// }
// a.yAxis[0].axisLabel = {
// interval:0,//代表显示所有x轴标签显示
// rotate:45, //代表逆时针旋转45度
// }
if (Controls.Data.BarChartItemList[cIndex].option.Legend.Position == "RightCenter") {
a.grid = {
left: left,
right: Controls.Data.BarChartItemList[cIndex].option.DrawContent.RightMargin
}
}
a.yAxis.type = 'value'
a.yAxis.scale = true
let dateArr = judegData(a.xAxis[0].data)
let bottom = dataZoomVal
if (dateArr.length > 0) {
a.xAxis[0].axisLabel.rotate = -45
// let leni = getMaxLen(a.xAxis[0].data)
// bottom = getBottomWidth(a.xAxis[0].data[leni])
bottom = getMaxWidth(dateArr)
}
a.dataZoom = addDataZoom()
a.grid.bottom = bottom
// a.grid.bottom = dataZoomVal
a.series = serireData
chart.setOption(a, true);
}
})
} else { // 历史数据
} else if (c.defaultDataConfig.datatype === '历史数据'){ // 历史数据
let variableSearchList = []
let seriesName = []
c.option.Variables.forEach(d => {
......@@ -3536,55 +3198,7 @@ function resetDashboartChart(name) {
function renderDashChart(item) {
Controls.Data.DashBoardChartItemList.forEach((c, cIndex) => {
if (c.name === item.Name) {
if (c.defaultDataConfig.datatype === '实时数据') {
let postData = []
if (Controls.Data.DashBoardChartItemList[cIndex].option.Variable.CheckData) {
postData = [{
deviceId: Controls.Data.DashBoardChartItemList[cIndex].option.Variable.CheckData.equipmentId ? Controls.Data.DashBoardChartItemList[cIndex].option.Variable.CheckData.equipmentId : Controls.Data.DashBoardChartItemList[cIndex].option.Variable.CheckData.equipmentid,
variableCode: Controls.Data.DashBoardChartItemList[cIndex].option.Variable.CheckData.name,
variableId: Controls.Data.DashBoardChartItemList[cIndex].option.Variable.CheckData.id
}]
} else {
return
}
request.post(`/bi/${appId}/variables/status/real-time/data`, postData).then(res => {
if (res.data.code !== 0) {
// 清除图表数据
resetDashboartChart(c.name)
// appTips.errorMsg(res.data.msg)
return
}
let chart = {}
if (document.getElementById(`${c.name}`)) {
chart = echarts.init(document.getElementById(`${c.name}`));
let a = chart.getOption();
let keys = []
Object.keys(res.data.data).filter(f => f != 'x').forEach(kk => {
keys.push(kk)
})
let serireData = []
let d = Controls.Data.DashBoardChartItemList[cIndex].option.Variable
postData.forEach((k, ki) => {
// a.series[a.series.length - 1].min = Math.min(res.data.data[k.deviceId][k.variableCode])
// a.series[a.series.length - 1].max = Math.max(res.data.data[k.deviceId][k.variableCode])
// a.series[0].min = Math.min(res.data.data[k.deviceId][k.variableCode])
// a.series[0].max = Math.max(res.data.data[k.deviceId][k.variableCode])
serireData.push({
value: res.data.data[k.deviceId][k.variableCode] ? res.data.data[k.deviceId][k.variableCode].toFixed(d.d ? d.d : 0) : 0,
/* name: d.DimensionName */
});
})
a.series[a.series.length - 1].data = serireData
a.series[0].data = serireData
a.series[0].detail.color = c.option.Variable.Tooltip.SeriesDetailColor ? c.option.Variable.Tooltip.SeriesDetailColor : '#000'
chart.setOption(a, true);
}
})
} else if (c.defaultDataConfig.datatype === '历史数据') { // 实时数据 && 历史数据
if (c.defaultDataConfig.datatype === '历史数据') { // 历史数据
let variableSearchList = []
if (Controls.Data.DashBoardChartItemList[cIndex].option.Variable.CheckData) {
variableSearchList = [{
......@@ -3859,7 +3473,6 @@ function renderDashChart(item) {
// dd.getTime()+24*3600*1000
})
}
}
})
}
......@@ -3881,94 +3494,7 @@ function resetPieChart(name) {
function renderPieChart(item) {
Controls.Data.PieChartItemList.forEach((c, cIndex) => {
if (c.name === item.Name) {
if (c.defaultDataConfig.datatype === '实时数据') {
let postData = []
let list = Controls.Data.PieChartItemList[cIndex].option.Variables
for (let i = 0; i < list.length; i++) {
let cf = list[i]
if (cf.CheckData) {
postData.push({
deviceId: cf.CheckData.equipmentId ? cf.CheckData.equipmentId : cf.CheckData.equipmentid,
variableCode: cf.CheckData.name,
variableId: cf.CheckData.id,
})
} else {
return
}
}
// Controls.Data.PieChartItemList[cIndex].option.Variables.forEach(cf => {
// if(cf.CheckData){
// postData.push({
// deviceId: cf.CheckData.equipmentId,
// variableCode: cf.CheckData.name,
// variableId: cf.CheckData.id,
// })
// }else{
// return
// }
// })
request.post(`/bi/${appId}/variables/status/real-time/data`, postData).then(res => {
if (res.data.code !== 0) {
// 清除图表数据
resetPieChart(c.name)
// appTips.errorMsg(res.data.msg)
return
}
let chart = {}
if (document.getElementById(`${c.name}`)) {
chart = echarts.init(document.getElementById(`${c.name}`));
let a = chart.getOption()
let prop = []
let keys = []
let serireData = []
if (res.data.data) {
Object.keys(res.data.data).filter(f => f != 'x').forEach(kk => {
prop.push(kk)
})
// keys = Object.keys(res.data.data[prop])
// a.legend[0].data = keys
let d = Controls.Data.PieChartItemList[cIndex].option.Variables
// for(let ki = 0 ;ki<postData.length ;ki++){
// let k = postData[ki]
// let value = res.data.data[k.deviceId][k.variableCode]
// if (value) {
// value.toFixed(d[ki] ? d[ki] : 0)
// }
// let data1 = a.series[0].data[0]
// data1.value = value
// data1.name = a.legend[0].data[ki]
// // let data2 = $.extend(data1,data)
// serireData.push(data1)
// }
postData.forEach((k, ki) => {
let value = res.data.data[k.deviceId][k.variableCode]
if (value) {
value = value.toFixed(d[ki] ? d[ki].d : 0)
}
serireData.push({
value: value,
name: a.legend[0].data[ki],
label: a.series[0].data[ki].label,
emphasis: a.series[0].data[ki].emphasis
})
})
} else {
serireData.push({
value: '',
name: '暂无数据'
})
}
a.series[0].data = $.extend(a.series[0].data, serireData)
chart.setOption(a, true);
}
})
} else if (c.defaultDataConfig.datatype === '历史数据') { // 实时数据 && 历史数据
if (c.defaultDataConfig.datatype === '历史数据') { // 历史数据
let variableSearchList = []
let list = Controls.Data.PieChartItemList[cIndex].option.Variables
for (let i = 0; i < list.length; i++) {
......@@ -4134,7 +3660,7 @@ function renderPieChart(item) {
})
} else { // 业务数据
} else if (c.defaultDataConfig.datatype === '业务数据') { // 业务数据
let statisticsList = []
let chartData = {}
let whereData = []
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment