Merge branch '8slotsperday' into develop

This commit is contained in:
Olivier Legat 2022-03-08 11:39:06 +01:00
commit cf57486a83
6 changed files with 74 additions and 15 deletions

View file

@ -2,13 +2,10 @@
namespace App\Http\Controllers;
use App\Enums\Planning\ActivityType;
use App\Enums\Role;
use App\Http\Requests\StoreScheduleRequest;
use App\Models\Schedule;
use App\Models\User;
use App\Models\WeekPlanning;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Carbon\CarbonImmutable;
@ -23,7 +20,7 @@ class ScheduleController extends Controller
public function index(Request $request)
{
$date = CarbonImmutable::now()->startOfWeek();
$nbweeks = 2;
$nbweeks = config('schedules.shownWeeks');
if ($request->p) {
$date = CarbonImmutable::createFromFormat('d/m/Y', $request->p)->startOfWeek();
}

6
config/schedules.php Normal file
View file

@ -0,0 +1,6 @@
<?php
return [
'shownWeeks' => 2,
'daySlots' => 8,
];

View file

@ -0,0 +1,40 @@
<?php
use App\Models\Schedule;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class MigrateSchedulesToEightSlotsPerDay extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
//migrate data from week plannings
for ($i = 4; $i > 0; $i--) {
$schedules = Schedule::where('slot', $i)->get();
foreach ($schedules as $oneschedule) {
$newschedule = $oneschedule->replicate();
$newschedule->slot = $i * 2;
$newschedule->save();
$oneschedule->slot = ($i * 2) - 1;
$oneschedule->save();
}
}
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//not reversible
}
}

View file

@ -25,11 +25,11 @@
<tbody>
<template v-for="(user,index) in schedules">
<tr v-for="(slot,key) in user" :key="index + '' + key">
<td rowspan="4" class="resource_ident" v-if="key == 1">
<td :rowspan="daySlots" class="resource_ident" v-if="key == 1">
{{users[index].name}}
</td>
<td v-for="day in days" :class="'dynCell day '+user[key][day.key].type.value+ ' ' +day.eday" :key="day.key">
<div class="cellsizer">
<div :class="'cellsizer '+ (user[key][day.key].type.value ? user[key][day.key].type.value : 'empty')">
<b v-if="user[key][day.key]['model_lie']['value']">
<a target="_blank" class="text-light bg-dark"
:href="getCellObjectInfo(user[key][day.key]).url">
@ -37,7 +37,7 @@
</a>
</b><br/>
{{user[key][day.key]['text']}}
</div>
<button class="btn btn-edit" type="button" data-bs-toggle="modal"
data-bs-target="#editModal" @click="setModalData(index,key,day.key,user[key][day.key]['id'])">✎</button>
<button :class="'btn btn-paste '+(!clipBoard.set ? 'hide' : '') " type="button"
@ -48,6 +48,7 @@
📄<span style="position: absolute; top: .25em; left: .25em">📄</span>
</span></button>
<button :class="'btn btn-clear '+(!user[key][day.key]['id'] ? 'hide' : '')" @click="eraseCell(index,key,day.key,user[key][day.key]['id'])">⌫</button>
</div>
</td>
</tr>
</template>
@ -162,6 +163,10 @@ export default {
weeks: {
type: String,
},
daySlots: {
type: Number,
default: 4
},
browseDate: {
type: String,
default: function() {
@ -682,10 +687,18 @@ table.schedules_table {
}
.cellsizer {
height: 150px;
height: 50px;
&:hover {
height: 150px;
position: absolute;
width: 200%;
left: -50%;
top: -50%;
z-index: 20;
border: 1px solid;
}
text-overflow: ellipsis;
overflow: hidden;
b {
width: 90%;
}
@ -694,7 +707,6 @@ table.schedules_table {
.dynCell{
position: relative;
&.day {
//position: relative;
&:hover .btn {

View file

@ -24,6 +24,7 @@
db-models='@json(CellModel::toArray())'
db-users='@json($users)'
weeks='@json($weekCells)'
v-bind:day-slots='{{ Config::get('schedules.daySlots') }}'
v-bind:show-weekends='false'></schedule-component>
</div>
@endsection
@ -64,5 +65,8 @@
.absence, .Sat, .Sun {
background-color: {{CellType::absence()->value}} !important;
}
.empty {
background-color: #FFF !important;
}
</style>
@endpush

View file

@ -28,15 +28,15 @@
@foreach ($stat as $data)
<tr style="background-color: {{ CellType::make($data->activity->value)->value }};">
<td><b>{{ $data->activity->label }}</b></td>
<td><b>{{ $data->nb * 0.25 }}</b></td>
<td>{{ round((($data->nb * 0.25) / $workdays) * 100) }}%</td>
<td><b>{{ $data->nb / Config::get('schedules.daySlots') }}</b></td>
<td>{{ round((($data->nb / Config::get('schedules.daySlots')) / $workdays) * 100) }}%</td>
</tr>
@php $sum += $data->nb; @endphp
@endforeach
<tr>
<td><b>{{ __('Total') }}</b></td>
<td><b>{{ $sum * 0.25 }} / {{ $workdays }}</b></td>
<td><b>{{ round((($sum * 0.25) / $workdays) * 100) }}%</b></td>
<td><b>{{ $sum / Config::get('schedules.daySlots') }} / {{ $workdays }}</b></td>
<td><b>{{ round((($sum / 8) / $workdays) * 100) }}%</b></td>
</tr>
</tbody>
</table>
@ -46,4 +46,4 @@
</div>
</div>
</div>
@endsection
@endsection