首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >事件之前或之后的渲染时间

事件之前或之后的渲染时间
EN

Stack Overflow用户
提问于 2017-08-16 09:52:31
回答 2查看 182关注 0票数 0

我有一些事件在“准备工作”或“驾驶时间”之前或之后有一个“缓冲”时间。我在试着想办法显示这个。我的数据的一些伪代码:

代码语言:javascript
复制
{
  start: 11am,
  end: 11:30am,
  preptime: 5 minutes
}

理想的做法是显示一个10:55开始的活动,但在前5分钟使用不同的风格。你能想出任何方法来实现这一点吗?

EN

回答 2

Stack Overflow用户

发布于 2017-08-16 22:09:07

如果我理解你的问题,这将从事件开始减去准备时间,并将其着色(百分比)与事件的其余部分不同。在Firefox54、Chrome58、Edge、IE11上测试过。

https://jsfiddle.net/wp3nyax7/

代码语言:javascript
复制
$(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)) */
  }
});
票数 0
EN

Stack Overflow用户

发布于 2017-08-19 09:09:36

感谢你的想法!@smcd有了我需要的解决方案,然后我开始更好地理解我获得的数据,并不得不稍微修改一下我的想法。渐变的概念允许事件保持不变,并且可以调整大小和拖动,这很棒。

我的数据的变化意味着缓冲时间不是开始和结束时间的一部分。相反,它是一个额外的字段。因此,上午9点到10点、缓冲区为5分钟的约会仍然需要读写为9点到10点,而不是8:55到10点。这也符合客户体验,因为他们考虑的是上午9点到10点的事件。他们确实需要看到需要额外的时间。

我的解决方案是向事件对象添加类,如:.buffer-5、.buffer-10、.buffer-15,以支持5分钟间隔。在那里,我使用slotWidth值来确定要显示的大小。使用:在我添加一个稍微透明的阴影区域之前,显示“缓冲”时间。

这种方法有一个警告:缓冲时间可能会与约会重叠,而不是将它们推到新行上。不过,这可能是可取的。

最后,缓冲区数据更像是帮助文本,所以我认为这是正确的解决方案。

谢谢!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45703951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档