Динамические виджеты в Dashing

Я новичок в использовании скриптов ruby ​​и Coffee, но мне удалось дойти до отображения данных в одном виджете.

Я пытаюсь логически подумать, как можно создать виджет для каждой записи из коллекции.

Кто-нибудь знает, как создавать виджеты после вызова службы и получения набора данных.

Например:

entries: [
    {
        name: "bob",
        age: 21
    },
    {
        name: "alex",
        age: 42
    },
    {
        name: "fred",
        age: 35
    }
]

Я хочу иметь возможность пройти через каждую из них и создать виджет для каждой из этих записей. Это возможно?


person Sarah Wilson    schedule 13.10.2015    source источник


Ответы (2)


Это достаточно легко. Из любого скрипта Ruby, который у вас есть в папке заданий, вы обычно обновляете виджет вызовом send_event, например:

send_event(widget.to_s, bus_info)

Это обновит соответствующий виджет. Задание, однако, может делать этот вызов настолько, насколько это необходимо, поэтому может обновлять десятки виджетов в ходе своего выполнения. Вы можете просто просмотреть свой список и запустить send_event() для каждого элемента в вашем списке. Поиграйте с этим, и если вы застряли, дайте мне знать, и я могу собрать более крупный пример, но, надеюсь, вы сможете использовать вышеизложенное, чтобы начать работу.

person Michael Knowles    schedule 14.10.2015
comment
Привет, спасибо за ответ. Я перебираю объекты, но мне не повезло с созданием нового виджета для каждой записи/объекта. Не могли бы вы объяснить немного больше с тем, что вы уже упомянули. Я понимаю, что у тире есть идентификатор, который связан с send_event, но не знаю, как отображать данные в своих собственных виджетах на тире. - person Sarah Wilson; 14.10.2015

Вот более полный пример из нашего набора виджетов Zendesk.

def update_dashing(view, value)
  puts 'sending ' + view + ' : ' + value.to_s
  send_event('zendesk-' + view, current: value, status: 'normal',
                            service: 'Zendesk')
end

def update_zendesk(views)
  counts = zendesk_client.view_counts(ids: views, path: 'views/count_many')
  counts.all do |ct|
    next unless ct.fresh
    update_dashing(ct.view_id.to_s, ct.value.to_i)
  end
end

Функция zendesk_client.view_counts() возвращает список из <view_id>:<count> пар, которые мы затем прокручиваем.

person Michael Knowles    schedule 15.10.2015