У меня есть фид данных из 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 вещей, которые я пытаюсь.
Я думаю, что, возможно, я все это сделаю неправильно, но я совершенно новый.
Через несколько дней я, наконец, понял это! Просто помогите кому-то другому, вот как я это сделал. Он просто сохраняет статус в противоположных массивах на каждом цикле, поэтому он может сравнивать один цикл с другим, чтобы увидеть, произошло ли изменение.
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