From df075dd76aa1a7fcfd51c81be574a366eebe9e29 Mon Sep 17 00:00:00 2001 From: solocla Date: Thu, 14 May 2026 10:14:59 +0200 Subject: [PATCH] main field show in imported --- public/userarea/gridRenderer.js | 12 ++--- public/userarea/imported.php | 77 +++++++++++++++++++++++++-------- 2 files changed, 65 insertions(+), 24 deletions(-) diff --git a/public/userarea/gridRenderer.js b/public/userarea/gridRenderer.js index d8c52e4..a6d0895 100644 --- a/public/userarea/gridRenderer.js +++ b/public/userarea/gridRenderer.js @@ -463,13 +463,13 @@ const row = data[rowIndex]; switch (col.type) { - case "main_field": - div.innerHTML = createInputHTML( - col, - row.mainFieldValue || "", - rowIndex, - ); + case "main_field": { + const val = getDetailValue(rowIndex, col.key); + + div.innerHTML = createInputHTML(col, val || "", rowIndex); + break; + } case "status": { const st = row.status || "i"; diff --git a/public/userarea/imported.php b/public/userarea/imported.php index b005cf4..0ea7395 100644 --- a/public/userarea/imported.php +++ b/public/userarea/imported.php @@ -55,15 +55,22 @@ if (empty($allMappings)) { exit; } -// Trova il campo main_field -$mainFieldMapping = null; +// Find up to 2 main fields +$mainFieldMappings = []; + foreach ($allMappings as $mapping) { - if ($mapping['main_field'] == 1 && $mapping['is_visible_import'] == 1) { - $mainFieldMapping = $mapping; + if ((string)$mapping['main_field'] === '1' && (int)$mapping['is_visible_import'] === 1) { + $mainFieldMappings[] = $mapping; + } + + if (count($mainFieldMappings) >= 2) { break; } } +// Backward compatibility: first main field +$mainFieldMapping = $mainFieldMappings[0] ?? null; + // Recupera l'idclient di default dal template (se presente) $template_stmt = $pdo->prepare("SELECT idclient FROM excel_templates WHERE id = ?"); $template_stmt->execute([$template_id]); @@ -224,11 +231,18 @@ foreach ($importedData as $index => $row) { $rowObj['details'][(string)$d['mapping_id']] = $d['field_value'] ?? ''; } - // Main field value + // Main field values + foreach ($mainFieldMappings as $mainMapping) { + $mainDetail = array_filter($rowDetails, fn($d) => $d['mapping_id'] == $mainMapping['id']); + $mainDetail = reset($mainDetail) ?: ['field_value' => $mainMapping['manual_default'] ?? '']; + + $rowObj['details'][(string)$mainMapping['id']] = + $mainDetail['field_value'] ?? $mainMapping['manual_default'] ?? ''; + } + + // Backward compatibility: first main value if ($mainFieldMapping) { - $mainDetail = array_filter($rowDetails, fn($d) => $d['mapping_id'] == $mainFieldMapping['id']); - $mainDetail = reset($mainDetail) ?: ['field_value' => $mainFieldMapping['manual_default'] ?? '']; - $rowObj['mainFieldValue'] = $mainDetail['field_value'] ?? $mainFieldMapping['manual_default'] ?? ''; + $rowObj['mainFieldValue'] = $rowObj['details'][(string)$mainFieldMapping['id']] ?? ''; } $rowObj['_dirty'] = false; @@ -238,16 +252,16 @@ foreach ($importedData as $index => $row) { // Build columns in display order $gridColumns = []; -// 1. Main field -if ($mainFieldMapping) { +// 1. Main fields, maximum 2 +foreach ($mainFieldMappings as $mainMapping) { $gridColumns[] = [ 'type' => 'main_field', - 'key' => (string)$mainFieldMapping['id'], - 'label' => $mainFieldMapping['field_label'], - 'dataType' => $mainFieldMapping['data_type'], - 'isManual' => (bool)$mainFieldMapping['is_manual'], - 'isRequired' => (bool)$mainFieldMapping['is_required'], - 'fieldId' => $mainFieldMapping['field_id'] ?? null, + 'key' => (string)$mainMapping['id'], + 'label' => $mainMapping['field_label'], + 'dataType' => $mainMapping['data_type'], + 'isManual' => (bool)$mainMapping['is_manual'], + 'isRequired' => (bool)$mainMapping['is_required'], + 'fieldId' => $mainMapping['field_id'] ?? null, 'width' => 150, ]; } @@ -342,7 +356,8 @@ $gridMeta = [ 'slugMapping' => $slugMapping, 'timeLabels' => $timeLabels, 'columns' => $gridColumns, - 'mainFieldMapping' => $mainFieldMapping, + 'mainFieldMapping' => $mainFieldMapping, + 'mainFieldMappings' => $mainFieldMappings, 'totalRows' => count($gridDataArray), ]; @@ -669,7 +684,33 @@ $gridMeta = [ flex-shrink: 0; } - .grid-row .grid-header:nth-child(2) { + = 2): ?> + + /* Sticky second Main column - only when the template has 2 Main fields */ + .grid-top .grid-cell:nth-child(3), + #gridHeaderContainer .grid-header:nth-child(3), + .grid-row .grid-cell:nth-child(3) { + position: sticky !important; + left: 360px; + z-index: 7; + background: white; + overflow: visible; + flex-shrink: 0; + } + + #gridHeaderContainer .grid-header:nth-child(3) { + background-color: #e9ecef; + } + + .grid-row:nth-child(even) .grid-cell:nth-child(3) { + background-color: #f8f9fa; + } + + .grid-row:hover .grid-cell:nth-child(3) { + background-color: #e9ecef; + } + + .grid-row .grid-header:nth-child(2) { background-color: #e9ecef; }