Html 破折号:在作业刷新数据之前,加载/重新加载时未更新小部件(CSS转换未初始化)

Html 破折号:在作业刷新数据之前,加载/重新加载时未更新小部件(CSS转换未初始化),html,css,sass,css-transitions,dashing,Html,Css,Sass,Css Transitions,Dashing,我不了解这些html/coffee/scss的东西。鲁比没事 我在这里使用这个热列表小部件: 它可以工作,但是当在浏览器中加载/重新加载页面时,我会得到空的小部件,直到作业再次运行。一般来说,数据应该是可用的。“更多信息”字段也由同一作业设置,并且从一开始就可见。 我非常感谢你的帮助。我的作业当前计划每分钟更新一次,但我希望每小时更新一次,这是因为作业中正在运行服务器查询 我猜,这是SCS中的转换内容的问题?我不需要过渡 提前谢谢 我的工作看起来像 sendEventData(Build

我不了解这些html/coffee/scss的东西。鲁比没事 我在这里使用这个热列表小部件: 它可以工作,但是当在浏览器中加载/重新加载页面时,我会得到空的小部件,直到作业再次运行。一般来说,数据应该是可用的。“更多信息”字段也由同一作业设置,并且从一开始就可见。 我非常感谢你的帮助。我的作业当前计划每分钟更新一次,但我希望每小时更新一次,这是因为作业中正在运行服务器查询

我猜,这是SCS中的转换内容的问题?我不需要过渡

提前谢谢

我的工作看起来像

    sendEventData(Buildbot.getBuildData(BUILDBOTCFG, 'clang'), 'clang')
    sendEventData(Buildbot.getBuildData(BUILDBOTCFG, 'gcc'), 'gcc')

    #...


    def sendEventData(myData, eventHandler)
      itemarray = [
      #{label: 'at', value: 'result'},
        {label: (myData[:current][:end] == nil) ? myData[:current][:start] : myData[:current][:end], value: myData[:current][:state]},
       {label: (myData[:previous][:end] == nil) ? myData[:previous][:start] : myData[:previous][:end], value: myData[:previous][:state]}
      ];

    case myData[:current][:state]
      when 'successful'
        heat = 1
      when 'pending'
        case myData[:previous][:state]
      when 'successful'
        heat = 1
      else
        heat =10
      end
      else
        heat = 10
      end

    datastruct = {
     items: itemarray,
     hotnessvalue:heat  
    }

    send_event(eventHandler, datastruct)
    send_event(eventHandler, {moreinfo: 'Current BuildNo ' + myData[:current][:revisions].to_s})
    end
    class Dashing.Hotlist extends Dashing.Widget
      ready: ->
        if @get('unordered')
          $(@node).find('ol').remove()
        else
          $(@node).find('ul').remove()

      onData: (data) ->
       node = $(@node)
       value = parseInt data.hotnessvalue
       cool = parseInt node.data "cool"
       warm = parseInt node.data "warm"
       level = switch
        when value <= cool then 0
        when value >= warm then 4
       else 
         bucketSize = (warm - cool) / 3 # Total # of colours in middle
         Math.ceil (value - cool) / bucketSize

      backgroundClass = "hotness#{level}"
      lastClass = @get "lastClass"
      node.toggleClass "#{lastClass} #{backgroundClass}"
      @set "lastClass", backgroundClass   
热名单,咖啡看起来像

    sendEventData(Buildbot.getBuildData(BUILDBOTCFG, 'clang'), 'clang')
    sendEventData(Buildbot.getBuildData(BUILDBOTCFG, 'gcc'), 'gcc')

    #...


    def sendEventData(myData, eventHandler)
      itemarray = [
      #{label: 'at', value: 'result'},
        {label: (myData[:current][:end] == nil) ? myData[:current][:start] : myData[:current][:end], value: myData[:current][:state]},
       {label: (myData[:previous][:end] == nil) ? myData[:previous][:start] : myData[:previous][:end], value: myData[:previous][:state]}
      ];

    case myData[:current][:state]
      when 'successful'
        heat = 1
      when 'pending'
        case myData[:previous][:state]
      when 'successful'
        heat = 1
      else
        heat =10
      end
      else
        heat = 10
      end

    datastruct = {
     items: itemarray,
     hotnessvalue:heat  
    }

    send_event(eventHandler, datastruct)
    send_event(eventHandler, {moreinfo: 'Current BuildNo ' + myData[:current][:revisions].to_s})
    end
    class Dashing.Hotlist extends Dashing.Widget
      ready: ->
        if @get('unordered')
          $(@node).find('ol').remove()
        else
          $(@node).find('ul').remove()

      onData: (data) ->
       node = $(@node)
       value = parseInt data.hotnessvalue
       cool = parseInt node.data "cool"
       warm = parseInt node.data "warm"
       level = switch
        when value <= cool then 0
        when value >= warm then 4
       else 
         bucketSize = (warm - cool) / 3 # Total # of colours in middle
         Math.ceil (value - cool) / bucketSize

      backgroundClass = "hotness#{level}"
      lastClass = @get "lastClass"
      node.toggleClass "#{lastClass} #{backgroundClass}"
      @set "lastClass", backgroundClass   

这就是Dashing的工作原理。小部件的数据只有在第一次运行时才会输入


为什么不在SCHEDULER.every之前先流式传输数据。。。?这应该首先设置窗口小部件,并等待下次计划刷新新数据。

我不确定您的意思。作业正在运行多次,因此后端具有所有数据的数据。我想我需要这里描述的东西:但是像ready:->@onData{value:0}这样的东西没有帮助,雪蒂的意思是,例如SCHEDULER.sample.rb中的每个'2s'do都是生成数据并推送到小部件的地方。因此,当您重新加载/刷新/启动仪表板时,仪表板将在2秒后才会启动。如果您将其设置为1小时,它将在1小时后开始播放流媒体。因此,如果您在第一个计划作业之前流式传输一些数据,它应该立即显示,如果您将其设置为每小时刷新一次,它将在1小时后刷新,是的,我已经考虑过这一点。特别是对于显示历史数据的graph小部件,我会这样做。无论如何,冲刺应该是不同的。当我在这里将小部件从热列表切换到列表时,我立即获得所有数据——即使作业仅每24小时运行一次。这意味着,这是一个真正的渲染问题。因此,您的解决方案是我的后备方案。Graph、List和其他方法在作业的一开始就初始化了数据。这就是数据被立即流式传输的原因。祝你好运!这表明缓存当然有效。然而,我仍然不满意这样一个事实,我的dashing实例每2秒向我估计的未来85个用户推送一次更新,而数据本身仅每30米更新一次。我目前的调查让我相信css3转换属性导致了这个问题