256 lines
8.5 KiB
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)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|