aggiunto funzionalità modale ai popup di inserimento. TODO: rivedere impostazione grafica dell'aggiunta della riga

This commit is contained in:
Amministratore 2023-05-25 11:50:20 +02:00
parent f673953377
commit 709e415273
6 changed files with 216 additions and 167 deletions

View File

@ -6,6 +6,7 @@ use App\Models\Progetti;
use App\Models\User; use App\Models\User;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Models\RigaProgetto; use App\Models\RigaProgetto;
use function GuzzleHttp\json_encode;
class ProgettiController extends Controller class ProgettiController extends Controller
{ {
@ -24,6 +25,11 @@ class ProgettiController extends Controller
return view('progetti.new',['coordinatori'=>User::getUsers()]); return view('progetti.new',['coordinatori'=>User::getUsers()]);
} }
public function getCoordinatori()
{
return json_encode(User::getUsers());
}
public function salvaProgetto(Request $request) public function salvaProgetto(Request $request)
{ {
Progetti::saveProgetto($request); Progetti::saveProgetto($request);
@ -36,9 +42,9 @@ class ProgettiController extends Controller
} }
public function dettaglioProgetto(Request $id) public function dettaglioProgetto($id)
{ {
$progetto_id=$id['id']; $progetto_id=$id;
$progetto = Progetti::getProgettoById($progetto_id); $progetto = Progetti::getProgettoById($progetto_id);
$righe = RigaProgetto::getRigheProgetto($progetto_id); $righe = RigaProgetto::getRigheProgetto($progetto_id);
$costo_tot=RigaProgetto::getCostoRighe($progetto_id); $costo_tot=RigaProgetto::getCostoRighe($progetto_id);

View File

@ -8,14 +8,14 @@ use App\Models\RigaProgetto;
class RigaProgettoController extends Controller class RigaProgettoController extends Controller
{ {
// //
public function deleterow($id_row,$id_prog) public function deleterow($id_row,$id)
{ {
$id_riga = $id_row; $id_riga = $id_row;
$id_progetto = $id_prog; //$id_progetto = $id_prog;
RigaProgetto::deleteRow($id_riga); RigaProgetto::deleteRow($id_riga);
// Ritorna alla pagina dei dettagli del progetto // Ritorna alla pagina dei dettagli del progetto
return redirect('/admin/progetti/detail/?id='.$id_progetto); return redirect('/admin/progetti/detail/'.$id);
} }
public function editRiga($id) public function editRiga($id)
@ -26,17 +26,17 @@ class RigaProgettoController extends Controller
return $data; return $data;
} }
public function updateRiga(Request $data) public function updateRiga(Request $data,$id)
{ {
RigaProgetto::updateRiga($data); RigaProgetto::updateRiga($data);
$id_progetto=$data['fk_id_progetto']; // $id_progetto=$data['fk_id_progetto'];
return redirect('/admin/progetti/detail/?id='.$id_progetto); return redirect('/admin/progetti/detail/'.$id);
} }
public function inserisciRiga(Request $args) public function inserisciRiga(Request $args,$id)
{ {
RigaProgetto::saveRiga($args); RigaProgetto::saveRiga($args,$id);
return redirect(Route('detail',['id'=>$args['fk_id_progetto']])); return redirect('/admin/progetti/detail/'.$id);
} }
} }

View File

@ -15,10 +15,10 @@ class RigaProgetto extends Model
return DB::table('riga_progettos')->where('fk_id_progetto','=',$progetto_id)->orderBy('data')->get(); return DB::table('riga_progettos')->where('fk_id_progetto','=',$progetto_id)->orderBy('data')->get();
} }
public static function saveRiga($args) public static function saveRiga($args,$id)
{ {
DB::table('riga_progettos')->insert([ DB::table('riga_progettos')->insert([
'fk_id_progetto'=>$args['fk_id_progetto'], 'fk_id_progetto'=>$id,
'data'=>$args['data'], 'data'=>$args['data'],
'descrizione'=>$args['descrizione'], 'descrizione'=>$args['descrizione'],
'prezzo'=>$args['prezzo'], 'prezzo'=>$args['prezzo'],

View File

@ -6,12 +6,7 @@
</div> </div>
<div class="container"> <div class="container">
<!-- Content here --> <!-- Content here -->
<div class="row">
<div class="col-xs-12">
<a class="btn btn-primary" href="progetti/new"><i
class="fa fa-pencil-square-o fw"></i></a>
</div>
</div>
<div class="row"> <div class="row">
<div class="col-xs-10"> <div class="col-xs-10">
@ -87,59 +82,15 @@
<div class="row"> <div class="row">
<div class="col-xs-10"> <div class="col-xs-10">
<div class="panel panel-default"> &nbsp;
<div class="panel-heading" id="form">Inserisci riga (click
show/hide)</div>
<div class="panel-body">
<form method="POST" action="">
<div class="row">
@csrf
<div class="col-xs-2">
<!-- Form per task con jquery e aggiunta righe automatica -->
<label for="tdata" class="form-label">data:</label> <input
type="date" name="data" class="form-control" id="data"
value="{{ date('Y-m-d') }}">
</div>
<div class="col-xs-5">
<!-- Form per task con jquery e aggiunta righe automatica -->
<label for="desc" class="form-label">descrizione:</label> <input
type="text" name="descrizione" class="form-control" id="desc">
</div>
<div class="col-xs-2">
<label for="ore" class="form-label">ore lavoro:</label>
<!-- Form per task con jquery e aggiunta righe automatica -->
<input type="text" name="ore" class="form-control" id="ore">
</div>
<div class="col-xs-2">
<label for="ore" class="form-label">prezzo:</label>
<!-- Form per task con jquery e aggiunta righe automatica -->
<input type="text" name="prezzo" class="form-control" id="ore">
</div>
<div class="col-xs-1">
<input type="hidden" name="fk_id_progetto" value="{{ $progetto->id }}">
<input type="submit" name="Submit" class="form-control">
</div>
</div>
</form>
</div>
</div> </div>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-xs-10"> <div class="col-xs-10">
<div class="panel panel-default"> <div class="row p-3">
<div class="panel-heading" id="form">Elementi e costi del progetto</div> <button class="btn btn-primary open_modal_addRow">Nuova riga</button>
</div> </div>
<div class="panel-body">
<div class="row"> <div class="row">
<table class="table table-striped table-bordered table-hover" id="tab_progetti"> <table class="table table-striped table-bordered table-hover" id="tab_progetti">
<thead> <thead>
@ -159,7 +110,7 @@
<td>{{ $riga->descrizione }}</td> <td>{{ $riga->descrizione }}</td>
<td>{{ $riga->ore }}</td> <td>{{ $riga->ore }}</td>
<td>{{ $riga->prezzo }}</td> <td>{{ $riga->prezzo }}</td>
<td><a href="delete_row/{{ $riga->id }}/return/{{ $progetto->id }}" class="btn btn-danger">X</a> <td><a href="/admin/progetti/delete_row/{{ $riga->id }}/return/{{ $progetto->id }}" class="btn btn-danger">X</a>
&nbsp; &nbsp;
<button class="btn btn-warning btn-detail open_modal" value="{{$riga->id}}">Edit</button> <button class="btn btn-warning btn-detail open_modal" value="{{$riga->id}}">Edit</button>
</td> </td>
@ -243,39 +194,56 @@
</div> </div>
</div> </div>
<!-- MODAL END --> <!-- MODAL END -->
<!-- MODAL NEW ROW -->
<div class="modal fade" id="myModal_addRow" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="panel-heading" id="form">Aggiungi Riga</div>
<form method="POST" action="">
<div class="row">
@csrf
<div class="col-xs-2">
<!-- Form per task con jquery e aggiunta righe automatica -->
<label for="tdata" class="form-label">data:</label> <input
type="date" name="data" class="form-control" id="data"
value="{{ date('Y-m-d') }}">
</div>
<div class="col-xs-5">
<!-- Form per task con jquery e aggiunta righe automatica -->
<label for="desc" class="form-label">descrizione:</label> <input
type="text" name="descrizione" class="form-control" id="desc">
</div>
<div class="col-xs-2">
<label for="ore" class="form-label">ore lavoro:</label>
<!-- Form per task con jquery e aggiunta righe automatica -->
<input type="text" name="ore" class="form-control" id="ore">
</div>
<div class="col-xs-2">
<label for="ore" class="form-label">prezzo:</label>
<!-- Form per task con jquery e aggiunta righe automatica -->
<input type="text" name="prezzo" class="form-control" id="ore">
</div>
<div class="col-xs-1">
<!-- <input type="hidden" name="fk_id_progetto" value="">-->
<input type="submit" name="Submit" class="form-control">
</div>
</div>
</form>
<!-- /MODAL RIGA -->
<!-- /.col-lg-12 --> <!-- /.col-lg-12 -->
@endsection @section('script') @endsection @section('script')
<script> <script src="/js/app/rigaProgetti.js"></script>
$(document).ready(function() {
$('#tab_progetti').DataTable({
responsive: true
});
$('#form').click(function(){
$('form').toggle();
});
$("#dettaglio").click(function(){
$('[hidable]').toggle();
});
$(document).on('click','.open_modal',function(){
var url = "detail/edit";
var riga_id= $(this).val();
$.get(url + '/' + riga_id, function (data) {
//success data
console.log(data);
console.log(data[0].descrizione);
$('#data_u').val(data[0].data);
$('#desc_u').val(data[0].descrizione);
$('#ore_u').val(data[0].ore);
$('#prezzo_u').val(data[0].prezzo);
$('#id_progetto_u').val(data[0].fk_id_progetto);
$('#idriga').val(data[0].id);
$('#myModal').modal('show');
})
});
});
</script>
@endsection @endsection

View File

@ -1,28 +1,27 @@
@extends('admin') @extends('admin') @section('content')
@section('content')
<div class="row"> <div class="row">
<div class="col-lg-12"> <div class="col-lg-12">
<h1 class="page-header">Lista Progetti</h1> <h1 class="page-header">Lista Progetti</h1>
</div> </div>
</div> </div>
<div class="container"> <div class="container">
<!-- Content here --> <!-- Content here -->
<div class="row"> <div class="row">
<div class="col-xs-12"> <div class="col-xs-12">
<a class="btn btn-primary" href="progetti/new"><i class="fa fa-pencil-square-o fw"></i></a> <button class="btn btn-primary open_modal_new"><i
class="fa fa-pencil-square-o fw"></i>Nuovo Progetto</button>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-xs-10"> <div class="col-xs-10">
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading"> <div class="panel-heading">Lista dei progetti</div>
Lista dei progetti
</div>
<div class="panel-body"> <div class="panel-body">
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-striped table-bordered table-hover" id="tab_progetti"> <table class="table table-striped table-bordered table-hover"
id="tab_progetti">
<thead> <thead>
<tr> <tr>
@ -37,14 +36,14 @@
<tbody> <tbody>
@foreach($progetti ?? '' as $progetto) @foreach($progetti ?? '' as $progetto)
<tr> <tr>
<td><a href="progetti/detail?id={{ $progetto->progetto }}">{{ $progetto->nome; }}</a></td> <td><a href="progetti/detail/{{ $progetto->progetto }}">{{
$progetto->nome; }}</a></td>
<td>{{ $progetto->data_creazione; }}</td> <td>{{ $progetto->data_creazione; }}</td>
<td>{{ $progetto->stato; }}</td> <td>{{ $progetto->stato; }}</td>
<td>{{ $progetto->name; }}</td> <td>{{ $progetto->name; }}</td>
<td>{{ $progetto->budget; }}</td> <td>{{ $progetto->budget; }}</td>
<td> <td><a href="progetti/delete?id={{ $progetto->progetto }}"
<a href="progetti/delete?id={{ $progetto->progetto }}" class="btn btn-danger">Cancella</a> class="btn btn-danger">Cancella</a></td>
</td>
</tr> </tr>
@endforeach @endforeach
</tbody> </tbody>
@ -53,19 +52,94 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<!-- /.col-lg-12 --> <!-- /.col-lg-12 -->
<!-- MODAL -->
<div class="modal fade" id="myModal_new" tabindex="-1" role="dialog"
aria-labelledby="myModalLabel" aria-hidden="true">
<form action="" method="POST" id="form_new">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Nuovo Progetto</h4>
</div>
<div class="modal-body">
@endsection @csrf
<div class="row">
@section('script') <div class="col-xs-6">
<script> <label for="nome" class="form-label">Nome</label> <input
$(document).ready(function() { type="text" class="form-control" id="nome" name="nome" />
$('#tab_progetti').DataTable({ </div>
responsive: true <div class="col-xs-6">
}); <label for="coordinatore" class="form-label">Coordinatore</label>
}); <!-- TODO: Da vedere funzione di select in js -->
</script> <select name="coordinatore" class="form-control selectpicker"
@endsection id="coordinatore" data-live-search="true"
data-live-search-placeholder="Cerca">
</select>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<label for="descrizione" class="form-label">Descrizione</label>
<textarea class="form-control" id="descrizione"
name="descrizione"></textarea>
</div>
</div>
<div class="row">
<div class="col-xs-5">
<label for="budget" class="form-label">Budget previsto</label>
<div class="input-group">
<span class="input-group-addon"> <i class="fa fa-eur"></i>
</span> <input type="number" step="0.01" min="-999999"
max="999999" class="form-control" id="budget" size="50"
name="budget" aria-describedby="Budget">
</div>
</div>
<!-- <div id="importo" class="form-text">inserire l'importo (se spesa far precedere da il simbolo "-")</div>-->
<div class="col-xs-7">
<label for=stato class="form-label">Tag</label> <select
name="stato" class="form-control" id="stato">
<option value="aperto">Aperto</option>
<option value="bloccato">Bloccato</option>
<option value="chiuso">chiuso</option>
</select>
</div>
</div>
<div class="row">
<div class="col-xs-6">
<label for="data_inizio" class="form-label">Data Inizio</label>
<input type="date" class="form-control" id="data_inizio"
name="data_inizio" />
</div>
<div class="col-xs-6">
<label for="data_fine" class="form-label">Data Fine</label> <input
type="date" class="form-control" id="data_fine"
name="data_fine" />
</div>
</div>
<div class="row">
<div class="col-xs-12">
<label for="note" class="form-label">Note</label>
<textarea class="form-control" id="note" name="note"></textarea>
</div>
</div>
</div>
<div class="modal-footer">
<div class="row">
<div class="col-xs-12">
<button type="submit" class="btn btn-primary">Aggiungi</button>
</div>
</div>
</div>
</div>
</div>
</form>
</div>
<!-- /MODAL -->
@endsection @section('script')
<script src="/js/app/progetti.js"></script>
@endsection

View File

@ -115,10 +115,11 @@ Route::get('/', [MovimentiController::class,'dashboard']);
Route::get('progetti/new', [ProgettiController::class, 'nuovoProgetto'])->name('nuovoProgetto'); Route::get('progetti/new', [ProgettiController::class, 'nuovoProgetto'])->name('nuovoProgetto');
Route::get('progetti/delete',[ProgettiController::class, 'deleteProgetto']); Route::get('progetti/delete',[ProgettiController::class, 'deleteProgetto']);
Route::get('progetti/delete_row/{id_row}/return/{id_prog}',[RigaProgettoController::class, 'deleterow']); Route::get('progetti/delete_row/{id_row}/return/{id_prog}',[RigaProgettoController::class, 'deleterow']);
Route::get('progetti/detail', [ProgettiController::class, 'dettaglioProgetto'])->name('detail'); Route::get('progetti/detail/{id}', [ProgettiController::class, 'dettaglioProgetto'])->name('detail');
Route::post('progetti/detail', [RigaProgettoController::class, 'inserisciRiga']); Route::post('progetti/detail/{id}', [RigaProgettoController::class, 'inserisciRiga']);
Route::get('progetti/detail/edit/{id}', [RigaProgettoController::class, 'editRiga']); Route::get('progetti/detail/edit/{id}', [RigaProgettoController::class, 'editRiga']);
Route::post('progetti/rigaupdate', [RigaProgettoController::class, 'updateRiga']); Route::post('progetti/rigaupdate', [RigaProgettoController::class, 'updateRiga']);
Route::get('progetti/coordinatori', [ProgettiController::class, 'getCoordinatori']);
/// TEST routes /// TEST routes
Route::get('fullcalendar', [FullCalenderController::class, 'index']); Route::get('fullcalendar', [FullCalenderController::class, 'index']);
Route::post('fullcalendar', [FullCalenderController::class, 'ajax']); Route::post('fullcalendar', [FullCalenderController::class, 'ajax']);