2014-03-24 24 views
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」迭代,這意味着我可以使用它作爲觸發器。但是這不起作用,因爲它保存了前一個代理的值,而不是前一個循環中的同一個代理,如果你找到我的話。

我懷疑我在視圖中做得太多了,而且邏輯應該在控制器中,但是我可以在它工作後將其移動。現在,這只是我嘗試的事情的混搭。

我想我可能會這樣做都是錯誤的,但我對這一切都很陌生。

+0

感謝您編輯錫文。我將在未來的問題上做同樣的事情。 –

+0

沒有接受者?我仍然堅持!但是我的新攻擊計劃是爲「名稱」和「狀態」密鑰對創建兩個哈希值,然後使用循環計數器和奇數和平均值保存並檢查替換的哈希值!讓我們看看它是否會起作用! –

回答

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 
相關問題