javascript - 是否可以为事件 : [] in FullCalendar? 中的每个事件设置颜色

标签 javascript jquery fullcalendar

我正在 http://arshaw.com/fullcalendar/ 使用 FullCalendar 。

我正在使用 PHP 构建一个 events: [] 列表:

<?php
    $dbh = new PDO('mysql:host=localhost;dbname=calendar', 'user', 'pass');
    $stmt = $dbh->prepare("SELECT * FROM holidays");

    $stmt->execute();

    $return_array = array();
    $event_array;

        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
          $event_array = array();

          $event_array['id'] = $row['id'];
          $event_array['title'] = $row['id'] . " - " . $row['forename'] . " " . $row['surname'];
          $event_array['start'] = $row['start'];
          $event_array['end'] = $row['end'];
          $event_array['allDay'] = true;

          // what I want to be able to do
          if ($row['department'] == 'UK') { $event_array['color'] = '#000000'; };
          if ($row['department'] == 'US') { $event_array['color'] = '#000000'; };
          else { $event_array['color'] = '#000000'; };

          array_push($return_array, $event_array);
        }

    echo json_encode($return_array);
?>

我想知道是否可以为数组中的每个单独事件着色。我看到http://arshaw.com/fullcalendar/docs/event_data/events_array/可以设置颜色,但这些颜色是在整个 eventSources: [] 上设置的,而不是可以在同一 eventSource 中针对每个事件进行更改的颜色。

可以这样做吗?

最佳答案

我假设你的 JS 正确显示了你创建的 json 数组,没有你的 js 代码就无法判断。

an attribute you can use称为className,它将指定添加到每个事件的类。

在您的示例中,您应该能够执行以下操作:

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
      $event_array = array();

      $event_array['id'] = $row['id'];
      $event_array['title'] = $row['id'] . " - " . $row['forename'] . " " . $row['surname'];
      $event_array['start'] = $row['start'];
      $event_array['end'] = $row['end'];
      $event_array['allDay'] = true;

      // Apply a different class depending on the department
      if ($row['department'] == 'UK') { 
          $event_array['className'] = 'uk_event'; 
      } else if ($row['department'] == 'US') { 
          $event_array['className'] = 'us_event'; 
      } else { 
          $event_array['className'] = 'general_event'; 
      };

      array_push($return_array, $event_array);
}

然后在显示日历的页面上,您可以使用一些 CSS 来设置这些规则的样式,例如:

.uk_event {
    background-color:blue;
}

.us_event {
    background-color:red;
}

.general_event {
    background-color:black;
}

英国事件应为蓝色,美国事件应为红色等...

查看我多年前使用 FullCalendar 制作的日历,我必须更加具体,并将样式更改应用于子 div:

 .uk_event div {
     background-color:blue;
 } 

不确定现在是否有必要,或者当时为什么要这样做。可能是版本差异的问题,我不确定,尝试两者,看看是否有效。

这就是如何做到这一点的总体思路。

关于javascript - 是否可以为事件 : [] in FullCalendar? 中的每个事件设置颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25075463/

相关文章:

javascript - 原型(prototype)更新数据

javascript - 获取浏览器中打开的所有URL

javascript - 等待上传完成后再单击按钮

复选框的 jQuery 验证插件 errorPlacement

php - 确定特定日期存在多少条目

javascript - 日历点击样式颜色?

javascript - 获取Ext JS 3.0 Grid中的行数据

javascript - Ajax 调用无法从 Web api 服务获取返回消息

javascript - 来自未知来源的页面高度

javascript - 来自全日历事件点击的 Bootstrap 模式调用