@dk-web

Как раскрасить события в FullCalendar?

Сайт прекрасен и отличные советы дают. Надеюсь и с FullCalendar многие сталкивались...
Прилично докрутил свой календарь - но опять столкнулся с нехваткой знаний...

eventSources: [
			  {
                    url: 'ajax.php',
                    color: 'red',
                    type: 'POST',
                    data: {
                        op: 'source',
                        city: '1'
                   },
                    error: function() {
                        alert('Ошибка соединения с источником данных!');
                    }
               },
                 {
                    url: 'ajax.php',
                    color: 'yellow',
                    type: 'POST',
                    data: {
                        op: 'source',
                        city: '2'
                  },
                    error: function() {
                        alert('Ошибка соединения с источником данных!');
                    }
                }],
 eventRender: function (event, element) {
                if (event.city == 1) {
                  alert ('la');
                }
                 if (event.city ==2 ) {
                  alert ('lala');
                                  
                }


В обработчике:

case 'source':
		switch ($city) {
			case '1':
			$sql = 'SELECT * FROM events WHERE city="1"';
		$result = mysql_query($sql) or die ("Ошибка БД ".mysql_error());
		$json = Array();
		while ($row = mysql_fetch_assoc($result)) {
		    $json[] = array(
				'id' => $row['id'],
				'title' => $row['type'],
				'descr' => $row['descr'],
				'start' => $row['start'],
				'finish' => $row['finish'],
				'city' => $row['city'],
				'allDay' => false
			);
		}
		echo json_encode($json);
			break;
			case '2':
			$sql = 'SELECT * FROM events WHERE city="2"';
		$result = mysql_query($sql) or die ("Ошибка БД ".mysql_error());
		$json2 = Array();
		while ($row = mysql_fetch_assoc($result)) {
		    $json2[] = array(
				'id' => $row['id'],
				'title' => $row['type'],
				'descr' => $row['descr'],
				'start' => $row['start'],
				'finish' => $row['finish'],
				'city' => $row['city'],
				'allDay' => false
			);
		}
			echo json_encode($json2);
			break;
		}
		break;


Уверен это можно упростить...
Пробовал делать одним запросом...

Логически понимаю, что, если city=1, то цвет такой-то, но в документации не разобрался как "задать цвет в зависимости от полученных данных - только так кондово...
fullcalendar.io/docs/event_data/events_function
Я так понимаю, что пишется пользовательская функция, но меня смущает, что color вынесен за ее пределы...
буду признателен за совет или внятные примеры - сам не нашел(

П.с. eventRender срабатывает... осталось задать цвет...
  • Вопрос задан
  • 856 просмотров
Решения вопроса 1
@dk-web Автор вопроса
Решил так... на стороне обработчика..
eventSources: [
			  {
                    url: 'ajax.php',
                    type: 'POST',
                    data: {
                        op: 'source'
                   },
                    error: function() {
                        alert('Ошибка соединения с источником данных!');
                    }
               }]


и в обработчике...

case 'source':
	
		$sql = 'SELECT * FROM events';
		$result = mysql_query($sql) or die ("Ошибка БД ".mysql_error());
		$json = Array();
		while ($row = mysql_fetch_assoc($result)) {
			$json[]=$row;
		}
		for ($i=0; $i<count($json); $i++) {
				$color=array();
			
			switch ($json[$i]['city']) {
				case 1:
					$color['color']='red';	
				break;
					
				case 2:
					$color['color']='yellow';	
				break;
					
				default:
					$color['color']='green';	
				break;
			}
			$json[$i]=array_merge($json[$i],$color);
			}
		
                echo json_encode($json);
		break;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы