1980, "y" => 1323 }, { "x" => 1981, "y" =-6ren">
gpt4 book ai didi

ruby - 如何保存和展示 Dashing 的历史值?

转载 作者:可可西里 更新时间:2023-11-01 10:58:08 26 4
gpt4 key购买 nike

目前要设置一个 graph小部件,作业应传递所有要显示的值:

  data = [
{ "x" => 1980, "y" => 1323 },
{ "x" => 1981, "y" => 53234 },
{ "x" => 1982, "y" => 2344 }
]

我只想从我的服务器读取当前(最新)值,但之前的值也应该显示。

看起来我可以create a job ,它将从服务器读取当前值,但剩余值将从 Redis 读取(或 sqlite database ,但我更喜欢 Redis)。之后的当前值应该保存到数据库中。

我以前从未使用过 Ruby 和 Dashing,所以我的第一个问题是 - 这可能吗?如果我将使用 Redis,那么问题是如何存储数据,因为这是键值数据库。我可以将其保留为 widget-id-1widget-id-2widget-id-3 ... widget -id-N 等,但在这种情况下,我将不得不存储 N 值(如 widget-id=N)。或者,有什么更好的方法吗?

最佳答案

我得出以下解决方案:

require 'redis' # https://github.com/redis/redis-rb
redis_uri = URI.parse(ENV["REDISTOGO_URL"])
redis = Redis.new(:host => redis_uri.host, :port => redis_uri.port, :password => redis_uri.password)

if redis.exists('values_x') && redis.exists('values_y')
values_x = redis.lrange('values_x', 0, 9) # get latest 10 records
values_y = redis.lrange('values_y', 0, 9) # get latest 10 records
else
values_x = []
values_y = []
end

SCHEDULER.every '10s', :first_in => 0 do |job|
rand_data = (Date.today-rand(10000)).strftime("%d-%b") # replace this line with the code to get your data
rand_value = rand(50) # replace this line with the code to get your data
values_x << rand_data
values_y << rand_value

redis.multi do # execute as a single transaction
redis.lpush('values_x', rand_data)
redis.lpush('values_y', rand_value)
# feel free to add more datasets values here, if required
end

data = [
{
label: 'dataset-label',
fillColor: 'rgba(220,220,220,0.5)',
strokeColor: 'rgba(220,220,220,0.8)',
highlightFill: 'rgba(220,220,220,0.75)',
highlightStroke: 'rgba(220,220,220,1)',
data: values_y.last(10) # display last 10 values only
}
]
options = { scaleFontColor: '#fff' }

send_event('barchart', { labels: values_x.last(10), datasets: data, options: options })
end

不确定此处是否正确实现了所有内容,但它有效。

关于ruby - 如何保存和展示 Dashing 的历史值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35781523/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com