| Various updates - warvox - VoIP based wardialing tool, forked from rapid7/warvo… | |
| Log | |
| Files | |
| Refs | |
| README | |
| --- | |
| commit b1e1f682205a8b3c6ad2566367eab7520aa27fb3 | |
| parent d4f3b5ba934fb80d39696488e4a98df186d19422 | |
| Author: HD Moore <[email protected]> | |
| Date: Sat, 25 Oct 2014 20:03:43 -0500 | |
| Various updates | |
| Diffstat: | |
| M app/assets/javascripts/application… | 2 -- | |
| M app/assets/javascripts/bootstrap.j… | 1 - | |
| M app/assets/javascripts/highcharts.… | 542 +++++++++++++++++----------… | |
| M app/assets/stylesheets/application… | 33 +++++++++++++++++++++++++++… | |
| M app/views/layouts/application.html… | 2 ++ | |
| M lib/warvox/jobs/analysis.rb | 2 +- | |
| M lib/warvox/jobs/dialer.rb | 2 +- | |
| 7 files changed, 337 insertions(+), 247 deletions(-) | |
| --- | |
| diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/app… | |
| @@ -14,8 +14,6 @@ | |
| //= require highcharts | |
| - | |
| - | |
| function getParameterByName(name) | |
| { | |
| name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); | |
| diff --git a/app/assets/javascripts/bootstrap.js.coffee b/app/assets/javascript… | |
| @@ -1,4 +1,3 @@ | |
| jQuery -> | |
| $("a[rel~=popover], .has-popover").popover() | |
| $("a[rel~=tooltip], .has-tooltip").tooltip() | |
| - $('.btn').button() | |
| diff --git a/app/assets/javascripts/highcharts.js b/app/assets/javascripts/high… | |
| @@ -1,246 +1,308 @@ | |
| /* | |
| - Highcharts JS v2.3.3 (2012-10-04) | |
| + Highcharts JS v4.0.4 (2014-09-02) | |
| - (c) 2009-2011 Torstein Hønsi | |
| + (c) 2009-2014 Torstein Honsi | |
| License: www.highcharts.com/license | |
| */ | |
| -(function(){function r(a,b){var c;a||(a={});for(c in b)a[c]=b[c];return a}func… | |
| -b){a.splice(c,1);break}}function t(a){return a!==x&&a!==null}function z(a,b,c)… | |
| -b&&r(a,b);e&&H(a,{padding:0,border:R,margin:0});c&&H(a,c);d&&d.appendChild(a);… | |
| -"$1"+d)+(b?c+L(f-a).toFixed(b).slice(2):"")}function sa(a,b){return Array((b||… | |
| -c[c.length-1],e=B[d[0]],f=d[1],g;for(g=0;g<c.length;g++)if(d=c[g],e=B[d[0]],f=… | |
| -j));if(b>=B[oa])i[lb](b>=B[Ka]?1:j*T(i[La]()/j));b>=B[Ka]&&(i[Cb](b>=B[ta]?0:j… | |
| -function Eb(){this.symbol=this.color=0}function Fb(a,b){var c=a.length,d,e;for… | |
| -b){var c="Highcharts error #"+a+": www.highcharts.com/errors/"+a;if(b)throw c;… | |
| -Db=c+"FullYear"}function va(){}function Pa(a,b,c){this.axis=a;this.pos=b;this.… | |
| -0)};this.textAlign=b.textAlign||(g?c?"right":"left":"center")}function ob(){th… | |
| -function qb(a,b){var c=U?"":b.chart.zoomType;this.zoomX=/x/.test(c);this.zoomY… | |
| -!!e.click;this.callback=b;this.isResizing=0;this.options=c;this.axes=[];this.s… | |
| -10)<4,U=!Z&&!Ca&&!!C.createElement("canvas").getContext,Ra,fa=C.documentElemen… | |
| -k=M.lang,l=k.weekdays,b={a:l[g].substr(0,3),A:l[g],d:sa(h),e:h,b:k.shortMonths… | |
| -oa,864E5,Va,6048E5,Ka,2592E6,ta,31556952E3);vb={init:function(a,b,c){var b=b||… | |
| -1]),b=b.concat(d);h&&(b=b.concat(h),c=c.concat(i));return[b,c]},step:function(… | |
| -d,k,l;b==="cur"?e=c.prototype:b==="_default"&&f&&(e=g[b],b="set");(k=e[b])&&(e… | |
| -a[c],c,a)===!1)return c}},getScript:a.getScript,inArray:a.inArray,adapterRun:f… | |
| -d)},fireEvent:function(b,c,d,e){var f=a.Event(c),g="detached"+c,h;!Ca&&d&&(del… | |
| -a(b);if(c.d)b.toD=c.d,c.d=1;e.stop();e.animate(c,d)},stop:function(b){a(b).sto… | |
| +(function(){function r(a,b){var c;a||(a={});for(c in b)a[c]=b[c];return a}func… | |
| +10)}function Ga(a){return typeof a==="string"}function da(a){return a&&typeof … | |
| +da(b))for(d in b)a.setAttribute(d,b[d]);return e}function ra(a){return Ha(a)?a… | |
| +b,c,d){var e=K.numberFormat,f=E.lang,g=+a||0,h=b===-1?(g.toString().split(".")… | |
| +a.unshift(d);return c.apply(this,a)}}function Ja(a,b){for(var c="{",d=!1,e,f,g… | |
| +V.LN10))}function nb(a,b,c,d){var e,c=p(c,1);e=a/c;b||(b=[1,2,2.5,5,10],d===!1… | |
| +function Pa(a,b){for(var c in a)a[c]&&a[c]!==b&&a[c].destroy&&a[c].destroy(),d… | |
| +"Hours";rb=b+"Day";Xa=b+"Date";fb=b+"Month";gb=b+"FullYear";Cb=c+"Minutes";Db=… | |
| +(f?c?"left":"right":"center"),verticalAlign:b.verticalAlign||(f?"middle":c?"bo… | |
| +ba=!!x.createElementNS&&!!x.createElementNS(xa,"svg").createSVGRect,Ob=Ua&&par… | |
| +h=d[Xa](),i=d[fb](),j=d[gb](),k=E.lang,l=k.weekdays,d=r({a:l[g].substr(0,3),A:… | |
| +a;if(b)throw c;G.console&&console.log(c)};A={millisecond:1,second:1E3,minute:6… | |
| +a.shift=0;if(b.length)for(a=c.length;b.length<a;)d=[].concat(b).splice(b.lengt… | |
| +h)*(b-2)+c}});a.each(["cur","_default","width","height","opacity"],function(b,… | |
| +a.start=f[0],a.end=f[1],a.started=!0;c.attr("d",b.step(a.start,a.end,a.pos,c.t… | |
| +addAnimSetter:function(b,c){a.Tween?a.Tween.propHooks[b]={set:c}:a.fx.step[b]=… | |
| +c,d,e){var f=a.Event(c),g="detached"+c,h;!Aa&&d&&(delete d.layerX,delete d.lay… | |
| +a(b);if(!b.style)b.style={};if(c.d)b.toD=c.d,c.d=1;e.stop();c.opacity!==u&&b.a… | |
| symbols:["circle","diamond","square","triangle","triangle-down"],lang:{loading… | |
| -canvasToolsURL:"http://code.highcharts.com/2.3.3/modules/canvas-tools.js",VMLR… | |
| -position:{align:"right",x:-10,y:10}}},title:{text:"Chart title",align:"center"… | |
| -verticalAlign:"bottom",y:0}),cropThreshold:300,pointRange:0,showInLegend:!0,st… | |
| -itemHiddenStyle:{color:"#CCC"},itemCheckboxStyle:{position:"absolute",width:"1… | |
| -hour:"%A, %b %e, %H:%M",day:"%A, %b %e, %Y",week:"Week from %A, %b %e, %Y",mon… | |
| -style:{cursor:"pointer",color:"#909090",fontSize:"10px"}}};var W=M.plotOptions… | |
| -b[3]:"rgba("+b.join(",")+")":a},brighten:function(a){if(Aa(a)&&a!==0){var c;fo… | |
| -i=this.renderer,j,k=this.attrSetters,l=this.shadows,m,p,u=this;la(a)&&t(b)&&(c… | |
| -z(f,"x",d);this.rotation&&z(g,"transform","rotate("+this.rotation+" "+d+" "+w(… | |
| -"3,1,1,1").replace("shortdot","1,1,").replace("shortdash","3,1,").replace("lon… | |
| -d;c==="strokeWidth"&&(c="stroke-width");tb&&c==="stroke-width"&&d===0&&(d=1.0E… | |
| -j||z(g,c,d)}return u},symbolAttr:function(a){var b=this;n("x,y,r,start,end,wid… | |
| -0)-2*i);h.height=T((e||this.height||0)-2*i);h.strokeWidth=a;for(f in h)this[f]… | |
| -on:function(a,b){var c=b;fa&&a==="click"&&(a="touchstart",c=function(a){a.prev… | |
| -a);H(this.element,a);return this},htmlGetBBox:function(){var a=this.element,b=… | |
| -marginTop:d}),j&&n(j,function(a){H(a,{marginLeft:c+1,marginTop:d+1})});this.in… | |
| -u,", M12=",-p,", M21=",p,", M22=",u,", sizingMethod='auto expand')"].join(""):… | |
| -!0},updateTransform:function(){var a=this.translateX||0,b=this.translateY||0,c… | |
| -this.renderer.alignedObjects.push(this)):(a=this.alignOptions,b=this.alignByTr… | |
| -this.bBox,b=this.renderer,c,d=this.rotation,e=this.element,f=this.styles,g=d*a… | |
| -hide:function(){return this.attr({visibility:"hidden"})},add:function(a){var b… | |
| -a.parentNode;b&&b.removeChild(a)},destroy:function(){var a=this,b=a.element||{… | |
| -shadow:function(a,b,c){var d=[],e,f,g=this.element,h,i,j,k;if(a){i=o(a.width,3… | |
| -arguments)};ra.prototype={Element:va,init:function(a,b,c,d){var e=location,f;f… | |
| -b=function(){H(a,{left:0,top:0});g=a.getBoundingClientRect();H(a,{left:wa(g.le… | |
| -a);return b},draw:function(){},buildText:function(a){for(var b=a.element,c=o(a… | |
| -c[c.length-1]===""&&c.pop();n(c,function(c,d){var h,da=0,q,c=c.replace(/<span/… | |
| -da?m.dx=3:m.x=g;if(!da){if(d){!Z&&a.renderer.forExport&&H(o,{display:"block"})… | |
| -1?(c=t,t=[],c.length&&(o=C.createElementNS(pa,"tspan"),z(o,{dy:j||16,x:g}),n&&… | |
| -delete e.style;f=A(e,ka("stroke","#68A","fill",ka("linearGradient",a,"stops",[… | |
| -l))},crispLine:function(a,b){a[1]===a[4]&&(a[1]=a[4]=s(a[1])-b%2/2);a[2]===a[5… | |
| -a.r:e;e=this.createElement("rect").attr({rx:e,ry:e,fill:R});return e.attr(X(a)… | |
| -f.element.setAttributeNS?f.element.setAttributeNS("http://www.w3.org/1999/xlin… | |
| -height:0}),Q("img",{onload:function(){k(g,Jb[j]=[this.width,this.height])},src… | |
| -c/2,b+d,a,b+d/2,"Z"]},arc:function(a,b,c,d,e){var f=e.start,c=e.r||c||d,g=e.en… | |
| -g="linearGradient":a&&a.radialGradient&&(g="radialGradient");if(g){var c=a[g],… | |
| -k=e.get("a")):(j=a[1],k=1);a=d.createElement("stop").attr({offset:a[0],"stop-c… | |
| -f&&a.css({position:"absolute"});a.x=b;a.y=c;return a},html:function(a,b,c){var… | |
| -c=h.box.parentNode,d=[];if(a){if(b=a.div,!b){for(;a;)d.push(a),a=a.parentGroup… | |
| -w(a||11),a=a<24?a+4:s(a*1.2),b=s(a*0.8);return{h:a,b:b}},label:function(a,b,c,… | |
| -I(p,"add",l);g.width=function(a){Ga=a;return!1};g.height=function(a){v=a;retur… | |
| -p.height,0,fb["stroke-width"]),o.add(p);o.attr(A({width:p.width,height:p.heigh… | |
| -{},a=A({},a);n("fontSize,fontWeight,fontFamily,color,lineHeight,width".split("… | |
| -";"];(b==="shape"||b===ia)&&d.push("left:0;top:0;width:1px;height:1px;");Qa&&d… | |
| -return this},updateTransform:va.prototype.htmlUpdateTransform,attr:function(a,… | |
| -k=!0),m=!0;else if(c==="d"){d=d||[];this.d=d.join(" ");e=d.length;for(m=[];e--… | |
| -g[c]=d,m=!0;else if(c==="x"||c==="y")this[c]=d,g[{x:"left",y:"top"}[c]]=d;else… | |
| -else if(h==="shape"&&c==="rotation")this[c]=d,f.style.left=-s(Y(d*ab)+1)+"px",… | |
| -b.destroyClip(),a={clip:Qa?"inherit":"rect(auto)"});return b.css(a)},css:va.pr… | |
| -if(c===9||c===11)a[c-4]=a[c-2]=w(a[c-2])-10*b;return a.join(" ")},shadow:funct… | |
| -o(a.offsetY,1)});if(c)h.cutOff=l+1;j=['<stroke color="',a.color||"black",'" op… | |
| -"urn:schemas-microsoft-com:vml"),C.createStyleSheet().cssText="hcv\\:fill, hcv… | |
| -s(b?e:f)+"px,"+s(b?c:d)+"px)"};!b&&Qa&&a.element.nodeName!=="IMG"&&r(c,{width:… | |
| -Q(e.prepVML(h),null,null,b)};p=a[0];s=a[a.length-1];p[0]>0&&a.unshift([0,p[1]]… | |
| -0.5,x+=(A[1]-w.y)/w.height-0.5,r*=A[2]/w.width,P*=A[2]/w.height);t='src="'+M.g… | |
| -' xmlns="urn:schemas-microsoft-com:vml" />'),a=a.indexOf('style="')===-1?a.rep… | |
| -a&&(b={className:"highcharts-"+a,"class":"highcharts-"+a});return this.createE… | |
| -symbols:{arc:function(a,b,c,d,e){var f=e.start,g=e.end,h=e.r||c||d,c=V(f),d=Y(… | |
| -arguments):(h=O(e.r,c,d),f=["M",a+h,b,"L",f-h,b,"wa",f-2*h,b,f,b+2*h,f-h,b,f,b… | |
| -d){b.length===0&&Qb(d,a);b.push(c)}}}();Ra=ja||gb||ra;Pa.prototype={addLabel:f… | |
| -chart:c,isFirst:i,isLast:j,dateTimeLabelFormat:l,value:a.isLog?ea(ba(k)):k});f… | |
| -b=this.labelBBox.width,a=b*{left:0,center:0.5,right:1}[a.align]-a.x;return[-a,… | |
| -f=e.chart,g=d&&f.oldChartHeight||f.chartHeight;return{x:a?e.translate(b+c,null… | |
| -1)%i*16);return{x:a,y:b}},getMarkPath:function(a,b,c,d,e,f){return f.crispLine… | |
| -r.x,r=r.y,y=c.staggerLines;if(p){i=c.getPlotLinePath(i+F,p,b);if(k===x){k={str… | |
| -1)||this.isLast&&!o(d.showLastLabel,1)?v=!1:!y&&f&&j.overflow==="justify"&&!th… | |
| -i=ma(i),l=ma(l));if(h){if(u=b.getPlotLinePath(l,h),d={stroke:q,"stroke-width":… | |
| -t(f.text)&&u&&u.length&&b.width>0&&b.height>0){f=A({align:c&&k&&"center",x:c?!… | |
| -Hb.prototype={destroy:function(){Ea(this,this.axis)},setTotal:function(a){this… | |
| -1),c=c.translate(0),c=L(g-c),h=d.xAxis[0].translate(this.x)+a,i=d.plotHeight,f… | |
| -labels:G,lineColor:"#C0D0E0",lineWidth:1,minPadding:0.01,maxPadding:0.01,minor… | |
| -labels:{align:"right",x:-8,y:3},lineWidth:0,maxPadding:0.05,minPadding:0.05,st… | |
| -x:0,y:-5},title:{rotation:0}},init:function(a,b){var c=b.isX;this.horiz=a.inve… | |
| -e==="logarithmic";this.isLinked=t(d.linkedTo);this.isDatetimeAxis=f;this.tickm… | |
| -!0;this.removePlotLine=this.removePlotBand=this.removePlotBandOrLine;this.addP… | |
| -this.axis,b=this.value,c=this.dateTimeLabelFormat,d=M.lang.numericSymbols,e=d&… | |
| -i,j,k,l,m,p,u,n,q,D=h.threshold,s,r=[],v=0;a.hasVisibleSeries=!0;if(a.isLog&&D… | |
| -for(f=0;f<s;f++)if(n=h[f],q=u[f],i&&(w=(F=q<D)?k:j,P=F?p:l,q=w[n]=t(w[n])?ea(w… | |
| -D)a.dataMax=D,a.ignoreMaxPadding=!0}}})},translate:function(a,b,c,d,e,f){var g… | |
| -null,null,c),j=c&&d.oldChartHeight||d.chartHeight,k=c&&d.oldChartWidth||d.char… | |
| -b=ea(T(b/a)*a),c=ea(wa(c/a)*a),e=[];b<=c;){e.push(b);b=ea(b+a);if(b===d)break;… | |
| -a=o(a==="auto"?null:a,this._minorAutoInterval,(c-b)*(e.tickPixelInterval/(d?5:… | |
| -this.max;a+=b)c.push(a);return c},adjustForMinRange:function(){var a=this.opti… | |
| -b=Da(d);c=[b+k,o(a.max,b+k)];if(e)c[2]=this.dataMax;c=Ma(c);c-b<k&&(d[0]=c-k,d… | |
| -e,this.pointRange=b,this.closestPointRange=c;this.oldTransA=g;this.translation… | |
| -b.min=o(c.min,c.dataMin),b.max=o(c.max,c.dataMax),d.type!==b.linkedParent.opti… | |
| -c*k;if(!t(d.max)&&!t(b.userMax)&&j&&(b.dataMax>0||!b.ignoreMaxPadding))b.max+=… | |
| -if(!l&&b.tickInterval<m)b.tickInterval=m;if(!f&&!e&&(a=J.pow(10,T(J.log(b.tick… | |
| -b.min,b.max),b.tickPositions=i;if(!h)e=i[0],f=i[i.length-1],h=b.minPointOffset… | |
| -!this.categories&&!this.isLinked&&this.options.alignTicks!==!1){var d=this.tic… | |
| -!0});if(e||d||this.isLinked||this.userMin!==this.oldUserMin||this.userMax!==th… | |
| -b;f.isDirtyExtremes=!0;c&&g.redraw(d)})},zoom:function(a,b){this.setExtremes(a… | |
| -this.isLog;return{min:a?ea(ba(this.min)):this.min,max:a?ea(ba(this.max)):this.… | |
| -f=a.ticks,g=a.horiz,h=a.side,i,j=0,k,l=0,m=d.title,p=d.labels,u=0,da=b.axisOff… | |
| -3:"right"}[h]===p.align)u=y(f[a].getLabelSize(),u)}),a.staggerLines&&(u+=(a.st… | |
| -da[h]);a.axisTitleMargin=o(k,u+l+(h!==2&&u&&q*d.labels[g?"y":"x"]));da[h]=y(da… | |
| -f=a?b:c,g=this.opposite,h=this.offset,i=w(e.style.fontSize||12),d={low:f+(a?0:… | |
| -o=d.lineWidth,q,D=b.hasRendered&&t(a.oldMin)&&!isNaN(a.oldMin),r=a.showAxis,s,… | |
| -(l[b]=new nb(a)),s=b+u,v=g[c+1]!==x?g[c+1]+u:a.max,l[b].options={from:e?ba(s):… | |
| -a.axisLine[r?"show":"hide"]();if(h&&r)h[h.isNew?"attr":"animate"](a.getTitlePo… | |
| -d.title=A(d.title,a);this.axisTitle=e&&e.destroy();this.isDirty=!0;o(b,!0)&&c.… | |
| -b=a.stacks,c;S(a);for(c in b)Ea(b[c]),b[c]=null;n([a.ticks,a.minorTicks,a.alte… | |
| -b,anchorX:g?(2*f.anchorX+c)/3:c,anchorY:g?(f.anchorY+d)/2:d});e.label.attr(f);… | |
| -0,g=0,h,a=na(a);c=a[0].tooltipPos;c||(n(a,function(a){h=a.series.yAxis;f+=a.pl… | |
| -e+g&&(d-=d+a-(e+g),k=c-b+f-i,l=!0);k<f+5&&(k=f+5,l&&c>=k&&c<=k+b&&(k=c+f+i));k… | |
| -d.hoverPoints,m,p=f.crosshairs;i=this.shared;h=this.getAnchor(a,b);g=h[0];h=h[… | |
| -e.attr({stroke:m}),e=(f.positioner||this.getPosition).call(this,e.width,e.heig… | |
| -d.renderer.path(i).attr(j).add()}}E(d,"tooltipRefresh",{text:k,x:g+d.plotLeft,… | |
| -b[e?"xAxis":"yAxis"].push({axis:d,value:d.translate(((c.inverted?!e:e)?a.chart… | |
| -c[i].options.enableMouseTracking!==!1&&!c[i].noSharedTooltip&&c[i].tooltipPoin… | |
| -na(b)[0].plotX===x&&(a=!1);if(a)e.refresh(b);else{if(d)d.onMouseOut();if(c)c.o… | |
| -0,1);!isNaN(e)&&!isNaN(d)&&(f[b?"xAxis":"yAxis"].push({axis:a,min:O(e,d),max:y… | |
| -!c.isInsidePlot(a.pageX-b.chartPosition.left-c.plotLeft,a.pageY-b.chartPositio… | |
| -!1;var d=a.chartX,h=a.chartY,l=!c.isInsidePlot(d-c.plotLeft,h-c.plotTop);fa&&a… | |
| -c.plotLeft,b.mouseDownY-c.plotTop);if(c.hasCartesianSeries&&(b.zoomX||b.zoomY)… | |
| -b.options.chart.panning&&c.pan(d)}if(!l)b.onmousemove(a);return l||!c.hasCarte… | |
| -f=d.plotY,r(d,{pageX:b.chartPosition.left+c.plotLeft+(c.inverted?c.plotWidth-f… | |
| -b.onclick=b.onmousedown=b.onmousemove=b.ontouchstart=b.ontouchend=b.ontouchmov… | |
| -b.itemMarginTop=f;b.padding=e;b.initialItemX=e;b.initialItemY=e-5;b.maxItemWid… | |
| -d!==x&&(i[j]=d);f.attr(i)}},positionItem:function(a){var b=this.options,c=b.sy… | |
| -this;n(a.allItems,function(b){var c=b.checkbox,d=a.group.alignAttr;c&&H(c,{lef… | |
| -t.drawLegendSymbol(b,a),a.legendItem=q=d.text(e.labelFormatter.call(a),l?g+h:-… | |
| -a.visible),r&&s))a.checkbox=Q("input",{type:"checkbox",checked:a.selected,defa… | |
| -y(g,b.lastLineHeight);a._legendItemPos=[b.itemX,b.itemY];f?b.itemX+=e:(b.itemY… | |
| -a.clipRect=c.clipRect(0,0,9999,b.chartHeight),a.contentGroup.clip(a.clipRect);… | |
| -0&&h>0)i[i.isNew?"attr":"animate"](i.crisp(null,null,null,g,h)),i.isNew=!1}els… | |
| -(e.verticalAlign==="top"?-f:f)-this.padding,g=e.maxHeight,h=this.clipRect,i=e.… | |
| -this.down=d.symbol("triangle-down",0,0,k,k).on("click",function(){b.scroll(1,j… | |
| -1?f:g}).css({cursor:d===1?"default":"pointer"}),h.attr({text:d+"/"+this.pageCo… | |
| -"addSeries",{options:a},function(){d=e.initSeries(a);e.isDirtyLegend=!0;b&&e.r… | |
| -m=[];ua(a,this);for(l&&this.cloneRenderTo();j--;)if(a=c[j],a.isDirty&&a.option… | |
| -"afterSetExtremes",a.getExtremes())});if(a.isDirty||h||g)a.redraw(),h=!0})}h&&… | |
| -"px",height:this.plotHeight+"px",zIndex:10,display:R}),this.container),this.lo… | |
| -c=this.series,d,e;for(d=0;d<b.length;d++)if(b[d].options.id===a)return b[d];fo… | |
| -n(this.series,function(b){a=a.concat(Kb(b.points,function(a){return a.selected… | |
| -this.resetZoomButton.alignTo=f},zoomOut:function(){var a=this,b=a.resetZoomBut… | |
| -c=this.mouseDownX,d=b.pointRange/2,e=b.getExtremes(),f=b.translate(c-a,!0)+d,c… | |
| -a[0],d=c[b],e=a[1],a=a[2];d&&e&&(c[b]=d=d.destroy());a&&a.text&&!d&&(c[b]=c.re… | |
| -400)},cloneRenderTo:function(a){var b=this.renderToClone,c=this.container;a?b&… | |
| -a.offsetWidth||this.cloneRenderTo();this.getChartSize();c=this.chartWidth;d=th… | |
| -d=a.spacingBottom,a=a.spacingLeft,e,f=this.legend,g=this.optionsMarginTop,h=th… | |
| -y(this.plotTop,l+o(k.margin,15)+b);if(f.display&&!m.floating)if(q==="right"){i… | |
| -this.hasCartesianSeries&&n(this.axes,function(a){a.getOffset()});t(h)||(this.p… | |
| -h}}var b=this,c=b.options.chart,d=b.renderTo,e;I(K,"resize",a);I(b,"destroy",f… | |
| -d.plotHeight=f-d.plotTop-d.marginBottom;d.maxTicks=null;n(d.axes,function(a){a… | |
| -f=d.spacingRight,g=d.spacingBottom,h=d.spacingLeft,i,j,k,l;this.plotLeft=i=s(t… | |
| -resetMargins:function(){var a=this.options.chart,b=a.spacingRight,c=a.spacingB… | |
| -0,j=a.backgroundColor,k=a.plotBackgroundColor,l=a.plotBackgroundImage,m=a.plot… | |
| -if(l)h?h.animate(t):this.plotBGImage=b.image(l,o,n,q,r).add();s?s.animate({wid… | |
| -e--;)(c=$[d[e].type])&&c.prototype[g]&&(f=!0);a[g]=f})},render:function(){var … | |
| -a.setTooltipPoints();a.render()});e.items&&n(e.items,function(b){var d=r(e.sty… | |
| -E(a,"destroy");S(a);for(e=b.length;e--;)b[e]=b[e].destroy();for(e=c.length;e--… | |
| -U&&!K.canvg)U?Mb.push(function(){a.firstRender()},b.global.canvasToolsURL):C.a… | |
| -b.scrollbar.enabled))a.scroller=new Highcharts.Scroller(a);a.tracker=new qb(a,… | |
| -var Ta=function(){};Ta.prototype={init:function(a,b,c){var d=a.chart.counters;… | |
| -a;if(a.dataLabels)c._hasPointLabels=!0;if(a.marker)c._hasPointMarkers=!0}else … | |
| -"graphic,tracker,dataLabel,group,connector,shadowGroup".split(","),b,c=6;c--;)… | |
| -a!==c)a.selected=!1,a.setState(""),a.firePointEvent("unselect")})})},onMouseOv… | |
| -c=b.tooltipOptions,d=a.match(/\{(series|point)\.[a-zA-Z]+\}/g),e=/[{\.}]/,f,g,… | |
| -return a},update:function(a,b,c){var d=this,e=d.series,f=d.graphic,g,h=e.data,… | |
| -0;f<h;f++)if(g[f]===c){g.splice(f,1);d.options.data.splice(f,1);d.xData.splice… | |
| -this.options).events,b;this.events=a;for(b in a)I(this,b,a[b]);this.hasImporte… | |
| -{x:b-e,y:c-e,width:2*e,height:2*e}:{}));else{if(a&&h)e=h.radius,j?j.attr({x:b-… | |
| -r(this,{name:b.name,state:"",pointAttr:{},visible:b.visible!==!1,selected:b.se… | |
| -(b+1)})},bindAxes:function(){var a=this,b=a.options,c=a.chart,d;a.isCartesian&… | |
| -e;c--;)d[c].y===null&&d.splice(c,1);d.length&&(b=[d])}else n(d,function(c,g){c… | |
| -!a.colorByPoint&&b[c.color++]||"gray";c.wrapColor(b.length)},getSymbol:functio… | |
| -0,a-4,"L",d,a-4]).attr(g).add(f)}if(c&&c.enabled)b=c.radius,this.legendSymbol=… | |
| -(e.shift(),i.shift(),j.shift(),l.shift()));this.getAttribs();this.isDirtyData=… | |
| -d=o(d.pointInterval,1);for(i=0;i<l;i++)e[i]=j,k[i]=a[i],j+=d;this.xIncrement=j… | |
| -f.isDirtyBox=!0;o(b,!0)&&f.redraw(!1)},remove:function(a,b){var c=this,d=c.cha… | |
| -i=a.min,k=a.max,b[d-1]<i||b[0]>k)b=[],c=[];else if(b[0]<i||b[d-1]>k){for(a=0;a… | |
| -f=this.pointClass,g=d.length,h=this.cropStart||0,i,j=this.hasGroupedData,k,l=[… | |
| -b=this.options,c=b.stacking,d=this.xAxis,e=d.categories,f=this.yAxis,g=this.po… | |
| -n*100/p:0),k.percentage=p?k.y*100/p:0,k.total=k.stackTotal=p,k.stackY=n;k.yBot… | |
| -null;n(this.segments||this.points,function(a){b=b.concat(a)});c&&c.reversed&&(… | |
| -cb(c,a):a).replace("{series.name}",this.name).replace("{series.color}",this.co… | |
| -this,c=b.chart,d=c.renderer,e;e=b.options.animation;var f=c.clipBox,g=c.invert… | |
| -e.duration)}},afterAnimate:function(){var a=this.chart,b=this.sharedClipKey,c=… | |
| -x||i.enabled,m=c.isInsidePlot(d,e,c.inverted),a&&e!==x&&!isNaN(e))if(a=g.point… | |
| -for(f in e)g=e[f],h[f]=o(a[g],b[f],c[f],d[f]);return h},getAttribs:function(){… | |
| -h.length;f--;){g=h[f];if((b=g.options&&g.options.marker||g.options)&&b.enabled… | |
| -this,b=a.chart,c=/AppleWebKit\/533/.test(Fa),d,e,f=a.data||[],g,h,i;E(a,"destr… | |
| -a);for(h in a)delete a[h]},drawDataLabels:function(){var a=this,b=a.options.da… | |
| -a.color,"black");if(j)j.attr({text:f}),l=!1;else if(t(f)){j={fill:b.background… | |
| -d=r({x:g?f.plotWidth-a:h,y:s(g?f.plotHeight-h:a),width:0,height:0},d);r(c,{wid… | |
| -c.push(d.plotX,a[e-1].plotY),c.push(d.plotX,d.plotY))});return c},getGraphPath… | |
| -invertGroups:function(){function a(){var a={width:b.yAxis.len,height:b.xAxis.l… | |
| -this.chart,b,c=this.options,d=c.animation&&!!this.animate,e=this.visible?"visi… | |
| -(b.clip(a.clipRect),this.trackerGroup&&this.trackerGroup.clip(a.clipRect));d?t… | |
| -d=b.states,b=b.lineWidth,a=a||"";if(this.state!==a)this.state=a,d[a]&&d[a].ena… | |
| -if(g)g[i]();d&&c.legend.colorizeItem(this,a);this.isDirty=!0;this.options.stac… | |
| -e=d.length,f=a.chart,g=f.renderer,h=f.options.tooltip.snap,i=a.tracker,j=b.cur… | |
| -visibility:a.visible?"visible":"hidden",stroke:wb,fill:c?wb:R,"stroke-width":b… | |
| -a.length-1;d>=0;d--)d<a.length-1&&e.step&&c.push(a[d+1].plotX,a[d].yBottom),c.… | |
| -qa(this.color).setOpacity(b.fillOpacity||0.75).get()),zIndex:0}).add(this.grou… | |
| -k;i+=l;k+=l;i>a&&i>e?(i=y(a,e),k=2*e-i):i<a&&i<e&&(i=O(a,e),k=2*e-i);k>g&&k>e?… | |
| -borderWidth:1,borderRadius:0,groupPadding:0.2,marker:null,pointPadding:0.1,min… | |
| -a.chart;b.hasRendered&&n(b.series,function(b){if(b.type===a.type)b.isDirty=!0}… | |
| -g.closestPointRange||1),m=g*c.groupPadding,p=(g-2*m)/f,u=c.pointWidth,r=t(u)?(… | |
| -h;c.pointWidth=q;c.shapeType="rect";c.shapeArgs=f=b.renderer.Element.prototype… | |
| -"select":""]).add(a.group).shadow(b.shadow,null,b.stacking&&!b.borderRadius);e… | |
| -fill:wb,visibility:a.visible?"visible":"hidden"}).on(fa?"touchstart":"mouseove… | |
| -if(a.shapeArgs&&(d=A(a.shapeArgs),g&&(d={x:f.plotWidth-d.y-d.height,y:f.plotHe… | |
| -y:t(h)?g.getThreshold(h):g.translate(g.getExtremes().min,0,1,0,1)}),c.animate(… | |
| -pointFormat:"x: <b>{point.x}</b><br/>y: <b>{point.y}</b><br/>"}});za=ca(N,{typ… | |
| -function(b){a.onMouseOver();if(b.target._i!==x)c[b.target._i].onMouseOver()}).… | |
| -{init:function(){Ta.prototype.init.apply(this,arguments);var a=this,b;r(a,{vis… | |
| -!0,c.redraw()},slice:function(a,b,c){var d=this.series.chart,e=this.slicedTran… | |
| --xa/2;c&&(c.attr({r:0,start:d,end:d}),c.animate({r:b.r,start:b.start,end:b.end… | |
| -var a=0,b=-0.25,c=this.options,d=c.slicedOffset,e=d+c.borderWidth,f,g=this.cha… | |
| -end:i};j=(i+h)/2;q.slicedTranslation=Sa([V(j)*d+g.plotLeft,Y(j)*d+g.plotTop],s… | |
| -this.isDirty=!1},drawPoints:function(){var a=this,b=a.chart,c=b.renderer,d,e,f… | |
| -h);j.visible===!1&&j.setVisible(!1)})},drawDataLabels:function(){var a=this.da… | |
| -21);y--;){var x=[],A=[],z=r[y],C=z.length,B;if(j>0){for(v=m-l-j;v<=m+l+j;v+=a)… | |
| -s=h[1];if(j>0){if(q=A.pop(),B=q.i,q=q.y,s>q&&x[B+1]!==null||s<q&&x[B-1]!==null… | |
| -b.connector=g=this.chart.renderer.path(h).attr({"stroke-width":f,stroke:d.conn… | |
| -getOptions:function(){return M},hasBidiBug:Pb,numberFormat:Ia,seriesTypes:$,se… | |
| +canvasToolsURL:"http://code.highcharts.com/4.0.4/modules/canvas-tools.js",VMLR… | |
| +align:"center",style:{color:"#555555"}},plotOptions:{line:{allowPointSelect:!1… | |
| +marker:{},halo:{size:10,opacity:0.25}},select:{marker:{}}},stickyTracking:!0,t… | |
| +width:"13px",height:"13px"},symbolPadding:5,verticalAlign:"bottom",x:0,y:0,tit… | |
| +day:"%A, %b %e, %Y",week:"Week from %A, %b %e, %Y",month:"%B %Y",year:"%Y"},he… | |
| +color:"#909090",fontSize:"9px"}}};var ca=E.plotOptions,T=ca.line;Bb();var Ub=/… | |
| +16),1]:(c=Wb.exec(a))&&(b=[y(c[1]),y(c[2]),y(c[3]),1])})(a);return{get:functio… | |
| +S.prototype={opacity:1,textProps:"fontSize,fontWeight,fontFamily,color,lineHei… | |
| +if(f){g=a[f];h=d.gradients;j=a.stops;n=c.radialReference;Ha(g)&&(a[f]=g={x1:g[… | |
| +0?(e=ya(a[1]),k=e.get("rgb"),l=e.get("a")):(k=a[1],l=1);a=d.createElement("sto… | |
| +f=!0),h=!0);if(this.rotation&&(c==="x"||c==="y"))this.doTransform=!0;h||(this[… | |
| +"";c.indexOf(a)===-1&&F(b,"class",c+" "+a);return this},symbolAttr:function(a)… | |
| +0)-2*d);a.height=U((a.height||this.height||0)-2*d);a.strokeWidth=e;for(b in a)… | |
| +for(f in a)g+=f.replace(/([A-Z])/g,b)+":"+a[f]+";";F(d,"style",g)}e&&this.adde… | |
| +translateY:b})},invert:function(){this.inverted=!0;this.updateTransform();retu… | |
| +a.join(" "))},toFront:function(){var a=this.element;a.parentNode.appendChild(a… | |
| +h[b?"translateX":"x"]=v(f);if(e==="bottom"||e==="middle")g+=(c.height-(a.heigh… | |
| +c.getBBox?r({},c.getBBox()):{width:c.offsetWidth,height:c.offsetHeight}}catch(… | |
| +hide:function(){return this.attr({visibility:"hidden"})},fadeOut:function(a){v… | |
| +b);h=!0;break}}h||d.appendChild(e);this.added=!0;if(this.onAdd)this.onAdd();re… | |
| +q(c,function(b){a.safeRemoveChild(b)});d&&d.div&&d.div.childNodes.length===0;)… | |
| +e,"stroke-width":h,transform:"translate"+k,fill:P});if(c)F(f,"height",t(F(f,"h… | |
| +/(NaN| {2}|^$)/.test(a)&&(a="M 0 0");c.setAttribute(b,a);this[b]=a},dashstyleS… | |
| +alignSetter:function(a){this.element.setAttribute("text-anchor",{left:"start",… | |
| +c){typeof a==="string"?c.setAttribute(b,a):a&&this.colorGradient(a,b,c)},zInde… | |
| +b,c){this[b]=a;if(this.stroke&&this["stroke-width"])this.strokeWidth=this["str… | |
| +g=d.element;a.appendChild(g);a.innerHTML.indexOf("xmlns")===-1&&F(g,"xmlns",xa… | |
| +if(Ua&&a.getBoundingClientRect)this.subPixelFix=b=function(){B(a,{left:0,top:0… | |
| +{});this.gradients=null;if(a)this.defs=a.destroy();this.subPixelFix&&X(G,"resi… | |
| +a.style.fontSize)?a.style.fontSize:k&&k.fontSize||c.style.fontSize||12,a).h};o… | |
| +f){var g,n=0,e=e.replace(/<span/g,"|||<span").replace(/<\/span>/g,"</span>|||"… | |
| +j!==null)m.x=j;F(o,m);b.appendChild(o);!n&&f&&(!ba&&d&&B(o,{display:"block"}),… | |
| +x:j}),p&&F(o,"style",p),b.appendChild(o))),D>l&&(l=D)):(o.removeChild(o.firstC… | |
| +fill:{linearGradient:a,stops:[[0,"#FFF"],[1,"#ACF"]]}},f);o=f.style;delete f.s… | |
| +j.attr(e).css(m)};return j.on("click",function(){k!==3&&d.call(j)}).attr(e).cs… | |
| +a)};return b.attr(a)},arc:function(a,b,c,d,e,f){if(da(a))b=a.y,c=a.r,d=a.inner… | |
| +this.width=a;this.height=b;for(this.boxWrapper[p(c,!0)?"animate":"attr"]({widt… | |
| +b,c,d,e,f){var g,h=this.symbols[a],h=h&&h(v(b),v(c),d,e,f),i=/^url\((.*?)\)$/,… | |
| +src:j}));return g},symbols:{circle:function(a,b,c,d){var e=0.166*c;return["M",… | |
| +0.001,d=e.innerR,h=e.open,i=aa(f),j=fa(f),k=aa(g),g=fa(g),e=e.end-f<oa?0:1;ret… | |
| +"L",a+c,i-6,a+c+6,i,a+c,i+6,a+c,b+d-f):h&&h<0&&i>b+g&&i<b+d-g?e.splice(33,3,"L… | |
| +b,c);f.x=Math.round(b||0);if(c)f.y=Math.round(c);if(a||a===0)f.text=a;a=this.c… | |
| +parseFloat(a)*12:12,c=a<24?a+4:v(a*1.2),d=v(c*0.8);return{h:c,b:d,f:a}},label:… | |
| +z));z=null}}function k(){var a=m.styles,a=a&&a.textAlign,b=kb+C*(1-J),c;c=h?0:… | |
| +function(a){xb=a};m.paddingSetter=function(a){s(a)&&a!==C&&(C=a,k())};m.paddin… | |
| +a;J&&(a-=J*((t||D.width)+C));yb=v(a);m.attr("translateX",yb)};m.ySetter=functi… | |
| +S.prototype.destroy.call(m);m=n=j=k=l=null}})}};Za=ta;r(S.prototype,{htmlCss:f… | |
| +this.renderer,b=this.element,c=this.translateX||0,d=this.translateY||0,e=this.… | |
| +h,k);i=p(this.elemWidth,b.offsetWidth);if(i>l&&/[ \-]/.test(b.textContent||b.i… | |
| +b*100+"% "+c+"px";B(this.element,d)},getSpanCorrection:function(a,b,c){this.xC… | |
| +fontSize:this.style.fontSize});d.css=d.htmlCss;if(f.isSVG)d.add=function(a){va… | |
| +b){d[b]=a}})})}}else b=c;b.appendChild(e);d.added=!0;d.alignOnAdd&&d.htmlUpdat… | |
| +c=this.element,d=b.box,d=a?a.element||a:d;a&&a.inverted&&b.invertChild(c,d);d.… | |
| +b,c,d,e){var f=d?aa(d*Ea):1,g=d?fa(d*Ea):0,h=p(this.elemHeight,this.element.of… | |
| +5]?1:-1),c[b+6]===c[b+8]&&(c[b+8]+=a[b+8]>a[b+6]?1:-1);return c.join(" ")||"x"… | |
| +G.event;a.target=a.srcElement;b(a)};return this},cutOffPath:function(a,b){var … | |
| +f.style.cssText,'" />'];h=$(g.prepVML(j),null,{left:y(i.left)+p(a.offsetX,1),t… | |
| +$(this.renderer.prepVML(["<stroke/>"]),null,null,c))[b]=a||"solid";this[b]=a},… | |
| +this[b]=c[b]=a;c.left=-v(fa(a*Ea)+1)+"px";c.top=v(aa(a*Ea))+"px"},strokeSetter… | |
| +b="top");c.style[b]=a},xSetter:function(a,b,c){this[b]=a;b==="x"?b="left":b===… | |
| +a.appendChild(d.element);this.isVML=!0;this.box=e;this.boxWrapper=d;this.cache… | |
| +clipRect:function(a,b,c,d){var e=this.createElement(),f=da(a);return r(e,{memb… | |
| +a.css(e.getCSS(a))})}})},color:function(a,b,c,d){var e=this,f,g=/^rgba/,h,i,j=… | |
| +ya(a[1]),k=f.get("rgb"),l=f.get("a")):(k=a[1],l=1);s.push(a[0]*100+"% "+k);b?(… | |
| +x+","+z+'" color2="'+J+'" ';u()};d.added?j():d.onAdd=j;j=D}else j=k}else if(g.… | |
| +a.replace('style="','style="display:inline-block;behavior:url(#default#VML);')… | |
| +b,c,d,e){var f=this.createElement("img").attr({src:a});arguments.length>1&&f.a… | |
| +d,c=e.innerR,d=aa(f),i=fa(f),j=aa(g),k=fa(g);if(g-f===0)return["x"];f=["wa",a-… | |
| +arguments)};Z.prototype=w(ta.prototype,ia);Za=Z}ta.prototype.measureSpanWidth=… | |
| +this.axis,b=a.options,c=a.chart,d=a.horiz,e=a.categories,f=a.names,g=this.pos,… | |
| +ea(ka(f)):f});g=d&&{width:t(1,v(d-2*(h.padding||10)))+"px"};if(s(e))e&&e.attr(… | |
| +this.label,b=this.axis;return a?a.getBBox()[b.horiz?"height":"width"]:0},getLa… | |
| +u||g+k>n[l]?n[l]=g+j:m||(c=!1);if(m){l=(n=d.justifyToPlot)?d.pos:0;n=n?l+d.len… | |
| +f.chartWidth)-e.right-e.left:0),y:a?g-e.bottom+e.offset-(e.opposite?e.height:0… | |
| +f=d.chart.renderer,g=d.horiz,h=this.type,i=this.label,j=this.pos,k=e.labels,l=… | |
| +D;if(!h)l.zIndex=1;if(b)l.opacity=0;this.gridLine=l=o?f.path(j).attr(l).add(d.… | |
| +1)?r=!1:!d.isRadial&&!k.step&&!k.rotation&&!b&&c!==0&&(r=this.handleOverflow(a… | |
| +m=a.svgElem,o=[],p,q=e.color,J=e.zIndex,C=e.events,r={},u=b.chart.renderer;b.i… | |
| +o.length&&(a.svgElem=m=u.path(o).attr(r).add(),C))for(p in d=function(b){m.on(… | |
| +!1,{x:o,y:c,width:Ca(b)-o,height:Ca(k)-c});g.show()}else g&&g.hide();return a}… | |
| +minorTickLength:2,minorTickPosition:"outside",startOfWeek:1,startOnTick:!1,tic… | |
| +-1)},style:M.style}},defaultLeftAxisOptions:{labels:{x:-15,y:null},title:{rota… | |
| +this.options,e=d.type;this.labelFormatter=d.labels.formatter||this.defaultLabe… | |
| +{};this.plotLinesAndBands=[];this.alternateBands={};this.len=0;this.minRange=t… | |
| +u)this.reversed=!0;this.removePlotLine=this.removePlotBand=this.removePlotBand… | |
| +e=E.lang.numericSymbols,f=e&&e.length,g,h=a.options.labels.format,a=a.isLog?b:… | |
| +d=c.options.threshold;var e;a.hasVisibleSeries=!0;a.isLog&&d<=0&&(d=null);if(a… | |
| +this.min,j=this.minPixelPadding,e=(this.options.ordinal||this.isLog&&e)&&this.… | |
| +!0)},getPlotLinePath:function(a,b,c,d,e){var f=this.chart,g=this.left,h=this.t… | |
| +a)*a),g=[];if(b===c&&ja(b))return[b];for(b=e;b<=f;){g.push(b);b=ea(b+a);if(b==… | |
| +(b[0]-this.min)%c;b<=this.max;b+=c)d.push(b);return d},adjustForMinRange:funct… | |
| +if(e)d[2]=this.dataMin;b=Ca(d);c=[b+k,p(a.max,b+k)];if(e)c[2]=this.dataMax;c=O… | |
| +0:h/2);g=t(g,j==="on"?0:h);!a.noSharedTooltip&&s(m)&&(e=s(e)?L(e,m):m)}),h=b.o… | |
| +n=d.minPadding,m=d.tickInterval,o=d.minTickInterval,Y=d.tickPixelInterval,D,J=… | |
| +null;b.beforePadding&&b.beforePadding();b.adjustForMinRange();if(!J&&!b.axisPo… | |
| +b.linkedParent.tickInterval:(b.tickInterval=p(m,J?1:(b.max-b.min)*Y/t(b.len,Y)… | |
| +o;if(!h&&!g&&!m)b.tickInterval=nb(b.tickInterval,null,mb(b.tickInterval),p(d.a… | |
| +b.max,d.startOfWeek,b.ordinalPositions,b.closestPointRange,!0):g?b.getLogTickP… | |
| +[this.coll,this.pos,this.len].join("-");if(!this.isLinked&&!this.isDatetimeAxi… | |
| +(e-1)/(a-1);this.max=b[b.length-1]}if(s(d)&&a!==d)this.isDirty=!0}},setScale:f… | |
| +!1;this.getSeriesExtremes();this.setTickPositions();this.oldUserMin=this.userM… | |
| +!0;c&&g.redraw(d)})},zoom:function(a,b){var c=this.dataMin,d=this.dataMax,e=th… | |
| +100*a.plotHeight);c.test(g)&&(g=parseInt(g,10)/100*a.plotHeight+a.plotTop);thi… | |
| +this.max;c>a||a===null?a=c:b<a&&(a=b);return this.translate(a,0,1,0,1)},autoLa… | |
| +!!e;a.showAxis=k=j||p(d.showEmpty,!0);a.staggerLines=a.horiz&&Y.staggerLines;i… | |
| +a.reversed?[].concat(e).reverse():e;v<w;){x=[];y=!1;for(r=0;r<j.length;r++)A=j… | |
| +0,0,o.useHTML).attr({zIndex:7,rotation:o.rotation||0,align:o.textAlign||{low:"… | |
| +l+C*a.offset,g);b[i]=t(b[i],U(d.lineWidth/2)*2)},getLinePath:function(a){var b… | |
| +12),d={low:f+(a?0:d),middle:f+d/2,high:f+(a?d:0)}[e.align],b=(a?c+this.height:… | |
| +!isNaN(a.oldMin),r=a.hasData,t=a.showAxis,v,w=f.labels.overflow,x=a.justifyLab… | |
| +1?0:c+1);if(!h||b>=a.min&&b<=a.max)l[b]||(l[b]=new Ta(a,b)),C&&l[b].isNew&&l[b… | |
| +m],function(a){var b,c,e=[],f=va?va.duration||500:0,g=function(){for(c=e.lengt… | |
| +k.isNew=!1;o&&o.enabled&&a.renderStackTotals();a.isDirty=!1},redraw:function()… | |
| +this.cross&&this.cross.destroy()},drawCrosshair:function(a,b){if(this.crosshai… | |
| +"animate":"attr"]({d:c},e);else{e={"stroke-width":d.width||1,stroke:d.color||"… | |
| +"plotLines")},addPlotBandOrLine:function(a,b){var c=(new K.PlotLineOrBand(this… | |
| +c,d){var e=[],f={},g=E.global.useUTC,h,i=new Da(b-Sa),j=a.unitRange,k=a.count;… | |
| +i.getTime(),l=i[fb](),n=i[Xa](),m=(A.day+(g?Sa:i.getTimezoneOffset()*6E4))%A.d… | |
| +[1,2,5,10,15,30]],["hour",[1,2,3,4,6,8,12]],["day",[1,2]],["week",[1,2]],["mon… | |
| +b,c);else if(a>=0.08)for(var f=U(b),h,i,j,k,l,e=a>0.3?[1,2,4]:a>0.15?[1,2,4,6,… | |
| +a;return g};var Nb=K.Tooltip=function(){this.init.apply(this,arguments)};Nb.pr… | |
| +destroy:function(){if(this.label)this.label=this.label.destroy();clearTimeout(… | |
| +this,c;clearTimeout(this.hideTimer);if(!this.isHidden)c=this.chart.hoverPoints… | |
| +(a.plotLow?(a.plotLow+a.plotHigh)/2:a.plotY)+(!e&&i?i.top-f:0)}),g/=a.length,h… | |
| +c;else if(b)f[a]=d;else return!1},l=function(a,b,c,d){if(d<e||d>b-e)return!1;e… | |
| +d.push(a.options.footerFormat||"");return d.join("")},refresh:function(a,b){va… | |
| +y:a[0].y},h.points=j,this.len=j.length,a=a[0]):h=a.getLabelConfig();i=i.call(h… | |
| +c=this.label,c=(this.options.positioner||this.getPosition).call(this,c.width,c… | |
| +e+"}"));return Ja(c,{point:a,series:b})}};var pa;$a=x.documentElement.ontouchs… | |
| +this.followTouchMove=b.tooltip.followTouchMove;this.setDOMEvents()},normalize:… | |
| +"yAxis"].push({axis:c,value:c.toValue(a[c.horiz?"chartX":"chartY"])})});return… | |
| +c[j].singularTooltips!==!0&&c[j].tooltipPoints.length&&(e=c[j].tooltipPoints[l… | |
| +function(a){if(W[pa])W[pa].pointer.onDocumentMouseMove(a)},N(x,"mousemove",thi… | |
| +null;q(c.axes,function(a){a.hideCrosshair()});this.hoverX=null}},scaleGroups:f… | |
| +drag:function(a){var b=this.chart,c=b.options.chart,d=a.chartX,e=a.chartY,f=th… | |
| +f?1:j,g?1:k,0).attr({fill:c.selectionMarkerFill||"rgba(69,114,167,0.25)",zInde… | |
| +e.x,g=e.attr?e.attr("y"):e.y,h=e.attr?e.attr("width"):e.width,i=e.attr?e.attr(… | |
| +{cursor:b._cursor}),b.cancelClick=this.hasDragged>10,b.mouseIsDown=this.hasDra… | |
| +this.reset()},onContainerMouseLeave:function(){var a=W[pa];if(a)a.pointer.rese… | |
| +-1)return!1;a=a.parentNode}},onTrackerMouseOut:function(a){var b=this.chart.ho… | |
| +a)):(r(a,this.getCoordinates(a)),b.isInsidePlot(a.chartX-d,a.chartY-e)&&I(b,"c… | |
| +N(x,"touchend",a.onDocumentTouchEnd)},destroy:function(){var a;X(this.chart.co… | |
| +b,c,d,e,f,g,h){var i=this.chart,j=a?"x":"y",k=a?"X":"Y",l="chart"+k,n=a?"width… | |
| +"scaleX":"scale"+k]=q;d["translate"+k]=f*m+(v-f*s)},pinch:function(a){var b=th… | |
| +d[1]&&d[1].chartY],q(c.axes,function(a){if(a.zoomEnabled){var b=c.bounds[a.hor… | |
| +this.chart;pa=b.index;a.touches.length===1?(a=this.normalize(a),b.isInsidePlot… | |
| +b.push({pageX:ua[a].pageX,pageY:ua[a].pageY,target:ua[a].target});return b},Ab… | |
| +"onContainerTouchMove","touchmove",function(a){ua[a.pointerId]={pageX:a.pageX,… | |
| +Na(Wa.prototype,"init",function(a,b,c){a.call(this,b,c);(this.hasZoom||this.fo… | |
| +if(b.enabled)c.itemStyle=d,c.itemHiddenStyle=w(d,b.itemHiddenStyle),c.itemMarg… | |
| +a.options.marker,i={fill:h},j;d&&d.css({fill:c,color:c});e&&e.attr({stroke:h})… | |
| +(a[b]=a[b].destroy())});b&&Qa(a.checkbox)},destroy:function(){var a=this.group… | |
| +this.chart.renderer.label(b.text,a-3,a-4,null,null,null,null,null,"legend-titl… | |
| +o=this.itemMarginTop,q=this.initialItemX,r=a.legendItem,s=a.series&&a.series.d… | |
| +r).f+3+o,r.attr("y",this.baseline);s.drawLegendSymbol(this,a);this.setItemEven… | |
| +m;this.lastLineHeight=t(g,this.lastLineHeight);a._legendItemPos=[this.itemX,th… | |
| +l=j.borderWidth,n=j.backgroundColor;a.itemX=a.initialItemX;a.itemY=a.initialIt… | |
| +h=a.lastItemY+a.lastLineHeight+a.titleHeight;h=a.handleOverflow(h);if(l||n){g+… | |
| +this,c=this.chart,d=c.renderer,e=this.options,f=e.y,f=c.spacingBox.height+(e.v… | |
| +e=m.length;if(!e||c-m[e-1]>h&&(o||c)!==m[e-1])m.push(o||c),e++;b===r.length-1&… | |
| +a=f}else if(n)i.attr({height:c.chartHeight}),n.hide(),this.scrollGroup.attr({t… | |
| +i.attr({text:e+"/"+d}),this.down.attr({x:18+this.pager.getBBox().width,fill:e=… | |
| +this.options,c=b.marker,d;d=a.symbolWidth;var e=this.chart.renderer,f=this.leg… | |
| +b){var c=this,d=function(){b._legendItemPos&&a.call(c,b)};d();setTimeout(d)});… | |
| +function(){f.initReflow()});if(e)for(g in e)N(f,g,e[g]);f.xAxis=[];f.yAxis=[];… | |
| +this.maxTicks=null},redraw:function(a){var b=this.axes,c=this.series,d=this.po… | |
| +this.isDirtyLegend=!1;g&&this.getStacks();if(i){if(!this.isResizing)this.maxTi… | |
| +"redraw");m&&this.cloneRenderTo(!0);q(o,function(a){a.call()})},get:function(a… | |
| +c=c.concat(b);q(c,function(b){new na(a,b)});a.adjustTickAmounts()},getSelected… | |
| +b.type+p(b.options.stack,"")})},setTitle:function(a,b,c){var g;var d=this,e=d.… | |
| +e=e.subtitle,g=this.renderer,h=this.spacingBox.width-44;if(c&&(c.css({width:(f… | |
| +p(a,!0)&&this.isDirtyBox&&this.redraw()},getChartSize:function(){var a=this.op… | |
| +c.parentNode===this.renderTo&&this.renderTo.removeChild(c),this.renderToClone=… | |
| +W[c].destroy();F(a,"data-highcharts-chart",this.index);a.innerHTML="";!b.skipC… | |
| +b.forExport?new ta(a,c,d,b.style,!0):new Za(a,c,d,b.style);ga&&this.renderer.c… | |
| +"left"){if(!s(d[3]))this.plotLeft=t(this.plotLeft,c.legendWidth+g+f+a[3])}else… | |
| +s(d[2])||(this.marginBottom+=b[2]);s(d[1])||(this.marginRight+=b[1]);this.setC… | |
| +this,b=function(b){a.reflow(b)};N(G,"resize",b);N(a,"destroy",function(){X(G,"… | |
| +!0;a.setScale()});q(d.series,function(a){a.isDirty=!0});d.isDirtyLegend=!0;d.i… | |
| +l=t(0,v(e-j-this.marginBottom));this.plotSizeX=b?l:k;this.plotSizeY=b?k:l;this… | |
| +this.spacing,b=this.margin;this.plotTop=p(b[0],a[0]);this.marginRight=p(b[1],a… | |
| +p=this.plotTop,q=this.plotWidth,r=this.plotHeight,t=this.plotBox,s=this.clipRe… | |
| +b.image(l,o,p,q,r).add();s?s.animate({width:v.width,height:v.height}):this.cli… | |
| +e--;)(c=H[d[e].type])&&c.prototype[g]&&(f=!0);a[g]=f})},linkSeries:function(){… | |
| +c.style),e=y(d.left)+a.plotLeft,f=y(d.top)+a.plotTop+12;delete d.left;delete d… | |
| +if(!this.seriesGroup)this.seriesGroup=b.g("series-group").attr({zIndex:3}).add… | |
| +u;ab--;a.renderTo.removeAttribute("data-highcharts-chart");X(a);for(e=b.length… | |
| +x.readyState!=="complete"||ga&&!G.canvg?(ga?Mb.push(function(){a.firstRender()… | |
| +"beforeRender");if(K.Pointer)a.pointer=new Wa(a,b);a.render();a.renderer.draw(… | |
| +a=[p(b[0],"50%"),p(b[1],"50%"),a.size||"100%",a.innerSize||0],g=L(e,f),h;retur… | |
| +b){var c=this.series,d=c.options.pointValKey||c.pointValKey,a=Fa.prototype.opt… | |
| +a[f++]}else if(typeof a==="object"){b=a;if(a.dataLabels)c._hasPointLabels=!0;i… | |
| +b,c=6;c--;)b=a[c],this[b]&&(this[b]=this[b].destroy())},getLabelConfig:functio… | |
| +{point:this,series:this.series})},firePointEvent:function(a,b,c){var d=this,e=… | |
| +"yAxis"],colorCounter:0,parallelArrays:["x","y"],init:function(a,b){var c=this… | |
| +q(c.parallelArrays,function(a){c[a+"Data"]=[]});c.setData(b.data,!1);if(c.isCa… | |
| +updateParallelArrays:function(a,b){var c=a.series,d=arguments;q(c.parallelArra… | |
| +e=d.length;if(e)if(this.options.connectNulls){for(c=e;c--;)d[c].y===null&&d.sp… | |
| +d[this.type].tooltip,a.tooltip);e.marker===null&&delete c.marker;return c},get… | |
| +0},drawLegendSymbol:M.drawLineMarker,setData:function(a,b,c,d){var e=this,f=e.… | |
| +0});if(o&&h>o){for(c=0;k===null&&c<h;)k=a[c],c++;if(ja(k)){n=p(i.pointStart,0)… | |
| +f[c].destroy&&f[c].destroy();if(m)m.length=0;if(l)l.minRange=l.userMinRange;e.… | |
| +this.cropData(this.xData,this.yData,m,n),b=e.xData,c=e.yData,e=e.start,f=!0,k=… | |
| +e;i++)if(a[i]>d){g=i+h;break}return{xData:a.slice(f,g),yData:b.slice(f,g),star… | |
| +j))for(n=0;n<c;n++)if(n===h&&!j&&(n+=g),b[n])b[n].destroyElements(),b[n].plotX… | |
| +k;this.dataMin=p(void 0,Oa(e));this.dataMax=p(void 0,Ca(e))},translate:functio… | |
| +"flags");if(b&&this.visible&&q&&q[n])q=q[n],m=q.points[this.index+","+a],o=m[0… | |
| +animate:function(a){var b=this.chart,c=b.renderer,d;d=this.options.animation;v… | |
| +99},d),this.animate=null)},afterAnimate:function(){var a=this.chart,b=this.sha… | |
| +!this.requireSorting||this.activePointCount<0.5*this.xAxis.len/l.radius);if(l.… | |
| +(h>0||j))g.graphic=c.renderer.symbol(i,d-h,e-h,2*h,2*h,o?m:l).attr(a).add(t)}e… | |
| +c.lineColor,o=c.fillColor;i=b.turboThreshold;var p;b.marker?(e.radius=e.radius… | |
| +i.color;if(i.options)for(p in l)s(c[l[p]])&&(k=!0);if(k){c=c||{};k=[];d=c.stat… | |
| +d,e,f=a.data||[],g,h,i;I(a,"destroy");X(a);q(a.axisTypes||[],function(b){if(i=… | |
| +getSegmentPath:function(a){var b=this,c=[],d=b.options.step;q(a,function(e,f){… | |
| +b},drawGraph:function(){var a=this,b=this.options,c=[["graph",b.lineColor||thi… | |
| +this.options,b=this.chart,c=b.renderer,d=a.negativeColor||a.negativeFillColor,… | |
| +(h.animate(b),i.animate(e)):(this.posClip=h=c.clipRect(b),this.negClip=i=c.cli… | |
| +f=this.chart.renderer.g(b).attr({visibility:c,zIndex:d||0.1}).add(e));f[g?"att… | |
| +c=a.plotGroup("group","series",f,g,i);a.markerGroup=a.plotGroup("markerGroup",… | |
| +setTimeout(function(){a.afterAnimate()},e):a.afterAnimate();a.isDirty=a.isDirt… | |
| +render:function(a){var b=this.options,c=b.format,c=c?Ja(c,this):b.formatter.ca… | |
| +f={x:e?f?g:g-c:h,y:e?i-h-b:f?i-g-c:i-g,width:e?c:b,height:e?b:c};if(e=this.lab… | |
| +this.chart,b=a.renderer,c=this.stacks,d,e,f=this.stackTotalGroup;if(!f)this.st… | |
| +i="-"+h,j=this.negStacks,k=this.yAxis,l=k.stacks,n=k.oldStacks,m,o,p,q,r,s;for… | |
| +c[q]=o.cum}if(e==="percent")k.usePercentage=!0;this.stackedYData=c;k.oldStacks… | |
| +e.isDirtyLegend=!0;e.linkSeries();b&&e.redraw(c)}));return d},addAxis:function… | |
| +b.container),b.loadingSpan=$("span",null,e.labelStyle,d),N(b,"redraw",f);b.loa… | |
| +!Ha(a))f.redraw=function(){if(h)a&&a.marker&&a.marker.symbol?f.graphic=h.destr… | |
| +{options:a},e)},remove:function(a,b){var c=this,d=c.series,e=d.points,f=d.char… | |
| +n,m=this.xData;Ra(d,i);c&&q([g,h,this.graphNeg,this.areaNeg],function(a){if(a)… | |
| +(f.shift(),this.updateParallelArrays(d,"shift"),l.shift()));this.isDirtyData=t… | |
| +a=w(e,{animation:!1,index:this.index,pointStart:this.xData[0]},{data:this.opti… | |
| +this.chart,c=this.coll,d=this.series,e=d.length;e--;)d[e]&&d[e].remove(!1);la(… | |
| +h={},i,j,k=this.points,l=this.options.connectNulls,n,m;if(this.options.stackin… | |
| +b=this.segments;this.segments=b},getSegmentPath:function(a){var b=O.prototype.… | |
| +c,"L",b[0].plotX,c)},drawGraph:function(){this.areaPath=[];O.prototype.drawGra… | |
| +getPointSpline:function(a,b,c){var d=b.plotX,e=b.plotY,f=a[c-1],g=a[c+1],h,i,j… | |
| +ia;ca.areaspline=w(ca.area);qa=qa.prototype;ia=ma(ia,{type:"areaspline",closed… | |
| +verticalAlign:null,y:null},stickyTracking:!1,tooltip:{distance:6},threshold:0}… | |
| +!1?i=1:q(a.chart.series,function(b){var c=b.options,e=b.yAxis;if(b.type===a.ty… | |
| +(e?-1:1)}},translate:function(){var a=this,b=a.chart,c=a.options,d=a.borderWid… | |
| +q=c.plotX+k,r=j,s=L(h,d),u;u=t(h,d)-s;Q(u)<g&&g&&(u=g,s=v(Q(s-f)>g?d-g:f-(e.tr… | |
| +f,g;q(a.points,function(h){var i=h.plotY,j=h.graphic;if(i!==u&&!isNaN(i)&&h.y!… | |
| +0.001,a=L(b.pos+b.len,t(b.pos,b.toPixels(c.threshold))),d?e.translateX=a-b.len… | |
| +pointFormat:"x: <b>{point.x}</b><br/>y: <b>{point.y}</b><br/>"},stickyTracking… | |
| +ignoreHiddenPoint:!0,legendType:"point",marker:null,size:null,showInLegend:!1,… | |
| +d=c.chart;b.visible=b.options.visible=a=a===u?!b.visible:a;c.options.data[Ma(b… | |
| +translateY:0};this.graphic.animate(a);this.shadowGroup&&this.shadowGroup.anima… | |
| +getColor:sa,animate:function(a){var b=this,c=b.points,d=b.startAngleRad;if(!a)… | |
| +c=this.points;d=c.length;for(a=0;a<d;a++)e=c[a],b+=f&&!e.visible?0:e.y;this.to… | |
| +V.asin(L((b-a[1])/(a[2]/2+l),1));return a[0]+(c?-1:1)*aa(h)*(a[2]/2+l)};for(n=… | |
| +l,a[1]+g+fa(h)*l,a[0]+f+aa(h)*e,a[1]+g+fa(h)*e,a[0]+f,a[1]+g,l<0?"center":o.ha… | |
| +"select":""]).attr({"stroke-linejoin":"round"}).attr(c).add(a.group).shadow(e,… | |
| +j=a.plotGroup("dataLabelsGroup","data-labels",d.defer?"hidden":"visible",d.zIn… | |
| +p(d.color,d.style.color,a.color,"black");if(h)if(s(i))h.attr({text:i}),t=!1;el… | |
| +O.prototype.alignDataLabel=function(a,b,c,d,e){var f=this.chart,g=f.inverted,h… | |
| +"justify"?this.justifyDataLabel(b,c,g,j,d,e):p(c.crop,!0)&&(a=f.isInsidePlot(g… | |
| +b.verticalAlign="bottom":b.y=g.plotHeight-j,k=!0;if(k)a.placed=!f,a.align(b,nu… | |
| +function(a){a.dataLabel&&a.visible&&A[a.half].push(a)});for(H=2;H--;){var G=[]… | |
| +E=P);if(E<z&&G[z]!==null)E=z;else for(w<K-z+E&&G[z]!==null&&(E=w-K+z);G[E]===n… | |
| +B;if(this.options.size===null)w=u.width,y-w<f?R[3]=t(v(w-y+f),R[3]):y+w>h-f&&(… | |
| +"L",x[4],x[5]],j?(j.animate({d:k}),j.attr("visibility",I)):b.connector=j=a.cha… | |
| +function(a){var b=this.center,c=this.options,d=c.center,e=c=c.minSize||80,f;d[… | |
| +h=a.dlBox||a.shapeArgs,i=a.below||a.plotY>p(this.translatedThreshold,f.plotSiz… | |
| +this,b=a.chart,c=b.pointer,d=a.options.cursor,e=d&&{cursor:d},f=function(c){va… | |
| +f)}),a._hasTracking=!0},drawTrackerGraph:function(){var a=this,b=a.options,c=b… | |
| +k[n],d.push("M",e.plotX-i,e.plotY,"L",e.plotX+i,e.plotY);j?j.attr({d:d}):(a.tr… | |
| +T.drawTrackerPoint;if(H.scatter)qa.prototype.drawTracker=T.drawTrackerPoint;r(… | |
| +$("input",{type:"checkbox",checked:a.selected,defaultChecked:a.selected},this.… | |
| +d,e&&e.hover).attr({align:c.position.align,title:b.resetZoomTitle}).add().alig… | |
| +da(e))this.resetZoomButton=e.destroy();b&&this.redraw(p(this.options.chart.ani… | |
| +i,!1,!1,{trigger:"pan"}),e=!0);c[b?"mouseDownX":"mouseDownY"]=d});e&&c.redraw(… | |
| +a.firePointEvent("unselect")})})},onMouseOver:function(a){var b=this.series,c=… | |
| +this.options).events,b;this.events=a;for(b in a)N(this,b,a[b]);this.hasImporte… | |
| +l.states[a].enabled===!1)){if(this.graphic)g=g&&this.graphic.symbolName&&o.r,t… | |
| +m.attr(r({fill:ya(this.color||e.color).setOpacity(c.opacity).get()},c.attribut… | |
| +I(this,"mouseOver");this.setState("hover");a.hoverSeries=this},onMouseOut:func… | |
| +0)),c&&!c.dashstyle&&(a={"stroke-width":b},c.attr(a),d&&d.attr(a)))},setVisibl… | |
| +function(b){b.setVisible(a,!1)});if(g)d.isDirtyBox=!0;b!==!1&&d.redraw();I(c,f… | |
| +c<=f.max){h=b[i+1];c=d===u?0:d+1;for(d=b[i+1]?L(t(0,U((e.clientX+(h?h.wrappedC… | |
| +charts:W,dateFormat:cb,format:Ja,pathAnim:vb,getOptions:function(){return E},h… | |
| diff --git a/app/assets/stylesheets/application.css.scss.erb b/app/assets/style… | |
| @@ -6,6 +6,7 @@ | |
| *= require bootstrap-lightbox | |
| *= require jquery.dataTables | |
| *= require font-awesome | |
| + *= require nv.d3 | |
| */ | |
| @import "bootstrap-sprockets"; | |
| @@ -221,7 +222,7 @@ a .project-title, a:visited .project-title { | |
| font-size: 16px; | |
| font-weight: bold; | |
| color: #29383f; | |
| - width: 55px; | |
| + width: 100px; | |
| margin: auto auto; | |
| text-align: center; | |
| @@ -471,6 +472,7 @@ background-image: linear-gradient(to bottom, #EA5709 0%, #0… | |
| margin-top: 20px; | |
| border: 1px solid #4A1C04; | |
| margin-bottom: 30px; | |
| + border-radius: 15px; | |
| } | |
| .login-label { | |
| @@ -482,8 +484,35 @@ background-image: linear-gradient(to bottom, #EA5709 0%, #… | |
| float: left; | |
| } | |
| +div.login-label h3 { | |
| + text-align: left; | |
| + font-size: 12px; | |
| + font-weight: bold; | |
| +} | |
| + | |
| +div.login-label input { | |
| + float: right; | |
| +} | |
| + | |
| +#user_session_login { | |
| + width: 300px; | |
| +} | |
| + | |
| +#user_session_password { | |
| + width: 300px; | |
| +} | |
| + | |
| .btn-login { | |
| - margin-left: 130px; | |
| + margin-left: 110px; | |
| + margin-top: 20px; | |
| +} | |
| + | |
| +.alert { | |
| + background: #FFFEDE; | |
| + border: 1px solid red; | |
| + color: red; | |
| + font-weight: bold; | |
| + text-align: center; | |
| } | |
| .nav { | |
| diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/applica… | |
| @@ -12,8 +12,10 @@ | |
| <![endif]--> | |
| <%= javascript_include_tag "application" %> | |
| + | |
| <%= yield :view_javascript %> | |
| <%= stylesheet_link_tag "application", :media => "all" %> | |
| + | |
| <%= yield :view_stylesheets %> | |
| <%= favicon_link_tag '/assets/favicon.ico', :rel => 'shortcut icon' %> | |
| <%= javascript_tag do %> | |
| diff --git a/lib/warvox/jobs/analysis.rb b/lib/warvox/jobs/analysis.rb | |
| @@ -142,7 +142,7 @@ class Analysis < Base | |
| def update_progress(pct) | |
| ::ActiveRecord::Base.connection_pool.with_connection { | |
| - Job.update_all({ :progress => pct }, { :id => @job_id … | |
| + Job.where(id: @job_id).update_all(progress: pct) | |
| } | |
| end | |
| diff --git a/lib/warvox/jobs/dialer.rb b/lib/warvox/jobs/dialer.rb | |
| @@ -211,7 +211,7 @@ class Dialer < Base | |
| def update_progress(pct) | |
| ::ActiveRecord::Base.connection_pool.with_connection { | |
| - Job.update_all({ :progress => pct }, { :id => @job_id … | |
| + Job.where(id: @job_id).update_all(progress: pct) | |
| } | |
| end | |