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];
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";

View File

@ -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) {
<?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;
}