【问题标题】:FullCalendar: Event Colors based on UsersFullCalendar:基于用户的事件颜色
【发布时间】:2013-10-10 14:33:48
【问题描述】:

我正在尝试自定义完整日历事件。只有一个事件源,我的事件对象如下所示:

{ id = 1, title = "XYZ Apple", start = "2013-10-02", end = "2013-10-06", allDay = true, userId = "abc" }

我想要实现的是基于用户 ID 我想定义事件的颜色。 颜色的选择无所谓,可以是随机的,用户数是动态的 例如 UserId "abc" 的所有事件都显示为黑色 UserId "xyz" 的所有事件都显示为红色等

另外,我正在寻找建议,如果我可以通过具有多个资源的事件源定义为: 对于“abc” - 不同的事件源 对于“xyz” - 不同的事件源。

用户是动态的。

任何建议:

这就是我的日历的样子

var calendar = {
    header: {
        left: 'prev,next',
        center: 'title',
        right: 'today, basicDay,basicWeek,month'
    },
    defaultView: 'month',
    buttonText: {
        today: 'Today',
        day: 'Day',
        week: 'Week',
        month: 'Month',
        prev: 'Prev', 
        next: 'Next', 

    },
    weekends: true, 
    editable: true,
    events: {
        ignoreTimezone: true,
        url: 'GetEvents',                              
        error: function () {
            alert('GetEvent Call Failed!');
        }
    }
};

myCalendar.fullCalendar(calendar);

【问题讨论】:

  • 看起来 nomatteus 的答案已经涵盖了您,但我想提一下 a library 我写的正是为此目的而设计的。您可以传入用户 ID 之类的密钥并返回颜色。如果您能够设置一个包含用户 ID 的属性,那就更容易了。

标签: jquery fullcalendar


【解决方案1】:

您可以通过为每个事件 (Event object docs) 传递 eventBackgroundColor 参数来自定义事件颜色。


为了生成颜色,您需要“种子随机颜色”。有一个here(Javascript),我也用过这个Ruby方法:

def random_hex(integer)
  srand integer
  (rand * 100000000).to_i.to_s(16)[0..5]
end

您可以使用用户 ID 为其播种。这个概念在其他语言中应该是相似的。

【讨论】:

    猜你喜欢
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    • 2014-10-23
    • 1970-01-01
    相关资源
    最近更新 更多