sidekiq 5.2.8 → 6.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of sidekiq might be problematic. Click here for more details.
- checksums.yaml +4 -4
 - data/.github/ISSUE_TEMPLATE/bug_report.md +20 -0
 - data/.github/workflows/ci.yml +41 -0
 - data/.gitignore +0 -2
 - data/.standard.yml +20 -0
 - data/5.0-Upgrade.md +1 -1
 - data/6.0-Upgrade.md +72 -0
 - data/Changes.md +196 -0
 - data/Ent-2.0-Upgrade.md +37 -0
 - data/Ent-Changes.md +72 -1
 - data/Gemfile +12 -11
 - data/Gemfile.lock +193 -0
 - data/Pro-5.0-Upgrade.md +25 -0
 - data/Pro-Changes.md +56 -2
 - data/README.md +18 -34
 - data/Rakefile +5 -4
 - data/bin/sidekiq +26 -2
 - data/bin/sidekiqload +32 -24
 - data/bin/sidekiqmon +8 -0
 - data/lib/generators/sidekiq/templates/worker_test.rb.erb +1 -1
 - data/lib/generators/sidekiq/worker_generator.rb +21 -13
 - data/lib/sidekiq/api.rb +245 -219
 - data/lib/sidekiq/cli.rb +144 -180
 - data/lib/sidekiq/client.rb +68 -48
 - data/lib/sidekiq/delay.rb +5 -6
 - data/lib/sidekiq/exception_handler.rb +10 -12
 - data/lib/sidekiq/extensions/action_mailer.rb +13 -22
 - data/lib/sidekiq/extensions/active_record.rb +13 -10
 - data/lib/sidekiq/extensions/class_methods.rb +14 -11
 - data/lib/sidekiq/extensions/generic_proxy.rb +4 -4
 - data/lib/sidekiq/fetch.rb +29 -30
 - data/lib/sidekiq/job_logger.rb +45 -7
 - data/lib/sidekiq/job_retry.rb +62 -61
 - data/lib/sidekiq/launcher.rb +112 -54
 - data/lib/sidekiq/logger.rb +166 -0
 - data/lib/sidekiq/manager.rb +11 -13
 - data/lib/sidekiq/middleware/chain.rb +15 -5
 - data/lib/sidekiq/middleware/i18n.rb +5 -7
 - data/lib/sidekiq/monitor.rb +133 -0
 - data/lib/sidekiq/paginator.rb +18 -14
 - data/lib/sidekiq/processor.rb +71 -70
 - data/lib/sidekiq/rails.rb +29 -37
 - data/lib/sidekiq/redis_connection.rb +50 -48
 - data/lib/sidekiq/scheduled.rb +28 -29
 - data/lib/sidekiq/sd_notify.rb +149 -0
 - data/lib/sidekiq/systemd.rb +24 -0
 - data/lib/sidekiq/testing/inline.rb +2 -1
 - data/lib/sidekiq/testing.rb +35 -24
 - data/lib/sidekiq/util.rb +17 -16
 - data/lib/sidekiq/version.rb +2 -1
 - data/lib/sidekiq/web/action.rb +14 -10
 - data/lib/sidekiq/web/application.rb +74 -72
 - data/lib/sidekiq/web/csrf_protection.rb +156 -0
 - data/lib/sidekiq/web/helpers.rb +97 -77
 - data/lib/sidekiq/web/router.rb +18 -17
 - data/lib/sidekiq/web.rb +53 -53
 - data/lib/sidekiq/worker.rb +126 -102
 - data/lib/sidekiq.rb +69 -44
 - data/sidekiq.gemspec +15 -16
 - data/web/assets/javascripts/application.js +25 -27
 - data/web/assets/javascripts/dashboard.js +4 -23
 - data/web/assets/stylesheets/application-dark.css +149 -0
 - data/web/assets/stylesheets/application.css +28 -6
 - data/web/locales/de.yml +14 -2
 - data/web/locales/en.yml +2 -0
 - data/web/locales/fr.yml +3 -3
 - data/web/locales/ja.yml +4 -1
 - data/web/locales/lt.yml +83 -0
 - data/web/locales/pl.yml +4 -4
 - data/web/locales/ru.yml +4 -0
 - data/web/locales/vi.yml +83 -0
 - data/web/views/_job_info.erb +2 -1
 - data/web/views/busy.erb +8 -3
 - data/web/views/dead.erb +2 -2
 - data/web/views/layout.erb +1 -0
 - data/web/views/morgue.erb +5 -2
 - data/web/views/queue.erb +10 -1
 - data/web/views/queues.erb +9 -1
 - data/web/views/retries.erb +5 -2
 - data/web/views/retry.erb +2 -2
 - data/web/views/scheduled.erb +5 -2
 - metadata +31 -49
 - data/.circleci/config.yml +0 -61
 - data/.github/issue_template.md +0 -11
 - data/.travis.yml +0 -11
 - data/bin/sidekiqctl +0 -20
 - data/lib/sidekiq/core_ext.rb +0 -1
 - data/lib/sidekiq/ctl.rb +0 -221
 - data/lib/sidekiq/logging.rb +0 -122
 - data/lib/sidekiq/middleware/server/active_record.rb +0 -23
 
| 
         @@ -16,10 +16,8 @@ var gridSize=(this.orientation=="right"?1:-1)*this.graph.width;this.graph.vis.ap 
     | 
|
| 
       16 
16 
     | 
    
         
             
            var nodes=vis.selectAll("path").data(series.stack.filter(function(d){return d.y!==null})).enter().append("svg:rect").attr("x",function(d){return graph.x(d.x)+barXOffset}).attr("y",function(d){return graph.y(d.y0+Math.abs(d.y))*(d.y<0?-1:1)}).attr("width",seriesBarWidth).attr("height",function(d){return graph.y.magnitude(Math.abs(d.y))}).attr("opacity",series.opacity).attr("transform",transform);Array.prototype.forEach.call(nodes[0],function(n){n.setAttribute("fill",series.color)});if(this.unstack)barXOffset+=seriesBarWidth},this)},_frequentInterval:function(data){var intervalCounts={};for(var i=0;i<data.length-1;i++){var interval=data[i+1].x-data[i].x;intervalCounts[interval]=intervalCounts[interval]||0;intervalCounts[interval]++}var frequentInterval={count:0,magnitude:1};var keysSorted=Rickshaw.keys(intervalCounts).sort(function asc(a,b){return Number(a)-Number(b)});keysSorted.forEach(function(i){if(frequentInterval.count<intervalCounts[i]){frequentInterval={count:intervalCounts[i],magnitude:i}}});return frequentInterval}});Rickshaw.namespace("Rickshaw.Graph.Renderer.Area");Rickshaw.Graph.Renderer.Area=Rickshaw.Class.create(Rickshaw.Graph.Renderer,{name:"area",defaults:function($super){return Rickshaw.extend($super(),{unstack:false,fill:false,stroke:false})},seriesPathFactory:function(){var graph=this.graph;var factory=d3.svg.area().x(function(d){return graph.x(d.x)}).y0(function(d){return graph.y(d.y0)}).y1(function(d){return graph.y(d.y+d.y0)}).interpolate(graph.interpolation).tension(this.tension);factory.defined&&factory.defined(function(d){return d.y!==null});return factory},seriesStrokeFactory:function(){var graph=this.graph;var factory=d3.svg.line().x(function(d){return graph.x(d.x)}).y(function(d){return graph.y(d.y+d.y0)}).interpolate(graph.interpolation).tension(this.tension);factory.defined&&factory.defined(function(d){return d.y!==null});return factory},render:function(args){args=args||{};var graph=this.graph;var series=args.series||graph.series;var vis=args.vis||graph.vis;vis.selectAll("*").remove();var method=this.unstack?"append":"insert";var data=series.filter(function(s){return!s.disabled}).map(function(s){return s.stack});var nodes=vis.selectAll("path").data(data).enter()[method]("svg:g","g");nodes.append("svg:path").attr("d",this.seriesPathFactory()).attr("class","area");if(this.stroke){nodes.append("svg:path").attr("d",this.seriesStrokeFactory()).attr("class","line")}var i=0;series.forEach(function(series){if(series.disabled)return;series.path=nodes[0][i++];this._styleSeries(series)},this)},_styleSeries:function(series){if(!series.path)return;d3.select(series.path).select(".area").attr("fill",series.color);if(this.stroke){d3.select(series.path).select(".line").attr("fill","none").attr("stroke",series.stroke||d3.interpolateRgb(series.color,"black")(.125)).attr("stroke-width",this.strokeWidth)}if(series.className){series.path.setAttribute("class",series.className)}}});Rickshaw.namespace("Rickshaw.Graph.Renderer.ScatterPlot");Rickshaw.Graph.Renderer.ScatterPlot=Rickshaw.Class.create(Rickshaw.Graph.Renderer,{name:"scatterplot",defaults:function($super){return Rickshaw.extend($super(),{unstack:true,fill:true,stroke:false,padding:{top:.01,right:.01,bottom:.01,left:.01},dotSize:4})},initialize:function($super,args){$super(args)},render:function(args){args=args||{};var graph=this.graph;var series=args.series||graph.series;var vis=args.vis||graph.vis;var dotSize=this.dotSize;vis.selectAll("*").remove();series.forEach(function(series){if(series.disabled)return;var opacity=series.opacity?series.opacity:1;var nodes=vis.selectAll("path").data(series.stack.filter(function(d){return d.y!==null})).enter().append("svg:circle").attr("cx",function(d){return graph.x(d.x)}).attr("cy",function(d){return graph.y(d.y)}).attr("r",function(d){return"r"in d?d.r:dotSize}).attr("opacity",function(d){return"opacity"in d?d.opacity:opacity});if(series.className){nodes.classed(series.className,true)}Array.prototype.forEach.call(nodes[0],function(n){n.setAttribute("fill",series.color)})},this)}});Rickshaw.namespace("Rickshaw.Graph.Renderer.Multi");Rickshaw.Graph.Renderer.Multi=Rickshaw.Class.create(Rickshaw.Graph.Renderer,{name:"multi",initialize:function($super,args){$super(args)},defaults:function($super){return Rickshaw.extend($super(),{unstack:true,fill:false,stroke:true})},configure:function($super,args){args=args||{};this.config=args;$super(args)},domain:function($super){this.graph.stackData();var domains=[];var groups=this._groups();this._stack(groups);groups.forEach(function(group){var data=group.series.filter(function(s){return!s.disabled}).map(function(s){return s.stack});if(!data.length)return;var domain=null;if(group.renderer&&group.renderer.domain){domain=group.renderer.domain(data)}else{domain=$super(data)}domains.push(domain)});var xMin=d3.min(domains.map(function(d){return d.x[0]}));var xMax=d3.max(domains.map(function(d){return d.x[1]}));var yMin=d3.min(domains.map(function(d){return d.y[0]}));var yMax=d3.max(domains.map(function(d){return d.y[1]}));return{x:[xMin,xMax],y:[yMin,yMax]}},_groups:function(){var graph=this.graph;var renderGroups={};graph.series.forEach(function(series){if(series.disabled)return;if(!renderGroups[series.renderer]){var ns="http://www.w3.org/2000/svg";var vis=document.createElementNS(ns,"g");graph.vis[0][0].appendChild(vis);var renderer=graph._renderers[series.renderer];var config={};var defaults=[this.defaults(),renderer.defaults(),this.config,this.graph];defaults.forEach(function(d){Rickshaw.extend(config,d)});renderer.configure(config);renderGroups[series.renderer]={renderer:renderer,series:[],vis:d3.select(vis)}}renderGroups[series.renderer].series.push(series)},this);var groups=[];Object.keys(renderGroups).forEach(function(key){var group=renderGroups[key];groups.push(group)});return groups},_stack:function(groups){groups.forEach(function(group){var series=group.series.filter(function(series){return!series.disabled});var data=series.map(function(series){return series.stack});if(!group.renderer.unstack){var layout=d3.layout.stack();var stackedData=Rickshaw.clone(layout(data));series.forEach(function(series,index){series._stack=Rickshaw.clone(stackedData[index])})}},this);return groups},render:function(){this.graph.series.forEach(function(series){if(!series.renderer){throw new Error("Each series needs a renderer for graph 'multi' renderer")}});this.graph.vis.selectAll("*").remove();var groups=this._groups();groups=this._stack(groups);groups.forEach(function(group){var series=group.series.filter(function(series){return!series.disabled});series.active=function(){return series};group.renderer.render({series:series,vis:group.vis});series.forEach(function(s){s.stack=s._stack||s.stack||s.data})})}});Rickshaw.namespace("Rickshaw.Graph.Renderer.LinePlot");Rickshaw.Graph.Renderer.LinePlot=Rickshaw.Class.create(Rickshaw.Graph.Renderer,{name:"lineplot",defaults:function($super){return Rickshaw.extend($super(),{unstack:true,fill:false,stroke:true,padding:{top:.01,right:.01,bottom:.01,left:.01},dotSize:3,strokeWidth:2})},seriesPathFactory:function(){var graph=this.graph;var factory=d3.svg.line().x(function(d){return graph.x(d.x)}).y(function(d){return graph.y(d.y)}).interpolate(this.graph.interpolation).tension(this.tension);factory.defined&&factory.defined(function(d){return d.y!==null});return factory},render:function(args){args=args||{};var graph=this.graph;var series=args.series||graph.series;var vis=args.vis||graph.vis;var dotSize=this.dotSize;vis.selectAll("*").remove();var data=series.filter(function(s){return!s.disabled}).map(function(s){return s.stack});var nodes=vis.selectAll("path").data(data).enter().append("svg:path").attr("d",this.seriesPathFactory());var i=0;series.forEach(function(series){if(series.disabled)return;series.path=nodes[0][i++];this._styleSeries(series)},this);series.forEach(function(series){if(series.disabled)return;var nodes=vis.selectAll("x").data(series.stack.filter(function(d){return d.y!==null})).enter().append("svg:circle").attr("cx",function(d){return graph.x(d.x)}).attr("cy",function(d){return graph.y(d.y)}).attr("r",function(d){return"r"in d?d.r:dotSize});Array.prototype.forEach.call(nodes[0],function(n){if(!n)return;n.setAttribute("data-color",series.color);n.setAttribute("fill","white");n.setAttribute("stroke",series.color);n.setAttribute("stroke-width",this.strokeWidth)}.bind(this))},this)}});Rickshaw.namespace("Rickshaw.Graph.Smoother");Rickshaw.Graph.Smoother=Rickshaw.Class.create({initialize:function(args){this.graph=args.graph;this.element=args.element;this.aggregationScale=1;this.build();this.graph.stackData.hooks.data.push({name:"smoother",orderPosition:50,f:this.transformer.bind(this)})},build:function(){var self=this;var $=jQuery;if(this.element){$(function(){$(self.element).slider({min:1,max:100,slide:function(event,ui){self.setScale(ui.value)}})})}},setScale:function(scale){if(scale<1){throw"scale out of range: "+scale}this.aggregationScale=scale;this.graph.update()},transformer:function(data){if(this.aggregationScale==1)return data;var aggregatedData=[];data.forEach(function(seriesData){var aggregatedSeriesData=[];while(seriesData.length){var avgX=0,avgY=0;var slice=seriesData.splice(0,this.aggregationScale);slice.forEach(function(d){avgX+=d.x/slice.length;avgY+=d.y/slice.length});aggregatedSeriesData.push({x:avgX,y:avgY})}aggregatedData.push(aggregatedSeriesData)}.bind(this));return aggregatedData}});Rickshaw.namespace("Rickshaw.Graph.Socketio");Rickshaw.Graph.Socketio=Rickshaw.Class.create(Rickshaw.Graph.Ajax,{request:function(){var socket=io.connect(this.dataURL);var self=this;socket.on("rickshaw",function(data){self.success(data)})}});Rickshaw.namespace("Rickshaw.Series");Rickshaw.Series=Rickshaw.Class.create(Array,{initialize:function(data,palette,options){options=options||{};this.palette=new Rickshaw.Color.Palette(palette);this.timeBase=typeof options.timeBase==="undefined"?Math.floor((new Date).getTime()/1e3):options.timeBase;var timeInterval=typeof options.timeInterval=="undefined"?1e3:options.timeInterval;this.setTimeInterval(timeInterval);if(data&&typeof data=="object"&&Array.isArray(data)){data.forEach(function(item){this.addItem(item)},this)}},addItem:function(item){if(typeof item.name==="undefined"){throw"addItem() needs a name"}item.color=item.color||this.palette.color(item.name);item.data=item.data||[];if(item.data.length===0&&this.length&&this.getIndex()>0){this[0].data.forEach(function(plot){item.data.push({x:plot.x,y:0})})}else if(item.data.length===0){item.data.push({x:this.timeBase-(this.timeInterval||0),y:0})}this.push(item);if(this.legend){this.legend.addLine(this.itemByName(item.name))}},addData:function(data,x){var index=this.getIndex();Rickshaw.keys(data).forEach(function(name){if(!this.itemByName(name)){this.addItem({name:name})}},this);this.forEach(function(item){item.data.push({x:x||(index*this.timeInterval||1)+this.timeBase,y:data[item.name]||0})},this)},getIndex:function(){return this[0]&&this[0].data&&this[0].data.length?this[0].data.length:0},itemByName:function(name){for(var i=0;i<this.length;i++){if(this[i].name==name)return this[i]}},setTimeInterval:function(iv){this.timeInterval=iv/1e3},setTimeBase:function(t){this.timeBase=t},dump:function(){var data={timeBase:this.timeBase,timeInterval:this.timeInterval,items:[]};this.forEach(function(item){var newItem={color:item.color,name:item.name,data:[]};item.data.forEach(function(plot){newItem.data.push({x:plot.x,y:plot.y})});data.items.push(newItem)});return data},load:function(data){if(data.timeInterval){this.timeInterval=data.timeInterval}if(data.timeBase){this.timeBase=data.timeBase}if(data.items){data.items.forEach(function(item){this.push(item);if(this.legend){this.legend.addLine(this.itemByName(item.name))}},this)}}});Rickshaw.Series.zeroFill=function(series){Rickshaw.Series.fill(series,0)};Rickshaw.Series.fill=function(series,fill){var x;var i=0;var data=series.map(function(s){return s.data});while(i<Math.max.apply(null,data.map(function(d){return d.length}))){x=Math.min.apply(null,data.filter(function(d){return d[i]}).map(function(d){return d[i].x}));data.forEach(function(d){if(!d[i]||d[i].x!=x){d.splice(i,0,{x:x,y:fill})}});i++}};Rickshaw.namespace("Rickshaw.Series.FixedDuration");Rickshaw.Series.FixedDuration=Rickshaw.Class.create(Rickshaw.Series,{initialize:function(data,palette,options){options=options||{};if(typeof options.timeInterval==="undefined"){throw new Error("FixedDuration series requires timeInterval")}if(typeof options.maxDataPoints==="undefined"){throw new Error("FixedDuration series requires maxDataPoints")}this.palette=new Rickshaw.Color.Palette(palette);this.timeBase=typeof options.timeBase==="undefined"?Math.floor((new Date).getTime()/1e3):options.timeBase;this.setTimeInterval(options.timeInterval);if(this[0]&&this[0].data&&this[0].data.length){this.currentSize=this[0].data.length;this.currentIndex=this[0].data.length}else{this.currentSize=0;this.currentIndex=0}this.maxDataPoints=options.maxDataPoints;if(data&&typeof data=="object"&&Array.isArray(data)){data.forEach(function(item){this.addItem(item)},this);this.currentSize+=1;this.currentIndex+=1}this.timeBase-=(this.maxDataPoints-this.currentSize)*this.timeInterval;if(typeof this.maxDataPoints!=="undefined"&&this.currentSize<this.maxDataPoints){for(var i=this.maxDataPoints-this.currentSize-1;i>1;i--){this.currentSize+=1;this.currentIndex+=1;this.forEach(function(item){item.data.unshift({x:((i-1)*this.timeInterval||1)+this.timeBase,y:0,i:i})},this)}}},addData:function($super,data,x){$super(data,x);this.currentSize+=1;this.currentIndex+=1;if(this.maxDataPoints!==undefined){while(this.currentSize>this.maxDataPoints){this.dropData()}}},dropData:function(){this.forEach(function(item){item.data.splice(0,1)});this.currentSize-=1},getIndex:function(){return this.currentIndex}});return Rickshaw});
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
18 
     | 
    
         
             
            var poller;
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
19 
     | 
    
         
             
            var realtimeGraph = function(updatePath) {
         
     | 
| 
       21 
20 
     | 
    
         
             
              var timeInterval = parseInt(localStorage.timeInterval || '5000');
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
21 
     | 
    
         
             
              var graphElement = document.getElementById("realtime");
         
     | 
| 
       24 
22 
     | 
    
         | 
| 
       25 
23 
     | 
    
         
             
              var graph = new Rickshaw.Graph( {
         
     | 
| 
         @@ -29,9 +27,9 @@ var realtimeGraph = function(updatePath) { 
     | 
|
| 
       29 
27 
     | 
    
         
             
                renderer: 'line',
         
     | 
| 
       30 
28 
     | 
    
         
             
                interpolation: 'linear',
         
     | 
| 
       31 
29 
     | 
    
         | 
| 
       32 
     | 
    
         
            -
                series: new Rickshaw.Series.FixedDuration([{ name: graphElement.dataset.failedLabel, color: '# 
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
      
 30 
     | 
    
         
            +
                series: new Rickshaw.Series.FixedDuration([{ name: graphElement.dataset.failedLabel, color: '#af0014' }, { name: graphElement.dataset.processedLabel, color: '#006f68' }], undefined, {
         
     | 
| 
      
 31 
     | 
    
         
            +
                  timeInterval: timeInterval,
         
     | 
| 
      
 32 
     | 
    
         
            +
                  maxDataPoints: 100,
         
     | 
| 
       35 
33 
     | 
    
         
             
                })
         
     | 
| 
       36 
34 
     | 
    
         
             
              });
         
     | 
| 
       37 
35 
     | 
    
         | 
| 
         @@ -46,7 +44,6 @@ var realtimeGraph = function(updatePath) { 
     | 
|
| 
       46 
44 
     | 
    
         
             
              var legend = document.querySelector('#realtime-legend');
         
     | 
| 
       47 
45 
     | 
    
         
             
              var Hover = Rickshaw.Class.create(Rickshaw.Graph.HoverDetail, {
         
     | 
| 
       48 
46 
     | 
    
         
             
                render: function(args) {
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
47 
     | 
    
         
             
                  legend.innerHTML = "";
         
     | 
| 
       51 
48 
     | 
    
         | 
| 
       52 
49 
     | 
    
         
             
                  var timestamp = document.createElement('div');
         
     | 
| 
         @@ -68,7 +65,6 @@ var realtimeGraph = function(updatePath) { 
     | 
|
| 
       68 
65 
     | 
    
         | 
| 
       69 
66 
     | 
    
         
             
                    line.appendChild(swatch);
         
     | 
| 
       70 
67 
     | 
    
         
             
                    line.appendChild(label);
         
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
68 
     | 
    
         
             
                    legend.appendChild(line);
         
     | 
| 
       73 
69 
     | 
    
         | 
| 
       74 
70 
     | 
    
         
             
                    var dot = document.createElement('div');
         
     | 
| 
         @@ -77,11 +73,8 @@ var realtimeGraph = function(updatePath) { 
     | 
|
| 
       77 
73 
     | 
    
         
             
                    dot.style.borderColor = d.series.color;
         
     | 
| 
       78 
74 
     | 
    
         | 
| 
       79 
75 
     | 
    
         
             
                    this.element.appendChild(dot);
         
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
76 
     | 
    
         
             
                    dot.className = 'dot active';
         
     | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
       83 
77 
     | 
    
         
             
                    this.show();
         
     | 
| 
       84 
     | 
    
         
            -
             
     | 
| 
       85 
78 
     | 
    
         
             
                  }, this );
         
     | 
| 
       86 
79 
     | 
    
         
             
                }
         
     | 
| 
       87 
80 
     | 
    
         
             
              });
         
     | 
| 
         @@ -90,7 +83,6 @@ var realtimeGraph = function(updatePath) { 
     | 
|
| 
       90 
83 
     | 
    
         
             
              var i = 0;
         
     | 
| 
       91 
84 
     | 
    
         
             
              poller = setInterval(function() {
         
     | 
| 
       92 
85 
     | 
    
         
             
                $.getJSON($("#history").data("update-url"), function(data) {
         
     | 
| 
       93 
     | 
    
         
            -
             
     | 
| 
       94 
86 
     | 
    
         
             
                  if (i === 0) {
         
     | 
| 
       95 
87 
     | 
    
         
             
                    var processed = data.sidekiq.processed;
         
     | 
| 
       96 
88 
     | 
    
         
             
                    var failed = data.sidekiq.failed;
         
     | 
| 
         @@ -133,7 +125,7 @@ var historyGraph = function() { 
     | 
|
| 
       133 
125 
     | 
    
         
             
                interpolation: 'linear',
         
     | 
| 
       134 
126 
     | 
    
         
             
                series: [
         
     | 
| 
       135 
127 
     | 
    
         
             
                  {
         
     | 
| 
       136 
     | 
    
         
            -
                    color: "# 
     | 
| 
      
 128 
     | 
    
         
            +
                    color: "#af0014",
         
     | 
| 
       137 
129 
     | 
    
         
             
                    data: failed,
         
     | 
| 
       138 
130 
     | 
    
         
             
                    name: graphElement.dataset.failedLabel
         
     | 
| 
       139 
131 
     | 
    
         
             
                  }, {
         
     | 
| 
         @@ -144,7 +136,6 @@ var historyGraph = function() { 
     | 
|
| 
       144 
136 
     | 
    
         
             
                ]
         
     | 
| 
       145 
137 
     | 
    
         
             
              } );
         
     | 
| 
       146 
138 
     | 
    
         
             
              var x_axis = new Rickshaw.Graph.Axis.Time( { graph: graph } );
         
     | 
| 
       147 
     | 
    
         
            -
             
     | 
| 
       148 
139 
     | 
    
         
             
              var y_axis = new Rickshaw.Graph.Axis.Y({
         
     | 
| 
       149 
140 
     | 
    
         
             
                graph: graph,
         
     | 
| 
       150 
141 
     | 
    
         
             
                tickFormat: Rickshaw.Fixtures.Number.formatKMBT,
         
     | 
| 
         @@ -156,7 +147,6 @@ var historyGraph = function() { 
     | 
|
| 
       156 
147 
     | 
    
         
             
              var legend = document.querySelector('#history-legend');
         
     | 
| 
       157 
148 
     | 
    
         
             
              var Hover = Rickshaw.Class.create(Rickshaw.Graph.HoverDetail, {
         
     | 
| 
       158 
149 
     | 
    
         
             
                render: function(args) {
         
     | 
| 
       159 
     | 
    
         
            -
             
     | 
| 
       160 
150 
     | 
    
         
             
                  legend.innerHTML = "";
         
     | 
| 
       161 
151 
     | 
    
         | 
| 
       162 
152 
     | 
    
         
             
                  var timestamp = document.createElement('div');
         
     | 
| 
         @@ -178,7 +168,6 @@ var historyGraph = function() { 
     | 
|
| 
       178 
168 
     | 
    
         | 
| 
       179 
169 
     | 
    
         
             
                    line.appendChild(swatch);
         
     | 
| 
       180 
170 
     | 
    
         
             
                    line.appendChild(label);
         
     | 
| 
       181 
     | 
    
         
            -
             
     | 
| 
       182 
171 
     | 
    
         
             
                    legend.appendChild(line);
         
     | 
| 
       183 
172 
     | 
    
         | 
| 
       184 
173 
     | 
    
         
             
                    var dot = document.createElement('div');
         
     | 
| 
         @@ -187,11 +176,8 @@ var historyGraph = function() { 
     | 
|
| 
       187 
176 
     | 
    
         
             
                    dot.style.borderColor = d.series.color;
         
     | 
| 
       188 
177 
     | 
    
         | 
| 
       189 
178 
     | 
    
         
             
                    this.element.appendChild(dot);
         
     | 
| 
       190 
     | 
    
         
            -
             
     | 
| 
       191 
179 
     | 
    
         
             
                    dot.className = 'dot active';
         
     | 
| 
       192 
     | 
    
         
            -
             
     | 
| 
       193 
180 
     | 
    
         
             
                    this.show();
         
     | 
| 
       194 
     | 
    
         
            -
             
     | 
| 
       195 
181 
     | 
    
         
             
                  }, this );
         
     | 
| 
       196 
182 
     | 
    
         
             
                }
         
     | 
| 
       197 
183 
     | 
    
         
             
              });
         
     | 
| 
         @@ -216,7 +202,6 @@ var updateStatsSummary = function(data) { 
     | 
|
| 
       216 
202 
     | 
    
         
             
              $('ul.summary li.retries span.count').html(data.retries.numberWithDelimiter())
         
     | 
| 
       217 
203 
     | 
    
         
             
              $('ul.summary li.enqueued span.count').html(data.enqueued.numberWithDelimiter())
         
     | 
| 
       218 
204 
     | 
    
         
             
              $('ul.summary li.dead span.count').html(data.dead.numberWithDelimiter())
         
     | 
| 
       219 
     | 
    
         
            -
             
     | 
| 
       220 
205 
     | 
    
         
             
            }
         
     | 
| 
       221 
206 
     | 
    
         | 
| 
       222 
207 
     | 
    
         
             
            var updateRedisStats = function(data) {
         
     | 
| 
         @@ -277,7 +262,6 @@ $(function(){ 
     | 
|
| 
       277 
262 
     | 
    
         
             
              $(document).on('mousemove', 'div.interval-slider input', function(){
         
     | 
| 
       278 
263 
     | 
    
         
             
                setSliderLabel($(this).val());
         
     | 
| 
       279 
264 
     | 
    
         
             
              });
         
     | 
| 
       280 
     | 
    
         
            -
             
     | 
| 
       281 
265 
     | 
    
         
             
            });
         
     | 
| 
       282 
266 
     | 
    
         | 
| 
       283 
267 
     | 
    
         
             
            // Reset graphs
         
     | 
| 
         @@ -300,13 +284,10 @@ var debounce = function(fn, timeout) 
     | 
|
| 
       300 
284 
     | 
    
         | 
| 
       301 
285 
     | 
    
         
             
            window.onresize = function() {
         
     | 
| 
       302 
286 
     | 
    
         
             
              var prevWidth = window.innerWidth;
         
     | 
| 
       303 
     | 
    
         
            -
              
         
     | 
| 
       304 
287 
     | 
    
         
             
              return debounce(function () {
         
     | 
| 
       305 
288 
     | 
    
         
             
                var currWidth = window.innerWidth;
         
     | 
| 
       306 
     | 
    
         
            -
                
         
     | 
| 
       307 
289 
     | 
    
         
             
                if (prevWidth !== currWidth) {
         
     | 
| 
       308 
290 
     | 
    
         
             
                  prevWidth = currWidth;
         
     | 
| 
       309 
     | 
    
         
            -
                  
         
     | 
| 
       310 
291 
     | 
    
         
             
                  clearInterval(poller);
         
     | 
| 
       311 
292 
     | 
    
         
             
                  resetGraphs();
         
     | 
| 
       312 
293 
     | 
    
         
             
                  renderGraphs();
         
     | 
| 
         @@ -0,0 +1,149 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            html, body {
         
     | 
| 
      
 2 
     | 
    
         
            +
              background-color: #333 !important;
         
     | 
| 
      
 3 
     | 
    
         
            +
              color: #ddd;
         
     | 
| 
      
 4 
     | 
    
         
            +
            }
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            a,
         
     | 
| 
      
 7 
     | 
    
         
            +
            .title,
         
     | 
| 
      
 8 
     | 
    
         
            +
            .summary_bar ul .count,
         
     | 
| 
      
 9 
     | 
    
         
            +
            span.current-interval,
         
     | 
| 
      
 10 
     | 
    
         
            +
            .navbar .navbar-brand {
         
     | 
| 
      
 11 
     | 
    
         
            +
              color: #c04;
         
     | 
| 
      
 12 
     | 
    
         
            +
            }
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            .history-graph + .active,
         
     | 
| 
      
 15 
     | 
    
         
            +
            .beacon .dot {
         
     | 
| 
      
 16 
     | 
    
         
            +
              background-color: #c04;
         
     | 
| 
      
 17 
     | 
    
         
            +
            }
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            .navbar .navbar-brand:hover {
         
     | 
| 
      
 20 
     | 
    
         
            +
              color: #ddd;
         
     | 
| 
      
 21 
     | 
    
         
            +
            }
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            .navbar .navbar-brand .status {
         
     | 
| 
      
 24 
     | 
    
         
            +
              color: #ddd;
         
     | 
| 
      
 25 
     | 
    
         
            +
            }
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            .navbar-default .navbar-nav > li > a {
         
     | 
| 
      
 28 
     | 
    
         
            +
              color: #ddd;
         
     | 
| 
      
 29 
     | 
    
         
            +
            }
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            .navbar-inverse {
         
     | 
| 
      
 32 
     | 
    
         
            +
              background-color: #222;
         
     | 
| 
      
 33 
     | 
    
         
            +
              border-color: #555;
         
     | 
| 
      
 34 
     | 
    
         
            +
            }
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            table {
         
     | 
| 
      
 37 
     | 
    
         
            +
              background-color: #282828;
         
     | 
| 
      
 38 
     | 
    
         
            +
            }
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
            .table-striped > tbody > tr:nth-of-type(odd) {
         
     | 
| 
      
 41 
     | 
    
         
            +
              background-color: #333;
         
     | 
| 
      
 42 
     | 
    
         
            +
            }
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
            .table-bordered,
         
     | 
| 
      
 45 
     | 
    
         
            +
            .table-bordered > tbody > tr > td,
         
     | 
| 
      
 46 
     | 
    
         
            +
            .table-bordered > tbody > tr > th,
         
     | 
| 
      
 47 
     | 
    
         
            +
            .table-bordered > tfoot > tr > td,
         
     | 
| 
      
 48 
     | 
    
         
            +
            .table-bordered > tfoot > tr > th,
         
     | 
| 
      
 49 
     | 
    
         
            +
            .table-bordered > thead > tr > td,
         
     | 
| 
      
 50 
     | 
    
         
            +
            .table-bordered > thead > tr > th {
         
     | 
| 
      
 51 
     | 
    
         
            +
              border: 1px solid #555;
         
     | 
| 
      
 52 
     | 
    
         
            +
            }
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
            .table-hover > tbody > tr:hover {
         
     | 
| 
      
 55 
     | 
    
         
            +
              background-color: #444;
         
     | 
| 
      
 56 
     | 
    
         
            +
            }
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
            .alert {
         
     | 
| 
      
 59 
     | 
    
         
            +
              border: none;
         
     | 
| 
      
 60 
     | 
    
         
            +
              color: #ddd;
         
     | 
| 
      
 61 
     | 
    
         
            +
            }
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
            .alert-success {
         
     | 
| 
      
 64 
     | 
    
         
            +
              background-color: #484;
         
     | 
| 
      
 65 
     | 
    
         
            +
            }
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
            a:link,
         
     | 
| 
      
 68 
     | 
    
         
            +
            a:active,
         
     | 
| 
      
 69 
     | 
    
         
            +
            a:hover,
         
     | 
| 
      
 70 
     | 
    
         
            +
            a:visited {
         
     | 
| 
      
 71 
     | 
    
         
            +
              color: #ddd;
         
     | 
| 
      
 72 
     | 
    
         
            +
            }
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
            a.btn {
         
     | 
| 
      
 75 
     | 
    
         
            +
              color: #000;
         
     | 
| 
      
 76 
     | 
    
         
            +
            }
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
            input {
         
     | 
| 
      
 79 
     | 
    
         
            +
              background-color: #444;
         
     | 
| 
      
 80 
     | 
    
         
            +
              color: #ccc;
         
     | 
| 
      
 81 
     | 
    
         
            +
              padding: 3px;
         
     | 
| 
      
 82 
     | 
    
         
            +
            }
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
            .summary_bar .summary {
         
     | 
| 
      
 85 
     | 
    
         
            +
              background-color: #222;
         
     | 
| 
      
 86 
     | 
    
         
            +
              border: 1px solid #555;
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
      
 88 
     | 
    
         
            +
              -webkit-box-shadow: 0 0 5px rgba(255, 255, 255, 0.1);
         
     | 
| 
      
 89 
     | 
    
         
            +
              -moz-box-shadow: 0 0 5px rgba(255, 255, 255, 0.1);
         
     | 
| 
      
 90 
     | 
    
         
            +
              box-shadow: 0 0 5px rgba(255, 255, 255, 0.1);
         
     | 
| 
      
 91 
     | 
    
         
            +
            }
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
            .navbar-default {
         
     | 
| 
      
 94 
     | 
    
         
            +
              background-color: #222;
         
     | 
| 
      
 95 
     | 
    
         
            +
              border-color: #555;
         
     | 
| 
      
 96 
     | 
    
         
            +
            }
         
     | 
| 
      
 97 
     | 
    
         
            +
             
     | 
| 
      
 98 
     | 
    
         
            +
            .navbar-default .navbar-nav > .active > a,
         
     | 
| 
      
 99 
     | 
    
         
            +
            .navbar-default .navbar-nav > .active > a:focus,
         
     | 
| 
      
 100 
     | 
    
         
            +
            .navbar-default .navbar-nav > .active > a:hover {
         
     | 
| 
      
 101 
     | 
    
         
            +
              color: #ddd;
         
     | 
| 
      
 102 
     | 
    
         
            +
              background-color: #333;
         
     | 
| 
      
 103 
     | 
    
         
            +
            }
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
      
 105 
     | 
    
         
            +
            .navbar-default .navbar-nav > li > a:hover {
         
     | 
| 
      
 106 
     | 
    
         
            +
              color: #ddd;
         
     | 
| 
      
 107 
     | 
    
         
            +
            }
         
     | 
| 
      
 108 
     | 
    
         
            +
             
     | 
| 
      
 109 
     | 
    
         
            +
            .pagination > li > a,
         
     | 
| 
      
 110 
     | 
    
         
            +
            .pagination > li > a:hover,
         
     | 
| 
      
 111 
     | 
    
         
            +
            .pagination > li > span {
         
     | 
| 
      
 112 
     | 
    
         
            +
              color: #ddd;
         
     | 
| 
      
 113 
     | 
    
         
            +
              background-color: #333;
         
     | 
| 
      
 114 
     | 
    
         
            +
              border-color: #555;
         
     | 
| 
      
 115 
     | 
    
         
            +
            }
         
     | 
| 
      
 116 
     | 
    
         
            +
            .pagination > .disabled > a,
         
     | 
| 
      
 117 
     | 
    
         
            +
            .pagination > .disabled > a:focus,
         
     | 
| 
      
 118 
     | 
    
         
            +
            .pagination > .disabled > a:hover,
         
     | 
| 
      
 119 
     | 
    
         
            +
            .pagination > .disabled > span,
         
     | 
| 
      
 120 
     | 
    
         
            +
            .pagination > .disabled > span:focus,
         
     | 
| 
      
 121 
     | 
    
         
            +
            .pagination > .disabled > span:hover {
         
     | 
| 
      
 122 
     | 
    
         
            +
              color: #ddd;
         
     | 
| 
      
 123 
     | 
    
         
            +
              background-color: #333;
         
     | 
| 
      
 124 
     | 
    
         
            +
              border-color: #555;
         
     | 
| 
      
 125 
     | 
    
         
            +
            }
         
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
      
 127 
     | 
    
         
            +
            .stat {
         
     | 
| 
      
 128 
     | 
    
         
            +
              border: 1px solid rgba(255, 255, 255, 0.1);
         
     | 
| 
      
 129 
     | 
    
         
            +
            }
         
     | 
| 
      
 130 
     | 
    
         
            +
             
     | 
| 
      
 131 
     | 
    
         
            +
            #live-poll {
         
     | 
| 
      
 132 
     | 
    
         
            +
              color: #ddd;
         
     | 
| 
      
 133 
     | 
    
         
            +
            }
         
     | 
| 
      
 134 
     | 
    
         
            +
             
     | 
| 
      
 135 
     | 
    
         
            +
            .btn-warn {
         
     | 
| 
      
 136 
     | 
    
         
            +
              color: #444;
         
     | 
| 
      
 137 
     | 
    
         
            +
            }
         
     | 
| 
      
 138 
     | 
    
         
            +
             
     | 
| 
      
 139 
     | 
    
         
            +
            .rickshaw_graph .detail {
         
     | 
| 
      
 140 
     | 
    
         
            +
              background: rgba(255, 255, 255, .1)
         
     | 
| 
      
 141 
     | 
    
         
            +
            }
         
     | 
| 
      
 142 
     | 
    
         
            +
            .rickshaw_graph .x_tick {
         
     | 
| 
      
 143 
     | 
    
         
            +
              border-color: rgba(255, 255, 255, .2);
         
     | 
| 
      
 144 
     | 
    
         
            +
            }
         
     | 
| 
      
 145 
     | 
    
         
            +
             
     | 
| 
      
 146 
     | 
    
         
            +
            .rickshaw_graph .y_ticks.glow text {
         
     | 
| 
      
 147 
     | 
    
         
            +
              fill: #ddd;
         
     | 
| 
      
 148 
     | 
    
         
            +
              color: #ddd;
         
     | 
| 
      
 149 
     | 
    
         
            +
            }
         
     | 
| 
         @@ -177,10 +177,6 @@ header.row .pagination { 
     | 
|
| 
       177 
177 
     | 
    
         
             
              overflow: overlay;
         
     | 
| 
       178 
178 
     | 
    
         
             
            }
         
     | 
| 
       179 
179 
     | 
    
         | 
| 
       180 
     | 
    
         
            -
            table.table-white {
         
     | 
| 
       181 
     | 
    
         
            -
              background-color: #fff;
         
     | 
| 
       182 
     | 
    
         
            -
            }
         
     | 
| 
       183 
     | 
    
         
            -
             
     | 
| 
       184 
180 
     | 
    
         
             
            .queues form {
         
     | 
| 
       185 
181 
     | 
    
         
             
              margin: 0;
         
     | 
| 
       186 
182 
     | 
    
         
             
            }
         
     | 
| 
         @@ -201,6 +197,15 @@ td form { 
     | 
|
| 
       201 
197 
     | 
    
         
             
              padding: 0;
         
     | 
| 
       202 
198 
     | 
    
         
             
            }
         
     | 
| 
       203 
199 
     | 
    
         | 
| 
      
 200 
     | 
    
         
            +
            .jobtag a {
         
     | 
| 
      
 201 
     | 
    
         
            +
              color: white;
         
     | 
| 
      
 202 
     | 
    
         
            +
            }
         
     | 
| 
      
 203 
     | 
    
         
            +
             
     | 
| 
      
 204 
     | 
    
         
            +
            .jobtag a:hover {
         
     | 
| 
      
 205 
     | 
    
         
            +
              color: white;
         
     | 
| 
      
 206 
     | 
    
         
            +
              text-decoration: underline;
         
     | 
| 
      
 207 
     | 
    
         
            +
            }
         
     | 
| 
      
 208 
     | 
    
         
            +
             
     | 
| 
       204 
209 
     | 
    
         
             
            table .table-checkbox label {
         
     | 
| 
       205 
210 
     | 
    
         
             
              height: 100%;
         
     | 
| 
       206 
211 
     | 
    
         
             
              width: 100%;
         
     | 
| 
         @@ -460,6 +465,11 @@ span.current-interval { 
     | 
|
| 
       460 
465 
     | 
    
         | 
| 
       461 
466 
     | 
    
         
             
            div.interval-slider input {
         
     | 
| 
       462 
467 
     | 
    
         
             
              width: 160px;
         
     | 
| 
      
 468 
     | 
    
         
            +
              -webkit-appearance: none;
         
     | 
| 
      
 469 
     | 
    
         
            +
              height: 3px;
         
     | 
| 
      
 470 
     | 
    
         
            +
              margin-top: 5px;
         
     | 
| 
      
 471 
     | 
    
         
            +
              border-radius: 2px;
         
     | 
| 
      
 472 
     | 
    
         
            +
              background: currentcolor;
         
     | 
| 
       463 
473 
     | 
    
         
             
            }
         
     | 
| 
       464 
474 
     | 
    
         | 
| 
       465 
475 
     | 
    
         
             
            #realtime-legend,
         
     | 
| 
         @@ -748,7 +758,7 @@ div.interval-slider input { 
     | 
|
| 
       748 
758 
     | 
    
         
             
                font-family: Arial, sans-serif;
         
     | 
| 
       749 
759 
     | 
    
         
             
                border-radius: 3px;
         
     | 
| 
       750 
760 
     | 
    
         
             
                padding: 6px;
         
     | 
| 
       751 
     | 
    
         
            -
                opacity: . 
     | 
| 
      
 761 
     | 
    
         
            +
                opacity: .7;
         
     | 
| 
       752 
762 
     | 
    
         
             
                border: 1px solid #e0e0e0;
         
     | 
| 
       753 
763 
     | 
    
         
             
                font-size: 12px;
         
     | 
| 
       754 
764 
     | 
    
         
             
                position: absolute;
         
     | 
| 
         @@ -963,7 +973,7 @@ div.interval-slider input { 
     | 
|
| 
       963 
973 
     | 
    
         
             
            }
         
     | 
| 
       964 
974 
     | 
    
         
             
            .rickshaw_graph .y_ticks text,
         
     | 
| 
       965 
975 
     | 
    
         
             
            .rickshaw_graph .x_ticks_d3 text {
         
     | 
| 
       966 
     | 
    
         
            -
                opacity: . 
     | 
| 
      
 976 
     | 
    
         
            +
                opacity: .7;
         
     | 
| 
       967 
977 
     | 
    
         
             
                font-size: 12px;
         
     | 
| 
       968 
978 
     | 
    
         
             
                pointer-events: none
         
     | 
| 
       969 
979 
     | 
    
         
             
            }
         
     | 
| 
         @@ -1142,3 +1152,15 @@ div.interval-slider input { 
     | 
|
| 
       1142 
1152 
     | 
    
         
             
            .delete-confirm {
         
     | 
| 
       1143 
1153 
     | 
    
         
             
              width: 20%;
         
     | 
| 
       1144 
1154 
     | 
    
         
             
            }
         
     | 
| 
      
 1155 
     | 
    
         
            +
             
     | 
| 
      
 1156 
     | 
    
         
            +
            .circled {
         
     | 
| 
      
 1157 
     | 
    
         
            +
              border-color: #333;
         
     | 
| 
      
 1158 
     | 
    
         
            +
              color: #eee;
         
     | 
| 
      
 1159 
     | 
    
         
            +
              background-color: #b1003e;
         
     | 
| 
      
 1160 
     | 
    
         
            +
              border-radius: 50%;
         
     | 
| 
      
 1161 
     | 
    
         
            +
              text-align: center;
         
     | 
| 
      
 1162 
     | 
    
         
            +
              vertical-align: middle;
         
     | 
| 
      
 1163 
     | 
    
         
            +
              padding: 3px 7px;
         
     | 
| 
      
 1164 
     | 
    
         
            +
              font-size: 0.7em;
         
     | 
| 
      
 1165 
     | 
    
         
            +
              margin-left: 5px;
         
     | 
| 
      
 1166 
     | 
    
         
            +
            }
         
     | 
    
        data/web/locales/de.yml
    CHANGED
    
    | 
         @@ -13,7 +13,7 @@ de: 
     | 
|
| 
       13 
13 
     | 
    
         
             
              Retries: Versuche
         
     | 
| 
       14 
14 
     | 
    
         
             
              Enqueued: In der Warteschlange
         
     | 
| 
       15 
15 
     | 
    
         
             
              Worker: Arbeiter
         
     | 
| 
       16 
     | 
    
         
            -
              LivePoll:  
     | 
| 
      
 16 
     | 
    
         
            +
              LivePoll: Echtzeitabfrage
         
     | 
| 
       17 
17 
     | 
    
         
             
              StopPolling: Abfrage stoppen
         
     | 
| 
       18 
18 
     | 
    
         
             
              Queue: Warteschlange
         
     | 
| 
       19 
19 
     | 
    
         
             
              Class: Klasse
         
     | 
| 
         @@ -33,12 +33,13 @@ de: 
     | 
|
| 
       33 
33 
     | 
    
         
             
              NextRetry: Nächster Versuch
         
     | 
| 
       34 
34 
     | 
    
         
             
              RetryCount: Anzahl der Versuche
         
     | 
| 
       35 
35 
     | 
    
         
             
              RetryNow: Jetzt erneut versuchen
         
     | 
| 
       36 
     | 
    
         
            -
              Kill:  
     | 
| 
      
 36 
     | 
    
         
            +
              Kill: Vernichten
         
     | 
| 
       37 
37 
     | 
    
         
             
              LastRetry: Letzter Versuch
         
     | 
| 
       38 
38 
     | 
    
         
             
              OriginallyFailed: Ursprünglich fehlgeschlagen
         
     | 
| 
       39 
39 
     | 
    
         
             
              AreYouSure: Bist du sicher?
         
     | 
| 
       40 
40 
     | 
    
         
             
              DeleteAll: Alle löschen
         
     | 
| 
       41 
41 
     | 
    
         
             
              RetryAll: Alle erneut versuchen
         
     | 
| 
      
 42 
     | 
    
         
            +
              KillAll: Alle vernichten
         
     | 
| 
       42 
43 
     | 
    
         
             
              NoRetriesFound: Keine erneuten Versuche gefunden
         
     | 
| 
       43 
44 
     | 
    
         
             
              Error: Fehler
         
     | 
| 
       44 
45 
     | 
    
         
             
              ErrorClass: Fehlerklasse
         
     | 
| 
         @@ -67,3 +68,14 @@ de: 
     | 
|
| 
       67 
68 
     | 
    
         
             
              Thread: Thread
         
     | 
| 
       68 
69 
     | 
    
         
             
              Threads: Threads
         
     | 
| 
       69 
70 
     | 
    
         
             
              Jobs: Jobs
         
     | 
| 
      
 71 
     | 
    
         
            +
              Paused: Pausiert
         
     | 
| 
      
 72 
     | 
    
         
            +
              Stop: Stopp
         
     | 
| 
      
 73 
     | 
    
         
            +
              Quiet: Leise
         
     | 
| 
      
 74 
     | 
    
         
            +
              StopAll: Alle stoppen
         
     | 
| 
      
 75 
     | 
    
         
            +
              QuietAll: Alle leise
         
     | 
| 
      
 76 
     | 
    
         
            +
              PollingInterval: Abfrageintervall
         
     | 
| 
      
 77 
     | 
    
         
            +
              Plugins: Erweiterungen
         
     | 
| 
      
 78 
     | 
    
         
            +
              NotYetEnqueued: Noch nicht in der Warteschlange
         
     | 
| 
      
 79 
     | 
    
         
            +
              CreatedAt: Erstellt
         
     | 
| 
      
 80 
     | 
    
         
            +
              BackToApp: Zurück zur Anwendung
         
     | 
| 
      
 81 
     | 
    
         
            +
              Latency: Latenz
         
     | 
    
        data/web/locales/en.yml
    CHANGED
    
    
    
        data/web/locales/fr.yml
    CHANGED
    
    | 
         @@ -69,10 +69,10 @@ fr: 
     | 
|
| 
       69 
69 
     | 
    
         
             
              Jobs: Tâches
         
     | 
| 
       70 
70 
     | 
    
         
             
              Paused: Mise en pause
         
     | 
| 
       71 
71 
     | 
    
         
             
              Stop: Arrêter
         
     | 
| 
       72 
     | 
    
         
            -
              Quiet:  
     | 
| 
      
 72 
     | 
    
         
            +
              Quiet: Clore
         
     | 
| 
       73 
73 
     | 
    
         
             
              StopAll: Tout arrêter
         
     | 
| 
       74 
     | 
    
         
            -
              QuietAll: Tout  
     | 
| 
       75 
     | 
    
         
            -
              PollingInterval:  
     | 
| 
      
 74 
     | 
    
         
            +
              QuietAll: Tout clore
         
     | 
| 
      
 75 
     | 
    
         
            +
              PollingInterval: Intervalle de rafraîchissement
         
     | 
| 
       76 
76 
     | 
    
         
             
              Plugins: Plugins
         
     | 
| 
       77 
77 
     | 
    
         
             
              NotYetEnqueued: Pas encore en file d'attente
         
     | 
| 
       78 
78 
     | 
    
         
             
              CreatedAt: Créée le
         
     | 
    
        data/web/locales/ja.yml
    CHANGED
    
    | 
         @@ -33,11 +33,13 @@ ja: 
     | 
|
| 
       33 
33 
     | 
    
         
             
              NextRetry: 再試行
         
     | 
| 
       34 
34 
     | 
    
         
             
              RetryCount: 再試行
         
     | 
| 
       35 
35 
     | 
    
         
             
              RetryNow: 今すぐ再試行
         
     | 
| 
      
 36 
     | 
    
         
            +
              Kill: 強制終了
         
     | 
| 
       36 
37 
     | 
    
         
             
              LastRetry: 再試行履歴
         
     | 
| 
       37 
38 
     | 
    
         
             
              OriginallyFailed: 失敗
         
     | 
| 
       38 
39 
     | 
    
         
             
              AreYouSure: よろしいですか?
         
     | 
| 
       39 
40 
     | 
    
         
             
              DeleteAll: 全て削除
         
     | 
| 
       40 
41 
     | 
    
         
             
              RetryAll: 全て再試行
         
     | 
| 
      
 42 
     | 
    
         
            +
              KillAll: 全て強制終了
         
     | 
| 
       41 
43 
     | 
    
         
             
              NoRetriesFound: 再試行するジョブはありません
         
     | 
| 
       42 
44 
     | 
    
         
             
              Error: エラー
         
     | 
| 
       43 
45 
     | 
    
         
             
              ErrorClass: エラークラス
         
     | 
| 
         @@ -58,7 +60,6 @@ ja: 
     | 
|
| 
       58 
60 
     | 
    
         
             
              OneMonth: 1 ヶ月
         
     | 
| 
       59 
61 
     | 
    
         
             
              ThreeMonths: 3 ヶ月
         
     | 
| 
       60 
62 
     | 
    
         
             
              SixMonths: 6 ヶ月
         
     | 
| 
       61 
     | 
    
         
            -
              Batches: バッチ
         
     | 
| 
       62 
63 
     | 
    
         
             
              Failures: 失敗
         
     | 
| 
       63 
64 
     | 
    
         
             
              DeadJobs: デッドジョブ
         
     | 
| 
       64 
65 
     | 
    
         
             
              NoDeadJobsFound: デッドジョブはありません
         
     | 
| 
         @@ -78,3 +79,5 @@ ja: 
     | 
|
| 
       78 
79 
     | 
    
         
             
              CreatedAt: 作成日時
         
     | 
| 
       79 
80 
     | 
    
         
             
              BackToApp: アプリに戻る
         
     | 
| 
       80 
81 
     | 
    
         
             
              Latency: レイテンシ
         
     | 
| 
      
 82 
     | 
    
         
            +
              Pause: 一時停止
         
     | 
| 
      
 83 
     | 
    
         
            +
              Unpause: 一時停止を解除
         
     | 
    
        data/web/locales/lt.yml
    ADDED
    
    | 
         @@ -0,0 +1,83 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # elements like %{queue} are variables and should not be translated
         
     | 
| 
      
 2 
     | 
    
         
            +
            lt:
         
     | 
| 
      
 3 
     | 
    
         
            +
              Dashboard: Valdymo skydas
         
     | 
| 
      
 4 
     | 
    
         
            +
              Status: Būsena
         
     | 
| 
      
 5 
     | 
    
         
            +
              Time: Laikas
         
     | 
| 
      
 6 
     | 
    
         
            +
              Namespace: Vardų erdvė
         
     | 
| 
      
 7 
     | 
    
         
            +
              Realtime: Realiu laiku
         
     | 
| 
      
 8 
     | 
    
         
            +
              History: Istorija
         
     | 
| 
      
 9 
     | 
    
         
            +
              Busy: Užimti
         
     | 
| 
      
 10 
     | 
    
         
            +
              Processed: Įvykdyti
         
     | 
| 
      
 11 
     | 
    
         
            +
              Failed: Nepavykę
         
     | 
| 
      
 12 
     | 
    
         
            +
              Scheduled: Suplanuoti
         
     | 
| 
      
 13 
     | 
    
         
            +
              Retries: Kartojami
         
     | 
| 
      
 14 
     | 
    
         
            +
              Enqueued: Eilėje
         
     | 
| 
      
 15 
     | 
    
         
            +
              Worker: Darbuotojas
         
     | 
| 
      
 16 
     | 
    
         
            +
              LivePoll: Užklausti gyvai
         
     | 
| 
      
 17 
     | 
    
         
            +
              StopPolling: Stabdyti užklausas
         
     | 
| 
      
 18 
     | 
    
         
            +
              Queue: Eilė
         
     | 
| 
      
 19 
     | 
    
         
            +
              Class: Klasė
         
     | 
| 
      
 20 
     | 
    
         
            +
              Job: Darbas
         
     | 
| 
      
 21 
     | 
    
         
            +
              Arguments: Parametrai
         
     | 
| 
      
 22 
     | 
    
         
            +
              Extras: Papildomi
         
     | 
| 
      
 23 
     | 
    
         
            +
              Started: Pradėti
         
     | 
| 
      
 24 
     | 
    
         
            +
              ShowAll: Rodyti Visus
         
     | 
| 
      
 25 
     | 
    
         
            +
              CurrentMessagesInQueue: Esami darbai eilėje <span class='title'>%{queue}</span>
         
     | 
| 
      
 26 
     | 
    
         
            +
              Delete: Pašalinti
         
     | 
| 
      
 27 
     | 
    
         
            +
              AddToQueue: Pridėti į eilę
         
     | 
| 
      
 28 
     | 
    
         
            +
              AreYouSureDeleteJob: Ar tikrai norite pašalinti šį darbą?
         
     | 
| 
      
 29 
     | 
    
         
            +
              AreYouSureDeleteQueue: Ar tikrai norite pašalinti šią eilę %{queue}?
         
     | 
| 
      
 30 
     | 
    
         
            +
              Queues: Eilės
         
     | 
| 
      
 31 
     | 
    
         
            +
              Size: Dydis
         
     | 
| 
      
 32 
     | 
    
         
            +
              Actions: Veiksmai
         
     | 
| 
      
 33 
     | 
    
         
            +
              NextRetry: Sekantis Kartojimas
         
     | 
| 
      
 34 
     | 
    
         
            +
              RetryCount: Kartojimų Skaičius
         
     | 
| 
      
 35 
     | 
    
         
            +
              RetryNow: Kartoti Dabar
         
     | 
| 
      
 36 
     | 
    
         
            +
              Kill: Priverstinai Nutraukti
         
     | 
| 
      
 37 
     | 
    
         
            +
              LastRetry: Paskutinis Kartojimas
         
     | 
| 
      
 38 
     | 
    
         
            +
              OriginallyFailed: Iš pradžių Nepavykę
         
     | 
| 
      
 39 
     | 
    
         
            +
              AreYouSure: Ar jūs įsitikinę?
         
     | 
| 
      
 40 
     | 
    
         
            +
              DeleteAll: Pašalinti Visus
         
     | 
| 
      
 41 
     | 
    
         
            +
              RetryAll: Kartoti Visus
         
     | 
| 
      
 42 
     | 
    
         
            +
              KillAll: Priverstinai Nutraukti Visus
         
     | 
| 
      
 43 
     | 
    
         
            +
              NoRetriesFound: Nerasta kartojimų
         
     | 
| 
      
 44 
     | 
    
         
            +
              Error: Klaida
         
     | 
| 
      
 45 
     | 
    
         
            +
              ErrorClass: Klaidos Klasė
         
     | 
| 
      
 46 
     | 
    
         
            +
              ErrorMessage: Klaidos Žinutė
         
     | 
| 
      
 47 
     | 
    
         
            +
              ErrorBacktrace: Klaidos Pėdsakai
         
     | 
| 
      
 48 
     | 
    
         
            +
              GoBack: ← Atgal
         
     | 
| 
      
 49 
     | 
    
         
            +
              NoScheduledFound: Planuojamų darbų nerasta
         
     | 
| 
      
 50 
     | 
    
         
            +
              When: Kada
         
     | 
| 
      
 51 
     | 
    
         
            +
              ScheduledJobs: Planuojami Darbai
         
     | 
| 
      
 52 
     | 
    
         
            +
              idle: neveiksnus
         
     | 
| 
      
 53 
     | 
    
         
            +
              active: aktyvus
         
     | 
| 
      
 54 
     | 
    
         
            +
              Version: Versija
         
     | 
| 
      
 55 
     | 
    
         
            +
              Connections: Ryšiai
         
     | 
| 
      
 56 
     | 
    
         
            +
              MemoryUsage: Atminties Vartojimas
         
     | 
| 
      
 57 
     | 
    
         
            +
              PeakMemoryUsage: Atminties Vartojimo Pikas
         
     | 
| 
      
 58 
     | 
    
         
            +
              Uptime: Gyvavimo laikas (dienomis)
         
     | 
| 
      
 59 
     | 
    
         
            +
              OneWeek: 1 savaitė
         
     | 
| 
      
 60 
     | 
    
         
            +
              OneMonth: 1 mėnuo
         
     | 
| 
      
 61 
     | 
    
         
            +
              ThreeMonths: 3 mėnesiai
         
     | 
| 
      
 62 
     | 
    
         
            +
              SixMonths: 6 mėnesiai
         
     | 
| 
      
 63 
     | 
    
         
            +
              Failures: Nesėkmingi vykdymai
         
     | 
| 
      
 64 
     | 
    
         
            +
              DeadJobs: Negyvi Darbai
         
     | 
| 
      
 65 
     | 
    
         
            +
              NoDeadJobsFound: Negyvų darbų nerasta
         
     | 
| 
      
 66 
     | 
    
         
            +
              Dead: Negyvi
         
     | 
| 
      
 67 
     | 
    
         
            +
              Processes: Procesai
         
     | 
| 
      
 68 
     | 
    
         
            +
              Thread: Gija
         
     | 
| 
      
 69 
     | 
    
         
            +
              Threads: Gijos
         
     | 
| 
      
 70 
     | 
    
         
            +
              Jobs: Darbai
         
     | 
| 
      
 71 
     | 
    
         
            +
              Paused: Pristabdytas
         
     | 
| 
      
 72 
     | 
    
         
            +
              Stop: Sustabdyti
         
     | 
| 
      
 73 
     | 
    
         
            +
              Quiet: Nutildyti
         
     | 
| 
      
 74 
     | 
    
         
            +
              StopAll: Sustbadyti Visus
         
     | 
| 
      
 75 
     | 
    
         
            +
              QuietAll: Nutildyti Visus
         
     | 
| 
      
 76 
     | 
    
         
            +
              PollingInterval: Užklausimų intervalas
         
     | 
| 
      
 77 
     | 
    
         
            +
              Plugins: Įskiepiai
         
     | 
| 
      
 78 
     | 
    
         
            +
              NotYetEnqueued: Dar neįtraukti į eilę
         
     | 
| 
      
 79 
     | 
    
         
            +
              CreatedAt: Sukurta
         
     | 
| 
      
 80 
     | 
    
         
            +
              BackToApp: Atgal į Aplikaciją
         
     | 
| 
      
 81 
     | 
    
         
            +
              Latency: Vėlavimas
         
     | 
| 
      
 82 
     | 
    
         
            +
              Pause: Pristabdyti
         
     | 
| 
      
 83 
     | 
    
         
            +
              Unpause: Pratęsti
         
     | 
    
        data/web/locales/pl.yml
    CHANGED
    
    | 
         @@ -10,7 +10,7 @@ pl: 
     | 
|
| 
       10 
10 
     | 
    
         
             
              Processed: Ukończone
         
     | 
| 
       11 
11 
     | 
    
         
             
              Failed: Nieudane
         
     | 
| 
       12 
12 
     | 
    
         
             
              Scheduled: Zaplanowane
         
     | 
| 
       13 
     | 
    
         
            -
              Retries:  
     | 
| 
      
 13 
     | 
    
         
            +
              Retries: Do ponowienia
         
     | 
| 
       14 
14 
     | 
    
         
             
              Enqueued: Zakolejkowane
         
     | 
| 
       15 
15 
     | 
    
         
             
              Worker: Worker
         
     | 
| 
       16 
16 
     | 
    
         
             
              LivePoll: Wczytuj na żywo
         
     | 
| 
         @@ -29,15 +29,15 @@ pl: 
     | 
|
| 
       29 
29 
     | 
    
         
             
              Queues: Kolejki
         
     | 
| 
       30 
30 
     | 
    
         
             
              Size: Rozmiar
         
     | 
| 
       31 
31 
     | 
    
         
             
              Actions: Akcje
         
     | 
| 
       32 
     | 
    
         
            -
              NextRetry:  
     | 
| 
       33 
     | 
    
         
            -
              RetryCount:  
     | 
| 
      
 32 
     | 
    
         
            +
              NextRetry: Następne ponowienie
         
     | 
| 
      
 33 
     | 
    
         
            +
              RetryCount: Ilość ponowień
         
     | 
| 
       34 
34 
     | 
    
         
             
              RetryNow: Ponów teraz
         
     | 
| 
       35 
35 
     | 
    
         
             
              LastRetry: Ostatnie ponowienie
         
     | 
| 
       36 
36 
     | 
    
         
             
              OriginallyFailed: Ostatnio nieudane
         
     | 
| 
       37 
37 
     | 
    
         
             
              AreYouSure: Na pewno?
         
     | 
| 
       38 
38 
     | 
    
         
             
              DeleteAll: Usuń wszystko
         
     | 
| 
       39 
39 
     | 
    
         
             
              RetryAll: Powtórz wszystko
         
     | 
| 
       40 
     | 
    
         
            -
              NoRetriesFound: Brak  
     | 
| 
      
 40 
     | 
    
         
            +
              NoRetriesFound: Brak zadań do ponowienia
         
     | 
| 
       41 
41 
     | 
    
         
             
              Error: Błąd
         
     | 
| 
       42 
42 
     | 
    
         
             
              ErrorClass: Klasa błędu
         
     | 
| 
       43 
43 
     | 
    
         
             
              ErrorMessage: Wiadomosć błędu
         
     | 
    
        data/web/locales/ru.yml
    CHANGED
    
    | 
         @@ -38,6 +38,7 @@ ru: 
     | 
|
| 
       38 
38 
     | 
    
         
             
              AreYouSure: Вы уверены?
         
     | 
| 
       39 
39 
     | 
    
         
             
              DeleteAll: Удалить все
         
     | 
| 
       40 
40 
     | 
    
         
             
              RetryAll: Повторить все
         
     | 
| 
      
 41 
     | 
    
         
            +
              KillAll: Убить всё
         
     | 
| 
       41 
42 
     | 
    
         
             
              NoRetriesFound: Нет попыток
         
     | 
| 
       42 
43 
     | 
    
         
             
              Error: Ошибка
         
     | 
| 
       43 
44 
     | 
    
         
             
              ErrorClass: Класс ошибки
         
     | 
| 
         @@ -76,3 +77,6 @@ ru: 
     | 
|
| 
       76 
77 
     | 
    
         
             
              NotYetEnqueued: Пока не в очереди
         
     | 
| 
       77 
78 
     | 
    
         
             
              CreatedAt: Создан
         
     | 
| 
       78 
79 
     | 
    
         
             
              BackToApp: Назад
         
     | 
| 
      
 80 
     | 
    
         
            +
              Latency: Задержка
         
     | 
| 
      
 81 
     | 
    
         
            +
              Pause: Пауза
         
     | 
| 
      
 82 
     | 
    
         
            +
              Unpause: Возобновить
         
     | 
    
        data/web/locales/vi.yml
    ADDED
    
    | 
         @@ -0,0 +1,83 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # elements like %{queue} are variables and should not be translated
         
     | 
| 
      
 2 
     | 
    
         
            +
            vi: # <---- change this to your locale code
         
     | 
| 
      
 3 
     | 
    
         
            +
              Dashboard: Bảng điều khiển
         
     | 
| 
      
 4 
     | 
    
         
            +
              Status: Trạng thái
         
     | 
| 
      
 5 
     | 
    
         
            +
              Time: Thời gian
         
     | 
| 
      
 6 
     | 
    
         
            +
              Namespace: Không gian tên
         
     | 
| 
      
 7 
     | 
    
         
            +
              Realtime: Thời gian thực
         
     | 
| 
      
 8 
     | 
    
         
            +
              History: Lịch sử
         
     | 
| 
      
 9 
     | 
    
         
            +
              Busy: Bận rộn
         
     | 
| 
      
 10 
     | 
    
         
            +
              Processed: Đã xử lí
         
     | 
| 
      
 11 
     | 
    
         
            +
              Failed: Đã thất bại
         
     | 
| 
      
 12 
     | 
    
         
            +
              Scheduled: Đã lên lịch
         
     | 
| 
      
 13 
     | 
    
         
            +
              Retries: Số lần thử
         
     | 
| 
      
 14 
     | 
    
         
            +
              Enqueued: Đã xếp hàng đợi
         
     | 
| 
      
 15 
     | 
    
         
            +
              Worker: Máy xử lí
         
     | 
| 
      
 16 
     | 
    
         
            +
              LivePoll: Thăm dò trực tiếp
         
     | 
| 
      
 17 
     | 
    
         
            +
              StopPolling: Ngừng thăm dò
         
     | 
| 
      
 18 
     | 
    
         
            +
              Queue: Hàng đợi
         
     | 
| 
      
 19 
     | 
    
         
            +
              Class: Lớp
         
     | 
| 
      
 20 
     | 
    
         
            +
              Job: Tác vụ
         
     | 
| 
      
 21 
     | 
    
         
            +
              Arguments: Tham số
         
     | 
| 
      
 22 
     | 
    
         
            +
              Extras: Thêm
         
     | 
| 
      
 23 
     | 
    
         
            +
              Started: Đã bắt đầu
         
     | 
| 
      
 24 
     | 
    
         
            +
              ShowAll: Hiện tất cả
         
     | 
| 
      
 25 
     | 
    
         
            +
              CurrentMessagesInQueue: Số lượng công việc trong <span class='title'>%{queue}</span>
         
     | 
| 
      
 26 
     | 
    
         
            +
              Delete: Xóa
         
     | 
| 
      
 27 
     | 
    
         
            +
              AddToQueue: Thêm vào hàng đợi
         
     | 
| 
      
 28 
     | 
    
         
            +
              AreYouSureDeleteJob: Bạn có chắc là muốn xóa tác vụ này?
         
     | 
| 
      
 29 
     | 
    
         
            +
              AreYouSureDeleteQueue: Bạn có chắc là muốn xóa %{queue} này?
         
     | 
| 
      
 30 
     | 
    
         
            +
              Queues: Các hàng đợi
         
     | 
| 
      
 31 
     | 
    
         
            +
              Size: Kích thước
         
     | 
| 
      
 32 
     | 
    
         
            +
              Actions: Những hành động
         
     | 
| 
      
 33 
     | 
    
         
            +
              NextRetry: Lần thử lại tiếp theo
         
     | 
| 
      
 34 
     | 
    
         
            +
              RetryCount: Số lần thử lại
         
     | 
| 
      
 35 
     | 
    
         
            +
              RetryNow: Thử lại ngay bây giờ
         
     | 
| 
      
 36 
     | 
    
         
            +
              Kill: Giết
         
     | 
| 
      
 37 
     | 
    
         
            +
              LastRetry: Lần thử cuối
         
     | 
| 
      
 38 
     | 
    
         
            +
              OriginallyFailed: Đã thất bại từ đầu
         
     | 
| 
      
 39 
     | 
    
         
            +
              AreYouSure: Bạn chắc chứ?
         
     | 
| 
      
 40 
     | 
    
         
            +
              DeleteAll: Xóa hết
         
     | 
| 
      
 41 
     | 
    
         
            +
              RetryAll: Thử lại tất cả
         
     | 
| 
      
 42 
     | 
    
         
            +
              KillAll: Giết hết
         
     | 
| 
      
 43 
     | 
    
         
            +
              NoRetriesFound: Không có lần thử nào được tìm thấy
         
     | 
| 
      
 44 
     | 
    
         
            +
              Error: Lỗi
         
     | 
| 
      
 45 
     | 
    
         
            +
              ErrorClass: Lớp lỗi
         
     | 
| 
      
 46 
     | 
    
         
            +
              ErrorMessage: Tin nhắn lỗi
         
     | 
| 
      
 47 
     | 
    
         
            +
              ErrorBacktrace: Dấu vết của lỗi
         
     | 
| 
      
 48 
     | 
    
         
            +
              GoBack: ← Trở lại
         
     | 
| 
      
 49 
     | 
    
         
            +
              NoScheduledFound: Không có tác vụ đã lên lịch nào được tìm thấy
         
     | 
| 
      
 50 
     | 
    
         
            +
              When: Khi nào
         
     | 
| 
      
 51 
     | 
    
         
            +
              ScheduledJobs: Những Tác Vụ Được Hẹn
         
     | 
| 
      
 52 
     | 
    
         
            +
              idle: Đang chờ
         
     | 
| 
      
 53 
     | 
    
         
            +
              active: Đang hoạt động
         
     | 
| 
      
 54 
     | 
    
         
            +
              Version: Phiên bản
         
     | 
| 
      
 55 
     | 
    
         
            +
              Connections: Các kết nối
         
     | 
| 
      
 56 
     | 
    
         
            +
              MemoryUsage: Lượng bộ nhớ sử dụng
         
     | 
| 
      
 57 
     | 
    
         
            +
              PeakMemoryUsage: Lượng bộ nhớ sử dụng đỉnh điểm
         
     | 
| 
      
 58 
     | 
    
         
            +
              Uptime: Thời gian hệ thống đã online (days)
         
     | 
| 
      
 59 
     | 
    
         
            +
              OneWeek: 1 tuần
         
     | 
| 
      
 60 
     | 
    
         
            +
              OneMonth: 1 tháng
         
     | 
| 
      
 61 
     | 
    
         
            +
              ThreeMonths: 3 tháng
         
     | 
| 
      
 62 
     | 
    
         
            +
              SixMonths: 6 tháng
         
     | 
| 
      
 63 
     | 
    
         
            +
              Failures: Các thất bại
         
     | 
| 
      
 64 
     | 
    
         
            +
              DeadJobs: Những tác vụ đã chết
         
     | 
| 
      
 65 
     | 
    
         
            +
              NoDeadJobsFound: Không có tác vụ đã chết nào được tìm thấy
         
     | 
| 
      
 66 
     | 
    
         
            +
              Dead: Chết
         
     | 
| 
      
 67 
     | 
    
         
            +
              Processes: Tiến trình xử lí
         
     | 
| 
      
 68 
     | 
    
         
            +
              Thread: Luồng xử lí
         
     | 
| 
      
 69 
     | 
    
         
            +
              Threads: Những luồng xử lí
         
     | 
| 
      
 70 
     | 
    
         
            +
              Jobs: Các tác vụ
         
     | 
| 
      
 71 
     | 
    
         
            +
              Paused: Đã tạm dừng
         
     | 
| 
      
 72 
     | 
    
         
            +
              Stop: Dừng Lại
         
     | 
| 
      
 73 
     | 
    
         
            +
              Quiet: Im lặng
         
     | 
| 
      
 74 
     | 
    
         
            +
              StopAll: Dừng lại tất cả
         
     | 
| 
      
 75 
     | 
    
         
            +
              QuietAll: Làm cho tất cả im lặng
         
     | 
| 
      
 76 
     | 
    
         
            +
              PollingInterval: Khoảng thời gian giữa các lần thăm dò
         
     | 
| 
      
 77 
     | 
    
         
            +
              Plugins: Hệ thống đính kèm
         
     | 
| 
      
 78 
     | 
    
         
            +
              NotYetEnqueued: Chưa được bỏ vào hàng đợi
         
     | 
| 
      
 79 
     | 
    
         
            +
              CreatedAt: Được tạo vào lúc
         
     | 
| 
      
 80 
     | 
    
         
            +
              BackToApp: Trở về ứng dụng
         
     | 
| 
      
 81 
     | 
    
         
            +
              Latency: Độ trễ
         
     | 
| 
      
 82 
     | 
    
         
            +
              Pause: Tạm dừng
         
     | 
| 
      
 83 
     | 
    
         
            +
              Unpause: Hủy tạm dừng
         
     |