diff --git a/src/shared/Modules/RefuelingVisualizer/000.png b/src/shared/Modules/RefuelingVisualizer/000.png new file mode 100644 index 0000000000000000000000000000000000000000..22a6f478948b3f04ccd02686ac4765c0365a844d Binary files /dev/null and b/src/shared/Modules/RefuelingVisualizer/000.png differ diff --git a/src/shared/Modules/RefuelingVisualizer/001.png b/src/shared/Modules/RefuelingVisualizer/001.png new file mode 100644 index 0000000000000000000000000000000000000000..3e071d78f02899ab63b29d8f1ee8c3fbd96849ed Binary files /dev/null and b/src/shared/Modules/RefuelingVisualizer/001.png differ diff --git a/src/shared/Modules/RefuelingVisualizer/010.png b/src/shared/Modules/RefuelingVisualizer/010.png new file mode 100644 index 0000000000000000000000000000000000000000..2352fde52919733e43e9b46a621b4bcc69b05184 Binary files /dev/null and b/src/shared/Modules/RefuelingVisualizer/010.png differ diff --git a/src/shared/Modules/RefuelingVisualizer/011.png b/src/shared/Modules/RefuelingVisualizer/011.png new file mode 100644 index 0000000000000000000000000000000000000000..42b7d633a63990d77e126a96639c9b3c3adffe5e Binary files /dev/null and b/src/shared/Modules/RefuelingVisualizer/011.png differ diff --git a/src/shared/Modules/RefuelingVisualizer/100.png b/src/shared/Modules/RefuelingVisualizer/100.png new file mode 100644 index 0000000000000000000000000000000000000000..5ef35bfa9988dbc282c81666bdd21dd33b70fdfb Binary files /dev/null and b/src/shared/Modules/RefuelingVisualizer/100.png differ diff --git a/src/shared/Modules/RefuelingVisualizer/101.png b/src/shared/Modules/RefuelingVisualizer/101.png new file mode 100644 index 0000000000000000000000000000000000000000..0504fd7c00e2a870c479447a974395c78052d17a Binary files /dev/null and b/src/shared/Modules/RefuelingVisualizer/101.png differ diff --git a/src/shared/Modules/RefuelingVisualizer/110.png b/src/shared/Modules/RefuelingVisualizer/110.png new file mode 100644 index 0000000000000000000000000000000000000000..a65b57d78105c90e8cb979b29a2618933fceeaa6 Binary files /dev/null and b/src/shared/Modules/RefuelingVisualizer/110.png differ diff --git a/src/shared/Modules/RefuelingVisualizer/111.png b/src/shared/Modules/RefuelingVisualizer/111.png index 31deb6afe3fd2a570c510013724094ac2986cdc0..de8b18cbc00be8da2ebe4e4778671da2309bfd92 100644 Binary files a/src/shared/Modules/RefuelingVisualizer/111.png and b/src/shared/Modules/RefuelingVisualizer/111.png differ diff --git a/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.cpp b/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.cpp index f4ba2d5ac9808d981fdb8a5a21ccad580128780b..5524041ee710289c7a5fc004c6785639e481fb19 100644 --- a/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.cpp +++ b/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.cpp @@ -72,6 +72,24 @@ void RefuelingVisualizer::setupUi() "border-width: 1px; border-style: solid; border-radius: 1px; " "border-color: white; background-color: rgb(82, 142, 56)"; + // DATA LABELS STYLE + // Headers + QString HeaderStyle = + "border-width: 1px; border-style: solid; border-color: rgb(100, 100, " + "100); background-color: rgba(51, 153, 255, 7%);" + "border-bottom-style: double; font: bold; border-bottom-left-radius: " + "0px; border-bottom-right-radius: 0px;"; + // Data + QString headerLabelStyle = + "border-width: 1px; border-style: dashed; border-color: rgb(100, 100, " + "100); border-radius: 0px; border-left-style: solid; " + "border-right-style: solid;"; + QString lastHeaderLabelStyle = + "border-width: 1px; border-style: solid; border-color: rgb(100, 100, " + "100); border-radius: 0px; border-top-style: dashed; " + "border-bottom-left-radius: 1px; border-bottom-right-radius: 1px;"; + QString dataStyle = "border-width: 0px;"; + // TARS STATE QLabel* labelTars = new QLabel; labelTars->setText(RefuelingVisualizerCommandList::commandLabels[0]); @@ -99,25 +117,194 @@ void RefuelingVisualizer::setupUi() outerLayout->addWidget(labelValve, 5499, (i - 1) * 1666, 70, 1666); } - // topTankPressureLabelIm = new QLabel; - // topTankPressureLabelIm->setAlignment(Qt::AlignCenter); - // topTankPressureLabelIm->setContentsMargins(4, 4, 4, 4); - // outerLayout->addWidget(topTankPressureLabelIm, 50, 50, 15, 20); - - // loadcellTank = new QLabel; - // loadcellTank->setAlignment(Qt::AlignCenter); - // loadcellTank->setContentsMargins(4, 4, 4, 4); - // outerLayout->addWidget(loadcellTank, 50, 77, 15, 20); - - // QFrame* line = new QFrame(); - // line->setGeometry(QRect(50, 150, 100, 50)); - // line->setFrameShape(QFrame::HLine); - // line->setStyleSheet("background-color:rgb(255,255,255)"); - // outerLayout->addWidget(line, 50, 150, 1, 50); - setLayout(outerLayout); + // ---------------------------------------------------------------------- + // TANK DATA VISUALIZER ------------------------------------------------- + // Headers + tankHeaderLabel = new QLabel; + tankHeaderLabel->setText((QString) "TANK"); + tankHeaderLabel->setAlignment(Qt::AlignCenter); + tankHeaderLabel->setContentsMargins(4, 4, 4, 4); + tankHeaderLabel->setStyleSheet(HeaderStyle); + outerLayout->addWidget(tankHeaderLabel, 1180, 1400, 50, 2000); + + loadcellTankLabel = new QLabel; + loadcellTankLabel->setText((QString) "Loadcell:"); + loadcellTankLabel->setAlignment(Qt::AlignLeft); + loadcellTankLabel->setContentsMargins(4, 4, 4, 4); + loadcellTankLabel->setStyleSheet(headerLabelStyle); + outerLayout->addWidget(loadcellTankLabel, 1230, 1400, 40, 2000); + + tankTemperatureLabel = new QLabel; + tankTemperatureLabel->setText((QString) "Temperature:"); + tankTemperatureLabel->setAlignment(Qt::AlignLeft); + tankTemperatureLabel->setContentsMargins(4, 4, 4, 4); + tankTemperatureLabel->setStyleSheet(headerLabelStyle); + outerLayout->addWidget(tankTemperatureLabel, 1270, 1400, 40, 2000); + + topTankPressureLabel = new QLabel; + topTankPressureLabel->setText((QString) "TOP Pressure:"); + topTankPressureLabel->setAlignment(Qt::AlignLeft); + topTankPressureLabel->setContentsMargins(4, 4, 4, 4); + topTankPressureLabel->setStyleSheet(headerLabelStyle); + outerLayout->addWidget(topTankPressureLabel, 1310, 1400, 40, 2000); + + bottomTankPressureLabel = new QLabel; + bottomTankPressureLabel->setText((QString) "BOTTOM Pressure:"); + bottomTankPressureLabel->setAlignment(Qt::AlignLeft); + bottomTankPressureLabel->setContentsMargins(4, 4, 4, 4); + bottomTankPressureLabel->setStyleSheet(headerLabelStyle); + outerLayout->addWidget(bottomTankPressureLabel, 1350, 1400, 40, 2000); + + floatingLevelLabel = new QLabel; + floatingLevelLabel->setText((QString) "Floating level:"); + floatingLevelLabel->setAlignment(Qt::AlignLeft); + floatingLevelLabel->setContentsMargins(4, 4, 4, 4); + floatingLevelLabel->setStyleSheet(lastHeaderLabelStyle); + outerLayout->addWidget(floatingLevelLabel, 1390, 1400, 40, 2000); + + // Data + loadcellTankDataLabel = new QLabel; + loadcellTankDataLabel->setText((QString) "0 KG"); + loadcellTankDataLabel->setAlignment(Qt::AlignRight); + loadcellTankDataLabel->setContentsMargins(4, 4, 4, 4); + loadcellTankDataLabel->setStyleSheet(dataStyle); + outerLayout->addWidget(loadcellTankDataLabel, 1233, 2350, 34, 1047); + + tankTemperatureDataLabel = new QLabel; + tankTemperatureDataLabel->setText((QString) "0 °C"); + tankTemperatureDataLabel->setAlignment(Qt::AlignRight); + tankTemperatureDataLabel->setContentsMargins(4, 4, 4, 4); + tankTemperatureDataLabel->setStyleSheet(dataStyle); + outerLayout->addWidget(tankTemperatureDataLabel, 1273, 2350, 34, 1047); + + topTankPressureDataLabel = new QLabel; + topTankPressureDataLabel->setText((QString) "0 bar"); + topTankPressureDataLabel->setAlignment(Qt::AlignRight); + topTankPressureDataLabel->setContentsMargins(4, 4, 4, 4); + topTankPressureDataLabel->setStyleSheet(dataStyle); + outerLayout->addWidget(topTankPressureDataLabel, 1313, 2350, 34, 1047); + + bottomTankPressureDataLabel = new QLabel; + bottomTankPressureDataLabel->setText((QString) "0 bar"); + bottomTankPressureDataLabel->setAlignment(Qt::AlignRight); + bottomTankPressureDataLabel->setContentsMargins(4, 4, 4, 4); + bottomTankPressureDataLabel->setStyleSheet(dataStyle); + outerLayout->addWidget(bottomTankPressureDataLabel, 1353, 2350, 34, 1047); + + floatingLevelDataLabel = new QLabel; + floatingLevelDataLabel->setText((QString) "NOT REACHED"); + floatingLevelDataLabel->setAlignment(Qt::AlignRight); + floatingLevelDataLabel->setContentsMargins(4, 4, 4, 4); + floatingLevelDataLabel->setStyleSheet(dataStyle); + outerLayout->addWidget(floatingLevelDataLabel, 1393, 2350, 34, 1047); + + // ---------------------------------------------------------------------- + // VESSEL DATA VISUALIZER ----------------------------------------------- + // Headers + vesselHeaderLabel = new QLabel; + vesselHeaderLabel->setText((QString) "VESSEL"); + vesselHeaderLabel->setAlignment(Qt::AlignCenter); + vesselHeaderLabel->setContentsMargins(4, 4, 4, 4); + vesselHeaderLabel->setStyleSheet(HeaderStyle); + outerLayout->addWidget(vesselHeaderLabel, 500, 2300, 50, 2000); + + loadcellVesselLabel = new QLabel; + loadcellVesselLabel->setText((QString) "Loadcell:"); + loadcellVesselLabel->setAlignment(Qt::AlignLeft); + loadcellVesselLabel->setContentsMargins(4, 4, 4, 4); + loadcellVesselLabel->setStyleSheet(headerLabelStyle); + outerLayout->addWidget(loadcellVesselLabel, 550, 2300, 40, 2000); + + vesselPressureLabel = new QLabel; + vesselPressureLabel->setText((QString) "Pressure:"); + vesselPressureLabel->setAlignment(Qt::AlignLeft); + vesselPressureLabel->setContentsMargins(4, 4, 4, 4); + vesselPressureLabel->setStyleSheet(lastHeaderLabelStyle); + outerLayout->addWidget(vesselPressureLabel, 590, 2300, 40, 2000); + + // Data + loadcellVesselDataLabel = new QLabel; + loadcellVesselDataLabel->setText((QString) "0 KG"); + loadcellVesselDataLabel->setAlignment(Qt::AlignRight); + loadcellVesselDataLabel->setContentsMargins(4, 4, 4, 4); + loadcellVesselDataLabel->setStyleSheet(dataStyle); + outerLayout->addWidget(loadcellVesselDataLabel, 553, 3240, 34, 1047); + + vesselPressureDataLabel = new QLabel; + vesselPressureDataLabel->setText((QString) "0 bar"); + vesselPressureDataLabel->setAlignment(Qt::AlignRight); + vesselPressureDataLabel->setContentsMargins(4, 4, 4, 4); + vesselPressureDataLabel->setStyleSheet(dataStyle); + outerLayout->addWidget(vesselPressureDataLabel, 593, 3240, 34, 1047); + + // ---------------------------------------------------------------------- + // CART DATA VISUALIZER ------------------------------------------------- + // Headers + cartHeaderLabel = new QLabel; + cartHeaderLabel->setText((QString) "CART"); + cartHeaderLabel->setAlignment(Qt::AlignCenter); + cartHeaderLabel->setContentsMargins(4, 4, 4, 4); + cartHeaderLabel->setStyleSheet(HeaderStyle); + outerLayout->addWidget(cartHeaderLabel, 2500, 2000, 50, 2000); + + cartTimestampLabel = new QLabel; + cartTimestampLabel->setText((QString) "Timestamp:"); + cartTimestampLabel->setAlignment(Qt::AlignLeft); + cartTimestampLabel->setContentsMargins(4, 4, 4, 4); + cartTimestampLabel->setStyleSheet(headerLabelStyle); + outerLayout->addWidget(cartTimestampLabel, 2550, 2000, 40, 2000); + + cartFillingPressureLabel = new QLabel; + cartFillingPressureLabel->setText((QString) "Filling Pressure:"); + cartFillingPressureLabel->setAlignment(Qt::AlignLeft); + cartFillingPressureLabel->setContentsMargins(4, 4, 4, 4); + cartFillingPressureLabel->setStyleSheet(headerLabelStyle); + outerLayout->addWidget(cartFillingPressureLabel, 2590, 2000, 40, 2000); + + cartBatteryLabel = new QLabel; + cartBatteryLabel->setText((QString) "Battery:"); + cartBatteryLabel->setAlignment(Qt::AlignLeft); + cartBatteryLabel->setContentsMargins(4, 4, 4, 4); + cartBatteryLabel->setStyleSheet(headerLabelStyle); + outerLayout->addWidget(cartBatteryLabel, 2630, 2000, 40, 2000); + + cartCurrentLabel = new QLabel; + cartCurrentLabel->setText((QString) "Current:"); + cartCurrentLabel->setAlignment(Qt::AlignLeft); + cartCurrentLabel->setContentsMargins(4, 4, 4, 4); + cartCurrentLabel->setStyleSheet(lastHeaderLabelStyle); + outerLayout->addWidget(cartCurrentLabel, 2670, 2000, 40, 2000); + + // Data + cartTimestampDataLabel = new QLabel; + cartTimestampDataLabel->setText((QString) "0 s"); + cartTimestampDataLabel->setAlignment(Qt::AlignRight); + cartTimestampDataLabel->setContentsMargins(4, 4, 4, 4); + cartTimestampDataLabel->setStyleSheet(dataStyle); + outerLayout->addWidget(cartTimestampDataLabel, 2550, 2940, 34, 1047); + + cartFillingPressureDataLabel = new QLabel; + cartFillingPressureDataLabel->setText((QString) "0 bar"); + cartFillingPressureDataLabel->setAlignment(Qt::AlignRight); + cartFillingPressureDataLabel->setContentsMargins(4, 4, 4, 4); + cartFillingPressureDataLabel->setStyleSheet(dataStyle); + outerLayout->addWidget(cartFillingPressureDataLabel, 2590, 2940, 34, 1047); + + cartBatteryDataLabel = new QLabel; + cartBatteryDataLabel->setText((QString) "0 %"); + cartBatteryDataLabel->setAlignment(Qt::AlignRight); + cartBatteryDataLabel->setContentsMargins(4, 4, 4, 4); + cartBatteryDataLabel->setStyleSheet(dataStyle); + outerLayout->addWidget(cartBatteryDataLabel, 2630, 2940, 34, 1047); + + cartCurrentDataLabel = new QLabel; + cartCurrentDataLabel->setText((QString) "0 V"); + cartCurrentDataLabel->setAlignment(Qt::AlignRight); + cartCurrentDataLabel->setContentsMargins(4, 4, 4, 4); + cartCurrentDataLabel->setStyleSheet(dataStyle); + outerLayout->addWidget(cartCurrentDataLabel, 2670, 2940, 34, 1047); - // QPainter* painter = QPainter(outerLayout); - // painter->drawLine(50, 50, 200, 200); + setLayout(outerLayout); } void RefuelingVisualizer::addCustomActionsToMenu() @@ -147,14 +334,16 @@ void RefuelingVisualizer::setFilter(const Filter& newFilter) void RefuelingVisualizer::onMsgReceived(const Message& msg) { - uint64_t tarsState = msg.getField("tars_state").getUnsignedInteger(); - uint64_t release = msg.getField("release_valve_state").getUnsignedInteger(); - uint64_t filling = msg.getField("filling_valve_state").getUnsignedInteger(); - uint64_t venting = msg.getField("venting_valve_state").getUnsignedInteger(); - - QString baseStyle = - "border-width: 1px; border-style: solid; border-radius: 1px; " - "border-color: white; background-color: rgb(82, 142, 56)"; + // uint64_t tarsState = msg.getField("tars_state").getUnsignedInteger(); + // uint64_t release = + // msg.getField("release_valve_state").getUnsignedInteger(); uint64_t + // filling = msg.getField("filling_valve_state").getUnsignedInteger(); + // uint64_t venting = + // msg.getField("venting_valve_state").getUnsignedInteger(); + + // QString baseStyle = + // "border-width: 1px; border-style: solid; border-radius: 1px; " + // "border-color: white; background-color: rgb(82, 142, 56)"; // auto ciao = outerLayout->itemAt(8)->widget(); // topTankPressureLabelIm->setStyleSheet( diff --git a/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.h b/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.h index c82e14461e4997c63775985849f543c25d05781c..3c991d3c5397d8d4274e96108fcd890c49a5fd3e 100644 --- a/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.h +++ b/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.h @@ -48,8 +48,37 @@ private: void onMsgReceived(const Message& msg); QGridLayout* outerLayout; - // QLabel* topTankPressureLabelIm; - // QLabel* loadcellTank; + + // TANK VISUALIZER LABELS + QLabel* tankHeaderLabel; + QLabel* topTankPressureLabel; + QLabel* bottomTankPressureLabel; + QLabel* loadcellTankLabel; + QLabel* floatingLevelLabel; + QLabel* tankTemperatureLabel; + QLabel* topTankPressureDataLabel; + QLabel* bottomTankPressureDataLabel; + QLabel* loadcellTankDataLabel; + QLabel* floatingLevelDataLabel; + QLabel* tankTemperatureDataLabel; + + // VESSEL VISUALIZER LABELS + QLabel* vesselHeaderLabel; + QLabel* loadcellVesselLabel; + QLabel* vesselPressureLabel; + QLabel* loadcellVesselDataLabel; + QLabel* vesselPressureDataLabel; + + // CART VISUALIZER LABELS + QLabel* cartHeaderLabel; + QLabel* cartTimestampLabel; + QLabel* cartFillingPressureLabel; + QLabel* cartBatteryLabel; + QLabel* cartCurrentLabel; + QLabel* cartTimestampDataLabel; + QLabel* cartFillingPressureDataLabel; + QLabel* cartBatteryDataLabel; + QLabel* cartCurrentDataLabel; Filter filter; RefuelingVisualizerCommandList::Valve currentState;