У меня есть плагин полного календаря для хранения назначений врача. Я хочу, чтобы в начале отображались все встречи, но я хочу, чтобы помощник в консультационном кабинете мог фильтровать врачей, чтобы отображать только соответствующие встречи, используя html select
<label for="">Filter by doctor:</label>
<select class="form-control col-4 mb-4" name="select_doctor" id="select_doctor">
<option value="1">Doctor 1</option>
<option value="2">Doctor 2</option>
<option value="3">Doctor 3</option>
</select>
это определение календаря
var calendarEl = document.getElementById('calendar');
var calendar = new FullCalendar.Calendar(calendarEl, {
themeSystem: 'bootstrap',
titleFormat:{
hour12: true
},
locale: 'es',
bootstrapFontAwesome: false,
headerToolbar: {
left: 'prev,next today',
center: 'title',
right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek'
},
eventTimeFormat: {
hour: '2-digit',
minute: '2-digit',
hour12: true
},
events:"{{ url('/agenda/show/') }}"
});
calendar.render();
это вызов ajax, где предполагается получить отфильтрованные данные
$('#select_doctor').change(function(){
var id_doctor = $('#select_doctor').val();
$.ajax({
type:"GET",
url:"{{url('/agenda/show/')}}"+'/'+id_doctor,
success:function(response){
},
error: function (err) {
}
});
});
это маршрут
Route::get('/agenda/show/{id?}', 'AppointmentController@show')->name('appointment-show');
это функция контроллера
public function show($id){
if($id != "null"){
$data['calendar_doctors']=CalendarDoctor::where('doctor_id', $id)->get();
}else{
if(Auth::user()->hasRole('doctor')){
$data['calendar_doctors']=CalendarDoctor::where('doctor_id', Auth::user()->id)->get();
}else{
$data['calendar_doctors']=CalendarDoctor::all();
}
}
return response()->json($data['calendar_doctors']);
}
Я не знаю, лучший ли это вариант, или есть какая-то фильтрация на стороне клиента или простой способ фильтрации
$.ajaxуспех, чтобы отобразить отфильтрованные события. - person Santiago Ramirez   schedule 23.12.2020