我正在尝试更改AngularUI的日历单元格颜色。
但总是只改变事件颜色。
如何更改日间单元格颜色?
这是我设置事件的角色代码:
$scope.events = [
{className: 'fa fa-shopping-basket', title: 'dashboard', start: new Date(y, m, 1), url: 'http://localhost/view_finance', backgroundColor: '#80d4ff', borderColor: '#80d4ff', textColor: '#0088cc', allDay: true},
{className: 'fa fa-line-chart', title: 'dashboard 2', start: new Date(y, m, 1), url: 'http://localhost/view_finance/d/dash2', backgroundColor: '#80d4ff', borderColor: '#80d4ff', textColor: '#0088cc', allDay: true},
{className: 'fa fa-user', title: 'balance', start: new Date(y, m, 1), url: 'http://localhost/view_finance/d/balance', backgroundColor: '#80d4ff', borderColor: '#80d4ff', textColor: '#0088cc', allDay: true},
{className: 'fa fa-bar-chart', title: 'invoice', start: new Date(y, m, 5), url: 'http://localhost/view_finance/invoice/invoice#!/invoice_view', backgroundColor: '#80d4ff', borderColor: '#80d4ff', textColor: '#0088cc', allDay: true},
{className: 'fa fa-bar-chart', title: 'documents', start: new Date(y, m, d - 3, 16, 0), url: 'http://localhost/view_finance/files/browse/home', backgroundColor: '#80d4ff', borderColor: '#80d4ff', textColor: '#0088cc', allDay: true},
{title: 'control side', start: new Date(y, m, d + 4, 16, 0), url: 'http://localhost/view_finance/manage/dashboard', backgroundColor: '#80d4ff', borderColor: '#80d4ff', textColor: '#0088cc', allDay: true},
{title: 'balance', start: new Date(y, m, d + 1, 19, 0), end: new Date(y, m, d + 1, 22, 30), url: 'http://localhost/view_finance/d/balance', backgroundColor: '#80d4ff', borderColor: '#80d4ff', textColor: '#0088cc', allDay: true},
{title: 'invoice settings', start: new Date(y, m, 28), end: new Date(y, m, 29), url: 'http://localhost/view_finance/invoice/invoice#!/invoice_setting', backgroundColor: '#80d4ff', borderColor: '#80d4ff', textColor: '#0088cc', allDay: true}
];
这是我目前的观点
答案 0 :(得分:4)
最后我做了它的工作
$scope.uiConfig = {
calendar: {
height: 650,
editable: true,
header: {
left: '',
center: 'prev title next',
right: ''
},
defaultView: 'month',
dayRender: function (date, cell) {
$r = $scope.getDateInfo(date);
if($r){
cell.css("background-color", "#ccf3ff");
}
cell.html('<i class="fa fa-line-chart" ></i>'+$r.amount+'<br/><i class="fa fa-user" ></i>'+$r.users+'<br/><i class="fa fa-shopping-basket" ></i>'+$r.income);
}
}
};
$scope.getDateInfo = function(date){
return {
amount : 50000,
users : 10,
income : 5000
}
}
这是我的硬编码值视图
答案 1 :(得分:1)
您可以在Event Source Object。
中设置颜色以下是一些例子:
{
events: [
{ title: 'Event1', start: '2011-04-04' },
{ title: 'Event2', start: '2011-05-05' }
],
color: 'yellow', // background color
textColor: 'black' // text color
}
答案 2 :(得分:1)
我不认为 ui-calendar directive (或 full calendar 本身)特别支持仅更改那些背景颜色包含事件的单元格,因此您无法设置这些“普通”。这留下了两个选择:
修改Angular-UI指令:
该指令可能位于名为 calendar.js 的文件中。打开它并进行以下更改......
将$timeout
依赖项注入uiCalendar
指令:
.directive('uiCalendar', ['uiCalendarConfig', '$timeout',
function(uiCalendarConfig, $timeout) {
添加然后将其添加到uiCalendar
指令link()
函数的底部:
$timeout(function() {
for (var i = 0; i < scope.eventSources[0].length; i++) {
var event = scope.eventSources[0][i];
var eventDate = moment(event.start).format("YYYY-MM-DD");
var tds = $("td.fc-day[data-date='" + eventDate + "']");
for (var j = 0; j < tds.length; j++) {
var td = tds[j];
$(td).css("background", "#000000");
};
};
});
工作原理。
生成完整日历后,它会在您希望更改背景颜色的单元格的类型上创建data-date
属性(即标有fc-day
的单元格类)。下图显示了这些单元格的一行(一周)。
在指令内部(我们可以访问事件),我们可以循环事件并以eventDate
属性使用的“YYYY-MM-DD”格式检索data-date
。然后,我们使用eventDate
查找相应的fc-day
单元格(使用Attribute Equals Selector),然后相应地设置其背景颜色。需要$timeout
服务以确保在生成DOM之后发生这种情况。
<强>输出强>