main field show in imported

This commit is contained in:
Claudio 2026-05-14 10:14:59 +02:00
parent 6460454201
commit df075dd76a
2 changed files with 65 additions and 24 deletions

View File

@ -463,13 +463,13 @@
const row = data[rowIndex]; const row = data[rowIndex];
switch (col.type) { switch (col.type) {
case "main_field": case "main_field": {
div.innerHTML = createInputHTML( const val = getDetailValue(rowIndex, col.key);
col,
row.mainFieldValue || "", div.innerHTML = createInputHTML(col, val || "", rowIndex);
rowIndex,
);
break; break;
}
case "status": { case "status": {
const st = row.status || "i"; const st = row.status || "i";

View File

@ -55,15 +55,22 @@ if (empty($allMappings)) {
exit; exit;
} }
// Trova il campo main_field // Find up to 2 main fields
$mainFieldMapping = null; $mainFieldMappings = [];
foreach ($allMappings as $mapping) { foreach ($allMappings as $mapping) {
if ($mapping['main_field'] == 1 && $mapping['is_visible_import'] == 1) { if ((string)$mapping['main_field'] === '1' && (int)$mapping['is_visible_import'] === 1) {
$mainFieldMapping = $mapping; $mainFieldMappings[] = $mapping;
}
if (count($mainFieldMappings) >= 2) {
break; break;
} }
} }
// Backward compatibility: first main field
$mainFieldMapping = $mainFieldMappings[0] ?? null;
// Recupera l'idclient di default dal template (se presente) // Recupera l'idclient di default dal template (se presente)
$template_stmt = $pdo->prepare("SELECT idclient FROM excel_templates WHERE id = ?"); $template_stmt = $pdo->prepare("SELECT idclient FROM excel_templates WHERE id = ?");
$template_stmt->execute([$template_id]); $template_stmt->execute([$template_id]);
@ -224,11 +231,18 @@ foreach ($importedData as $index => $row) {
$rowObj['details'][(string)$d['mapping_id']] = $d['field_value'] ?? ''; $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) { if ($mainFieldMapping) {
$mainDetail = array_filter($rowDetails, fn($d) => $d['mapping_id'] == $mainFieldMapping['id']); $rowObj['mainFieldValue'] = $rowObj['details'][(string)$mainFieldMapping['id']] ?? '';
$mainDetail = reset($mainDetail) ?: ['field_value' => $mainFieldMapping['manual_default'] ?? ''];
$rowObj['mainFieldValue'] = $mainDetail['field_value'] ?? $mainFieldMapping['manual_default'] ?? '';
} }
$rowObj['_dirty'] = false; $rowObj['_dirty'] = false;
@ -238,16 +252,16 @@ foreach ($importedData as $index => $row) {
// Build columns in display order // Build columns in display order
$gridColumns = []; $gridColumns = [];
// 1. Main field // 1. Main fields, maximum 2
if ($mainFieldMapping) { foreach ($mainFieldMappings as $mainMapping) {
$gridColumns[] = [ $gridColumns[] = [
'type' => 'main_field', 'type' => 'main_field',
'key' => (string)$mainFieldMapping['id'], 'key' => (string)$mainMapping['id'],
'label' => $mainFieldMapping['field_label'], 'label' => $mainMapping['field_label'],
'dataType' => $mainFieldMapping['data_type'], 'dataType' => $mainMapping['data_type'],
'isManual' => (bool)$mainFieldMapping['is_manual'], 'isManual' => (bool)$mainMapping['is_manual'],
'isRequired' => (bool)$mainFieldMapping['is_required'], 'isRequired' => (bool)$mainMapping['is_required'],
'fieldId' => $mainFieldMapping['field_id'] ?? null, 'fieldId' => $mainMapping['field_id'] ?? null,
'width' => 150, 'width' => 150,
]; ];
} }
@ -343,6 +357,7 @@ $gridMeta = [
'timeLabels' => $timeLabels, 'timeLabels' => $timeLabels,
'columns' => $gridColumns, 'columns' => $gridColumns,
'mainFieldMapping' => $mainFieldMapping, 'mainFieldMapping' => $mainFieldMapping,
'mainFieldMappings' => $mainFieldMappings,
'totalRows' => count($gridDataArray), 'totalRows' => count($gridDataArray),
]; ];
@ -669,7 +684,33 @@ $gridMeta = [
flex-shrink: 0; flex-shrink: 0;
} }
.grid-row .grid-header:nth-child(2) { <?php if (isset($mainFieldMappings) && count($mainFieldMappings) >= 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;
}
<?php endif; ?>.grid-row .grid-header:nth-child(2) {
background-color: #e9ecef; background-color: #e9ecef;
} }