Запуск счетчика в реальном времени при изменении элемента в массиве?

0

У меня есть фид данных из API, который возвращает массив массивов с полями "имя", "статус звонка" и "время":

[["alex", "wrap", "1395673193"], ["bill", "call", "1395673370"], ["chelsea", "wait", "1395673363"], ["david", "wait", "1395673374"], ["kirsty", "call", "1395673340"], ["natalie", "wait", "1395673360"], ["rose", "wait", "1395673374"], ["shirley", "wait", "1395673378"], ["stuart", "call", "1395673101"], ["wendy", "call", "1395673352"]]

Время - это отметка времени Uxix, но пока я не думаю, что она мне нужна.

Я показываю их в представлении с частичным обновлением jQuery каждую секунду:

<% @ta.each do |elem| %> 
 <td><%  elem.each_slice(3) do |a,b,c| %></td>
 <td><%=  a %></td>
 <td><%=  b %></td>
 <td><%=  c %></td>
<% end %>
<% end %>

То, что я хотел бы сделать, это показать живой счетчик, например секундомер, который сбрасывается каждый раз, когда изменяется b но я не могу понять, как запускать часы.

Я попытался добавить что-то вроде следующего к моему представлению, которое обновляется jQuery каждую секунду:

 <td><%  elem.each_slice(3) do |a,b,c| %></td>
 <td><%=  a %></td>
 <td><%=  b %></td>
 <td><%= (b == @timecheck ? "0" : "1" ) %></td>
 <% @timecheck = b %>
<% end %>

с логикой, что "1" должно появиться, а затем вернуться к "0" на следующей итерации, то есть я мог бы использовать его в качестве триггера. Но это не работает, потому что оно содержит значение для предыдущего агента, а не того же агента в предыдущем цикле, если вы меня получите.

Я подозреваю, что делаю слишком много в этом взгляде и что логика должна быть в контроллере, но я могу переместить его, когда он работает. На данный момент это всего лишь mashup вещей, которые я пытаюсь.

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

  • 0
    Спасибо за редактирование Жестянщика. Я буду делать то же самое в будущих вопросах.
  • 0
    Нет берущих? Я все еще застрял! Но мой новый план атаки - создать два хэша для пар «имя» и «статус», затем сохранить и проверить альтернативные, используя счетчик циклов и нечетные и четные! Посмотрим, будет ли это работать!
Теги:
ruby-on-rails-3

1 ответ

0
Лучший ответ

Через несколько дней я, наконец, понял это! Просто помогите кому-то другому, вот как я это сделал. Он просто сохраняет статус в противоположных массивах на каждом цикле, поэтому он может сравнивать один цикл с другим, чтобы увидеть, произошло ли изменение.

count = 0
@changeodd = Hash.new
@changeeven = Hash.new
@time = Hash.new
loop do
  count = count + 1
  a = Agentfeed.get("http://myAPI/ajax.php?token=""#{@token}""&method=agents&action=read")
  b = a["list"]
  @feedarray = []
     b.each do |feed|

     name = feed["name"]
     status = feed["status"]

  if count.odd?
     @changeodd[name] = status
     if @changeeven[name] == status
        @time[name] = @time[name] + 1
     else
    @time[name] = 1
     end
   else
     @changeeven[name] = status
     if @changeodd[name] == status
    @time[name] = @time[name] + 1
     else
    @time[name] = 1
     end
   end


@feed = []
@feed << name << status << @time[name]
@feedarray << @feed

end

Ещё вопросы

Сообщество Overcoder
Наверх
Меню