Files

215 lines
16 KiB
PHP

@use('Illuminate\Support\Facades\Storage')
<x-app-layout>
<x-slot name="header">
<div class="flex justify-between items-center">
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
{{ __('Modifica Articolo') }}: {{ $articolo->codice_articolo }}
</h2>
<div class="flex items-center space-x-4">
<a href="{{ route('admin.articoli.create') }}" class="bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded">
+ Nuovo Articolo
</a>
<a href="{{ route('admin.articoli.index') }}" class="bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded">
&larr; Torna alla lista
</a>
</div>
</div>
</x-slot>
<div class="py-12" x-data="{ modalImg: null }">
<div class="max-w-4xl mx-auto sm:px-6 lg:px-8">
<div class="bg-white overflow-hidden shadow-sm sm:rounded-lg">
<div class="p-6">
<form method="POST" action="{{ route('admin.articoli.update', $articolo) }}" enctype="multipart/form-data">
@csrf
@method('PUT')
<!-- Sezione Ubicazione -->
<div class="mb-8">
<h3 class="text-lg font-medium text-gray-900 mb-4 pb-2 border-b">Ubicazione</h3>
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div>
<label for="codice_articolo" class="block text-sm font-medium text-gray-700">Codice Articolo *</label>
<input type="text" name="codice_articolo" id="codice_articolo" value="{{ old('codice_articolo', $articolo->codice_articolo) }}" required
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500">
@error('codice_articolo')
<p class="mt-1 text-sm text-red-600">{{ $message }}</p>
@enderror
</div>
<div>
<label for="ciclo" class="block text-sm font-medium text-gray-700">Ciclo</label>
<input type="text" name="ciclo" id="ciclo" value="{{ old('ciclo', $articolo->ciclo) }}"
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500">
</div>
<div>
<label for="hole_diameter" class="block text-sm font-medium text-gray-700">Hole Diameter</label>
<input type="text" name="hole_diameter" id="hole_diameter" value="{{ old('hole_diameter', $articolo->hole_diameter) }}"
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500">
</div>
<div>
<label for="diametro" class="block text-sm font-medium text-gray-700">Diametro</label>
<input type="text" name="diametro" id="diametro" value="{{ old('diametro', $articolo->diametro) }}"
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500">
</div>
<div>
<label for="posizione" class="block text-sm font-medium text-gray-700">Posizione</label>
<input type="text" name="posizione" id="posizione" value="{{ old('posizione', $articolo->posizione) }}"
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500">
</div>
<div>
<label for="quantita" class="block text-sm font-medium text-gray-700">Quantita</label>
<input type="number" name="quantita" id="quantita" value="{{ old('quantita', $articolo->quantita) }}" min="0"
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500">
</div>
<div class="md:col-span-2">
<label for="descrizione" class="block text-sm font-medium text-gray-700">Descrizione</label>
<textarea name="descrizione" id="descrizione" rows="3"
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500">{{ old('descrizione', $articolo->descrizione) }}</textarea>
</div>
<div class="md:col-span-2">
<label class="block text-sm font-medium text-gray-700">Immagine Articolo</label>
@if ($articolo->immagine_articolo)
<div class="mt-2 mb-3 flex items-center gap-4">
<img src="{{ Storage::url($articolo->immagine_articolo) }}" alt="Immagine Articolo"
class="h-16 w-16 object-cover rounded border cursor-pointer hover:opacity-80 transition-opacity"
@click="modalImg = '{{ Storage::url($articolo->immagine_articolo) }}'">
<label class="flex items-center gap-2 text-sm text-red-600 cursor-pointer">
<input type="checkbox" name="rimuovi_immagine_articolo" value="1" class="rounded border-gray-300">
Rimuovi immagine
</label>
</div>
@endif
<input type="file" name="immagine_articolo" id="immagine_articolo" accept="image/*"
class="mt-1 block w-full text-sm text-gray-500 file:mr-4 file:py-2 file:px-4 file:rounded file:border-0 file:text-sm file:font-semibold file:bg-blue-50 file:text-blue-700 hover:file:bg-blue-100">
@error('immagine_articolo')
<p class="mt-1 text-sm text-red-600">{{ $message }}</p>
@enderror
</div>
</div>
</div>
<!-- Sezione Parametri Tecnologici -->
<div class="mb-8">
<h3 class="text-lg font-medium text-gray-900 mb-4 pb-2 border-b">Parametri Tecnologici</h3>
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div>
<label for="tipo_lavorazione" class="block text-sm font-medium text-gray-700">Tipo di Lavorazione</label>
<input type="text" name="tipo_lavorazione" id="tipo_lavorazione" value="{{ old('tipo_lavorazione', $articolo->tipo_lavorazione) }}"
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500">
</div>
<div>
<label for="materiale_lavorare" class="block text-sm font-medium text-gray-700">Materiale da Lavorare</label>
<input type="text" name="materiale_lavorare" id="materiale_lavorare" value="{{ old('materiale_lavorare', $articolo->materiale_lavorare) }}"
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500">
</div>
<div>
<label for="maximum_thickness" class="block text-sm font-medium text-gray-700">Maximum Thickness</label>
<input type="text" name="maximum_thickness" id="maximum_thickness" value="{{ old('maximum_thickness', $articolo->maximum_thickness) }}"
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500">
</div>
<div>
<label for="speed_rpm" class="block text-sm font-medium text-gray-700">Speed (RPM)</label>
<input type="number" name="speed_rpm" id="speed_rpm" value="{{ old('speed_rpm', $articolo->speed_rpm) }}" min="0"
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500">
</div>
<div>
<label for="feed" class="block text-sm font-medium text-gray-700">Feed</label>
<input type="number" name="feed" id="feed" value="{{ old('feed', $articolo->feed) }}" min="0" step="0.01"
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500">
</div>
<div>
<label for="max_thrust_a" class="block text-sm font-medium text-gray-700">Max Thrust (A)</label>
<input type="text" name="max_thrust_a" id="max_thrust_a" value="{{ old('max_thrust_a', $articolo->max_thrust_a) }}"
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500">
</div>
<div>
<label class="block text-sm font-medium text-gray-700">Immagine Thrust</label>
@if ($articolo->immagine_thrust)
<div class="mt-2 mb-3 flex items-center gap-4">
<img src="{{ Storage::url($articolo->immagine_thrust) }}" alt="Immagine Thrust"
class="h-16 w-16 object-cover rounded border cursor-pointer hover:opacity-80 transition-opacity"
@click="modalImg = '{{ Storage::url($articolo->immagine_thrust) }}'">
<label class="flex items-center gap-2 text-sm text-red-600 cursor-pointer">
<input type="checkbox" name="rimuovi_immagine_thrust" value="1" class="rounded border-gray-300">
Rimuovi immagine
</label>
</div>
@endif
<input type="file" name="immagine_thrust" id="immagine_thrust" accept="image/*"
class="mt-1 block w-full text-sm text-gray-500 file:mr-4 file:py-2 file:px-4 file:rounded file:border-0 file:text-sm file:font-semibold file:bg-blue-50 file:text-blue-700 hover:file:bg-blue-100">
@error('immagine_thrust')
<p class="mt-1 text-sm text-red-600">{{ $message }}</p>
@enderror
</div>
<div>
<label for="min_torque_a" class="block text-sm font-medium text-gray-700">Min Torque (A)</label>
<input type="text" name="min_torque_a" id="min_torque_a" value="{{ old('min_torque_a', $articolo->min_torque_a) }}"
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500">
</div>
<div>
<label class="block text-sm font-medium text-gray-700">Immagine Tourque</label>
@if ($articolo->immagine_tourque)
<div class="mt-2 mb-3 flex items-center gap-4">
<img src="{{ Storage::url($articolo->immagine_tourque) }}" alt="Immagine Tourque"
class="h-16 w-16 object-cover rounded border cursor-pointer hover:opacity-80 transition-opacity"
@click="modalImg = '{{ Storage::url($articolo->immagine_tourque) }}'">
<label class="flex items-center gap-2 text-sm text-red-600 cursor-pointer">
<input type="checkbox" name="rimuovi_immagine_tourque" value="1" class="rounded border-gray-300">
Rimuovi immagine
</label>
</div>
@endif
<input type="file" name="immagine_tourque" id="immagine_tourque" accept="image/*"
class="mt-1 block w-full text-sm text-gray-500 file:mr-4 file:py-2 file:px-4 file:rounded file:border-0 file:text-sm file:font-semibold file:bg-blue-50 file:text-blue-700 hover:file:bg-blue-100">
@error('immagine_tourque')
<p class="mt-1 text-sm text-red-600">{{ $message }}</p>
@enderror
</div>
<div>
<label for="quantita_fori" class="block text-sm font-medium text-gray-700">Quantita Fori</label>
<input type="number" name="quantita_fori" id="quantita_fori" value="{{ old('quantita_fori', $articolo->quantita_fori) }}" min="0"
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500">
</div>
</div>
</div>
<div class="flex justify-between">
<a href="{{ route('admin.articoli.index') }}" class="bg-gray-300 hover:bg-gray-400 text-gray-800 font-bold py-2 px-4 rounded">
&larr; Torna alla lista
</a>
<button type="submit" class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">
Salva Articolo
</button>
</div>
</form>
</div>
</div>
</div>
<!-- Image Modal -->
<div x-show="modalImg" x-cloak
class="fixed inset-0 bg-black/80 flex items-center justify-center z-50 p-4"
@click="modalImg = null"
@keydown.escape.window="modalImg = null">
<img :src="modalImg" @click.stop class="max-h-[90vh] max-w-full rounded-lg shadow-2xl">
</div>
</div>
</x-app-layout>