TG-PlatformPlus/qml/DataGather.qml

290 lines
9.6 KiB
QML

import QtQuick
import QtQuick.Controls
import QtWebEngine
import "./common"
// import "./Style"
Item {
id: self
width: 400
height: 300
property var weburl: "http://" + g_settingGrafanaHost + ":" + g_settingGrafanaPort + g_settingGrafanaDashboardsUrl1
property var curQueueId: ""
Rectangle
{
id: btnRectangle
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
height: 30
z:2
Row
{
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
spacing: 5
QxTitleButton{
enabled: !lstRunning && comIsOpen
text:"开始采集"
onClicked: {
g_gatherInfo.start = new Date().getTime()
var channelCount = 0
for(var i = 0; i < settingView.tgModel.count; ++i)
{
var item = settingView.tgModel.get(i)
if(item.gdkgzt == "1")
channelCount++
}
g_gatherInfo.stop = ""
g_gatherInfo.mea = ""
g_gatherInfo.channel = String(channelCount)
g_gatherInfo.remark = ""
runLstCmd("读实时数据")
}
}
QxTitleButton{
enabled: lstRunning && comIsOpen
text:"结束采集"
onClicked: {
g_gatherInfo.stop = new Date().getTime()
g_proHistoryData.push({"start": g_gatherInfo.start, "stop": g_gatherInfo.stop, "mea": g_gatherInfo.mea, "channel": g_gatherInfo.channel, "remark": g_gatherInfo.remark})
update_proData()
stopLstCmd()
}
}
QxTitleButton{
text:"导入双综合环境数据"
onClicked: fileDialog.visible = true
}
}
Row
{
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: 10
spacing: 30
QxText{
text: "测试人员: " + g_session.name
}
QxText{
text:"测试地点: " + g_settingLocation
}
QxText{
text:"测试单位: " + g_settingCompany
}
}
}
WebEngines{
anchors.left: parent.left
anchors.right: parent.right
anchors.top: btnRectangle.bottom
anchors.bottom: parent.bottom
}
// WebEngineView {
// id: webengine
// anchors.left: parent.left
// anchors.right: parent.right
// anchors.top: btnRectangle.bottom
// anchors.bottom: parent.bottom
// url: g_settingGrafanaDashboardsUrl1 != "" ? weburl : ""
// }
function formatText(count, modelData) {
var data = count === 12 ? modelData + 1 : modelData;
return data.toString().length < 2 ? "0" + data : data;
}
FontMetrics {
id: fontMetrics
}
Component {
id: delegateComponent
Label {
text: formatText(Tumbler.tumbler.count, modelData)
opacity: 1.0 - Math.abs(Tumbler.displacement) / (Tumbler.tumbler.visibleItemCount / 2)
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
font.pixelSize: fontMetrics.font.pixelSize * 1.25
}
}
Dialog
{
id: dateDlg
property var mea: ""
property var path: ""
onAccepted:{
var date = new Date(Qt.formatDateTime(calendar.selectedDate, "yyyy/MM/dd")+" "+formatText(hoursTumbler, hoursTumbler.currentIndex)+":"+formatText(minutesTumbler, minutesTumbler.currentIndex)+":"+formatText(secondTumbler, secondTumbler.currentIndex))
var result = backend_proxy.importExternalData(mea,date.getTime(),path)
if(result.code !== 200)
{
alert.show(result.msg)
}else
{
g_gatherInfo.start = date.getTime()
g_gatherInfo.stop = result.data
g_gatherInfo.mea = mea
g_gatherInfo.channel = "0"
g_gatherInfo.remark = ""
g_proHistoryData.push({"start": g_gatherInfo.start, "stop": g_gatherInfo.stop, "mea": g_gatherInfo.mea, "channel": g_gatherInfo.channel, "remark": g_gatherInfo.remark})
update_proData()
}
mea = ""
path = ""
}
contentItem: Rectangle {
color: "#fefefe"
Column
{
spacing: 5
Row{
Calendar {
id: calendar
}
Frame {
id: frame
height: calendar.height
wheelEnabled: true
Row {
id: row
Tumbler {
id: hoursTumbler
wheelEnabled: true
width: 30
height: calendar.height
model: 24
delegate: delegateComponent
}
Tumbler {
id: minutesTumbler
wheelEnabled: true
width: 30
height: calendar.height
model: 60
delegate: delegateComponent
}
Tumbler {
id: secondTumbler
wheelEnabled: true
width: 30
height: calendar.height
model: 60
delegate: delegateComponent
}
}
}
}
Row
{
anchors.right: parent.right
spacing: 20
Button
{
text: "确认"
style: ButtonStyle{}
onClicked: dateDlg.accept()
}
Button
{
text: "取消"
style: ButtonStyle{}
onClicked: dateDlg.reject()
}
}
}
}
}
FileDialog {
id: fileDialog
title: "请选择文件"
folder: shortcuts.home
selectMultiple: false
nameFilters: [ "Csv files (*.csv)", "All files (*)" ]
onAccepted: {
if( fileDialog.fileUrls.length == 1)
{
var zdFile = fileDialog.fileUrls[0].match(/[^\/\\]+$/)[0]
g_proData.zdfile = zdFile
var path = fileDialog.fileUrls[0].replace("file:///","")
var arr = zdFile.split("_")
if(arr.length == 1)
{
dateDlg.mea = zdFile.replace(/\.[^/.]+$/, "")
dateDlg.path = path
dateDlg.visible = true
}
else if(arr.length == 2)
{
var dateString =arr[1].replace(/\.[^/.]+$/, "")
var dateStr = dateString.replace(/(\d{4})-(\d{2})-(\d{2})-(\d{2})-(\d{2})-(\d{2})-(\d{2})/, '$1/$2/$3 $4:$5:$6.$7');
var date = new Date(dateStr);
var result = backend_proxy.importExternalData(arr[0],date.getTime(),path)
if(result.code !== 200)
{
alert.show(result.msg)
}
else
{
g_gatherInfo.start = date.getTime()
g_gatherInfo.stop = result.data
g_gatherInfo.mea = arr[0]
g_gatherInfo.channel = "0"
g_gatherInfo.remark = ""
g_proHistoryData.push({"start": g_gatherInfo.start, "stop": g_gatherInfo.stop, "mea": g_gatherInfo.mea, "channel": g_gatherInfo.channel, "remark": g_gatherInfo.remark})
update_proData()
}
}
console.log("You chose: " + fileDialog.fileUrls)
}
}
onRejected: {
console.log("Canceled")
}
visible: false
}
function runLstCmd(cmdName){
curQueueId = ""
for(var i = 0; i < mainWin._command.cmdLstModel.count; ++i)
{
var item = mainWin._command.cmdLstModel.get(i)
if(item.name == cmdName)
{
curQueueId = item.id
break
}
}
var result = backend_proxy.send_queue(curQueueId)
if(result.code !== 200)
{
lstRunning = false
alert.show(result.msg)
}
else
{
lstRunning = true
}
}
function stopLstCmd(){
var result = backend_proxy.stop_queue(1,2,3)
if(result.code !== 200)
{
lstRunning = true
alert.show(result.msg)
}
else
{
lstRunning = false
}
}
}