133 if (robotHealthComponentPrx)
138 auto summary = robotHealthComponentPrx->getSummary();
140 const std::size_t nCols = 10;
142 auto& tableWidget = widget.tableHealthState;
143 tableWidget->setRowCount(summary.entries.size());
144 tableWidget->setColumnCount(nCols);
146 const auto summaryVals = simox::alg::get_values(summary.entries);
148 tableWidget->setHorizontalHeaderLabels({
"identifier",
152 "time since\nlast arrival [ms]",
153 "time to\nreference [ms]",
154 "time sync \n+ Ice [ms]",
155 "warning\nthreshold [ms]",
156 "error\nthreshold [ms]",
159 tableWidget->setColumnWidth(0, 250);
160 tableWidget->setColumnWidth(1, 80);
161 tableWidget->setColumnWidth(2, 120);
162 tableWidget->setColumnWidth(3, 180);
163 tableWidget->setColumnWidth(4, 120);
164 tableWidget->setColumnWidth(5, 120);
165 tableWidget->setColumnWidth(6, 120);
166 tableWidget->setColumnWidth(7, 120);
168 for (std::size_t i = 0; i < summary.entries.size(); i++)
170 const auto& entry = summaryVals.at(i);
172 std::string stateRepr;
178 stateColor.setRgb(0, 255, 0);
182 stateColor.setRgb(255, 165, 0);
186 stateColor.setRgb(255, 0, 0);
190 const std::string hostname = entry.lastReferenceTimestamp.hostname;
192 const std::string timeSinceLastArrivalRepr =
194 const std::string timeToLastReferenceRepr =
198 const float syncErrorMilliSeconds =
199 std::abs(entry.timeSinceLastArrival.microSeconds -
200 entry.timeSinceLastUpdateReference.microSeconds) /
203 tableWidget->setItem(
204 i, 0,
new QTableWidgetItem(QString::fromStdString(entry.identifier)));
205 tableWidget->setItem(
206 i, 1,
make_item(entry.required ?
"yes" :
"no", Qt::AlignHCenter));
209 auto* item =
make_item(stateRepr, Qt::AlignHCenter);
210 item->setBackgroundColor(stateColor);
211 tableWidget->setItem(i, 2, item);
214 tableWidget->setItem(
215 i, 3,
new QTableWidgetItem(QString::fromStdString(tagsRepr)));
216 tableWidget->setItem(i, 4,
make_item(timeSinceLastArrivalRepr, Qt::AlignRight));
217 tableWidget->setItem(i, 5,
make_item(timeToLastReferenceRepr, Qt::AlignRight));
223 QColor timeSyncColor;
224 if (syncErrorMilliSeconds > 20.)
226 timeSyncColor.setRgb(255, 0, 0);
230 timeSyncColor.setRgb(0, 255, 0);
232 item->setBackgroundColor(timeSyncColor);
234 tableWidget->setItem(i, 6, item);
237 tableWidget->setItem(
243 tableWidget->setItem(
249 tableWidget->setItem(
250 i, 9,
new QTableWidgetItem(QString::fromStdString(hostname)));
253 std::string tagsText =
"Active tags: [";
255 std::sort(summary.activeTags.begin(), summary.activeTags.end());
262 widget.labelTags->setText(QString::fromStdString(tagsText));