fixed main field

This commit is contained in:
Claudio 2026-05-14 10:00:47 +02:00
parent 574ddbbd32
commit 6460454201
2 changed files with 28 additions and 21 deletions

View File

@ -1569,9 +1569,14 @@ $apiSampleJson = $template['api_sample_json'] ?? '';
const mappingId = checkbox.dataset.mappingId; const mappingId = checkbox.dataset.mappingId;
const value = checkbox.checked ? 1 : 0; const value = checkbox.checked ? 1 : 0;
const checkedMainFields = document.querySelectorAll('.main-field-checkbox:checked'); // Count only the other Main fields already checked in this table
const otherCheckedMainFields = Array.from(
document.querySelectorAll('#schemaFieldsBody .main-field-checkbox')
).filter(cb => cb !== checkbox && cb.checked);
if (checkedMainFields.length > 2) { // If I am checking this one, I can have max 2 total:
// this checkbox + max 1 other already checked
if (checkbox.checked && otherCheckedMainFields.length >= 2) {
checkbox.checked = false; checkbox.checked = false;
alert('Puoi selezionare al massimo 2 campi Main.'); alert('Puoi selezionare al massimo 2 campi Main.');
return; return;
@ -1593,7 +1598,7 @@ $apiSampleJson = $template['api_sample_json'] ?? '';
if (!data.success) { if (!data.success) {
console.error("❌ Error updating main_field:", data.message); console.error("❌ Error updating main_field:", data.message);
document.querySelectorAll('.main-field-checkbox').forEach(cb => { document.querySelectorAll('#schemaFieldsBody .main-field-checkbox').forEach(cb => {
cb.checked = cb.dataset.originalChecked === 'true'; cb.checked = cb.dataset.originalChecked === 'true';
}); });
@ -1601,14 +1606,14 @@ $apiSampleJson = $template['api_sample_json'] ?? '';
return; return;
} }
document.querySelectorAll('.main-field-checkbox').forEach(cb => { document.querySelectorAll('#schemaFieldsBody .main-field-checkbox').forEach(cb => {
cb.dataset.originalChecked = cb.checked ? 'true' : 'false'; cb.dataset.originalChecked = cb.checked ? 'true' : 'false';
}); });
}) })
.catch(error => { .catch(error => {
console.error("❌ Fetch error:", error); console.error("❌ Fetch error:", error);
document.querySelectorAll('.main-field-checkbox').forEach(cb => { document.querySelectorAll('#schemaFieldsBody .main-field-checkbox').forEach(cb => {
cb.checked = cb.dataset.originalChecked === 'true'; cb.checked = cb.dataset.originalChecked === 'true';
}); });
@ -1661,9 +1666,9 @@ $apiSampleJson = $template['api_sample_json'] ?? '';
}); });
// Salva lo stato originale dei checkbox al caricamento // Save original Main checkbox state
document.querySelectorAll('.main-field-checkbox').forEach(cb => { document.querySelectorAll('#schemaFieldsBody .main-field-checkbox').forEach(cb => {
cb.dataset.originalChecked = cb.checked; cb.dataset.originalChecked = cb.checked ? 'true' : 'false';
}); });
// AUTO VALUE select change -> save auto_value // AUTO VALUE select change -> save auto_value

View File

@ -7,13 +7,15 @@ include('include/headscript.php');
header('Content-Type: application/json'); header('Content-Type: application/json');
// Read JSON payload
$data = json_decode(file_get_contents('php://input'), true); $data = json_decode(file_get_contents('php://input'), true);
$template_id = intval($data['template_id'] ?? 0); $template_id = intval($data['template_id'] ?? 0);
$mapping_id = intval($data['mapping_id'] ?? 0); $mapping_id = intval($data['mapping_id'] ?? 0);
$value = intval($data['value'] ?? 0); $value = intval($data['value'] ?? 0);
// IMPORTANT: main_field may be ENUM('0','1'), so use string values
$mainValue = ($value === 1) ? '1' : '0';
if ($template_id <= 0 || $mapping_id <= 0) { if ($template_id <= 0 || $mapping_id <= 0) {
echo json_encode(['success' => false, 'message' => 'Invalid IDs']); echo json_encode(['success' => false, 'message' => 'Invalid IDs']);
exit; exit;
@ -25,13 +27,12 @@ $pdo = $db->getConnection();
try { try {
$pdo->beginTransaction(); $pdo->beginTransaction();
// If user is trying to activate a Main field, check current number of active Main fields if ($mainValue === '1') {
if ($value === 1) {
$stmt = $pdo->prepare(" $stmt = $pdo->prepare("
SELECT COUNT(*) SELECT COUNT(*)
FROM template_mapping FROM template_mapping
WHERE template_id = ? WHERE template_id = ?
AND main_field = 1 AND main_field = '1'
AND id <> ? AND id <> ?
"); ");
$stmt->execute([$template_id, $mapping_id]); $stmt->execute([$template_id, $mapping_id]);
@ -39,22 +40,23 @@ try {
if ($currentMainCount >= 2) { if ($currentMainCount >= 2) {
$pdo->rollBack(); $pdo->rollBack();
echo json_encode([ echo json_encode([
'success' => false, 'success' => false,
'message' => 'Maximum 2 Main fields allowed' 'message' => 'Maximum 2 Main fields allowed',
'currentMainCount' => $currentMainCount
]); ]);
exit; exit;
} }
} }
// Update only this mapping
$stmt = $pdo->prepare(" $stmt = $pdo->prepare("
UPDATE template_mapping UPDATE template_mapping
SET main_field = ? SET main_field = ?
WHERE id = ? WHERE id = ?
AND template_id = ? AND template_id = ?
"); ");
$stmt->execute([$value, $mapping_id, $template_id]); $stmt->execute([$mainValue, $mapping_id, $template_id]);
$pdo->commit(); $pdo->commit();