fix SceltaMultipla mapping
This commit is contained in:
@@ -460,9 +460,7 @@ $apiSampleJson = $template['api_sample_json'] ?? '';
|
|||||||
$autoValue = $mapping['auto_value'] ?? 'none';
|
$autoValue = $mapping['auto_value'] ?? 'none';
|
||||||
$hasAuto = ($autoValue && $autoValue !== 'none');
|
$hasAuto = ($autoValue && $autoValue !== 'none');
|
||||||
|
|
||||||
if ($isSceltaMultipla) {
|
if ($hasAuto && !$isSceltaMultipla) {
|
||||||
$mappingValue = 'manual';
|
|
||||||
} elseif ($hasAuto) {
|
|
||||||
$mappingValue = 'auto';
|
$mappingValue = 'auto';
|
||||||
} elseif ($sourceType === 'XLS' && !empty($mapping['excel_column'])) {
|
} elseif ($sourceType === 'XLS' && !empty($mapping['excel_column'])) {
|
||||||
$mappingValue = 'xls';
|
$mappingValue = 'xls';
|
||||||
@@ -471,24 +469,26 @@ $apiSampleJson = $template['api_sample_json'] ?? '';
|
|||||||
} elseif ((int)$mapping['is_manual'] === 1) {
|
} elseif ((int)$mapping['is_manual'] === 1) {
|
||||||
$mappingValue = 'manual';
|
$mappingValue = 'manual';
|
||||||
} else {
|
} else {
|
||||||
$mappingValue = '';
|
// SceltaMultipla senza colonna: valore di default dal dropdown
|
||||||
|
$mappingValue = $isSceltaMultipla ? 'manual' : '';
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<select class="form-select mapping-select"
|
<select class="form-select mapping-select"
|
||||||
data-id="<?php echo (int)$mapping['id']; ?>"
|
data-id="<?php echo (int)$mapping['id']; ?>"
|
||||||
data-field-id="<?php echo (int)$mapping['field_id']; ?>"
|
data-field-id="<?php echo (int)$mapping['field_id']; ?>">
|
||||||
<?php echo $isSceltaMultipla ? 'disabled' : ''; ?>>
|
|
||||||
|
|
||||||
<?php if (!$isSceltaMultipla): ?>
|
<?php if (!$isSceltaMultipla): ?>
|
||||||
<option value="">Select Option</option>
|
<option value="">Select Option</option>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
<?php if ($sourceType === 'XLS'): ?>
|
<?php if ($sourceType === 'XLS'): ?>
|
||||||
<option value="xls" <?php echo ($mappingValue === 'xls') ? 'selected' : ''; ?>>Map to XLS Column</option>
|
<option value="xls" <?php echo ($mappingValue === 'xls') ? 'selected' : ''; ?>>Map to XLS Column</option>
|
||||||
<?php elseif ($sourceType === 'API'): ?>
|
<?php elseif ($sourceType === 'API'): ?>
|
||||||
<option value="json" <?php echo ($mappingValue === 'json') ? 'selected' : ''; ?>>Map to JSON Node</option>
|
<option value="json" <?php echo ($mappingValue === 'json') ? 'selected' : ''; ?>>Map to JSON Node</option>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
|
||||||
|
<?php if (!$isSceltaMultipla): ?>
|
||||||
<option value="auto" <?php echo ($mappingValue === 'auto') ? 'selected' : ''; ?>>Auto value</option>
|
<option value="auto" <?php echo ($mappingValue === 'auto') ? 'selected' : ''; ?>>Auto value</option>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
|
||||||
@@ -544,6 +544,7 @@ $apiSampleJson = $template['api_sample_json'] ?? '';
|
|||||||
|
|
||||||
<td>
|
<td>
|
||||||
<?php if ($mapping['data_type'] === 'SceltaMultipla'): ?>
|
<?php if ($mapping['data_type'] === 'SceltaMultipla'): ?>
|
||||||
|
<div class="scelta-default-wrap" style="display:<?php echo ($mappingValue === 'xls' || $mappingValue === 'json') ? 'none' : 'block'; ?>;">
|
||||||
<select class="form-select dropdown-select manual-default"
|
<select class="form-select dropdown-select manual-default"
|
||||||
data-id="<?php echo (int)$mapping['id']; ?>"
|
data-id="<?php echo (int)$mapping['id']; ?>"
|
||||||
data-field-id="<?php echo (int)$mapping['field_id']; ?>"
|
data-field-id="<?php echo (int)$mapping['field_id']; ?>"
|
||||||
@@ -551,6 +552,10 @@ $apiSampleJson = $template['api_sample_json'] ?? '';
|
|||||||
style="display:block;">
|
style="display:block;">
|
||||||
<option value="">Seleziona...</option>
|
<option value="">Seleziona...</option>
|
||||||
</select>
|
</select>
|
||||||
|
</div>
|
||||||
|
<small class="text-muted scelta-binding-hint" style="display:<?php echo ($mappingValue === 'xls' || $mappingValue === 'json') ? 'block' : 'none'; ?>;">
|
||||||
|
Values from the file are linked to the LIMS list via Value Bindings
|
||||||
|
</small>
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
<input type="text"
|
<input type="text"
|
||||||
class="form-control manual-default"
|
class="form-control manual-default"
|
||||||
@@ -1751,6 +1756,17 @@ $apiSampleJson = $template['api_sample_json'] ?? '';
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SceltaMultipla: il default è un dropdown (Select2) nel wrapper; con colonna/nodo
|
||||||
|
// mappato si nasconde (il valore arriva dal file e passa dal binding).
|
||||||
|
const sceltaWrap = tr.querySelector('.scelta-default-wrap');
|
||||||
|
const sceltaHint = tr.querySelector('.scelta-binding-hint');
|
||||||
|
if (sceltaWrap) {
|
||||||
|
const fromFile = mappingSelect.value === 'xls' || mappingSelect.value === 'json';
|
||||||
|
sceltaWrap.style.display = fromFile ? 'none' : 'block';
|
||||||
|
if (sceltaHint) sceltaHint.style.display = fromFile ? 'block' : 'none';
|
||||||
|
}
|
||||||
|
const isScelta = !!sceltaWrap;
|
||||||
|
|
||||||
if (mappingSelect.value === 'xls') {
|
if (mappingSelect.value === 'xls') {
|
||||||
if (xlsSelect) xlsSelect.style.display = 'block';
|
if (xlsSelect) xlsSelect.style.display = 'block';
|
||||||
|
|
||||||
@@ -1762,7 +1778,7 @@ $apiSampleJson = $template['api_sample_json'] ?? '';
|
|||||||
|
|
||||||
if (autoSelect) autoSelect.style.display = 'none';
|
if (autoSelect) autoSelect.style.display = 'none';
|
||||||
|
|
||||||
if (manualInput) {
|
if (manualInput && !isScelta) {
|
||||||
manualInput.style.display = 'none';
|
manualInput.style.display = 'none';
|
||||||
manualInput.value = '';
|
manualInput.value = '';
|
||||||
}
|
}
|
||||||
@@ -1785,7 +1801,7 @@ $apiSampleJson = $template['api_sample_json'] ?? '';
|
|||||||
|
|
||||||
if (autoSelect) autoSelect.style.display = 'none';
|
if (autoSelect) autoSelect.style.display = 'none';
|
||||||
|
|
||||||
if (manualInput) {
|
if (manualInput && !isScelta) {
|
||||||
manualInput.style.display = 'none';
|
manualInput.style.display = 'none';
|
||||||
manualInput.value = '';
|
manualInput.value = '';
|
||||||
}
|
}
|
||||||
@@ -1831,7 +1847,7 @@ $apiSampleJson = $template['api_sample_json'] ?? '';
|
|||||||
jsonSelect.value = '';
|
jsonSelect.value = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (manualInput) {
|
if (manualInput && !isScelta) {
|
||||||
manualInput.style.display = 'none';
|
manualInput.style.display = 'none';
|
||||||
manualInput.value = '';
|
manualInput.value = '';
|
||||||
}
|
}
|
||||||
@@ -1855,7 +1871,7 @@ $apiSampleJson = $template['api_sample_json'] ?? '';
|
|||||||
|
|
||||||
if (autoSelect) autoSelect.style.display = 'none';
|
if (autoSelect) autoSelect.style.display = 'none';
|
||||||
|
|
||||||
if (manualInput) {
|
if (manualInput && !isScelta) {
|
||||||
manualInput.style.display = 'none';
|
manualInput.style.display = 'none';
|
||||||
manualInput.value = '';
|
manualInput.value = '';
|
||||||
}
|
}
|
||||||
@@ -2064,7 +2080,7 @@ $apiSampleJson = $template['api_sample_json'] ?? '';
|
|||||||
mappingSelect.value = '';
|
mappingSelect.value = '';
|
||||||
if (mappedColumn) mappedColumn.style.display = 'none';
|
if (mappedColumn) mappedColumn.style.display = 'none';
|
||||||
e.target.style.display = 'none';
|
e.target.style.display = 'none';
|
||||||
saveMapping(mappingId, '', '', null, null, null);
|
if (!resetSceltaToManual(tr, mappingId)) saveMapping(mappingId, '', '', null, null, null);
|
||||||
updateXlsDropdowns();
|
updateXlsDropdowns();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -2144,7 +2160,7 @@ $apiSampleJson = $template['api_sample_json'] ?? '';
|
|||||||
console.log("Removing XLS mapping:", {
|
console.log("Removing XLS mapping:", {
|
||||||
id: mappingId
|
id: mappingId
|
||||||
});
|
});
|
||||||
saveMapping(mappingId, '', '', null, null, null);
|
if (!resetSceltaToManual(tr, mappingId)) saveMapping(mappingId, '', '', null, null, null);
|
||||||
updateXlsDropdowns();
|
updateXlsDropdowns();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -2174,11 +2190,26 @@ $apiSampleJson = $template['api_sample_json'] ?? '';
|
|||||||
|
|
||||||
event.target.style.display = 'none';
|
event.target.style.display = 'none';
|
||||||
|
|
||||||
saveMapping(mappingId, '', '', null, null, null);
|
if (!resetSceltaToManual(tr, mappingId)) saveMapping(mappingId, '', '', null, null, null);
|
||||||
updateJsonDropdowns();
|
updateJsonDropdowns();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Rimozione colonna/nodo: un campo SceltaMultipla torna a "Manual Entry" col suo dropdown default
|
||||||
|
// (non ha l'opzione vuota). Ritorna true se gestito.
|
||||||
|
function resetSceltaToManual(tr, mappingId) {
|
||||||
|
const wrap = tr.querySelector('.scelta-default-wrap');
|
||||||
|
if (!wrap) return false;
|
||||||
|
const sel = tr.querySelector('.mapping-select');
|
||||||
|
if (sel) sel.value = 'manual';
|
||||||
|
wrap.style.display = 'block';
|
||||||
|
const hint = tr.querySelector('.scelta-binding-hint');
|
||||||
|
if (hint) hint.style.display = 'none';
|
||||||
|
const dd = tr.querySelector('select.manual-default.dropdown-select');
|
||||||
|
saveMapping(mappingId, 'manual', dd ? dd.value : '', null, null, null);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
function saveMapping(mappingId, mappingType, defaultValue, excelColumn, autoValue, jsonNode) {
|
function saveMapping(mappingId, mappingType, defaultValue, excelColumn, autoValue, jsonNode) {
|
||||||
console.log("Saving mapping:", {
|
console.log("Saving mapping:", {
|
||||||
id: mappingId,
|
id: mappingId,
|
||||||
|
|||||||
Reference in New Issue
Block a user