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

<?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; ?>