在Dashing中向小部件发送信息
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Dashing中向小部件发送信息相关的知识,希望对你有一定的参考价值。
我正在Ruby中创建一个工作,它从mysql数据库获取信息并将其发送到html页面以创建一个小部件。问题是,当我从mysql数据库中取出数据时,我无法显示数据,但是当我手动输入输入并将其发送到html页面时......它可以工作!
require 'Mysql2'
SCHEDULER.every '10s', :first_in => 0 do |job|
$application, $details, $timestamp = 0
table = Array.new
client = Mysql2::Client.new(:host => "localhost", :username => "****", :password => "****", :database => "Sample_Database")
#Gets statistics for latest input
sstc = client.query("SELECT * FROM Probably_Serious_Alerts")
sstc.each do |row|
$row = "{ cols: [ {value: '" + row["time_stamp"].to_s + "'}, {value: '"+ row["application"].to_s + "'}, {value: '" + row["details"].to_s + "'}]}"
table.push($row)
end
rows = "rows = ["
for row in table
rows = rows + row + ","
end
rows = rows[0...-1]
rows = rows + ']'
hrows = [
{ cols: [ {value: 'Time'}, {value: 'Monitoring System'}, {value: 'Event'}]}
]
sleep(1)
#rows = [
# { cols: [ {value: '2016-09-19 14:39:30 +0100'}, {value: 'Solarwinds'}, {value: 'First Solarwinds Error'}]},
# { cols: [ {value: '2016-09-19 15:24:17 +0100'}, {value: 'Nagios'}, {value: 'First Nagios'}]}]
puts rows
send_event('my-table', { hrows: hrows, rows: rows } )
end
注释代码是我运行时打印到终端的代码。这也是我发送到HTML页面并在小部件上工作的内容。有任何想法吗?有异步吗?
答案
我知道它有点晚了但是因为我在Stackoverflow上偶然发现了这个问题当谷歌搜索同样的问题时,我试图将数据推送到Smashing Table Widget时我认为如果我分享我的解决方案,其他人可能会很高兴。您的代码中的问题是您将返回的行对象作为字符串放置,但Table Widget需要,让我引用文档:
要向tbody(或thead)发送一行,请向行发送一个哈希数组(thead的hrows)。绑定在行之间起作用。每列应该是cols散列中自己的数组元素。哈希必须具有“值”键才能显示。要发送多行,请使用这些哈希的数组。
因此,您必须将MySQL结果转换为哈希数组。请参阅下面的代码,请注意“Loc Nr。”,“Address”和“Status”是我的MySQL表的列名:
results = db.query(sql)
hrows = [
{ cols: [ {value: 'Loc Nr.'}, {value: 'Address'}, {value: 'Status'}]}
]
table = Array.new
results.each do |row|
table.push({ cols: [ {value: row['Loc Nr.']}, {value: row['Address']}, {value: row['Status']}]})
end
send_event('locations', { hrows: hrows, rows: table } )
希望你已经找到了解决方案,但它可能会帮助别人:D
以上是关于在Dashing中向小部件发送信息的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Android Studio 向小部件添加“const”?