【问题标题】:Dashing - dynamically delete widgetsDashing - 动态删除小部件
【发布时间】:2015-12-01 06:53:47
【问题描述】:

如何从Dashing 中的作业(rb) 中动态删除小部件?

我正在通过向 erb 文件发送数据来动态构建仪表板:

<div class="gridster">
  <ul>
   <% settings.servers.each do |data| %>
       <li data-row="1" data-col="1" data-sizex="1" data-sizey="1">
         <div data-id="<%=data['webHost']%>"  data-title="<%=data['name']%>" data-version="<%=data['Version']%>"  >
      </li>
   <% end %>
</div>

【问题讨论】:

  • ERB 仅在页面加载时呈现一次。您必须通过 Dashing JavaScript 维护的 EventSource 连接更新小部件。此外,您必须通过 send_event 发送更新。
  • 我正在通过 send_event 发送更新以推送数据。但是我怎样才能将“删除”事件发送到小部件?
  • 这是什么小部件?您是否能够以这种方式添加服务器而无需重新加载页面?
  • 基本小部件 - 标题。是的,这将在运行时更新服务器列表而无需重新加载页面

标签: dashing


【解决方案1】:

是的。我写了一个简单的示例作业,可以在这里做到这一点: http://www.mapledyne.com/ideas/2015/6/30/delete-a-dashing-dashboard-widget

您基本上只想操作 Sinatra::Application.settings.history 变量,但该链接中的代码应该可以让您大部分时间到达您想要的位置。

或者跳过帖子直接进入 gist 文件: https://gist.github.com/mapledyne/6fb671c17c3f865309f3#file-delete-widget-rb

如果您一开始不知道小部件(更复杂),您也可以动态生成部分 erb,但它以相同的方式开始 - 利用相同的历史变量。

【讨论】:

  • 在我提交这个问题之前,我找到了你的博客文章并尝试了它。它会在重新加载页面后删除小部件(Ctrl+R)。
  • lielran - 使用历史变量,小部件数据会立即删除,但如果仪表板已启动,则可能不明显,因为没有发送到仪表板的此更改通知。刷新页面可以解决这个问题(并且,从功能上讲,我们所依赖的,因为它适用于我们如何使用我们的动态仪表板)。其他人解决了这个问题并将其放在要点上:gist.github.com/jwalton/6616670 从 Dashing 发送重新加载。不过,我没有使用或测试过,但它看起来很有希望。
猜你喜欢
  • 1970-01-01
  • 2017-01-01
  • 1970-01-01
  • 2014-12-18
  • 1970-01-01
  • 2016-01-06
  • 2014-03-06
  • 2021-12-29
  • 2012-01-28
相关资源
最近更新 更多