【问题标题】:Rails lazy_high_charts: how to format tooltip labelRails lazy_high_charts:如何格式化工具提示标签
【发布时间】:2018-10-23 15:25:27
【问题描述】:

我会在图表中打印小时和分钟,例如“development: 27 h 30 m”。

现在我有了这个:

在我的脚本中,“数据”代表“小时”

{
  name: value.blank? ? "other" : value,
  data: all_weeks.merge(data_weeks.to_h).values.map do |data_value|
    data_value.nil? ? 0 : ( data_value.to_f / 60 ).round(2)
  end
}
....
f.tooltip(
   pointFormat: "<span style='color:{series.color}'>{series.name}</span>: <b>{point.y} h</b><br/>",
   split: true
)

我尝试将point.y 设置为pointFormat,但没有任何效果。 (编辑:pointFormat 将是一个通用字符串!)

我该如何解决?提前致谢。

编辑:

我解决了添加:

LazyHighCharts::HighChart.new("container") do |f|
  f.tooltip(
    formatter: "\
      function() { \
        var s = []; \
        s.push(this.x); \
        this.points.forEach(function(point) { \
          s.push('<b>' + point.series.name + '</b>: ' + Math.floor(point.y) + ' h ' + Math.floor((point.y % 1) * 60)  + ' m'); \
        }); \
        return s; \
      }".js_code,
    split: true
  )
  ....
end

【问题讨论】:

    标签: ruby-on-rails ruby tooltip lazy-high-charts


    【解决方案1】:

    也许你可以引入两个变量,data_hours 和 data_minutes,并用这些变量编写一个字符串插值。

    data_hours = data_value.to_i
    data_minutes = ((data_value - data_hours) * 60).to_i
    data_to_display = "#{data_hours} h #{data_minutes} m"
    

    希望对您有所帮助!

    写在 0.12 小时内 ;)

    【讨论】:

      【解决方案2】:
      ["dev: 27.5 h", "dev: 22 h", "dev: 0.3h"].map do |s|
        s.gsub(/\d+(\.\d+)?\s*h/i) do |h|
          h, m = h.to_f.divmod(1)
          [
            ("#{h} h" unless h.zero?),
            ("#{(60 * m).round} m" unless m.zero?)
          ].compact.join(" ")
        end
      end
      #⇒ ["dev: 27 h 30 m", "dev: 22 h", "dev: 18 m"]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-02
        • 1970-01-01
        • 2018-12-07
        • 2012-04-24
        • 1970-01-01
        • 1970-01-01
        • 2011-07-12
        • 1970-01-01
        相关资源
        最近更新 更多