Garage : fix select avec valeurs hors-liste (type, fuel_type, category)
Deploy to Pacha Family / deploy (push) Failing after 3s

setSelectVal() ajoute dynamiquement l'option si elle n'existe pas dans
le select, évitant que .value reste vide et soit envoyé null à l'API.
Validation PHP côté serveur : type et date requis sur PUT maintenance.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
perco
2026-05-11 17:36:12 +02:00
co-authored by Claude Sonnet 4.6
parent 5ac4e51efb
commit b338d7550a
2 changed files with 13 additions and 3 deletions
+2
View File
@@ -109,6 +109,8 @@ if ($action === 'maintenances') {
}
if ($method === 'PUT') {
$id = $_GET['id'] ?? null; if (!$id) gErr('ID manquant'); $d = gBody();
if (empty($d['type'])) gErr('Le type est requis');
if (empty($d['date'])) gErr('La date est requise');
$int_f = ['km','next_km']; $float_f = ['cost'];
$fields = ['type','description','date','km','cost','mechanic','garage_name','next_km','next_date','notes'];
$sets = array_map(fn($f) => "$f = ?", $fields);
+11 -3
View File
@@ -466,10 +466,11 @@ function openEditVehicle(id){
api('vehicles','GET',null,'&id='+id).then(v=>{
$('#form-vehicle-id').value=v.id;
$('#modal-vehicle-title').textContent='Modifier le véhicule';
['name','brand','model','year','license_plate','vin','fuel_type','color','purchase_date','purchase_price','current_km','notes'].forEach(f=>{
['name','brand','model','year','license_plate','vin','color','purchase_date','purchase_price','current_km','notes'].forEach(f=>{
const el=$('#vehicle-'+f.replace(/_/g,'-'));
if(el)el.value=v[f]??'';
});
setSelectVal('vehicle-fuel-type', v.fuel_type);
if(v.photo){$('#vehicle-photo-preview').src=UPLOADS+v.photo;$('#vehicle-photo-preview').style.display='block';}
else{$('#vehicle-photo-preview').style.display='none';}
openModal('modal-vehicle');
@@ -508,12 +509,18 @@ function openAddMaintenance(){
$('#maintenance-date').value=new Date().toISOString().slice(0,10);
openModal('modal-maintenance');
}
function setSelectVal(elId, val){
const el=document.getElementById(elId); if(!el||val==null)return;
el.value=val;
if(el.value!==String(val)&&val!==''){const o=new Option(val,val);el.add(o);el.value=val;}
}
function openEditMaintenance(id){
api('maintenances','GET',null,'&id='+id).then(m=>{
$('#form-maintenance-id').value=m.id;
$('#maintenance-vehicle-id').value=m.vehicle_id;
$('#modal-maintenance-title').textContent="Modifier l'entretien";
const map={type:'maintenance-type',description:'maintenance-description',date:'maintenance-date',
setSelectVal('maintenance-type', m.type);
const map={description:'maintenance-description',date:'maintenance-date',
km:'maintenance-km',cost:'maintenance-cost',mechanic:'maintenance-mechanic',
garage_name:'maintenance-garage',next_date:'maintenance-next-date',next_km:'maintenance-next-km',notes:'maintenance-notes'};
for(const[k,elId] of Object.entries(map)){const el=document.getElementById(elId);if(el)el.value=m[k]??'';}
@@ -558,8 +565,9 @@ function openEditPart(id){
$('#part-vehicle-id').value=p.vehicle_id||'';
$('#part-maintenance-id').value=p.maintenance_id||'';
$('#modal-part-title').textContent='Modifier la pièce';
const map={name:'part-name',category:'part-category',brand:'part-brand',reference:'part-reference',price:'part-price',quantity:'part-quantity',notes:'part-notes'};
const map={name:'part-name',brand:'part-brand',reference:'part-reference',price:'part-price',quantity:'part-quantity',notes:'part-notes'};
for(const[k,elId] of Object.entries(map)){const el=document.getElementById(elId);if(el)el.value=p[k]??'';}
setSelectVal('part-category', p.category);
const ht=document.getElementById('part-prix-ht');if(ht)ht.checked=false;
const prev=document.getElementById('part-ttc-preview');if(prev)prev.style.display='none';
if(p.photo){$('#part-photo-preview').src=UPLOADS+p.photo;$('#part-photo-preview').style.display='block';}