Bokeh 表中的条件 DateFormatter

Posted

技术标签:

【中文标题】Bokeh 表中的条件 DateFormatter【英文标题】:Conditional DateFormatter in Bokeh tables 【发布时间】:2020-08-12 10:53:45 【问题描述】:

我可以在散景表中为我的日期格式化程序做一个静态选择

TableColumn(field=xdata, title=xdata, formatter=DateFormatter(format="%a, %e %b %y")),

但我想做一些更动态的事情,如果距离当前时间不到几个小时,则显示一天中的时间,否则显示完整日期(天+时间)

其他问题似乎集中在单元格背景和类似的东西上,具体取决于条件,所以我找不到真正适合此的先前提出的问题。

【问题讨论】:

htmlTemplateFormatter 可以使用任意 javascript 格式化值。 【参考方案1】:

完成这项工作的我丑陋的 JS 如下

    template="""
 <%= (
         function nameless()
          
            function shortenDateTime(inputDate /* Date() */
                                     ,threshold /*[seconds]*/) 
              function farAway(present /* integer unit epoch */, past /* integer unit epoch */) 
                if ( present - past > threshold*1000)
                  return true;
                   else 
                  return false;
                
              

              // get a new date (locale machine date time)
              var now = new Date();
              var now_epoch = now.getTime();


              inputDate_epoch = inputDate.getTime();
              date = inputDate.toDateString();
              time = inputDate.toLocaleTimeString();

              if (farAway(now_epoch,inputDate_epoch)) 
                return date + ' ' + time;
               else 
                return time;
              
            ;
            var _date = new Date(value);
            return shortenDateTime(_date)
         ()
     ) %>;
"""

然后必须从HTMLTemplateFormatter定义一个格式化程序

formater =  HTMLTemplateFormatter(template=template)

并在列的定义中使用它

TableColumn(field=xdata, width=22, title=xdata, formatter=formater),

我剩下的唯一问题与:

在输出12:09:33; 的末尾删除; 真的有必要使用我定义nameless()的技巧吗?

【讨论】:

以上是关于Bokeh 表中的条件 DateFormatter的主要内容,如果未能解决你的问题,请参考以下文章

DateFormatter 中的内存泄漏

Flash 中的条件日期格式

Bokeh 中的数据工具提示不显示数据,显示“???”反而

DateFormatter 中的 Swift 语言错误? [复制]

将来自 bupaR 的动画流程图集成到 Python 中的 Bokeh 仪表板中;有办法吗?

Java中的DateFormatter