show linked model infos

This commit is contained in:
Olivier Legat 2021-12-18 18:20:57 +01:00
parent 191f6786d1
commit d9b058a1a7
3 changed files with 56 additions and 75 deletions

View file

@ -46,13 +46,16 @@ class ScheduleController extends Controller
$prevDate = null;
$prevSlot = null;
foreach ($schedules as $schedule) {
$id_lie = null;
$id_lie = array('label'=> null, 'value'=> null);
if(!is_null($schedule->model_lie)) {
if (isset($schedule->relatedModel->name)) {
$id_lie = array('label'=>$schedule->relatedModel->name, 'value'=>$schedule->id_lie);
} else {
$id_lie = array('label'=>'Ticket '.$schedule->id_lie, 'value'=>$schedule->id_lie);
}
$model_lie = $schedule->model_lie;
} else {
$model_lie = array('label'=> null, 'value'=> null);
}
if ($prevUserId != $schedule->user_id) {
@ -64,7 +67,7 @@ class ScheduleController extends Controller
'type' => $schedule->activity,
'text' => $schedule->description,
'id_lie' => $id_lie, //$schedule->id_lie,
'model_lie' => $schedule->model_lie,
'model_lie' => $model_lie,
),
)
);
@ -78,7 +81,7 @@ class ScheduleController extends Controller
'type' => $schedule->activity,
'text' => $schedule->description,
'id_lie' => $id_lie, //$schedule->id_lie,
'model_lie' => $schedule->model_lie,
'model_lie' => $model_lie,
),
);
} else {
@ -90,7 +93,7 @@ class ScheduleController extends Controller
'type' => $schedule->activity,
'text' => $schedule->description,
'id_lie' => $id_lie, //$schedule->id_lie,
'model_lie' => $schedule->model_lie,
'model_lie' => $model_lie,
);
} else {
//same date

View file

@ -29,6 +29,12 @@
{{users[index].name}}
</th>
<td v-for="day in days" :class="'dynCell day '+user[key][day.key].type.value+ ' ' +day.eday" :key="day.key">
<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">
{{user[key][day.key]['id_lie']['label']}}
</a>
</b><br/>
{{user[key][day.key]['text']}}
<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>
@ -39,27 +45,6 @@
</tbody>
</table>
</div>
<div :class="'col-10 grid-week grid-'+weeksCells.length+'week'">
<!--line header 1 -->
<div class="empty"></div>
<div class="week" v-for="item in weeksCells">
S {{item.num}} - {{item.month}} {{item.year}}
</div>
<!--line header 2 -->
<div v-for="day in days" :class="'day '+day.eday">
{{day.day}} {{day.num}}
</div>
<template v-for="(user,index) in schedules">
<div class="name">{{users[index].name}}</div>
<template v-for="(slot,key) in user">
<div v-for="day in days" :class="'day '+user[key][day.key].type.value+ ' ' +day.eday">
{{user[key][day.key]['text']}}
</div>
</template>
</template>
</div>
<div class="col-1 text-center">
<a class="sticky-top btn btn-primary mt-5" @click="goToPlanning(true)">→</a>
</div>
@ -213,7 +198,10 @@ export default {
label: '',
value: '',
},
id_lie: 0,
id_lie: {
label: '',
value: '',
},
},
//v-select de ses morts
dDisabled : false,
@ -281,7 +269,21 @@ export default {
return mydays;
},
prepareSched(dbscheds) {
var templateObj = {"type":{"label":"","value":""},"text":"","id_lie":{"label":"","value":""},"model_lie":{"label":"","value":""},"id":null}
var templateObj = {
"type": {
"label":"",
"value":""
},
"text":"",
"id_lie": {
"label":"",
"value":""
},
"model_lie": {
"label":"",
"value":""
},
"id":null}
//we need to make missing users
Object.keys(this.users).forEach(id => {
if(dbscheds[id] === undefined) {
@ -307,6 +309,29 @@ export default {
});
return dbscheds;
},
getCellObjectInfo(cellData) {
for(let model of this.models) {
if(cellData['model_lie'].value === model.value && model.value == 'tickets') {
return {
'url': this.route('ticket.show', { TICKET: cellData['id_lie'].value }),
'text': cellData['model_lie'].label
}
}
if(cellData['model_lie'].value === model.value && model.value == 'sites') {
return {
'url': this.route('sites.show', { SITE: cellData['id_lie'].value}),
'text': cellData['model_lie'].label
}
}
if(cellData['model_lie'].value === model.value && model.value == 'projects') {
return {
'url': this.route('projects.show', { PROJECT: cellData['id_lie'].value}),
'text': cellData['model_lie'].label
}
}
}
return null
},
resetModalFields() {
this.$set(this, 'currentType' , null)
this.$set(this, 'value' , {

View file

@ -24,54 +24,7 @@
db-models='@json(CellModel::toArray())'
db-users='@json($users)'
weeks='@json($weekCells)'
v-bind:show-weekends='true'></schedule-component>
{{-- <div class="plannings">
<div class="row justify-content-center">
<div class="col-1 text-center">
<a class="sticky-top btn btn-primary mt-5" href="{{route('schedule.index')}}?p={{$date->addDays(-7)->format('d/m/Y')}}">←</a>
</div>
<div class="col-10 grid-week grid-{{count($weekCells)}}week">
<!--line header 1 -->
<div class="empty"></div>
@for ($i = 0; $i < count($weekCells); $i++)
<div class="week">
S{{$date->addDays($i*7)->weekOfYear}} - {{$date->addDays($i*7)->shortLocaleMonth}} {{$date->addDays($i*7)->format('Y')}}
</div>
@endfor
<!--line header 2 -->
@for ($i = 0; $i < (count($weekCells)*7); $i++)
<div class="day {{$date->addDays($i)->shortEnglishDayOfWeek}}">
{{$date->addDays($i)->localeDayOfWeek}} {{$date->addDays($i)->format('d')}}
</div>
@php
if( $date->addDays($i)->dayOfWeek == 5) {
$i+=2;
}
@endphp
@endfor
@foreach($users as $id => $user)
<!-- user $j -->
<div class="name">{{$user["name"]}}</div>
@for ($k=1; $k < 5; $k++)
<!--line slot $k-->
@for ($i = 0; $i < (count($weekCells)*7); $i++)
<div class="day {{ $arSchedules[$id][$k][$date->addDays($i)->format('d/m/Y')]['type'] ?? '' }} {{$date->addDays($i)->shortEnglishDayOfWeek}}">
{{$arSchedules[$id][$k][$date->addDays($i)->format('d/m/Y')]['text'] ?? ''}}
</div>
@php
if( $date->addDays($i)->dayOfWeek == 5) {
$i+=2;
}
@endphp
@endfor
@endfor
@endforeach
</div>
<div class="col-1 text-center">
<a class="sticky-top btn btn-primary mt-5" href="{{route('schedule.index')}}?p={{$date->addDays(7)->format('d/m/Y')}}">→</a>
</div>
</div>
</div>--}}
v-bind:show-weekends='false'></schedule-component>
</div>
@endsection