diff --git a/api/protocols.php b/api/protocols.php index f6e2a83..452ae13 100644 --- a/api/protocols.php +++ b/api/protocols.php @@ -193,7 +193,10 @@ foreach ($measIn as $m) { $meas->label = isset($m['label']) ? (string) $m['label'] : ''; $meas->params = isset($m['params']) ? json_encode($m['params'], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) : null; $meas->result = isset($m['result']) ? json_encode($m['result'], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) : null; - $meas->measure_status = isset($m['measureStatus']) ? (int) $m['measureStatus'] : 0; + // Nur bekannte Bewertungen uebernehmen. Ein unbekannter Wert landete sonst + // als Array-Index in Karte und PDF und lief dort ins Leere. + $st = isset($m['measureStatus']) ? (int) $m['measureStatus'] : 0; + $meas->measure_status = ($st >= 0 && $st <= 3) ? $st : 1; $meas->date_measure = netdiag_api_timestamp($m['dateMeasure'] ?? 0); $meas->tms = dol_now(); if ($meas->create($user, 1) <= 0) { diff --git a/langs/de_DE/netdiag.lang b/langs/de_DE/netdiag.lang index 36c26df..944d357 100644 --- a/langs/de_DE/netdiag.lang +++ b/langs/de_DE/netdiag.lang @@ -59,3 +59,4 @@ NetDiagMeasurements = Messungen NetDiagMeasureOk = OK NetDiagMeasureWarn = Warnung NetDiagMeasureFail = Fehler +NetDiagMeasureUnmeasurable = Nicht messbar diff --git a/langs/en_US/netdiag.lang b/langs/en_US/netdiag.lang index 26a28a4..120a701 100644 --- a/langs/en_US/netdiag.lang +++ b/langs/en_US/netdiag.lang @@ -59,3 +59,4 @@ NetDiagMeasurements = Measurements NetDiagMeasureOk = OK NetDiagMeasureWarn = Warning NetDiagMeasureFail = Fail +NetDiagMeasureUnmeasurable = Not measurable diff --git a/lib/netdiag_pdf.lib.php b/lib/netdiag_pdf.lib.php index 3ffea2a..279e7dd 100644 --- a/lib/netdiag_pdf.lib.php +++ b/lib/netdiag_pdf.lib.php @@ -132,20 +132,35 @@ function netdiagGeneratePdf($db, $protocol, $outputlangs) // Messungen $pdf->SetFont('', 'B', 12); $pdf->Cell(0, 7, $outputlangs->transnoentities("NetDiagMeasurements").' ('.count($measurements).')', 0, 1, 'L'); - $statuslabels = array(0 => 'OK', 1 => $outputlangs->transnoentities("NetDiagMeasureWarn"), 2 => $outputlangs->transnoentities("NetDiagMeasureFail")); + // Status 3 = "nicht messbar": der Test konnte nicht durchgeführt werden. + // Bewusst grau und mit eigenem Zeichen — weder grün (wäre gelogen) noch rot + // (wäre eine Aussage über das Kundennetz, die die Messung nicht hergibt). + $statuslabels = array( + 0 => $outputlangs->transnoentities("NetDiagMeasureOk"), + 1 => $outputlangs->transnoentities("NetDiagMeasureWarn"), + 2 => $outputlangs->transnoentities("NetDiagMeasureFail"), + 3 => $outputlangs->transnoentities("NetDiagMeasureUnmeasurable"), + ); + // Zusätzlich ein Zeichen, damit die Ampel auch im Schwarz-Weiß-Ausdruck lesbar bleibt + $statusmarks = array(0 => 'OK', 1 => '!', 2 => 'X', 3 => '?'); foreach ($measurements as $m) { $st = (int) $m->measure_status; + if ($st < 0 || $st > 3) { + $st = 1; // unbekannter Wert -> als Warnung behandeln, nie als OK + } if ($st == 2) { $pdf->SetFillColor(230, 130, 130); } elseif ($st == 1) { $pdf->SetFillColor(245, 215, 130); + } elseif ($st == 3) { + $pdf->SetFillColor(210, 210, 210); } else { $pdf->SetFillColor(170, 215, 170); } $pdf->SetFont('', 'B', 9); $title = ($m->category ? '['.$m->category.'] ' : '').$m->tool.($m->label ? ' — '.$m->label : ''); $pdf->Cell(150, 6, dol_trunc($title, 80), 1, 0, 'L'); - $pdf->Cell(30, 6, $statuslabels[$st], 1, 1, 'C', true); + $pdf->Cell(30, 6, $statusmarks[$st].' '.$statuslabels[$st], 1, 1, 'C', true); $pdf->SetFont('', '', 8); $pdf->MultiCell(180, 5, netdiagPdfFlattenResult($m->result), 1, 'L'); } diff --git a/netdiagprotocol_card.php b/netdiagprotocol_card.php index a4314ef..4f84b9c 100644 --- a/netdiagprotocol_card.php +++ b/netdiagprotocol_card.php @@ -201,8 +201,18 @@ print ''; // Messungen $measObj = new NetDiagMeasurement($db); $measurements = $measObj->fetchAllByProtocol($object->id); -$statuslabels = array(0 => 'NetDiagMeasureOk', 1 => 'NetDiagMeasureWarn', 2 => 'NetDiagMeasureFail'); -$statuscss = array(0 => 'badge-status4', 1 => 'badge-status1', 2 => 'badge-status8'); +$statuslabels = array( + 0 => 'NetDiagMeasureOk', + 1 => 'NetDiagMeasureWarn', + 2 => 'NetDiagMeasureFail', + 3 => 'NetDiagMeasureUnmeasurable', +); +$statuscss = array( + 0 => 'badge-status4', + 1 => 'badge-status1', + 2 => 'badge-status8', + 3 => 'badge-status0', // grau: Test war nicht durchfuehrbar +); print '
'; print load_fiche_titre($langs->trans("NetDiagMeasurements").' ('.count($measurements).')', '', 'fa-wave-square'); print '
'; @@ -213,6 +223,10 @@ print ''; foreach ($measurements as $m) { $st = (int) $m->measure_status; + // Unbekannte Werte nie als OK durchgehen lassen (Array-Zugriff waere sonst leer) + if ($st < 0 || $st > 3) { + $st = 1; + } print ''; print ''; print '';
'.$langs->trans("Result").''.$langs->trans("M print '
'.dol_print_date($m->date_measure, 'dayhour').''.dol_escape_htmltag($m->category).'