我有像“准备工作”或“驾驶时间”之前或之后有“缓冲”时间的事件。我试图弄清楚如何显示这个。我的数据的一些伪代码:事件之前或之后的呈现时间
{
start: 11am,
end: 11:30am,
preptime: 5 minutes
}
理想的事情将是表明开始于10:55的事件,但有不同的风格对于那些第一次5分钟。你能想出任何方法来实现这一目标吗?
我有像“准备工作”或“驾驶时间”之前或之后有“缓冲”时间的事件。我试图弄清楚如何显示这个。我的数据的一些伪代码:事件之前或之后的呈现时间
{
start: 11am,
end: 11:30am,
preptime: 5 minutes
}
理想的事情将是表明开始于10:55的事件,但有不同的风格对于那些第一次5分钟。你能想出任何方法来实现这一目标吗?
如果我理解了你的问题,这将从事件开始时间减去准备时间,并将其与事件的其余部分区别开来(百分比)。测试Firefox 54,Chrome 58,Edge,IE11。
https://jsfiddle.net/wp3nyax7/
$(function() {
var preptime = 'preptime'; /* name of property that holds prep time (minutes!) */
$('#calendar').fullCalendar({
events: [{
title: 'Event 1 has prep time',
start: moment(),
end: moment().add(30, 'minutes'),
preptime: 5
}, {
title: 'Event 2 no prep',
start: moment().add(1, 'hour'),
end: moment().add(1.5, 'hour')
}],
eventRender: function(event, element, view) {
// if there is a prep time, calculate how much to shade and make gradient for it
if (event.hasOwnProperty(preptime)) {
var prep = event[preptime];
var length = event.end.diff(event.start, 'minutes') - prep;
var ppct = (prep/length).toFixed(2) * 100;
makeGradients(element, ppct);
}
},
/* subtract prep time (minutes!) from start of event */
eventDataTransform: function(eventData) {
if (eventData.hasOwnProperty(preptime)) {
eventData.start.subtract(eventData[preptime], 'minutes');
}
return eventData;
}
});
function makeGradients(element, ppct) {
/* gradient info found via http://gradcolor.com/css3-gradient.php */
/* All these prefixed editions may not be necessary? Didn't bother to find out */
var prefixes = ['', '-moz-', '-ms-', '-o-', '-webkit-'];
var color1 = '#992222',
color2 = '#229922';
var grad = 'linear-gradient(left, {color1} {pct}%, {color2} {pct}%)'
.replace('{color1}', color1)
.replace('{color2}', color2)
.replace(/{pct}/g, ppct);
$.each(prefixes, function(i, v) {
element.css('background-image', v + grad);
});
/* also -webkit-gradient(linear, left bottom, right bottom, color-stop(%,color1), color-stop(%, color2)) */
}
});
谢谢你的想法! @smcd提供了我需要的解决方案,然后我开始更好地理解我所掌握的数据,并且不得不修改我的想法。渐变的想法可以让事件保持不变,并调整大小并拖动,这非常棒。
我的数据变化意味着缓冲时间不是开始和结束时间的一部分。相反,这是一个额外的领域。因此,上午9点到上午10点约5分钟的缓冲区仍然需要读取和写回为9-10而不是8:55 - 10.这与客户体验相匹配,因为他们正在考虑上午9点至上午10点的事件。他们确实需要看到有额外的时间需要。
我的解决方案是将类添加到事件对象,例如:.buffer-5,.buffer-10,.buffer-15以支持5分钟的间隔。从那里我使用slotWidth值来确定显示的大小。使用之前:我添加一个稍微透明的阴影区域,显示“缓冲”时间。
这种方法有一个警告:缓冲时间可能与约会重叠,而不是将它们推到新行上。这可能是可取的,但。
最后,缓冲区数据被视为更像帮助文本,所以我认为这是正确的解决方案。
谢谢!
最简单的方法是将其分成日历上的两个事件对象,然后您可以轻松地为每个事件对象设置一个单独的颜色。 – ADyson