Non puoi selezionare più di 25 argomenti
Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
145 righe
6.2 KiB
145 righe
6.2 KiB
<?php |
|
|
|
use App\WGS\Utils\Dto\ProvinceDistrictCellDto\ProvinceCellDto; |
|
|
|
/** |
|
* @var ProvinceCellDto $provinceConfig |
|
*/ |
|
|
|
$options = [ |
|
"id" => $provinceConfig->fieldId, |
|
'label' => __($provinceConfig->fieldLabel), |
|
'type' => $provinceConfig->fieldType->value, |
|
"empty" => true, |
|
'options' => $provinces ?? [], |
|
'disabled' => $provinceConfig->disabled, |
|
'required' => $provinceConfig->fieldRequired |
|
]; |
|
|
|
if (!empty($provinceConfig->fieldValue)) { |
|
$options['value'] = $provinceConfig->fieldValue; |
|
} |
|
|
|
$formContext = $provinceConfig->formContext ?? null; |
|
|
|
/** |
|
* Passo il contesto perchè CakePHP genera una nuova VIEW e altrimenti non sarebbe visibile alla view dell'element. |
|
* Vedi caso in cui dobbiamo gestire il valore selected per edit o view |
|
* Inoltre anche nel caso di errori in questo caso manteniamo la gestione nativa di cakephp. |
|
*/ |
|
if (isset($formContext)) { |
|
$this->Form->create($formContext, ['type' => 'context', 'id' => false, 'url' => false]); |
|
} |
|
?> |
|
|
|
<?php if ($provinceConfig->fieldId !== null && $provinceConfig->fieldName !== null): ?> |
|
<?= $this->Form->control($provinceConfig->fieldName, $options) ?> |
|
|
|
<script> |
|
(() => { |
|
"use strict"; |
|
|
|
function initializeProvinceSelect(field_id, provinceSelect) { |
|
if (provinceSelect.length > 0) { |
|
console.log("chiamo initialize"); |
|
const isDisabled = provinceSelect.prop('disabled'); |
|
console.log('is disabled', isDisabled) |
|
provinceSelect.select2({ |
|
disabled: isDisabled, |
|
}); |
|
|
|
/** |
|
* Controlliamo se è stata flaggata la necessità di fare auto fill. |
|
*/ |
|
const isFillTargetEnabled = "<?= $provinceConfig->autoFillTargetEnabled ?>"; |
|
if (isFillTargetEnabled) { |
|
provinceSelect.on('change', function (e) { |
|
const targetField = document.getElementById("<?= $provinceConfig->autoFillTargetId ?>"); |
|
if (targetField) { |
|
if (provinceSelect.val() !== "") { |
|
let sigla = ""; |
|
|
|
switch (provinceSelect.val().toLowerCase()) { |
|
case "catania": |
|
sigla = "CT"; |
|
break; |
|
case "palermo": |
|
sigla = "PA"; |
|
break; |
|
case "caltanissetta": |
|
sigla = "CL"; |
|
break; |
|
case "enna": |
|
sigla = "EN"; |
|
break; |
|
case "ragusa": |
|
sigla = "RG"; |
|
break; |
|
case "siracusa": |
|
sigla = "SR"; |
|
break; |
|
case "trapani": |
|
sigla = "TP"; |
|
break; |
|
case "messina": |
|
sigla = "ME"; |
|
break; |
|
case "agrigento": |
|
sigla = "AG"; |
|
break; |
|
default: |
|
sigla = ""; // |
|
} |
|
targetField.value = "GC " + sigla; |
|
} else { |
|
targetField.value = ""; |
|
} |
|
} |
|
}); |
|
} |
|
} |
|
} |
|
|
|
window.addEventListener('DOMContentLoaded', function () { |
|
const fieldId = '<?= $provinceConfig->fieldId ?>'; |
|
const provinceSelect = $('[id="' + fieldId + '"]') |
|
// di base al dom content loaded chimiamo l'initialize |
|
initializeProvinceSelect(fieldId, provinceSelect); |
|
}); |
|
|
|
/** |
|
* Questo è un custom event progettato solo per ascoltare un evento custom. |
|
* L'evento custom viene scatenato dal tasto aggiungi per inserire un nuovo applicants. |
|
* Questo garantisce di inizializzare opportunamente la nuova select appena inserita. |
|
* Da considerare che nei casi in cui l'element o la cell non vengono utilizzate nel contesto di |
|
* applicants, questo evento non verrà mai scatenato a meno di dispatch espliciti. |
|
* Questo garantisce che il codice all'interno non venga mai invocato. |
|
* Pertanto non serve inserire altri controlli all'interno al momento. |
|
*/ |
|
window.addEventListener('applicantBlockAdded', (e) => { |
|
console.log("fired event"); |
|
const fieldId = '<?= $provinceConfig->fieldId ?>'; |
|
const provinceSelect = $('[id="' + fieldId + '"]') |
|
|
|
const applicants_id = e.detail.id; |
|
// Se per qualsiasi motivo arriva un id nullo non facciamo nulla. |
|
if (applicants_id === null) { |
|
console.error("applicants id is null"); |
|
return; |
|
} |
|
const addedFieldId = `applicants-${applicants_id}-province` |
|
if (addedFieldId === fieldId) { |
|
console.log("applicants id match district"); |
|
console.log(addedFieldId); |
|
console.log(fieldId); |
|
initializeProvinceSelect(fieldId, provinceSelect); |
|
} |
|
}); |
|
})(); |
|
</script> |
|
|
|
<?php |
|
if (isset($formContext)) { |
|
$this->Form->end(); |
|
} |
|
endif; ?>
|
|
|