TG-PlatformPlus/qml/debug/gamma/main.qml

256 lines
8.5 KiB
QML

import QtQuick
import QtQuick.Layouts
import QtQuick.Controls
import "./app.js" as App
Item
{
id: root
property var appId: App.appId
property var plusFile: App.plusFile
property var g_user: ""
property var g_settingLocation: "北京"
property var g_settingCompany: "北京XXX科技有限公司"
property var g_settingSummary: "系统初始化测试描述"
property var appPath: "/"+plusFile+"/"+appId+"/"
property var firstPath: ""
property var startDate: new Date()
property var startTime: startDate.getTime()
property var endTime: startTime
property var g_PowerStat: []
property var g_VoltageThreshold: []
property var g_CurrentThreshold: []
property var g_settingGrafanaHost: ""
property var g_settingGrafanaPort: ""
property var g_settingGrafanaToken: ""
property var g_settingGrafanaDashboards: ""
property var g_settingGrafanaDashboardsUrl: ""
property var g_stopTime: null
property var instructionMap: {}
signal sig_readRegisterFinished()
Component.onCompleted: {
firstPath = common.firstPath()
g_user = common.getCurrentUser()
common.initAppScript(appId, "gamma", "gamma.py", plusFile)
taskActuatorManager.executeFinished.connect(onExecuteFinished)
setConfigInfo()
updateGrafana()
}
onVisibleChanged: {
if(visible)
{
g_user = common.getCurrentUser()
}
}
TabBar {
id: bar
width: parent.width/2
anchors.top: parent.top
currentIndex: 0
TabButton {
text: qsTr("数据采集")
font.pixelSize: 16
font.family: "微软雅黑"
}
TabButton {
text: qsTr("数据分析")
font.pixelSize: 16
font.family: "微软雅黑"
}
TabButton {
text: qsTr("历史数据")
font.pixelSize: 16
font.family: "微软雅黑"
}
TabButton {
text: qsTr("系统设置")
font.pixelSize: 16
font.family: "微软雅黑"
}
}
StackLayout {
id: layout
anchors.top: bar.bottom
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.right: parent.right
currentIndex: bar.currentIndex
DataGather {}
DataAnalysis {}
DataHistory {}
SettingView{}
}
ListModel{
id: funcModel
// ListElement{name:"采集数据";deviceName:"";deviceId:"";interfaceName:"";interfaceId:"";instructionName:"";instructionId:"";interfaceIndex:""}
// ListElement{name:"读取寄存器";deviceName:"";deviceId:"";interfaceName:"";interfaceId:"";instructionName:"";instructionId:"";interfaceIndex:""}
// ListElement{name:"写入寄存器";deviceName:"";deviceId:"";interfaceName:"";interfaceId:"";instructionName:"";instructionId:"";interfaceIndex:""}
}
ListModel{
id: table_set_model
ListElement{name:"第1路"; v1:"0"; v2:"30000"; v3:"350"; v4:""}
ListElement{name:"第2路"; v1:"0"; v2:"30000"; v3:"350"; v4:""}
ListElement{name:"第3路"; v1:"0"; v2:"30000"; v3:"350"; v4:""}
ListElement{name:"第4路"; v1:"0"; v2:"30000"; v3:"350"; v4:""}
ListElement{name:"第5路"; v1:"0"; v2:"30000"; v3:"350"; v4:""}
ListElement{name:"第6路"; v1:"0"; v2:"30000"; v3:"350"; v4:""}
ListElement{name:"第7路"; v1:"0"; v2:"30000"; v3:"350"; v4:""}
ListElement{name:"第8路"; v1:"0"; v2:"30000"; v3:"350"; v4:""}
}
function getFuncInstance(instructionName)
{
var funcInstance = {}
for(var i = 0; i < funcModel.count; i++)
{
if(funcModel.get(i).name == instructionName)
{
funcInstance = funcModel.get(i)
break
}
}
return funcInstance
}
function setConfigInfo()
{
var config = common.getConfig();
var grafanaInfo = config.grafana
g_settingGrafanaHost = grafanaInfo.host
g_settingGrafanaPort = grafanaInfo.port
g_settingGrafanaToken = "Bearer " + grafanaInfo.token
g_settingGrafanaDashboards = grafanaInfo.dashboards
console.info("g_settingGrafanaHost:" + g_settingGrafanaHost)
console.info("g_settingGrafanaPort:" + g_settingGrafanaPort)
console.info("g_settingGrafanaToken:" + g_settingGrafanaToken)
console.info("g_settingGrafanaDashboards:" + g_settingGrafanaDashboards)
}
function save_json(fileName, jsonObj)
{
gamma.setJson(firstPath + appPath + fileName, jsonObj)
}
function get_json(fileName)
{
return gamma.getJson(firstPath + appPath + fileName)
}
function executeVirtualTask(taskName, instructionNames)
{
var taskInfo = {
"id": taskName,
"name": taskName,
"type": 1,
}
var instructions = []
for(var i = 0; i < instructionNames.length; i++)
{
var funcInstance = getFuncInstance(instructionNames[i])
instructions.push({
"id": instructionNames[i] + funcInstance.instructionId, // 无意义,避免重复
"target_id": funcInstance.instructionId,
"device_id": funcInstance.deviceId,
"task_id" : taskInfo.task_id,
"interface_index": funcInstance.interfaceIndex,
"target_type": "instruction",
"delay": 0,
"loop": 1,
"target_param": ""
})
}
taskActuatorManager.startVirtual(taskInfo, instructions)
}
function execute(instructionName, param={})
{
var funcInstance = getFuncInstance(instructionName)
var attr = {
"deviceId": funcInstance.deviceId,
"param": JSON.stringify(param),
"interfaceIndex": funcInstance.interfaceIndex
}
taskActuatorManager.startInstruction(funcInstance.instructionId, attr)
}
function onExecuteFinished(id)
{
var funcInstance = getFuncInstance("读取寄存器")
if (id == funcInstance.instructionId) {
sig_readRegisterFinished()
}
}
function makeTestInfo()
{
var testInfo = {}
var tdCount = 0
for(var i = 0; i < g_PowerStat.length; i++)
{
if(g_PowerStat[i] == "1")
tdCount++
}
testInfo.startTime = startTime.toString()
testInfo.endTime = endTime.toString()
testInfo.user = g_user
testInfo.csvFile = ""
testInfo.settingLocation = g_settingLocation
testInfo.settingCompany = g_settingCompany
testInfo.settingSummary = g_settingSummary
testInfo.tdCount = tdCount
testInfo.PowerStat = JSON.stringify(g_PowerStat)
testInfo.VoltageThreshold = JSON.stringify(g_VoltageThreshold)
testInfo.CurrentThreshold = JSON.stringify(g_CurrentThreshold)
var SNs = []
for(var i = 0; i < table_set_model.count; i++)
{
SNs.push(table_set_model.get(i).v4)
}
testInfo.SNs = JSON.stringify(SNs)
var historyInfo = {}
var jsonObj = get_json("history.json")
if(jsonObj != undefined)
historyInfo = jsonObj
historyInfo[startTime] = testInfo
save_json("history.json", historyInfo)
}
// 更新Grafana bucket
function updateGrafana()
{
var url = "http://" + g_settingGrafanaHost + ":" + g_settingGrafanaPort
var data = gamma.get_dashboard_uid(url,g_settingGrafanaToken,g_settingGrafanaDashboards)
if(data)
{
if (data.length == 1)
{
var uid = data[0].uid
g_settingGrafanaDashboardsUrl = data[0].url
console.info("g_settingGrafanaDashboardsUrl: " + g_settingGrafanaDashboardsUrl)
gamma.update_dashboard_data(uid,url,g_settingGrafanaToken)
}
}
}
// 更新Grafana Time
function updateGrafanaTime(start, stop)
{
var url = "http://" + g_settingGrafanaHost + ":" + g_settingGrafanaPort
var data = gamma.get_dashboard_uid(url,g_settingGrafanaToken,g_settingGrafanaDashboards)
if(data)
{
if (data.length == 1)
{
var uid = data[0].uid
g_settingGrafanaDashboardsUrl = data[0].url
gamma.update_dashboard_time(uid, url,g_settingGrafanaToken,start, stop)
}
}
}
}