【发布时间】:2025-11-24 19:30:02
【问题描述】:
我在 dashing 中使用“列表”小部件来显示一个字符串和一个值(在本例中是用户名和批处理系统上运行的作业数)。
我希望按值(作业数)降序排列显示。它目前从包含字符串(用户名)和值(作业数)的 csv 文件中读取这些,按降序排列。
CSV.foreach('/path/to/file.csv') do |row|
user = row[0]
numberOfJobs = row[1]
SGE_list[user] = { label: user, value: numberOfJobs }
end
只要 dashing 开始,并第一次读取文件,这是正确的。但是,当它重新读取文件(不断更新)时,它会保持原来的顺序,(不管 csv 文件中的顺序如何)。
有什么建议吗?
完整的作业文件:
require 'csv'
JOB_list = Hash.new({ value: 0 })
SCHEDULER.every '5m' do
groups = ["user1", "user2", "user3", "user4", "user5", "user6", "user7", "user8"]
# Read in to get order
CSV.foreach('/opt/dashing/sweet_dashboard_project/jobs/qusage.csv') do |row|
user = row[0]
numberOfJobs = row[1]
JOB_list[user] = { label: user, value: numberOfJobs }
end
# blank all values
for g in groups
JOB_list[g] = { label: g, value: 0 }
end
CSV.foreach('/opt/dashing/sweet_dashboard_project/jobs/qusage.csv') do |row|
user = row[0]
numberOfJobs = row[1]
JOB_list[user] = { label: user, value: numberOfJobs }
end
send_event('batch_jobs', { items: JOB_list.values })
end
csv 文件可能会有所不同。它可能是: 用户 7, 1000 用户 2, 987 用户 8, 800 用户 6, 400 用户 5, 200 用户 4, 122 用户 1, 89 用户 3, 2
或者,如果用户没有运行作业,则不会列出它们:
用户 6, 340 用户 5, 123 用户 4, 101
它总是按第二列排序。
【问题讨论】:
-
更好地在 gist 中提供完整的小部件以供参考 csv 示例文件
标签: dashing