Witam mam problem nie wiem jak zrobić, aby event zmieniał kolor. A dokładniej chodzi mi o to, że nie wiem jak w funkcji w w skrypcie do fullcalendarza pobrać zmienną events_id, która odpowiedzialna jest za relację.
Kombinuję na różne sposoby i nie wiem jak to ugryść. Czy zrobić to w controllerze czy w wywoływaniu kalandarza.
Widok:
<script src="{{ asset('js/fullcalendar') }}/fullcalendar.js"></script>
<script src="{{ asset('js/bootstrap.js') }}"></script>
<script type="text/javascript">
$(document).ready(function() {
var base_url = '{{ url('/') }}';
$('#bootstrapModalFullCalendar').fullCalendar({
weekends: true,
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek'
},
eventClick: function(event, jsEvent, view) {
$('#modalTitle').html(event.title);
$('#modalBody').html(event.name);
$('#eventUrl').attr('href','/home/zapis/'+event.id);
$("#startTime").html(moment(event.start).format('HH:mm '));
if (event
.end) $
("#endTime").html
(moment
(event
.end).format
('HH:mm ')); else $("#endTime").html('');
$('#fullCalModal').modal();
return false;
},
eventLimit: true, // allow "more" link when too many events
FirstDay: 1,
contentheight : 650,
editable : true,
allDay : false,
aspectRatio : 2,
slotLabelFormat : 'HH:mm:ss',
timeFormat : 'HH:mm',
displayEventEnd : true,
events: {
url: base_url + '/api',
error: function() {
alert("cannot load json");
}
},
eventAfterRender: function (event, element, view,events_id) {
if(event.id === 1){
element.css('background-color', '#cccccc');
}
else
{
if (event.title == "Wydzial 1")
{
element.css('background-color', '#378006');
}
else if(event.title == "Wydzial 2"){
element.css('background-color', '#ff0000');
}
else if(event.title == "Wydzial 3"){
element.css('background-color', '#73e600');
}
else{
element.css('background-color', '#0066ff');
}
}
}
});
});
</script>
Ta 1 wstawiłem, żeby sprawdzić czy chociaż if dobrze smiga. Domyślam się że zamiast 1 należy spawdzić czy ten event znajduje sie w tablicy odpowiedzialnej za relacje i tu jest problem nie mam pojećia jak to sprawdzić Controller:
public function index()
{
$events= HomeModel::all();
// foreach ($events as $event) {
// if ($event->title=="Wydzial 1") {
// }
// elseif($event->title == "Wydzial 2"){
// }elseif ($event->title == "Wydzial 3") {
// }elseif ($event->title == "Wydzial 4") {
// }
// }
return view('home',['events'=>$events]);
}
Model:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class HomeModel extends Model
{
protected $table = 'events'; // you may change this to your name table
public $timestamps = true; // set true if you are using created_at and updated_at
protected $primaryKey = 'id'; // the default is id
public function usersave()
{
return $this->belongsToMany(User::class,'save_events','events_id','users_id');
}
}
Byłbym wdzięczny nawet na nakietowanie w jaki sposób to rozwiązać bo naprawdę nie mam bladego pojecia.
W controllerze dodalem cos takiego $eventscolo=DB::table('save_events')->select('events_id')->get(); . Pobieram id eventow, przekazuje do widoku ale teraz nie wiem jak sprawidzc. Próboje zrobić cos takiego w if (event.id===eventscolo) i nie dziala ;p
Pyton_000
6.04.2017, 10:55:32
Weź Ty w końcu zmień nazwę tego HomeModel na EventModel...
Teraz cieżko mi to zmienić. Wiem, że powinienen pomyśleć na starcie i nazwać wszystko właściwie.
Czy można zrobić w skrypcie js coś takiego:
To jest w widoku:
eventAfterRender: function (event, element, view) {
@foreach ($eventsss as $eventss)
@if($eventss == $eventscolo)
element.css('background-color', 'grey');
@else
@if ($eventss->title=="Wydzial 1")
element.css('background-color', 'red')
@elseif($eventss->title == "Wydzial 2")
element.css('background-color', 'blue');
@elseif ($eventss->title == "Wydzial 3")
element.css('background-color', 'green');
@elseif ($eventss->title == "Wydzial 4")
element.css('background-color', 'yellow');
@endif
@endif
@endforeach
}
Controller:
public function index()
{
$eventscolo=DB::table('save_events')->select('events_id')->get();
$eventsss=DB::table('events')->select('id','title')->get();
return view('home',['eventscolo'=>$eventscolo],['eventsss'=>$eventsss]);
}
I jak to zrobiłem wszystkie eventy są na czerwono
Pyton_000
6.04.2017, 14:36:20
Pokaż dump($eventscolo, $eventsss);
Bo na moje oko masz 2 tablice i próbujesz zrobić nie wiadomo co....
Pokaż co w Konsoli przeglądarki wypluje Ci:
Kod
eventAfterRender: function (event, element, view) {
console.log(event, element);
if (event.id === 1) {
element.css('background-color', '#cccccc');
}
else {
if (event.title == "Wydzial 1") {
element.css('background-color', '#378006');
}
else if (event.title == "Wydzial 2") {
element.css('background-color', '#ff0000');
}
else if (event.title == "Wydzial 3") {
element.css('background-color', '#73e600');
}
else {
element.css('background-color', '#0066ff');
}
}
}
tutaj dump:
Collection {#296 ▼
#items: array:2 [▼
0 => {#288 ▼
+"events_id": 1
}
1 => {#295 ▼
+"events_id": 8
}
]
}
Collection {#290 ▼
#items: array:7 [▼
0 => {#298 ▼
+"id": 1
+"title": "Wydzial 2"
}
1 => {#299 ▼
+"id": 5
+"title": "Wydzial 1"
}
2 => {#300 ▼
+"id": 6
+"title": "Wydzial 1"
}
3 => {#301 ▼
+"id": 7
+"title": "Wydzial 4"
}
4 => {#302 ▼
+"id": 8
+"title": "Wydzial 1"
}
5 => {#303 ▼
+"id": 9
+"title": "Wydzial 2"
}
6 => {#304 ▼
+"id": 10
+"title": "Wydzial 1"
}
]
}
i tak mam 2 tablice bo chce sprawdzic czy event o danym id znajduje sie w pivot table zeby zmienialo kolor i nie jestem pewny wlasnie tego czy dobrze to rozkminiam
a konsole:
Object { id: 1, name: "bbbbb", title: "Wydzial 2", start: Object, end: Object, source: Object, _id: "1", className: Array[0], allDay: false, _allDay: false, 2 więcej… } Object [ <a.fc-day-grid-event.fc-h-event.fc-event.fc-start.fc-end.fc-draggable> ] home:201:13
Object { id: 5, name: "asdasdsa", title: "Wydzial 1", start: Object, end: Object, source: Object, _id: "5", className: Array[0], allDay: false, _allDay: false, 2 więcej… } Object [ <a.fc-day-grid-event.fc-h-event.fc-event.fc-start.fc-end.fc-draggable> ] home:201:13
Object { id: 6, name: "dfgdgdfgd", title: "Wydzial 1", start: Object, end: Object, source: Object, _id: "6", className: Array[0], allDay: false, _allDay: false, 2 więcej… } Object [ <a.fc-day-grid-event.fc-h-event.fc-event.fc-start.fc-end.fc-draggable> ] home:201:13
Object { id: 7, name: "kkkkkkkkkkkkkkkkkkkkkkkk", title: "Wydzial 4", start: Object, end: Object, source: Object, _id: "7", className: Array[0], allDay: false, _allDay: false, 2 więcej… } Object [ <a.fc-day-grid-event.fc-h-event.fc-event.fc-start.fc-end.fc-draggable> ] home:201:13
Object { id: 8, name: "bbbb", title: "Wydzial 1", start: Object, end: Object, source: Object, _id: "8", className: Array[0], allDay: false, _allDay: false, 2 więcej… } Object [ <a.fc-day-grid-event.fc-h-event.fc-event.fc-start.fc-end.fc-draggable> ] home:201:13
Object { id: 9, name: "222", title: "Wydzial 2", start: Object, end: Object, source: Object, _id: "9", className: Array[0], allDay: false, _allDay: false, 2 więcej… } Object [ <a.fc-day-grid-event.fc-h-event.fc-event.fc-start.fc-end.fc-draggable> ] home:201:13
Object { id: 10, name: "asdasda", title: "Wydzial 1", start: Object, end: Object, source: Object, _id: "10", className: Array[0], allDay: false, _allDay: false, 2 więcej… } Object [ <a.fc-day-grid-event.fc-h-event.fc-event.fc-start.fc-end.fc-draggable> ]
Ale nie jestem pewny czy o to Ci chodzi;p
Pyton_000
6.04.2017, 14:52:42
noo i ten kod nie koloruje CI eventu?
Ogolnie eventy koloruja sie ale chce zrobić coś takiego:
Uzytkownik zapisuje sie na event i jak sie zapisze to event zmienia kolor na szary
A czy może da się jakoś zmienna z kontrolera przenieś do Js skryptu.
public function index()
{
echo $eventscolo=DB
::table('save_events')->select('events_id')->get(); echo $eventsss=DB
::table('events')->select('id','title')->get(); foreach ($eventsss as $eventss)
{
//$eventid=$eventss->id;
if($eventss == $eventscolo)
{
}
else
{
if ($eventss->title=="Wydzial 1")
{
}
elseif($eventss->title == "Wydzial 2")
{
}
elseif ($eventss->title == "Wydzial 3")
{
}
elseif ($eventss->title == "Wydzial 4")
{
echo $colorrr = 'yellow'; }
}
}
//dump($eventscolo, $eventsss);
return view('home',['eventscolo'=>$eventscolo],['eventsss'=>$eventsss],['color'=>$color]);
}
i np czy da sie zmienna color przenieść do js bo w kalendarzu mam eventColor i np zeby tu przenosilo kolor z kontrolera
OK sprawdzanie czy event istnieje w tablicy zrobiłem, teraz tylko mam pytanie czy mogę zmienna z controllera przenieść do skryptu js dotyczacego kalendarza bo mam tam opcje eventColor i chcialbym przypisac color z controllera do tej opcji.