@php $raw = is_array($pecReport->raw_data) ? $pecReport->raw_data : []; $completePecData = is_array($raw['pec_data'] ?? null) ? $raw['pec_data'] : []; $completeSections = is_array($completePecData['sections'] ?? null) ? $completePecData['sections'] : []; $completeRows = []; foreach ($completeSections as $sectionName => $items) { if (!is_array($items)) continue; foreach ($items as $fieldName => $fieldEntries) { $entries = is_array($fieldEntries) && array_is_list($fieldEntries) ? $fieldEntries : [$fieldEntries]; foreach ($entries as $entry) { $value = is_array($entry) ? ($entry['raw'] ?? ($entry['value'] ?? json_encode($entry, JSON_UNESCAPED_UNICODE))) : $entry; $completeRows[] = ['section' => (string) $sectionName, 'key' => (string) $fieldName, 'value' => (string) ($value ?? '')]; } } } $unparsedRows = is_array($completePecData['unparsed_lines'] ?? null) ? $completePecData['unparsed_lines'] : []; $machine = $raw['machine'] ?? []; $system = $raw['system'] ?? []; $position = $raw['position'] ?? []; $network = $raw['network'] ?? []; $print = $raw['print'] ?? []; $ink = $raw['ink'] ?? []; $feedCalibration = $raw['feed_calibration'] ?? []; $drying = $raw['drying'] ?? []; $heater = $raw['heater'] ?? []; $temperature = $raw['temperature'] ?? []; $headConfiguration = $raw['head_configuration'] ?? []; $headHistory = $raw['head_history'] ?? []; $adjustments = $raw['adjustments'] ?? []; $cutting = $raw['cutting'] ?? []; $maintenanceHistory = $raw['maintenance_history'] ?? []; $wiperHistory = $raw['wiper_history'] ?? []; $printHistory = $raw['print_history'] ?? []; $inkHistory = $raw['ink_history'] ?? []; $inkCartridges = $raw['ink_cartridges'] ?? []; $heaterHistory = $raw['heater_history'] ?? []; $machineEventsData = $raw['machine_events'] ?? []; $machineEvents = collect($machineEventsData['events'] ?? [])->map(function ($event) { // Some older parser versions stored a serialized event object in the event field. if (is_array($event) && isset($event['event']) && is_string($event['event'])) { $decoded = json_decode($event['event'], true); if (is_array($decoded) && (isset($decoded['event']) || isset($decoded['date']) || isset($decoded['time']))) { $event = array_merge($decoded, array_filter($event, fn ($value, $key) => $key !== 'event' && !array_key_exists($key, $decoded), ARRAY_FILTER_USE_BOTH)); } } return is_array($event) ? $event : ['event' => (string) $event]; })->all(); $eventLabel = function ($event) { $rawEvent = trim((string) ($event['event'] ?? '')); $key = mb_strtolower(preg_replace('/[\s_-]+/', ' ', $rawEvent) ?? $rawEvent); $labels = [ 'sleep out' => 'Uit slaapstand gekomen', 'sleep in' => 'Naar slaapstand gegaan', 'power on' => 'Machine ingeschakeld', 'power off' => 'Machine uitgeschakeld', 'temperature' => 'Temperatuur geregistreerd', 'cleaning' => 'Reinigingscyclus', 'normal cleaning' => 'Normale reiniging', 'medium cleaning' => 'Medium reiniging', 'powerful cleaning' => 'Krachtige reiniging', 'head refresh' => 'Printkopverversing', ]; return $labels[$key] ?? ($rawEvent !== '' ? str_replace(['_', '-'], ' ', $rawEvent) : 'Onbekende gebeurtenis'); }; $lastEventSerial = $machineEventsData['last_event_serial'] ?? null; $nvramErrors = $raw['nvram_errors'] ?? []; $fatalErrors = $raw['fatal_errors'] ?? []; $usage = $pecReport->usage->keyBy('key'); $errors = $pecReport->errors->keyBy('key'); $formatValue = function ($value, $decimals = 0) { if ($value === null || $value === '') { return '–'; } if (is_numeric($value)) { return number_format((float) $value, $decimals, ',', '.'); } return $value; }; $formatMeasurement = function ($item) use ($formatValue) { if (!is_array($item)) { return $formatValue($item); } if (($item['value'] ?? null) === null) { return $item['raw'] ?? '–'; } $value = $formatValue($item['value'], isset($item['value']) && floor((float) $item['value']) != (float) $item['value'] ? 2 : 0); return trim($value . ' ' . ($item['unit'] ?? '')); }; $statusClass = match ($pecReport->processing_status) { 'processed' => 'bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400', 'failed' => 'bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400', default => 'bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-400', }; $usageLabels = [ 'printing_time_hours' => 'Printtijd', 'printed_pages' => 'Geprinte pagina\'s', 'printed_area_m2' => 'Geprint oppervlak', 'power_on_count' => 'Power-on count', 'power_on_time_hours' => 'Power-on tijd', 'sleep_time_hours' => 'Sleep tijd', 'sheet_cut_count' => 'Sheet cut count', 'cutting_hours' => 'Cutting tijd', 'disconnect_carriage' => 'Disconnect carriage', 'maintenance_count' => 'Onderhoudsbeurten', 'maintenance_total_time' => 'Totale onderhoudstijd', 'head_refresh_count' => 'Head refresh', 'wiping_count' => 'Wiping count', 'rubbing_count' => 'Rubbing count', 'wiper_replace_count' => 'Wiper vervangen', 'uv_lamp_on_time_minutes' => 'UV-lamp branduren (minuten)', 'uv_lamp_on_count' => 'UV-lamp inschakelingen', 'mist_fan_time_hours' => 'Mist fan draaitijd', 'filter_replace_count' => 'Filter vervangen', 'motor_scan_errors' => 'Motor scan fouten', 'crash_avoidance' => 'Crash avoidance', 'ink_circulation' => 'Ink circulation', 'change_ink_type' => 'Inktsoort gewijzigd', 'ink_discharge_1' => 'Ink discharge 1', 'ink_discharge_2' => 'Ink discharge 2', 'ink_discharge_3' => 'Ink discharge 3', ]; $errorLabels = [ 'service_calls' => 'Service calls', 'motor_feed_errors' => 'Motor feed errors', 'motor_scan_errors' => 'Motor scan errors', 'low_temperature' => 'Low temperature', 'high_temperature' => 'High temperature', 'emergency_capping' => 'Emergency capping', 'start_uncapped' => 'Start uncapped', ]; $headMaintenanceLabels = [ 'wiping_count' => 'Wiping', 'head_rank_set_count' => 'Head rank set', 'normal_cleaning' => 'Normal cleaning', 'medium_cleaning' => 'Medium cleaning', 'powerful_cleaning' => 'Powerful cleaning', 'super_cleaning' => 'Super cleaning', 'light_cleaning' => 'Light cleaning', 'fill_damper' => 'Fill damper', 'empty_damper' => 'Empty damper', 'damper_cleaning' => 'Damper cleaning', ]; $adjustmentTitle = [ 'm_gap' => 'M-GAP / Media Gap Adjust', 'bi_dir' => 'BI-DIR Adjust', 'horizontal' => 'Horizontal Adjust', ]; $historyRows = collect($historyReports ?? []) ->push($pecReport) ->sortBy(function ($report) { return ($report->report_date?->format('Y-m-d') ?? '') . ' ' . ($report->report_time ?? ''); }) ->values(); $historySeries = $historyRows->map(function ($report) use ($pecReport) { $data = is_array($report->raw_data) ? $report->raw_data : []; return [ 'id' => $report->id, 'date' => $report->report_date?->format('d-m-Y') ?? '–', 'current' => $report->id === $pecReport->id, 'print_hours' => (float) data_get($data, 'print_history.printing_time.total', 0), 'maintenance_hours' => (float) data_get($data, 'maintenance_history.total_time.value', 0), ]; }); $historyMax = max( 1, (float) ($historySeries->max('print_hours') ?? 0), (float) ($historySeries->max('maintenance_hours') ?? 0) ); $printConsumption = $inkHistory['consume_by_print'] ?? []; $maintenanceConsumption = $inkHistory['consume_by_maintenance'] ?? []; $inkSlots = range(1, max(8, count($inkCartridges), count($printConsumption), count($maintenanceConsumption))); $inkMax = 1; foreach ($inkSlots as $slot) { $inkMax = max( $inkMax, (float) data_get($printConsumption, $slot . '.total', 0), (float) data_get($maintenanceConsumption, $slot . '.total', 0) ); } @endphp
@if(session('success'))
{{ session('success') }}
@endif @if(session('error'))
{{ session('error') }}
@endif
PEC Service Report · V10

{{ $pecReport->model ?: $pecReport->machine_type }}

@if($pecReport->serial_number) {{ $pecReport->serial_number }} @endif {{ $pecReport->processing_status === 'processed' ? 'Verwerkt' : ucfirst($pecReport->processing_status) }}
{{ $pecReport->customer_name ?: 'Geen klant opgegeven' }} @if($pecReport->technician_initials) · Monteur {{ $pecReport->technician_initials }} @endif @if($pecReport->report_date) · {{ $pecReport->report_date->format('d-m-Y') }} @endif @if($pecReport->report_time) · {{ $pecReport->report_time }} @endif
Parser versie: {{ $pecReport->parser_version ?? data_get($raw, 'parser_meta.version', 'onbekend') }}
@if($pecReport->stored_file_name)
Bestandsnaam: {{ $pecReport->stored_file_name }}
@endif
@if(($historyReports ?? collect())->isNotEmpty())
@endif ← Terug PEC downloaden Rapport PDF (A4)
@csrf
@foreach([ ['label' => 'Klant', 'value' => $pecReport->customer_name ?: '–'], ['label' => 'Model', 'value' => $pecReport->model ?: $pecReport->machine_type ?: '–'], ['label' => 'Serienummer', 'value' => $pecReport->serial_number ?: '–'], ['label' => 'Firmware', 'value' => $pecReport->firmware_version ?: '–'], ['label' => 'Installatiedatum', 'value' => $machine['installation_date'] ?? '–'], ] as $card)
{{ $card['label'] }}
{{ $card['value'] }}
@endforeach
@if($machine || $system)
@if($machine || $system)

System

@foreach([ 'battery' => 'Battery', 'print_light' => 'Print light', 'bluetooth' => 'Bluetooth', 'dip_switch' => 'DIP switch', 'installation_firmware_version' => 'Install firmware', ] as $key => $label) @if(isset($machine[$key]))
{{ $label }}
{{ $machine[$key] }}
@endif @endforeach @if(!empty($machine['region']))
Region
Code {{ $machine['region']['code'] ?? '–' }} / SEID {{ $machine['region']['seid'] ?? '–' }}
@endif @if(!empty($system['system_switches']))
System switch
@foreach($system['system_switches'] as $range => $value)
{{ $range }}: {{ $value }}
@endforeach
@endif
@endif @if($position)

Position

@foreach([ 'limit_position' => 'Limit position', 'cutter_down_position' => 'Cutter down position', 'flushing_position_adjust' => 'Flushing position adjust', 'wipe_position_adjust' => 'Wipe position adjust', 'micro_open_adjust_l' => 'Micro open L', 'micro_open_adjust_m' => 'Micro open M', 'micro_open_adjust_h' => 'Micro open H', 'test_print_position' => 'Test print position', ] as $key => $label) @if(isset($position[$key]))
{{ $label }}
{{ $position[$key] }}
@endif @endforeach
@endif
@endif @if($network || $print || $ink)
@if($network)

Network

@foreach([ 'dhcp' => 'DHCP', 'ip_address' => 'IP address', 'subnet_mask' => 'Subnet mask', 'gateway' => 'Gateway', 'mac_address' => 'MAC address', ] as $key => $label) @if(isset($network[$key]))
{{ $label }} {{ $network[$key] }}
@endif @endforeach
@endif @if($print)

Print

@foreach([ 'empty_mode' => 'Empty mode', 'full_width_scanning' => 'Full width scanning', 'scan_interval' => 'Scan interval', 'periodic_cleaning' => 'Periodic cleaning', 'periodic_cleaning_degree' => 'Cleaning degree', ] as $key => $label) @if(isset($print[$key]))
{{ $label }} {{ $print[$key] }}
@endif @endforeach
@endif @if($ink)

INK Info

@if(isset($ink['ink_type']))
Ink type
{{ $ink['ink_type'] }}
@endif @if(isset($ink['ink_remain']))
Ink remain
@foreach($ink['ink_remain'] as $range => $values)
{{ $range }}
{{ implode(' / ', $values) }}
@endforeach
@endif @foreach([ 'drain_liquid_volume' => 'Drain liquid volume', 'ink_pouch_tray_shake_alert' => 'Ink pouch tray shake alert', ] as $key => $label) @if(isset($ink[$key]))
{{ $label }} {{ $ink[$key] }}
@endif @endforeach
@endif
@endif @if($feedCalibration || $drying || $heater)
@if($feedCalibration)

Feed Calibration

@foreach(['user' => 'USER', 'factory' => 'FACTORY'] as $key => $label) @if(isset($feedCalibration[$key]))
{{ $label }}
{{ $feedCalibration[$key] }}
@endif @endforeach
@endif @if($drying)

Drying

@foreach([ 'preheating_type' => 'Preheating type', 'preheating_temperature' => 'Preheating temperature', 'feed_for_dry' => 'Feed for dry', 'feed_for_dry_pc' => 'Feed for dry P&C', 'drying_time' => 'Drying time', 'dry_time_pc' => 'Dry time P&C', 'option_dryer' => 'Option dryer', 'option_drying_feed_length' => 'Option drying feed length', 'blower_fan' => 'Blower fan', ] as $key => $label) @if(isset($drying[$key]))
{{ $label }} {{ $drying[$key] }}
@endif @endforeach
@endif @if($heater)

Heater

@if(isset($heater['power']))
Heater power {{ $heater['power'] }}
@endif
@foreach(['print_heater' => 'Print heater', 'dryer' => 'Dryer'] as $key => $label) @if(isset($heater['temperature'][$key]) || isset($heater['setting'][$key]) || isset($heater['adjust'][$key])) @endif @endforeach
Onderdeel Actueel Setting Adjust
{{ $label }} @if(isset($heater['temperature'][$key])) {{ $heater['temperature'][$key]['celsius'] }} °C @else – @endif @if(isset($heater['setting'][$key])) {{ $heater['setting'][$key]['celsius'] }} °C @else – @endif @if(isset($heater['adjust'][$key])) {{ $heater['adjust'][$key]['value'] }} °C @else – @endif
@endif
@endif @if($temperature)

Temperature

Temperatuurmetingen die in dit PEC-report aanwezig zijn.

@foreach([ ['label' => 'Laagste', 'value' => $temperature['lowest_celsius'] ?? null], ['label' => 'Hoogste', 'value' => $temperature['highest_celsius'] ?? null], ['label' => 'Gemiddeld', 'value' => $temperature['average_celsius'] ?? null], ] as $item)
{{ $item['label'] }}
{{ $item['value'] !== null ? number_format((float) $item['value'], 1, ',', '.') . ' °C' : '–' }}
@endforeach
@if(!empty($temperature['items']))
@foreach($temperature['items'] as $item)
{{ $item['name'] }}
{{ $formatValue($item['celsius'], 1) }} °C
@if(isset($item['fahrenheit']))
{{ $formatValue($item['fahrenheit'], 0) }} °F
@endif
@endforeach
@endif
@endif @if(($headConfiguration['physical_head_count'] ?? 0) > 0 || !empty($headHistory['shot_counters']))

Printheads

@if(!empty($headHistory['channel_layout']))

{{ $headHistory['channel_layout'] }}. De originele SHOT COUNT-records blijven hieronder aan de nozzle-rijen gekoppeld.

@endif
Koppen: {{ $headConfiguration['physical_head_count'] ?? '–' }} SHOT COUNT: {{ $headHistory['shot_count_count'] ?? 0 }} @if(isset($headHistory['physical_channels_per_head'])) Kanalen/kop: {{ $headHistory['physical_channels_per_head'] }} @endif @if(isset($headHistory['nozzle_rows_per_channel'])) Nozzle-rijen/kanaal: {{ $headHistory['nozzle_rows_per_channel'] }} @endif Head Height: {{ $headConfiguration['head_height'] ?? '–' }}
@if(!empty($headHistory['channel_mapping_status']))
Kanaalmapping: {{ $headHistory['channel_mapping_status'] }}
@endif @if(!empty($headHistory['heads']))
@foreach($headHistory['heads'] as $head)
Head H{{ $head['head_number'] }}
Rank: {{ $head['rank'] ?? '–' }}
{{ count($head['physical_channels'] ?? []) ?: ($head['channel_count'] ?? '?') }} kanalen
@if(!empty($head['physical_channels']))
@foreach($head['physical_channels'] as $physicalChannel)
Kanaal {{ $physicalChannel['channel_number'] }}
6 nozzle-rijen · SHOT {{ $physicalChannel['rows'][0]['shot_number'] ?? '–' }}–{{ $physicalChannel['rows'][5]['shot_number'] ?? '–' }}
@if($physicalChannel['ink_assignment'] ?? null) {{ $physicalChannel['ink_assignment'] }} @else Ink niet uit PEC bepaald @endif
@foreach($physicalChannel['rows'] as $row) @endforeach
Rij SHOT Trip Total Clear
{{ $row['row'] }} {{ $row['shot_number'] }} {{ $formatValue($row['trip']) }} {{ $formatValue($row['total']) }} {{ $row['clear'] ?? '–' }}
@endforeach
Alle originele SHOT COUNT-records van H{{ $head['head_number'] }} tonen
@foreach($head['channels'] as $channel) @endforeach
SHOT Trip Total Clear
{{ $channel['shot_number'] }} {{ $formatValue($channel['trip']) }} {{ $formatValue($channel['total']) }} {{ $channel['clear'] ?? '–' }}
@else {{-- Fallback voor oudere/andere PEC-formaten: bestaande weergave blijft werken. --}}
@forelse($head['channels'] as $channel) @empty @endforelse
SHOT COUNT Trip Total Clear
{{ $channel['shot_number'] }} {{ $formatValue($channel['trip']) }} {{ $formatValue($channel['total']) }} {{ $channel['clear'] ?? '–' }}
Geen SHOT COUNT-regels aan deze kop gekoppeld.
@endif @if(!empty($head['maintenance']))
Head maintenance
@foreach($headMaintenanceLabels as $key => $label) @if(isset($head['maintenance'][$key]))
{{ $label }}
{{ $formatValue($head['maintenance'][$key]) }}
@endif @endforeach
@endif
@endforeach
@endif
@endif @foreach(['m_gap', 'bi_dir', 'horizontal'] as $adjustmentKey) @php $adjustment = $adjustments[$adjustmentKey] ?? null; @endphp @if($adjustment && !empty($adjustment['rows']))

{{ $adjustmentTitle[$adjustmentKey] }}

Waarden rechtstreeks uit het PEC-report.
@foreach($adjustment['rows'] as $row) @endforeach
Groep Parameter PEC waarde
{{ $row['group'] ?? '–' }} {{ $row['label'] }} {{ $row['raw'] }}
@endif @endforeach @if($cutting)

Cutting

@foreach([ 'force' => 'Cutting force', 'velocity' => 'Velocity', 'offset' => 'Offset', 'up_velocity' => 'Up velocity', 'calibration_feed' => 'Calibration feed', 'calibration_scan' => 'Calibration scan', ] as $key => $label) @if(isset($cutting[$key]))
{{ $label }}
{{ $formatMeasurement($cutting[$key]) }}
@endif @endforeach
@php $cuttingOptional = [ 'print_cut_adjust_feed_user' => 'Print-cut adjust feed (user)', 'print_cut_adjust_scan_user' => 'Print-cut adjust scan (user)', 'crop_cut_adjust_feed_user' => 'Crop-cut adjust feed (user)', 'crop_cut_adjust_scan_user' => 'Crop-cut adjust scan (user)', 'force_adjust_low' => 'Force adjust low', 'force_adjust_high' => 'Force adjust high', 'print_cut_adjust_feed_factory' => 'Print-cut adjust feed (factory)', 'print_cut_adjust_scan_factory' => 'Print-cut adjust scan (factory)', 'crop_cut_adjust_feed_factory' => 'Crop-cut adjust feed (factory)', 'crop_cut_adjust_scan_factory' => 'Crop-cut adjust scan (factory)', 'crop_sensor_level_factory' => 'Crop sensor level (factory)', 'crop_sensor_adjust' => 'Crop sensor adjust', 'cutting_priority' => 'Cutting priority', 'prefeed' => 'Prefeed', 'over_cut' => 'Over cut', ]; @endphp @if(array_intersect_key($cutting, $cuttingOptional))
@foreach($cuttingOptional as $key => $label) @if(isset($cutting[$key]))
{{ $label }} {{ $formatMeasurement($cutting[$key]) }}
@endif @endforeach
@endif
@endif @if($usage->count())

Machinegebruik

Gebruikstellers uit het PEC service report.

@foreach($usageLabels as $key => $label) @if(isset($usage[$key])) @php $item = $usage[$key]; @endphp
{{ $label }}
{{ $formatValue($item->value) }}
@if($item->unit)
{{ $item->unit }}
@endif
@endif @endforeach
@endif @if($errors->count())

Storingen & counters

@foreach($errorLabels as $key => $label) @if(isset($errors[$key]))
{{ $label }}
{{ $formatValue($errors[$key]->value) }}
@endif @endforeach
@endif @if($maintenanceHistory || $printHistory || $historySeries->count() > 1)

Maintenance & Print

Vergelijking van geregistreerde printtijd en maintenance-tijd per PEC-report van dit serienummer.

Print Maintenance
@foreach($historySeries as $row)
{{ $row['date'] }}{{ $row['current'] ? ' · huidig' : '' }} Print {{ $formatValue($row['print_hours'], 1) }} h · Maintenance {{ $formatValue($row['maintenance_hours'], 1) }} h
Print
Maintenance
@endforeach
@endif @if($maintenanceHistory)

Maintenance History

@foreach([ 'maintenance_count' => 'Maintenance count', 'total_time' => 'Total time', 'printing_time' => 'Printing time', ] as $key => $label) @if(isset($maintenanceHistory[$key])) @php $item = $maintenanceHistory[$key]; @endphp
{{ $label }}
{{ $formatValue($item['value']) }}
{{ $item['unit'] ?? '' }}
@endif @endforeach
@endif @if($wiperHistory)

Wiper History

@foreach([ 'wiping_count' => 'Wiping', 'replace_wiper_count' => 'Replace wiper', 'wash_wiper_count' => 'Wash wiper', 'tray_cleaning_count' => 'Tray cleaning', ] as $key => $label) @if(isset($wiperHistory[$key])) @php $item = $wiperHistory[$key]; @endphp
{{ $label }}
{{ $formatValue($item['value']) }}
{{ $item['unit'] ?? '' }}
@endif @endforeach
@endif @if($inkHistory)

Ink History

Cumulatieve inkconsumptie per slot: print tegenover maintenance.

Print Maintenance
@foreach($inkSlots as $slot) @php $printTotal = (float) data_get($printConsumption, $slot . '.total', 0); $maintenanceTotal = (float) data_get($maintenanceConsumption, $slot . '.total', 0); @endphp
Slot {{ $slot }}
{{ $formatValue($printTotal, 1) }} cc print · {{ $formatValue($maintenanceTotal, 1) }} cc maintenance
Print
Maintenance
@endforeach
@endif @if(!empty($inkCartridges))

Ink Cartridge Info

@foreach($inkCartridges as $cartridge) @endforeach
Slot Ink type Serial Cap. Lot In gebruik Consume INS EMP / Flag
{{ $cartridge['slot'] ?? '–' }} {{ $cartridge['ink_type'] ?? '–' }} {{ $cartridge['serial'] ?? '–' }} {{ $cartridge['capacity_cc'] ?? '–' }} cc {{ $cartridge['lot_number'] ?? '–' }} {{ $cartridge['elapsed_time'] ?? $cartridge['start_date'] ?? '–' }} {{ isset($cartridge['consume_cc']) ? $formatValue($cartridge['consume_cc'], 3) . ' cc' : '–' }} {{ $cartridge['insert_count'] ?? '–' }} {{ $cartridge['empty_count'] ?? $cartridge['flag'] ?? '–' }}
@endif @if(!empty($heaterHistory))

Heater History

@foreach($heaterHistory as $item)
{{ $item['key'] ?? '–' }}
{{ $formatValue($item['value'] ?? null) }}
{{ $item['unit'] ?? '' }}
@endforeach
@endif @if($pecReport->motors->count())

Motoren & pompen

@foreach($pecReport->motors as $motor) @endforeach
Onderdeel Trip Totaal
{{ $motor->name }} {{ $formatValue($motor->trip_value) }} {{ $motor->unit }} {{ $formatValue($motor->total_value) }} {{ $motor->unit }}
@endif @if($machineEvents)

Machine Event Log

Laatste events uit dit PEC-report.

@if($lastEventSerial !== null)
Last event serial no.: {{ $lastEventSerial }}
@endif
@foreach($machineEvents as $event) @endforeach
Datum Tijd Categorie Gebeurtenis
{{ $event['date'] ?? '–' }} {{ $event['time'] ?? '–' }} {{ match(strtolower((string)($event['category'] ?? 'other'))) { 'other' => 'Overig', 'error' => 'Fout', 'warning' => 'Waarschuwing', 'maintenance' => 'Onderhoud', 'temperature' => 'Temperatuur', default => ucfirst((string)($event['category'] ?? 'Overig')) } }} {{ $eventLabel($event) }} @if(($event['event'] ?? '') !== $eventLabel($event))({{ $event['event'] }})@endif
@endif @if($nvramErrors || $fatalErrors)
@if($nvramErrors)

NVRAM errors

@foreach($nvramErrors as $key => $values)
{{ ucfirst($key) }} {{ implode(' / ', $values) }}
@endforeach
@endif @if($fatalErrors)

Fatal Error Log

@foreach($fatalErrors as $error)
{{ $error['type'] ?? '–' }} {{ $error['code_1'] ?? '' }}, {{ $error['code_2'] ?? '' }}
@endforeach
@endif
@endif @if(count($completeRows) || count($unparsedRows))
Alle uitgelezen PEC-gegevens {{ count($completeRows) }} parameters · formaat: {{ $completePecData['format'] ?? 'onbekend' }}

Dit overzicht toont ook model-specifieke waarden die nog niet in een eigen diagnosekaart zijn opgenomen. Herhaalde waarden en presets blijven zichtbaar.

@foreach($completeRows as $row) @endforeach @foreach($unparsedRows as $row) @if(is_array($row)) @endif @endforeach
Sectie Parameter Waarde uit PEC
{{ $row['section'] }} {{ str_replace('_', ' ', $row['key']) }} {{ $row['value'] !== '' ? $row['value'] : '–' }}
{{ $row['section'] ?? 'Overig' }} Ongeparseerde regel {{ $row['text'] ?? '' }}
@endif

Bestand

{{ $pecReport->original_file_name }}
{{ $pecReport->file_path }}
Download