summaryrefslogtreecommitdiffstats
path: root/web/gui/dashboard/static/js/main.8aa70c75.chunk.js
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--web/gui/dashboard/static/js/main.8aa70c75.chunk.js3
-rw-r--r--web/gui/dashboard/static/js/main.8aa70c75.chunk.js.LICENSE8
-rw-r--r--web/gui/dashboard/static/js/main.8aa70c75.chunk.js.map1
3 files changed, 12 insertions, 0 deletions
diff --git a/web/gui/dashboard/static/js/main.8aa70c75.chunk.js b/web/gui/dashboard/static/js/main.8aa70c75.chunk.js
new file mode 100644
index 000000000..1173c3d83
--- /dev/null
+++ b/web/gui/dashboard/static/js/main.8aa70c75.chunk.js
@@ -0,0 +1,3 @@
+/*! For license information please see main.8aa70c75.chunk.js.LICENSE */
+(this["webpackJsonp@netdata/dashboard"]=this["webpackJsonp@netdata/dashboard"]||[]).push([[0],{10:function(e,t,n){"use strict";n.d(t,"h",(function(){return i})),n.d(t,"o",(function(){return s})),n.d(t,"n",(function(){return l})),n.d(t,"s",(function(){return c})),n.d(t,"r",(function(){return d})),n.d(t,"j",(function(){return u})),n.d(t,"p",(function(){return h})),n.d(t,"i",(function(){return p})),n.d(t,"q",(function(){return f})),n.d(t,"b",(function(){return g})),n.d(t,"d",(function(){return m})),n.d(t,"z",(function(){return b})),n.d(t,"f",(function(){return v})),n.d(t,"y",(function(){return _})),n.d(t,"a",(function(){return y})),n.d(t,"w",(function(){return x})),n.d(t,"e",(function(){return O})),n.d(t,"x",(function(){return w})),n.d(t,"t",(function(){return k})),n.d(t,"k",(function(){return E})),n.d(t,"g",(function(){return C})),n.d(t,"c",(function(){return S})),n.d(t,"u",(function(){return j})),n.d(t,"v",(function(){return D})),n.d(t,"m",(function(){return A})),n.d(t,"l",(function(){return T}));var a=n(22),r=n(93),o=n(24),i=Object(a.createAction)("".concat(o.e,"/globalRequestCommonColors")),s=Object(a.createAction)("".concat(o.e,"/setCommonMin")),l=Object(a.createAction)("".concat(o.e,"/setCommonMax")),c=Object(a.createAction)("".concat(o.e,"/setGlobalSelection")),d=Object(a.createAction)("".concat(o.e,"/setGlobalPanAndZoom")),u=Object(a.createAction)("".concat(o.e,"/resetGlobalPanAndZoomAction")),h=Object(a.createAction)("".concat(o.e,"/setDefaultAfterAction")),p=Object(a.createAction)("".concat(o.e,"/resetDefaultAfterAction")),f=Object(a.createAction)("".concat(o.e,"/setGlobalChartUnderlay")),g=Object(a.createAction)("".concat(o.e,"/centerAroundHighlightAction")),m=Object(a.createAction)("".concat(o.e,"/clearHighlightAction")),b=Object(a.createAction)("".concat(o.e,"/windowFocusChangeAction")),v=Object(r.a)("".concat(o.e,"/fetchHelloAction")),_=Object(a.createAction)("".concat(o.e,"/updatePersonUrlsAction")),y=Object(a.createAction)("".concat(o.e,"/accessRegistrySuccessAction")),x=Object(a.createAction)("".concat(o.e,"/startAlarmsAction")),O=Object(r.a)("".concat(o.e,"/fetchAllAlarmsAction")),w=Object(a.createAction)("".concat(o.e,"/updateActiveAlarmsAction")),k=Object(a.createAction)("".concat(o.e,"/setOptionAction")),E=Object(a.createAction)("".concat(o.e,"/resetOptions")),C=Object(a.createAction)("".concat(o.e,"/loadSnapshotAction")),S=Object(a.createAction)("".concat(o.e,"/chartsMetadataRequestSuccess")),j=Object(a.createAction)("".concat(o.e,"/setSpacePanelStatusAction")),D=Object(a.createAction)("".concat(o.e,"/setSpacePanelStatusAction")),A=Object(a.createAction)("".concat(o.e,"/setAlarmAction")),T=Object(a.createAction)("".concat(o.e,"/resetRegistry"))},105:function(e,t,n){"use strict";n.d(t,"a",(function(){return l})),n.d(t,"c",(function(){return d})),n.d(t,"e",(function(){return u})),n.d(t,"d",(function(){return h})),n.d(t,"b",(function(){return p}));var a,r=n(17),o=n(225),i=n(559),s=n(114),l="sync_pan_and_zoom",c=(a={},Object(r.a)(a,"stop_updates_when_focus_is_lost",!0),Object(r.a)(a,"eliminate_zero_dimensions",!0),Object(r.a)(a,"destroy_on_hide",!1),Object(r.a)(a,"async_on_scroll",!1),Object(r.a)(a,"parallel_refresher",!0),Object(r.a)(a,"concurrent_refreshes",!0),Object(r.a)(a,"sync_selection",!0),Object(r.a)(a,l,!0),Object(r.a)(a,"legend_right",!1),Object(r.a)(a,"theme","slate"),Object(r.a)(a,"show_help",Boolean(window.netdataShowHelp)&&!window.netdataNoBootstrap),Object(r.a)(a,"pan_and_zoom_data_padding",!0),Object(r.a)(a,"smooth_plot",!0),Object(r.a)(a,"units","auto"),Object(r.a)(a,"temperature","celsius"),Object(r.a)(a,"seconds_as_time",!0),Object(r.a)(a,"timezone","default"),Object(r.a)(a,"user_set_server_timezone","default"),a),d=function(){var e=Object.keys(localStorage).filter((function(e){return e.startsWith("options.")||"netdataTheme"===e})).map((function(e){return Object(r.a)({},function(e){return e.replace(/^options\./,"").replace("netdataTheme","theme")}(e),function(e){var t,n=localStorage.getItem(e);if(null===n||"undefined"===n)return localStorage.removeItem(e),null;try{t=JSON.parse(n)}catch(a){return"netdataTheme"===e&&n?n:(console.log('localStorage: failed to read "'.concat(e,'", using default')),localStorage.removeItem(e),null)}return t}(e))})).filter((function(e){return null!==Object.values(e)[0]})),t=Object(o.a)(e);return Object(i.a)(c,t)},u=d(),h=u.legend_right,p=function(){Object.keys(localStorage).forEach((function(e){(e.startsWith(s.a)||e.startsWith("options."))&&localStorage.removeItem(e)}))}},106:function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var a=window.location.hash.split(";").includes("help=true"),r=function(){if(a)return!1;var e=document.location.hostname;return e.endsWith(".my-netdata.io")||e.endsWith(".mynetdata.io")||e.endsWith(".netdata.rocks")||e.endsWith(".netdata.ai")||e.endsWith(".netdata.live")||e.endsWith(".firehol.org")||e.endsWith(".netdata.online")||e.endsWith(".netdata.cloud")}()},107:function(e,t,n){"use strict";n.d(t,"b",(function(){return o})),n.d(t,"a",(function(){return c}));var a,r,o=function(e){return e>-10&&e<10?"0".concat(e.toString()):e.toString()},i={"packets/s":{pps:1,Kpps:1e3,Mpps:1e6},pps:{pps:1,Kpps:1e3,Mpps:1e6},"kilobits/s":{"bits/s":.001,"kilobits/s":1,"megabits/s":1e3,"gigabits/s":1e6,"terabits/s":1e9},"bytes/s":{"bytes/s":1,"kilobytes/s":1024,"megabytes/s":1048576,"gigabytes/s":1073741824,"terabytes/s":1099511627776},"kilobytes/s":{"bytes/s":1/1024,"kilobytes/s":1,"megabytes/s":1024,"gigabytes/s":1048576,"terabytes/s":1073741824},"B/s":{"B/s":1,"KiB/s":1024,"MiB/s":1048576,"GiB/s":1073741824,"TiB/s":1099511627776},"KB/s":{"B/s":1/1024,"KB/s":1,"MB/s":1024,"GB/s":1048576,"TB/s":1073741824},"KiB/s":{"B/s":1/1024,"KiB/s":1,"MiB/s":1024,"GiB/s":1048576,"TiB/s":1073741824},bytes:{bytes:1,kilobytes:1024,megabytes:1048576,gigabytes:1073741824,terabytes:1099511627776},Hz:{Hz:1,kHz:Math.pow(10,3),MHz:Math.pow(10,6),GHz:Math.pow(10,9),THz:Math.pow(10,12),PHz:Math.pow(10,15),EHz:Math.pow(10,18),ZHz:Math.pow(10,21)},B:{B:1,KiB:1024,MiB:1048576,GiB:1073741824,TiB:1099511627776,PiB:0x4000000000000},KB:{B:1/1024,KB:1,MB:1024,GB:1048576,TB:1073741824},KiB:{B:1/1024,KiB:1,MiB:1024,GiB:1048576,TiB:1073741824},MB:{B:1/1048576,KB:1/1024,MB:1,GB:1024,TB:1048576,PB:1073741824},MiB:{B:1/1048576,KiB:1/1024,MiB:1,GiB:1024,TiB:1048576,PiB:1073741824},GB:{B:1/1073741824,KB:1/1048576,MB:1/1024,GB:1,TB:1024,PB:1048576,EB:1073741824},GiB:{B:1/1073741824,KiB:1/1048576,MiB:1/1024,GiB:1,TiB:1024,PiB:1048576,EiB:1073741824}},s={Celsius:{Fahrenheit:{check:function(){return"fahrenheit"===a},convert:function(e){return 9*e/5+32}}},celsius:{fahrenheit:{check:function(){return"fahrenheit"===a},convert:function(e){return 9*e/5+32}}},seconds:{time:{check:function(){return r},convert:function(e){return c.seconds2time(e)}}},milliseconds:{milliseconds:{check:function(e){return r&&e<1e3},convert:function(e){var t=Math.round(10*e),n=Math.floor(t/10);return t-=10*n,"".concat(n.toString(),".").concat(t.toString())}},seconds:{check:function(e){return r&&e>=1e3&&e<6e4},convert:function(e){var t=Math.round(e),n=Math.floor(t/1e3);return t-=1e3*n,t=Math.round(t/10),"".concat(n.toString(),".").concat(o(t))}},"M:SS.ms":{check:function(e){return r&&e>=6e4},convert:function(e){var t=Math.round(e),n=Math.floor(t/6e4);t-=6e4*n;var a=Math.floor(t/1e3);return t-=1e3*a,t=Math.round(t/10),"".concat(n.toString(),":").concat(o(a),".").concat(o(t))}}}},l=function(e){return e},c={keys:{},latest:{},globalReset:function(){this.keys={},this.latest={}},seconds2time:function(e){var t=Math.abs(e),n=Math.floor(t/86400);t-=86400*n;var a=Math.floor(t/3600);t-=3600*a;var r=Math.floor(t/60);t-=60*r,t=Math.round(t);return"".concat((n>0?"".concat(n.toString(),"d:"):"").toString()+o(a),":").concat(o(r),":").concat(o(t)).concat("")},get:function(e,t,n,o,c,d,u,h,p){if("undefined"===typeof o&&(o="undefined"),a=h,r=p,"undefined"===typeof i[o]&&"undefined"===typeof s[o])return function(e){return e};if(void 0===c||null===c||"original"===c||c===o)return u(o),l;var f,g=null,m=0;if("undefined"!==typeof i[o]){if("auto"===c){(t=Math.abs(t))>(n=Math.abs(n))&&(n=t);var b=i[o];if(Object.keys(b).forEach((function(e){var t=b[e];t<=n&&t>m&&(g=e,m=t)})),null===g||m<=0)return u(o),l;if("string"===typeof d){var v="".concat(d,"-").concat(o),_=this.keys[v];"undefined"===typeof _&&(this.keys[v]={},_=this.keys[v]),_[e]={units:g,divider:m};var y=_[e];Object.keys(_).forEach((function(e){_[e].divider>y.divider&&(y=_[e])}));var x={units:y.units,divider:y.divider};return this.latest[v]=x,m=x.divider,u(g=x.units),function(e){return m!==x.divider&&(m=x.divider,u(g=x.units)),e/m}}return u(g),function(e){return e/m}}return"undefined"!==typeof i[o][c]?(m=i[o][c],u(c),function(e){return e/m}):(console.log("Units conversion from ".concat(o.toString()," to ").concat(c.toString(),"\n is not supported.")),u(o),l)}return"undefined"!==typeof s[o]?"auto"===c?(Object.keys(s[o]).forEach((function(e){f||s[o][e].check(n)&&(u(e),f=s[o][e].convert)})),f||(u(o),l)):"undefined"!==typeof s[o][c]?(u(c),s[o][c].convert):(console.log("Units conversion from ".concat(o.toString()," to ").concat(c.toString(),"\n is not supported.")),u(o),l):(console.log("Unmatched unit conversion method for units ".concat(o.toString())),u(o),l)}}},108:function(e,t,n){"use strict";var a=n(0),r=n.n(a),o=n(26),i=n.n(o),s=n(9),l=n(11),c=n(177),d=n(43),u=(n(362),a.forwardRef((function(e,t){var n=e.children,r=e.className,o=Object(d.a)(e,["children","className"]);return a.createElement("button",Object.assign({},o,{type:"button",className:i()("netdata-reset-button",r),ref:t}),n)})));n.d(t,"a",(function(){return h}));var h=function(e){var t=e.className,n=e.iconType,o=e.onClick,d=e.onDoubleClick,h=e.onMouseDown,p=e.onTouchStart,f=e.popoverContent,g=e.popoverTitle,m=Object(a.useRef)(null),b=Object(s.b)(l.z);return Object(a.useEffect)((function(){m.current&&b&&window.$(m.current).popover({container:"body",animation:!1,html:!0,trigger:"hover",placement:"bottom",delay:{show:window.NETDATA.options.current.show_help_delay_show_ms,hide:window.NETDATA.options.current.show_help_delay_hide_ms},title:g,content:f})}),[]),r.a.createElement(u,{className:i()(t),onClick:o,onDoubleClick:d,onMouseDown:h,onTouchStart:p,ref:m},r.a.createElement(c.a,{iconType:n}))}},11:function(e,t,n){"use strict";n.d(t,"a",(function(){return d})),n.d(t,"h",(function(){return h})),n.d(t,"g",(function(){return p})),n.d(t,"n",(function(){return f})),n.d(t,"o",(function(){return g})),n.d(t,"m",(function(){return m})),n.d(t,"i",(function(){return b})),n.d(t,"l",(function(){return v})),n.d(t,"r",(function(){return _})),n.d(t,"C",(function(){return y})),n.d(t,"w",(function(){return x})),n.d(t,"f",(function(){return O})),n.d(t,"A",(function(){return w})),n.d(t,"u",(function(){return k})),n.d(t,"t",(function(){return E})),n.d(t,"p",(function(){return C})),n.d(t,"k",(function(){return S})),n.d(t,"q",(function(){return j})),n.d(t,"c",(function(){return D})),n.d(t,"d",(function(){return A})),n.d(t,"D",(function(){return T})),n.d(t,"E",(function(){return M})),n.d(t,"b",(function(){return L})),n.d(t,"j",(function(){return I})),n.d(t,"F",(function(){return R})),n.d(t,"y",(function(){return N})),n.d(t,"s",(function(){return F})),n.d(t,"H",(function(){return B})),n.d(t,"G",(function(){return H})),n.d(t,"J",(function(){return z})),n.d(t,"z",(function(){return U})),n.d(t,"v",(function(){return W})),n.d(t,"B",(function(){return G})),n.d(t,"L",(function(){return V})),n.d(t,"I",(function(){return Y})),n.d(t,"x",(function(){return X})),n.d(t,"K",(function(){return Z})),n.d(t,"e",(function(){return K}));var a=n(50),r=n(216),o=n(18),i=n(28),s=n(31),l=n(171),c=n(24),d=function(e){return function(t){var n=Object(l.a)(e),a=t[c.e].commonColorsKeys[n];return a&&a.assigned}},u=function(e){return e.global},h=Object(o.a)(u,(function(e,t){return t}),(function(e,t){return e.commonMin[t]})),p=Object(o.a)(u,(function(e,t){return t}),(function(e,t){return e.commonMax[t]})),f=Object(o.a)(u,Object(a.a)("hoveredX")),g=Object(o.a)(u,Object(a.a)("currentSelectionMasterId")),m=Object(o.a)(u,Object(a.a)("globalPanAndZoom")),b=Object(o.a)(u,Object(a.a)("defaultAfter")),v=Object(o.a)(u,Object(a.a)("globalChartUnderlay")),_=Object(o.a)(u,Object(a.a)("hasWindowFocus")),y=Object(o.a)(u,Object(a.a)("snapshot")),x=Object(o.a)(u,Object(a.a)("registry")),O=Object(o.a)(x,Object(a.a)("cloudBaseURL")),w=function(e){return Object(o.a)(x,O,(function(t,n){var a=encodeURIComponent(t.hostname),r=encodeURIComponent(Object(s.a)(window.location.origin+window.location.pathname));return"".concat(n,"/").concat(e?"sign-in":"sign-up","?id=").concat(t.machineGuid,"&name=").concat(a,"&origin=").concat(r).concat(i.g)}))},k=(Object(o.a)(x,Object(a.a)("isFetchingHello")),Object(o.a)(x,(function(e){var t=e.registryServer;return t&&"https://registry.my-netdata.io"!==t}))),E=Object(o.a)(x,(function(e){return e.isCloudEnabled&&!e.isHelloCallError})),C=Object(o.a)(x,Object(a.a)("hasFetchedInfo")),S=Object(o.a)(x,Object(a.a)("fullInfoPayload")),j=Object(o.a)(u,Object(r.a)(["alarms","hasStartedAlarms"])),D=Object(o.a)(u,(function(e){return e.alarms.activeAlarms})),A=Object(o.a)(u,(function(e){return e.alarm})),T=Object(o.a)(u,Object(a.a)("spacePanelIsActive")),M=Object(o.a)(u,Object(a.a)("spacePanelTransitionEndIsActive")),P=Object(o.a)(u,(function(e){return e.options})),L=function(e){return Object(o.a)(P,(function(t){return t[e]}))},I=L("destroy_on_hide"),R=L("stop_updates_when_focus_is_lost"),N=L("eliminate_zero_dimensions"),F=L("async_on_scroll"),B=(L("parallel_refresher"),L("concurrent_refreshes"),L("sync_selection")),H=L("sync_pan_and_zoom"),z=L("theme"),U=L("show_help"),W=L("pan_and_zoom_data_padding"),G=L("smooth_plot"),V=L("units"),Y=L("temperature"),X=L("seconds_as_time"),Z=L("timezone"),$=(L("user_set_server_timezone"),Object(o.a)(u,(function(e){return e.chartsMetadata.data}))),K=Object(o.a)($,(function(e,t){return t.chartId}),(function(e,t){return null===e||void 0===e?void 0:e.charts[t]}))},114:function(e,t,n){"use strict";n.d(t,"b",(function(){return d})),n.d(t,"a",(function(){return u})),n.d(t,"c",(function(){return h}));var a=n(6),r=n(0),o=n.n(r),i=n(108),s=n(15),l=n(57),c=n(9),d="chart_heights.",u="chart_height.",h=function(e){var t=e.chartContainerElement,n=e.chartUuid,d=e.heightId,h=e.isLegendOnBottom,p=Object(r.useState)((function(){return t.clientHeight})),f=Object(a.a)(p,2),g=f[0],m=f[1],b=Object(c.a)();Object(r.useEffect)((function(){g>=70&&b(Object(s.i)({id:n,resizeHeight:g}))}),[g,n,d,b]);var v=Object(r.useCallback)((function(e){e.preventDefault();var n=t.clientHeight,a="touchstart"===e.type?e.touches[0].clientY:e.clientY,r=function(e){var r=n+e-a;if(t.style.height="".concat(r.toString(),"px"),m(r),d){var o=h?r-l.a:r;localStorage.setItem("".concat(u).concat(d),"".concat(o))}},o=function(e){return r(e.clientY)},i=function(e){return r(e.touches[0].clientY)};"touchstart"===e.type?(document.addEventListener("touchmove",i),document.addEventListener("touchend",(function e(){document.removeEventListener("touchmove",i),document.removeEventListener("touchend",e)}))):(document.addEventListener("mousemove",o),document.addEventListener("mouseup",(function e(){document.removeEventListener("mousemove",o),document.removeEventListener("mouseup",e)})))}),[t.clientHeight,t.style.height,d,h]);return o.a.createElement(i.a,{className:"netdata-legend-resize-handler",onDoubleClick:function(e){e.preventDefault(),e.stopPropagation()},onMouseDown:v,onTouchStart:v,iconType:"resize",popoverTitle:"Chart Resize",popoverContent:"Drag this point with your mouse or your finger (on touch devices), to resize the chart vertically. You can also <b>double click it</b> or <b>double tap it</b> to reset between 2 states: the default and the one that fits all the values.<br/><small>Help can be disabled from the settings.</small>"})}},146:function(e,t,n){"use strict";var a=n(28);n.d(t,"a",(function(){return a.c}))},148:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var a=function(e){return e.replace(/ /g,"_").replace(/:/g,"_").replace(/\(/g,"_").replace(/\)/g,"_").replace(/\./g,"_").replace(/\//g,"_")}},15:function(e,t,n){"use strict";n.d(t,"c",(function(){return i})),n.d(t,"d",(function(){return s})),n.d(t,"e",(function(){return l})),n.d(t,"j",(function(){return c})),n.d(t,"b",(function(){return d})),n.d(t,"i",(function(){return u})),n.d(t,"h",(function(){return h})),n.d(t,"g",(function(){return p})),n.d(t,"a",(function(){return f})),n.d(t,"f",(function(){return g}));var a=n(22),r=n(93),o=n(45),i=(Object(a.createAction)("".concat(o.c,"/updateChartData")),Object(a.createAction)("".concat(o.c,"/updateChartMetadata")),Object(r.a)("".concat(o.c,"/fetchDataAction"))),s=Object(a.createAction)("".concat(o.c,"/fetchDataCancelAction")),l=Object(r.a)("".concat(o.c,"/fetchDataForSnapshotAction")),c=Object(r.a)("".concat(o.c,"/snapshotExportResetAction")),d=Object(r.a)("".concat(o.c,"/fetchChartAction")),u=Object(a.createAction)("".concat(o.c,"/setResizeHeight")),h=Object(a.createAction)("".concat(o.c,"/setChartPanAndZoom")),p=Object(a.createAction)("".concat(o.c,"/resetChartPanAndZoomAction")),f=Object(a.createAction)("".concat(o.c,"/clearChartStateAction")),g=Object(r.a)("".concat(o.c,"/fetchInfoAction"))},171:function(e,t,n){"use strict";n.d(t,"b",(function(){return b})),n.d(t,"a",(function(){return v}));var a=n(7),r=n(17),o=n(38),i=n(226),s=n(560),l=n(225),c=n(22),d=n(28),u=n(81),h=n(15),p=n(10),f=n(105),g=n(24),m={commonColorsKeys:{},commonMin:{},commonMax:{},currentSelectionMasterId:null,globalPanAndZoom:null,defaultAfter:u.b?Object(d.d)():-900,globalChartUnderlay:null,hoveredX:null,hasWindowFocus:document.hasFocus(),spacePanelIsActive:!1,spacePanelTransitionEndIsActive:!1,registry:{cloudBaseURL:null,hasFetchedInfo:!1,hasFetchedHello:!1,isHelloCallError:null,hostname:"unknown",isCloudEnabled:null,isCloudAvailable:null,isAgentClaimed:null,isACLKAvailable:null,hasStartedInfo:!1,isFetchingHello:!1,fullInfoPayload:null,machineGuid:null,personGuid:null,registryMachines:null,registryMachinesArray:null,registryServer:null},snapshot:null,alarms:{activeAlarms:null,hasStartedAlarms:!1},alarm:null,chartsMetadata:{isFetching:!1,isFetchingError:!1,data:null},options:f.e},b=Object(c.createReducer)({},m),v=function(e){var t=e.colorsAttribute,n=e.commonColorsAttribute,a=e.chartUuid,r=e.chartContext,o="string"===typeof t&&t.length>0;return n||(o?a:r)},_=function(e){return"ONLY"===Object(i.a)(e)},y=function(e,t){var n,a=t?(n=e.split(" "),_(n)?Object(s.a)(n):n):[],r=!t||!_(e.split(" "));return{assigned:{},available:[].concat(Object(o.a)(a),Object(o.a)(r||0===a.length?window.NETDATA.themes.current.colors:[])),custom:a}};b.on(p.h,(function(e,t){var n=t.chartContext,o=t.chartUuid,i=t.colorsAttribute,s=t.commonColorsAttribute,c=t.dimensionNames,d=v({colorsAttribute:i,commonColorsAttribute:s,chartUuid:o,chartContext:n}),u="string"===typeof i&&i.length>0,h=e.commonColorsKeys[d]||y(i,u),p=Object.keys(h.assigned).length,f=Object(l.a)(c.filter((function(e){return!h.assigned[e]})).map((function(e,t){return Object(r.a)({},e,h.available[(t+p)%h.available.length])}))),g=Object(a.a)({},h.assigned,{},f);return Object(a.a)({},e,{commonColorsKeys:Object(a.a)({},e.commonColorsKeys,Object(r.a)({},d,Object(a.a)({},h,{assigned:g})))})})),b.on(p.o,(function(e,t){var n,i=t.chartUuid,s=t.commonMinKey,l=t.value,c=Object(a.a)({},null===(n=e.commonMin[s])||void 0===n?void 0:n.charts,Object(r.a)({},i,l)),d=Math.min.apply(Math,Object(o.a)(Object.values(c)));return Object(a.a)({},e,{commonMin:Object(a.a)({},e.commonMin,Object(r.a)({},s,{charts:c,currentExtreme:d}))})})),b.on(p.n,(function(e,t){var n,i=t.chartUuid,s=t.commonMaxKey,l=t.value,c=Object(a.a)({},null===(n=e.commonMax[s])||void 0===n?void 0:n.charts,Object(r.a)({},i,l)),d=Math.max.apply(Math,Object(o.a)(Object.values(c)));return Object(a.a)({},e,{commonMax:Object(a.a)({},e.commonMax,Object(r.a)({},s,{charts:c,currentExtreme:d}))})})),b.on(p.u,(function(e,t){var n=t.isActive;return Object(a.a)({},e,{spacePanelIsActive:n})})),b.on(p.v,(function(e,t){var n=t.isActive;return Object(a.a)({},e,{spacePanelTransitionEndIsActive:n})})),b.on(p.s,(function(e,t){var n=t.chartUuid,r=t.hoveredX;return Object(a.a)({},e,{hoveredX:r,currentSelectionMasterId:n})})),b.on(p.r,(function(e,t){return Object(a.a)({},e,{globalPanAndZoom:t})})),b.on(p.j,(function(e){return Object(a.a)({},e,{globalPanAndZoom:m.globalPanAndZoom,hoveredX:m.hoveredX})})),b.on(p.p,(function(e,t){var n=t.after;return Object(a.a)({},e,{defaultAfter:n})})),b.on(p.i,(function(e){return Object(a.a)({},e,{defaultAfter:m.defaultAfter})})),b.on(p.q,(function(e,t){var n=t.after,r=t.before,o=t.masterID;return Object(a.a)({},e,{globalChartUnderlay:{after:n,before:r,masterID:o}})})),b.on(p.b,(function(e){if(!e.globalChartUnderlay)return console.warn("Cannot center around empty selection"),e;var t=e.globalChartUnderlay,n=t.after,r=t.before,o=(r-n)/2;return Object(a.a)({},e,{globalPanAndZoom:{after:n-o,before:r+o}})})),b.on(p.d,(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.resetPanAndZoom,r=void 0===n||n;return Object(a.a)({},e,{globalChartUnderlay:m.globalChartUnderlay},r?{globalPanAndZoom:m.globalPanAndZoom}:{})})),b.on(p.z,(function(e,t){var n=t.hasWindowFocus,r=document.hasFocus();return Object(a.a)({},e,{hasWindowFocus:r||n})})),b.on(p.f.request,(function(e){return Object(a.a)({},e,{registry:Object(a.a)({},e.registry,{isFetchingHello:!0})})})),b.on(p.f.success,(function(e,t){var n=t.cloudBaseURL,r=t.hostname,o=t.machineGuid;return Object(a.a)({},e,{registry:Object(a.a)({},e.registry,{cloudBaseURL:n,isFetchingHello:!1,hasFetchedHello:!0,hostname:r,machineGuid:o})})})),b.on(p.f.failure,(function(e){return Object(a.a)({},e,{registry:Object(a.a)({},e.registry,{cloudBaseURL:g.a,isFetchingHello:!1,isHelloCallError:!0})})})),b.on(p.a,(function(e,t){var n=t.registryServer;return Object(a.a)({},e,{registry:Object(a.a)({},e.registry,{registryServer:n})})})),b.on(p.l,(function(e){return Object(a.a)({},e,{registry:Object(a.a)({},e.registry,{hasFetchedHello:m.registry.hasFetchedHello})})})),b.on(h.f,(function(e){return Object(a.a)({},e,{registry:Object(a.a)({},e.registry,{hasStartedInfo:!0})})})),b.on(h.f.success,(function(e,t){var n=t.isCloudAvailable,r=t.isCloudEnabled,o=t.isAgentClaimed,i=t.isACLKAvailable,s=t.fullInfoPayload;return Object(a.a)({},e,{registry:Object(a.a)({},e.registry,{hasFetchedInfo:!0,isCloudAvailable:n,isCloudEnabled:r,isAgentClaimed:o,isACLKAvailable:i,fullInfoPayload:s})})})),b.on(h.f.failure,(function(e){return Object(a.a)({},e,{registry:Object(a.a)({},e.registry,{isCloudAvailable:!1,isCloudEnabled:!1,isAgentClaimed:!1,isACLKAvailable:!1})})})),b.on(p.y,(function(e,t){var n=t.personGuid,r=t.registryMachines,o=t.registryMachinesArray;return Object(a.a)({},e,{registry:Object(a.a)({},e.registry,{personGuid:n,registryMachines:r,registryMachinesArray:o})})})),b.on(p.w,(function(e){return Object(a.a)({},e,{alarms:Object(a.a)({},e.alarms,{hasStartedAlarms:!0})})})),b.on(p.x,(function(e,t){var n=t.activeAlarms;return Object(a.a)({},e,{alarms:Object(a.a)({},e.alarms,{activeAlarms:n})})})),b.on(p.t,(function(e,t){var n=t.key,o=t.value;return Object(a.a)({},e,{options:Object(a.a)({},e.options,Object(r.a)({},n,o))})})),b.on(p.k,(function(e){return Object(f.b)(),Object(a.a)({},e,{options:Object(f.c)()})})),b.on(p.g,(function(e,t){var n=t.snapshot,o=Object.keys(n.data).map((function(e){var t,a;try{if(null===(t=n.uncompress(n.data[e])))return console.warn("uncompressed snapshot data for key ".concat(e," is null")),null;if("undefined"===typeof t)return console.warn("uncompressed snapshot data for key ".concat(e," is undefined")),null}catch(o){console.warn("decompression of snapshot data for key ".concat(e," failed"),o),t=null}if("string"!==typeof t)return console.warn("uncompressed snapshot data for key ".concat(e," is not string")),{};try{a=JSON.parse(t)}catch(o){return console.warn("parsing snapshot data for key ".concat(e," failed")),{}}return Object(r.a)({},e,a)})).reduce((function(e,t){return Object(a.a)({},e,{},t)}),{});return Object(a.a)({},e,{snapshot:Object(a.a)({},n,{data:o})})})),b.on(p.m,(function(e,t){var n=t.alarm;return Object(a.a)({},e,{alarm:n})})),b.on(p.c,(function(e,t){var n=t.data;return Object(a.a)({},e,{chartsMetadata:Object(a.a)({},e.chartsMetadata,{data:n})})}))},177:function(e,t,n){"use strict";n.d(t,"a",(function(){return l}));var a=n(0),r=n.n(a),o=n(26),i=n.n(o),s=function(e){return{left:"fa-backward",reset:"fa-play",right:"fa-forward",zoomIn:"fa-plus",zoomOut:"fa-minus",resize:"fa-sort",lineChart:"fa-chart-line",areaChart:"fa-chart-area",noChart:"fa-chart-area",loading:"fa-sync-alt",noData:"fa-exclamation-triangle"}[e]},l=function(e){var t=e.iconType;return r.a.createElement("i",{className:i()("fas",s(t))})}},179:function(e,t,n){"use strict";n.d(t,"b",(function(){return f})),n.d(t,"a",(function(){return g}));var a=n(17),r=n(7),o=n(194),i=n(561),s=n(562),l=n(563),c=n(22),d=n(10),u=n(105),h=n(28),p=n(15),f={chartData:null,chartId:null,chartMetadata:null,chartPanAndZoom:null,fetchDataParams:{isRemotelyControlled:!1,viewRange:null},isFetchingData:!1,isFetchDataFailure:!1,isFetchDetailsFailure:!1,isFetchingDetails:!1,resizeHeight:null,snapshotDataIsFetching:!1,snapshotDataIsError:!1,snapshotData:null,viewRange:null},g=Object(c.createReducer)({},{}),m=function(e,t){return e[t]||f};g.on(p.c.request,(function(e,t){var n=t.chart,o=t.fetchDataParams,i=t.id;return Object(r.a)({},e,Object(a.a)({},i,Object(r.a)({},m(e,i),{chartId:n,isFetchingData:!0,viewRange:o.viewRange})))})),g.on(p.d,(function(e,t){var n=t.id;return Object(r.a)({},e,Object(a.a)({},n,Object(r.a)({},m(e,n),{isFetchingData:!1})))})),g.on(p.c.failure,(function(e,t){var n=t.id;return Object(r.a)({},e,Object(a.a)({},n,Object(r.a)({},m(e,n),{isFetchingData:!1,isFetchDataFailure:!0})))})),g.on(p.c.success,(function(e,t){var n=t.id,o=t.chartData,i=t.fetchDataParams,s=m(e,n);return Object(r.a)({},e,Object(a.a)({},n,Object(r.a)({},s,{chartData:Object(h.f)(["dimension_names"],s.chartData,o),fetchDataParams:i,isFetchingData:!1,isFetchDataFailure:!1,viewRange:i.viewRange})))})),g.on(p.e.request,(function(e,t){var n=t.id;return Object(r.a)({},e,Object(a.a)({},n,Object(r.a)({},m(e,n),{snapshotDataIsFetching:!0})))})),g.on(p.e.failure,(function(e,t){var n=t.id;return Object(r.a)({},e,Object(a.a)({},n,Object(r.a)({},m(e,n),{snapshotDataIsFetching:!1,snapshotDataIsError:!0})))})),g.on(p.e.success,(function(e,t){var n=t.id,o=t.snapshotData;return Object(r.a)({},e,Object(a.a)({},n,Object(r.a)({},m(e,n),{snapshotDataIsFetching:!1,snapshotDataIsError:!1,snapshotData:o})))})),g.on(p.j,(function(e){return Object(o.a)((function(e){return Object(r.a)({},e,{},Object(i.a)(["snapshotDataIsFetching","snapshotDataIsError","snapshotData"],f))}),e)})),g.on(p.b.request,(function(e,t){var n=t.id;return Object(r.a)({},e,Object(a.a)({},n,Object(r.a)({},m(e,n),{isFetchingDetails:!0})))})),g.on(p.b.failure,(function(e,t){var n=t.id;return Object(r.a)({},e,Object(a.a)({},n,Object(r.a)({},m(e,n),{isFetchDetailsFailure:!0})))})),g.on(p.b.success,(function(e,t){var n=t.id,o=t.chartMetadata;return Object(r.a)({},e,Object(a.a)({},n,Object(r.a)({},m(e,n),{chartMetadata:o,isFetchingDetails:!1,isFetchDetailsFailure:!1})))})),g.on(p.i,(function(e,t){var n=t.id,o=t.resizeHeight;return Object(r.a)({},e,Object(a.a)({},n,Object(r.a)({},m(e,n),{resizeHeight:o})))})),g.on(p.h,(function(e,t){var n=t.after,o=t.before,i=t.id,s=t.shouldForceTimeRange;return Object(r.a)({},e,Object(a.a)({},i,Object(r.a)({},m(e,i),{chartPanAndZoom:{after:n,before:o,shouldForceTimeRange:s}})))})),g.on(p.g,(function(e,t){var n=t.id;return Object(r.a)({},e,Object(a.a)({},n,Object(r.a)({},m(e,n),{chartPanAndZoom:f.chartPanAndZoom})))})),g.on(d.t,(function(e,t){var n=t.key,a=t.value;return n===u.a&&!0===a?Object(o.a)(Object(s.a)("chartPanAndZoom",f.chartPanAndZoom),e):e})),g.on(p.a,(function(e,t){var n=t.id;return Object(l.a)([n],e)}))},187:function(e,t,n){"use strict";n.d(t,"b",(function(){return u})),n.d(t,"a",(function(){return h}));var a=n(7),r=n(17),o=n(564),i=n(225),s=n(567),l=n(105),c=function(e,t,n){var a="data-".concat(t);if(e.hasAttribute(a)){var r=e.getAttribute(a);return"true"===r||"false"!==r&&("null"===r?null:r==="".concat(+r)?+r:/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/.test(r)?JSON.parse(r):r)}return n},d=function(e){return Object(o.a)((function(t){return"boolean"===t.type?function(e,t,n){var a=c(e,t,n);return!0===a||!1===a?a:"string"===typeof a?"yes"===a||"on"===a||""!==a&&"no"!==a&&"off"!==a&&"null"!==a&&n:"number"===typeof a?0!==a:n}(e,t.key,t.defaultValue):c(e,t.key,t.defaultValue)}),{id:{key:"netdata"},host:{key:"host"},httpMethod:{key:"http-method"},title:{key:"title"},chartLibrary:{key:"chart-library",defaultValue:window.NETDATA.chartDefaults.library},width:{key:"width",defaultValue:window.NETDATA.chartDefaults.width},height:{key:"height",defaultValue:window.NETDATA.chartDefaults.height},after:{key:"after"},before:{key:"before",defaultValue:window.NETDATA.chartDefaults.before},legend:{key:"legend",type:"boolean",defaultValue:!0},legendPosition:{key:"legend-position"},units:{key:"units"},unitsCommon:{key:"common-units"},unitsDesired:{key:"desired-units"},aggrMethod:{key:"aggr-method"},labels:{key:"labels"},postGroupBy:{key:"post-group-by"},postAggregationMethod:{key:"post-aggregation-method"},dimensionsAggrMethod:{key:"dimensions-aggr-method"},aggrGroups:{key:"aggrGroups"},selectedChart:{key:"selected-chart"},filteredRows:{key:"filtered-rows"},groupBy:{key:"group-by"},nodeIDs:{key:"node-ids"},colors:{key:"colors"},commonColors:{key:"common-colors"},decimalDigits:{key:"decimal-digits"},dimensions:{key:"dimensions"},selectedDimensions:{key:"selected-dimensions"},forceTimeWindow:{key:"force-time-window"},appendOptions:{key:"append-options"},gtime:{key:"gtime"},method:{key:"method"},overrideOptions:{key:"override-options"},pixelsPerPoint:{key:"pixels-per-point"},points:{key:"points"},heightId:{key:"id"},hideResizeHandler:{key:"hide-resize-handler"},detectResize:{key:"detect-resize"},commonMin:{key:"common-min"},commonMax:{key:"common-max"},dygraphType:{key:"dygraph-type"},dygraphValueRange:{key:"dygraph-valuerange"},dygraphTheme:{key:"dygraph-theme"},dygraphSmooth:{key:"dygraph-smooth",type:"boolean"},dygraphColors:{key:"dygraph-colors"},dygraphRightGap:{key:"dygraph-rightgap"},dygraphShowRangeSelector:{key:"dygraph-showrangeselector",type:"boolean"},dygraphShowRoller:{key:"dygraph-showroller",type:"boolean"},dygraphTitle:{key:"dygraph-title"},dygraphTitleHeight:{key:"dygraph-titleheight"},dygraphLegend:{key:"dygraph-legend"},dygraphLabelsDiv:{key:"dygraph-labelsdiv"},dygraphLabelsSeparateLine:{key:"dygraph-labelsseparatelines",type:"boolean"},dygraphIncludeZero:{key:"dygraph-includezero",type:"boolean"},dygraphShowZeroValues:{key:"dygraph-labelsshowzerovalues",type:"boolean"},dygraphShowLabelsOnHighLight:{key:"dygraph-showlabelsonhighlight",type:"boolean"},dygraphHideOverlayOnMouseOut:{key:"dygraph-hideoverlayonmouseout",type:"boolean"},dygraphXRangePad:{key:"dygraph-xrangepad"},dygraphYRangePad:{key:"dygraph-yrangepad"},dygraphYLabelWidth:{key:"dygraph-ylabelwidth"},dygraphStrokeWidth:{key:"dygraph-strokewidth"},dygraphStrokePattern:{key:"dygraph-strokepattern"},dygraphDrawPoints:{key:"dygraph-drawpoints",type:"boolean"},dygraphDrawGapEdgePoints:{key:"dygraph-drawgapedgepoints",type:"boolean"},dygraphConnectSeparatedPoints:{key:"dygraph-connectseparatedpoints",type:"boolean"},dygraphPointSize:{key:"dygraph-pointsize"},dygraphStepPlot:{key:"dygraph-stepplot",type:"boolean"},dygraphStrokeBorderColor:{key:"dygraph-strokebordercolor"},dygraphStrokeBorderWidth:{key:"dygraph-strokeborderwidth"},dygraphFillGraph:{key:"dygraph-fillgraph",type:"boolean"},dygraphFillAlpha:{key:"dygraph-fillalpha"},dygraphStackedGraph:{key:"dygraph-stackedgraph",type:"boolean"},dygraphStackedGraphNanFill:{key:"dygraph-stackedgraphnanfill"},dygraphAxisLabelFontSize:{key:"dygraph-axislabelfontsize"},dygraphAxisLineColor:{key:"dygraph-axislinecolor"},dygraphAxisLineWidth:{key:"dygraph-axislinewidth"},dygraphDrawGrid:{key:"dygraph-drawgrid",type:"boolean"},dygraphGridLinePattern:{key:"dygraph-gridlinepattern"},dygraphGridLineWidth:{key:"dygraph-gridlinewidth"},dygraphGridLineColor:{key:"dygraph-gridlinecolor"},dygraphMaxNumberWidth:{key:"dygraph-maxnumberwidth"},dygraphSigFigs:{key:"dygraph-sigfigs"},dygraphDigitsAfterDecimal:{key:"dygraph-digitsafterdecimal"},dygraphHighlighCircleSize:{key:"dygraph-highlightcirclesize"},dygraphHighlightSeriesOpts:{key:"dygraph-highlightseriesopts"},dygraphHighlightSeriesBackgroundAlpha:{key:"dygraph-highlightseriesbackgroundalpha"},dygraphXPixelsPerLabel:{key:"dygraph-xpixelsperlabel"},dygraphXAxisLabelWidth:{key:"dygraph-xaxislabelwidth"},dygraphDrawXAxis:{key:"dygraph-drawxaxis",type:"boolean"},dygraphYPixelsPerLabel:{key:"dygraph-ypixelsperlabel"},dygraphYAxisLabelWidth:{key:"dygraph-yaxislabelwidth"},dygraphDrawYAxis:{key:"dygraph-drawyaxis",type:"boolean"},dygraphDrawAxis:{key:"dygraph-drawaxis",type:"boolean"},easyPieChartMinValue:{key:"easypiechart-min-value"},easyPieChartMaxValue:{key:"easypiechart-max-value"},easyPieChartBarColor:{key:"easypiechart-barcolor"},easyPieChartTrackColor:{key:"easypiechart-trackcolor"},easyPieChartScaleColor:{key:"easypiechart-scalecolor"},easyPieChartScaleLength:{key:"easypiechart-scalelength"},easyPieChartLineCap:{key:"easypiechart-linecap"},easyPieChartLineWidth:{key:"easypiechart-linewidth"},easyPieChartTrackWidth:{key:"easypiechart-trackwidth"},easyPieChartSize:{key:"easypiechart-size"},easyPieChartRotate:{key:"easypiechart-rotate"},easyPieChartAnimate:{key:"easypiechart-animate"},easyPieChartEasing:{key:"easypiechart-easing"},gaugeMinValue:{key:"gauge-min-value"},gaugeMaxValue:{key:"gauge-max-value"},gaugePointerColor:{key:"gauge-pointer-color"},gaugeStrokeColor:{key:"gauge-stroke-color"},gaugeStartColor:{key:"gauge-start-color"},gaugeStopColor:{key:"gauge-stop-color"},gaugeGenerateGradient:{key:"gauge-generate-gradient"},sparklineType:{key:"sparkline-type"},sparklineLineColor:{key:"sparkline-linecolor"},sparklineFillColor:{key:"sparkline-fillcolor"},sparklineChartRangeMin:{key:"sparkline-chartrangemin"},sparklineChartRangeMax:{key:"sparkline-chartrangemax"},sparklineComposite:{key:"sparkline-composite"},sparklineEnableTagOptions:{key:"sparkline-enabletagoptions"},sparklineTagOptionPrefix:{key:"sparkline-tagoptionprefix"},sparklineTagValuesAttribute:{key:"sparkline-tagvaluesattribute"},sparklineDisableHiddenCheck:{key:"sparkline-disablehiddencheck"},sparklineDefaultPixelsPerValue:{key:"sparkline-defaultpixelspervalue"},sparklineSpotColor:{key:"sparkline-spotcolor"},sparklineMinSpotColor:{key:"sparkline-minspotcolor"},sparklineMaxSpotColor:{key:"sparkline-maxspotcolor"},sparklineSpotRadius:{key:"sparkline-spotradius"},sparklineValueSpots:{key:"sparkline-valuespots"},sparklineHighlightSpotColor:{key:"sparkline-highlightspotcolor"},sparklineHighlightLineColor:{key:"sparkline-highlightlinecolor"},sparklineLineWidth:{key:"sparkline-linewidth"},sparklineNormalRangeMin:{key:"sparkline-normalrangemin"},sparklineNormalRangeMax:{key:"sparkline-normalrangemax"},sparklineDrawNormalOnTop:{key:"sparkline-drawnormalontop"},sparklineXvalues:{key:"sparkline-xvalues"},sparklineChartRangeClip:{key:"sparkline-chartrangeclip"},sparklineChartRangeMinX:{key:"sparkline-chartrangeminx"},sparklineChartRangeMaxX:{key:"sparkline-chartrangemaxx"},sparklineDisableInteraction:{key:"sparkline-disableinteraction",type:"boolean"},sparklineDisableTooltips:{key:"sparkline-disabletooltips",type:"boolean"},sparklineOnHover:{key:"sparkline-on-hover"},sparklineDisableHighlight:{key:"sparkline-disablehighlight",type:"boolean"},sparklineHighlightLighten:{key:"sparkline-highlightlighten"},sparklineHighlightColor:{key:"sparkline-highlightcolor"},sparklineTooltipContainer:{key:"sparkline-tooltipcontainer"},sparklineTooltipClassname:{key:"sparkline-tooltipclassname"},sparklineTooltipFormat:{key:"sparkline-tooltipformat"},sparklineTooltipPrefix:{key:"sparkline-tooltipprefix"},sparklineTooltipSuffix:{key:"sparkline-tooltipsuffix"},sparklineTooltipSkipNull:{key:"sparkline-tooltipskipnull",type:"boolean"},sparklineTooltipValueLookups:{key:"sparkline-tooltipvaluelookups"},sparklineTooltipFormatFieldlist:{key:"sparkline-tooltipformatfieldlist"},sparklineTooltipFormatFieldlistKey:{key:"sparkline-tooltipformatfieldlistkey"},sparklineNumberFormatter:{key:"sparkline-numberformatter"},sparklineNumberDigitGroupSep:{key:"sparkline-numberdigitgroupsep"},sparklineNumberDecimalMark:{key:"sparkline-numberdecimalmark"},sparklineNumberDigitGroupCount:{key:"sparkline-numberdigitgroupcount"},sparklineAnimatedZooms:{key:"sparkline-animatedzooms",type:"boolean"},d3pieTitle:{key:"d3pie-title"},d3pieSubtitle:{key:"d3pie-subtitle"},d3pieFooter:{key:"d3pie-footer"},d3pieTitleColor:{key:"d3pie-title-color"},d3pieTitleFontsize:{key:"d3pie-title-fontsize"},d3pieTitleFontweight:{key:"d3pie-title-fontweight"},d3pieTitleFont:{key:"d3pie-title-font"},d3PieSubtitleColor:{key:"d3pie-subtitle-color"},d3PieSubtitleFontsize:{key:"d3pie-subtitle-fontsize"},d3PieSubtitleFontweight:{key:"d3pie-subtitle-fontweight"},d3PieSubtitleFont:{key:"d3pie-subtitle-font"},d3PieFooterColor:{key:"d3pie-footer-color"},d3PieFooterFontsize:{key:"d3pie-footer-fontsize"},d3PieFooterFontweight:{key:"d3pie-footer-fontweight"},d3PieFooterFont:{key:"d3pie-footer-font"},d3PieFooterLocation:{key:"d3pie-footer-location"},d3PiePieinnerradius:{key:"d3pie-pieinnerradius"},d3PiePieouterradius:{key:"d3pie-pieouterradius"},d3PieSortorder:{key:"d3pie-sortorder"},d3PieSmallsegmentgroupingEnabled:{key:"d3pie-smallsegmentgrouping-enabled",type:"boolean"},d3PieSmallsegmentgroupingValue:{key:"d3pie-smallsegmentgrouping-value"},d3PieSmallsegmentgroupingValuetype:{key:"d3pie-smallsegmentgrouping-valuetype"},d3PieSmallsegmentgroupingLabel:{key:"d3pie-smallsegmentgrouping-label"},d3PieSmallsegmentgroupingColor:{key:"d3pie-smallsegmentgrouping-color"},d3PieLabelsOuterFormat:{key:"d3pie-labels-outer-format"},d3PieLabelsOuterHidewhenlessthanpercentage:{key:"d3pie-labels-outer-hidewhenlessthanpercentage"},d3PieLabelsOuterPiedistance:{key:"d3pie-labels-outer-piedistance"},d3PieLabelsInnerFormat:{key:"d3pie-labels-inner-format"},d3PieLabelsInnerHidewhenlessthanpercentage:{key:"d3pie-labels-inner-hidewhenlessthanpercentage"},d3PieLabelsMainLabelColor:{key:"d3pie-labels-mainLabel-color"},d3PieLabelsMainLabelFont:{key:"d3pie-labels-mainLabel-font"},d3PieLabelsMainLabelFontsize:{key:"d3pie-labels-mainLabel-fontsize"},d3PieLabelsMainLabelFontweight:{key:"d3pie-labels-mainLabel-fontweight"},d3PieLabelsPercentageColor:{key:"d3pie-labels-percentage-color"},d3PieLabelsPercentageFont:{key:"d3pie-labels-percentage-font"},d3PieLabelsPercentageFontsize:{key:"d3pie-labels-percentage-fontsize"},d3PieLabelsPercentageFontweight:{key:"d3pie-labels-percentage-fontweight"},d3PieLabelsValueColor:{key:"d3pie-labels-value-color"},d3PieLabelsValueFont:{key:"d3pie-labels-value-font"},d3PieLabelsValueFontsize:{key:"d3pie-labels-value-fontsize"},d3PieLabelsValueFontweight:{key:"d3pie-labels-value-fontweight"},d3PieLabelsLinesEnabled:{key:"d3pie-labels-lines-enabled",type:"boolean"},d3PieLabelsLinesStyle:{key:"d3pie-labels-lines-style"},d3PieLabelsLinesColor:{key:"d3pie-labels-lines-color"},d3PieLabelsTruncationEnabled:{key:"d3pie-labels-truncation-enabled",type:"boolean"},d3PieLabelsTruncationTruncatelength:{key:"d3pie-labels-truncation-truncatelength"},d3PieMiscColorsSegmentstroke:{key:"d3pie-misc-colors-segmentstroke"},d3PieMiscGradientEnabled:{key:"d3pie-misc-gradient-enabled",type:"boolean"},d3PieMiscColorsPercentage:{key:"d3pie-misc-colors-percentage"},d3PieMiscGradientColor:{key:"d3pie-misc-gradient-color"},d3PieCssprefix:{key:"d3pie-cssprefix"},peityStrokeWidth:{key:"peity-strokewidth"},textOnlyDecimalPlaces:{key:"textonly-decimal-places"},textOnlyPrefix:{key:"textonly-prefix"},textOnlySuffix:{key:"textonly-suffix"}})},u=function(e){var t=d(e),n=function(e){var t=Array.from(e.attributes).filter((function(e){return e.name.startsWith("data-show-value-of")})).map((function(e){return Object(r.a)({},e.name.replace("data-",""),e.value)})),n=Object(i.a)(t);return Object(s.a)(n)?void 0:n}(e);return Object(a.a)({},t,{showValueOf:n})},h={legendPosition:l.d?"right":"bottom"}},223:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"b",(function(){return updateLocaleFunctions})),__webpack_require__.d(__webpack_exports__,"a",(function(){return netdataCallback}));var ramda__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(565),ramda__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(152),_domains_global_actions__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(10),_domains_global_selectors__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(11),_domains_chart_utils_seconds4human__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(46),_utils_units_conversion__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(107),_domains_dashboard_actions__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(42),_domains_chart_actions__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(15),_domains_chart_selectors__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__(35),_utils_server_detection__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__(31),_utils_name_2_id__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__(148),_utils_date_time__WEBPACK_IMPORTED_MODULE_11__=__webpack_require__(59),_utils__WEBPACK_IMPORTED_MODULE_12__=__webpack_require__(146),_utils_is_demo__WEBPACK_IMPORTED_MODULE_13__=__webpack_require__(106),_domains_chart_utils_legend_utils__WEBPACK_IMPORTED_MODULE_14__=__webpack_require__(57),_domains_chart_utils_transformDataAttributes__WEBPACK_IMPORTED_MODULE_15__=__webpack_require__(187),localeDateString,localeTimeString,updateLocaleFunctions=function(e){var t=e.localeDateString,n=e.localeTimeString;localeDateString=t,localeTimeString=n},netdataShowAlarms=!0,netdataRegistry=!0,netdataServer=void 0,netdataServerStatic=void 0,netdataCheckXSS=void 0,reduxStore;function escapeUserInputHTML(e){return e.toString().replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/#/g,"&#35;").replace(/'/g,"&#39;").replace(/\(/g,"&#40;").replace(/\)/g,"&#41;").replace(/\//g,"&#47;")}var setOption=function(e,t){reduxStore.dispatch(Object(_domains_global_actions__WEBPACK_IMPORTED_MODULE_2__.t)({key:e,value:t}))},getFromRegistry=function(e){var t=Object(_domains_global_selectors__WEBPACK_IMPORTED_MODULE_3__.w)(reduxStore.getState());return null===t||void 0===t?void 0:t[e]};function verifyURL(e){return"string"===typeof e&&(e.startsWith("http://")||e.startsWith("https://"))?e.replace(/'/g,"%22").replace(/"/g,"%27").replace(/\)/g,"%28").replace(/\(/g,"%29"):(console.log("invalid URL detected:"),console.log(e),'javascript:alert("invalid url");')}window.urlOptions={hash:"#",theme:null,help:null,mode:"live",update_always:!1,pan_and_zoom:!1,server:null,after:0,before:0,highlight:!1,highlight_after:0,highlight_before:0,nowelcome:!1,show_alarms:!1,chart:null,family:null,alarm:null,hasProperty:function(e){return"undefined"!==typeof this[e]},genHash:function(e){var t=urlOptions.hash;return t+=";after="+urlOptions.after.toString()+";before="+urlOptions.before.toString(),!0===urlOptions.highlight&&(t+=";highlight_after="+urlOptions.highlight_after.toString()+";highlight_before="+urlOptions.highlight_before.toString()),null!==urlOptions.theme&&(t+=";theme="+urlOptions.theme.toString()),null!==urlOptions.help&&(t+=";help="+urlOptions.help.toString()),!0===urlOptions.update_always&&(t+=";update_always=true"),!0===e&&null!==urlOptions.server&&(t+=";server="+urlOptions.server.toString()),"live"!==urlOptions.mode&&(t+=";mode="+urlOptions.mode),t},parseHash:function(){for(var e=document.location.hash.split(";"),t=e.length;t--;)if(0!==t){var n=e[t].split("=");urlOptions.hasProperty(n[0])&&"undefined"!==typeof n[1]&&(urlOptions[n[0]]=decodeURIComponent(n[1]))}else e[t].length>0&&(urlOptions.hash=e[t]);var a=["nowelcome","show_alarms","update_always"];for(t=a.length;t--;)"true"===urlOptions[a[t]]||!0===urlOptions[a[t]]||"1"===urlOptions[a[t]]||1===urlOptions[a[t]]?urlOptions[a[t]]=!0:urlOptions[a[t]]=!1;var r=["after","before","highlight_after","highlight_before"];for(t=r.length;t--;)if("string"===typeof urlOptions[r[t]])try{urlOptions[r[t]]=parseInt(urlOptions[r[t]])}catch(o){console.log("failed to parse URL hash parameter "+r[t]),urlOptions[r[t]]=0}switch(null!==urlOptions.server&&""!==urlOptions.server?(netdataServerStatic=document.location.origin.toString()+document.location.pathname.toString(),netdataServer=urlOptions.server,netdataCheckXSS=!0):urlOptions.server=null,urlOptions.before>0&&urlOptions.after>0?(urlOptions.pan_and_zoom=!0,urlOptions.nowelcome=!0):urlOptions.pan_and_zoom=!1,urlOptions.highlight_before>0&&urlOptions.highlight_after>0?urlOptions.highlight=!0:urlOptions.highlight=!1,urlOptions.mode){case"print":urlOptions.theme="white",urlOptions.welcome=!1,urlOptions.help=!1,urlOptions.show_alarms=!1,!1===urlOptions.pan_and_zoom&&(urlOptions.pan_and_zoom=!0,urlOptions.before=Date.now(),urlOptions.after=urlOptions.before-6e5),netdataShowAlarms=!1,netdataRegistry=!1;break;case"live":default:urlOptions.mode="live"}},hashUpdate:function(){history.replaceState(null,"",urlOptions.genHash(!0))},netdataPanAndZoomCallback:function(e,t,n){null===netdataSnapshotData&&(urlOptions.pan_and_zoom=e,urlOptions.after=t,urlOptions.before=n,urlOptions.hashUpdate())},netdataHighlightCallback:function(e,t,n){if(!0===e&&(null===t||null===n||t<=0||n<=0||t>=n)&&(e=!1,t=0,n=0),null===window.netdataSnapshotData?urlOptions.highlight=e:urlOptions.highlight=!1,urlOptions.highlight_after=Math.round(t),urlOptions.highlight_before=Math.round(n),urlOptions.hashUpdate(),!0===e&&t>0&&n>0&&t<n){var a=localeDateString(t),r=localeDateString(n);a===r&&(r=""),document.getElementById("navbar-highlight-content").innerHTML='<span class="navbar-highlight-bar highlight-tooltip" onclick="urlOptions.showHighlight();" title="restore the highlighted view" data-toggle="tooltip" data-placement="bottom">highlighted time-frame <b>'+a+" <code>"+localeTimeString(t)+"</code></b> to <b>"+r+" <code>"+localeTimeString(n)+"</code></b>, duration <b>"+Object(_domains_chart_utils_seconds4human__WEBPACK_IMPORTED_MODULE_4__.a)(Math.round((n-t)/1e3))+'</b></span><span class="navbar-highlight-button-right highlight-tooltip" onclick="urlOptions.clearHighlight();" title="clear the highlighted time-frame" data-toggle="tooltip" data-placement="bottom"><i class="fas fa-times"></i></span>',$(".navbar-highlight").show(),$(".navbar-highlight").width("80%"),$(".highlight-tooltip").tooltip({html:!0,delay:{show:500,hide:0},container:"body"})}else $(".navbar-highlight").hide(),$(".navbar-highlight").width("100%")},clearHighlight:function(){reduxStore.dispatch(Object(_domains_global_actions__WEBPACK_IMPORTED_MODULE_2__.d)())},showHighlight:function(){reduxStore.dispatch(Object(_domains_global_actions__WEBPACK_IMPORTED_MODULE_2__.b)())}},urlOptions.parseHash();var localStorageTested=-1;function localStorageTest(){if(-1!==localStorageTested)return localStorageTested;if("undefined"!==typeof Storage&&"object"===typeof localStorage){try{localStorage.setItem("test","test"),localStorage.removeItem("test"),localStorageTested=!0}catch(e){console.log(e),localStorageTested=!1}}else localStorageTested=!1;return localStorageTested}function loadLocalStorage(e){var t=null;try{!0===localStorageTest()?t=localStorage.getItem(e):console.log("localStorage is not available")}catch(n){return console.log(n),null}return"undefined"===typeof t||null===t?null:t}function saveLocalStorage(e,t){try{if(!0===localStorageTest())return localStorage.setItem(e,t.toString()),!0}catch(n){console.log(n)}return!1}function getTheme(e){if("print"===urlOptions.mode)return"white";var t=loadLocalStorage("netdataTheme");return"undefined"===typeof t||null===t||"undefined"===t?e:t}function setTheme(e){return"print"!==urlOptions.mode&&(e!==netdataTheme&&saveLocalStorage("netdataTheme",e))}window.netdataTheme=getTheme("slate"),NETDATA.updateTheme();var netdataShowHelp=!0;function naturalSortChunkify(e){for(var t,n,a=[],r=0,o=-1,i=0;t=(n=e.charAt(r++)).charCodeAt(0);){var s=t>=48&&t<=57;s!==i&&(a[++o]="",i=s),a[o]+=n}return a}function naturalSortCompare(e,t){for(var n=naturalSortChunkify(e.toLowerCase()),a=naturalSortChunkify(t.toLowerCase()),r=0;n[r]&&a[r];r++)if(n[r]!==a[r]){var o=Number(n[r]),i=Number(a[r]);return o.toString()===n[r]&&i.toString()===a[r]?o-i:n[r]>a[r]?1:-1}return n.length-a.length}function saveTextToClient(e,t){var n=new Blob([e],{type:"application/octet-stream"}),a=URL.createObjectURL(n),r=document.createElement("a");r.setAttribute("href",a),r.setAttribute("download",t);var o=document.getElementById("hiddenDownloadLinks");o.innerHTML="",o.appendChild(r),setTimeout((function(){o.removeChild(r),URL.revokeObjectURL(a)}),60),r.click()}function saveObjectToClient(e,t){saveTextToClient(JSON.stringify(e),t)}function netdataURL(e,t){return"undefined"===typeof e&&(e=""),-1!==e.indexOf("#")&&(e=e.substring(0,e.indexOf("#"))),e+urlOptions.genHash(t)}function netdataReload(e){document.location=verifyURL(netdataURL(e,!0)),location.reload()}null!==urlOptions.theme?(setTheme(urlOptions.theme),netdataTheme=urlOptions.theme,window.NETDATA.updateTheme()):urlOptions.theme=netdataTheme,null!==urlOptions.help?(saveLocalStorage("options.show_help",urlOptions.help),netdataShowHelp=urlOptions.help):urlOptions.help=loadLocalStorage("options.show_help"),window.gotoHostedModalHandler=function(e){return document.location=verifyURL(e+urlOptions.genHash()),!1};var gotoServerValidateRemaining=0,gotoServerMiddleClick=!1,gotoServerStop=!1;function gotoServerValidateUrl(e,t,n){var a=0,r="failed";document.location.toString().startsWith("http://")&&n.toString().startsWith("https://")?a=500:document.location.toString().startsWith("https://")&&n.toString().startsWith("http://")&&(r="can't check");var o=netdataURL(n);setTimeout((function(){document.getElementById("gotoServerList").innerHTML+='<tr><td style="padding-left: 20px;"><a href="'+verifyURL(o)+'" target="_blank">'+escapeUserInputHTML(n)+'</a></td><td style="padding-left: 30px;"><code id="'+t+"-"+e+'-status">checking...</code></td></tr>',NETDATA.registryHello(n,(function(a){if("undefined"!==typeof a&&null!==a&&"string"===typeof a.machine_guid&&a.machine_guid===t){if(document.getElementById(t+"-"+e+"-status").innerHTML="OK",!gotoServerStop)if(gotoServerStop=!0,gotoServerMiddleClick){window.open(verifyURL(o),"_blank"),gotoServerMiddleClick=!1;var i=getFromRegistry("registryMachines");document.getElementById("gotoServerResponse").innerHTML="<b>Opening new window to "+i[t].name+'<br/><a href="'+verifyURL(o)+'">'+escapeUserInputHTML(n)+"</a></b><br/>(check your pop-up blocker if it fails)"}else document.getElementById("gotoServerResponse").innerHTML+="found it! It is at:<br/><small>"+escapeUserInputHTML(n)+"</small>",document.location=verifyURL(o),$("#gotoServerModal").modal("hide")}else"undefined"!==typeof a&&null!==a&&"string"===typeof a.machine_guid&&a.machine_guid!==t&&(r="wrong machine"),document.getElementById(t+"-"+e+"-status").innerHTML=r,--gotoServerValidateRemaining<=0&&(gotoServerMiddleClick=!1,document.getElementById("gotoServerResponse").innerHTML="<b>Sorry! I cannot find any operational URL for this server</b>")}))}),50*e+a)}window.gotoServerModalHandler=function(e){gotoServerStop=!1;var t={},n=getFromRegistry("registryMachines"),a=n[e].alternateUrls.length,r=0;for(document.getElementById("gotoServerResponse").innerHTML="",document.getElementById("gotoServerList").innerHTML="",document.getElementById("gotoServerName").innerHTML=n[e].name,$("#gotoServerModal").modal("show"),gotoServerValidateRemaining=a;a--;){var o=n[e].alternateUrls[a];t[o]=!0,gotoServerValidateUrl(r++,e,o)}return setTimeout((function(){!1===gotoServerStop&&(document.getElementById("gotoServerResponse").innerHTML="<b>Added all the known URLs for this machine.</b>",NETDATA.registrySearch(e,getFromRegistry,(function(n){for(a=n.urls.length;a--;){var o=n.urls[a][1];"undefined"===typeof t[o]&&(gotoServerValidateRemaining++,t[o]=!0,gotoServerValidateUrl(r++,e,o))}})))}),2e3),!1},window.switchRegistryModalHandler=function(){document.getElementById("switchRegistryPersonGUID").value=getFromRegistry("personGuid"),document.getElementById("switchRegistryURL").innerHTML=getFromRegistry("registryServer"),document.getElementById("switchRegistryResponse").innerHTML="",$("#switchRegistryModal").modal("show")},window.notifyForSwitchRegistry=function(){var e=document.getElementById("switchRegistryPersonGUID").value;""!==e&&36===e.length?$.ajax({url:getFromRegistry("registryServer")+"/api/v1/registry?action=switch&machine="+getFromRegistry("machineGuid")+"&name="+encodeURIComponent(getFromRegistry("hostname"))+"&url="+encodeURIComponent(_utils_server_detection__WEBPACK_IMPORTED_MODULE_9__.b)+"&to="+e,async:!0,cache:!1,headers:{"Cache-Control":"no-cache, no-store",Pragma:"no-cache"},xhrFields:{withCredentials:!0}}).done((function(e){"string"===typeof(e=NETDATA.xss.checkAlways("/api/v1/registry?action=switch",e)).status&&"ok"===e.status||(console.warn("Netdata registry server send invalid response to SWITCH",e),e=null),$("#switchRegistryModal").modal("hide")})).fail((function(){console.warn("Netdata registry SWITCH failed"),document.getElementById("switchRegistryResponse").innerHTML="<b>Sorry! The registry rejected your request.</b>"})):document.getElementById("switchRegistryResponse").innerHTML="<b>The ID you have entered is not a GUID.</b>"};var deleteRegistryGuid=null,deleteRegistryUrl=null;window.deleteRegistryModalHandler=function(e,t,n){deleteRegistryGuid=e,deleteRegistryUrl=n,document.getElementById("deleteRegistryServerName").innerHTML=t,document.getElementById("deleteRegistryServerName2").innerHTML=t,document.getElementById("deleteRegistryServerURL").innerHTML=n,document.getElementById("deleteRegistryResponse").innerHTML="",$("#deleteRegistryModal").modal("show")},window.notifyForDeleteRegistry=function(){var e=document.getElementById("deleteRegistryResponse");deleteRegistryUrl&&NETDATA.registryDelete(getFromRegistry,_utils_server_detection__WEBPACK_IMPORTED_MODULE_9__.b,deleteRegistryUrl,(function(t){null!==t?(deleteRegistryUrl=null,$("#deleteRegistryModal").modal("hide"),reduxStore.dispatch(Object(_domains_global_actions__WEBPACK_IMPORTED_MODULE_2__.l)())):e.innerHTML="<b>Sorry, this command was rejected by the registry server!</b>"}))};var options={menus:{},submenu_names:{},data:null,hostname:"netdata_server",version:"unknown",release_channel:"unknown",hosts:[],duration:0,update_every:1,chartsPerRow:0,chartsHeight:180};function chartsPerRow(e){return 0===options.chartsPerRow?1:options.chartsPerRow}function prioritySort(e,t){return e.priority<t.priority?-1:e.priority>t.priority?1:naturalSortCompare(e.name,t.name)}function sortObjectByPriority(e){var t={},n=[];for(var a in e)e.hasOwnProperty(a)&&"undefined"===typeof t[a]&&(t[a]=e[a],n.push(a));return n.sort((function(e,n){return t[e].priority<t[n].priority?-1:t[e].priority>t[n].priority?1:naturalSortCompare(e,n)})),n}window.scrollToId=function(e){if(e&&""!==e&&null!==document.getElementById(e)){var t=$("#"+e).offset();"undefined"!==typeof t&&$("html, body").animate({scrollTop:t.top-30},0)}return!1},window.customDashboard={menu:{},submenu:{},context:{}};var netdataDashboard={sparklines_registry:{},os:"unknown",menu:{},submenu:{},context:{},sparkline:function(e,t,n,a,r){if(null===options.data||"undefined"===typeof options.data.charts)return"";if("undefined"===typeof options.data.charts[t])return"";if("undefined"===typeof options.data.charts[t].dimensions)return"";if("undefined"===typeof options.data.charts[t].dimensions[n])return"";var o=t+"."+n;return"undefined"===typeof a&&(a=""),"undefined"===typeof this.sparklines_registry[o]?this.sparklines_registry[o]={count:1}:this.sparklines_registry[o].count++,e+'<div class="netdata-container" data-netdata="'+t+'" data-width="25%" data-height="15px" data-chart-library="dygraph" data-dygraph-theme="sparkline" data-dimensions="'+n+'" data-show-value-of-'+n+'-at="'+(o=o+"."+this.sparklines_registry[o].count)+'"></div> (<span id="'+o+'" style="display: inline-block; min-width: 50px; text-align: right;">X</span>'+a+")"+r},gaugeChart:function(e,t,n,a){return"undefined"===typeof a&&(a=""),"undefined"===typeof n&&(n=""),'<div class="netdata-container" data-netdata="CHART_UNIQUE_ID" data-dimensions="'+n+'" data-chart-library="gauge" data-gauge-adjust="width" data-title="'+e+'" data-width="'+t+'" data-points="CHART_DURATION" data-colors="'+a+'" role="application"></div>'},anyAttribute:function(e,t,n,a){if("undefined"!==typeof e[n]){var r=e[n][t];return"undefined"===typeof r?a:"function"===typeof r?r(netdataDashboard.os):r}return a},menuTitle:function(e){return"undefined"!==typeof e.menu_pattern?(this.anyAttribute(this.menu,"title",e.menu_pattern,e.menu_pattern).toString()+"&nbsp;"+e.type.slice(-(e.type.length-e.menu_pattern.length-1)).toString()).replace(/_/g," "):this.anyAttribute(this.menu,"title",e.menu,e.menu).toString().replace(/_/g," ")},menuIcon:function(e){return"undefined"!==typeof e.menu_pattern?this.anyAttribute(this.menu,"icon",e.menu_pattern,'<i class="fas fa-puzzle-piece"></i>').toString():this.anyAttribute(this.menu,"icon",e.menu,'<i class="fas fa-puzzle-piece"></i>')},menuInfo:function(e){return"undefined"!==typeof e.menu_pattern?this.anyAttribute(this.menu,"info",e.menu_pattern,null):this.anyAttribute(this.menu,"info",e.menu,null)},menuHeight:function(e){return"undefined"!==typeof e.menu_pattern?this.anyAttribute(this.menu,"height",e.menu_pattern,1):this.anyAttribute(this.menu,"height",e.menu,1)},submenuTitle:function(e,t){var n=e+"."+t,a=this.anyAttribute(this.submenu,"title",n,t).toString().replace(/_/g," ");return a.length>28?a.substring(0,13)+"..."+a.substring(a.length-12,a.length):a},submenuInfo:function(e,t){var n=e+"."+t;return this.anyAttribute(this.submenu,"info",n,null)},submenuHeight:function(e,t,n){var a=e+"."+t;return this.anyAttribute(this.submenu,"height",a,1)*n},contextInfo:function(e){var t=this.anyAttribute(this.context,"info",e,null);return null!==t?'<div class="shorten dashboard-context-info netdata-chart-alignment" role="document">'+t+"</div>":""},contextValueRange:function(e){return"undefined"!==typeof this.context[e]&&"undefined"!==typeof this.context[e].valueRange?this.context[e].valueRange:"[null, null]"},contextHeight:function(e,t){return"undefined"!==typeof this.context[e]&&"undefined"!==typeof this.context[e].height?t*this.context[e].height:t},contextDecimalDigits:function(e,t){return"undefined"!==typeof this.context[e]&&"undefined"!==typeof this.context[e].decimalDigits?this.context[e].decimalDigits:t}};function enrichChartData(e){var t=e.type.split("_"),n=t[0];switch(n){case"ap":case"net":case"disk":case"powersupply":case"statsd":e.menu=n;break;case"apache":e.menu=e.type,t.length>2&&"cache"===t[1]?e.menu_pattern=n+"_"+t[1]:t.length>1&&(e.menu_pattern=n);break;case"bind":e.menu=e.type,t.length>2&&"rndc"===t[1]?e.menu_pattern=n+"_"+t[1]:t.length>1&&(e.menu_pattern=n);break;case"cgroup":e.menu=e.type,e.id.match(/.*[\._\/-:]qemu[\._\/-:]*/)||e.id.match(/.*[\._\/-:]kvm[\._\/-:]*/)?e.menu_pattern="cgqemu":e.menu_pattern="cgroup";break;case"go":e.menu=e.type,t.length>2&&"expvar"===t[1]?e.menu_pattern=n+"_"+t[1]:t.length>1&&(e.menu_pattern=n);break;case"mount":t.length>2?e.menu=n+"_"+t[1]:e.menu=n;break;case"isc":e.menu=e.type,t.length>2&&"dhcpd"===t[1]?e.menu_pattern=n+"_"+t[1]:t.length>1&&(e.menu_pattern=n);break;case"ovpn":e.menu=e.type,t.length>3&&"status"===t[1]&&"log"===t[2]?e.menu_pattern=n+"_"+t[1]:t.length>1&&(e.menu_pattern=n);break;case"smartd":case"web":e.menu=e.type,t.length>2&&"log"===t[1]?e.menu_pattern=n+"_"+t[1]:t.length>1&&(e.menu_pattern=n);break;case"tc":if(e.menu=n,"tc.qos"===e.context&&("undefined"===typeof options.submenu_names[e.family]||options.submenu_names[e.family]===e.family)){var a=e.name.split(".")[1];a.endsWith("_in")?options.submenu_names[e.family]=a.slice(0,a.lastIndexOf("_in")):a.endsWith("_out")?options.submenu_names[e.family]=a.slice(0,a.lastIndexOf("_out")):a.startsWith("in_")?options.submenu_names[e.family]=a.slice(3,a.length):a.startsWith("out_")?options.submenu_names[e.family]=a.slice(4,a.length):options.submenu_names[e.family]=a}e.id.match(/.*-ifb$/)&&e.priority--;break;default:e.menu=e.type,t.length>1&&(e.menu_pattern=n)}e.submenu=e.family}function headMain(e,t,n){if("print"===urlOptions.mode)return"";var a="";return"undefined"!==typeof t["system.swap"]&&(a+='<div class="netdata-container" style="margin-right: 10px;" data-netdata="system.swap" data-dimensions="used" data-append-options="percentage" data-chart-library="easypiechart" data-title="Used Swap" data-units="%" data-easypiechart-max-value="100" data-width="9%" data-points="'+n.toString()+'" data-colors="#DD4400" role="application"></div>'),"undefined"!==typeof t["system.io"]?(a+='<div class="netdata-container" style="margin-right: 10px;" data-netdata="system.io" data-dimensions="in" data-chart-library="easypiechart" data-title="Disk Read" data-width="11%" data-points="'+n.toString()+'" data-common-units="system.io.mainhead" role="application"></div>',a+='<div class="netdata-container" style="margin-right: 10px;" data-netdata="system.io" data-dimensions="out" data-chart-library="easypiechart" data-title="Disk Write" data-width="11%" data-points="'+n.toString()+'" data-common-units="system.io.mainhead" role="application"></div>'):"undefined"!==typeof t["system.pgpgio"]&&(a+='<div class="netdata-container" style="margin-right: 10px;" data-netdata="system.pgpgio" data-dimensions="in" data-chart-library="easypiechart" data-title="Disk Read" data-width="11%" data-points="'+n.toString()+'" data-common-units="system.pgpgio.mainhead" role="application"></div>',a+='<div class="netdata-container" style="margin-right: 10px;" data-netdata="system.pgpgio" data-dimensions="out" data-chart-library="easypiechart" data-title="Disk Write" data-width="11%" data-points="'+n.toString()+'" data-common-units="system.pgpgio.mainhead" role="application"></div>'),"undefined"!==typeof t["system.cpu"]&&(a+='<div class="netdata-container" style="margin-right: 10px;" data-netdata="system.cpu" data-chart-library="gauge" data-title="CPU" data-units="%" data-gauge-max-value="100" data-width="20%" data-points="'+n.toString()+'" data-colors="'+NETDATA.colors[12]+'" role="application"></div>'),"undefined"!==typeof t["system.net"]?(a+='<div class="netdata-container" style="margin-right: 10px;" data-netdata="system.net" data-dimensions="received" data-chart-library="easypiechart" data-title="Net Inbound" data-width="11%" data-points="'+n.toString()+'" data-common-units="system.net.mainhead" role="application"></div>',a+='<div class="netdata-container" style="margin-right: 10px;" data-netdata="system.net" data-dimensions="sent" data-chart-library="easypiechart" data-title="Net Outbound" data-width="11%" data-points="'+n.toString()+'" data-common-units="system.net.mainhead" role="application"></div>'):"undefined"!==typeof t["system.ip"]?(a+='<div class="netdata-container" style="margin-right: 10px;" data-netdata="system.ip" data-dimensions="received" data-chart-library="easypiechart" data-title="IP Inbound" data-width="11%" data-points="'+n.toString()+'" data-common-units="system.ip.mainhead" role="application"></div>',a+='<div class="netdata-container" style="margin-right: 10px;" data-netdata="system.ip" data-dimensions="sent" data-chart-library="easypiechart" data-title="IP Outbound" data-width="11%" data-points="'+n.toString()+'" data-common-units="system.ip.mainhead" role="application"></div>'):"undefined"!==typeof t["system.ipv4"]?(a+='<div class="netdata-container" style="margin-right: 10px;" data-netdata="system.ipv4" data-dimensions="received" data-chart-library="easypiechart" data-title="IPv4 Inbound" data-width="11%" data-points="'+n.toString()+'" data-common-units="system.ipv4.mainhead" role="application"></div>',a+='<div class="netdata-container" style="margin-right: 10px;" data-netdata="system.ipv4" data-dimensions="sent" data-chart-library="easypiechart" data-title="IPv4 Outbound" data-width="11%" data-points="'+n.toString()+'" data-common-units="system.ipv4.mainhead" role="application"></div>'):"undefined"!==typeof t["system.ipv6"]&&(a+='<div class="netdata-container" style="margin-right: 10px;" data-netdata="system.ipv6" data-dimensions="received" data-chart-library="easypiechart" data-title="IPv6 Inbound" data-units="kbps" data-width="11%" data-points="'+n.toString()+'" data-common-units="system.ipv6.mainhead" role="application"></div>',a+='<div class="netdata-container" style="margin-right: 10px;" data-netdata="system.ipv6" data-dimensions="sent" data-chart-library="easypiechart" data-title="IPv6 Outbound" data-units="kbps" data-width="11%" data-points="'+n.toString()+'" data-common-units="system.ipv6.mainhead" role="application"></div>'),"undefined"!==typeof t["system.ram"]&&(a+='<div class="netdata-container" style="margin-right: 10px;" data-netdata="system.ram" data-dimensions="used|buffers|active|wired" data-append-options="percentage" data-chart-library="easypiechart" data-title="Used RAM" data-units="%" data-easypiechart-max-value="100" data-width="9%" data-points="'+n.toString()+'" data-colors="'+NETDATA.colors[7]+'" role="application"></div>'),a}function generateHeadCharts(e,t,n){if("print"===urlOptions.mode)return"";var a="",r=netdataDashboard.anyAttribute(netdataDashboard.context,e,t.context,[]);if(r.length>0)for(var o=0,i=r.length;o<i;)"function"===typeof r[o]?a+=r[o](netdataDashboard.os,t.id).replace(/CHART_DURATION/g,n.toString()).replace(/CHART_UNIQUE_ID/g,t.id):a+=r[o].replace(/CHART_DURATION/g,n.toString()).replace(/CHART_UNIQUE_ID/g,t.id),o++;return a}function renderPage(e,t){var n=document.getElementById("charts_div"),a=Math.floor(100/chartsPerRow($(n).width())),r=60*Math.round($(n).width()*a/100*t.update_every/3/60);options.duration=r,options.update_every=t.update_every;for(var o,i,s,l="",c='<ul class="nav dashboard-sidenav" data-spy="affix" id="sidebar_ul">',d=headMain(netdataDashboard.os,t.charts,r),u=sortObjectByPriority(e),h=0,p=u.length,f="bottom"===_domains_chart_utils_transformDataAttributes__WEBPACK_IMPORTED_MODULE_15__.a.legendPosition,g=f?_domains_chart_utils_legend_utils__WEBPACK_IMPORTED_MODULE_14__.a:0;h<p;){var m=u[h++],b=NETDATA.name2id("menu_"+m);c+='<li class=""><a href="#'+b+'" onClick="return scrollToId(\''+b+"');\">"+e[m].icon+" "+e[m].title+'</a><ul class="nav">',l+='<div role="section" class="dashboard-section"><div role="sectionhead"><h1 id="'+b+'" role="heading">'+e[m].icon+" "+e[m].title+'</h1></div><div role="section" class="dashboard-subsection">',null!==e[m].info&&(l+=e[m].info);var v="",_='<div class="netdata-chart-row">'+d;d="";for(var y=sortObjectByPriority(e[m].submenus),x=0,O=y.length;x<O;){var w=y[x++],k=NETDATA.name2id("menu_"+m+"_submenu_"+w);c+='<li class><a href="#'+k+'" onClick="return scrollToId(\''+k+"');\">"+e[m].submenus[w].title+"</a></li>",v+='<div role="section" class="dashboard-section-container" id="'+k+'"><h2 id="'+k+'" class="netdata-chart-alignment" role="heading">'+e[m].submenus[w].title+"</h2>",null!==e[m].submenus[w].info&&(v+='<div class="dashboard-submenu-info netdata-chart-alignment" role="document">'+e[m].submenus[w].info+"</div>");var E='<div class="netdata-chart-row">',C="";e[m].submenus[w].charts.sort(prioritySort);for(var S=0,j=e[m].submenus[w].charts.length;S<j;){var D=e[m].submenus[w].charts[S++];_+=generateHeadCharts("mainheads",D,r),E+=generateHeadCharts("heads",D,r),"print"===urlOptions.mode&&(C+='<div role="row" class="dashboard-print-row">');var A=netdataDashboard.contextHeight(D.context,options.chartsHeight)+g;C+='<div class="netdata-chartblock-container" style="width: '+a.toString()+'%;">'+netdataDashboard.contextInfo(D.context)+'<div class="netdata-container" id="chart_'+NETDATA.name2id(D.id)+'" data-netdata="'+D.id+'" data-width="100%" data-height="'+A.toString()+'px" data-dygraph-valuerange="'+netdataDashboard.contextValueRange(D.context)+'" data-id="'+NETDATA.name2id(options.hostname+"/"+D.id)+'" data-colors="'+netdataDashboard.anyAttribute(netdataDashboard.context,"colors",D.context,"")+'" data-decimal-digits="'+netdataDashboard.contextDecimalDigits(D.context,-1)+'"'+(f?' data-legend-position="bottom"':"")+(o=D.family,i=D.context,s=D.units,"undefined"!==typeof netdataDashboard.anyAttribute(netdataDashboard.context,"commonMin",i,void 0)?' data-common-min="'+o+"/"+i+"/"+s+'"':"")+function(e,t,n){return"undefined"!==typeof netdataDashboard.anyAttribute(netdataDashboard.context,"commonMax",t,void 0)?' data-common-max="'+e+"/"+t+"/"+n+'"':""}(D.family,D.context,D.units)+' role="application"></div></div>',"print"===urlOptions.mode&&(C+="</div>")}v+=(E+="</div>")+C+"</div>"}c+="</ul></li>",l+=(_+="</div>")+v+'</div></div><hr role="separator"/>'}var T="dbengine"===t.memory_mode;c+='<li class="" style="padding-top:15px;"><a href="https://learn.netdata.cloud/docs/agent/collectors/quickstart/" target="_blank"><i class="fas fa-plus"></i> Add more charts</a></li>',c+='<li class=""><a href="https://learn.netdata.cloud/docs/agent/health/quickstart/" target="_blank"><i class="fas fa-plus"></i> Add more alarms</a></li>',c+='<li class="" style="margin:20px;color:#666;"><small>Every '+(1===t.update_every?"second":t.update_every.toString()+" seconds")+", Netdata collects <strong>"+t.dimensions_count.toLocaleString()+"</strong> metrics on "+t.hostname.toString()+", presents them in <strong>"+t.charts_count.toLocaleString()+"</strong> charts"+(T?"":",")+" and monitors them with <strong>"+t.alarms_count.toLocaleString()+"</strong> alarms.",T||(c+='<br />&nbsp;<br />Get more history by <a href="https://learn.netdata.cloud/guides/longer-metrics-storage#using-the-round-robin-database" target=_blank>configuring Netdata\'s <strong>history</strong></a> or switching to the <a href="https://learn.netdata.cloud/docs/agent/database/engine" target=_blank>database engine.</a>'),c+="<br/>&nbsp;<br/><strong>netdata</strong><br/>"+t.version.toString()+"</small>",c+="</li>",c+='<li id="sidebar-end-portal-container"></li>',c+="</ul>",n.innerHTML=l,document.getElementById("sidebar").innerHTML=c,!0===urlOptions.highlight&&reduxStore.dispatch(Object(_domains_global_actions__WEBPACK_IMPORTED_MODULE_2__.q)({after:urlOptions.highlight_after,before:urlOptions.highlight_before})),"print"===urlOptions.mode?printPage():finalizePage()}function renderChartsAndMenu(e){options.menus={},options.submenu_names={};var t,n=options.menus,a=e.charts;for(var r in a)if(a.hasOwnProperty(r)){var o=a[r];enrichChartData(o),"undefined"===typeof n[i=o.menu]?n[i]={menu_pattern:o.menu_pattern,priority:o.priority,submenus:{},title:netdataDashboard.menuTitle(o),icon:netdataDashboard.menuIcon(o),info:netdataDashboard.menuInfo(o),height:netdataDashboard.menuHeight(o)*options.chartsHeight}:("undefined"===typeof n[i].menu_pattern&&(n[i].menu_pattern=o.menu_pattern),o.priority<n[i].priority&&(n[i].priority=o.priority)),t="undefined"!==typeof n[i].menu_pattern?n[i].menu_pattern:i,"undefined"===typeof n[i].submenus[o.submenu]?n[i].submenus[o.submenu]={priority:o.priority,charts:[],title:null,info:netdataDashboard.submenuInfo(t,o.submenu),height:netdataDashboard.submenuHeight(t,o.submenu,n[i].height)}:o.priority<n[i].submenus[o.submenu].priority&&(n[i].submenus[o.submenu].priority=o.priority),n[i].submenus[o.submenu].charts.push(o)}for(var i in n)if(n.hasOwnProperty(i))for(var s in n[i].submenus)n[i].submenus.hasOwnProperty(s)&&("undefined"!==typeof options.submenu_names[s]?n[i].submenus[s].title=s+" ("+options.submenu_names[s]+")":(t="undefined"!==typeof n[i].menu_pattern?n[i].menu_pattern:i,n[i].submenus[s].title=netdataDashboard.submenuTitle(t,s)));renderPage(n,e)}window.netdataDashboard=netdataDashboard;var handleLoadJs=function(e,t,n){return e.catch((function(e){console.warn("error",e),alert("Cannot load required JS library: ".concat(t))})).then((function(){n()}))};function loadClipboard(e){handleLoadJs(__webpack_require__.e(8).then(__webpack_require__.bind(null,568)).then((function(e){window.clipboard=e})),"clipboard-polyfill",e)}function loadBootstrapTable(e){handleLoadJs(Promise.all([__webpack_require__.e(6).then(__webpack_require__.t.bind(null,569,7)).then((function(){return __webpack_require__.e(7).then(__webpack_require__.t.bind(null,570,7))})),__webpack_require__.e(10).then(__webpack_require__.t.bind(null,571,7))]),"bootstrap-table",e)}function loadBootstrapSlider(e){handleLoadJs(Promise.all([__webpack_require__.e(5).then(__webpack_require__.t.bind(null,572,7)).then((function(e){var t=e.default;window.Slider=t})),__webpack_require__.e(4).then(__webpack_require__.t.bind(null,573,7))]),"bootstrap-slider",e)}function loadLzString(e){handleLoadJs(__webpack_require__.e(9).then(__webpack_require__.t.bind(null,574,7)),"lz-string",e)}function loadPako(e){handleLoadJs(__webpack_require__.e(3).then(__webpack_require__.t.bind(null,575,7)).then((function(e){var t=e.default;window.pako=t})),"pako",e)}function alarmsUpdateModal(){var e='<h3>Raised Alarms</h3><table class="table">',t='<h3>All Running Alarms</h3><div class="panel-group" id="alarms_all_accordion" role="tablist" aria-multiselectable="true">',n='<hr/><a href="https://github.com/netdata/netdata/tree/master/web/api/badges#netdata-badges" target="_blank">netdata badges</a> refresh automatically. Their color indicates the state of the alarm: <span style="color: #e05d44"><b>&nbsp;red&nbsp;</b></span> is critical, <span style="color:#fe7d37"><b>&nbsp;orange&nbsp;</b></span> is warning, <span style="color: #4c1"><b>&nbsp;bright green&nbsp;</b></span> is ok, <span style="color: #9f9f9f"><b>&nbsp;light grey&nbsp;</b></span> is undefined (i.e. no data or no status), <span style="color: #000"><b>&nbsp;black&nbsp;</b></span> is not initialized. You can copy and paste their URLs to embed them in any web page.<br/>netdata can send notifications for these alarms. Check <a href="https://github.com/netdata/netdata/blob/master/health/notifications/health_alarm_notify.conf" target="_blank">this configuration file</a> for more information.';loadClipboard((function(){}));reduxStore.dispatch(_domains_global_actions__WEBPACK_IMPORTED_MODULE_2__.e.request({callback:function(a){if(options.alarm_families=[],null!==a){var r,o,i,s=0,l=0,c={},d=[];for(r in a.alarms)if(a.alarms.hasOwnProperty(r)){o=(i=a.alarms[r]).family;var u=options.data.charts[i.chart];"undefined"===typeof u&&(u=options.data.charts_by_name[i.chart]),"undefined"===typeof u?(console.log("WARNING: alarm "+r+" is linked to chart "+i.chart+", which is not found in the list of chart got from the server."),u={priority:9999999}):"undefined"!==typeof u.menu&&"undefined"!==typeof u.submenu&&(o=u.menu+" - "+u.submenu),"undefined"===typeof c[o]&&(c[o]={name:o,arr:[],priority:u.priority},d.push(c[o])),u.priority<c[o].priority&&(c[o].priority=u.priority),c[o].arr.unshift(i)}for(var h=d.sort((function(e,t){return e.priority<t.priority?-1:e.priority>t.priority?1:naturalSortCompare(e.name,t.name)})),p=0,f=0,g=h.length;g--;){o=h[p++].name;var m=!1;0!==f&&(t+="</table></div></div></div>"),t+='<div class="panel panel-default"><div class="panel-heading" role="tab" id="alarm_all_heading_'+f.toString()+'"><h4 class="panel-title"><a class="collapsed" role="button" data-toggle="collapse" data-parent="#alarms_all_accordion" href="#alarm_all_'+f.toString()+'" aria-expanded="false" aria-controls="alarm_all_'+f.toString()+'">'+o.toString()+'</a></h4></div><div id="alarm_all_'+f.toString()+'" class="panel-collapse collapse " role="tabpanel" aria-labelledby="alarm_all_heading_'+f.toString()+'" data-alarm-id="'+f.toString()+'"><div class="panel-body" id="alarm_all_body_'+f.toString()+'">',options.alarm_families[f]=c[o],f++;for(var b=c[o].arr,v=b.length;v--;)"WARNING"!==(i=b[v]).status&&"CRITICAL"!==i.status||(m||(m=!0,e+='<tr><th class="text-center" colspan="2"><h4>'+o+"</h4></th></tr>"),s++,e+=O(i,!0)),l++}e+="</table>",h.length>0&&(t+="</div></div></div>"),t+="</div>",e+=s?n:'<div style="width:100%; height: 100px; text-align: center;"><span style="font-size: 50px;"><i class="fas fa-thumbs-up"></i></span><br/>Everything is normal. No raised alarms.</div>',t+=l?n:"<h4>No alarms are running in this system.</h4>",document.getElementById("alarms_active").innerHTML=e,document.getElementById("alarms_all").innerHTML=t,enableTooltipsAndPopovers(),h.length>0&&w(0);var _=$("#alarms_all_accordion");_.on("show.bs.collapse",(function(e){var t=$(e.target);w($(t).data("alarm-id"))})),_.on("hidden.bs.collapse",(function(e){var t=$(e.target),n=$(t).data("alarm-id");$("#alarm_all_"+n.toString()).html("")})),document.getElementById("alarms_log").innerHTML='<h3>Alarm Log</h3><table id="alarms_log_table"></table>',loadBootstrapTable((function(){$("#alarms_log_table").bootstrapTable({url:"".concat(_utils_server_detection__WEBPACK_IMPORTED_MODULE_9__.b,"/api/v1/alarm_log?all"),cache:!1,pagination:!0,pageSize:10,showPaginationSwitch:!1,search:!0,searchTimeOut:300,searchAlign:"left",showColumns:!0,showExport:!0,exportDataType:"all",exportOptions:{fileName:"netdata_alarm_log"},onClickRow:function(e){return scrollToChartAfterHidingModal(e.chart,1e3*e.when,e.status),$("#alarmsModal").modal("hide"),!1},rowStyle:function(e){switch(e.status){case"CRITICAL":return{classes:"danger"};case"WARNING":return{classes:"warning"};case"UNDEFINED":return{classes:"info"};case"CLEAR":return{classes:"success"}}return{}},showFooter:!1,showHeader:!0,showRefresh:!0,showToggle:!1,sortable:!0,silentSort:!1,columns:[{field:"when",title:"Event Date",valign:"middle",titleTooltip:"The date and time the even took place",formatter:function(e,t,n){return x(e," ")},align:"center",switchable:!1,sortable:!0},{field:"hostname",title:"Host",valign:"middle",titleTooltip:"The host that generated this event",align:"center",visible:!1,sortable:!0},{field:"unique_id",title:"Unique ID",titleTooltip:"The host unique ID for this event",formatter:function(e,t,n){return y(e)},align:"center",valign:"middle",visible:!1,sortable:!0},{field:"alarm_id",title:"Alarm ID",titleTooltip:"The ID of the alarm that generated this event",formatter:function(e,t,n){return y(e)},align:"center",valign:"middle",visible:!1,sortable:!0},{field:"alarm_event_id",title:"Alarm Event ID",titleTooltip:"The incremental ID of this event for the given alarm",formatter:function(e,t,n){return y(e)},align:"center",valign:"middle",visible:!1,sortable:!0},{field:"chart",title:"Chart",titleTooltip:"The chart the alarm is attached to",align:"center",valign:"middle",switchable:!1,sortable:!0},{field:"family",title:"Family",titleTooltip:"The family of the chart the alarm is attached to",align:"center",valign:"middle",visible:!1,sortable:!0},{field:"name",title:"Alarm",titleTooltip:"The alarm name that generated this event",formatter:function(e,t,n){return e.toString().replace(/_/g," ")},align:"center",valign:"middle",switchable:!1,sortable:!0},{field:"value_string",title:"Friendly Value",titleTooltip:"The value of the alarm, that triggered this event",align:"right",valign:"middle",sortable:!0},{field:"old_value_string",title:"Friendly Old Value",titleTooltip:"The value of the alarm, just before this event",align:"right",valign:"middle",visible:!1,sortable:!0},{field:"old_value",title:"Old Value",titleTooltip:"The value of the alarm, just before this event",formatter:function(e,t,n){return(null!==e?Math.round(100*e)/100:"NaN").toString()},align:"center",valign:"middle",visible:!1,sortable:!0},{field:"value",title:"Value",titleTooltip:"The value of the alarm, that triggered this event",formatter:function(e,t,n){return(null!==e?Math.round(100*e)/100:"NaN").toString()},align:"right",valign:"middle",visible:!1,sortable:!0},{field:"units",title:"Units",titleTooltip:"The units of the value of the alarm",align:"left",valign:"middle",visible:!1,sortable:!0},{field:"old_status",title:"Old Status",titleTooltip:"The status of the alarm, just before this event",align:"center",valign:"middle",visible:!1,sortable:!0},{field:"status",title:"Status",titleTooltip:"The status of the alarm, that was set due to this event",align:"center",valign:"middle",switchable:!1,sortable:!0},{field:"duration",title:"Last Duration",titleTooltip:"The duration the alarm was at its previous state, just before this event",formatter:function(e,t,n){return Object(_domains_chart_utils_seconds4human__WEBPACK_IMPORTED_MODULE_4__.a)(e,{negative_suffix:"",space:" ",now:"no time"})},align:"center",valign:"middle",visible:!1,sortable:!0},{field:"non_clear_duration",title:"Raised Duration",titleTooltip:"The duration the alarm was raised, just before this event",formatter:function(e,t,n){return Object(_domains_chart_utils_seconds4human__WEBPACK_IMPORTED_MODULE_4__.a)(e,{negative_suffix:"",space:" ",now:"no time"})},align:"center",valign:"middle",visible:!1,sortable:!0},{field:"recipient",title:"Recipient",titleTooltip:"The recipient of this event",align:"center",valign:"middle",visible:!1,sortable:!0},{field:"processed",title:"Processed Status",titleTooltip:"True when this event is processed",formatter:function(e,t,n){return!0===e?"DONE":"PENDING"},align:"center",valign:"middle",visible:!1,sortable:!0},{field:"updated",title:"Updated Status",titleTooltip:"True when this event has been updated by another event",formatter:function(e,t,n){return!0===e?"UPDATED":"CURRENT"},align:"center",valign:"middle",visible:!1,sortable:!0},{field:"updated_by_id",title:"Updated By ID",titleTooltip:"The unique ID of the event that obsoleted this one",formatter:function(e,t,n){return y(e)},align:"center",valign:"middle",visible:!1,sortable:!0},{field:"updates_id",title:"Updates ID",titleTooltip:"The unique ID of the event obsoleted because of this event",formatter:function(e,t,n){return y(e)},align:"center",valign:"middle",visible:!1,sortable:!0},{field:"exec",title:"Script",titleTooltip:"The script to handle the event notification",align:"center",valign:"middle",visible:!1,sortable:!0},{field:"exec_run",title:"Script Run At",titleTooltip:"The date and time the script has been ran",formatter:function(e,t,n){return x(e," ")},align:"center",valign:"middle",visible:!1,sortable:!0},{field:"exec_code",title:"Script Return Value",titleTooltip:"The return code of the script",formatter:function(e,t,n){return 0===e?"OK (returned 0)":"FAILED (with code "+e.toString()+")"},align:"center",valign:"middle",visible:!1,sortable:!0},{field:"delay",title:"Script Delay",titleTooltip:"The hysteresis of the notification",formatter:function(e,t,n){return Object(_domains_chart_utils_seconds4human__WEBPACK_IMPORTED_MODULE_4__.a)(e,{negative_suffix:"",space:" ",now:"no time"})},align:"center",valign:"middle",visible:!1,sortable:!0},{field:"delay_up_to_timestamp",title:"Script Delay Run At",titleTooltip:"The date and time the script should be run, after hysteresis",formatter:function(e,t,n){return x(e," ")},align:"center",valign:"middle",visible:!1,sortable:!0},{field:"info",title:"Description",titleTooltip:"A short description of the alarm",align:"center",valign:"middle",visible:!1,sortable:!0},{field:"source",title:"Alarm Source",titleTooltip:"The source of configuration of the alarm",align:"center",valign:"middle",visible:!1,sortable:!0}]})}))}else document.getElementById("alarms_active").innerHTML=document.getElementById("alarms_all").innerHTML=document.getElementById("alarms_log").innerHTML="failed to load alarm data!";function y(e){return 0===e?"-":e.toString()}function x(e,t){if(0===e)return"-";"undefined"===typeof t&&(t="&nbsp;");var n=new Date(1e3*e);return n.toLocaleDateString()+t+n.toLocaleTimeString()}function O(e,t){var n=options.data.charts[e.chart];if("undefined"===typeof n&&"undefined"===typeof(n=options.data.charts_by_name[e.chart]))return console.log("Cannot find chart "+e.chart+", you probably need to refresh the page."),"";var a="undefined"!==typeof e.warn||"undefined"!==typeof e.crit,r="".concat(_utils_server_detection__WEBPACK_IMPORTED_MODULE_9__.b,"/api/v1/badge.svg?chart=").concat(e.chart,"&alarm=").concat(e.name,"&refresh=auto"),o="<br/>&nbsp;<br/>role: <b>"+e.recipient+'</b><br/>&nbsp;<br/><div class="action-button ripple" title="click to scroll the dashboard to the chart of this alarm" data-toggle="tooltip" data-placement="bottom" onClick="scrollToChartAfterHidingModal(\''+e.chart+"', "+1e3*e.last_status_change+", '"+e.status+'\'); $(\'#alarmsModal\').modal(\'hide\'); return false;"><i class="fab fa-periscope"></i></div><div class="action-button ripple" title="click to copy to the clipboard the URL of this badge" data-toggle="tooltip" data-placement="bottom" onClick="clipboardCopy(\''+r+'\'); return false;"><i class="far fa-copy"></i></div><div class="action-button ripple" title="click to copy to the clipboard an auto-refreshing <code>embed</code> html element for this badge" data-toggle="tooltip" data-placement="bottom" onClick="clipboardCopyBadgeEmbed(\''+r+'\'); return false;"><i class="fas fa-copy"></i></div>',i='<tr><td class="text-center" style="vertical-align: middle; word-break: break-word;" width="40%"><b>'+e.chart+'</b><br/>&nbsp;<br/><embed src="'+r+'" type="image/svg+xml" height="20"/><br/>&nbsp;<br/><span style="font-size: 18px;">'+e.info+"</span>"+o+'</td><td><table class="table">'+("undefined"!==typeof e.warn?'<tr><td width="10%" style="text-align:right">warning&nbsp;when</td><td><span style="font-family: monospace; color:#fe7d37; font-weight: bold;">'+e.warn+"</span></td></tr>":"")+("undefined"!==typeof e.crit?'<tr><td width="10%" style="text-align:right">critical&nbsp;when</td><td><span style="font-family: monospace; color: #e05d44; font-weight: bold;">'+e.crit+"</span></td></tr>":"");if(!0===t){var s=n.units;"%"===s&&(s="&#37;"),i+=("undefined"!==typeof e.lookup_after?'<tr><td width="10%" style="text-align:right">db&nbsp;lookup</td><td>'+function(e,t){var n=" of all values ";return t.dimensions.length>1&&(n=" of the sum of all dimensions "),"undefined"!==typeof e.lookup_dimensions&&(n=e.lookup_dimensions.replace(/|/g,",").split(",").length>1?"of the sum of dimensions <code>"+e.lookup_dimensions+"</code> ":"of all values of dimension <code>"+e.lookup_dimensions+"</code> "),"<code>"+e.lookup_method+"</code> "+n+", of chart <code>"+e.chart+"</code>, starting <code>"+Object(_domains_chart_utils_seconds4human__WEBPACK_IMPORTED_MODULE_4__.a)(e.lookup_after+e.lookup_before,{space:"&nbsp;"})+"</code> and up to <code>"+Object(_domains_chart_utils_seconds4human__WEBPACK_IMPORTED_MODULE_4__.a)(e.lookup_before,{space:"&nbsp;"})+"</code>"+(e.lookup_options?", with options <code>"+e.lookup_options.replace(/ /g,",&nbsp;")+"</code>":"")+"."}(e,n)+"</td></tr>":"")+("undefined"!==typeof e.calc?'<tr><td width="10%" style="text-align:right">calculation</td><td><span style="font-family: monospace;">'+e.calc+"</span></td></tr>":"")+(null!==n.green?'<tr><td width="10%" style="text-align:right">green&nbsp;threshold</td><td><code>'+n.green+" "+s+"</code></td></tr>":"")+(null!==n.red?'<tr><td width="10%" style="text-align:right">red&nbsp;threshold</td><td><code>'+n.red+" "+s+"</code></td></tr>":"")}e.warn_repeat_every>0&&(i+='<tr><td width="10%" style="text-align:right">repeat&nbsp;warning</td><td>'+Object(_domains_chart_utils_seconds4human__WEBPACK_IMPORTED_MODULE_4__.a)(e.warn_repeat_every)+"</td></tr>"),e.crit_repeat_every>0&&(i+='<tr><td width="10%" style="text-align:right">repeat&nbsp;critical</td><td>'+Object(_domains_chart_utils_seconds4human__WEBPACK_IMPORTED_MODULE_4__.a)(e.crit_repeat_every)+"</td></tr>");var l="";return(e.delay_up_duration>0||e.delay_down_duration>0)&&0!==e.delay_multiplier&&e.delay_max_duration>0&&(e.delay_up_duration===e.delay_down_duration?l+="<small><br/>hysteresis "+Object(_domains_chart_utils_seconds4human__WEBPACK_IMPORTED_MODULE_4__.a)(e.delay_up_duration,{space:"&nbsp;",negative_suffix:""}):(l="<small><br/>hysteresis ",e.delay_up_duration>0&&(l+="on&nbsp;escalation&nbsp;<code>"+Object(_domains_chart_utils_seconds4human__WEBPACK_IMPORTED_MODULE_4__.a)(e.delay_up_duration,{space:"&nbsp;",negative_suffix:""})+"</code>, "),e.delay_down_duration>0&&(l+="on&nbsp;recovery&nbsp;<code>"+Object(_domains_chart_utils_seconds4human__WEBPACK_IMPORTED_MODULE_4__.a)(e.delay_down_duration,{space:"&nbsp;",negative_suffix:""})+"</code>, ")),1!==e.delay_multiplier&&(l+="multiplied&nbsp;by&nbsp;<code>"+e.delay_multiplier.toString()+"</code>",l+=",&nbsp;up&nbsp;to&nbsp;<code>"+Object(_domains_chart_utils_seconds4human__WEBPACK_IMPORTED_MODULE_4__.a)(e.delay_max_duration,{space:"&nbsp;",negative_suffix:""})+"</code>"),l+="</small>"),i+='<tr><td width="10%" style="text-align:right">check&nbsp;every</td><td>'+Object(_domains_chart_utils_seconds4human__WEBPACK_IMPORTED_MODULE_4__.a)(e.update_every,{space:"&nbsp;",negative_suffix:""})+"</td></tr>"+(!0===a?'<tr><td width="10%" style="text-align:right">execute</td><td><span style="font-family: monospace;">'+e.exec+"</span>"+l+"</td></tr>":"")+'<tr><td width="10%" style="text-align:right">source</td><td><span style="font-family: monospace; word-break: break-word;">'+e.source+"</span></td></tr></table></td></tr>"}function w(e){for(var t='<table class="table">',n=options.alarm_families[e],a=n.arr.length;a--;){t+=O(n.arr[a],!0)}t+="</table>",$("#alarm_all_"+e.toString()).html(t),enableTooltipsAndPopovers()}},serverDefault:_utils_server_detection__WEBPACK_IMPORTED_MODULE_9__.b}))}function initializeDynamicDashboardWithData(e){if(null!==e){options.hostname=e.hostname,options.data=e,options.version=e.version,options.release_channel=e.release_channel,options.timezone=e.timezone,netdataDashboard.os=e.os,"undefined"!==typeof e.hosts&&(options.hosts=e.hosts),document.getElementById("netdataVersion").innerHTML=options.version,document.title=options.hostname+" netdata dashboard",e.charts_by_name={};var t,n=e.charts;for(t in n)if(n.hasOwnProperty(t)){var a=n[t];e.charts_by_name[a.name]=a}renderChartsAndMenu(e)}}window.clipboardCopy=function(e){clipboard.writeText(e)},window.clipboardCopyBadgeEmbed=function(e){clipboard.writeText('<embed src="'+e+'" type="image/svg+xml" height="20"/>')};var initializeConfig={url:null,custom_info:!0},loadDashboardInfo=Object(ramda__WEBPACK_IMPORTED_MODULE_0__.a)(ramda__WEBPACK_IMPORTED_MODULE_1__.a,(function(){return $.ajax({url:"".concat(_utils_server_detection__WEBPACK_IMPORTED_MODULE_9__.b,"dashboard_info.js"),cache:!0,dataType:"script",xhrFields:{withCredentials:!0}}).fail((function(){alert("Cannot load required JS library: dashboard_info.js")}))}));function loadCustomDashboardInfo(e,t){$.ajax({url:e,cache:!0,dataType:"script",xhrFields:{withCredentials:!0}}).fail((function(){alert("Cannot load required JS library: ".concat(e))})).always((function(){$.extend(!0,netdataDashboard,customDashboard),t()}))}function initializeChartsAndCustomInfo(){loadDashboardInfo().then((function(){NETDATA.chartRegistry.downloadAll(initializeConfig.url,(function(e){null!==e&&(reduxStore.dispatch(Object(_domains_global_actions__WEBPACK_IMPORTED_MODULE_2__.c)({data:e})),!0===initializeConfig.custom_info&&"undefined"!==typeof e.custom_info&&""!==e.custom_info&&null===window.netdataSnapshotData?loadCustomDashboardInfo(_utils_server_detection__WEBPACK_IMPORTED_MODULE_9__.b+e.custom_info,(function(){initializeDynamicDashboardWithData(e)})):initializeDynamicDashboardWithData(e))}))}))}function initializeDynamicDashboard(e){e&&(reduxStore=e,netdataPrepCallback(),initializeConfig.url=_utils_server_detection__WEBPACK_IMPORTED_MODULE_9__.b),"undefined"!==typeof netdataCheckXSS&&!0===netdataCheckXSS?(document.getElementById("netdataXssModalServer").innerText=initializeConfig.url,$("#xssModal").modal("show")):initializeChartsAndCustomInfo()}function versionLog(e){document.getElementById("versionCheckLog").innerHTML=e}function versionsMatch(e,t){if(e==t)return!0;var n=e.split("."),a=t.split("."),r=parseInt(n[0].substring(1,2),10),o=parseInt(a[0].substring(1,2),10);return!(r<o)&&(r>o||!((r=parseInt(n[1],10))<(o=parseInt(a[1],10)))&&(r>o||(n=n[2].split("-"),a=a[2].split("-"),!((r=parseInt(n[0],10))<(o=parseInt(a[0],10)))&&(r>o||!((r=n.length>1?parseInt(n[1],10):0)<(o=a.length>1?parseInt(a[1],10):0))))))}function getGithubLatestVersion(e){versionLog("Downloading latest version id from github..."),$.ajax({url:"https://api.github.com/repos/netdata/netdata/releases/latest",async:!0,cache:!1}).done((function(t){versionLog("Latest stable version from github is "+(t=t.tag_name.replace(/(\r\n|\n|\r| |\t)/gm,""))),e(t)})).fail((function(){versionLog("Failed to download the latest stable version id from github!"),e(null)}))}function getGCSLatestVersion(e){versionLog("Downloading latest version id from GCS..."),$.ajax({url:"https://www.googleapis.com/storage/v1/b/netdata-nightlies/o/latest-version.txt",async:!0,cache:!1}).done((function(t){$.ajax({url:t.mediaLink,async:!0,cache:!1}).done((function(t){versionLog("Latest nightly version from GCS is "+(t=t.replace(/(\r\n|\n|\r| |\t)/gm,""))),e(t)})).fail((function(t,n,a){versionLog("Failed to download the latest nightly version id from GCS!"),e(null)}))})).fail((function(t,n,a){versionLog("Failed to download the latest nightly version from GCS!"),e(null)}))}function checkForUpdateByVersion(e,t){return"stable"===options.release_channel?getGithubLatestVersion((function(e){t(options.version,e)})):getGCSLatestVersion((function(e){t(options.version,e)})),null}function showPageFooter(){document.getElementById("footer").style.display="block"}function printPage(){window.NETDATA.parseDom(),!0===urlOptions.pan_and_zoom&&reduxStore.dispatch(Object(_domains_global_actions__WEBPACK_IMPORTED_MODULE_2__.r)({after:urlOptions.after,before:urlOptions.before})),showPageFooter()}function jsonStringifyFn(e){return JSON.stringify(e,(function(e,t){return"function"===typeof t?t.toString():t}))}function jsonParseFn(str){return JSON.parse(str,(function(key,value){return"string"!=typeof value?value:"function"==value.substring(0,8)?eval("("+value+")"):value}))}window.xssModalDisableXss=function(){return NETDATA.xss.enabled=!1,NETDATA.xss.enabled_for_data=!1,initializeConfig.custom_info=!0,initializeChartsAndCustomInfo(),!1},window.xssModalKeepXss=function(){return NETDATA.xss.enabled=!0,NETDATA.xss.enabled_for_data=!0,initializeConfig.custom_info=!1,initializeChartsAndCustomInfo(),!1},window.notifyForUpdate=function(e){versionLog("<p>checking for updates...</p>");var t=Date.now();if("undefined"===typeof e||!0!==e){var n=loadLocalStorage("last_update_check");if(n="string"===typeof n?parseInt(n):0,t-n<288e5)return}checkForUpdateByVersion(e,(function(e,n){var a=!1;if(null===e)a=!1,versionLog('<p><big>Failed to get your netdata version!</big></p><p>You can always get the latest netdata from <a href="https://github.com/netdata/netdata" target="_blank">its github page</a>.</p>');else if(null===n)a=!1,versionLog('<p><big>Failed to get the latest netdata version.</big></p><p>You can always get the latest netdata from <a href="https://github.com/netdata/netdata" target="_blank">its github page</a>.</p>');else if(versionsMatch(e,n))a=!0,versionLog('<p><big>You already have the latest netdata!</big></p><p>No update yet?<br/>We probably need some motivation to keep going on!</p><p>If you haven\'t already, <a href="https://github.com/netdata/netdata" target="_blank">give netdata a <b><i class="fas fa-star"></i></b> at its github page</a>.</p>');else{a=!0;versionLog("<p><big><strong>New version of netdata available!</strong></big></p><p>Latest version: <b><code>"+n+'</code></b></p><p><a href="https://learn.netdata.cloud/docs/agent/changelog/" target="_blank">Click here for the changes log</a> and<br/><a href="https://github.com/netdata/netdata/tree/master/packaging/installer/UPDATE.md" target="_blank">click here for directions on updating</a> your netdata installation.</p><p>We suggest to review the changes log for new features you may be interested, or important bug fixes you may need.<br/>Keeping your netdata updated is generally a good idea.</p>')}a&&saveLocalStorage("last_update_check",t.toString())}))},window.printPreflight=function(){var e=document.location.origin.toString()+document.location.pathname.toString()+document.location.search.toString()+urlOptions.genHash()+";mode=print",t=90*screen.height/100;window.open(e,"","width="+990..toString()+",height="+t.toString()+",menubar=no,toolbar=no,personalbar=no,location=no,resizable=no,scrollbars=yes,status=no,chrome=yes,centerscreen=yes,attention=yes,dialog=yes"),$("#printPreflightModal").modal("hide")};var snapshotOptions={bytes_per_chart:2048,compressionDefault:"pako.deflate.base64",compressions:{none:{bytes_per_point_memory:5.2,bytes_per_point_disk:5.6,compress:function(e){return e},compressed_length:function(e){return e.length},uncompress:function(e){return e}},"pako.deflate.base64":{bytes_per_point_memory:1.8,bytes_per_point_disk:1.9,compress:function(e){return btoa(pako.deflate(e,{to:"string"}))},compressed_length:function(e){return e.length},uncompress:function(e){return pako.inflate(atob(e),{to:"string"})}},"pako.deflate":{bytes_per_point_memory:1.4,bytes_per_point_disk:3.2,compress:function(e){return pako.deflate(e,{to:"string"})},compressed_length:function(e){return e.length},uncompress:function(e){return pako.inflate(e,{to:"string"})}},"lzstring.utf16":{bytes_per_point_memory:1.7,bytes_per_point_disk:2.6,compress:function(e){return LZString.compressToUTF16(e)},compressed_length:function(e){return 2*e.length},uncompress:function(e){return LZString.decompressFromUTF16(e)}},"lzstring.base64":{bytes_per_point_memory:2.1,bytes_per_point_disk:2.3,compress:function(e){return LZString.compressToBase64(e)},compressed_length:function(e){return e.length},uncompress:function(e){return LZString.decompressFromBase64(e)}},"lzstring.uri":{bytes_per_point_memory:2.1,bytes_per_point_disk:2.3,compress:function(e){return LZString.compressToEncodedURIComponent(e)},compressed_length:function(e){return e.length},uncompress:function(e){return LZString.decompressFromEncodedURIComponent(e)}}}};function loadSnapshotModalLog(e,t){document.getElementById("loadSnapshotStatus").className="alert alert-"+e,document.getElementById("loadSnapshotStatus").innerHTML=t}var tmpSnapshotData=null;function loadSnapshotPreflightFile(e){var t=NETDATA.xss.string(e.name),n=new FileReader;n.onload=function(e){document.getElementById("loadSnapshotFilename").innerHTML=t;var n=null;try{n=NETDATA.xss.checkAlways("snapshot",JSON.parse(e.target.result),/^(snapshot\.info|snapshot\.data)$/);var a=new Date(n.after_ms),r=new Date(n.before_ms);"undefined"===typeof n.charts_ok&&(n.charts_ok="unknown"),"undefined"===typeof n.charts_failed&&(n.charts_failed=0),"undefined"===typeof n.compression&&(n.compression="none"),"undefined"===typeof n.data_size&&(n.data_size=0),document.getElementById("loadSnapshotFilename").innerHTML="<code>"+t+"</code>",document.getElementById("loadSnapshotHostname").innerHTML="<b>"+n.hostname+"</b>, netdata version: <b>"+n.netdata_version.toString()+"</b>",document.getElementById("loadSnapshotURL").innerHTML=n.url,document.getElementById("loadSnapshotCharts").innerHTML=n.charts.charts_count.toString()+" charts, "+n.charts.dimensions_count.toString()+" dimensions, "+n.data_points.toString()+" points per dimension, "+Math.round(n.duration_ms/n.data_points).toString()+" ms per point",document.getElementById("loadSnapshotInfo").innerHTML="version: <b>"+n.snapshot_version.toString()+"</b>, includes <b>"+n.charts_ok.toString()+"</b> unique chart data queries "+(n.charts_failed>0?"<b>"+n.charts_failed.toString()+"</b> failed":"").toString()+", compressed with <code>"+n.compression.toString()+"</code>, data size "+(Math.round(100*n.data_size/1024/1024)/100).toString()+" MB",document.getElementById("loadSnapshotTimeRange").innerHTML="<b>"+localeDateString(a)+" "+localeTimeString(a)+"</b> to <b>"+localeDateString(r)+" "+localeTimeString(r)+"</b>",document.getElementById("loadSnapshotComments").innerHTML=(n.comments?n.comments:"").toString(),loadSnapshotModalLog("success","File loaded, click <b>Import</b> to render it!"),$("#loadSnapshotImport").removeClass("disabled"),tmpSnapshotData=n}catch(e){console.log(e),document.getElementById("loadSnapshotStatus").className="alert alert-danger",document.getElementById("loadSnapshotStatus").innerHTML="Failed to parse this file!",$("#loadSnapshotImport").addClass("disabled")}},n.readAsText(e)}function loadSnapshotPreflightEmpty(){document.getElementById("loadSnapshotFilename").innerHTML="",document.getElementById("loadSnapshotHostname").innerHTML="",document.getElementById("loadSnapshotURL").innerHTML="",document.getElementById("loadSnapshotCharts").innerHTML="",document.getElementById("loadSnapshotInfo").innerHTML="",document.getElementById("loadSnapshotTimeRange").innerHTML="",document.getElementById("loadSnapshotComments").innerHTML="",loadSnapshotModalLog("success","Browse for a snapshot file (or drag it and drop it here), then click <b>Import</b> to render it."),$("#loadSnapshotImport").addClass("disabled")}window.loadSnapshot=function(){if($("#loadSnapshotImport").addClass("disabled"),null===tmpSnapshotData)return loadSnapshotPreflightEmpty(),void loadSnapshotModalLog("danger","no data have been loaded");loadPako((function(){loadLzString((function(){if(loadSnapshotModalLog("info","Please wait, activating snapshot..."),$("#loadSnapshotModal").modal("hide"),netdataShowAlarms=!1,netdataRegistry=!1,netdataServer=tmpSnapshotData.server,document.getElementById("charts_div").innerHTML="",document.getElementById("sidebar").innerHTML="","undefined"!==typeof tmpSnapshotData.hash?urlOptions.hash=tmpSnapshotData.hash:urlOptions.hash="#","undefined"!==typeof tmpSnapshotData.info){var e=jsonParseFn(tmpSnapshotData.info);"undefined"!==typeof e.menu&&(netdataDashboard.menu=e.menu),"undefined"!==typeof e.submenu&&(netdataDashboard.submenu=e.submenu),"undefined"!==typeof e.context&&(netdataDashboard.context=e.context)}"string"!==typeof tmpSnapshotData.compression&&(tmpSnapshotData.compression="none"),"undefined"===typeof snapshotOptions.compressions[tmpSnapshotData.compression]&&(alert("unknown compression method: "+tmpSnapshotData.compression),tmpSnapshotData.compression="none"),tmpSnapshotData.uncompress=snapshotOptions.compressions[tmpSnapshotData.compression].uncompress,window.NETDATA.parseDom(),reduxStore.dispatch(Object(_domains_global_actions__WEBPACK_IMPORTED_MODULE_2__.g)({snapshot:tmpSnapshotData})),window.netdataSnapshotData=tmpSnapshotData,urlOptions.after=tmpSnapshotData.after_ms,urlOptions.before=tmpSnapshotData.before_ms,"undefined"!==typeof tmpSnapshotData.highlight_after_ms&&null!==tmpSnapshotData.highlight_after_ms&&tmpSnapshotData.highlight_after_ms>0&&"undefined"!==typeof tmpSnapshotData.highlight_before_ms&&null!==tmpSnapshotData.highlight_before_ms&&tmpSnapshotData.highlight_before_ms>0?(urlOptions.highlight_after=tmpSnapshotData.highlight_after_ms,urlOptions.highlight_before=tmpSnapshotData.highlight_before_ms,urlOptions.highlight=!0):(urlOptions.highlight_after=0,urlOptions.highlight_before=0,urlOptions.highlight=!1),netdataCheckXSS=!1,NETDATA.xss.enabled=!0,NETDATA.xss.enabled_for_data=!0,loadSnapshotPreflightEmpty(),initializeDynamicDashboard()}))}))};var loadSnapshotDragAndDropInitialized=!1;function loadSnapshotDragAndDropSetup(){!1===loadSnapshotDragAndDropInitialized&&(loadSnapshotDragAndDropInitialized=!0,$("#loadSnapshotDragAndDrop").on("drag dragstart dragend dragover dragenter dragleave drop",(function(e){e.preventDefault(),e.stopPropagation()})).on("drop",(function(e){e.originalEvent.dataTransfer.files.length?loadSnapshotPreflightFile(e.originalEvent.dataTransfer.files.item(0)):(loadSnapshotPreflightEmpty(),loadSnapshotModalLog("danger","No file selected"))})))}window.loadSnapshotPreflight=function(){var e=document.getElementById("loadSnapshotSelectFiles").files;if(!e.length)return loadSnapshotPreflightEmpty(),void loadSnapshotModalLog("danger","No file selected");loadSnapshotModalLog("info","Loading file..."),loadSnapshotPreflightFile(e.item(0))};var saveSnapshotStop=!1;function saveSnapshotCancel(){reduxStore.dispatch(Object(_domains_dashboard_actions__WEBPACK_IMPORTED_MODULE_6__.f)()),saveSnapshotStop=!0}var saveSnapshotModalInitialized=!1;function saveSnapshotModalSetup(){!1===saveSnapshotModalInitialized&&(saveSnapshotModalInitialized=!0,$("#saveSnapshotModal").on("hide.bs.modal",saveSnapshotCancel).on("show.bs.modal",saveSnapshotModalInit).on("shown.bs.modal",(function(){$("#saveSnapshotResolutionSlider").find(".slider-handle:first").attr("tabindex",1),document.getElementById("saveSnapshotComments").focus()})))}function saveSnapshotModalLog(e,t){document.getElementById("saveSnapshotStatus").className="alert alert-"+e,document.getElementById("saveSnapshotStatus").innerHTML=t}function saveSnapshotModalShowExpectedSize(){var e=Math.round(saveSnapshotViewDuration/saveSnapshotSelectedSecondsPerPoint),t="info",n="A moderate snapshot.",a=Math.round(10*(options.data.charts_count*snapshotOptions.bytes_per_chart+options.data.dimensions_count*e*snapshotOptions.compressions[saveSnapshotCompression].bytes_per_point_disk)/1024/1024)/10,r=Math.round(10*(options.data.charts_count*snapshotOptions.bytes_per_chart+options.data.dimensions_count*e*snapshotOptions.compressions[saveSnapshotCompression].bytes_per_point_memory)/1024/1024)/10;a<10&&(t="success",n="A nice small snapshot!"),a>50&&(t="warning",n="Will stress your browser..."),a>100&&(t="danger",n="Hm... good luck..."),saveSnapshotModalLog(t,"The snapshot will have "+e.toString()+" points per dimension. Expected size on disk "+a+" MB, at browser memory "+r+" MB.<br/>"+n)}var saveSnapshotCompression=snapshotOptions.compressionDefault;function saveSnapshotSetCompression(e){saveSnapshotCompression=e,document.getElementById("saveSnapshotCompressionName").innerHTML=saveSnapshotCompression,saveSnapshotModalShowExpectedSize()}var saveSnapshotSlider=null,saveSnapshotSelectedSecondsPerPoint=1,saveSnapshotViewDuration=1,browser_timezone;function saveSnapshotModalInit(){$("#saveSnapshotModalProgressSection").hide(),$("#saveSnapshotResolutionRadio").show(),saveSnapshotModalLog("info","Select resolution and click <b>Save</b>"),$("#saveSnapshotExport").removeClass("disabled"),loadBootstrapSlider((function(){saveSnapshotViewDuration=options.duration;var e=Math.round(Date.now()-1e3*saveSnapshotViewDuration),t=reduxStore.getState(),n=Object(_domains_global_selectors__WEBPACK_IMPORTED_MODULE_3__.m)(t);Boolean(n)&&(saveSnapshotViewDuration=Math.round((n.before-n.after)/1e3),e=n.after);var a=new Date(e),r=a.getFullYear()+Object(_utils_units_conversion__WEBPACK_IMPORTED_MODULE_5__.b)(a.getMonth()+1)+Object(_utils_units_conversion__WEBPACK_IMPORTED_MODULE_5__.b)(a.getDate())+"-"+Object(_utils_units_conversion__WEBPACK_IMPORTED_MODULE_5__.b)(a.getHours())+Object(_utils_units_conversion__WEBPACK_IMPORTED_MODULE_5__.b)(a.getMinutes())+Object(_utils_units_conversion__WEBPACK_IMPORTED_MODULE_5__.b)(a.getSeconds());document.getElementById("saveSnapshotFilename").value="netdata-"+options.hostname.toString()+"-"+r.toString()+"-"+saveSnapshotViewDuration.toString()+".snapshot",saveSnapshotSetCompression(saveSnapshotCompression);var o=options.update_every,i=Math.round(saveSnapshotViewDuration/100);Boolean(n)&&(i=Math.round(saveSnapshotViewDuration/50));var s=Math.round(saveSnapshotViewDuration/Math.round($(document.getElementById("charts_div")).width()/2));i<10&&(i=10),i<o&&(i=o),s<o&&(s=o),s>i&&(s=i),null!==saveSnapshotSlider&&saveSnapshotSlider.destroy(),saveSnapshotSlider=new Slider("#saveSnapshotResolutionSlider",{ticks:[o,s,i],min:o,max:i,step:options.update_every,value:s,scale:i>100?"logarithmic":"linear",tooltip:"always",formatter:function(e){e<1&&(e=1),e<options.data.update_every&&(e=options.data.update_every),saveSnapshotSelectedSecondsPerPoint=e,saveSnapshotModalShowExpectedSize();var t=" seconds ";return 1===e&&(t=" second "),e+t+"per point"+(e===options.data.update_every?", server default":"").toString()}})}))}window.saveSnapshot=function(){loadPako((function(){loadLzString((function(){saveSnapshotStop=!1,$("#saveSnapshotModalProgressSection").show(),$("#saveSnapshotResolutionRadio").hide(),$("#saveSnapshotExport").addClass("disabled");var e=document.getElementById("saveSnapshotFilename").value;saveSnapshotModalLog("info","Generating snapshot as <code>"+e.toString()+"</code>");var t=document.getElementById("saveSnapshotModalProgressBar"),n=document.getElementById("saveSnapshotModalProgressBarText");options.data.charts_by_name=null;var a={hostname:options.hostname,server:_utils_server_detection__WEBPACK_IMPORTED_MODULE_9__.b,netdata_version:options.data.version,snapshot_version:1,after_ms:Date.now()-1e3*options.duration,before_ms:Date.now(),highlight_after_ms:urlOptions.highlight_after,highlight_before_ms:urlOptions.highlight_before,duration_ms:1e3*options.duration,update_every_ms:1e3*options.update_every,data_points:0,url:(null!==urlOptions.server?urlOptions.server:document.location.origin.toString()+document.location.pathname.toString()+document.location.search.toString()).toString(),comments:document.getElementById("saveSnapshotComments").value.toString(),hash:urlOptions.hash,charts:options.data,info:jsonStringifyFn({menu:netdataDashboard.menu,submenu:netdataDashboard.submenu,context:netdataDashboard.context}),charts_ok:0,charts_failed:0,compression:saveSnapshotCompression,data_size:0,data:{}};"undefined"===typeof snapshotOptions.compressions[a.compression]&&(alert("unknown compression method: "+a.compression),a.compression="none");var r=snapshotOptions.compressions[a.compression].compress,o=snapshotOptions.compressions[a.compression].compressed_length;function i(e){var t=e.data,n=e.chartDataUniqueID;if(null===t)return 0;var i=JSON.stringify(t),s=r(i);return a.data[n]=s,o(s)}var s=reduxStore.getState(),l=Object(_domains_global_selectors__WEBPACK_IMPORTED_MODULE_3__.m)(s),c=!1;l?(a.after_ms=l.after,a.before_ms=l.before):(reduxStore.dispatch(Object(_domains_global_actions__WEBPACK_IMPORTED_MODULE_2__.r)({after:a.after_ms,before:a.before_ms})),c=!0),a.duration_ms=a.before_ms-a.after_ms,a.data_points=Math.round((a.before_ms-a.after_ms)/(1e3*saveSnapshotSelectedSecondsPerPoint)),saveSnapshotModalLog("info","Generating snapshot with "+a.data_points.toString()+" data points per dimension..."),reduxStore.dispatch(Object(_domains_dashboard_actions__WEBPACK_IMPORTED_MODULE_6__.e)({charts:a.charts,dataPoints:a.data_points})),window.saveSnapshotRestore=function(){$("#saveSnapshotModal").modal("hide"),$(t).css("width","0%").attr("aria-valuenow",0),n.innerText="0%",reduxStore.dispatch(Object(_domains_dashboard_actions__WEBPACK_IMPORTED_MODULE_6__.f)()),reduxStore.dispatch(Object(_domains_chart_actions__WEBPACK_IMPORTED_MODULE_7__.j)()),c&&reduxStore.dispatch(Object(_domains_global_actions__WEBPACK_IMPORTED_MODULE_2__.j)()),$("#saveSnapshotExport").removeClass("disabled")};var d=0,u=" Resolution: <b>"+saveSnapshotSelectedSecondsPerPoint.toString()+(1===saveSnapshotSelectedSecondsPerPoint?" second ":" seconds ").toString()+"per point</b>.";window.chartUpdated=function(r){var o=r.chart,s=r.chartDataUniqueID,l=r.data;!0===saveSnapshotStop&&(saveSnapshotModalLog("info","Cancelled!"),saveSnapshotRestore());var c=reduxStore.getState(),h=Object(_domains_chart_selectors__WEBPACK_IMPORTED_MODULE_8__.b)(c),p=Object(_domains_chart_selectors__WEBPACK_IMPORTED_MODULE_8__.e)(c),f=Object(_domains_chart_selectors__WEBPACK_IMPORTED_MODULE_8__.d)(c),g=(p+f)/h*100;$(t).css("width",g+"%").attr("aria-valuenow",g),n.innerText=Math.round(g).toString()+"%, "+(o||l.id),d+=i({data:l,chartDataUniqueID:s}),saveSnapshotModalLog(f?"danger":"info","Generated snapshot data size <b>"+(Math.round(100*d/1024/1024)/100).toString()+" MB</b>. "+(f?f.toString()+" charts have failed to be downloaded":"").toString()+u),window.saveData=a,p+f===h&&(a.charts_ok=p,a.charts_failed=f,a.data_size=d,saveObjectToClient(a,e),f>0&&alert("".concat(f," failed to be downloaded")),saveSnapshotRestore(),a=null)}}))}))};try{browser_timezone=Intl.DateTimeFormat().resolvedOptions().timeZone}catch(e){console.log("failed to detect browser timezone: "+e.toString()),browser_timezone="cannot-detect-it"}var getOption=function(e){var t=reduxStore.getState();return Object(_domains_global_selectors__WEBPACK_IMPORTED_MODULE_3__.b)(e)(t)};function dashboardSettingsSetup(){var e=function(){var e=function(e){var t=$("#"+e);t.prop("checked")!==getOption(e)&&t.bootstrapToggle(getOption(e)?"on":"off")};e("stop_updates_when_focus_is_lost"),e("eliminate_zero_dimensions"),e("destroy_on_hide"),e("async_on_scroll"),e("parallel_refresher"),e("concurrent_refreshes"),e("sync_selection"),e("sync_pan_and_zoom"),e("legend_right"),$("#"+"netdata_theme_control").bootstrapToggle("slate"===netdataTheme?"on":"off"),e("show_help"),e("pan_and_zoom_data_padding"),e("smooth_plot"),function(e){var t=$("#"+e);t.prop("checked")!==("auto"===getOption("units"))&&t.bootstrapToggle("auto"===getOption("units")?"on":"off"),!0===t.prop("checked")?($("#settingsLocaleTempRow").show(),$("#settingsLocaleTimeRow").show()):($("#settingsLocaleTempRow").hide(),$("#settingsLocaleTimeRow").hide())}("units_conversion"),function(e){var t=$("#"+e);t.prop("checked")!==("celsius"===getOption("temperature"))&&t.bootstrapToggle("celsius"===getOption("temperature")?"on":"off")}("units_temp"),e("seconds_as_time"),function(e){var t=$("#"+e),n=getOption("timezone");document.getElementById("browser_timezone").innerText=browser_timezone,document.getElementById("server_timezone").innerText=options.timezone||"unknown",document.getElementById("current_timezone").innerText="default"===n?"unset, using browser default":n;var a=""!==n&&"default"!==n;t.prop("checked")===a&&t.bootstrapToggle(a?"off":"on")}("local_timezone"),!1===getOption("parallel_refresher")?$("#concurrent_refreshes_row").hide():$("#concurrent_refreshes_row").show()};e(),$("#eliminate_zero_dimensions").change((function(){setOption("eliminate_zero_dimensions",$(this).prop("checked"))})),$("#destroy_on_hide").change((function(){setOption("destroy_on_hide",$(this).prop("checked"))})),$("#async_on_scroll").change((function(){setOption("async_on_scroll",$(this).prop("checked"))})),$("#parallel_refresher").change((function(){setOption("parallel_refresher",$(this).prop("checked"))})),$("#concurrent_refreshes").change((function(){setOption("concurrent_refreshes",$(this).prop("checked"))})),$("#sync_selection").change((function(){setOption("sync_selection",$(this).prop("checked")),netdataReload()})),$("#sync_pan_and_zoom").change((function(){setOption("sync_pan_and_zoom",$(this).prop("checked"))})),$("#stop_updates_when_focus_is_lost").change((function(){urlOptions.update_always=!$(this).prop("checked"),urlOptions.hashUpdate(),setOption("stop_updates_when_focus_is_lost",!urlOptions.update_always)})),$("#smooth_plot").change((function(){setOption("smooth_plot",$(this).prop("checked"))})),$("#pan_and_zoom_data_padding").change((function(){setOption("pan_and_zoom_data_padding",$(this).prop("checked"))})),$("#seconds_as_time").change((function(){setOption("seconds_as_time",$(this).prop("checked"))})),$("#local_timezone").change((function(){$(this).prop("checked")?selected_server_timezone("default",!0):selected_server_timezone("default",!1)})),$("#units_conversion").change((function(){setOption("units",$(this).prop("checked")?"auto":"original"),e()})),$("#units_temp").change((function(){setOption("temperature",$(this).prop("checked")?"celsius":"fahrenheit")})),$("#legend_right").change((function(){setOption("legend_right",$(this).prop("checked")),netdataReload()})),$("#show_help").change((function(){urlOptions.help=$(this).prop("checked"),urlOptions.hashUpdate(),setOption("show_help",urlOptions.help),netdataReload()})),$("#netdata_theme_control").change((function(){urlOptions.theme=$(this).prop("checked")?"slate":"white",urlOptions.hashUpdate(),setTheme(urlOptions.theme)&&netdataReload()}))}var CHART_DIV_ID_PREFIX="chart_",CHART_DIV_OFFSET=-50;function scrollDashboardTo(){if(null!==window.netdataSnapshotData&&"undefined"!==typeof window.netdataSnapshotData.hash)scrollToId(window.netdataSnapshotData.hash.replace("#",""));else if(scrollToId(urlOptions.hash.replace("#","")),null!==urlOptions.chart){var e=document.getElementById("".concat(CHART_DIV_ID_PREFIX).concat(Object(_utils_name_2_id__WEBPACK_IMPORTED_MODULE_10__.a)(urlOptions.chart)));if(e){var t=e.offsetTop+CHART_DIV_OFFSET;document.querySelector("html").scrollTop=t}}}var modalHiddenCallback=null;function enableTooltipsAndPopovers(){$('[data-toggle="tooltip"]').tooltip({animated:"fade",trigger:"hover",html:!0,delay:{show:500,hide:0},container:"body"}),$('[data-toggle="popover"]').popover()}window.scrollToChartAfterHidingModal=function(e,t,n){modalHiddenCallback=function(){if("string"===typeof e){var a=document.getElementById("".concat(CHART_DIV_ID_PREFIX).concat(Object(_utils_name_2_id__WEBPACK_IMPORTED_MODULE_10__.a)(e)));if(a){var r=a.offsetTop+CHART_DIV_OFFSET;document.querySelector("html").scrollTop=r}}if(["WARNING","CRITICAL"].includes(n)){reduxStore.dispatch(Object(_domains_global_actions__WEBPACK_IMPORTED_MODULE_2__.r)({after:t-12e4,before:t+12e4}))}}};var runOnceOnDashboardLastRun=0;function runOnceOnDashboardWithjQuery(){if(0!==runOnceOnDashboardLastRun)return scrollDashboardTo(),$(document.body).scrollspy("refresh"),void $(document.body).scrollspy("process");runOnceOnDashboardLastRun=Date.now();var e=0,t=0,n=!1,a=!1,r=$(window).height()/3;$(".modal").on("show.bs.modal",(function(){0===t&&(e=window.scrollY,$("body").css({overflow:"hidden",position:"fixed",top:-e}),n=!0,null===NETDATA.options.pauseCallback?(NETDATA.pause((function(){})),a=!0):a=!1),t++})).on("hide.bs.modal",(function(){--t<=0&&(t=0,$("body").css({overflow:"",position:"",top:""}),$("html, body").animate({scrollTop:e},0),!0===a&&(NETDATA.unpause(),a=!1),$(document.body).scrollspy("process"))})).on("hidden.bs.modal",(function(){0===t&&(n=!1),"function"===typeof modalHiddenCallback&&modalHiddenCallback(),modalHiddenCallback=null})),$("#sidebar").affix({offset:{top:0,bottom:0}}).on("affixed.bs.affix",(function(){$(this).removeAttr("style")})).on("affix-top.bs.affix",(function(){if(n)return!1})).on("activate.bs.scrollspy",(function(e){if(!1===n){var t=$(e.target).find("a").attr("href");"string"===typeof t&&"#"===t.substring(0,1)&&!1===urlOptions.hash.startsWith(t+"_submenu_")&&(urlOptions.hash=t,urlOptions.hashUpdate())}})),Ps.initialize(document.getElementById("sidebar"),{wheelSpeed:.5,wheelPropagation:!0,swipePropagation:!0,minScrollbarLength:null,maxScrollbarLength:null,useBothWheelAxes:!1,suppressScrollX:!0,suppressScrollY:!1,scrollXMarginOffset:0,scrollYMarginOffset:0,theme:"default"}),r>250&&(r=250),r<75&&(r=75),document.body.setAttribute("data-offset",r),scrollDashboardTo(),$(document.body).scrollspy({target:"#sidebar",offset:r}),$("#deleteRegistryModal").on("hidden.bs.modal",(function(){deleteRegistryGuid=null})),$("#updateModal").on("show.bs.modal",(function(){versionLog("checking, please wait...")})).on("shown.bs.modal",(function(){notifyForUpdate(!0)})),$("#alarmsModal").on("shown.bs.modal",(function(){alarmsUpdateModal()})).on("hidden.bs.modal",(function(){document.getElementById("alarms_active").innerHTML=document.getElementById("alarms_all").innerHTML=document.getElementById("alarms_log").innerHTML="loading..."})),dashboardSettingsSetup(),loadSnapshotDragAndDropSetup(),saveSnapshotModalSetup(),showPageFooter(),$.fn.shorten=function(e){var t={showChars:750,minHideChars:10,ellipsesText:"...",moreText:'<i class="fas fa-expand"></i> show more information',lessText:'<i class="fas fa-compress"></i> show less information',onLess:function(){NETDATA.onscroll()},onMore:function(){NETDATA.onscroll()},errMsg:null,force:!1};return e&&$.extend(t,e),!($(this).data("jquery.shorten")&&!t.force)&&($(this).data("jquery.shorten",!0),$(document).off("click",".morelink"),$(document).on({click:function(){var e=$(this);return e.hasClass("less")?(e.removeClass("less"),e.html(t.moreText),e.parent().prev().animate({height:"0%"},0,(function(){e.parent().prev().prev().show()})).hide(0,(function(){t.onLess()}))):(e.addClass("less"),e.html(t.lessText),e.parent().prev().animate({height:"100%"},0,(function(){e.parent().prev().prev().hide()})).show(0,(function(){t.onMore()}))),!1}},".morelink"),this.each((function(){var e=$(this),n=e.html();if(e.text().length>t.showChars+t.minHideChars){var a=n.substr(0,t.showChars);if(a.indexOf("<")>=0){for(var r=!1,o="",i=0,s=[],l=null,c=0,d=0;d<=t.showChars;c++)if("<"!==n[c]||r||(r=!0,"/"===(l=n.substring(c+1,n.indexOf(">",c)))[0]?l!=="/"+s[0]?t.errMsg="ERROR en HTML: the top of the stack should be the tag that closes":s.shift():"br"!==l.toLowerCase()&&s.unshift(l)),r&&">"===n[c]&&(r=!1),r)o+=n.charAt(c);else if(d++,i<=t.showChars)o+=n.charAt(c),i++;else if(s.length>0){for(var u=0;u<s.length;u++)o+="</"+s[u]+">";break}a=$("<div/>").html(o+'<span class="ellip">'+t.ellipsesText+"</span>").html()}else a+=t.ellipsesText;var h='<div class="shortcontent">'+a+'</div><div class="allcontent">'+n+'</div><span><a href="javascript://nop/" class="morelink">'+t.moreText+"</a></span>";e.html(h),e.find(".allcontent").hide(),$(".shortcontent p:last",e).css("margin-bottom",0)}})))}}function finalizePage(){urlOptions.after<0?reduxStore.dispatch(Object(_domains_global_actions__WEBPACK_IMPORTED_MODULE_2__.p)({after:urlOptions.after})):!0===urlOptions.pan_and_zoom&&reduxStore.dispatch(Object(_domains_global_actions__WEBPACK_IMPORTED_MODULE_2__.r)({after:urlOptions.after,before:urlOptions.before})),NETDATA.parseDom(),NETDATA.unpause(),runOnceOnDashboardWithjQuery(),$(".shorten").shorten(),enableTooltipsAndPopovers(),_utils_is_demo__WEBPACK_IMPORTED_MODULE_13__.a?(NETDATA.options.current.retries_on_data_failures=60,setTimeout((function(){var e,t,n,a,r,o;e=window,t=document,n="script",a="ga",e.GoogleAnalyticsObject=a,e.ga=e.ga||function(){(e.ga.q=e.ga.q||[]).push(arguments)},e.ga.l=1*new Date,r=t.createElement(n),o=t.getElementsByTagName(n)[0],r.async=1,r.src="https://www.google-analytics.com/analytics.js",o.parentNode.insertBefore(r,o),ga("create","UA-64295674-3","auto"),ga("send","pageview","/demosite/"+window.location.host)}),2e3)):notifyForUpdate(),!0===urlOptions.show_alarms&&setTimeout((function(){$("#alarmsModal").modal("show")}),1e3),NETDATA.onresizeCallback=function(){Ps.update(document.getElementById("sidebar"))},NETDATA.onresizeCallback(),null!==window.netdataSnapshotData&&reduxStore.dispatch(Object(_domains_global_actions__WEBPACK_IMPORTED_MODULE_2__.r)({after:window.netdataSnapshotData.after_ms,before:window.netdataSnapshotData.before_ms}))}window.resetDashboardOptions=function(){reduxStore.dispatch(Object(_domains_global_actions__WEBPACK_IMPORTED_MODULE_2__.k)()),urlOptions.update_always=!1,urlOptions.help=!1,urlOptions.theme="slate",urlOptions.hashUpdate(),netdataReload()};var netdataPrepCallback=function(){_utils_is_demo__WEBPACK_IMPORTED_MODULE_13__.a?document.getElementById("masthead").style.display="block":!0===urlOptions.update_always&&setOption("stop_updates_when_focus_is_lost",!urlOptions.update_always)};window.selected_server_timezone=function(e,t){if(document.getElementById("timezone_error_message").innerHTML="","undefined"===typeof t)setOption("user_set_server_timezone",e),Object(_utils_date_time__WEBPACK_IMPORTED_MODULE_11__.a)(e)?($("#local_timezone").prop("checked")&&$("#local_timezone").bootstrapToggle("off"),setOption("timezone",e)):(setOption("timezone","default"),$("#local_timezone").prop("checked")||$("#local_timezone").bootstrapToggle("on"),document.getElementById("timezone_error_message").innerHTML="Ooops! That timezone was not accepted by your browser. Please open a github issue to help us fix it.",setOption("user_set_server_timezone",options.timezone));else if(!0===t)setOption("timezone","default");else{var n=getOption("user_set_server_timezone");"default"===n&&(setOption("user_set_server_timezone",options.timezone),n=options.timezone),Object(_utils_date_time__WEBPACK_IMPORTED_MODULE_11__.a)(n)?setOption("timezone",n):(setOption("timezone","default"),$("#local_timezone").prop("checked")||$("#local_timezone").bootstrapToggle("on"),document.getElementById("timezone_error_message").innerHTML='Sorry. The timezone "'+e.toString()+'" is not accepted by your browser. Please select one from the list.',setOption("user_set_server_timezone",options.timezone))}var a=getOption("timezone");return document.getElementById("current_timezone").innerText="default"===a?"unset, using browser default":a,!1};var netdataCallback=initializeDynamicDashboard;window.showSignInModal=function(){document.getElementById("sim-registry").innerHTML=getFromRegistry("registryServer"),$("#signInModal").modal("show")},window.explicitlySignIn=function(){$("#signInModal").modal("hide"),reduxStore.dispatch(Object(_domains_dashboard_actions__WEBPACK_IMPORTED_MODULE_6__.a)())}},24:function(e,t,n){"use strict";n.d(t,"e",(function(){return a})),n.d(t,"c",(function(){return r})),n.d(t,"b",(function(){return o})),n.d(t,"a",(function(){return i})),n.d(t,"d",(function(){return s}));var a="global",r="***",o=5e3,i="CLOUD_BASE_URL_DISABLED",s=["WARNING","ERROR","REMOVED","UNDEFINED","UNINITIALIZED","CLEAR","CRITICAL"]},28:function(e,t,n){"use strict";n.d(t,"e",(function(){return i})),n.d(t,"b",(function(){return s})),n.d(t,"a",(function(){return l})),n.d(t,"c",(function(){return c})),n.d(t,"g",(function(){return d})),n.d(t,"d",(function(){return u})),n.d(t,"f",(function(){return h}));var a=n(17),r=n(7),o=n(137),i=function(e){return e>0},s="https://registry.my-netdata.io",l=1e3,c=function(e,t){return"".concat(e,"/sso/v2/").concat(t)},d="&utm_source=agent&utm_medium=web",u=function(){var e=document.getElementById("charts_div");return e?60*-Math.round(e.getBoundingClientRect().width/3/60):(console.error("Couldn't find '.charts_div' element to calculate width"),-900)},h=function(e,t,n){return t?e.reduce((function(e,i){return Object(r.a)({},e,Object(a.a)({},i,Object(o.a)(t[i],n[i])?t[i]:n[i]))}),n):n}},31:function(e,t,n){"use strict";n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return f})),n.d(t,"c",(function(){return g}));var a=n(342),r=n(152),o=n(341),i=n(226),s=n(566),l=n(137),c=n(558),d=n(81),u=d.c?{src:"http://localhost:3000/some-script.js"}:document.currentScript,h=function(){if(d.a)return"http://localhost:19999";if(d.b){var e=window.location.pathname.replace("index.html","").replace("default.html","");return window.location.origin+e}return function(e){return e.replace(new RegExp("[^\\/]*\\.js(\\/?.*)?$"),"").replace("/static/js","")}(Object(a.a)([[Boolean,r.a],[o.a,function(){return Object(i.a)(document.getElementsByTagName("script"))}]])(u).src)},p=Object(a.a)([[Object(s.a)(i.a,Object(l.a)("/")),r.a],[o.a,function(e){return Object(c.a)(e,"/")}]]),f=p(window.netdataServer||h()),g=d.a?"/":p(h())},334:function(e,t,n){var a,r,o;r=[],void 0===(o="function"===typeof(a=function(){var e=0,t={header:{title:{text:"",color:"#333333",fontSize:18,fontWeight:"bold",font:"arial"},subtitle:{text:"",color:"#666666",fontSize:14,fontWeight:"bold",font:"arial"},location:"top-center",titleSubtitlePadding:8},footer:{text:"",color:"#666666",fontSize:14,fontWeight:"bold",font:"arial",location:"left"},size:{canvasHeight:500,canvasWidth:500,pieInnerRadius:"0%",pieOuterRadius:null},data:{sortOrder:"none",ignoreSmallSegments:{enabled:!1,valueType:"percentage",value:null},smallSegmentGrouping:{enabled:!1,value:1,valueType:"percentage",label:"Other",color:"#cccccc"},content:[]},labels:{outer:{format:"label",hideWhenLessThanPercentage:null,pieDistance:30},inner:{format:"percentage",hideWhenLessThanPercentage:null},mainLabel:{color:"#333333",font:"arial",fontWeight:"normal",fontSize:10},percentage:{color:"#dddddd",font:"arial",fontWeight:"bold",fontSize:10,decimalPlaces:0},value:{color:"#cccc44",fontWeight:"bold",font:"arial",fontSize:10},lines:{enabled:!0,style:"curved",color:"segment"},truncation:{enabled:!1,truncateLength:30},formatter:null},effects:{load:{effect:"none",speed:1e3},pullOutSegmentOnClick:{effect:"none",speed:300,size:10},highlightSegmentOnMouseover:!1,highlightLuminosity:-.2},tooltips:{enabled:!1,type:"placeholder",string:"",placeholderParser:null,styles:{fadeInSpeed:250,backgroundColor:"#000000",backgroundOpacity:.5,color:"#efefef",borderRadius:2,font:"arial",fontWeight:"bold",fontSize:10,padding:4}},misc:{colors:{background:null,segments:["#2484c1","#65a620","#7b6888","#a05d56","#961a1a","#d8d23a","#e98125","#d0743c","#635222","#6ada6a","#0c6197","#7d9058","#207f33","#44b9b0","#bca44a","#e4a14b","#a3acb2","#8cc3e9","#69a6f9","#5b388f","#546e91","#8bde95","#d2ab58","#273c71","#98bf6e","#4daa4b","#98abc5","#cc1010","#31383b","#006391","#c2643f","#b0a474","#a5a39c","#a9c2bc","#22af8c","#7fcecf","#987ac6","#3d3b87","#b77b1c","#c9c2b6","#807ece","#8db27c","#be66a2","#9ed3c6","#00644b","#005064","#77979f","#77e079","#9c73ab","#1f79a7"],segmentStroke:"#ffffff"},gradient:{enabled:!1,percentage:95,color:"#000000"},canvasPadding:{top:5,right:5,bottom:5,left:5},pieCenterOffset:{x:0,y:0},cssPrefix:null},callbacks:{onload:null,onMouseoverSegment:null,onMouseoutSegment:null,onClickSegment:null}},n=function(e){var t=e.cssPrefix,n=e.element,r=e.options;if(!window.d3||!window.d3.hasOwnProperty("version"))return console.error("d3pie error: d3 is not available"),!1;if(!(n instanceof HTMLElement||n instanceof SVGElement))return console.error("d3pie error: the first d3pie() param must be a valid DOM element (not jQuery) or a ID string."),!1;if(!/[a-zA-Z][a-zA-Z0-9_-]*$/.test(t))return console.error("d3pie error: invalid options.misc.cssPrefix"),!1;if(!a.isArray(r.data.content))return console.error("d3pie error: invalid config structure: missing data.content property."),!1;if(0===r.data.content.length)return console.error("d3pie error: no data supplied."),!1;for(var o=[],i=0;i<r.data.content.length;i++)"number"!==typeof r.data.content[i].value||isNaN(r.data.content[i].value)?console.log("not valid: ",r.data.content[i]):r.data.content[i].value<=0?console.log("not valid - should have positive value: ",r.data.content[i]):o.push(r.data.content[i]);return e.options.data.content=o,!0},a={addSVGSpace:function(e){var t=e.element,n=e.options.size.canvasWidth,a=e.options.size.canvasHeight,r=e.options.misc.colors.background,o=d3.select(t).append("svg:svg").attr("width",n).attr("height",a);return"transparent"!==r&&o.style("background-color",(function(){return r})),o},shuffleArray:function(e){for(var t,n,a=e.length;0!==a;)n=Math.floor(Math.random()*a),t=e[a-=1],e[a]=e[n],e[n]=t;return e},processObj:function(e,t,n){return"string"===typeof t?a.processObj(e,t.split("."),n):1===t.length&&void 0!==n?(e[t[0]]=n,e[t[0]]):0===t.length?e:a.processObj(e[t[0]],t.slice(1),n)},getDimensions:function(e){"string"===typeof e&&(e=document.getElementById(e));var t=0,n=0;if(e){var a=e.getBBox();t=a.width,n=a.height}else console.log("error: getDimensions() "+id+" not found.");return{w:t,h:n}},rectIntersect:function(e,t){return!(t.x>e.x+e.w||t.x+t.w<e.x||t.y+t.h<e.y||t.y>e.y+e.h)},getColorShade:function(e,t){(e=String(e).replace(/[^0-9a-f]/gi,"")).length<6&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),t=t||0;for(var n="#",a=0;a<3;a++){var r=parseInt(e.substr(2*a,2),16);n+=("00"+(r=Math.round(Math.min(Math.max(0,r+r*t),255)).toString(16))).substr(r.length)}return n},initSegmentColors:function(e){for(var t=e.options.data.content,n=e.options.misc.colors.segments,a=[],r=0;r<t.length;r++)t[r].hasOwnProperty("color")?a.push(t[r].color):a.push(n[r]);return a},applySmallSegmentGrouping:function(e,t){var n;"percentage"===t.valueType&&(n=o.getTotalPieSize(e));for(var a=[],r=[],i=0,s=0;s<e.length;s++)if("percentage"===t.valueType){if(e[s].value/n*100<=t.value){r.push(e[s]),i+=e[s].value;continue}e[s].isGrouped=!1,a.push(e[s])}else{if(e[s].value<=t.value){r.push(e[s]),i+=e[s].value;continue}e[s].isGrouped=!1,a.push(e[s])}return r.length&&a.push({color:t.color,label:t.label,value:i,isGrouped:!0,groupedData:r}),a},showPoint:function(e,t,n){e.append("circle").attr("cx",t).attr("cy",n).attr("r",2).style("fill","black")},isFunction:function(e){return e&&"[object Function]"==={}.toString.call(e)},isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)}},r=function e(){var t,n,a,r,o,i,s=arguments[0]||{},l=1,c=arguments.length,d=!1,u=Object.prototype.toString,h=Object.prototype.hasOwnProperty,p={"[object Boolean]":"boolean","[object Number]":"number","[object String]":"string","[object Function]":"function","[object Array]":"array","[object Date]":"date","[object RegExp]":"regexp","[object Object]":"object"},f={isFunction:function(e){return"function"===f.type(e)},isArray:Array.isArray||function(e){return"array"===f.type(e)},isWindow:function(e){return null!==e&&e===e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null===e?String(e):p[u.call(e)]||"object"},isPlainObject:function(e){if(!e||"object"!==f.type(e)||e.nodeType)return!1;try{if(e.constructor&&!h.call(e,"constructor")&&!h.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var t;for(t in e);return void 0===t||h.call(e,t)}};for("boolean"===typeof s&&(d=s,s=arguments[1]||{},l=2),"object"===typeof s||f.isFunction(s)||(s={}),c===l&&(s=this,--l);l<c;l++)if(null!==(t=arguments[l]))for(n in t)a=s[n],s!==(r=t[n])&&(d&&r&&(f.isPlainObject(r)||(o=f.isArray(r)))?(o?(o=!1,i=a&&f.isArray(a)?a:[]):i=a&&f.isPlainObject(a)?a:{},s[n]=e(d,i,r)):void 0!==r&&(s[n]=r));return s},o={toRadians:function(e){return e*(Math.PI/180)},toDegrees:function(e){return e*(180/Math.PI)},computePieRadius:function(e){var t=e.options.size,n=e.options.misc.canvasPadding,a=t.canvasWidth-n.left-n.right,r=t.canvasHeight-n.top-n.bottom;"pie-center"!==e.options.header.location&&(r-=e.textComponents.headerHeight),e.textComponents.footer.exists&&(r-=e.textComponents.footer.h);var o,i,s=(a<(r=r<0?0:r)?a:r)/3;if(null!==t.pieOuterRadius)if(/%/.test(t.pieOuterRadius)){i=(i=(i=parseInt(t.pieOuterRadius.replace(/[\D]/,""),10))>99?99:i)<0?0:i;var l=a<r?a:r;if("none"!==e.options.labels.outer.format){var c=2*parseInt(e.options.labels.outer.pieDistance,10);l-c>0&&(l-=c)}s=Math.floor(l/100*i)/2}else s=parseInt(t.pieOuterRadius,10);/%/.test(t.pieInnerRadius)?(i=(i=(i=parseInt(t.pieInnerRadius.replace(/[\D]/,""),10))>99?99:i)<0?0:i,o=Math.floor(s/100*i)):o=parseInt(t.pieInnerRadius,10),e.innerRadius=o,e.outerRadius=s},getTotalPieSize:function(e){for(var t=0,n=0;n<e.length;n++)t+=e[n].value;return t},sortPieData:function(e){var t=e.options.data.content;switch(e.options.data.sortOrder){case"none":break;case"random":t=a.shuffleArray(t);break;case"value-asc":t.sort((function(e,t){return e.value<t.value?-1:1}));break;case"value-desc":t.sort((function(e,t){return e.value<t.value?1:-1}));break;case"label-asc":t.sort((function(e,t){return e.label.toLowerCase()>t.label.toLowerCase()?1:-1}));break;case"label-desc":t.sort((function(e,t){return e.label.toLowerCase()<t.label.toLowerCase()?1:-1}))}return t},getPieTranslateCenter:function(e){return"translate("+e.x+","+e.y+")"},calculatePieCenter:function(e){var t=e.options.misc.pieCenterOffset,n=e.textComponents.title.exists&&"pie-center"!==e.options.header.location,a=e.textComponents.subtitle.exists&&"pie-center"!==e.options.header.location,r=e.options.misc.canvasPadding.top;n&&a?r+=e.textComponents.title.h+e.options.header.titleSubtitlePadding+e.textComponents.subtitle.h:n?r+=e.textComponents.title.h:a&&(r+=e.textComponents.subtitle.h);var o=0;e.textComponents.footer.exists&&(o=e.textComponents.footer.h+e.options.misc.canvasPadding.bottom);var i=(e.options.size.canvasWidth-e.options.misc.canvasPadding.left-e.options.misc.canvasPadding.right)/2+e.options.misc.canvasPadding.left,s=(e.options.size.canvasHeight-o-r)/2+r;i+=t.x,s+=t.y,e.pieCenter={x:i,y:s}},rotate:function(e,t,n,a,r){r=r*Math.PI/180;var o=Math.cos,i=Math.sin;return{x:(e-n)*o(r)-(t-a)*i(r)+n,y:(e-n)*i(r)+(t-a)*o(r)+a}},translate:function(e,t,n,a){var r=o.toRadians(a);return{x:e+n*Math.sin(r),y:t-n*Math.cos(r)}},pointIsInArc:function(e,t,n){var a=n.innerRadius()(t),r=n.outerRadius()(t),o=n.startAngle()(t),i=n.endAngle()(t),s=e.x*e.x+e.y*e.y,l=Math.atan2(e.x,-e.y);return l=l<0?l+2*Math.PI:l,a*a<=s&&s<=r*r&&o<=l&&l<=i}},i={add:function(e,t,n){var a=i.getIncludes(n),r=e.options.labels,o=e.svg.insert("g","."+e.cssPrefix+"labels-"+t).attr("class",e.cssPrefix+"labels-"+t),s=e.__labels[t]=o.selectAll("."+e.cssPrefix+"labelGroup-"+t).data(e.options.data.content).enter().append("g").attr("id",(function(n,a){return e.cssPrefix+"labelGroup"+a+"-"+t})).attr("data-index",(function(e,t){return t})).attr("class",e.cssPrefix+"labelGroup-"+t).style("opacity",0),l={section:t,sectionDisplayType:n};a.mainLabel&&s.append("text").attr("id",(function(n,a){return e.cssPrefix+"segmentMainLabel"+a+"-"+t})).attr("class",e.cssPrefix+"segmentMainLabel-"+t).text((function(e,t){var n=e.label;return r.formatter?(l.index=t,l.part="mainLabel",l.value=e.value,l.label=n,n=r.formatter(l)):r.truncation.enabled&&e.label.length>r.truncation.truncateLength&&(n=e.label.substring(0,r.truncation.truncateLength)+"..."),n})).style("font-size",r.mainLabel.fontSize+"px").style("font-family",r.mainLabel.font).style("font-weight",r.mainLabel.fontWeight).style("fill",(function(t,n){return"segment"===r.mainLabel.color?e.options.colors[n]:r.mainLabel.color})),a.percentage&&s.append("text").attr("id",(function(n,a){return e.cssPrefix+"segmentPercentage"+a+"-"+t})).attr("class",e.cssPrefix+"segmentPercentage-"+t).text((function(e,t){var n=e.percentage;return r.formatter?(l.index=t,l.part="percentage",l.value=e.value,l.label=e.percentage,n=r.formatter(l)):n+="%",n})).style("font-size",r.percentage.fontSize+"px").style("font-family",r.percentage.font).style("font-weight",r.percentage.fontWeight).style("fill",r.percentage.color),a.value&&s.append("text").attr("id",(function(n,a){return e.cssPrefix+"segmentValue"+a+"-"+t})).attr("class",e.cssPrefix+"segmentValue-"+t).text((function(e,t){return l.index=t,l.part="value",l.value=e.value,l.label=e.value,r.formatter?r.formatter(l,e.value):e.value})).style("font-size",r.value.fontSize+"px").style("font-family",r.value.font).style("font-weight",r.value.fontWeight).style("fill",r.value.color)},positionLabelElements:function(e,t,n){i["dimensions-"+t]=[],e.__labels[t].each((function(n,a){var r=d3.select(this).selectAll("."+e.cssPrefix+"segmentMainLabel-"+t),o=d3.select(this).selectAll("."+e.cssPrefix+"segmentPercentage-"+t),s=d3.select(this).selectAll("."+e.cssPrefix+"segmentValue-"+t);i["dimensions-"+t].push({mainLabel:null!==r.node()?r.node().getBBox():null,percentage:null!==o.node()?o.node().getBBox():null,value:null!==s.node()?s.node().getBBox():null})}));var a=i["dimensions-"+t];switch(n){case"label-value1":e.svg.selectAll("."+e.cssPrefix+"segmentValue-"+t).attr("dx",(function(e,t){return a[t].mainLabel.width+5}));break;case"label-value2":e.svg.selectAll("."+e.cssPrefix+"segmentValue-"+t).attr("dy",(function(e,t){return a[t].mainLabel.height}));break;case"label-percentage1":e.svg.selectAll("."+e.cssPrefix+"segmentPercentage-"+t).attr("dx",(function(e,t){return a[t].mainLabel.width+5}));break;case"label-percentage2":e.svg.selectAll("."+e.cssPrefix+"segmentPercentage-"+t).attr("dx",(function(e,t){return a[t].mainLabel.width/2-a[t].percentage.width/2})).attr("dy",(function(e,t){return a[t].mainLabel.height}))}},computeLabelLinePositions:function(e){e.lineCoordGroups=[],e.__labels.outer.each((function(t,n){return i.computeLinePosition(e,n)}))},computeLinePosition:function(e,t){var n,a,r,i,l=s.getSegmentAngle(t,e.options.data.content,e.totalSize,{midpoint:!0}),c=o.rotate(e.pieCenter.x,e.pieCenter.y-e.outerRadius,e.pieCenter.x,e.pieCenter.y,l),d=e.outerLabelGroupData[t].h/5,u=Math.floor(l/90);switch(2===u&&180===l&&(u=1),u){case 0:n=e.outerLabelGroupData[t].x-6-(e.outerLabelGroupData[t].x-6-c.x)/2,a=e.outerLabelGroupData[t].y+(c.y-e.outerLabelGroupData[t].y)/4,r=e.outerLabelGroupData[t].x-6,i=e.outerLabelGroupData[t].y-d;break;case 1:n=c.x+(e.outerLabelGroupData[t].x-c.x)/4,a=c.y+(e.outerLabelGroupData[t].y-c.y)/4,r=e.outerLabelGroupData[t].x-6,i=e.outerLabelGroupData[t].y-d;break;case 2:var h=e.outerLabelGroupData[t].x+e.outerLabelGroupData[t].w+6;n=c.x-(c.x-h)/4,a=c.y+(e.outerLabelGroupData[t].y-c.y)/4,r=e.outerLabelGroupData[t].x+e.outerLabelGroupData[t].w+6,i=e.outerLabelGroupData[t].y-d;break;case 3:var p=e.outerLabelGroupData[t].x+e.outerLabelGroupData[t].w+6;n=p+(c.x-p)/4,a=e.outerLabelGroupData[t].y+(c.y-e.outerLabelGroupData[t].y)/4,r=e.outerLabelGroupData[t].x+e.outerLabelGroupData[t].w+6,i=e.outerLabelGroupData[t].y-d}"straight"===e.options.labels.lines.style?e.lineCoordGroups[t]=[{x:c.x,y:c.y},{x:r,y:i}]:e.lineCoordGroups[t]=[{x:c.x,y:c.y},{x:n,y:a},{x:r,y:i}]},addLabelLines:function(e){var t=e.svg.insert("g","."+e.cssPrefix+"pieChart").attr("class",e.cssPrefix+"lineGroups").style("opacity",1).selectAll("."+e.cssPrefix+"lineGroup").data(e.lineCoordGroups).enter().append("g").attr("class",e.cssPrefix+"lineGroup"),n=d3.line().curve(d3.curveBasis).x((function(e){return e.x})).y((function(e){return e.y}));t.append("path").attr("d",n).attr("stroke",(function(t,n){return"segment"===e.options.labels.lines.color?e.options.colors[n]:e.options.labels.lines.color})).attr("stroke-width",1).attr("fill","none").style("opacity",(function(t,n){var a=e.options.labels.outer.hideWhenLessThanPercentage;return null!==a&&t.percentage<a||""===e.options.data.content[n].label?0:1}))},positionLabelGroups:function(e,t){"none"!==e.options.labels[t].format&&e.__labels[t].style("opacity",(function(n,a){var r=e.options.labels[t].hideWhenLessThanPercentage;return null!==r&&n.percentage<r?0:1})).attr("transform",(function(n,i){var l,c;if("outer"===t)l=e.outerLabelGroupData[i].x,c=e.outerLabelGroupData[i].y;else{var d=r(!0,{},e.pieCenter);if(e.innerRadius>0){var u=s.getSegmentAngle(i,e.options.data.content,e.totalSize,{midpoint:!0}),h=o.translate(e.pieCenter.x,e.pieCenter.y,e.innerRadius,u);d.x=h.x,d.y=h.y}var p=a.getDimensions(e.cssPrefix+"labelGroup"+i+"-inner"),f=p.w/2,g=p.h/4;l=d.x+(e.lineCoordGroups[i][0].x-d.x)/1.8,c=d.y+(e.lineCoordGroups[i][0].y-d.y)/1.8,l-=f,c+=g}return"translate("+l+","+c+")"}))},getIncludes:function(e){var t=!1,n=!1,a=!1;switch(e){case"label":t=!0;break;case"value":n=!0;break;case"percentage":a=!0;break;case"label-value1":case"label-value2":t=!0,n=!0;break;case"label-percentage1":case"label-percentage2":t=!0,a=!0}return{mainLabel:t,value:n,percentage:a}},computeOuterLabelCoords:function(e){e.__labels.outer.each((function(t,n){return i.getIdealOuterLabelPositions(e,n)})),i.resolveOuterLabelCollisions(e)},resolveOuterLabelCollisions:function(e){if("none"!==e.options.labels.outer.format){var t=e.options.data.content.length;i.checkConflict(e,0,"clockwise",t),i.checkConflict(e,t-1,"anticlockwise",t)}},checkConflict:function(e,t,n,r){var o,s;if(!(r<=1)){var l=e.outerLabelGroupData[t].hs;if(("clockwise"!==n||"right"===l)&&("anticlockwise"!==n||"left"===l)){var c="clockwise"===n?t+1:t-1,d=e.outerLabelGroupData[t],u=e.outerLabelGroupData[c],h={labelHeights:e.outerLabelGroupData[0].h,center:e.pieCenter,lineLength:e.outerRadius+e.options.labels.outer.pieDistance,heightChange:e.outerLabelGroupData[0].h+1};if("clockwise"===n){for(o=0;o<=t;o++)if(s=e.outerLabelGroupData[o],!i.isLabelHidden(e,o)&&a.rectIntersect(s,u)){i.adjustLabelPos(e,c,d,h);break}}else for(o=r-1;o>=t;o--)if(s=e.outerLabelGroupData[o],!i.isLabelHidden(e,o)&&a.rectIntersect(s,u)){i.adjustLabelPos(e,c,d,h);break}i.checkConflict(e,c,n,r)}}},isLabelHidden:function(e,t){var n=e.options.labels.outer.hideWhenLessThanPercentage;return null!==n&&d.percentage<n||""===e.options.data.content[t].label},adjustLabelPos:function(e,t,n,a){var r,o,i,s;s=n.y+a.heightChange,o=a.center.y-s,r=Math.abs(a.lineLength)>Math.abs(o)?Math.sqrt(a.lineLength*a.lineLength-o*o):Math.sqrt(o*o-a.lineLength*a.lineLength),i="right"===n.hs?a.center.x+r:a.center.x-r-e.outerLabelGroupData[t].w,e.outerLabelGroupData[t].x=i,e.outerLabelGroupData[t].y=s},getIdealOuterLabelPositions:function(e,t){var n=e.svg.select("#"+e.cssPrefix+"labelGroup"+t+"-outer").node();if(n){var a=n.getBBox(),r=s.getSegmentAngle(t,e.options.data.content,e.totalSize,{midpoint:!0}),i=e.pieCenter.x,l=e.pieCenter.y-(e.outerRadius+e.options.labels.outer.pieDistance),c=o.rotate(i,l,e.pieCenter.x,e.pieCenter.y,r),d="right";r>180?(c.x-=a.width+8,d="left"):c.x+=8,e.outerLabelGroupData[t]={x:c.x,y:c.y,w:a.width,h:a.height,hs:d}}}},s={effectMap:{none:d3.easeLinear,bounce:d3.easeBounce,linear:d3.easeLinear,sin:d3.easeSin,elastic:d3.easeElastic,back:d3.easeBack,quad:d3.easeQuad,circle:d3.easeCircle,exp:d3.easeExp},create:function(e){var t=e.pieCenter,n=e.options.colors,a=(e.options.effects.load,e.options.misc.colors.segmentStroke),r=e.svg.insert("g","#"+e.cssPrefix+"title").attr("transform",(function(){return o.getPieTranslateCenter(t)})).attr("class",e.cssPrefix+"pieChart"),i=d3.arc().innerRadius(e.innerRadius).outerRadius(e.outerRadius).startAngle(0).endAngle((function(t){return t.value/e.totalSize*2*Math.PI}));r.selectAll("."+e.cssPrefix+"arc").data(e.options.data.content).enter().append("g").attr("class",e.cssPrefix+"arc").append("path").attr("id",(function(t,n){return e.cssPrefix+"segment"+n})).attr("fill",(function(t,a){var r=n[a];return e.options.misc.gradient.enabled&&(r="url(#"+e.cssPrefix+"grad"+a+")"),r})).style("stroke",a).style("stroke-width",1).attr("data-index",(function(e,t){return t})).attr("d",i),e.svg.selectAll("g."+e.cssPrefix+"arc").attr("transform",(function(t,n){var a=0;return n>0&&(a=s.getSegmentAngle(n-1,e.options.data.content,e.totalSize)),"rotate("+a+")"})),e.arc=i},addGradients:function(e){var t=e.svg.append("defs").selectAll("radialGradient").data(e.options.data.content).enter().append("radialGradient").attr("gradientUnits","userSpaceOnUse").attr("cx",0).attr("cy",0).attr("r","120%").attr("id",(function(t,n){return e.cssPrefix+"grad"+n}));t.append("stop").attr("offset","0%").style("stop-color",(function(t,n){return e.options.colors[n]})),t.append("stop").attr("offset",e.options.misc.gradient.percentage+"%").style("stop-color",e.options.misc.gradient.color)},addSegmentEventHandlers:function(e){var t=e.svg.selectAll("."+e.cssPrefix+"arc");(t=t.merge(e.__labels.inner.merge(e.__labels.outer))).on("click",(function(){var t,n=d3.select(this);if(n.attr("class")===e.cssPrefix+"arc")t=n.select("path");else{var a=n.attr("data-index");t=d3.select("#"+e.cssPrefix+"segment"+a)}var r=t.attr("class")===e.cssPrefix+"expanded";s.onSegmentEvent(e,e.options.callbacks.onClickSegment,t,r),"none"!==e.options.effects.pullOutSegmentOnClick.effect&&(r?s.closeSegment(e,t.node()):s.openSegment(e,t.node()))})),t.on("mouseover",(function(){var t,n,r=d3.select(this);if(r.attr("class")===e.cssPrefix+"arc"?t=r.select("path"):(n=r.attr("data-index"),t=d3.select("#"+e.cssPrefix+"segment"+n)),e.options.effects.highlightSegmentOnMouseover){n=t.attr("data-index");var o=e.options.colors[n];t.style("fill",a.getColorShade(o,e.options.effects.highlightLuminosity))}e.options.tooltips.enabled&&(n=t.attr("data-index"),c.showTooltip(e,n));var i=t.attr("class")===e.cssPrefix+"expanded";s.onSegmentEvent(e,e.options.callbacks.onMouseoverSegment,t,i)})),t.on("mousemove",(function(){c.moveTooltip(e)})),t.on("mouseout",(function(){var t,n,a=d3.select(this);if(a.attr("class")===e.cssPrefix+"arc"?t=a.select("path"):(n=a.attr("data-index"),t=d3.select("#"+e.cssPrefix+"segment"+n)),e.options.effects.highlightSegmentOnMouseover){n=t.attr("data-index");var r=e.options.colors[n];e.options.misc.gradient.enabled&&(r="url(#"+e.cssPrefix+"grad"+n+")"),t.style("fill",r)}e.options.tooltips.enabled&&(n=t.attr("data-index"),c.hideTooltip(e,n));var o=t.attr("class")===e.cssPrefix+"expanded";s.onSegmentEvent(e,e.options.callbacks.onMouseoutSegment,t,o)}))},onSegmentEvent:function(e,t,n,r){if(a.isFunction(t)){var o=parseInt(n.attr("data-index"),10);t({segment:n.node(),index:o,expanded:r,data:e.options.data.content[o]})}},openSegment:function(e,t){e.isOpeningSegment||(e.isOpeningSegment=!0,s.maybeCloseOpenSegment(e),d3.select(t).transition().ease(s.effectMap[e.options.effects.pullOutSegmentOnClick.effect]).duration(e.options.effects.pullOutSegmentOnClick.speed).attr("transform",(function(t,n){var a=e.arc.centroid(t),r=a[0],o=a[1],i=Math.sqrt(r*r+o*o),s=parseInt(e.options.effects.pullOutSegmentOnClick.size,10);return"translate("+r/i*s+","+o/i*s+")"})).on("end",(function(n,a){e.currentlyOpenSegment=t,e.isOpeningSegment=!1,d3.select(t).attr("class",e.cssPrefix+"expanded")})))},maybeCloseOpenSegment:function(e){"undefined"!==typeof e&&e.svg.selectAll("."+e.cssPrefix+"expanded").size()>0&&s.closeSegment(e,e.svg.select("."+e.cssPrefix+"expanded").node())},closeSegment:function(e,t){d3.select(t).transition().duration(400).attr("transform","translate(0,0)").on("end",(function(n,a){d3.select(t).attr("class",""),e.currentlyOpenSegment=null}))},getCentroid:function(e){var t=e.getBBox();return{x:t.x+t.width/2,y:t.y+t.height/2}},getSegmentAngle:function(e,t,n,a){var o,i=r({compounded:!0,midpoint:!1},a),s=t[e].value;if(i.compounded){o=0;for(var l=0;l<=e;l++)o+=t[l].value}"undefined"===typeof o&&(o=s);var c=o/n*360;return i.midpoint&&(c-=s/n*360/2),c}},l={offscreenCoord:-1e4,addTitle:function(e){e.__title=e.svg.selectAll("."+e.cssPrefix+"title").data([e.options.header.title]).enter().append("text").text((function(e){return e.text})).attr("id",e.cssPrefix+"title").attr("class",e.cssPrefix+"title").attr("x",l.offscreenCoord).attr("y",l.offscreenCoord).attr("text-anchor",(function(){return"top-center"===e.options.header.location||"pie-center"===e.options.header.location?"middle":"left"})).attr("fill",(function(e){return e.color})).style("font-size",(function(e){return e.fontSize+"px"})).style("font-weight",(function(e){return e.fontWeight})).style("font-family",(function(e){return e.font}))},positionTitle:function(e){var t,n=e.textComponents,a=e.options.header.location,r=e.options.misc.canvasPadding,o=e.options.size.canvasWidth,i=e.options.header.titleSubtitlePadding;t="top-left"===a?r.left:(o-r.right)/2+r.left,t+=e.options.misc.pieCenterOffset.x;var s=r.top+n.title.h;"pie-center"===a&&(s=e.pieCenter.y,n.subtitle.exists?s=s-(n.title.h+i+n.subtitle.h)/2+n.title.h:s+=n.title.h/4),e.__title.attr("x",t).attr("y",s)},addSubtitle:function(e){var t=e.options.header.location;e.__subtitle=e.svg.selectAll("."+e.cssPrefix+"subtitle").data([e.options.header.subtitle]).enter().append("text").text((function(e){return e.text})).attr("x",l.offscreenCoord).attr("y",l.offscreenCoord).attr("id",e.cssPrefix+"subtitle").attr("class",e.cssPrefix+"subtitle").attr("text-anchor",(function(){return"top-center"===t||"pie-center"===t?"middle":"left"})).attr("fill",(function(e){return e.color})).style("font-size",(function(e){return e.fontSize+"px"})).style("font-weight",(function(e){return e.fontWeight})).style("font-family",(function(e){return e.font}))},positionSubtitle:function(e){var t,n=e.options.misc.canvasPadding,a=e.options.size.canvasWidth;t="top-left"===e.options.header.location?n.left:(a-n.right)/2+n.left,t+=e.options.misc.pieCenterOffset.x;var r=l.getHeaderHeight(e);e.__subtitle.attr("x",t).attr("y",r)},addFooter:function(e){e.__footer=e.svg.selectAll("."+e.cssPrefix+"footer").data([e.options.footer]).enter().append("text").text((function(e){return e.text})).attr("x",l.offscreenCoord).attr("y",l.offscreenCoord).attr("id",e.cssPrefix+"footer").attr("class",e.cssPrefix+"footer").attr("text-anchor",(function(){var t="left";return"bottom-center"===e.options.footer.location?t="middle":"bottom-right"===e.options.footer.location&&(t="left"),t})).attr("fill",(function(e){return e.color})).style("font-size",(function(e){return e.fontSize+"px"})).style("font-weight",(function(e){return e.fontWeight})).style("font-family",(function(e){return e.font}))},positionFooter:function(e){var t,n=e.options.footer.location,a=e.textComponents.footer.w,r=e.options.size.canvasWidth,o=e.options.size.canvasHeight,i=e.options.misc.canvasPadding;t="bottom-left"===n?i.left:"bottom-right"===n?r-a-i.right:r/2,e.__footer.attr("x",t).attr("y",o-i.bottom)},getHeaderHeight:function(e){var t;if(e.textComponents.title.exists){var n=e.textComponents.title.h+e.options.header.titleSubtitlePadding+e.textComponents.subtitle.h;t="pie-center"===e.options.header.location?e.pieCenter.y-n/2+n:n+e.options.misc.canvasPadding.top}else if("pie-center"===e.options.header.location){var a=e.options.misc.canvasPadding.bottom+e.textComponents.footer.h;t=(e.options.size.canvasHeight-a)/2+e.options.misc.canvasPadding.top+e.textComponents.subtitle.h/2}else t=e.options.misc.canvasPadding.top+e.textComponents.subtitle.h;return t}},c={addTooltips:function(e){var t=e.svg.insert("g").attr("class",e.cssPrefix+"tooltips");t.selectAll("."+e.cssPrefix+"tooltip").data(e.options.data.content).enter().append("g").attr("class",e.cssPrefix+"tooltip").attr("id",(function(t,n){return e.cssPrefix+"tooltip"+n})).style("opacity",0).append("rect").attr("rx",e.options.tooltips.styles.borderRadius).attr("ry",e.options.tooltips.styles.borderRadius).attr("x",-e.options.tooltips.styles.padding).attr("opacity",e.options.tooltips.styles.backgroundOpacity).style("fill",e.options.tooltips.styles.backgroundColor),t.selectAll("."+e.cssPrefix+"tooltip").data(e.options.data.content).append("text").attr("fill",(function(t){return e.options.tooltips.styles.color})).style("font-size",(function(t){return e.options.tooltips.styles.fontSize})).style("font-weight",(function(t){return e.options.tooltips.styles.fontWeight})).style("font-family",(function(t){return e.options.tooltips.styles.font})).text((function(t,n){var a=e.options.tooltips.string;return"caption"===e.options.tooltips.type&&(a=t.caption),c.replacePlaceholders(e,a,n,{label:t.label,value:t.value,percentage:t.percentage})})),t.selectAll("."+e.cssPrefix+"tooltip rect").attr("width",(function(t,n){return a.getDimensions(e.cssPrefix+"tooltip"+n).w+2*e.options.tooltips.styles.padding})).attr("height",(function(t,n){return a.getDimensions(e.cssPrefix+"tooltip"+n).h+2*e.options.tooltips.styles.padding})).attr("y",(function(t,n){return-a.getDimensions(e.cssPrefix+"tooltip"+n).h/2+1}))},showTooltip:function(e,t){var n=e.options.tooltips.styles.fadeInSpeed;c.currentTooltip===t&&(n=1),c.currentTooltip=t,d3.select("#"+e.cssPrefix+"tooltip"+t).transition().duration(n).style("opacity",(function(){return 1})),c.moveTooltip(e)},moveTooltip:function(e){d3.selectAll("#"+e.cssPrefix+"tooltip"+c.currentTooltip).attr("transform",(function(t){var n=d3.mouse(this.parentNode);return"translate("+(n[0]+e.options.tooltips.styles.padding+2)+","+(n[1]-2*e.options.tooltips.styles.padding-2)+")"}))},hideTooltip:function(e,t){d3.select("#"+e.cssPrefix+"tooltip"+t).style("opacity",(function(){return 0})),d3.select("#"+e.cssPrefix+"tooltip"+c.currentTooltip).attr("transform",(function(t,n){return"translate("+(e.options.size.canvasWidth+1e3)+","+(e.options.size.canvasHeight+1e3)+")"}))},replacePlaceholders:function(e,t,n,r){return a.isFunction(e.options.tooltips.placeholderParser)&&e.options.tooltips.placeholderParser(n,r),t.replace(/\{(\w+)\}/g,(function(e){var t=arguments[1];return r.hasOwnProperty(t)?r[arguments[1]]:arguments[0]}))}},u=function(a,o){if(this.element=a,"string"===typeof a){var i=a.replace(/^#/,"");this.element=document.getElementById(i)}var s={};r(!0,s,t,o),this.options=s,null!==this.options.misc.cssPrefix?this.cssPrefix=this.options.misc.cssPrefix:(this.cssPrefix="p"+e+"_",e++),n(this)&&(d3.select(this.element).attr("d3pie","0.2.1"),h.call(this),p.call(this))};u.prototype.recreate=function(){n(this)&&(h.call(this),p.call(this))},u.prototype.redraw=function(){this.element.innerHTML="",p.call(this)},u.prototype.destroy=function(){this.element.innerHTML="",d3.select(this.element).attr("d3pie",null)},u.prototype.getOpenSegment=function(){var e=this.currentlyOpenSegment;if(null!==e&&"undefined"!==typeof e){var t=parseInt(d3.select(e).attr("data-index"),10);return{element:e,index:t,data:this.options.data.content[t]}}return null},u.prototype.openSegment=function(e){(e=parseInt(e,10))<0||e>this.options.data.content.length-1||s.openSegment(this,d3.select("#"+this.cssPrefix+"segment"+e).node())},u.prototype.closeSegment=function(){s.maybeCloseOpenSegment(this)},u.prototype.updateProp=function(e,t){switch(e){case"header.title.text":var n=a.processObj(this.options,e);a.processObj(this.options,e,t),d3.select("#"+this.cssPrefix+"title").html(t),(""===n&&""!==t||""!==n&&""===t)&&this.redraw();break;case"header.subtitle.text":var r=a.processObj(this.options,e);a.processObj(this.options,e,t),d3.select("#"+this.cssPrefix+"subtitle").html(t),(""===r&&""!==t||""!==r&&""===t)&&this.redraw();break;case"callbacks.onload":case"callbacks.onMouseoverSegment":case"callbacks.onMouseoutSegment":case"callbacks.onClickSegment":case"effects.pullOutSegmentOnClick.effect":case"effects.pullOutSegmentOnClick.speed":case"effects.pullOutSegmentOnClick.size":case"effects.highlightSegmentOnMouseover":case"effects.highlightLuminosity":a.processObj(this.options,e,t);break;default:a.processObj(this.options,e,t),this.destroy(),this.recreate()}};var h=function(){this.options.data.content=o.sortPieData(this),this.options.data.smallSegmentGrouping.enabled&&(this.options.data.content=a.applySmallSegmentGrouping(this.options.data.content,this.options.data.smallSegmentGrouping)),this.options.colors=a.initSegmentColors(this),this.totalSize=o.getTotalPieSize(this.options.data.content);for(var e=this.options.labels.percentage.decimalPlaces,t=0;t<this.options.data.content.length;t++)this.options.data.content[t].percentage=f(this.options.data.content[t].value,this.totalSize,e);for(var n=0,r=0;r<this.options.data.content.length;r++)r===this.options.data.content.length-1&&(this.options.data.content[r].percentage=(100-n).toFixed(e)),n+=parseFloat(this.options.data.content[r].percentage)},p=function(){this.svg=a.addSVGSpace(this),this.textComponents={headerHeight:0,title:{exists:""!==this.options.header.title.text,h:0,w:0},subtitle:{exists:""!==this.options.header.subtitle.text,h:0,w:0},footer:{exists:""!==this.options.footer.text,h:0,w:0}},this.outerLabelGroupData=[],this.textComponents.title.exists&&l.addTitle(this),this.textComponents.subtitle.exists&&l.addSubtitle(this),l.addFooter(this),l.positionFooter(this);var e=a.getDimensions(this.__footer.node());if(this.textComponents.footer.h=e.h,this.textComponents.footer.w=e.w,this.textComponents.title.exists){var t=a.getDimensions(this.__title.node());this.textComponents.title.h=t.h,this.textComponents.title.w=t.w}if(this.textComponents.subtitle.exists){var n=a.getDimensions(this.__subtitle.node());this.textComponents.subtitle.h=n.h,this.textComponents.subtitle.w=n.w}if(this.textComponents.title.exists||this.textComponents.subtitle.exists){var r=0;this.textComponents.title.exists&&(r+=this.textComponents.title.h,this.textComponents.subtitle.exists&&(r+=this.options.header.titleSubtitlePadding)),this.textComponents.subtitle.exists&&(r+=this.textComponents.subtitle.h),this.textComponents.headerHeight=r}if(o.computePieRadius(this),o.calculatePieCenter(this),l.positionTitle(this),l.positionSubtitle(this),this.options.misc.gradient.enabled&&s.addGradients(this),s.create(this),this.__labels={},i.add(this,"inner",this.options.labels.inner.format),i.add(this,"outer",this.options.labels.outer.format),i.positionLabelElements(this,"inner",this.options.labels.inner.format),i.positionLabelElements(this,"outer",this.options.labels.outer.format),i.computeOuterLabelCoords(this),i.positionLabelGroups(this,"outer"),i.computeLabelLinePositions(this),this.options.labels.lines.enabled&&"none"!==this.options.labels.outer.format&&i.addLabelLines(this),i.positionLabelGroups(this,"inner"),a.isFunction(this.options.callbacks.onload))try{this.options.callbacks.onload()}catch(d){}this.options.tooltips.enabled&&c.addTooltips(this),s.addSegmentEventHandlers(this)},f=function(e,t,n){var a=e/t;return n<=0?Math.round(100*a):(100*a).toFixed(n)};return u})?a.apply(t,r):a)||(e.exports=o)},346:function(e,t,n){e.exports=n(557)},35:function(e,t,n){"use strict";n.d(t,"f",(function(){return d})),n.d(t,"a",(function(){return f})),n.d(t,"j",(function(){return g})),n.d(t,"h",(function(){return m})),n.d(t,"g",(function(){return b})),n.d(t,"l",(function(){return v})),n.d(t,"i",(function(){return _})),n.d(t,"c",(function(){return y})),n.d(t,"b",(function(){return x})),n.d(t,"k",(function(){return O})),n.d(t,"e",(function(){return w})),n.d(t,"d",(function(){return k}));var a=n(50),r=n(18),o=n(11),i=n(179),s=n(45),l=function(e){return e[s.c]},c=Object(r.a)(l,(function(e,t){return t.id}),(function(e,t){return e[t]||i.b})),d=Object(r.a)(c,(function(e){return e.chartData})),u=Object(r.a)(c,Object(a.a)("chartMetadata")),h=Object(r.a)(o.e,u,(function(e,t){return e||t})),p=Object(r.a)(c,Object(a.a)("isFetchingDetails")),f=function(){return Object(r.a)(h,p,(function(e,t){return{chartMetadata:e,isFetchingDetails:t}}))},g=Object(r.a)(c,(function(e){return e.viewRange})),m=Object(r.a)(c,(function(e){return e.isFetchingData})),b=Object(r.a)(c,(function(e){return e.fetchDataParams})),v=Object(r.a)(c,(function(e){return e.resizeHeight})),_=Object(r.a)(c,Object(a.a)("chartPanAndZoom")),y=Object(r.a)(l,(function(e){return Object.values(e).reduce((function(e,t){return e+(function(e){return e.isFetchDataFailure||Boolean(e.chartData)||e.isFetchDetailsFailure}(t)?1:0)}),0)})),x=Object(r.a)(l,(function(e){return Object.keys(e).length})),O=Object(r.a)(l,(function(e){var t;return null===(t=Object.values(e).find((function(e){return e.isFetchingData})))||void 0===t?void 0:t.chartId})),w=Object(r.a)(l,(function(e){return Object.values(e).reduce((function(e,t){return e+(t.snapshotData?1:0)}),0)})),k=Object(r.a)(l,(function(e){return Object.values(e).reduce((function(e,t){return e+(t.snapshotDataIsError?1:0)}),0)}))},362:function(e,t,n){},403:function(e,t){},42:function(e,t,n){"use strict";n.d(t,"e",(function(){return o})),n.d(t,"f",(function(){return i})),n.d(t,"d",(function(){return s})),n.d(t,"a",(function(){return l})),n.d(t,"b",(function(){return c})),n.d(t,"c",(function(){return d}));var a=n(22),r=n(82),o=Object(a.createAction)("".concat(r.a,"/isSnapshotModeAction")),i=Object(a.createAction)("".concat(r.a,"/stopSnapshotModeAction")),s=Object(a.createAction)("".concat(r.a,"/showSignInModal")),l=Object(a.createAction)("".concat(r.a,"/explicitlySignIn")),c=Object(a.createAction)("".concat(r.a,"/isSignedInAction")),d=Object(a.createAction)("".concat(r.a,"/setOfflineAction"))},422:function(e,t,n){},442:function(e,t,n){},45:function(e,t,n){"use strict";n.d(t,"c",(function(){return a})),n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return o}));var a="chart",r=2e3,o=300},46:function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var a=n(7),r=function(e,t){var n={now:"now",space:" ",negative_suffix:"ago",day:"day",days:"days",hour:"hour",hours:"hours",minute:"min",minutes:"mins",second:"sec",seconds:"secs",and:"and"},r="object"===typeof t?Object(a.a)({},n,{},t):n,o="string"===typeof e?parseInt(e,10):e;if(0===o)return r.now;var i="";o<0&&(o=-o,""!==r.negative_suffix&&(i=r.space+r.negative_suffix));var s=Math.floor(o/86400);o-=86400*s;var l=Math.floor(o/3600);o-=3600*l;var c=Math.floor(o/60);o-=60*c;var d=[];if(s>1?d.push(s.toString()+r.space+r.days):1===s&&d.push(s.toString()+r.space+r.day),l>1?d.push(l.toString()+r.space+r.hours):1===l&&d.push(l.toString()+r.space+r.hour),c>1?d.push(c.toString()+r.space+r.minutes):1===c&&d.push(c.toString()+r.space+r.minute),o>1?d.push(Math.floor(o).toString()+r.space+r.seconds):1===o&&d.push(Math.floor(o).toString()+r.space+r.second),1===d.length)return d.pop()+i;var u=d.pop();return"".concat(d.join(", ")," ").concat(r.and," ").concat(u).concat(i)}},461:function(e,t,n){},465:function(e,t,n){},466:function(e,t,n){},479:function(e,t){},49:function(e,t,n){var a;e.exports=function e(t,n,r){function o(s,l){if(!n[s]){if(!t[s]){if(!l&&"function"==typeof a&&a)return a(s,!0);if(i)return i(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var d=n[s]={exports:{}};t[s][0].call(d.exports,(function(e){return o(t[s][1][e]||e)}),d,d.exports,e,t,n,r)}return n[s].exports}for(var i="function"==typeof a&&a,s=0;s<r.length;s++)o(r[s]);return o}({1:[function(e,t,n){function a(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function o(e){if(d===setTimeout)return setTimeout(e,0);if((d===a||!d)&&setTimeout)return d=setTimeout,setTimeout(e,0);try{return d(e,0)}catch(t){try{return d.call(null,e,0)}catch(t){return d.call(this,e,0)}}}function i(){g&&p&&(g=!1,p.length?f=p.concat(f):m=-1,f.length&&s())}function s(){if(!g){var e=o(i);g=!0;for(var t=f.length;t;){for(p=f,f=[];++m<t;)p&&p[m].run();m=-1,t=f.length}p=null,g=!1,function(e){if(u===clearTimeout)return clearTimeout(e);if((u===r||!u)&&clearTimeout)return u=clearTimeout,clearTimeout(e);try{u(e)}catch(t){try{return u.call(null,e)}catch(t){return u.call(this,e)}}}(e)}}function l(e,t){this.fun=e,this.array=t}function c(){}var d,u,h=t.exports={};!function(){try{d="function"==typeof setTimeout?setTimeout:a}catch(e){d=a}try{u="function"==typeof clearTimeout?clearTimeout:r}catch(e){u=r}}();var p,f=[],g=!1,m=-1;h.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];f.push(new l(e,t)),1!==f.length||g||o(s)},l.prototype.run=function(){this.fun.apply(null,this.array)},h.title="browser",h.browser=!0,h.env={},h.argv=[],h.version="",h.versions={},h.on=c,h.addListener=c,h.once=c,h.off=c,h.removeListener=c,h.removeAllListeners=c,h.emit=c,h.prependListener=c,h.prependOnceListener=c,h.listeners=function(e){return[]},h.binding=function(e){throw new Error("process.binding is not supported")},h.cwd=function(){return"/"},h.chdir=function(e){throw new Error("process.chdir is not supported")},h.umask=function(){return 0}},{}],2:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a=function(e){return e&&e.__esModule?e:{default:e}}(e("./bars")),r=function(){};(r.prototype=new a.default).extractSeries=function(e,t,n){for(var a,r,o,i=[],s=n.get("logscale"),l=0;l<e.length;l++)a=e[l][0],o=e[l][t],s&&null!==o&&(o[0]<=0||o[1]<=0||o[2]<=0)&&(o=null),null!==o?null===(r=o[1])||isNaN(r)?i.push([a,r,[r,r]]):i.push([a,r,[o[0],o[2]]]):i.push([a,null,[null,null]]);return i},r.prototype.rollingAverage=function(e,t,n){t=Math.min(t,e.length);var a,r,o,i,s,l,c,d=[];for(r=0,i=0,o=0,s=0,l=0;l<e.length;l++){if(a=e[l][1],c=e[l][2],d[l]=e[l],null===a||isNaN(a)||(r+=c[0],i+=a,o+=c[1],s+=1),l-t>=0){var u=e[l-t];null===u[1]||isNaN(u[1])||(r-=u[2][0],i-=u[1],o-=u[2][1],s-=1)}d[l]=s?[e[l][0],1*i/s,[1*r/s,1*o/s]]:[e[l][0],null,[null,null]]}return d},n.default=r,t.exports=n.default},{"./bars":5}],3:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a=function(e){return e&&e.__esModule?e:{default:e}}(e("./bars")),r=function(){};(r.prototype=new a.default).extractSeries=function(e,t,n){for(var a,r,o,i,s=[],l=n.get("sigma"),c=n.get("logscale"),d=0;d<e.length;d++)a=e[d][0],i=e[d][t],c&&null!==i&&(i[0]<=0||i[0]-l*i[1]<=0)&&(i=null),null!==i?null===(r=i[0])||isNaN(r)?s.push([a,r,[r,r,r]]):(o=l*i[1],s.push([a,r,[r-o,r+o,i[1]]])):s.push([a,null,[null,null,null]]);return s},r.prototype.rollingAverage=function(e,t,n){t=Math.min(t,e.length);var a,r,o,i,s,l,c,d,u,h=[],p=n.get("sigma");for(a=0;a<e.length;a++){for(s=0,d=0,l=0,r=Math.max(0,a-t+1);r<a+1;r++)null===(o=e[r][1])||isNaN(o)||(l++,s+=o,d+=Math.pow(e[r][2][2],2));l?(c=Math.sqrt(d)/l,u=s/l,h[a]=[e[a][0],u,[u-p*c,u+p*c]]):(i=1==t?e[a][1]:null,h[a]=[e[a][0],i,[i,i]])}return h},n.default=r,t.exports=n.default},{"./bars":5}],4:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a=function(e){return e&&e.__esModule?e:{default:e}}(e("./bars")),r=function(){};(r.prototype=new a.default).extractSeries=function(e,t,n){for(var a,r,o,i,s,l,c,d=[],u=n.get("sigma"),h=n.get("logscale"),p=0;p<e.length;p++)a=e[p][0],o=e[p][t],h&&null!==o&&(o[0]<=0||o[1]<=0)&&(o=null),null!==o?(i=o[0],s=o[1],null===i||isNaN(i)?d.push([a,i,[i,i,i,s]]):(l=s?i/s:0,c=100*(s?u*Math.sqrt(l*(1-l)/s):1),r=100*l,d.push([a,r,[r-c,r+c,i,s]]))):d.push([a,null,[null,null,null,null]]);return d},r.prototype.rollingAverage=function(e,t,n){t=Math.min(t,e.length);var a,r,o,i,s=[],l=n.get("sigma"),c=n.get("wilsonInterval"),d=0,u=0;for(o=0;o<e.length;o++){d+=e[o][2][2],u+=e[o][2][3],o-t>=0&&(d-=e[o-t][2][2],u-=e[o-t][2][3]);var h=e[o][0],p=u?d/u:0;if(c)if(u){var f=p<0?0:p,g=u,m=l*Math.sqrt(f*(1-f)/g+l*l/(4*g*g)),b=1+l*l/u;a=(f+l*l/(2*u)-m)/b,r=(f+l*l/(2*u)+m)/b,s[o]=[h,100*f,[100*a,100*r]]}else s[o]=[h,0,[0,0]];else i=u?l*Math.sqrt(p*(1-p)/u):1,s[o]=[h,100*p,[100*(p-i),100*(p+i)]]}return s},n.default=r,t.exports=n.default},{"./bars":5}],5:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var r=a(e("./datahandler")),o=a(e("../dygraph-layout")),i=function(){r.default.call(this)};(i.prototype=new r.default).extractSeries=function(e,t,n){},i.prototype.rollingAverage=function(e,t,n){},i.prototype.onPointsCreated_=function(e,t){for(var n=0;n<e.length;++n){var a=e[n],o=t[n];o.y_top=NaN,o.y_bottom=NaN,o.yval_minus=r.default.parseFloat(a[2][0]),o.yval_plus=r.default.parseFloat(a[2][1])}},i.prototype.getExtremeYValues=function(e,t,n){for(var a,r=null,o=null,i=e.length-1,s=0;s<=i;s++)if(null!==(a=e[s][1])&&!isNaN(a)){var l=e[s][2][0],c=e[s][2][1];l>a&&(l=a),c<a&&(c=a),(null===o||c>o)&&(o=c),(null===r||l<r)&&(r=l)}return[r,o]},i.prototype.onLineEvaluated=function(e,t,n){for(var a,r=0;r<e.length;r++)(a=e[r]).y_top=o.default.calcYNormal_(t,a.yval_minus,n),a.y_bottom=o.default.calcYNormal_(t,a.yval_plus,n)},n.default=i,t.exports=n.default},{"../dygraph-layout":13,"./datahandler":6}],6:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a=function(){},r=a;r.X=0,r.Y=1,r.EXTRAS=2,r.prototype.extractSeries=function(e,t,n){},r.prototype.seriesToPoints=function(e,t,n){for(var a=[],o=0;o<e.length;++o){var i=e[o],s=i[1],l=null===s?null:r.parseFloat(s),c={x:NaN,y:NaN,xval:r.parseFloat(i[0]),yval:l,name:t,idx:o+n,canvasx:NaN,canvasy:NaN};a.push(c)}return this.onPointsCreated_(e,a),a},r.prototype.onPointsCreated_=function(e,t){},r.prototype.rollingAverage=function(e,t,n){},r.prototype.getExtremeYValues=function(e,t,n){},r.prototype.onLineEvaluated=function(e,t,n){},r.parseFloat=function(e){return null===e?NaN:e},n.default=a,t.exports=n.default},{}],7:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var r=(a(e("./datahandler")),e("./default")),o=a(r),i=function(){};(i.prototype=new o.default).extractSeries=function(e,t,n){for(var a,r,o,i,s,l=[],c=n.get("logscale"),d=0;d<e.length;d++)a=e[d][0],o=e[d][t],c&&null!==o&&(o[0]<=0||o[1]<=0)&&(o=null),null!==o?(i=o[0],s=o[1],null===i||isNaN(i)?l.push([a,i,[i,s]]):(r=100*(s?i/s:0),l.push([a,r,[i,s]]))):l.push([a,null,[null,null]]);return l},i.prototype.rollingAverage=function(e,t,n){t=Math.min(t,e.length);var a,r=[],o=0,i=0;for(a=0;a<e.length;a++){o+=e[a][2][0],i+=e[a][2][1],a-t>=0&&(o-=e[a-t][2][0],i-=e[a-t][2][1]);var s=e[a][0],l=i?o/i:0;r[a]=[s,100*l]}return r},n.default=i,t.exports=n.default},{"./datahandler":6,"./default":8}],8:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a=function(e){return e&&e.__esModule?e:{default:e}}(e("./datahandler")),r=function(){};(r.prototype=new a.default).extractSeries=function(e,t,n){for(var a=[],r=n.get("logscale"),o=0;o<e.length;o++){var i=e[o][0],s=e[o][t];r&&s<=0&&(s=null),a.push([i,s])}return a},r.prototype.rollingAverage=function(e,t,n){var a,r,o,i,s,l=[];if(1==(t=Math.min(t,e.length)))return e;for(a=0;a<e.length;a++){for(i=0,s=0,r=Math.max(0,a-t+1);r<a+1;r++)null===(o=e[r][1])||isNaN(o)||(s++,i+=e[r][1]);l[a]=s?[e[a][0],i/s]:[e[a][0],null]}return l},r.prototype.getExtremeYValues=function(e,t,n){for(var a,r=null,o=null,i=e.length-1,s=0;s<=i;s++)null===(a=e[s][1])||isNaN(a)||((null===o||a>o)&&(o=a),(null===r||a<r)&&(r=a));return[r,o]},n.default=r,t.exports=n.default},{"./datahandler":6}],9:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(e("./dygraph-utils")),r=function(e){return e&&e.__esModule?e:{default:e}}(e("./dygraph")),o=function(e,t,n,r){if(this.dygraph_=e,this.layout=r,this.element=t,this.elementContext=n,this.height=e.height_,this.width=e.width_,!a.isCanvasSupported(this.element))throw"Canvas is not supported.";this.area=r.getPlotArea();var o=this.dygraph_.canvas_ctx_;o.beginPath(),o.rect(this.area.x,this.area.y,this.area.w,this.area.h),o.clip(),(o=this.dygraph_.hidden_ctx_).beginPath(),o.rect(this.area.x,this.area.y,this.area.w,this.area.h),o.clip()};o.prototype.clear=function(){this.elementContext.clearRect(0,0,this.width,this.height)},o.prototype.render=function(){this._updatePoints(),this._renderLineChart()},o._getIteratorPredicate=function(e){return e?o._predicateThatSkipsEmptyPoints:null},o._predicateThatSkipsEmptyPoints=function(e,t){return null!==e[t].yval},o._drawStyledLine=function(e,t,n,r,i,s,l){var c=e.dygraph,d=c.getBooleanOption("stepPlot",e.setName);a.isArrayLike(r)||(r=null);var u=c.getBooleanOption("drawGapEdgePoints",e.setName),h=e.points,p=e.setName,f=a.createIterator(h,0,h.length,o._getIteratorPredicate(c.getBooleanOption("connectSeparatedPoints",p))),g=r&&r.length>=2,m=e.drawingContext;m.save(),g&&m.setLineDash&&m.setLineDash(r);var b=o._drawSeries(e,f,n,l,i,u,d,t);o._drawPointsOnLine(e,b,s,t,l),g&&m.setLineDash&&m.setLineDash([]),m.restore()},o._drawSeries=function(e,t,n,a,r,o,i,s){var l,c,d=null,u=null,h=null,p=[],f=!0,g=e.drawingContext;g.beginPath(),g.strokeStyle=s,g.lineWidth=n;for(var m=t.array_,b=t.end_,v=t.predicate_,_=t.start_;_<b;_++){if(c=m[_],v){for(;_<b&&!v(m,_);)_++;if(_==b)break;c=m[_]}if(null===c.canvasy||c.canvasy!=c.canvasy)i&&null!==d&&(g.moveTo(d,u),g.lineTo(c.canvasx,u)),d=u=null;else{if(l=!1,o||null===d){t.nextIdx_=_,t.next();var y=null===(h=t.hasNext?t.peek.canvasy:null)||h!=h;l=null===d&&y,o&&(!f&&null===d||t.hasNext&&y)&&(l=!0)}null!==d?n&&(i&&(g.moveTo(d,u),g.lineTo(c.canvasx,u)),g.lineTo(c.canvasx,c.canvasy)):g.moveTo(c.canvasx,c.canvasy),(r||l)&&p.push([c.canvasx,c.canvasy,c.idx]),d=c.canvasx,u=c.canvasy}f=!1}return g.stroke(),p},o._drawPointsOnLine=function(e,t,n,a,r){for(var o=e.drawingContext,i=0;i<t.length;i++){var s=t[i];o.save(),n.call(e.dygraph,e.dygraph,e.setName,o,s[0],s[1],a,r,s[2]),o.restore()}},o.prototype._updatePoints=function(){for(var e=this.layout.points,t=e.length;t--;)for(var n=e[t],a=n.length;a--;){var r=n[a];r.canvasx=this.area.w*r.x+this.area.x,r.canvasy=this.area.h*r.y+this.area.y}},o.prototype._renderLineChart=function(e,t){var n,r,o=t||this.elementContext,i=this.layout.points,s=this.layout.setNames;this.colors=this.dygraph_.colorsMap_;var l=this.dygraph_.getOption("plotter"),c=l;a.isArrayLike(c)||(c=[c]);var d={};for(n=0;n<s.length;n++){r=s[n];var u=this.dygraph_.getOption("plotter",r);u!=l&&(d[r]=u)}for(n=0;n<c.length;n++)for(var h=c[n],p=n==c.length-1,f=0;f<i.length;f++)if(r=s[f],!e||r==e){var g=i[f],m=h;if(r in d){if(!p)continue;m=d[r]}var b=this.colors[r],v=this.dygraph_.getOption("strokeWidth",r);o.save(),o.strokeStyle=b,o.lineWidth=v,m({points:g,setName:r,drawingContext:o,color:b,strokeWidth:v,dygraph:this.dygraph_,axis:this.dygraph_.axisPropertiesForSeries(r),plotArea:this.area,seriesIndex:f,seriesCount:i.length,singleSeriesName:e,allSeriesPoints:i}),o.restore()}},o._Plotters={linePlotter:function(e){o._linePlotter(e)},fillPlotter:function(e){o._fillPlotter(e)},errorPlotter:function(e){o._errorPlotter(e)}},o._linePlotter=function(e){var t=e.dygraph,n=e.setName,r=e.strokeWidth,i=t.getNumericOption("strokeBorderWidth",n),s=t.getOption("drawPointCallback",n)||a.Circles.DEFAULT,l=t.getOption("strokePattern",n),c=t.getBooleanOption("drawPoints",n),d=t.getNumericOption("pointSize",n);i&&r&&o._drawStyledLine(e,t.getOption("strokeBorderColor",n),r+2*i,l,c,s,d),o._drawStyledLine(e,e.color,r,l,c,s,d)},o._errorPlotter=function(e){var t=e.dygraph,n=e.setName;if(t.getBooleanOption("errorBars")||t.getBooleanOption("customBars")){t.getBooleanOption("fillGraph",n)&&console.warn("Can't use fillGraph option with error bars");var r,i=e.drawingContext,s=e.color,l=t.getNumericOption("fillAlpha",n),c=t.getBooleanOption("stepPlot",n),d=e.points,u=a.createIterator(d,0,d.length,o._getIteratorPredicate(t.getBooleanOption("connectSeparatedPoints",n))),h=NaN,p=NaN,f=[-1,-1],g=a.toRGB_(s),m="rgba("+g.r+","+g.g+","+g.b+","+l+")";i.fillStyle=m,i.beginPath();for(var b=function(e){return null===e||void 0===e||isNaN(e)};u.hasNext;){var v=u.next();!c&&b(v.y)||c&&!isNaN(p)&&b(p)?h=NaN:(r=[v.y_bottom,v.y_top],c&&(p=v.y),isNaN(r[0])&&(r[0]=v.y),isNaN(r[1])&&(r[1]=v.y),r[0]=e.plotArea.h*r[0]+e.plotArea.y,r[1]=e.plotArea.h*r[1]+e.plotArea.y,isNaN(h)||(c?(i.moveTo(h,f[0]),i.lineTo(v.canvasx,f[0]),i.lineTo(v.canvasx,f[1])):(i.moveTo(h,f[0]),i.lineTo(v.canvasx,r[0]),i.lineTo(v.canvasx,r[1])),i.lineTo(h,f[1]),i.closePath()),f=r,h=v.canvasx)}i.fill()}},o._fastCanvasProxy=function(e){var t=[],n=null,a=null,r=0,o=function(n){!function(e){if(!(t.length<=1)){for(var n=t.length-1;n>0;n--)if(2==(s=t[n])[0]){var a=t[n-1];a[1]==s[1]&&a[2]==s[2]&&t.splice(n,1)}for(n=0;n<t.length-1;)2==(s=t[n])[0]&&2==t[n+1][0]?t.splice(n,1):n++;if(t.length>2&&!e){var r=0;2==t[0][0]&&r++;var o=null,i=null;for(n=r;n<t.length;n++){var s;if(1==(s=t[n])[0])if(null===o&&null===i)o=n,i=n;else{var l=s[2];l<t[o][2]?o=n:l>t[i][2]&&(i=n)}}var c=t[o],d=t[i];t.splice(r,t.length-r),o<i?(t.push(c),t.push(d)):o>i?(t.push(d),t.push(c)):t.push(c)}}}(n);for(var o=0,i=t.length;o<i;o++){var s=t[o];1==s[0]?e.lineTo(s[1],s[2]):2==s[0]&&e.moveTo(s[1],s[2])}t.length&&(a=t[t.length-1][1]),r+=t.length,t=[]},i=function(e,r,i){var s=Math.round(r);null!==n&&s==n||(o(n-a>1||s-n>1),n=s),t.push([e,r,i])};return{moveTo:function(e,t){i(2,e,t)},lineTo:function(e,t){i(1,e,t)},stroke:function(){o(!0),e.stroke()},fill:function(){o(!0),e.fill()},beginPath:function(){o(!0),e.beginPath()},closePath:function(){o(!0),e.closePath()},_count:function(){return r}}},o._fillPlotter=function(e){if(!e.singleSeriesName&&0===e.seriesIndex){for(var t=e.dygraph,n=t.getLabels().slice(1),i=n.length;i>=0;i--)t.visibility()[i]||n.splice(i,1);if(function(){for(var e=0;e<n.length;e++)if(t.getBooleanOption("fillGraph",n[e]))return!0;return!1}())for(var s,l,c=e.plotArea,d=e.allSeriesPoints,u=d.length,h=t.getBooleanOption("stackedGraph"),p=t.getColors(),f={},g=function(e,t,n,a){if(e.lineTo(t,n),h)for(var r=a.length-1;r>=0;r--){var o=a[r];e.lineTo(o[0],o[1])}},m=u-1;m>=0;m--){var b=e.drawingContext,v=n[m];if(t.getBooleanOption("fillGraph",v)){var _=t.getNumericOption("fillAlpha",v),y=t.getBooleanOption("stepPlot",v),x=p[m],O=t.axisPropertiesForSeries(v),w=1+O.minyval*O.yscale;w<0?w=0:w>1&&(w=1),w=c.h*w+c.y;var k,E=d[m],C=a.createIterator(E,0,E.length,o._getIteratorPredicate(t.getBooleanOption("connectSeparatedPoints",v))),S=NaN,j=[-1,-1],D=a.toRGB_(x),A="rgba("+D.r+","+D.g+","+D.b+","+_+")";b.fillStyle=A,b.beginPath();var T,M=!0;(E.length>2*t.width_||r.default.FORCE_FAST_PROXY)&&(b=o._fastCanvasProxy(b));for(var P,L=[];C.hasNext;)if(P=C.next(),a.isOK(P.y)||y){if(h){if(!M&&T==P.xval)continue;var I;M=!1,T=P.xval,I=void 0===(s=f[P.canvasx])?w:l?s[0]:s,k=[P.canvasy,I],y?-1===j[0]?f[P.canvasx]=[P.canvasy,w]:f[P.canvasx]=[P.canvasy,j[0]]:f[P.canvasx]=P.canvasy}else k=isNaN(P.canvasy)&&y?[c.y+c.h,w]:[P.canvasy,w];isNaN(S)?(b.moveTo(P.canvasx,k[1]),b.lineTo(P.canvasx,k[0])):(y?(b.lineTo(P.canvasx,j[0]),b.lineTo(P.canvasx,k[0])):b.lineTo(P.canvasx,k[0]),h&&(L.push([S,j[1]]),l&&s?L.push([P.canvasx,s[1]]):L.push([P.canvasx,k[1]]))),j=k,S=P.canvasx}else g(b,S,j[1],L),L=[],S=NaN,null===P.y_stacked||isNaN(P.y_stacked)||(f[P.canvasx]=c.h*P.y_stacked+c.y);l=y,k&&P&&(g(b,P.canvasx,k[1],L),L=[]),b.fill()}}}},n.default=o,t.exports=n.default},{"./dygraph":18,"./dygraph-utils":17}],10:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}Object.defineProperty(n,"__esModule",{value:!0});var o=r(e("./dygraph-tickers")),i=a(e("./dygraph-interaction-model")),s=a(e("./dygraph-canvas")),l=r(e("./dygraph-utils")),c={highlightCircleSize:3,highlightSeriesOpts:null,highlightSeriesBackgroundAlpha:.5,highlightSeriesBackgroundColor:"rgb(255, 255, 255)",labelsSeparateLines:!1,labelsShowZeroValues:!0,labelsKMB:!1,labelsKMG2:!1,showLabelsOnHighlight:!0,digitsAfterDecimal:2,maxNumberWidth:6,sigFigs:null,strokeWidth:1,strokeBorderWidth:0,strokeBorderColor:"white",axisTickSize:3,axisLabelFontSize:14,rightGap:5,showRoller:!1,xValueParser:void 0,delimiter:",",sigma:2,errorBars:!1,fractions:!1,wilsonInterval:!0,customBars:!1,fillGraph:!1,fillAlpha:.15,connectSeparatedPoints:!1,stackedGraph:!1,stackedGraphNaNFill:"all",hideOverlayOnMouseOut:!0,legend:"onmouseover",stepPlot:!1,xRangePad:0,yRangePad:null,drawAxesAtZero:!1,titleHeight:28,xLabelHeight:18,yLabelWidth:18,axisLineColor:"black",axisLineWidth:.3,gridLineWidth:.3,axisLabelWidth:50,gridLineColor:"rgb(128,128,128)",interactionModel:i.default.defaultModel,animatedZooms:!1,showRangeSelector:!1,rangeSelectorHeight:40,rangeSelectorPlotStrokeColor:"#808FAB",rangeSelectorPlotFillGradientColor:"white",rangeSelectorPlotFillColor:"#A7B1C4",rangeSelectorBackgroundStrokeColor:"gray",rangeSelectorBackgroundLineWidth:1,rangeSelectorPlotLineWidth:1.5,rangeSelectorForegroundStrokeColor:"black",rangeSelectorForegroundLineWidth:1,rangeSelectorAlpha:.6,showInRangeSelector:null,plotter:[s.default._fillPlotter,s.default._errorPlotter,s.default._linePlotter],plugins:[],axes:{x:{pixelsPerLabel:70,axisLabelWidth:60,axisLabelFormatter:l.dateAxisLabelFormatter,valueFormatter:l.dateValueFormatter,drawGrid:!0,drawAxis:!0,independentTicks:!0,ticker:o.dateTicker},y:{axisLabelWidth:50,pixelsPerLabel:30,valueFormatter:l.numberValueFormatter,axisLabelFormatter:l.numberAxisLabelFormatter,drawGrid:!0,drawAxis:!0,independentTicks:!0,ticker:o.numericTicks},y2:{axisLabelWidth:50,pixelsPerLabel:30,valueFormatter:l.numberValueFormatter,axisLabelFormatter:l.numberAxisLabelFormatter,drawAxis:!0,drawGrid:!1,independentTicks:!1,ticker:o.numericTicks}}};n.default=c,t.exports=n.default},{"./dygraph-canvas":9,"./dygraph-interaction-model":12,"./dygraph-tickers":16,"./dygraph-utils":17}],11:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a=function(e){return e&&e.__esModule?e:{default:e}}(e("./dygraph")),r=function(e){this.container=e};r.prototype.draw=function(e,t){this.container.innerHTML="",void 0!==this.date_graph&&this.date_graph.destroy(),this.date_graph=new a.default(this.container,e,t)},r.prototype.setSelection=function(e){var t=!1;e.length&&(t=e[0].row),this.date_graph.setSelection(t)},r.prototype.getSelection=function(){var e=[],t=this.date_graph.getSelection();if(t<0)return e;for(var n=this.date_graph.layout_.points,a=0;a<n.length;++a)e.push({row:t,column:a+1});return e},n.default=r,t.exports=n.default},{"./dygraph":18}],12:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(e("./dygraph-utils")),r={maybeTreatMouseOpAsClick:function(e,t,n){n.dragEndX=a.dragGetX_(e,n),n.dragEndY=a.dragGetY_(e,n);var o=Math.abs(n.dragEndX-n.dragStartX),i=Math.abs(n.dragEndY-n.dragStartY);o<2&&i<2&&void 0!==t.lastx_&&-1!=t.lastx_&&r.treatMouseOpAsClick(t,e,n),n.regionWidth=o,n.regionHeight=i},startPan:function(e,t,n){var r,o;n.isPanning=!0;var i=t.xAxisRange();if(t.getOptionForAxis("logscale","x")?(n.initialLeftmostDate=a.log10(i[0]),n.dateRange=a.log10(i[1])-a.log10(i[0])):(n.initialLeftmostDate=i[0],n.dateRange=i[1]-i[0]),n.xUnitsPerPixel=n.dateRange/(t.plotter_.area.w-1),t.getNumericOption("panEdgeFraction")){var s=t.width_*t.getNumericOption("panEdgeFraction"),l=t.xAxisExtremes(),c=t.toDomXCoord(l[0])-s,d=t.toDomXCoord(l[1])+s,u=t.toDataXCoord(c),h=t.toDataXCoord(d);n.boundedDates=[u,h];var p=[],f=t.height_*t.getNumericOption("panEdgeFraction");for(r=0;r<t.axes_.length;r++){var g=(o=t.axes_[r]).extremeRange,m=t.toDomYCoord(g[0],r)+f,b=t.toDomYCoord(g[1],r)-f,v=t.toDataYCoord(m,r),_=t.toDataYCoord(b,r);p[r]=[v,_]}n.boundedValues=p}for(n.is2DPan=!1,n.axes=[],r=0;r<t.axes_.length;r++){o=t.axes_[r];var y={},x=t.yAxisRange(r);t.attributes_.getForAxis("logscale",r)?(y.initialTopValue=a.log10(x[1]),y.dragValueRange=a.log10(x[1])-a.log10(x[0])):(y.initialTopValue=x[1],y.dragValueRange=x[1]-x[0]),y.unitsPerPixel=y.dragValueRange/(t.plotter_.area.h-1),n.axes.push(y),o.valueRange&&(n.is2DPan=!0)}},movePan:function(e,t,n){n.dragEndX=a.dragGetX_(e,n),n.dragEndY=a.dragGetY_(e,n);var r=n.initialLeftmostDate-(n.dragEndX-n.dragStartX)*n.xUnitsPerPixel;n.boundedDates&&(r=Math.max(r,n.boundedDates[0]));var o=r+n.dateRange;if(n.boundedDates&&o>n.boundedDates[1]&&(o=(r-=o-n.boundedDates[1])+n.dateRange),t.getOptionForAxis("logscale","x")?t.dateWindow_=[Math.pow(a.LOG_SCALE,r),Math.pow(a.LOG_SCALE,o)]:t.dateWindow_=[r,o],n.is2DPan)for(var i=n.dragEndY-n.dragStartY,s=0;s<t.axes_.length;s++){var l=t.axes_[s],c=n.axes[s],d=i*c.unitsPerPixel,u=n.boundedValues?n.boundedValues[s]:null,h=c.initialTopValue+d;u&&(h=Math.min(h,u[1]));var p=h-c.dragValueRange;u&&p<u[0]&&(p=(h-=p-u[0])-c.dragValueRange),t.attributes_.getForAxis("logscale",s)?l.valueRange=[Math.pow(a.LOG_SCALE,p),Math.pow(a.LOG_SCALE,h)]:l.valueRange=[p,h]}t.drawGraph_(!1)}};r.endPan=r.maybeTreatMouseOpAsClick,r.startZoom=function(e,t,n){n.isZooming=!0,n.zoomMoved=!1},r.moveZoom=function(e,t,n){n.zoomMoved=!0,n.dragEndX=a.dragGetX_(e,n),n.dragEndY=a.dragGetY_(e,n);var r=Math.abs(n.dragStartX-n.dragEndX),o=Math.abs(n.dragStartY-n.dragEndY);n.dragDirection=r<o/2?a.VERTICAL:a.HORIZONTAL,t.drawZoomRect_(n.dragDirection,n.dragStartX,n.dragEndX,n.dragStartY,n.dragEndY,n.prevDragDirection,n.prevEndX,n.prevEndY),n.prevEndX=n.dragEndX,n.prevEndY=n.dragEndY,n.prevDragDirection=n.dragDirection},r.treatMouseOpAsClick=function(e,t,n){for(var a=e.getFunctionOption("clickCallback"),r=e.getFunctionOption("pointClickCallback"),o=null,i=-1,s=Number.MAX_VALUE,l=0;l<e.selPoints_.length;l++){var c=e.selPoints_[l],d=Math.pow(c.canvasx-n.dragEndX,2)+Math.pow(c.canvasy-n.dragEndY,2);!isNaN(d)&&(-1==i||d<s)&&(s=d,i=l)}var u=e.getNumericOption("highlightCircleSize")+2;if(s<=u*u&&(o=e.selPoints_[i]),o){var h={cancelable:!0,point:o,canvasx:n.dragEndX,canvasy:n.dragEndY};if(e.cascadeEvents_("pointClick",h))return;r&&r.call(e,t,o)}h={cancelable:!0,xval:e.lastx_,pts:e.selPoints_,canvasx:n.dragEndX,canvasy:n.dragEndY},e.cascadeEvents_("click",h)||a&&a.call(e,t,e.lastx_,e.selPoints_)},r.endZoom=function(e,t,n){t.clearZoomRect_(),n.isZooming=!1,r.maybeTreatMouseOpAsClick(e,t,n);var o=t.getArea();if(n.regionWidth>=10&&n.dragDirection==a.HORIZONTAL){var i=Math.min(n.dragStartX,n.dragEndX),s=Math.max(n.dragStartX,n.dragEndX);(i=Math.max(i,o.x))<(s=Math.min(s,o.x+o.w))&&t.doZoomX_(i,s),n.cancelNextDblclick=!0}else if(n.regionHeight>=10&&n.dragDirection==a.VERTICAL){var l=Math.min(n.dragStartY,n.dragEndY),c=Math.max(n.dragStartY,n.dragEndY);(l=Math.max(l,o.y))<(c=Math.min(c,o.y+o.h))&&t.doZoomY_(l,c),n.cancelNextDblclick=!0}n.dragStartX=null,n.dragStartY=null},r.startTouch=function(e,t,n){e.preventDefault(),e.touches.length>1&&(n.startTimeForDoubleTapMs=null);for(var a=[],r=0;r<e.touches.length;r++){var o=e.touches[r];a.push({pageX:o.pageX,pageY:o.pageY,dataX:t.toDataXCoord(o.pageX),dataY:t.toDataYCoord(o.pageY)})}if(n.initialTouches=a,1==a.length)n.initialPinchCenter=a[0],n.touchDirections={x:!0,y:!0};else if(a.length>=2){n.initialPinchCenter={pageX:.5*(a[0].pageX+a[1].pageX),pageY:.5*(a[0].pageY+a[1].pageY),dataX:.5*(a[0].dataX+a[1].dataX),dataY:.5*(a[0].dataY+a[1].dataY)};var i=180/Math.PI*Math.atan2(n.initialPinchCenter.pageY-a[0].pageY,a[0].pageX-n.initialPinchCenter.pageX);(i=Math.abs(i))>90&&(i=90-i),n.touchDirections={x:i<67.5,y:i>22.5}}n.initialRange={x:t.xAxisRange(),y:t.yAxisRange()}},r.moveTouch=function(e,t,n){n.startTimeForDoubleTapMs=null;var a,r=[];for(a=0;a<e.touches.length;a++){var o=e.touches[a];r.push({pageX:o.pageX,pageY:o.pageY})}var i,s,l,c=n.initialTouches,d=n.initialPinchCenter,u={pageX:(i=1==r.length?r[0]:{pageX:.5*(r[0].pageX+r[1].pageX),pageY:.5*(r[0].pageY+r[1].pageY)}).pageX-d.pageX,pageY:i.pageY-d.pageY},h=n.initialRange.x[1]-n.initialRange.x[0],p=n.initialRange.y[0]-n.initialRange.y[1];if(u.dataX=u.pageX/t.plotter_.area.w*h,u.dataY=u.pageY/t.plotter_.area.h*p,1==r.length)s=1,l=1;else if(r.length>=2){var f=c[1].pageX-d.pageX;s=(r[1].pageX-i.pageX)/f;var g=c[1].pageY-d.pageY;l=(r[1].pageY-i.pageY)/g}s=Math.min(8,Math.max(.125,s)),l=Math.min(8,Math.max(.125,l));var m=!1;if(n.touchDirections.x&&(t.dateWindow_=[d.dataX-u.dataX+(n.initialRange.x[0]-d.dataX)/s,d.dataX-u.dataX+(n.initialRange.x[1]-d.dataX)/s],m=!0),n.touchDirections.y)for(a=0;a<1;a++){var b=t.axes_[a];t.attributes_.getForAxis("logscale",a)||(b.valueRange=[d.dataY-u.dataY+(n.initialRange.y[0]-d.dataY)/l,d.dataY-u.dataY+(n.initialRange.y[1]-d.dataY)/l],m=!0)}if(t.drawGraph_(!1),m&&r.length>1&&t.getFunctionOption("zoomCallback")){var v=t.xAxisRange();t.getFunctionOption("zoomCallback").call(t,v[0],v[1],t.yAxisRanges())}},r.endTouch=function(e,t,n){if(0!==e.touches.length)r.startTouch(e,t,n);else if(1==e.changedTouches.length){var a=(new Date).getTime(),o=e.changedTouches[0];n.startTimeForDoubleTapMs&&a-n.startTimeForDoubleTapMs<500&&n.doubleTapX&&Math.abs(n.doubleTapX-o.screenX)<50&&n.doubleTapY&&Math.abs(n.doubleTapY-o.screenY)<50?t.resetZoom():(n.startTimeForDoubleTapMs=a,n.doubleTapX=o.screenX,n.doubleTapY=o.screenY)}};var o=function(e,t,n){return e<t?t-e:e>n?e-n:0},i=function(e,t){var n=a.findPos(t.canvas_),r={left:n.x,right:n.x+t.canvas_.offsetWidth,top:n.y,bottom:n.y+t.canvas_.offsetHeight},i={x:a.pageX(e),y:a.pageY(e)},s=o(i.x,r.left,r.right),l=o(i.y,r.top,r.bottom);return Math.max(s,l)};r.defaultModel={mousedown:function(e,t,n){if(!e.button||2!=e.button){n.initializeMouseDown(e,t,n),e.altKey||e.shiftKey?r.startPan(e,t,n):r.startZoom(e,t,n);var o=function(e){n.isZooming?i(e,t)<100?r.moveZoom(e,t,n):null!==n.dragEndX&&(n.dragEndX=null,n.dragEndY=null,t.clearZoomRect_()):n.isPanning&&r.movePan(e,t,n)};t.addAndTrackEvent(document,"mousemove",o),t.addAndTrackEvent(document,"mouseup",(function e(i){n.isZooming?null!==n.dragEndX?r.endZoom(i,t,n):r.maybeTreatMouseOpAsClick(i,t,n):n.isPanning&&r.endPan(i,t,n),a.removeEvent(document,"mousemove",o),a.removeEvent(document,"mouseup",e),n.destroy()}))}},willDestroyContextMyself:!0,touchstart:function(e,t,n){r.startTouch(e,t,n)},touchmove:function(e,t,n){r.moveTouch(e,t,n)},touchend:function(e,t,n){r.endTouch(e,t,n)},dblclick:function(e,t,n){if(n.cancelNextDblclick)n.cancelNextDblclick=!1;else{var a={canvasx:n.dragEndX,canvasy:n.dragEndY,cancelable:!0};t.cascadeEvents_("dblclick",a)||e.altKey||e.shiftKey||t.resetZoom()}}},r.nonInteractiveModel_={mousedown:function(e,t,n){n.initializeMouseDown(e,t,n)},mouseup:r.maybeTreatMouseOpAsClick},r.dragIsPanInteractionModel={mousedown:function(e,t,n){n.initializeMouseDown(e,t,n),r.startPan(e,t,n)},mousemove:function(e,t,n){n.isPanning&&r.movePan(e,t,n)},mouseup:function(e,t,n){n.isPanning&&r.endPan(e,t,n)}},n.default=r,t.exports=n.default},{"./dygraph-utils":17}],13:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(e("./dygraph-utils")),r=function(e){this.dygraph_=e,this.points=[],this.setNames=[],this.annotations=[],this.yAxes_=null,this.xTicks_=null,this.yTicks_=null};r.prototype.addDataset=function(e,t){this.points.push(t),this.setNames.push(e)},r.prototype.getPlotArea=function(){return this.area_},r.prototype.computePlotArea=function(){var e={x:0,y:0};e.w=this.dygraph_.width_-e.x-this.dygraph_.getOption("rightGap"),e.h=this.dygraph_.height_;var t={chart_div:this.dygraph_.graphDiv,reserveSpaceLeft:function(t){var n={x:e.x,y:e.y,w:t,h:e.h};return e.x+=t,e.w-=t,n},reserveSpaceRight:function(t){var n={x:e.x+e.w-t,y:e.y,w:t,h:e.h};return e.w-=t,n},reserveSpaceTop:function(t){var n={x:e.x,y:e.y,w:e.w,h:t};return e.y+=t,e.h-=t,n},reserveSpaceBottom:function(t){var n={x:e.x,y:e.y+e.h-t,w:e.w,h:t};return e.h-=t,n},chartRect:function(){return{x:e.x,y:e.y,w:e.w,h:e.h}}};this.dygraph_.cascadeEvents_("layout",t),this.area_=e},r.prototype.setAnnotations=function(e){this.annotations=[];for(var t=this.dygraph_.getOption("xValueParser")||function(e){return e},n=0;n<e.length;n++){var r={};if(!e[n].xval&&void 0===e[n].x)return void console.error("Annotations must have an 'x' property");if(e[n].icon&&(!e[n].hasOwnProperty("width")||!e[n].hasOwnProperty("height")))return void console.error("Must set width and height when setting annotation.icon property");a.update(r,e[n]),r.xval||(r.xval=t(r.x)),this.annotations.push(r)}},r.prototype.setXTicks=function(e){this.xTicks_=e},r.prototype.setYAxes=function(e){this.yAxes_=e},r.prototype.evaluate=function(){this._xAxis={},this._evaluateLimits(),this._evaluateLineCharts(),this._evaluateLineTicks(),this._evaluateAnnotations()},r.prototype._evaluateLimits=function(){var e=this.dygraph_.xAxisRange();this._xAxis.minval=e[0],this._xAxis.maxval=e[1];var t=e[1]-e[0];this._xAxis.scale=0!==t?1/t:1,this.dygraph_.getOptionForAxis("logscale","x")&&(this._xAxis.xlogrange=a.log10(this._xAxis.maxval)-a.log10(this._xAxis.minval),this._xAxis.xlogscale=0!==this._xAxis.xlogrange?1/this._xAxis.xlogrange:1);for(var n=0;n<this.yAxes_.length;n++){var r=this.yAxes_[n];r.minyval=r.computedValueRange[0],r.maxyval=r.computedValueRange[1],r.yrange=r.maxyval-r.minyval,r.yscale=0!==r.yrange?1/r.yrange:1,this.dygraph_.getOption("logscale")&&(r.ylogrange=a.log10(r.maxyval)-a.log10(r.minyval),r.ylogscale=0!==r.ylogrange?1/r.ylogrange:1,isFinite(r.ylogrange)&&!isNaN(r.ylogrange)||console.error("axis "+n+" of graph at "+r.g+" can't be displayed in log scale for range ["+r.minyval+" - "+r.maxyval+"]"))}},r.calcXNormal_=function(e,t,n){return n?(a.log10(e)-a.log10(t.minval))*t.xlogscale:(e-t.minval)*t.scale},r.calcYNormal_=function(e,t,n){if(n){var r=1-(a.log10(t)-a.log10(e.minyval))*e.ylogscale;return isFinite(r)?r:NaN}return 1-(t-e.minyval)*e.yscale},r.prototype._evaluateLineCharts=function(){for(var e=this.dygraph_.getOption("stackedGraph"),t=this.dygraph_.getOptionForAxis("logscale","x"),n=0;n<this.points.length;n++){for(var a=this.points[n],o=this.setNames[n],i=this.dygraph_.getOption("connectSeparatedPoints",o),s=this.dygraph_.axisPropertiesForSeries(o),l=this.dygraph_.attributes_.getForSeries("logscale",o),c=0;c<a.length;c++){var d=a[c];d.x=r.calcXNormal_(d.xval,this._xAxis,t);var u=d.yval;e&&(d.y_stacked=r.calcYNormal_(s,d.yval_stacked,l),null===u||isNaN(u)||(u=d.yval_stacked)),null===u&&(u=NaN,i||(d.yval=NaN)),d.y=r.calcYNormal_(s,u,l)}this.dygraph_.dataHandler_.onLineEvaluated(a,s,l)}},r.prototype._evaluateLineTicks=function(){var e,t,n,a,r,o;for(this.xticks=[],e=0;e<this.xTicks_.length;e++)n=(t=this.xTicks_[e]).label,r=(o=!("label_v"in t))?t.v:t.label_v,(a=this.dygraph_.toPercentXCoord(r))>=0&&a<1&&this.xticks.push({pos:a,label:n,has_tick:o});for(this.yticks=[],e=0;e<this.yAxes_.length;e++)for(var i=this.yAxes_[e],s=0;s<i.ticks.length;s++)n=(t=i.ticks[s]).label,r=(o=!("label_v"in t))?t.v:t.label_v,(a=this.dygraph_.toPercentYCoord(r,e))>0&&a<=1&&this.yticks.push({axis:e,pos:a,label:n,has_tick:o})},r.prototype._evaluateAnnotations=function(){var e,t={};for(e=0;e<this.annotations.length;e++){var n=this.annotations[e];t[n.xval+","+n.series]=n}if(this.annotated_points=[],this.annotations&&this.annotations.length)for(var a=0;a<this.points.length;a++){var r=this.points[a];for(e=0;e<r.length;e++){var o=r[e],i=o.xval+","+o.name;i in t&&(o.annotation=t[i],this.annotated_points.push(o))}}},r.prototype.removeAllDatasets=function(){delete this.points,delete this.setNames,delete this.setPointsLengths,delete this.setPointsOffsets,this.points=[],this.setNames=[],this.setPointsLengths=[],this.setPointsOffsets=[]},n.default=r,t.exports=n.default},{"./dygraph-utils":17}],14:[function(e,t,n){(function(e){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=null,t.exports=n.default}).call(this,e("_process"))},{_process:1}],15:[function(e,t,n){(function(a){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var o=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(e("./dygraph-utils")),i=r(e("./dygraph-default-attrs")),s=(r(e("./dygraph-options-reference")),function(e){this.dygraph_=e,this.yAxes_=[],this.xAxis_={},this.series_={},this.global_=this.dygraph_.attrs_,this.user_=this.dygraph_.user_attrs_||{},this.labels_=[],this.highlightSeries_=this.get("highlightSeriesOpts")||{},this.reparseSeries()});s.AXIS_STRING_MAPPINGS_={y:0,Y:0,y1:0,Y1:0,y2:1,Y2:1},s.axisToIndex_=function(e){if("string"==typeof e){if(s.AXIS_STRING_MAPPINGS_.hasOwnProperty(e))return s.AXIS_STRING_MAPPINGS_[e];throw"Unknown axis : "+e}if("number"==typeof e){if(0===e||1===e)return e;throw"Dygraphs only supports two y-axes, indexed from 0-1."}if(e)throw"Unknown axis : "+e;return 0},s.prototype.reparseSeries=function(){var e=this.get("labels");if(e){this.labels_=e.slice(1),this.yAxes_=[{series:[],options:{}}],this.xAxis_={options:{}},this.series_={};for(var t=this.user_.series||{},n=0;n<this.labels_.length;n++){var a=this.labels_[n],r=t[a]||{},i=s.axisToIndex_(r.axis);this.series_[a]={idx:n,yAxis:i,options:r},this.yAxes_[i]?this.yAxes_[i].series.push(a):this.yAxes_[i]={series:[a],options:{}}}var l=this.user_.axes||{};o.update(this.yAxes_[0].options,l.y||{}),this.yAxes_.length>1&&o.update(this.yAxes_[1].options,l.y2||{}),o.update(this.xAxis_.options,l.x||{})}},s.prototype.get=function(e){var t=this.getGlobalUser_(e);return null!==t?t:this.getGlobalDefault_(e)},s.prototype.getGlobalUser_=function(e){return this.user_.hasOwnProperty(e)?this.user_[e]:null},s.prototype.getGlobalDefault_=function(e){return this.global_.hasOwnProperty(e)?this.global_[e]:i.default.hasOwnProperty(e)?i.default[e]:null},s.prototype.getForAxis=function(e,t){var n,a;if("number"==typeof t)a=0===(n=t)?"y":"y2";else{if("y1"==t&&(t="y"),"y"==t)n=0;else if("y2"==t)n=1;else{if("x"!=t)throw"Unknown axis "+t;n=-1}a=t}var r=-1==n?this.xAxis_:this.yAxes_[n];if(r){var o=r.options;if(o.hasOwnProperty(e))return o[e]}if("x"!==t||"logscale"!==e){var s=this.getGlobalUser_(e);if(null!==s)return s}var l=i.default.axes[a];return l.hasOwnProperty(e)?l[e]:this.getGlobalDefault_(e)},s.prototype.getForSeries=function(e,t){if(t===this.dygraph_.getHighlightSeries()&&this.highlightSeries_.hasOwnProperty(e))return this.highlightSeries_[e];if(!this.series_.hasOwnProperty(t))throw"Unknown series: "+t;var n=this.series_[t],a=n.options;return a.hasOwnProperty(e)?a[e]:this.getForAxis(e,n.yAxis)},s.prototype.numAxes=function(){return this.yAxes_.length},s.prototype.axisForSeries=function(e){return this.series_[e].yAxis},s.prototype.axisOptions=function(e){return this.yAxes_[e].options},s.prototype.seriesForAxis=function(e){return this.yAxes_[e].series},s.prototype.seriesNames=function(){return this.labels_},n.default=s,t.exports=n.default}).call(this,e("_process"))},{"./dygraph-default-attrs":10,"./dygraph-options-reference":14,"./dygraph-utils":17,_process:1}],16:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(e("./dygraph-utils"));n.numericLinearTicks=function(e,t,n,a,o,i){return r(e,t,n,(function(e){return"logscale"!==e&&a(e)}),o,i)};var r=function(e,t,n,r,o,i){var s,l,c,d,u=r("pixelsPerLabel"),h=[];if(i)for(s=0;s<i.length;s++)h.push({v:i[s]});else{if(r("logscale")){d=Math.floor(n/u);var p=a.binarySearch(e,g,1),f=a.binarySearch(t,g,-1);-1==p&&(p=0),-1==f&&(f=g.length-1);var m=null;if(f-p>=d/4){for(var b=f;b>=p;b--){var v=g[b],_=Math.log(v/e)/Math.log(t/e)*n,y={v:v};null===m?m={tickValue:v,pixel_coord:_}:Math.abs(_-m.pixel_coord)>=u?m={tickValue:v,pixel_coord:_}:y.label="",h.push(y)}h.reverse()}}if(0===h.length){var x,O;r("labelsKMG2")?(x=[1,2,4,8,16,32,64,128,256],O=16):(x=[1,2,5,10,20,50,100],O=10);var w,k,E,C=Math.ceil(n/u),S=Math.abs(t-e)/C,j=Math.floor(Math.log(S)/Math.log(O)),D=Math.pow(O,j);for(l=0;l<x.length&&(w=D*x[l],k=Math.floor(e/w)*w,E=Math.ceil(t/w)*w,!(n/(d=Math.abs(E-k)/w)>u));l++);for(k>E&&(w*=-1),s=0;s<=d;s++)c=k+s*w,h.push({v:c})}}var A=r("axisLabelFormatter");for(s=0;s<h.length;s++)void 0===h[s].label&&(h[s].label=A.call(o,h[s].v,0,r,o));return h};n.numericTicks=r,n.dateTicker=function(e,t,n,a,r,o){var i=m(e,t,n,a);return i>=0?v(e,t,i,a,r):[]};var o={MILLISECONDLY:0,TWO_MILLISECONDLY:1,FIVE_MILLISECONDLY:2,TEN_MILLISECONDLY:3,FIFTY_MILLISECONDLY:4,HUNDRED_MILLISECONDLY:5,FIVE_HUNDRED_MILLISECONDLY:6,SECONDLY:7,TWO_SECONDLY:8,FIVE_SECONDLY:9,TEN_SECONDLY:10,THIRTY_SECONDLY:11,MINUTELY:12,TWO_MINUTELY:13,FIVE_MINUTELY:14,TEN_MINUTELY:15,THIRTY_MINUTELY:16,HOURLY:17,TWO_HOURLY:18,SIX_HOURLY:19,DAILY:20,TWO_DAILY:21,WEEKLY:22,MONTHLY:23,QUARTERLY:24,BIANNUAL:25,ANNUAL:26,DECADAL:27,CENTENNIAL:28,NUM_GRANULARITIES:29};n.Granularity=o;var i=0,s=1,l=2,c=3,d=4,u=5,h=6,p=7,f=[];f[o.MILLISECONDLY]={datefield:h,step:1,spacing:1},f[o.TWO_MILLISECONDLY]={datefield:h,step:2,spacing:2},f[o.FIVE_MILLISECONDLY]={datefield:h,step:5,spacing:5},f[o.TEN_MILLISECONDLY]={datefield:h,step:10,spacing:10},f[o.FIFTY_MILLISECONDLY]={datefield:h,step:50,spacing:50},f[o.HUNDRED_MILLISECONDLY]={datefield:h,step:100,spacing:100},f[o.FIVE_HUNDRED_MILLISECONDLY]={datefield:h,step:500,spacing:500},f[o.SECONDLY]={datefield:u,step:1,spacing:1e3},f[o.TWO_SECONDLY]={datefield:u,step:2,spacing:2e3},f[o.FIVE_SECONDLY]={datefield:u,step:5,spacing:5e3},f[o.TEN_SECONDLY]={datefield:u,step:10,spacing:1e4},f[o.THIRTY_SECONDLY]={datefield:u,step:30,spacing:3e4},f[o.MINUTELY]={datefield:d,step:1,spacing:6e4},f[o.TWO_MINUTELY]={datefield:d,step:2,spacing:12e4},f[o.FIVE_MINUTELY]={datefield:d,step:5,spacing:3e5},f[o.TEN_MINUTELY]={datefield:d,step:10,spacing:6e5},f[o.THIRTY_MINUTELY]={datefield:d,step:30,spacing:18e5},f[o.HOURLY]={datefield:c,step:1,spacing:36e5},f[o.TWO_HOURLY]={datefield:c,step:2,spacing:72e5},f[o.SIX_HOURLY]={datefield:c,step:6,spacing:216e5},f[o.DAILY]={datefield:l,step:1,spacing:864e5},f[o.TWO_DAILY]={datefield:l,step:2,spacing:1728e5},f[o.WEEKLY]={datefield:l,step:7,spacing:6048e5},f[o.MONTHLY]={datefield:s,step:1,spacing:2629817280},f[o.QUARTERLY]={datefield:s,step:3,spacing:216e5*365.2524},f[o.BIANNUAL]={datefield:s,step:6,spacing:432e5*365.2524},f[o.ANNUAL]={datefield:i,step:1,spacing:864e5*365.2524},f[o.DECADAL]={datefield:i,step:10,spacing:315578073600},f[o.CENTENNIAL]={datefield:i,step:100,spacing:3155780736e3};var g=function(){for(var e=[],t=-39;t<=39;t++)for(var n=Math.pow(10,t),a=1;a<=9;a++){var r=n*a;e.push(r)}return e}(),m=function(e,t,n,a){for(var r=a("pixelsPerLabel"),i=0;i<o.NUM_GRANULARITIES;i++)if(n/b(e,t,i)>=r)return i;return-1},b=function(e,t,n){var a=f[n].spacing;return Math.round(1*(t-e)/a)},v=function(e,t,n,r,g){var m=r("axisLabelFormatter"),b=r("labelsUTC")?a.DateAccessorsUTC:a.DateAccessorsLocal,v=f[n].datefield,_=f[n].step,y=f[n].spacing,x=new Date(e),O=[];O[i]=b.getFullYear(x),O[s]=b.getMonth(x),O[l]=b.getDate(x),O[c]=b.getHours(x),O[d]=b.getMinutes(x),O[u]=b.getSeconds(x),O[h]=b.getMilliseconds(x);var w=O[v]%_;n==o.WEEKLY&&(w=b.getDay(x)),O[v]-=w;for(var k=v+1;k<p;k++)O[k]=k===l?1:0;var E=[],C=b.makeDate.apply(null,O),S=C.getTime();if(n<=o.HOURLY)for(S<e&&(S+=y,C=new Date(S));S<=t;)E.push({v:S,label:m.call(g,C,n,r,g)}),S+=y,C=new Date(S);else for(S<e&&(O[v]+=_,S=(C=b.makeDate.apply(null,O)).getTime());S<=t;)(n>=o.DAILY||b.getHours(C)%_==0)&&E.push({v:S,label:m.call(g,C,n,r,g)}),O[v]+=_,S=(C=b.makeDate.apply(null,O)).getTime();return E};n.getDateAxis=v},{"./dygraph-utils":17}],17:[function(e,t,n){"use strict";function a(e){return!e.pageX||e.pageX<0?0:e.pageX}function r(e){return!e.pageY||e.pageY<0?0:e.pageY}function o(e,t){var n=Math.min(Math.max(1,t||2),21);return Math.abs(e)<.001&&0!==e?e.toExponential(n-1):e.toPrecision(n)}function i(e){return e<10?"0"+e:""+e}function s(e,t,n,a){var r=i(e)+":"+i(t);if(n&&(r+=":"+i(n),a)){var o=""+a;r+="."+("000"+o).substring(o.length)}return r}function l(e,t){var n=t?y:_,a=new Date(e),r=n.getFullYear(a),o=n.getMonth(a),l=n.getDate(a),c=n.getHours(a),d=n.getMinutes(a),u=n.getSeconds(a),h=n.getMilliseconds(a),p=r+"/"+i(o+1)+"/"+i(l);return 3600*c+60*d+u+.001*h&&(p+=" "+s(c,d,u,h)),p}function c(e,t){var n=Math.pow(10,t);return Math.round(e*n)/n}function d(e){return new Date(e).getTime()}function u(e){var t=typeof e;return("object"==t||"function"==t&&"function"==typeof e.item)&&null!==e&&"number"==typeof e.length&&3!==e.nodeType}function h(e,t,n,a){t=t||0,n=n||e.length,this.hasNext=!0,this.peek=null,this.start_=t,this.array_=e,this.predicate_=a,this.end_=Math.min(e.length,t+n),this.nextIdx_=t-1,this.next()}function p(e,t){return t<0?1/Math.pow(e,-t):Math.pow(e,t)}function f(e){var t=k.exec(e);if(!t)return null;var n=parseInt(t[1],10),a=parseInt(t[2],10),r=parseInt(t[3],10);return t[4]?{r:n,g:a,b:r,a:parseFloat(t[4])}:{r:n,g:a,b:r}}function g(e,t){var n=t("sigFigs");if(null!==n)return o(e,n);var a,r=t("digitsAfterDecimal"),i=t("maxNumberWidth"),s=t("labelsKMB"),l=t("labelsKMG2");if(a=0!==e&&(Math.abs(e)>=Math.pow(10,i)||Math.abs(e)<Math.pow(10,-r))?e.toExponential(r):""+c(e,r),s||l){var d,u=[],h=[];s&&(d=1e3,u=E),l&&(s&&console.warn("Setting both labelsKMB and labelsKMG2. Pick one!"),d=1024,u=C,h=S);for(var f=Math.abs(e),g=p(d,u.length),m=u.length-1;m>=0;m--,g/=d)if(f>=g){a=c(e/g,r)+u[m];break}if(l){var b=String(e.toExponential()).split("e-");2===b.length&&b[1]>=3&&b[1]<=24&&(a=b[1]%3>0?c(b[0]/p(10,b[1]%3),r):Number(b[0]).toFixed(2),a+=h[Math.floor(b[1]/3)-1])}}return a}Object.defineProperty(n,"__esModule",{value:!0}),n.removeEvent=function(e,t,n){e.removeEventListener(t,n,!1)},n.cancelEvent=function(e){return(e=e||window.event).stopPropagation&&e.stopPropagation(),e.preventDefault&&e.preventDefault(),e.cancelBubble=!0,e.cancel=!0,e.returnValue=!1,!1},n.hsvToRGB=function(e,t,n){var a,r,o;if(0===t)a=n,r=n,o=n;else{var i=Math.floor(6*e),s=6*e-i,l=n*(1-t),c=n*(1-t*s),d=n*(1-t*(1-s));switch(i){case 1:a=c,r=n,o=l;break;case 2:a=l,r=n,o=d;break;case 3:a=l,r=c,o=n;break;case 4:a=d,r=l,o=n;break;case 5:a=n,r=l,o=c;break;case 6:case 0:a=n,r=d,o=l}}return"rgb("+(a=Math.floor(255*a+.5))+","+(r=Math.floor(255*r+.5))+","+(o=Math.floor(255*o+.5))+")"},n.findPos=function(e){var t=e.getBoundingClientRect(),n=window,a=document.documentElement;return{x:t.left+(n.pageXOffset||a.scrollLeft),y:t.top+(n.pageYOffset||a.scrollTop)}},n.pageX=a,n.pageY=r,n.dragGetX_=function(e,t){return a(e)-t.px},n.dragGetY_=function(e,t){return r(e)-t.py},n.isOK=function(e){return!!e&&!isNaN(e)},n.isValidPoint=function(e,t){return!!e&&null!==e.yval&&null!==e.x&&void 0!==e.x&&null!==e.y&&void 0!==e.y&&!(isNaN(e.x)||!t&&isNaN(e.y))},n.floatFormat=o,n.zeropad=i,n.hmsString_=s,n.dateString_=l,n.round_=c,n.binarySearch=function(e,t,n,a,r){for(var o=!0;o;){var i=e,s=t,l=n,c=a,d=r;if(o=!1,null!==c&&void 0!==c&&null!==d&&void 0!==d||(c=0,d=s.length-1),c>d)return-1;null!==l&&void 0!==l||(l=0);var u,h=function(e){return e>=0&&e<s.length},p=parseInt((c+d)/2,10),f=s[p];if(f==i)return p;if(f>i){if(l>0&&h(u=p-1)&&s[u]<i)return p;e=i,t=s,n=l,a=c,r=p-1,o=!0,h=p=f=u=void 0}else{if(!(f<i))return-1;if(l<0&&h(u=p+1)&&s[u]>i)return p;e=i,t=s,n=l,a=p+1,r=d,o=!0,h=p=f=u=void 0}}},n.dateParser=function(e){var t,n;if((-1==e.search("-")||-1!=e.search("T")||-1!=e.search("Z"))&&(n=d(e))&&!isNaN(n))return n;if(-1!=e.search("-")){for(t=e.replace("-","/","g");-1!=t.search("-");)t=t.replace("-","/");n=d(t)}else n=8==e.length?d(t=e.substr(0,4)+"/"+e.substr(4,2)+"/"+e.substr(6,2)):d(e);return n&&!isNaN(n)||console.error("Couldn't parse "+e+" as a date"),n},n.dateStrToMillis=d,n.update=function(e,t){if(void 0!==t&&null!==t)for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e},n.updateDeep=function e(t,n){if(void 0!==n&&null!==n)for(var a in n)n.hasOwnProperty(a)&&(null===n[a]?t[a]=null:u(n[a])?t[a]=n[a].slice():function(e){return"object"==typeof Node?e instanceof Node:"object"==typeof e&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName}(n[a])||"object"!=typeof n[a]?t[a]=n[a]:("object"==typeof t[a]&&null!==t[a]||(t[a]={}),e(t[a],n[a])));return t},n.isArrayLike=u,n.isDateLike=function(e){return"object"==typeof e&&null!==e&&"function"==typeof e.getTime},n.clone=function e(t){for(var n=[],a=0;a<t.length;a++)u(t[a])?n.push(e(t[a])):n.push(t[a]);return n},n.createCanvas=function(){return document.createElement("canvas")},n.getContextPixelRatio=function(e){try{var t=window.devicePixelRatio,n=e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1;return void 0!==t?t/n:1}catch(e){return 1}},n.Iterator=h,n.createIterator=function(e,t,n,a){return new h(e,t,n,a)},n.repeatAndCleanup=function(e,t,n,a){var r,o=0,i=(new Date).getTime();if(e(o),1!=t){var s=t-1;!function l(){o>=t||x.call(window,(function(){var t=(new Date).getTime()-i;r=o;var c=(o=Math.floor(t/n))-r;o+c>s||o>=s?(e(s),a()):(0!==c&&e(o),l())}))}()}else a()},n.isPixelChangingOptionList=function(e,t){var n={};if(e)for(var a=1;a<e.length;a++)n[e[a]]=!0;var r=function(e){for(var t in e)if(e.hasOwnProperty(t)&&!O[t])return!0;return!1};for(var o in t)if(t.hasOwnProperty(o))if("highlightSeriesOpts"==o||n[o]&&!t.series){if(r(t[o]))return!0}else if("series"==o||"axes"==o){var i=t[o];for(var s in i)if(i.hasOwnProperty(s)&&r(i[s]))return!0}else if(!O[o])return!0;return!1},n.detectLineDelimiter=function(e){for(var t=0;t<e.length;t++){var n=e.charAt(t);if("\r"===n)return t+1<e.length&&"\n"===e.charAt(t+1)?"\r\n":n;if("\n"===n)return t+1<e.length&&"\r"===e.charAt(t+1)?"\n\r":n}return null},n.isNodeContainedBy=function(e,t){if(null===t||null===e)return!1;for(var n=e;n&&n!==t;)n=n.parentNode;return n===t},n.pow=p,n.toRGB_=function(e){var t=f(e);if(t)return t;var n=document.createElement("div");n.style.backgroundColor=e,n.style.visibility="hidden",document.body.appendChild(n);var a=window.getComputedStyle(n,null).backgroundColor;return document.body.removeChild(n),f(a)},n.isCanvasSupported=function(e){try{(e||document.createElement("canvas")).getContext("2d")}catch(e){return!1}return!0},n.parseFloat_=function(e,t,n){var a=parseFloat(e);if(!isNaN(a))return a;if(/^ *$/.test(e))return null;if(/^ *nan *$/i.test(e))return NaN;var r="Unable to parse '"+e+"' as a number";return void 0!==n&&void 0!==t&&(r+=" on line "+(1+(t||0))+" ('"+n+"') of CSV."),console.error(r),null},n.numberValueFormatter=g,n.numberAxisLabelFormatter=function(e,t,n){return g.call(this,e,n)},n.dateAxisLabelFormatter=function(e,t,n){var a=n("labelsUTC")?y:_,r=a.getFullYear(e),o=a.getMonth(e),l=a.getDate(e),c=a.getHours(e),d=a.getMinutes(e),u=a.getSeconds(e),h=a.getMilliseconds(e);if(t>=m.Granularity.DECADAL)return""+r;if(t>=m.Granularity.MONTHLY)return j[o]+"&#160;"+r;if(0===3600*c+60*d+u+.001*h||t>=m.Granularity.DAILY)return i(l)+"&#160;"+j[o];if(t<m.Granularity.SECONDLY){var p=""+h;return i(u)+"."+("000"+p).substring(p.length)}return t>m.Granularity.MINUTELY?s(c,d,u,0):s(c,d,u,h)},n.dateValueFormatter=function(e,t){return l(e,t("labelsUTC"))};var m=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(e("./dygraph-tickers"));n.LOG_SCALE=10;var b=Math.log(10);n.LN_TEN=b;var v=function(e){return Math.log(e)/b};n.log10=v,n.logRangeFraction=function(e,t,n){var a=v(e),r=a+n*(v(t)-a);return Math.pow(10,r)},n.DOTTED_LINE=[2,2],n.DASHED_LINE=[7,3],n.DOT_DASH_LINE=[7,2,2,2],n.HORIZONTAL=1,n.VERTICAL=2,n.getContext=function(e){return e.getContext("2d")},n.addEvent=function(e,t,n){e.addEventListener(t,n,!1)};var _={getFullYear:function(e){return e.getFullYear()},getMonth:function(e){return e.getMonth()},getDate:function(e){return e.getDate()},getHours:function(e){return e.getHours()},getMinutes:function(e){return e.getMinutes()},getSeconds:function(e){return e.getSeconds()},getMilliseconds:function(e){return e.getMilliseconds()},getDay:function(e){return e.getDay()},makeDate:function(e,t,n,a,r,o,i){return new Date(e,t,n,a,r,o,i)}};n.DateAccessorsLocal=_;var y={getFullYear:function(e){return e.getUTCFullYear()},getMonth:function(e){return e.getUTCMonth()},getDate:function(e){return e.getUTCDate()},getHours:function(e){return e.getUTCHours()},getMinutes:function(e){return e.getUTCMinutes()},getSeconds:function(e){return e.getUTCSeconds()},getMilliseconds:function(e){return e.getUTCMilliseconds()},getDay:function(e){return e.getUTCDay()},makeDate:function(e,t,n,a,r,o,i){return new Date(Date.UTC(e,t,n,a,r,o,i))}};n.DateAccessorsUTC=y,h.prototype.next=function(){if(!this.hasNext)return null;for(var e=this.peek,t=this.nextIdx_+1,n=!1;t<this.end_;){if(!this.predicate_||this.predicate_(this.array_,t)){this.peek=this.array_[t],n=!0;break}t++}return this.nextIdx_=t,n||(this.hasNext=!1,this.peek=null),e};var x=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(e){window.setTimeout(e,1e3/60)};n.requestAnimFrame=x;var O={annotationClickHandler:!0,annotationDblClickHandler:!0,annotationMouseOutHandler:!0,annotationMouseOverHandler:!0,axisLineColor:!0,axisLineWidth:!0,clickCallback:!0,drawCallback:!0,drawHighlightPointCallback:!0,drawPoints:!0,drawPointCallback:!0,drawGrid:!0,fillAlpha:!0,gridLineColor:!0,gridLineWidth:!0,hideOverlayOnMouseOut:!0,highlightCallback:!0,highlightCircleSize:!0,interactionModel:!0,labelsDiv:!0,labelsKMB:!0,labelsKMG2:!0,labelsSeparateLines:!0,labelsShowZeroValues:!0,legend:!0,panEdgeFraction:!0,pixelsPerYLabel:!0,pointClickCallback:!0,pointSize:!0,rangeSelectorPlotFillColor:!0,rangeSelectorPlotFillGradientColor:!0,rangeSelectorPlotStrokeColor:!0,rangeSelectorBackgroundStrokeColor:!0,rangeSelectorBackgroundLineWidth:!0,rangeSelectorPlotLineWidth:!0,rangeSelectorForegroundStrokeColor:!0,rangeSelectorForegroundLineWidth:!0,rangeSelectorAlpha:!0,showLabelsOnHighlight:!0,showRoller:!0,strokeWidth:!0,underlayCallback:!0,unhighlightCallback:!0,zoomCallback:!0},w={DEFAULT:function(e,t,n,a,r,o,i){n.beginPath(),n.fillStyle=o,n.arc(a,r,i,0,2*Math.PI,!1),n.fill()}};n.Circles=w;var k=/^rgba?\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})(?:,\s*([01](?:\.\d+)?))?\)$/,E=["K","M","B","T","Q"],C=["k","M","G","T","P","E","Z","Y"],S=["m","u","n","p","f","a","z","y"],j=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]},{"./dygraph-tickers":16}],18:[function(e,t,n){(function(a){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var i=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,s=e[Symbol.iterator]();!(a=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&s.return&&s.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},s=o(e("./dygraph-layout")),l=o(e("./dygraph-canvas")),c=o(e("./dygraph-options")),d=o(e("./dygraph-interaction-model")),u=r(e("./dygraph-tickers")),h=r(e("./dygraph-utils")),p=o(e("./dygraph-default-attrs")),f=(o(e("./dygraph-options-reference")),e("./iframe-tarp")),g=o(f),m=o(e("./datahandler/default")),b=o(e("./datahandler/bars-error")),v=o(e("./datahandler/bars-custom")),_=o(e("./datahandler/default-fractions")),y=o(e("./datahandler/bars-fractions")),x=o(e("./datahandler/bars")),O=o(e("./plugins/annotations")),w=o(e("./plugins/axes")),k=o(e("./plugins/chart-labels")),E=o(e("./plugins/grid")),C=o(e("./plugins/legend")),S=o(e("./plugins/range-selector")),j=o(e("./dygraph-gviz")),D=function(e,t,n){this.__init__(e,t,n)};D.NAME="Dygraph",D.VERSION="2.1.0",D.DEFAULT_ROLL_PERIOD=1,D.DEFAULT_WIDTH=480,D.DEFAULT_HEIGHT=320,D.ANIMATION_STEPS=12,D.ANIMATION_DURATION=200,D.Plotters=l.default._Plotters,D.addedAnnotationCSS=!1,D.prototype.__init__=function(e,t,n){if(this.is_initial_draw_=!0,this.readyFns_=[],null!==n&&void 0!==n||(n={}),n=D.copyUserAttrs_(n),"string"==typeof e&&(e=document.getElementById(e)),!e)throw new Error("Constructing dygraph with a non-existent div!");this.maindiv_=e,this.file_=t,this.rollPeriod_=n.rollPeriod||D.DEFAULT_ROLL_PERIOD,this.previousVerticalX_=-1,this.fractions_=n.fractions||!1,this.dateWindow_=n.dateWindow||null,this.annotations_=[],e.innerHTML="",""===e.style.width&&n.width&&(e.style.width=n.width+"px"),""===e.style.height&&n.height&&(e.style.height=n.height+"px"),""===e.style.height&&0===e.clientHeight&&(e.style.height=D.DEFAULT_HEIGHT+"px",""===e.style.width&&(e.style.width=D.DEFAULT_WIDTH+"px")),this.width_=e.clientWidth||n.width||0,this.height_=e.clientHeight||n.height||0,n.stackedGraph&&(n.fillGraph=!0),this.user_attrs_={},h.update(this.user_attrs_,n),this.attrs_={},h.updateDeep(this.attrs_,p.default),this.boundaryIds_=[],this.setIndexByName_={},this.datasetIndex_=[],this.registeredEvents_=[],this.eventListeners_={},this.attributes_=new c.default(this),this.createInterface_(),this.plugins_=[];for(var a=D.PLUGINS.concat(this.getOption("plugins")),r=0;r<a.length;r++){var o,i=a[r],s={plugin:o=void 0!==i.activate?i:new i,events:{},options:{},pluginOptions:{}},l=o.activate(this);for(var d in l)l.hasOwnProperty(d)&&(s.events[d]=l[d]);this.plugins_.push(s)}for(r=0;r<this.plugins_.length;r++){var u=this.plugins_[r];for(var d in u.events)if(u.events.hasOwnProperty(d)){var f=u.events[d],g=[u.plugin,f];d in this.eventListeners_?this.eventListeners_[d].push(g):this.eventListeners_[d]=[g]}}this.createDragInterface_(),this.start_()},D.prototype.cascadeEvents_=function(e,t){if(!(e in this.eventListeners_))return!1;var n={dygraph:this,cancelable:!1,defaultPrevented:!1,preventDefault:function(){if(!n.cancelable)throw"Cannot call preventDefault on non-cancelable event.";n.defaultPrevented=!0},propagationStopped:!1,stopPropagation:function(){n.propagationStopped=!0}};h.update(n,t);var a=this.eventListeners_[e];if(a)for(var r=a.length-1;r>=0;r--){var o=a[r][0];if(a[r][1].call(o,n),n.propagationStopped)break}return n.defaultPrevented},D.prototype.getPluginInstance_=function(e){for(var t=0;t<this.plugins_.length;t++){var n=this.plugins_[t];if(n.plugin instanceof e)return n.plugin}return null},D.prototype.isZoomed=function(e){var t=!!this.dateWindow_;if("x"===e)return t;var n=this.axes_.map((function(e){return!!e.valueRange})).indexOf(!0)>=0;if(null===e||void 0===e)return t||n;if("y"===e)return n;throw new Error("axis parameter is ["+e+"] must be null, 'x' or 'y'.")},D.prototype.toString=function(){var e=this.maindiv_;return"[Dygraph "+(e&&e.id?e.id:e)+"]"},D.prototype.attr_=function(e,t){return t?this.attributes_.getForSeries(e,t):this.attributes_.get(e)},D.prototype.getOption=function(e,t){return this.attr_(e,t)},D.prototype.getNumericOption=function(e,t){return this.getOption(e,t)},D.prototype.getStringOption=function(e,t){return this.getOption(e,t)},D.prototype.getBooleanOption=function(e,t){return this.getOption(e,t)},D.prototype.getFunctionOption=function(e,t){return this.getOption(e,t)},D.prototype.getOptionForAxis=function(e,t){return this.attributes_.getForAxis(e,t)},D.prototype.optionsViewForAxis_=function(e){var t=this;return function(n){var a=t.user_attrs_.axes;return a&&a[e]&&a[e].hasOwnProperty(n)?a[e][n]:("x"!==e||"logscale"!==n)&&(void 0!==t.user_attrs_[n]?t.user_attrs_[n]:(a=t.attrs_.axes)&&a[e]&&a[e].hasOwnProperty(n)?a[e][n]:"y"==e&&t.axes_[0].hasOwnProperty(n)?t.axes_[0][n]:"y2"==e&&t.axes_[1].hasOwnProperty(n)?t.axes_[1][n]:t.attr_(n))}},D.prototype.rollPeriod=function(){return this.rollPeriod_},D.prototype.xAxisRange=function(){return this.dateWindow_?this.dateWindow_:this.xAxisExtremes()},D.prototype.xAxisExtremes=function(){var e=this.getNumericOption("xRangePad")/this.plotter_.area.w;if(0===this.numRows())return[0-e,1+e];var t=this.rawData_[0][0],n=this.rawData_[this.rawData_.length-1][0];if(e){var a=n-t;t-=a*e,n+=a*e}return[t,n]},D.prototype.yAxisExtremes=function(){var e=this.gatherDatasets_(this.rolledSeries_,null).extremes,t=this.axes_;this.computeYAxisRanges_(e);var n=this.axes_;return this.axes_=t,n.map((function(e){return e.extremeRange}))},D.prototype.yAxisRange=function(e){if(void 0===e&&(e=0),e<0||e>=this.axes_.length)return null;var t=this.axes_[e];return[t.computedValueRange[0],t.computedValueRange[1]]},D.prototype.yAxisRanges=function(){for(var e=[],t=0;t<this.axes_.length;t++)e.push(this.yAxisRange(t));return e},D.prototype.toDomCoords=function(e,t,n){return[this.toDomXCoord(e),this.toDomYCoord(t,n)]},D.prototype.toDomXCoord=function(e){if(null===e)return null;var t=this.plotter_.area,n=this.xAxisRange();return t.x+(e-n[0])/(n[1]-n[0])*t.w},D.prototype.toDomYCoord=function(e,t){var n=this.toPercentYCoord(e,t);if(null===n)return null;var a=this.plotter_.area;return a.y+n*a.h},D.prototype.toDataCoords=function(e,t,n){return[this.toDataXCoord(e),this.toDataYCoord(t,n)]},D.prototype.toDataXCoord=function(e){if(null===e)return null;var t=this.plotter_.area,n=this.xAxisRange();if(this.attributes_.getForAxis("logscale","x")){var a=(e-t.x)/t.w;return h.logRangeFraction(n[0],n[1],a)}return n[0]+(e-t.x)/t.w*(n[1]-n[0])},D.prototype.toDataYCoord=function(e,t){if(null===e)return null;var n=this.plotter_.area,a=this.yAxisRange(t);if(void 0===t&&(t=0),this.attributes_.getForAxis("logscale",t)){var r=(e-n.y)/n.h;return h.logRangeFraction(a[1],a[0],r)}return a[0]+(n.y+n.h-e)/n.h*(a[1]-a[0])},D.prototype.toPercentYCoord=function(e,t){if(null===e)return null;void 0===t&&(t=0);var n,a=this.yAxisRange(t);if(this.attributes_.getForAxis("logscale",t)){var r=h.log10(a[0]),o=h.log10(a[1]);n=(o-h.log10(e))/(o-r)}else n=(a[1]-e)/(a[1]-a[0]);return n},D.prototype.toPercentXCoord=function(e){if(null===e)return null;var t,n=this.xAxisRange();if(!0===this.attributes_.getForAxis("logscale","x")){var a=h.log10(n[0]),r=h.log10(n[1]);t=(h.log10(e)-a)/(r-a)}else t=(e-n[0])/(n[1]-n[0]);return t},D.prototype.numColumns=function(){return this.rawData_?this.rawData_[0]?this.rawData_[0].length:this.attr_("labels").length:0},D.prototype.numRows=function(){return this.rawData_?this.rawData_.length:0},D.prototype.getValue=function(e,t){return e<0||e>this.rawData_.length?null:t<0||t>this.rawData_[e].length?null:this.rawData_[e][t]},D.prototype.createInterface_=function(){var e=this.maindiv_;this.graphDiv=document.createElement("div"),this.graphDiv.style.textAlign="left",this.graphDiv.style.position="relative",e.appendChild(this.graphDiv),this.canvas_=h.createCanvas(),this.canvas_.style.position="absolute",this.hidden_=this.createPlotKitCanvas_(this.canvas_),this.canvas_ctx_=h.getContext(this.canvas_),this.hidden_ctx_=h.getContext(this.hidden_),this.resizeElements_(),this.graphDiv.appendChild(this.hidden_),this.graphDiv.appendChild(this.canvas_),this.mouseEventElement_=this.createMouseEventElement_(),this.layout_=new s.default(this);var t=this;this.mouseMoveHandler_=function(e){t.mouseMove_(e)},this.mouseOutHandler_=function(e){var n=e.target||e.fromElement,a=e.relatedTarget||e.toElement;h.isNodeContainedBy(n,t.graphDiv)&&!h.isNodeContainedBy(a,t.graphDiv)&&t.mouseOut_(e)},this.addAndTrackEvent(window,"mouseout",this.mouseOutHandler_),this.addAndTrackEvent(this.mouseEventElement_,"mousemove",this.mouseMoveHandler_),this.resizeHandler_||(this.resizeHandler_=function(e){t.resize()},this.addAndTrackEvent(window,"resize",this.resizeHandler_))},D.prototype.resizeElements_=function(){this.graphDiv.style.width=this.width_+"px",this.graphDiv.style.height=this.height_+"px";var e=this.getNumericOption("pixelRatio"),t=e||h.getContextPixelRatio(this.canvas_ctx_);this.canvas_.width=this.width_*t,this.canvas_.height=this.height_*t,this.canvas_.style.width=this.width_+"px",this.canvas_.style.height=this.height_+"px",1!==t&&this.canvas_ctx_.scale(t,t);var n=e||h.getContextPixelRatio(this.hidden_ctx_);this.hidden_.width=this.width_*n,this.hidden_.height=this.height_*n,this.hidden_.style.width=this.width_+"px",this.hidden_.style.height=this.height_+"px",1!==n&&this.hidden_ctx_.scale(n,n)},D.prototype.destroy=function(){this.canvas_ctx_.restore(),this.hidden_ctx_.restore();for(var e=this.plugins_.length-1;e>=0;e--){var t=this.plugins_.pop();t.plugin.destroy&&t.plugin.destroy()}this.removeTrackedEvents_(),h.removeEvent(window,"mouseout",this.mouseOutHandler_),h.removeEvent(this.mouseEventElement_,"mousemove",this.mouseMoveHandler_),h.removeEvent(window,"resize",this.resizeHandler_),this.resizeHandler_=null,function e(t){for(;t.hasChildNodes();)e(t.firstChild),t.removeChild(t.firstChild)}(this.maindiv_);var n=function(e){for(var t in e)"object"==typeof e[t]&&(e[t]=null)};n(this.layout_),n(this.plotter_),n(this)},D.prototype.createPlotKitCanvas_=function(e){var t=h.createCanvas();return t.style.position="absolute",t.style.top=e.style.top,t.style.left=e.style.left,t.width=this.width_,t.height=this.height_,t.style.width=this.width_+"px",t.style.height=this.height_+"px",t},D.prototype.createMouseEventElement_=function(){return this.canvas_},D.prototype.setColors_=function(){var e=this.getLabels(),t=e.length-1;this.colors_=[],this.colorsMap_={};for(var n=this.getNumericOption("colorSaturation")||1,a=this.getNumericOption("colorValue")||.5,r=Math.ceil(t/2),o=this.getOption("colors"),i=this.visibility(),s=0;s<t;s++)if(i[s]){var l=e[s+1],c=this.attributes_.getForSeries("color",l);if(!c)if(o)c=o[s%o.length];else{var d=1*(s%2?r+(s+1)/2:Math.ceil((s+1)/2))/(1+t);c=h.hsvToRGB(d,n,a)}this.colors_.push(c),this.colorsMap_[l]=c}},D.prototype.getColors=function(){return this.colors_},D.prototype.getPropertiesForSeries=function(e){for(var t=-1,n=this.getLabels(),a=1;a<n.length;a++)if(n[a]==e){t=a;break}return-1==t?null:{name:e,column:t,visible:this.visibility()[t-1],color:this.colorsMap_[e],axis:1+this.attributes_.axisForSeries(e)}},D.prototype.createRollInterface_=function(){var e=this,t=this.roller_;t||(this.roller_=t=document.createElement("input"),t.type="text",t.style.display="none",t.className="dygraph-roller",this.graphDiv.appendChild(t));var n=this.getBooleanOption("showRoller")?"block":"none",a=this.getArea(),r={top:a.y+a.h-25+"px",left:a.x+1+"px",display:n};t.size="2",t.value=this.rollPeriod_,h.update(t.style,r),t.onchange=function(){return e.adjustRoll(t.value)}},D.prototype.createDragInterface_=function(){var e={isZooming:!1,isPanning:!1,is2DPan:!1,dragStartX:null,dragStartY:null,dragEndX:null,dragEndY:null,dragDirection:null,prevEndX:null,prevEndY:null,prevDragDirection:null,cancelNextDblclick:!1,initialLeftmostDate:null,xUnitsPerPixel:null,dateRange:null,px:0,py:0,boundedDates:null,boundedValues:null,tarp:new g.default,initializeMouseDown:function(e,t,n){e.preventDefault?e.preventDefault():(e.returnValue=!1,e.cancelBubble=!0);var a=h.findPos(t.canvas_);n.px=a.x,n.py=a.y,n.dragStartX=h.dragGetX_(e,n),n.dragStartY=h.dragGetY_(e,n),n.cancelNextDblclick=!1,n.tarp.cover()},destroy:function(){var e=this;if((e.isZooming||e.isPanning)&&(e.isZooming=!1,e.dragStartX=null,e.dragStartY=null),e.isPanning){e.isPanning=!1,e.draggingDate=null,e.dateRange=null;for(var t=0;t<n.axes_.length;t++)delete n.axes_[t].draggingValue,delete n.axes_[t].dragValueRange}e.tarp.uncover()}},t=this.getOption("interactionModel"),n=this;for(var a in t)t.hasOwnProperty(a)&&this.addAndTrackEvent(this.mouseEventElement_,a,function(t){return function(a){t(a,n,e)}}(t[a]));t.willDestroyContextMyself||this.addAndTrackEvent(document,"mouseup",(function(t){e.destroy()}))},D.prototype.drawZoomRect_=function(e,t,n,a,r,o,i,s){var l=this.canvas_ctx_;o==h.HORIZONTAL?l.clearRect(Math.min(t,i),this.layout_.getPlotArea().y,Math.abs(t-i),this.layout_.getPlotArea().h):o==h.VERTICAL&&l.clearRect(this.layout_.getPlotArea().x,Math.min(a,s),this.layout_.getPlotArea().w,Math.abs(a-s)),e==h.HORIZONTAL?n&&t&&(l.fillStyle="rgba(128,128,128,0.33)",l.fillRect(Math.min(t,n),this.layout_.getPlotArea().y,Math.abs(n-t),this.layout_.getPlotArea().h)):e==h.VERTICAL&&r&&a&&(l.fillStyle="rgba(128,128,128,0.33)",l.fillRect(this.layout_.getPlotArea().x,Math.min(a,r),this.layout_.getPlotArea().w,Math.abs(r-a)))},D.prototype.clearZoomRect_=function(){this.currentZoomRectArgs_=null,this.canvas_ctx_.clearRect(0,0,this.width_,this.height_)},D.prototype.doZoomX_=function(e,t){this.currentZoomRectArgs_=null;var n=this.toDataXCoord(e),a=this.toDataXCoord(t);this.doZoomXDates_(n,a)},D.prototype.doZoomXDates_=function(e,t){var n=this,a=this.xAxisRange(),r=[e,t],o=this.getFunctionOption("zoomCallback");this.doAnimatedZoom(a,r,null,null,(function(){o&&o.call(n,e,t,n.yAxisRanges())}))},D.prototype.doZoomY_=function(e,t){var n=this;this.currentZoomRectArgs_=null;for(var a=this.yAxisRanges(),r=[],o=0;o<this.axes_.length;o++){var s=this.toDataYCoord(e,o),l=this.toDataYCoord(t,o);r.push([l,s])}var c=this.getFunctionOption("zoomCallback");this.doAnimatedZoom(null,null,a,r,(function(){if(c){var e=n.xAxisRange(),t=i(e,2),a=t[0],r=t[1];c.call(n,a,r,n.yAxisRanges())}}))},D.zoomAnimationFunction=function(e,t){return(1-Math.pow(1.5,-e))/(1-Math.pow(1.5,-t))},D.prototype.resetZoom=function(){var e=this,t=this.isZoomed("x"),n=this.isZoomed("y"),a=t||n;if(this.clearSelection(),a){var r=this.xAxisExtremes(),o=i(r,2),s=o[0],l=o[1],c=this.getBooleanOption("animatedZooms"),d=this.getFunctionOption("zoomCallback");if(!c)return this.dateWindow_=null,this.axes_.forEach((function(e){e.valueRange&&delete e.valueRange})),this.drawGraph_(),void(d&&d.call(this,s,l,this.yAxisRanges()));var u=null,h=null,p=null,f=null;t&&(u=this.xAxisRange(),h=[s,l]),n&&(p=this.yAxisRanges(),f=this.yAxisExtremes()),this.doAnimatedZoom(u,h,p,f,(function(){e.dateWindow_=null,e.axes_.forEach((function(e){e.valueRange&&delete e.valueRange})),d&&d.call(e,s,l,e.yAxisRanges())}))}},D.prototype.doAnimatedZoom=function(e,t,n,a,r){var o,i,s=this,l=this.getBooleanOption("animatedZooms")?D.ANIMATION_STEPS:1,c=[],d=[];if(null!==e&&null!==t)for(o=1;o<=l;o++)i=D.zoomAnimationFunction(o,l),c[o-1]=[e[0]*(1-i)+i*t[0],e[1]*(1-i)+i*t[1]];if(null!==n&&null!==a)for(o=1;o<=l;o++){i=D.zoomAnimationFunction(o,l);for(var u=[],p=0;p<this.axes_.length;p++)u.push([n[p][0]*(1-i)+i*a[p][0],n[p][1]*(1-i)+i*a[p][1]]);d[o-1]=u}h.repeatAndCleanup((function(e){if(d.length)for(var t=0;t<s.axes_.length;t++){var n=d[e][t];s.axes_[t].valueRange=[n[0],n[1]]}c.length&&(s.dateWindow_=c[e]),s.drawGraph_()}),l,D.ANIMATION_DURATION/l,r)},D.prototype.getArea=function(){return this.plotter_.area},D.prototype.eventToDomCoords=function(e){if(e.offsetX&&e.offsetY)return[e.offsetX,e.offsetY];var t=h.findPos(this.mouseEventElement_);return[h.pageX(e)-t.x,h.pageY(e)-t.y]},D.prototype.findClosestRow=function(e){for(var t=1/0,n=-1,a=this.layout_.points,r=0;r<a.length;r++)for(var o=a[r],i=o.length,s=0;s<i;s++){var l=o[s];if(h.isValidPoint(l,!0)){var c=Math.abs(l.canvasx-e);c<t&&(t=c,n=l.idx)}}return n},D.prototype.findClosestPoint=function(e,t){for(var n,a,r,o,i,s,l,c=1/0,d=this.layout_.points.length-1;d>=0;--d)for(var u=this.layout_.points[d],p=0;p<u.length;++p)o=u[p],h.isValidPoint(o)&&(n=(a=o.canvasx-e)*a+(r=o.canvasy-t)*r)<c&&(c=n,i=o,s=d,l=o.idx);return{row:l,seriesName:this.layout_.setNames[s],point:i}},D.prototype.findStackedPoint=function(e,t){for(var n,a,r=this.findClosestRow(e),o=0;o<this.layout_.points.length;++o){var i=r-this.getLeftBoundary_(o),s=this.layout_.points[o];if(!(i>=s.length)){var l=s[i];if(h.isValidPoint(l)){var c=l.canvasy;if(e>l.canvasx&&i+1<s.length){var d=s[i+1];h.isValidPoint(d)&&(u=d.canvasx-l.canvasx)>0&&(c+=(e-l.canvasx)/u*(d.canvasy-l.canvasy))}else if(e<l.canvasx&&i>0){var u,p=s[i-1];h.isValidPoint(p)&&(u=l.canvasx-p.canvasx)>0&&(c+=(l.canvasx-e)/u*(p.canvasy-l.canvasy))}(0===o||c<t)&&(n=l,a=o)}}}return{row:r,seriesName:this.layout_.setNames[a],point:n}},D.prototype.mouseMove_=function(e){var t=this.layout_.points;if(void 0!==t&&null!==t){var n=this.eventToDomCoords(e),a=n[0],r=n[1],o=!1;if(this.getOption("highlightSeriesOpts")&&!this.isSeriesLocked()){var i;i=this.getBooleanOption("stackedGraph")?this.findStackedPoint(a,r):this.findClosestPoint(a,r),o=this.setSelection(i.row,i.seriesName)}else{var s=this.findClosestRow(a);o=this.setSelection(s)}var l=this.getFunctionOption("highlightCallback");l&&o&&l.call(this,e,this.lastx_,this.selPoints_,this.lastRow_,this.highlightSet_)}},D.prototype.getLeftBoundary_=function(e){if(this.boundaryIds_[e])return this.boundaryIds_[e][0];for(var t=0;t<this.boundaryIds_.length;t++)if(void 0!==this.boundaryIds_[t])return this.boundaryIds_[t][0];return 0},D.prototype.animateSelection_=function(e){void 0===this.fadeLevel&&(this.fadeLevel=0),void 0===this.animateId&&(this.animateId=0);var t=this.fadeLevel,n=e<0?t:10-t;if(n<=0)this.fadeLevel&&this.updateSelection_(1);else{var a=++this.animateId,r=this;h.repeatAndCleanup((function(t){r.animateId==a&&(r.fadeLevel+=e,0===r.fadeLevel?r.clearSelection():r.updateSelection_(r.fadeLevel/10))}),n,30,(function(){0!==r.fadeLevel&&e<0&&(r.fadeLevel=0,r.clearSelection())}))}},D.prototype.updateSelection_=function(e){this.cascadeEvents_("select",{selectedRow:-1===this.lastRow_?void 0:this.lastRow_,selectedX:-1===this.lastx_?void 0:this.lastx_,selectedPoints:this.selPoints_});var t,n=this.canvas_ctx_;if(this.getOption("highlightSeriesOpts")){n.clearRect(0,0,this.width_,this.height_);var a=1-this.getNumericOption("highlightSeriesBackgroundAlpha"),r=h.toRGB_(this.getOption("highlightSeriesBackgroundColor"));if(a){if(void 0===e)return void this.animateSelection_(1);a*=e,n.fillStyle="rgba("+r.r+","+r.g+","+r.b+","+a+")",n.fillRect(0,0,this.width_,this.height_)}this.plotter_._renderLineChart(this.highlightSet_,n)}else if(this.previousVerticalX_>=0){var o=0,i=this.attr_("labels");for(t=1;t<i.length;t++){var s=this.getNumericOption("highlightCircleSize",i[t]);s>o&&(o=s)}var l=this.previousVerticalX_;n.clearRect(l-o-1,0,2*o+2,this.height_)}if(this.selPoints_.length>0){var c=this.selPoints_[0].canvasx;for(n.save(),t=0;t<this.selPoints_.length;t++){var d=this.selPoints_[t];if(!isNaN(d.canvasy)){var u=this.getNumericOption("highlightCircleSize",d.name),p=this.getFunctionOption("drawHighlightPointCallback",d.name),f=this.plotter_.colors[d.name];p||(p=h.Circles.DEFAULT),n.lineWidth=this.getNumericOption("strokeWidth",d.name),n.strokeStyle=f,n.fillStyle=f,p.call(this,this,d.name,n,c,d.canvasy,f,u,d.idx)}}n.restore(),this.previousVerticalX_=c}},D.prototype.setSelection=function(e,t,n){this.selPoints_=[];var a=!1;if(!1!==e&&e>=0){e!=this.lastRow_&&(a=!0),this.lastRow_=e;for(var r=0;r<this.layout_.points.length;++r){var o=this.layout_.points[r],i=e-this.getLeftBoundary_(r);if(i>=0&&i<o.length&&o[i].idx==e)null!==(l=o[i]).yval&&this.selPoints_.push(l);else for(var s=0;s<o.length;++s){var l;if((l=o[s]).idx==e){null!==l.yval&&this.selPoints_.push(l);break}}}}else this.lastRow_>=0&&(a=!0),this.lastRow_=-1;return this.selPoints_.length?this.lastx_=this.selPoints_[0].xval:this.lastx_=-1,void 0!==t&&(this.highlightSet_!==t&&(a=!0),this.highlightSet_=t),void 0!==n&&(this.lockedSet_=n),a&&this.updateSelection_(void 0),a},D.prototype.mouseOut_=function(e){this.getFunctionOption("unhighlightCallback")&&this.getFunctionOption("unhighlightCallback").call(this,e),this.getBooleanOption("hideOverlayOnMouseOut")&&!this.lockedSet_&&this.clearSelection()},D.prototype.clearSelection=function(){this.cascadeEvents_("deselect",{}),this.lockedSet_=!1,this.fadeLevel?this.animateSelection_(-1):(this.canvas_ctx_.clearRect(0,0,this.width_,this.height_),this.fadeLevel=0,this.selPoints_=[],this.lastx_=-1,this.lastRow_=-1,this.highlightSet_=null)},D.prototype.getSelection=function(){if(!this.selPoints_||this.selPoints_.length<1)return-1;for(var e=0;e<this.layout_.points.length;e++)for(var t=this.layout_.points[e],n=0;n<t.length;n++)if(t[n].x==this.selPoints_[0].x)return t[n].idx;return-1},D.prototype.getHighlightSeries=function(){return this.highlightSet_},D.prototype.isSeriesLocked=function(){return this.lockedSet_},D.prototype.loadedEvent_=function(e){this.rawData_=this.parseCSV_(e),this.cascadeDataDidUpdateEvent_(),this.predraw_()},D.prototype.addXTicks_=function(){var e;e=this.dateWindow_?[this.dateWindow_[0],this.dateWindow_[1]]:this.xAxisExtremes();var t=this.optionsViewForAxis_("x"),n=t("ticker")(e[0],e[1],this.plotter_.area.w,t,this);this.layout_.setXTicks(n)},D.prototype.getHandlerClass_=function(){return this.attr_("dataHandler")?this.attr_("dataHandler"):this.fractions_?this.getBooleanOption("errorBars")?y.default:_.default:this.getBooleanOption("customBars")?v.default:this.getBooleanOption("errorBars")?b.default:m.default},D.prototype.predraw_=function(){var e=new Date;this.dataHandler_=new(this.getHandlerClass_()),this.layout_.computePlotArea(),this.computeYAxes_(),this.is_initial_draw_||(this.canvas_ctx_.restore(),this.hidden_ctx_.restore()),this.canvas_ctx_.save(),this.hidden_ctx_.save(),this.plotter_=new l.default(this,this.hidden_,this.hidden_ctx_,this.layout_),this.createRollInterface_(),this.cascadeEvents_("predraw"),this.rolledSeries_=[null];for(var t=1;t<this.numColumns();t++){var n=this.dataHandler_.extractSeries(this.rawData_,t,this.attributes_);this.rollPeriod_>1&&(n=this.dataHandler_.rollingAverage(n,this.rollPeriod_,this.attributes_)),this.rolledSeries_.push(n)}this.drawGraph_();var a=new Date;this.drawingTimeMs_=a-e},D.PointType=void 0,D.stackPoints_=function(e,t,n,a){for(var r=null,o=null,i=null,s=-1,l=0;l<e.length;++l){var c=e[l],d=c.xval;void 0===t[d]&&(t[d]=0);var u=c.yval;isNaN(u)||null===u?"none"==a?u=0:(function(t){if(!(s>=t))for(var n=t;n<e.length;++n)if(i=null,!isNaN(e[n].yval)&&null!==e[n].yval){s=n,i=e[n];break}}(l),u=o&&i&&"none"!=a?o.yval+(i.yval-o.yval)*((d-o.xval)/(i.xval-o.xval)):o&&"all"==a?o.yval:i&&"all"==a?i.yval:0):o=c;var h=t[d];r!=d&&(h+=u,t[d]=h),r=d,c.yval_stacked=h,h>n[1]&&(n[1]=h),h<n[0]&&(n[0]=h)}},D.prototype.gatherDatasets_=function(e,t){var n,a,r,o,i,s,l=[],c=[],d=[],u={};for(n=e.length-1;n>=1;n--)if(this.visibility()[n-1]){if(t){s=e[n];var h=t[0],p=t[1];for(r=null,o=null,a=0;a<s.length;a++)s[a][0]>=h&&null===r&&(r=a),s[a][0]<=p&&(o=a);null===r&&(r=0);for(var f=r,g=!0;g&&f>0;)g=null===s[--f][1];null===o&&(o=s.length-1);var m=o;for(g=!0;g&&m<s.length-1;)g=null===s[++m][1];f!==r&&(r=f),m!==o&&(o=m),l[n-1]=[r,o],s=s.slice(r,o+1)}else s=e[n],l[n-1]=[0,s.length-1];var b=this.attr_("labels")[n],v=this.dataHandler_.getExtremeYValues(s,t,this.getBooleanOption("stepPlot",b)),_=this.dataHandler_.seriesToPoints(s,b,l[n-1][0]);this.getBooleanOption("stackedGraph")&&(void 0===d[i=this.attributes_.axisForSeries(b)]&&(d[i]=[]),D.stackPoints_(_,d[i],v,this.getBooleanOption("stackedGraphNaNFill"))),u[b]=v,c[n]=_}return{points:c,extremes:u,boundaryIds:l}},D.prototype.drawGraph_=function(){var e=new Date,t=this.is_initial_draw_;this.is_initial_draw_=!1,this.layout_.removeAllDatasets(),this.setColors_(),this.attrs_.pointSize=.5*this.getNumericOption("highlightCircleSize");var n=this.gatherDatasets_(this.rolledSeries_,this.dateWindow_),a=n.points,r=n.extremes;this.boundaryIds_=n.boundaryIds,this.setIndexByName_={};for(var o=this.attr_("labels"),i=0,s=1;s<a.length;s++)this.visibility()[s-1]&&(this.layout_.addDataset(o[s],a[s]),this.datasetIndex_[s]=i++);for(s=0;s<o.length;s++)this.setIndexByName_[o[s]]=s;if(this.computeYAxisRanges_(r),this.layout_.setYAxes(this.axes_),this.addXTicks_(),this.layout_.evaluate(),this.renderGraph_(t),this.getStringOption("timingName")){var l=new Date;console.log(this.getStringOption("timingName")+" - drawGraph: "+(l-e)+"ms")}},D.prototype.renderGraph_=function(e){this.cascadeEvents_("clearChart"),this.plotter_.clear();var t=this.getFunctionOption("underlayCallback");t&&t.call(this,this.hidden_ctx_,this.layout_.getPlotArea(),this,this);var n={canvas:this.hidden_,drawingContext:this.hidden_ctx_};this.cascadeEvents_("willDrawChart",n),this.plotter_.render(),this.cascadeEvents_("didDrawChart",n),this.lastRow_=-1,this.canvas_.getContext("2d").clearRect(0,0,this.width_,this.height_);var a=this.getFunctionOption("drawCallback");if(null!==a&&a.call(this,this,e),e)for(this.readyFired_=!0;this.readyFns_.length>0;)this.readyFns_.pop()(this)},D.prototype.computeYAxes_=function(){var e,t,n;for(this.axes_=[],e=0;e<this.attributes_.numAxes();e++)t={g:this},h.update(t,this.attributes_.axisOptions(e)),this.axes_[e]=t;for(e=0;e<this.axes_.length;e++)if(0===e)(n=(t=this.optionsViewForAxis_("y"+(e?"2":"")))("valueRange"))&&(this.axes_[e].valueRange=n);else{var a=this.user_attrs_.axes;a&&a.y2&&(n=a.y2.valueRange)&&(this.axes_[e].valueRange=n)}},D.prototype.numAxes=function(){return this.attributes_.numAxes()},D.prototype.axisPropertiesForSeries=function(e){return this.axes_[this.attributes_.axisForSeries(e)]},D.prototype.computeYAxisRanges_=function(e){for(var t,n,a,r,o,i=function(e){return isNaN(parseFloat(e))},s=this.attributes_.numAxes(),l=0;l<s;l++){var c=this.axes_[l],d=this.attributes_.getForAxis("logscale",l),u=this.attributes_.getForAxis("includeZero",l),p=this.attributes_.getForAxis("independentTicks",l);a=this.attributes_.seriesForAxis(l),t=!0,r=.1;var f=this.getNumericOption("yRangePad");if(null!==f&&(t=!1,r=f/this.plotter_.area.h),0===a.length)c.extremeRange=[0,1];else{for(var g,m,b=1/0,v=-1/0,_=0;_<a.length;_++)e.hasOwnProperty(a[_])&&(null!==(g=e[a[_]][0])&&(b=Math.min(g,b)),null!==(m=e[a[_]][1])&&(v=Math.max(m,v)));u&&!d&&(b>0&&(b=0),v<0&&(v=0)),b==1/0&&(b=0),v==-1/0&&(v=1),0===(n=v-b)&&(0!==v?n=Math.abs(v):(v=1,n=1));var y=v,x=b;t&&(d?(y=v+r*n,x=b):((x=b-r*n)<0&&b>=0&&(x=0),(y=v+r*n)>0&&v<=0&&(y=0))),c.extremeRange=[x,y]}if(c.valueRange){var O=i(c.valueRange[0])?c.extremeRange[0]:c.valueRange[0],w=i(c.valueRange[1])?c.extremeRange[1]:c.valueRange[1];c.computedValueRange=[O,w]}else c.computedValueRange=c.extremeRange;if(!t)if((O=c.computedValueRange[0])===(w=c.computedValueRange[1])&&(O-=.5,w+=.5),d){var k=r/(2*r-1),E=(r-1)/(2*r-1);c.computedValueRange[0]=h.logRangeFraction(O,w,k),c.computedValueRange[1]=h.logRangeFraction(O,w,E)}else n=w-O,c.computedValueRange[0]=O-n*r,c.computedValueRange[1]=w+n*r;if(p){c.independentTicks=p;var C=(S=this.optionsViewForAxis_("y"+(l?"2":"")))("ticker");c.ticks=C(c.computedValueRange[0],c.computedValueRange[1],this.plotter_.area.h,S,this),o||(o=c)}}if(void 0===o)throw'Configuration Error: At least one axis has to have the "independentTicks" option activated.';for(l=0;l<s;l++)if(!(c=this.axes_[l]).independentTicks){C=(S=this.optionsViewForAxis_("y"+(l?"2":"")))("ticker");for(var S,j=o.ticks,D=o.computedValueRange[1]-o.computedValueRange[0],A=c.computedValueRange[1]-c.computedValueRange[0],T=[],M=0;M<j.length;M++){var P=(j[M].v-o.computedValueRange[0])/D,L=c.computedValueRange[0]+P*A;T.push(L)}c.ticks=C(c.computedValueRange[0],c.computedValueRange[1],this.plotter_.area.h,S,this,T)}},D.prototype.detectTypeFromString_=function(e){var t=!1,n=e.indexOf("-");n>0&&"e"!=e[n-1]&&"E"!=e[n-1]||e.indexOf("/")>=0||isNaN(parseFloat(e))?t=!0:8==e.length&&e>"19700101"&&e<"20371231"&&(t=!0),this.setXAxisOptions_(t)},D.prototype.setXAxisOptions_=function(e){e?(this.attrs_.xValueParser=h.dateParser,this.attrs_.axes.x.valueFormatter=h.dateValueFormatter,this.attrs_.axes.x.ticker=u.dateTicker,this.attrs_.axes.x.axisLabelFormatter=h.dateAxisLabelFormatter):(this.attrs_.xValueParser=function(e){return parseFloat(e)},this.attrs_.axes.x.valueFormatter=function(e){return e},this.attrs_.axes.x.ticker=u.numericTicks,this.attrs_.axes.x.axisLabelFormatter=this.attrs_.axes.x.valueFormatter)},D.prototype.parseCSV_=function(e){var t,n,a=[],r=h.detectLineDelimiter(e),o=e.split(r||"\n"),i=this.getStringOption("delimiter");-1==o[0].indexOf(i)&&o[0].indexOf("\t")>=0&&(i="\t");var s=0;"labels"in this.user_attrs_||(s=1,this.attrs_.labels=o[0].split(i),this.attributes_.reparseSeries());for(var l,c=!1,d=this.attr_("labels").length,u=!1,p=s;p<o.length;p++){var f=o[p];if(0!==f.length&&"#"!=f[0]){var g=f.split(i);if(!(g.length<2)){var m=[];if(c||(this.detectTypeFromString_(g[0]),l=this.getFunctionOption("xValueParser"),c=!0),m[0]=l(g[0],this),this.fractions_)for(n=1;n<g.length;n++)2!=(t=g[n].split("/")).length?(console.error('Expected fractional "num/den" values in CSV data but found a value \''+g[n]+"' on line "+(1+p)+" ('"+f+"') which is not of this form."),m[n]=[0,0]):m[n]=[h.parseFloat_(t[0],p,f),h.parseFloat_(t[1],p,f)];else if(this.getBooleanOption("errorBars"))for(g.length%2!=1&&console.error("Expected alternating (value, stdev.) pairs in CSV data but line "+(1+p)+" has an odd number of values ("+(g.length-1)+"): '"+f+"'"),n=1;n<g.length;n+=2)m[(n+1)/2]=[h.parseFloat_(g[n],p,f),h.parseFloat_(g[n+1],p,f)];else if(this.getBooleanOption("customBars"))for(n=1;n<g.length;n++){var b=g[n];/^ *$/.test(b)?m[n]=[null,null,null]:3==(t=b.split(";")).length?m[n]=[h.parseFloat_(t[0],p,f),h.parseFloat_(t[1],p,f),h.parseFloat_(t[2],p,f)]:console.warn('When using customBars, values must be either blank or "low;center;high" tuples (got "'+b+'" on line '+(1+p))}else for(n=1;n<g.length;n++)m[n]=h.parseFloat_(g[n],p,f);if(a.length>0&&m[0]<a[a.length-1][0]&&(u=!0),m.length!=d&&console.error("Number of columns in line "+p+" ("+m.length+") does not agree with number of labels ("+d+") "+f),0===p&&this.attr_("labels")){var v=!0;for(n=0;v&&n<m.length;n++)m[n]&&(v=!1);if(v){console.warn("The dygraphs 'labels' option is set, but the first row of CSV data ('"+f+"') appears to also contain labels. Will drop the CSV labels and use the option labels.");continue}}a.push(m)}}}return u&&(console.warn("CSV is out of order; order it correctly to speed loading."),a.sort((function(e,t){return e[0]-t[0]}))),a},D.prototype.parseArray_=function(e){if(0===e.length)return console.error("Can't plot empty data set"),null;if(0===e[0].length)return console.error("Data set cannot contain an empty row"),null;var t;if(function(e){var t=e[0],n=t[0];if("number"!=typeof n&&!h.isDateLike(n))throw new Error("Expected number or date but got "+typeof n+": "+n+".");for(var a=1;a<t.length;a++){var r=t[a];if(null!==r&&void 0!==r&&"number"!=typeof r&&!h.isArrayLike(r))throw new Error("Expected number or array but got "+typeof r+": "+r+".")}}(e),null===this.attr_("labels")){for(console.warn("Using default labels. Set labels explicitly via 'labels' in the options parameter"),this.attrs_.labels=["X"],t=1;t<e[0].length;t++)this.attrs_.labels.push("Y"+t);this.attributes_.reparseSeries()}else{var n=this.attr_("labels");if(n.length!=e[0].length)return console.error("Mismatch between number of labels ("+n+") and number of columns in array ("+e[0].length+")"),null}if(h.isDateLike(e[0][0])){this.attrs_.axes.x.valueFormatter=h.dateValueFormatter,this.attrs_.axes.x.ticker=u.dateTicker,this.attrs_.axes.x.axisLabelFormatter=h.dateAxisLabelFormatter;var a=h.clone(e);for(t=0;t<e.length;t++){if(0===a[t].length)return console.error("Row "+(1+t)+" of data is empty"),null;if(null===a[t][0]||"function"!=typeof a[t][0].getTime||isNaN(a[t][0].getTime()))return console.error("x value in row "+(1+t)+" is not a Date"),null;a[t][0]=a[t][0].getTime()}return a}return this.attrs_.axes.x.valueFormatter=function(e){return e},this.attrs_.axes.x.ticker=u.numericTicks,this.attrs_.axes.x.axisLabelFormatter=h.numberAxisLabelFormatter,e},D.prototype.parseDataTable_=function(e){var t=e.getNumberOfColumns(),n=e.getNumberOfRows(),a=e.getColumnType(0);if("date"==a||"datetime"==a)this.attrs_.xValueParser=h.dateParser,this.attrs_.axes.x.valueFormatter=h.dateValueFormatter,this.attrs_.axes.x.ticker=u.dateTicker,this.attrs_.axes.x.axisLabelFormatter=h.dateAxisLabelFormatter;else{if("number"!=a)throw new Error("only 'date', 'datetime' and 'number' types are supported for column 1 of DataTable input (Got '"+a+"')");this.attrs_.xValueParser=function(e){return parseFloat(e)},this.attrs_.axes.x.valueFormatter=function(e){return e},this.attrs_.axes.x.ticker=u.numericTicks,this.attrs_.axes.x.axisLabelFormatter=this.attrs_.axes.x.valueFormatter}var r,o,i=[],s={},l=!1;for(r=1;r<t;r++){var c=e.getColumnType(r);if("number"==c)i.push(r);else{if("string"!=c||!this.getBooleanOption("displayAnnotations"))throw new Error("Only 'number' is supported as a dependent type with Gviz. 'string' is only supported if displayAnnotations is true");var d=i[i.length-1];s.hasOwnProperty(d)?s[d].push(r):s[d]=[r],l=!0}}var p=[e.getColumnLabel(0)];for(r=0;r<i.length;r++)p.push(e.getColumnLabel(i[r])),this.getBooleanOption("errorBars")&&(r+=1);this.attrs_.labels=p,t=p.length;var f=[],g=!1,m=[];for(r=0;r<n;r++){var b=[];if(void 0!==e.getValue(r,0)&&null!==e.getValue(r,0)){if("date"==a||"datetime"==a?b.push(e.getValue(r,0).getTime()):b.push(e.getValue(r,0)),this.getBooleanOption("errorBars"))for(o=0;o<t-1;o++)b.push([e.getValue(r,1+2*o),e.getValue(r,2+2*o)]);else{for(o=0;o<i.length;o++){var v=i[o];if(b.push(e.getValue(r,v)),l&&s.hasOwnProperty(v)&&null!==e.getValue(r,s[v][0])){var _={};_.series=e.getColumnLabel(v),_.xval=b[0],_.shortText=function(e){var t=String.fromCharCode(65+e%26);for(e=Math.floor(e/26);e>0;)t=String.fromCharCode(65+(e-1)%26)+t.toLowerCase(),e=Math.floor((e-1)/26);return t}(m.length),_.text="";for(var y=0;y<s[v].length;y++)y&&(_.text+="\n"),_.text+=e.getValue(r,s[v][y]);m.push(_)}}for(o=0;o<b.length;o++)isFinite(b[o])||(b[o]=null)}f.length>0&&b[0]<f[f.length-1][0]&&(g=!0),f.push(b)}else console.warn("Ignoring row "+r+" of DataTable because of undefined or null first column.")}g&&(console.warn("DataTable is out of order; order it correctly to speed loading."),f.sort((function(e,t){return e[0]-t[0]}))),this.rawData_=f,m.length>0&&this.setAnnotations(m,!0),this.attributes_.reparseSeries()},D.prototype.cascadeDataDidUpdateEvent_=function(){this.cascadeEvents_("dataDidUpdate",{})},D.prototype.start_=function(){var e=this.file_;if("function"==typeof e&&(e=e()),h.isArrayLike(e))this.rawData_=this.parseArray_(e),this.cascadeDataDidUpdateEvent_(),this.predraw_();else if("object"==typeof e&&"function"==typeof e.getColumnRange)this.parseDataTable_(e),this.cascadeDataDidUpdateEvent_(),this.predraw_();else if("string"==typeof e)if(h.detectLineDelimiter(e))this.loadedEvent_(e);else{var t;t=window.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP");var n=this;t.onreadystatechange=function(){4==t.readyState&&(200!==t.status&&0!==t.status||n.loadedEvent_(t.responseText))},t.open("GET",e,!0),t.send(null)}else console.error("Unknown data format: "+typeof e)},D.prototype.updateOptions=function(e,t){void 0===t&&(t=!1);var n=e.file,a=D.copyUserAttrs_(e);"rollPeriod"in a&&(this.rollPeriod_=a.rollPeriod),"dateWindow"in a&&(this.dateWindow_=a.dateWindow);var r=h.isPixelChangingOptionList(this.attr_("labels"),a);h.updateDeep(this.user_attrs_,a),this.attributes_.reparseSeries(),n?(this.cascadeEvents_("dataWillUpdate",{}),this.file_=n,t||this.start_()):t||(r?this.predraw_():this.renderGraph_(!1))},D.copyUserAttrs_=function(e){var t={};for(var n in e)e.hasOwnProperty(n)&&"file"!=n&&e.hasOwnProperty(n)&&(t[n]=e[n]);return t},D.prototype.resize=function(e,t){if(!this.resize_lock){this.resize_lock=!0,null===e!=(null===t)&&(console.warn("Dygraph.resize() should be called with zero parameters or two non-NULL parameters. Pretending it was zero."),e=t=null);var n=this.width_,a=this.height_;e?(this.maindiv_.style.width=e+"px",this.maindiv_.style.height=t+"px",this.width_=e,this.height_=t):(this.width_=this.maindiv_.clientWidth,this.height_=this.maindiv_.clientHeight),n==this.width_&&a==this.height_||(this.resizeElements_(),this.predraw_()),this.resize_lock=!1}},D.prototype.adjustRoll=function(e){this.rollPeriod_=e,this.predraw_()},D.prototype.visibility=function(){for(this.getOption("visibility")||(this.attrs_.visibility=[]);this.getOption("visibility").length<this.numColumns()-1;)this.attrs_.visibility.push(!0);return this.getOption("visibility")},D.prototype.setVisibility=function(e,t){var n=this.visibility(),a=!1;if(Array.isArray(e)||(null!==e&&"object"==typeof e?a=!0:e=[e]),a)for(var r in e)e.hasOwnProperty(r)&&(r<0||r>=n.length?console.warn("Invalid series number in setVisibility: "+r):n[r]=e[r]);else for(r=0;r<e.length;r++)"boolean"==typeof e[r]?r>=n.length?console.warn("Invalid series number in setVisibility: "+r):n[r]=e[r]:e[r]<0||e[r]>=n.length?console.warn("Invalid series number in setVisibility: "+e[r]):n[e[r]]=t;this.predraw_()},D.prototype.size=function(){return{width:this.width_,height:this.height_}},D.prototype.setAnnotations=function(e,t){this.annotations_=e,this.layout_?(this.layout_.setAnnotations(this.annotations_),t||this.predraw_()):console.warn("Tried to setAnnotations before dygraph was ready. Try setting them in a ready() block. See dygraphs.com/tests/annotation.html")},D.prototype.annotations=function(){return this.annotations_},D.prototype.getLabels=function(){var e=this.attr_("labels");return e?e.slice():null},D.prototype.indexFromSetName=function(e){return this.setIndexByName_[e]},D.prototype.getRowForX=function(e){for(var t=0,n=this.numRows()-1;t<=n;){var a=n+t>>1,r=this.getValue(a,0);if(r<e)t=a+1;else if(r>e)n=a-1;else{if(t==a)return a;n=a}}return null},D.prototype.ready=function(e){this.is_initial_draw_?this.readyFns_.push(e):e.call(this,this)},D.prototype.addAndTrackEvent=function(e,t,n){h.addEvent(e,t,n),this.registeredEvents_.push({elem:e,type:t,fn:n})},D.prototype.removeTrackedEvents_=function(){if(this.registeredEvents_)for(var e=0;e<this.registeredEvents_.length;e++){var t=this.registeredEvents_[e];h.removeEvent(t.elem,t.type,t.fn)}this.registeredEvents_=[]},D.PLUGINS=[C.default,w.default,S.default,k.default,O.default,E.default],D.GVizChart=j.default,D.DASHED_LINE=h.DASHED_LINE,D.DOT_DASH_LINE=h.DOT_DASH_LINE,D.dateAxisLabelFormatter=h.dateAxisLabelFormatter,D.toRGB_=h.toRGB_,D.findPos=h.findPos,D.pageX=h.pageX,D.pageY=h.pageY,D.dateString_=h.dateString_,D.defaultInteractionModel=d.default.defaultModel,D.nonInteractiveModel=D.nonInteractiveModel_=d.default.nonInteractiveModel_,D.Circles=h.Circles,D.Plugins={Legend:C.default,Axes:w.default,Annotations:O.default,ChartLabels:k.default,Grid:E.default,RangeSelector:S.default},D.DataHandlers={DefaultHandler:m.default,BarsHandler:x.default,CustomBarsHandler:v.default,DefaultFractionHandler:_.default,ErrorBarsHandler:b.default,FractionsBarsHandler:y.default},D.startPan=d.default.startPan,D.startZoom=d.default.startZoom,D.movePan=d.default.movePan,D.moveZoom=d.default.moveZoom,D.endPan=d.default.endPan,D.endZoom=d.default.endZoom,D.numericLinearTicks=u.numericLinearTicks,D.numericTicks=u.numericTicks,D.dateTicker=u.dateTicker,D.Granularity=u.Granularity,D.getDateAxis=u.getDateAxis,D.floatFormat=h.floatFormat,n.default=D,t.exports=n.default}).call(this,e("_process"))},{"./datahandler/bars":5,"./datahandler/bars-custom":2,"./datahandler/bars-error":3,"./datahandler/bars-fractions":4,"./datahandler/default":8,"./datahandler/default-fractions":7,"./dygraph-canvas":9,"./dygraph-default-attrs":10,"./dygraph-gviz":11,"./dygraph-interaction-model":12,"./dygraph-layout":13,"./dygraph-options":15,"./dygraph-options-reference":14,"./dygraph-tickers":16,"./dygraph-utils":17,"./iframe-tarp":19,"./plugins/annotations":20,"./plugins/axes":21,"./plugins/chart-labels":22,"./plugins/grid":23,"./plugins/legend":24,"./plugins/range-selector":25,_process:1}],19:[function(e,t,n){"use strict";function a(){this.tarps=[]}Object.defineProperty(n,"__esModule",{value:!0});var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(e("./dygraph-utils"));a.prototype.cover=function(){for(var e=document.getElementsByTagName("iframe"),t=0;t<e.length;t++){var n=e[t],a=r.findPos(n),o=a.x,i=a.y,s=n.offsetWidth,l=n.offsetHeight,c=document.createElement("div");c.style.position="absolute",c.style.left=o+"px",c.style.top=i+"px",c.style.width=s+"px",c.style.height=l+"px",c.style.zIndex=999,document.body.appendChild(c),this.tarps.push(c)}},a.prototype.uncover=function(){for(var e=0;e<this.tarps.length;e++)this.tarps[e].parentNode.removeChild(this.tarps[e]);this.tarps=[]},n.default=a,t.exports=n.default},{"./dygraph-utils":17}],20:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a=function(){this.annotations_=[]};a.prototype.toString=function(){return"Annotations Plugin"},a.prototype.activate=function(e){return{clearChart:this.clearChart,didDrawChart:this.didDrawChart}},a.prototype.detachLabels=function(){for(var e=0;e<this.annotations_.length;e++){var t=this.annotations_[e];t.parentNode&&t.parentNode.removeChild(t),this.annotations_[e]=null}this.annotations_=[]},a.prototype.clearChart=function(e){this.detachLabels()},a.prototype.didDrawChart=function(e){var t=e.dygraph,n=t.layout_.annotated_points;if(n&&0!==n.length)for(var a=e.canvas.parentNode,r=function(e,n,a){return function(r){var o=a.annotation;o.hasOwnProperty(e)?o[e](o,a,t,r):t.getOption(n)&&t.getOption(n)(o,a,t,r)}},o=e.dygraph.getArea(),i={},s=0;s<n.length;s++){var l=n[s];if(!(l.canvasx<o.x||l.canvasx>o.x+o.w||l.canvasy<o.y||l.canvasy>o.y+o.h)){var c=l.annotation,d=6;c.hasOwnProperty("tickHeight")&&(d=c.tickHeight);var u=document.createElement("div");u.style.fontSize=t.getOption("axisLabelFontSize")+"px";var h="dygraph-annotation";c.hasOwnProperty("icon")||(h+=" dygraphDefaultAnnotation dygraph-default-annotation"),c.hasOwnProperty("cssClass")&&(h+=" "+c.cssClass),u.className=h;var p=c.hasOwnProperty("width")?c.width:16,f=c.hasOwnProperty("height")?c.height:16;if(c.hasOwnProperty("icon")){var g=document.createElement("img");g.src=c.icon,g.width=p,g.height=f,u.appendChild(g)}else l.annotation.hasOwnProperty("shortText")&&u.appendChild(document.createTextNode(l.annotation.shortText));var m=l.canvasx-p/2;u.style.left=m+"px";var b=0;if(c.attachAtBottom){var v=o.y+o.h-f-d;i[m]?v-=i[m]:i[m]=0,i[m]+=d+f,b=v}else b=l.canvasy-f-d;u.style.top=b+"px",u.style.width=p+"px",u.style.height=f+"px",u.title=l.annotation.text,u.style.color=t.colorsMap_[l.name],u.style.borderColor=t.colorsMap_[l.name],c.div=u,t.addAndTrackEvent(u,"click",r("clickHandler","annotationClickHandler",l)),t.addAndTrackEvent(u,"mouseover",r("mouseOverHandler","annotationMouseOverHandler",l)),t.addAndTrackEvent(u,"mouseout",r("mouseOutHandler","annotationMouseOutHandler",l)),t.addAndTrackEvent(u,"dblclick",r("dblClickHandler","annotationDblClickHandler",l)),a.appendChild(u),this.annotations_.push(u);var _=e.drawingContext;_.save(),_.strokeStyle=c.hasOwnProperty("tickColor")?c.tickColor:t.colorsMap_[l.name],_.lineWidth=c.hasOwnProperty("tickWidth")?c.tickWidth:t.getOption("strokeWidth"),_.beginPath(),c.attachAtBottom?(v=b+f,_.moveTo(l.canvasx,v),_.lineTo(l.canvasx,v+d)):(_.moveTo(l.canvasx,l.canvasy),_.lineTo(l.canvasx,l.canvasy-2-d)),_.closePath(),_.stroke(),_.restore()}}},a.prototype.destroy=function(){this.detachLabels()},n.default=a,t.exports=n.default},{}],21:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(e("../dygraph-utils")),r=function(){this.xlabels_=[],this.ylabels_=[]};r.prototype.toString=function(){return"Axes Plugin"},r.prototype.activate=function(e){return{layout:this.layout,clearChart:this.clearChart,willDrawChart:this.willDrawChart}},r.prototype.layout=function(e){var t,n=e.dygraph;if(n.getOptionForAxis("drawAxis","y")){var a=n.getOptionForAxis("axisLabelWidth","y")+2*n.getOptionForAxis("axisTickSize","y");e.reserveSpaceLeft(a)}n.getOptionForAxis("drawAxis","x")&&(t=n.getOption("xAxisHeight")?n.getOption("xAxisHeight"):n.getOptionForAxis("axisLabelFontSize","x")+2*n.getOptionForAxis("axisTickSize","x"),e.reserveSpaceBottom(t)),2==n.numAxes()?n.getOptionForAxis("drawAxis","y2")&&(a=n.getOptionForAxis("axisLabelWidth","y2")+2*n.getOptionForAxis("axisTickSize","y2"),e.reserveSpaceRight(a)):n.numAxes()>2&&n.error("Only two y-axes are supported at this time. (Trying to use "+n.numAxes()+")")},r.prototype.detachLabels=function(){function e(e){for(var t=0;t<e.length;t++){var n=e[t];n.parentNode&&n.parentNode.removeChild(n)}}e(this.xlabels_),e(this.ylabels_),this.xlabels_=[],this.ylabels_=[]},r.prototype.clearChart=function(e){this.detachLabels()},r.prototype.willDrawChart=function(e){function t(e){return Math.round(e)+.5}function n(e){return Math.round(e)-.5}var r=this,o=e.dygraph;if(o.getOptionForAxis("drawAxis","x")||o.getOptionForAxis("drawAxis","y")||o.getOptionForAxis("drawAxis","y2")){var i,s,l,c=e.drawingContext,d=e.canvas.parentNode,u=o.width_,h=o.height_,p=function(e){return{position:"absolute",fontSize:o.getOptionForAxis("axisLabelFontSize",e)+"px",width:o.getOptionForAxis("axisLabelWidth",e)+"px"}},f={x:p("x"),y:p("y"),y2:p("y2")},g=function(e,t,n){var r=document.createElement("div"),o=f["y2"==n?"y2":t];a.update(r.style,o);var i=document.createElement("div");return i.className="dygraph-axis-label dygraph-axis-label-"+t+(n?" dygraph-axis-label-"+n:""),i.innerHTML=e,r.appendChild(i),r};c.save();var m=o.layout_,b=e.dygraph.plotter_.area,v=function(e){return function(t){return o.getOptionForAxis(t,e)}};if(o.getOptionForAxis("drawAxis","y")){if(m.yticks&&m.yticks.length>0){var _=o.numAxes(),y=[v("y"),v("y2")];m.yticks.forEach((function(e){if(void 0!==e.label){s=b.x;var t="y1",n=y[0];1==e.axis&&(s=b.x+b.w,t="y2",n=y[1]);var a=n("axisLabelFontSize");l=b.y+e.pos*b.h,i=g(e.label,"y",2==_?t:null);var o=l-a/2;o<0&&(o=0),o+a+3>h?i.style.bottom="0":i.style.top=o+"px",0===e.axis?(i.style.left=b.x-n("axisLabelWidth")-n("axisTickSize")+"px",i.style.textAlign="right"):1==e.axis&&(i.style.left=b.x+b.w+n("axisTickSize")+"px",i.style.textAlign="left"),i.style.width=n("axisLabelWidth")+"px",d.appendChild(i),r.ylabels_.push(i)}}));var x=this.ylabels_[0],O=o.getOptionForAxis("axisLabelFontSize","y");parseInt(x.style.top,10)+O>h-O&&(x.style.top=parseInt(x.style.top,10)-O/2+"px")}var w;o.getOption("drawAxesAtZero")?(((C=o.toPercentXCoord(0))>1||C<0||isNaN(C))&&(C=0),w=t(b.x+C*b.w)):w=t(b.x),c.strokeStyle=o.getOptionForAxis("axisLineColor","y"),c.lineWidth=o.getOptionForAxis("axisLineWidth","y"),c.beginPath(),c.moveTo(w,n(b.y)),c.lineTo(w,n(b.y+b.h)),c.closePath(),c.stroke(),2==o.numAxes()&&(c.strokeStyle=o.getOptionForAxis("axisLineColor","y2"),c.lineWidth=o.getOptionForAxis("axisLineWidth","y2"),c.beginPath(),c.moveTo(n(b.x+b.w),n(b.y)),c.lineTo(n(b.x+b.w),n(b.y+b.h)),c.closePath(),c.stroke())}if(o.getOptionForAxis("drawAxis","x")){if(m.xticks){var k=v("x");m.xticks.forEach((function(e){if(void 0!==e.label){s=b.x+e.pos*b.w,l=b.y+b.h,(i=g(e.label,"x")).style.textAlign="center",i.style.top=l+k("axisTickSize")+"px";var t=s-k("axisLabelWidth")/2;t+k("axisLabelWidth")>u&&(t=u-k("axisLabelWidth"),i.style.textAlign="right"),t<0&&(t=0,i.style.textAlign="left"),i.style.left=t+"px",i.style.width=k("axisLabelWidth")+"px",d.appendChild(i),r.xlabels_.push(i)}}))}var E,C;c.strokeStyle=o.getOptionForAxis("axisLineColor","x"),c.lineWidth=o.getOptionForAxis("axisLineWidth","x"),c.beginPath(),o.getOption("drawAxesAtZero")?(((C=o.toPercentYCoord(0,0))>1||C<0)&&(C=1),E=n(b.y+C*b.h)):E=n(b.y+b.h),c.moveTo(t(b.x),E),c.lineTo(t(b.x+b.w),E),c.closePath(),c.stroke()}c.restore()}},n.default=r,t.exports=n.default},{"../dygraph-utils":17}],22:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a=function(){this.title_div_=null,this.xlabel_div_=null,this.ylabel_div_=null,this.y2label_div_=null};a.prototype.toString=function(){return"ChartLabels Plugin"},a.prototype.activate=function(e){return{layout:this.layout,didDrawChart:this.didDrawChart}};var r=function(e){var t=document.createElement("div");return t.style.position="absolute",t.style.left=e.x+"px",t.style.top=e.y+"px",t.style.width=e.w+"px",t.style.height=e.h+"px",t};a.prototype.detachLabels_=function(){for(var e=[this.title_div_,this.xlabel_div_,this.ylabel_div_,this.y2label_div_],t=0;t<e.length;t++){var n=e[t];n&&n.parentNode&&n.parentNode.removeChild(n)}this.title_div_=null,this.xlabel_div_=null,this.ylabel_div_=null,this.y2label_div_=null};var o=function(e,t,n,a,r){var o=document.createElement("div");o.style.position="absolute",o.style.left=1==n?"0px":t.x+"px",o.style.top=t.y+"px",o.style.width=t.w+"px",o.style.height=t.h+"px",o.style.fontSize=e.getOption("yLabelWidth")-2+"px";var i=document.createElement("div");i.style.position="absolute",i.style.width=t.h+"px",i.style.height=t.w+"px",i.style.top=t.h/2-t.w/2+"px",i.style.left=t.w/2-t.h/2+"px",i.className="dygraph-label-rotate-"+(1==n?"right":"left");var s=document.createElement("div");return s.className=a,s.innerHTML=r,i.appendChild(s),o.appendChild(i),o};a.prototype.layout=function(e){this.detachLabels_();var t=e.dygraph,n=e.chart_div;if(t.getOption("title")){var a=e.reserveSpaceTop(t.getOption("titleHeight"));this.title_div_=r(a),this.title_div_.style.fontSize=t.getOption("titleHeight")-8+"px",(i=document.createElement("div")).className="dygraph-label dygraph-title",i.innerHTML=t.getOption("title"),this.title_div_.appendChild(i),n.appendChild(this.title_div_)}if(t.getOption("xlabel")){var i,s=e.reserveSpaceBottom(t.getOption("xLabelHeight"));this.xlabel_div_=r(s),this.xlabel_div_.style.fontSize=t.getOption("xLabelHeight")-2+"px",(i=document.createElement("div")).className="dygraph-label dygraph-xlabel",i.innerHTML=t.getOption("xlabel"),this.xlabel_div_.appendChild(i),n.appendChild(this.xlabel_div_)}if(t.getOption("ylabel")){var l=e.reserveSpaceLeft(0);this.ylabel_div_=o(t,l,1,"dygraph-label dygraph-ylabel",t.getOption("ylabel")),n.appendChild(this.ylabel_div_)}if(t.getOption("y2label")&&2==t.numAxes()){var c=e.reserveSpaceRight(0);this.y2label_div_=o(t,c,2,"dygraph-label dygraph-y2label",t.getOption("y2label")),n.appendChild(this.y2label_div_)}},a.prototype.didDrawChart=function(e){var t=e.dygraph;this.title_div_&&(this.title_div_.children[0].innerHTML=t.getOption("title")),this.xlabel_div_&&(this.xlabel_div_.children[0].innerHTML=t.getOption("xlabel")),this.ylabel_div_&&(this.ylabel_div_.children[0].children[0].innerHTML=t.getOption("ylabel")),this.y2label_div_&&(this.y2label_div_.children[0].children[0].innerHTML=t.getOption("y2label"))},a.prototype.clearChart=function(){},a.prototype.destroy=function(){this.detachLabels_()},n.default=a,t.exports=n.default},{}],23:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a=function(){};a.prototype.toString=function(){return"Gridline Plugin"},a.prototype.activate=function(e){return{willDrawChart:this.willDrawChart}},a.prototype.willDrawChart=function(e){function t(e){return Math.round(e)+.5}function n(e){return Math.round(e)-.5}var a,r,o,i=e.dygraph,s=e.drawingContext,l=i.layout_,c=e.dygraph.plotter_.area;if(i.getOptionForAxis("drawGrid","y")){for(var d=["y","y2"],u=[],h=[],p=[],f=[],g=[],m=0;m<d.length;m++)p[m]=i.getOptionForAxis("drawGrid",d[m]),p[m]&&(u[m]=i.getOptionForAxis("gridLineColor",d[m]),h[m]=i.getOptionForAxis("gridLineWidth",d[m]),g[m]=i.getOptionForAxis("gridLinePattern",d[m]),f[m]=g[m]&&g[m].length>=2);o=l.yticks,s.save(),o.forEach((function(e){if(e.has_tick){var o=e.axis;p[o]&&(s.save(),f[o]&&s.setLineDash&&s.setLineDash(g[o]),s.strokeStyle=u[o],s.lineWidth=h[o],a=t(c.x),r=n(c.y+e.pos*c.h),s.beginPath(),s.moveTo(a,r),s.lineTo(a+c.w,r),s.stroke(),s.restore())}})),s.restore()}i.getOptionForAxis("drawGrid","x")&&(o=l.xticks,s.save(),g=i.getOptionForAxis("gridLinePattern","x"),(f=g&&g.length>=2)&&s.setLineDash&&s.setLineDash(g),s.strokeStyle=i.getOptionForAxis("gridLineColor","x"),s.lineWidth=i.getOptionForAxis("gridLineWidth","x"),o.forEach((function(e){e.has_tick&&(a=t(c.x+e.pos*c.w),r=n(c.y+c.h),s.beginPath(),s.moveTo(a,r),s.lineTo(a,c.y),s.closePath(),s.stroke())})),f&&s.setLineDash&&s.setLineDash([]),s.restore())},a.prototype.destroy=function(){},n.default=a,t.exports=n.default},{}],24:[function(e,t,n){"use strict";function a(e,t,n){if(!e||e.length<=1)return'<div class="dygraph-legend-line" style="border-bottom-color: '+t+';"></div>';var a,r,o,i,s=0,l=0,c=[];for(a=0;a<=e.length;a++)s+=e[a%e.length];if((i=Math.floor(n/(s-e[0])))>1){for(a=0;a<e.length;a++)c[a]=e[a]/n;l=c.length}else{for(i=1,a=0;a<e.length;a++)c[a]=e[a]/s;l=c.length+1}var d="";for(r=0;r<i;r++)for(a=0;a<l;a+=2)o=c[a%c.length],d+='<div class="dygraph-legend-dash" style="margin-right: '+(a<e.length?c[(a+1)%c.length]:0)+"em; padding-left: "+o+'em;"></div>';return d}Object.defineProperty(n,"__esModule",{value:!0});var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(e("../dygraph-utils")),o=function(){this.legend_div_=null,this.is_generated_div_=!1};o.prototype.toString=function(){return"Legend Plugin"},o.prototype.activate=function(e){var t,n=e.getOption("labelsDiv");return n&&null!==n?t="string"==typeof n||n instanceof String?document.getElementById(n):n:((t=document.createElement("div")).className="dygraph-legend",e.graphDiv.appendChild(t),this.is_generated_div_=!0),this.legend_div_=t,this.one_em_width_=10,{select:this.select,deselect:this.deselect,predraw:this.predraw,didDrawChart:this.didDrawChart}};var i=function(e){return e.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")};o.prototype.select=function(e){var t=e.selectedX,n=e.selectedPoints,a=e.selectedRow,r=e.dygraph.getOption("legend");if("never"!==r){if("follow"===r){var i=e.dygraph.plotter_.area,s=this.legend_div_.offsetWidth,l=e.dygraph.getOptionForAxis("axisLabelWidth","y"),c=n[0].x*i.w+50,d=n[0].y*i.h-50;c+s+1>i.w&&(c=c-100-s-(l-i.x)),e.dygraph.graphDiv.appendChild(this.legend_div_),this.legend_div_.style.left=l+c+"px",this.legend_div_.style.top=d+"px"}var u=o.generateLegendHTML(e.dygraph,t,n,this.one_em_width_,a);this.legend_div_.innerHTML=u,this.legend_div_.style.display=""}else this.legend_div_.style.display="none"},o.prototype.deselect=function(e){"always"!==e.dygraph.getOption("legend")&&(this.legend_div_.style.display="none");var t=function(e){var t=document.createElement("span");t.setAttribute("style","margin: 0; padding: 0 0 0 1em; border: 0;"),e.appendChild(t);var n=t.offsetWidth;return e.removeChild(t),n}(this.legend_div_);this.one_em_width_=t;var n=o.generateLegendHTML(e.dygraph,void 0,void 0,t,null);this.legend_div_.innerHTML=n},o.prototype.didDrawChart=function(e){this.deselect(e)},o.prototype.predraw=function(e){if(this.is_generated_div_){e.dygraph.graphDiv.appendChild(this.legend_div_);var t=e.dygraph.getArea(),n=this.legend_div_.offsetWidth;this.legend_div_.style.left=t.x+t.w-n-1+"px",this.legend_div_.style.top=t.y+"px"}},o.prototype.destroy=function(){this.legend_div_=null},o.generateLegendHTML=function(e,t,n,s,l){var c={dygraph:e,x:t,series:[]},d={},u=e.getLabels();if(u)for(var h=1;h<u.length;h++){var p=e.getPropertiesForSeries(u[h]),f={dashHTML:a(e.getOption("strokePattern",u[h]),p.color,s),label:u[h],labelHTML:i(u[h]),isVisible:p.visible,color:p.color};c.series.push(f),d[u[h]]=f}if(void 0!==t){var g=e.optionsViewForAxis_("x"),m=g("valueFormatter");c.xHTML=m.call(e,t,g,u[0],e,l,0);var b=[],v=e.numAxes();for(h=0;h<v;h++)b[h]=e.optionsViewForAxis_("y"+(h?1+h:""));var _=e.getOption("labelsShowZeroValues"),y=e.getHighlightSeries();for(h=0;h<n.length;h++){var x=n[h];if((f=d[x.name]).y=x.yval,0===x.yval&&!_||isNaN(x.canvasy))f.isVisible=!1;else{var O=b[(p=e.getPropertiesForSeries(x.name)).axis-1],w=O("valueFormatter").call(e,x.yval,O,x.name,e,l,u.indexOf(x.name));r.update(f,{yHTML:w}),x.name==y&&(f.isHighlighted=!0)}}}return(e.getOption("legendFormatter")||o.defaultFormatter).call(e,c)},o.defaultFormatter=function(e){var t=e.dygraph;if(!0!==t.getOption("showLabelsOnHighlight"))return"";var n,a=t.getOption("labelsSeparateLines");if(void 0===e.x){if("always"!=t.getOption("legend"))return"";n="";for(var r=0;r<e.series.length;r++)(o=e.series[r]).isVisible&&(""!==n&&(n+=a?"<br/>":" "),n+="<span style='font-weight: bold; color: "+o.color+";'>"+o.dashHTML+" "+o.labelHTML+"</span>");return n}for(n=e.xHTML+":",r=0;r<e.series.length;r++){var o;(o=e.series[r]).isVisible&&(a&&(n+="<br>"),n+="<span"+(o.isHighlighted?' class="highlight"':"")+"> <b><span style='color: "+o.color+";'>"+o.labelHTML+"</span></b>:&#160;"+o.yHTML+"</span>")}return n},n.default=o,t.exports=n.default},{"../dygraph-utils":17}],25:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(e("../dygraph-utils")),o=a(e("../dygraph-interaction-model")),i=a(e("../iframe-tarp")),s=function(){this.hasTouchInterface_="undefined"!=typeof TouchEvent,this.isMobileDevice_=/mobile|android/gi.test(navigator.appVersion),this.interfaceCreated_=!1};s.prototype.toString=function(){return"RangeSelector Plugin"},s.prototype.activate=function(e){return this.dygraph_=e,this.getOption_("showRangeSelector")&&this.createInterface_(),{layout:this.reserveSpace_,predraw:this.renderStaticLayer_,didDrawChart:this.renderInteractiveLayer_}},s.prototype.destroy=function(){this.bgcanvas_=null,this.fgcanvas_=null,this.leftZoomHandle_=null,this.rightZoomHandle_=null},s.prototype.getOption_=function(e,t){return this.dygraph_.getOption(e,t)},s.prototype.setDefaultOption_=function(e,t){this.dygraph_.attrs_[e]=t},s.prototype.createInterface_=function(){this.createCanvases_(),this.createZoomHandles_(),this.initInteraction_(),this.getOption_("animatedZooms")&&(console.warn("Animated zooms and range selector are not compatible; disabling animatedZooms."),this.dygraph_.updateOptions({animatedZooms:!1},!0)),this.interfaceCreated_=!0,this.addToGraph_()},s.prototype.addToGraph_=function(){var e=this.graphDiv_=this.dygraph_.graphDiv;e.appendChild(this.bgcanvas_),e.appendChild(this.fgcanvas_),e.appendChild(this.leftZoomHandle_),e.appendChild(this.rightZoomHandle_)},s.prototype.removeFromGraph_=function(){var e=this.graphDiv_;e.removeChild(this.bgcanvas_),e.removeChild(this.fgcanvas_),e.removeChild(this.leftZoomHandle_),e.removeChild(this.rightZoomHandle_),this.graphDiv_=null},s.prototype.reserveSpace_=function(e){this.getOption_("showRangeSelector")&&e.reserveSpaceBottom(this.getOption_("rangeSelectorHeight")+4)},s.prototype.renderStaticLayer_=function(){this.updateVisibility_()&&(this.resize_(),this.drawStaticLayer_())},s.prototype.renderInteractiveLayer_=function(){this.updateVisibility_()&&!this.isChangingRange_&&(this.placeZoomHandles_(),this.drawInteractiveLayer_())},s.prototype.updateVisibility_=function(){var e=this.getOption_("showRangeSelector");if(e)this.interfaceCreated_?this.graphDiv_&&this.graphDiv_.parentNode||this.addToGraph_():this.createInterface_();else if(this.graphDiv_){this.removeFromGraph_();var t=this.dygraph_;setTimeout((function(){t.width_=0,t.resize()}),1)}return e},s.prototype.resize_=function(){function e(e,t,n,a){var o=a||r.getContextPixelRatio(t);e.style.top=n.y+"px",e.style.left=n.x+"px",e.width=n.w*o,e.height=n.h*o,e.style.width=n.w+"px",e.style.height=n.h+"px",1!=o&&t.scale(o,o)}var t=this.dygraph_.layout_.getPlotArea(),n=0;this.dygraph_.getOptionForAxis("drawAxis","x")&&(n=this.getOption_("xAxisHeight")||this.getOption_("axisLabelFontSize")+2*this.getOption_("axisTickSize")),this.canvasRect_={x:t.x,y:t.y+t.h+n+4,w:t.w,h:this.getOption_("rangeSelectorHeight")};var a=this.dygraph_.getNumericOption("pixelRatio");e(this.bgcanvas_,this.bgcanvas_ctx_,this.canvasRect_,a),e(this.fgcanvas_,this.fgcanvas_ctx_,this.canvasRect_,a)},s.prototype.createCanvases_=function(){this.bgcanvas_=r.createCanvas(),this.bgcanvas_.className="dygraph-rangesel-bgcanvas",this.bgcanvas_.style.position="absolute",this.bgcanvas_.style.zIndex=9,this.bgcanvas_ctx_=r.getContext(this.bgcanvas_),this.fgcanvas_=r.createCanvas(),this.fgcanvas_.className="dygraph-rangesel-fgcanvas",this.fgcanvas_.style.position="absolute",this.fgcanvas_.style.zIndex=9,this.fgcanvas_.style.cursor="default",this.fgcanvas_ctx_=r.getContext(this.fgcanvas_)},s.prototype.createZoomHandles_=function(){var e=new Image;e.className="dygraph-rangesel-zoomhandle",e.style.position="absolute",e.style.zIndex=10,e.style.visibility="hidden",e.style.cursor="col-resize",e.width=9,e.height=16,e.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAQCAYAAADESFVDAAAAAXNSR0IArs4c6QAAAAZiS0dEANAAzwDP4Z7KegAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAAd0SU1FB9sHGw0cMqdt1UwAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAaElEQVQoz+3SsRFAQBCF4Z9WJM8KCDVwownl6YXsTmCUsyKGkZzcl7zkz3YLkypgAnreFmDEpHkIwVOMfpdi9CEEN2nGpFdwD03yEqDtOgCaun7sqSTDH32I1pQA2Pb9sZecAxc5r3IAb21d6878xsAAAAAASUVORK5CYII=",this.isMobileDevice_&&(e.width*=2,e.height*=2),this.leftZoomHandle_=e,this.rightZoomHandle_=e.cloneNode(!1)},s.prototype.initInteraction_=function(){var e,t,n,a,s,l,c,d,u,h,p,f,g,m,b=this,v=document,_=0,y=null,x=!1,O=!1,w=!this.isMobileDevice_,k=new i.default;e=function(e){var t=b.dygraph_.xAxisExtremes(),n=(t[1]-t[0])/b.canvasRect_.w;return[t[0]+(e.leftHandlePos-b.canvasRect_.x)*n,t[0]+(e.rightHandlePos-b.canvasRect_.x)*n]},t=function(e){return r.cancelEvent(e),x=!0,_=e.clientX,y=e.target?e.target:e.srcElement,"mousedown"!==e.type&&"dragstart"!==e.type||(r.addEvent(v,"mousemove",n),r.addEvent(v,"mouseup",a)),b.fgcanvas_.style.cursor="col-resize",k.cover(),!0},n=function(e){if(!x)return!1;r.cancelEvent(e);var t=e.clientX-_;if(Math.abs(t)<4)return!0;_=e.clientX;var n,a=b.getZoomHandleStatus_();y==b.leftZoomHandle_?(n=a.leftHandlePos+t,n=Math.min(n,a.rightHandlePos-y.width-3),n=Math.max(n,b.canvasRect_.x)):(n=a.rightHandlePos+t,n=Math.min(n,b.canvasRect_.x+b.canvasRect_.w),n=Math.max(n,a.leftHandlePos+y.width+3));var o=y.width/2;return y.style.left=n-o+"px",b.drawInteractiveLayer_(),w&&s(),!0},a=function(e){return!!x&&(x=!1,k.uncover(),r.removeEvent(v,"mousemove",n),r.removeEvent(v,"mouseup",a),b.fgcanvas_.style.cursor="default",w||s(),!0)},s=function(){try{var t=b.getZoomHandleStatus_();if(b.isChangingRange_=!0,t.isZoomed){var n=e(t);b.dygraph_.doZoomXDates_(n[0],n[1])}else b.dygraph_.resetZoom()}finally{b.isChangingRange_=!1}},l=function(e){var t=b.leftZoomHandle_.getBoundingClientRect(),n=t.left+t.width/2,a=(t=b.rightZoomHandle_.getBoundingClientRect()).left+t.width/2;return e.clientX>n&&e.clientX<a},c=function(e){return!(O||!l(e)||!b.getZoomHandleStatus_().isZoomed)&&(r.cancelEvent(e),O=!0,_=e.clientX,"mousedown"===e.type&&(r.addEvent(v,"mousemove",d),r.addEvent(v,"mouseup",u)),!0)},d=function(e){if(!O)return!1;r.cancelEvent(e);var t=e.clientX-_;if(Math.abs(t)<4)return!0;_=e.clientX;var n=b.getZoomHandleStatus_(),a=n.leftHandlePos,o=n.rightHandlePos,i=o-a;a+t<=b.canvasRect_.x?o=(a=b.canvasRect_.x)+i:o+t>=b.canvasRect_.x+b.canvasRect_.w?a=(o=b.canvasRect_.x+b.canvasRect_.w)-i:(a+=t,o+=t);var s=b.leftZoomHandle_.width/2;return b.leftZoomHandle_.style.left=a-s+"px",b.rightZoomHandle_.style.left=o-s+"px",b.drawInteractiveLayer_(),w&&h(),!0},u=function(e){return!!O&&(O=!1,r.removeEvent(v,"mousemove",d),r.removeEvent(v,"mouseup",u),w||h(),!0)},h=function(){try{b.isChangingRange_=!0,b.dygraph_.dateWindow_=e(b.getZoomHandleStatus_()),b.dygraph_.drawGraph_(!1)}finally{b.isChangingRange_=!1}},p=function(e){if(!x&&!O){var t=l(e)?"move":"default";t!=b.fgcanvas_.style.cursor&&(b.fgcanvas_.style.cursor=t)}},f=function(e){"touchstart"==e.type&&1==e.targetTouches.length?t(e.targetTouches[0])&&r.cancelEvent(e):"touchmove"==e.type&&1==e.targetTouches.length?n(e.targetTouches[0])&&r.cancelEvent(e):a(e)},g=function(e){"touchstart"==e.type&&1==e.targetTouches.length?c(e.targetTouches[0])&&r.cancelEvent(e):"touchmove"==e.type&&1==e.targetTouches.length?d(e.targetTouches[0])&&r.cancelEvent(e):u(e)},m=function(e,t){for(var n=["touchstart","touchend","touchmove","touchcancel"],a=0;a<n.length;a++)b.dygraph_.addAndTrackEvent(e,n[a],t)},this.setDefaultOption_("interactionModel",o.default.dragIsPanInteractionModel),this.setDefaultOption_("panEdgeFraction",1e-4);var E=window.opera?"mousedown":"dragstart";this.dygraph_.addAndTrackEvent(this.leftZoomHandle_,E,t),this.dygraph_.addAndTrackEvent(this.rightZoomHandle_,E,t),this.dygraph_.addAndTrackEvent(this.fgcanvas_,"mousedown",c),this.dygraph_.addAndTrackEvent(this.fgcanvas_,"mousemove",p),this.hasTouchInterface_&&(m(this.leftZoomHandle_,f),m(this.rightZoomHandle_,f),m(this.fgcanvas_,g))},s.prototype.drawStaticLayer_=function(){var e=this.bgcanvas_ctx_;e.clearRect(0,0,this.canvasRect_.w,this.canvasRect_.h);try{this.drawMiniPlot_()}catch(e){console.warn(e)}this.bgcanvas_ctx_.lineWidth=this.getOption_("rangeSelectorBackgroundLineWidth"),e.strokeStyle=this.getOption_("rangeSelectorBackgroundStrokeColor"),e.beginPath(),e.moveTo(.5,.5),e.lineTo(.5,this.canvasRect_.h-.5),e.lineTo(this.canvasRect_.w-.5,this.canvasRect_.h-.5),e.lineTo(this.canvasRect_.w-.5,.5),e.stroke()},s.prototype.drawMiniPlot_=function(){var e=this.getOption_("rangeSelectorPlotFillColor"),t=this.getOption_("rangeSelectorPlotFillGradientColor"),n=this.getOption_("rangeSelectorPlotStrokeColor");if(e||n){var a=this.getOption_("stepPlot"),r=this.computeCombinedSeriesAndLimits_(),o=r.yMax-r.yMin,i=this.bgcanvas_ctx_,s=this.dygraph_.xAxisExtremes(),l=Math.max(s[1]-s[0],1e-30),c=(this.canvasRect_.w-.5)/l,d=(this.canvasRect_.h-.5)/o,u=this.canvasRect_.w-.5,h=this.canvasRect_.h-.5,p=null,f=null;i.beginPath(),i.moveTo(.5,h);for(var g=0;g<r.data.length;g++){var m=r.data[g],b=null!==m[0]?(m[0]-s[0])*c:NaN,v=null!==m[1]?h-(m[1]-r.yMin)*d:NaN;(a||null===p||Math.round(b)!=Math.round(p))&&(isFinite(b)&&isFinite(v)?(null===p?i.lineTo(b,h):a&&i.lineTo(b,f),i.lineTo(b,v),p=b,f=v):(null!==p&&(a?(i.lineTo(b,f),i.lineTo(b,h)):i.lineTo(p,h)),p=f=null))}if(i.lineTo(u,h),i.closePath(),e){var _=this.bgcanvas_ctx_.createLinearGradient(0,0,0,h);t&&_.addColorStop(0,t),_.addColorStop(1,e),this.bgcanvas_ctx_.fillStyle=_,i.fill()}n&&(this.bgcanvas_ctx_.strokeStyle=n,this.bgcanvas_ctx_.lineWidth=this.getOption_("rangeSelectorPlotLineWidth"),i.stroke())}},s.prototype.computeCombinedSeriesAndLimits_=function(){var e,t=this.dygraph_,n=this.getOption_("logscale"),a=t.numColumns(),o=t.getLabels(),i=new Array(a),s=!1,l=t.visibility(),c=[];for(e=1;e<a;e++){var d=this.getOption_("showInRangeSelector",o[e]);c.push(d),null!==d&&(s=!0)}if(s)for(e=1;e<a;e++)i[e]=c[e-1];else for(e=1;e<a;e++)i[e]=l[e-1];var u=[],h=t.dataHandler_,p=t.attributes_;for(e=1;e<t.numColumns();e++)if(i[e]){var f=h.extractSeries(t.rawData_,e,p);t.rollPeriod()>1&&(f=h.rollingAverage(f,t.rollPeriod(),p)),u.push(f)}var g=[];for(e=0;e<u[0].length;e++){for(var m=0,b=0,v=0;v<u.length;v++){var _=u[v][e][1];null===_||isNaN(_)||(b++,m+=_)}g.push([u[0][e][0],m/b])}var y=Number.MAX_VALUE,x=-Number.MAX_VALUE;for(e=0;e<g.length;e++){var O=g[e][1];null!==O&&isFinite(O)&&(!n||O>0)&&(y=Math.min(y,O),x=Math.max(x,O))}if(n)for(x=r.log10(x),x+=.25*x,y=r.log10(y),e=0;e<g.length;e++)g[e][1]=r.log10(g[e][1]);else{var w,k=x-y;x+=w=k<=Number.MIN_VALUE?.25*x:.25*k,y-=w}return{data:g,yMin:y,yMax:x}},s.prototype.placeZoomHandles_=function(){var e=this.dygraph_.xAxisExtremes(),t=this.dygraph_.xAxisRange(),n=e[1]-e[0],a=Math.max(0,(t[0]-e[0])/n),r=Math.max(0,(e[1]-t[1])/n),o=this.canvasRect_.x+this.canvasRect_.w*a,i=this.canvasRect_.x+this.canvasRect_.w*(1-r),s=Math.max(this.canvasRect_.y,this.canvasRect_.y+(this.canvasRect_.h-this.leftZoomHandle_.height)/2),l=this.leftZoomHandle_.width/2;this.leftZoomHandle_.style.left=o-l+"px",this.leftZoomHandle_.style.top=s+"px",this.rightZoomHandle_.style.left=i-l+"px",this.rightZoomHandle_.style.top=this.leftZoomHandle_.style.top,this.leftZoomHandle_.style.visibility="visible",this.rightZoomHandle_.style.visibility="visible"},s.prototype.drawInteractiveLayer_=function(){var e=this.fgcanvas_ctx_;e.clearRect(0,0,this.canvasRect_.w,this.canvasRect_.h);var t=this.canvasRect_.w-1,n=this.canvasRect_.h-1,a=this.getZoomHandleStatus_();if(e.strokeStyle=this.getOption_("rangeSelectorForegroundStrokeColor"),e.lineWidth=this.getOption_("rangeSelectorForegroundLineWidth"),a.isZoomed){var r=Math.max(1,a.leftHandlePos-this.canvasRect_.x),o=Math.min(t,a.rightHandlePos-this.canvasRect_.x);e.fillStyle="rgba(240, 240, 240, "+this.getOption_("rangeSelectorAlpha").toString()+")",e.fillRect(0,0,r,this.canvasRect_.h),e.fillRect(o,0,this.canvasRect_.w-o,this.canvasRect_.h),e.beginPath(),e.moveTo(1,1),e.lineTo(r,1),e.lineTo(r,n),e.lineTo(o,n),e.lineTo(o,1),e.lineTo(t,1),e.stroke()}else e.beginPath(),e.moveTo(1,1),e.lineTo(1,n),e.lineTo(t,n),e.lineTo(t,1),e.stroke()},s.prototype.getZoomHandleStatus_=function(){var e=this.leftZoomHandle_.width/2,t=parseFloat(this.leftZoomHandle_.style.left)+e,n=parseFloat(this.rightZoomHandle_.style.left)+e;return{leftHandlePos:t,rightHandlePos:n,isZoomed:t-1>this.canvasRect_.x||n+1<this.canvasRect_.x+this.canvasRect_.w}},n.default=s,t.exports=n.default},{"../dygraph-interaction-model":12,"../dygraph-utils":17,"../iframe-tarp":19}]},{},[18])(18)},500:function(e,t,n){},555:function(e,t){},556:function(e,t,n){},557:function(e,t,n){"use strict";n.r(t);var a=n(0),r=n.n(a),o=n(30),i=n.n(o),s=n(32),l=n(44),c=n(131),d=n(17),u=n(171),h=n(24),p=n(179),f=n(45),g=n(7),m=n(22),b=n(42),v={isSnapshotMode:!1,snapshotCharts:null,snapshotDataPoints:null,isSignedIn:!1,offline:!1},_=Object(m.createReducer)({},v);_.on(b.e,(function(e,t){var n=t.charts,a=t.dataPoints;return Object(g.a)({},e,{snapshotCharts:n,snapshotDataPoints:a,isSnapshotMode:!0})})),_.on(b.f,(function(e){return Object(g.a)({},e,{isSnapshotMode:v.isSnapshotMode,snapshotCharts:v.snapshotCharts,snapshotDataPoints:v.snapshotDataPoints})})),_.on(b.b,(function(e,t){var n=t.isSignedIn;return Object(g.a)({},e,{isSignedIn:n})})),_.on(b.c,(function(e,t){var n=t.offline;return Object(g.a)({},e,{offline:n})}));var y,x=n(82),O=Object(l.c)((y={},Object(d.a)(y,h.e,u.b),Object(d.a)(y,f.c,p.a),Object(d.a)(y,x.a,_),y)),w=n(21),k=n.n(w),E=n(12),C=n(38),S=n(6),j=n(99),D=n.n(j),A=D.a.create({headers:{"Cache-Control":"no-cache, no-store",Pragma:"no-cache"},withCredentials:!0}),T=n(31),M=n(612),P=n(190),L=n(591),I=n(320),R=n(589),N=n(590),F=n(607),B=n(592),H=D.a.create({headers:{"Cache-Control":"no-cache, no-store",Pragma:"no-cache"},withCredentials:!0}),z=function(e){var t=new M.a,n=new M.a,a=Object(I.a)((function(e){var t=e.url,n=e.method,a=void 0===n?"GET":n,r=e.params,o=void 0===r?{}:r,i=e.data,s=e.onErrorCallback,l=e.onSuccessCallback,c=e.cancelTokenSource;return Object(P.a)(H.request({url:t,method:a,params:o,data:i,timeout:15e3,cancelToken:null===c||void 0===c?void 0:c.token})).pipe(Object(R.a)((function(e){var t=e.data;l(t)})),Object(N.a)((function(e){return"Chart scrolled out of view"!==(null===e||void 0===e?void 0:e.message)&&console.warn("fetch error",t),s(e),Object(L.a)()})))}),e);return n.pipe(Object(F.a)(null),Object(B.a)((function(){return t.pipe(a)}))).subscribe(),[t,n]},U=n(81),W=n(319),G=n(593),V=n(614),Y=function(e,t){return"json"===e.format?function(e,t){var n=e.view_update_every;if(!e.result.data.length)return e;var a=e.result.data[0][0]-t*n,r=Object(W.a)(e.result.labels).map((function(){return null})),o=new Array(t).fill(null).map((function(e,t){return[a+t*n].concat(Object(C.a)(r))}));return Object(g.a)({},e,{after:e.after-n*t,result:Object(g.a)({},e.result,{data:o.concat(e.result.data)})})}(e,t):e},X=[],Z=function(e,t,n){if("array"===t&&"json"===e.format){if(Array.isArray(e.result))return e;var a=n?Object(G.a)(e.result.data):e.result.data;return Object(g.a)({},e,{format:"array",result:a.reduce((function(e,t){return t.shift(),[].concat(Object(C.a)(e),[Object(V.a)(t)])}),X)})}return e},$=n(1),K=n(139),q=n(4),J=q.d.div.withConfig({displayName:"styled__Container",componentId:"qqn9iy-0"})(["width:100%;height:100%;min-height:",";display:flex;flex-flow:row nowrap;padding:"," "," "," ",";"],Object($.w)(10),Object($.w)(2),Object($.w)(2),Object($.w)(2),Object($.w)(2)),Q=q.d.div.withConfig({displayName:"styled__SideContent",componentId:"qqn9iy-1"})(["flex-grow:0;flex-shrink:0;height:100%;align-self:stretch;"]),ee=q.d.div.withConfig({displayName:"styled__ContentContainer",componentId:"qqn9iy-2"})([""]),te=Object(q.d)($.p).withConfig({displayName:"styled__HeaderText",componentId:"qqn9iy-3"})(["color:",";font-weight:bold;display:block;margin-bottom:",";"],(function(e){var t=e.error;return e.success&&Object($.v)("success")||t&&Object($.v)("error")}),Object($.w)()),ne=Object(q.d)($.u).withConfig({displayName:"styled__ContentText",componentId:"qqn9iy-4"})(["display:block;color:",";font-weight:",";"],(function(e){return e.error&&Object($.v)("error")||Object($.v)("text")}),(function(e){return e.error&&"bold"})),ae=function(e){var t=e.header,n=e.text,a=e.leftContent,o=e.rightContent,i=e.renderContent,s=e.success,l=e.error;return r.a.createElement(J,null,a&&r.a.createElement(Q,null,a),r.a.createElement(ee,null,t&&r.a.createElement(te,{success:s,error:l},t),n&&r.a.createElement(ne,{success:s,error:l},n),i&&i(e)),o&&r.a.createElement(Q,{right:!0},o))},re=function(e){return r.a.createElement(ae,e)},oe=q.d.div.withConfig({displayName:"styled__NodeIconContainer",componentId:"fe9uuu-0"})(["width:",";height:",";margin-right:",";display:flex;justify-content:center;align-items:center;& > svg use{fill:",";}"],Object($.w)(5),Object($.w)(5),Object($.w)(2),Object($.v)(["gray","limedSpruce"])),ie=q.d.a.withConfig({displayName:"styled__NotificationLink",componentId:"fe9uuu-1"})(["&,&:hover{text-decoration:underline;color:inherit;}"]),se={position:K.b.POSITION.BOTTOM_RIGHT,autoClose:1e4,pauseOnFocusLoss:!1},le=function(){var e=re(Object(g.a)({},{header:"Installation error",text:"The installer could not prepare the required dependencies to enable Netdata Cloud functionality"},{success:!1,leftContent:r.a.createElement(oe,null,r.a.createElement($.l,{name:"gear",size:"large"}))}));K.b.error(e,se)},ce=function(){var e={header:"Connection Problem",text:r.a.createElement(ie,{href:"https://learn.netdata.cloud/docs/agent/packaging/installer#automatic-one-line-installation-script",target:"_blank"},"To access Cloud install again your agent via the kickstart script")},t=re(Object(g.a)({},e,{success:!1,leftContent:r.a.createElement(oe,null,r.a.createElement($.l,{name:"gear",size:"large"}))}));K.b.error(t,se)},de=n(11),ue=n(566),he=n(615),pe=n(225),fe=n(559),ge=n(609),me={hash:"#",theme:null,help:null,mode:"live",update_always:!1,pan_and_zoom:!1,server:null,after:0,before:0,highlight:!1,highlight_after:0,highlight_before:0,nowelcome:!1,show_alarms:!1,chart:null,family:null,alarm:null,alarm_unique_id:0,alarm_id:0,alarm_event_id:0,alarm_when:0},be=function(e){var t=Object(S.a)(e,2),n=t[0],a=t[1];return function(e){var t=Object(S.a)(e,2),n=t[0],a=t[1];return void 0===me[n]||void 0===a}([n,a])?{}:Object(d.a)({},n,decodeURIComponent(a))},ve="print"===Object(ue.a)(Object(he.a)(";"),Object(ge.a)((function(e,t){return 0===t?{hash:e}:be(e.split("="))})),pe.a,Object(fe.a)(me))(document.location.hash).mode,_e=n(15),ye=k.a.mark(Se),xe=k.a.mark(Pe),Oe=k.a.mark(He),we=k.a.mark(ze),ke=k.a.mark(Ue),Ee=U.b?30:60,Ce=Object(c.a)();function Se(){var e,t,n,a,r,o;return k.a.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=3,Object(E.f)(Ce);case 3:if((e=i.sent).type!==_e.c.success.toString()){i.next=15;break}return t=e.payload,n=t.fetchDataParams.viewRange,a=Object(S.a)(n,2),r=a[0],o=a[1],i.next=10,Object(E.d)(de.m);case 10:if(!i.sent||!(r<=0||o<=0)){i.next=15;break}return i.next=14,Object(E.c)(Object(_e.d)({id:t.id}));case 14:return i.abrupt("continue",0);case 15:return i.next=17,Object(E.c)(e);case 17:i.next=0;break;case 19:case"end":return i.stop()}}),ye)}var je=function(e,t){return"".concat(void 0===e?"null":encodeURIComponent(e),",").concat(encodeURIComponent(t))},De=!1,Ae=function(e){return"chart"===e?"node":"node"===e||"dimension"===e?e:"label=".concat(e)},Te=z(ve?2:Ee),Me=Object(S.a)(Te,1)[0];function Pe(e){var t,n,a,r,o,i,s,l,c,d,u,h,p,f,m,b,v,_,y,x,O,w,S,j,D,A,M,P,L,I,R,N,F,B,H,z,W,G,V;return k.a.wrap((function(k){for(;;)switch(k.prev=k.next){case 0:return t=e.payload,n=t.host,a=t.context,r=t.chart,o=t.format,i=t.points,s=t.group,l=t.gtime,c=t.options,d=t.after,u=t.before,h=t.dimensions,p=t.labels,f=t.postGroupBy,m=t.postAggregationMethod,b=t.aggrMethod,v=t.dimensionsAggrMethod,_=t.nodeIDs,y=t.httpMethod,x=t.groupBy,O=void 0===x?"dimension":x,w=t.aggrGroups,S=void 0===w?[]:w,j=t.fetchDataParams,D=t.id,A=t.cancelTokenSource,k.next=4,Object(E.d)(de.C);case 4:if(!(M=k.sent)){k.next=15;break}if(P=je(h,c),L=Object.keys(M.data).find((function(e){return e.startsWith(r)&&e.includes(P)}))){k.next=11;break}return console.warn("Could not find snapshot key for chart: ".concat(r," and id ").concat(D)),k.abrupt("return");case 11:return I=M.data[L],k.next=14,Object(E.c)(_e.c.success({chartData:I,fetchDataParams:j,id:D}));case 14:return k.abrupt("return");case 15:R=U.b?"".concat(Object(T.a)(n),"api/v1/data"):n,N=c.split("|"),F=N.includes("flip"),H=(B=!De&&!F)?N.concat("flip"):N,z=[Ae(O),f&&"label=".concat(f)].filter(Boolean),W="POST"===y?{data:Object(g.a)({filter:{nodeIDs:_,context:a,dimensions:h?h.split(/['|]/):void 0,labels:p},after:d,before:u,points:i,group:s,gtime:l,agent_options:H},m&&{post_aggregation_methods:[m]},{aggregations:["dimension"!==O&&{method:v||"sum",groupBy:["chart"].concat(Object(C.a)(z))},"chart"!==O&&Object(g.a)({method:b,groupBy:z},S.length&&{labels:S})].filter(Boolean)})}:{params:{chart:r,_:(new Date).valueOf(),format:o,points:i,group:s,gtime:l,options:c,after:d,before:u,dimensions:h}},G=function(e){if(null===e||void 0===e?void 0:e.result){var t=j.fillMissingPoints,n=Z(e,o,B),a=Object(g.a)({},n,{},"post_aggregated_data"in e.result&&{postAggregationMethod:m,groupBy:O,postGroupBy:f,aggrGroups:S,postAggregated:e.result.post_aggregated_data[m]});Ce.put(_e.c.success({chartData:t?Y(a,t):a,fetchDataParams:j,id:D}))}else Ce.put(_e.c.failure({id:D}))},V=function(e){console.warn("fetch chart data failure",e),Ce.put(_e.c.failure({id:D}))},Me.next(Object(g.a)({},W,{method:y||"GET",url:R,onErrorCallback:V,onSuccessCallback:G,cancelTokenSource:A}));case 25:case"end":return k.stop()}}),xe)}var Le=z(1),Ie=Object(S.a)(Le,2),Re=Ie[0],Ne=Ie[1];function Fe(e){var t=e.payload,n=t.host,a=t.chart,r=t.format,o=t.points,i=t.group,s=t.gtime,l=t.options,c=t.after,d=t.before,u=t.dimensions,h=t.aggrMethod,p=t.groupBy,f=t.nodeIDs,m=t.chartLibrary,b=t.id,v="".concat(a,",").concat(m,",").concat(je(u,l)),_="".concat(Object(T.a)(n),"api/v1/data"),y=Object(g.a)({chart:a,_:(new Date).valueOf(),format:r,points:o,group:i,gtime:s,options:l,after:c,before:d,dimensions:u},h&&{aggr_method:h},{},f&&{node_ids:f.join(",")},{},p&&{groupBy:p});Re.next({url:_,params:y,onErrorCallback:function(){Ce.put(_e.e.failure({id:b})),window.chartUpdated({chartDataUniqueID:v,chart:a,data:null})},onSuccessCallback:function(e){Ce.put(_e.e.success({snapshotData:e,id:b})),window.chartUpdated({chartDataUniqueID:v,data:e})}})}function Be(){Ne.next()}function He(e){var t,n,a,r,o,i,s;return k.a.wrap((function(l){for(;;)switch(l.prev=l.next){case 0:return t=e.payload,n=t.chart,a=t.id,r=t.host,l.next=4,Object(E.d)(de.C);case 4:if(!(o=l.sent)){l.next=9;break}return l.next=8,Object(E.c)(_e.b.success({chartMetadata:o.charts.charts[n],id:a}));case 8:return l.abrupt("return");case 9:return s=U.b?"".concat(Object(T.a)(r),"api/v1/chart"):r.replace("/data","/chart"),l.prev=10,l.next=13,Object(E.a)(A.get,s,{params:{chart:n}});case 13:i=l.sent,l.next=22;break;case 16:return l.prev=16,l.t0=l.catch(10),console.warn("fetch chart details failure"),l.next=21,Object(E.c)(_e.b.failure({id:a}));case 21:return l.abrupt("return");case 22:return l.next=24,Object(E.c)(_e.b.success({chartMetadata:i.data,id:a}));case 24:case"end":return l.stop()}}),Oe,null,[[10,16]])}function ze(e){var t,n,a,r,o,i,s,l,c,d,u;return k.a.wrap((function(p){for(;;)switch(p.prev=p.next){case 0:return t=e.payload,n=t.poll,a=!1,r=!1,o=!1,i=!1,p.prev=6,p.next=9,Object(E.d)(de.w);case 9:return s=p.sent,l=null===s||void 0===s?void 0:s.isCloudAvailable,c=null===s||void 0===s?void 0:s.isACLKAvailable,p.next=14,Object(E.a)(A.get,"".concat(T.b,"/api/v1/info"));case 14:return d=p.sent,u=d.data,o=(null===u||void 0===u?void 0:u["cloud-available"])||!1,a=(null===u||void 0===u?void 0:u["cloud-enabled"])||!1,r=(null===u||void 0===u?void 0:u["agent-claimed"])||!1,i=(null===u||void 0===u?void 0:u["aclk-available"])||!1,p.next=22,Object(E.c)(_e.f.success({isCloudAvailable:o,isCloudEnabled:a,isAgentClaimed:r,isACLKAvailable:i,fullInfoPayload:u}));case 22:a&&null===l&&!o&&le(),o&&r&&!1!==c&&!i&&ce(),p.next=31;break;case 26:return p.prev=26,p.t0=p.catch(6),console.warn("fetch agent info failure"),p.next=31,Object(E.c)(_e.f.failure());case 31:if(!(n&&a&&r)){p.next=36;break}return p.next=34,Object(E.b)(h.b);case 34:return p.next=36,Object(E.c)(Object(_e.f)({poll:!0}));case 36:case"end":return p.stop()}}),we,null,[[6,26]])}function Ue(){return k.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(E.g)(_e.c.request,Pe);case 2:return e.next=4,Object(E.g)(_e.b.request,He);case 4:return e.next=6,Object(E.g)(_e.e.request,Fe);case 6:return e.next=8,Object(E.g)(b.f,Be);case 8:return e.next=10,Object(E.g)(_e.f.request,ze);case 10:return e.next=12,Object(E.e)(Se);case 12:case"end":return e.stop()}}),ke)}var We=n(340),Ge=n(610),Ve=n(28),Ye=n(106),Xe=.2,Ze=n(10),$e=n(594),Ke=n(50),qe=n(226),Je=n(148),Qe=k.a.mark(mt),et=k.a.mark(vt),tt=k.a.mark(_t),nt=k.a.mark(yt),at=k.a.mark(xt),rt=k.a.mark(Ot),ot=k.a.mark(wt),it=1e3,st=1e4,lt=500,ct="Notification"in window,dt=window.netdataAlarmsNotifCallback,ut=0,ht=0,pt=function(e){"object"===typeof e&&(function(e){if("string"===typeof e){var t=document.querySelector("#chart_".concat(Object(Je.a)(e)));if(t){var n=t.offsetTop+-50;return document.querySelector("html").scrollTop=n,!0}}return!1}(e.chart)&&window.focus())},ft=function(){ct&&"default"===Notification.permission&&Notification.requestPermission()},gt=function(){return ct&&"granted"===Notification.permission};function mt(e,t){var n,a;return k.a.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,r.next=3,Object(E.a)(A.get,"".concat(t,"/api/v1/alarm_log?after=").concat(e));case 3:return n=r.sent,a=n.data,r.abrupt("return",a);case 8:return r.prev=8,r.t0=r.catch(0),console.warn("Error fetching alarms log",r.t0),r.abrupt("return",null);case 12:case"end":return r.stop()}}),Qe,null,[[0,8]])}var bt=function(e,t,n){if(!e.updated){var a=e.value_string,r=t.alarms["".concat(e.chart,".").concat(e.name)];"undefined"!==typeof r&&e.status===r.status&&"undefined"!==typeof r.value_string&&(a=r.value_string);var o=e.name.replace(/_/g," "),i=e.status.toLowerCase(),s="".concat(o," = ").concat(a),l=e.alarm_id,c="images/banner-icon-144x144.png",d=!1,u=!0;switch(e.status){case"REMOVED":u=!1;break;case"UNDEFINED":case"UNINITIALIZED":return;case"CLEAR":if(e.unique_id<n)return;if("UNINITIALIZED"===e.old_status||"UNDEFINED"===e.old_status)return;if(e.no_clear_notification)return;s="".concat(o," back to normal (").concat(a,")"),c="images/check-mark-2-128-green.png",d=!1;break;case"WARNING":"CRITICAL"===e.old_status&&(i="demoted to ".concat(e.status.toLowerCase())),c="images/alert-128-orange.png",d=!1;break;case"CRITICAL":"WARNING"===e.old_status&&(i="escalated to ".concat(e.status.toLowerCase())),c="images/alert-128-red.png",d=!0;break;default:return void console.warn("invalid alarm status ".concat(e.status))}return u&&("function"===typeof dt&&(u=dt(e)),u)?{notificationTitle:s,notificationOptions:{body:"".concat(e.hostname," - ").concat(e.chart," (").concat(e.family,") - ").concat(i,": ").concat(e.info),tag:"".concat(l),requireInteraction:d,icon:T.c+c,data:e},notificationHandler:function(e){if(e.preventDefault(),e.target){var t=e.target.data;pt(t)}}}:void 0}};function vt(e,t){var n,a,r,o,i,s,l,c,d;return k.a.wrap((function(u){for(;;)switch(u.prev=u.next){case 0:return u.next=2,Object(E.a)(mt,ht,e);case 2:if(null!==(n=u.sent)&&"object"===typeof n){u.next=6;break}return console.warn("invalid alarms log response"),u.abrupt("return");case 6:if(0!==n.length){u.next=9;break}return console.log("received empty alarm log"),u.abrupt("return");case 9:a=Object($e.a)(Object(Ke.a)("unique_id"),n),r=a.filter((function(e){return e.unique_id>ht})),o=r.map((function(e){return bt(e,t,ut)})).filter((function(e){return void 0!==e})),i=0;case 13:if(!(i<o.length)){u.next=22;break}return s=o[i],l=s.notificationTitle,c=s.notificationOptions,d=s.notificationHandler,new Notification(l,c).onclick=d,u.next=19,Object(E.b)(lt);case 19:i+=1,u.next=13;break;case 22:ht=Object(qe.a)(a).unique_id,("undefined"===typeof window.netdataAlarmsRemember||window.netdataAlarmsRemember)&&localStorage.setItem("last_notification_id","".concat(ht));case 24:case"end":return u.stop()}}),et)}function _t(e,t){var n,a;return k.a.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,Object(E.a)(A.get,"".concat(t,"/api/v1/alarms?").concat(e));case 2:return n=r.sent,a=n.data,0===ut&&"number"===typeof a.latest_alarm_log_unique_id&&(ut=a.latest_alarm_log_unique_id),r.abrupt("return",a);case 6:case"end":return r.stop()}}),tt)}function yt(e){var t;return k.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=3,Object(E.a)(_t,"active",e);case 3:if(!(t=n.sent)){n.next=12;break}return n.next=7,Object(E.c)(Object(Ze.x)({activeAlarms:t}));case 7:if(!(gt()&&t.latest_alarm_log_unique_id>ht)){n.next=12;break}return n.next=10,Object(E.a)(vt,e,t);case 10:if(!1!==t.status){n.next=12;break}return n.abrupt("break",16);case 12:return n.next=14,Object(E.b)(st);case 14:n.next=0;break;case 16:case"end":return n.stop()}}),nt)}function xt(){var e,t,n;return k.a.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.next=2,Object(E.f)(Ze.w);case 2:return e=a.sent,t=e.payload,n=t.serverDefault,a.next=7,Object(E.b)(it);case 7:return ht=+(localStorage.getItem("last_notification_id")||ht),ft(),a.next=11,Object(E.a)(yt,n);case 11:case"end":return a.stop()}}),at)}function Ot(e){var t,n,a,r;return k.a.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,n=t.callback,a=t.serverDefault,o.next=4,Object(E.a)(_t,"all",a);case 4:r=o.sent,n(r);case 6:case"end":return o.stop()}}),rt)}function wt(){return k.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(E.e)(xt);case 2:return e.next=4,Object(E.g)(Ze.e.request,Ot);case 4:case"end":return e.stop()}}),ot)}var kt=["","https://www.google.com/","https://duckduckgo.com/","https://www.reddit.com/"],Et=function(e){return kt.includes(e)||e.endsWith(".my-netdata.io/")||e.startsWith("https://github.com/")||e.endsWith("netdata.cloud/")||e.startsWith("https://app.netdata.cloud/")},Ct=k.a.mark(Lt),St=k.a.mark(It),jt=k.a.mark(Rt),Dt=k.a.mark(Bt),At=k.a.mark(Ut),Tt=k.a.mark(Wt),Mt=Object(c.a)();function Pt(){window.addEventListener("focus",(function(){Mt.put(Object(Ze.z)({hasWindowFocus:!0}))})),window.addEventListener("blur",(function(){Mt.put(Object(Ze.z)({hasWindowFocus:!1}))}))}function Lt(){var e;return k.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=3,Object(E.f)(Mt);case 3:return e=t.sent,t.next=6,Object(E.c)(e);case 6:t.next=0;break;case 8:case"end":return t.stop()}}),Ct)}function It(){return k.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(E.f)(_e.f.success);case 2:return e.abrupt("return",e.sent.payload.fullInfoPayload);case 3:case"end":return e.stop()}}),St)}function Rt(e,t){var n,a,r,o,i,s;return k.a.wrap((function(l){for(;;)switch(l.prev=l.next){case 0:if(!window.posthog){l.next=2;break}return l.abrupt("return");case 2:return l.next=4,Object(E.d)(de.k);case 4:if(l.t1=l.sent,l.t1){l.next=9;break}return l.next=8,Object(E.a)(It);case 8:l.t1=l.sent;case 9:if(l.t0=l.t1,l.t0){l.next=12;break}l.t0={};case 12:i=l.t0,function(e,t){var n,a,r,o;t.__SV||(window.posthog=t,t._i=[],t.init=function(i,s,l){function c(e,t){var n=t.split(".");2==n.length&&(e=e[n[0]],t=n[1]),e[t]=function(){e.push([t].concat(Array.prototype.slice.call(arguments,0)))}}(r=e.createElement("script")).type="text/javascript",r.async=!0,r.src=s.api_host+"/static/array.js",(o=e.getElementsByTagName("script")[0]).parentNode.insertBefore(r,o);var d=t;for(void 0!==l?d=t[l]=[]:l="posthog",d.people=d.people||[],d.toString=function(e){var t="posthog";return"posthog"!==l&&(t+="."+l),e||(t+=" (stub)"),t},d.people.toString=function(){return d.toString(1)+".people (stub)"},n="capture identify alias people.set people.set_once set_config register register_once unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled onFeatureFlags".split(" "),a=0;a<n.length;a++)c(d,n[a]);t._i.push([i,s,l])},t.__SV=1)}(document,window.posthog||[]),window.posthog.init("mqkwGT0JNFqO-zX2t0mW6Tec9yooaVu7xCBlXtHnt5Y",{api_host:"https://posthog.netdata.cloud",loaded:function(e){t&&e.identify(t)}}),s=!Ye.a&&!Et(document.referrer),"masked",window.posthog.register(Object(We.a)((function(e){return void 0!==e&&null!==e}),{$ip:"127.0.0.1",$current_url:Ye.a?null:"agent dashboard",$pathname:Ye.a?null:"netdata-dashboard",$host:Ye.a?null:"dashboard.netdata.io",$initial_referring_domain:s?"masked":null,$initial_referrer:s?"masked":null,$referring_domain:s?"masked":null,$referrer:s?"masked":null,event_source:"agent dashboard",netdata_version:i.version,netdata_machine_guid:e,netdata_person_id:t||"Unavailable",netdata_buildinfo:i.buildinfo,netdata_release_channel:i["release-channel"],mirrored_host_count:null===(n=i.mirrored_hosts)||void 0===n?void 0:n.length,alarms_normal:null===(a=i.alarms)||void 0===a?void 0:a.normal,alarms_warning:null===(r=i.alarms)||void 0===r?void 0:r.warning,alarms_critical:i.alarms.critical,host_os_name:i.os_name,host_os_id:i.os_id,host_os_id_like:i.os_id_like,host_os_version:i.os_version,host_os_version_id:i.os_version_id,host_os_detection:i.os_detection,system_cores_total:i.cores_total,system_total_disk_space:i.total_disk_space,system_cpu_freq:i.cpu_freq,system_ram_total:i.ram_total,system_kernel_name:i.kernel_name,system_kernel_version:i.kernel_version,system_architecture:i.architecture,system_virtualization:i.virtualization,system_virt_detection:i.virt_detection,system_container:i.container,system_container_detection:i.container_detection,container_os_name:i.container_os_name,container_os_id:i.container_os_id,container_os_id_like:i.container_os_id_like,container_os_version:i.container_os_version,container_os_version_id:i.container_os_version_id,host_collectors_count:i.collectors.length,host_cloud_enabled:i["cloud-enabled"],host_cloud_available:i["cloud-available"],host_agent_claimed:i["agent-claimed"],host_aclk_available:i["aclk-available"],host_aclk_implementation:i["aclk-implementation"],host_allmetrics_json_used:i["allmetrics-json-used"],host_allmetrics_prometheus_used:i["allmetrics-prometheus-used"],host_allmetrics_shell_used:i["allmetrics-shell-used"],host_charts_count:i["charts-count"],host_dashboard_used:i["dashboard-used"],host_metrics_count:i["metrics-count"],host_notification_methods:i["notification-methods"],config_memory_mode:i["memory-mode"],config_exporting_enabled:i["exporting-enabled"],config_exporting_connectors:i["exporting-connectors"],config_hosts_available:i["hosts-available"],config_https_enabled:i["https-enabled"],config_multidb_disk_quota:i["multidb-disk-quota"],config_page_cache_size:i["page-cache-size"],config_stream_enabled:i["stream-enabled"],config_web_enabled:i["web-enabled"],host_is_parent:null===(o=i.host_labels)||void 0===o?void 0:o._is_parent,mirrored_hosts_reachable:i.mirrored_hosts_status.filter((function(e){return e.reachable})).length,mirrored_hosts_unreachable:i.mirrored_hosts_status.filter((function(e){return!e.reachable})).length,host_collectors:i.collectors,host_is_k8s_node:i.is_k8s_node}));case 18:case"end":return l.stop()}}),jt)}var Nt=function e(t){var n=t.machineGuid,a=t.maxRedirects,r=t.name,o=t.registryServer,i=t.url;return A.get("".concat(o,"/api/v1/registry"),{headers:{"Cache-Control":"no-cache, no-store",Pragma:"no-cache"},params:{action:"access",machine:n,name:r,url:i},withCredentials:!0}).then((function(t){var s=t.data,l="string"===typeof s.registry,c=s;if("string"===typeof s.status&&"ok"===s.status||(c=null),null===c)return l&&a>0?e({maxRedirects:a-1,machineGuid:n,name:r,registryServer:s.registry,url:i}):{registryServer:o};var d=s.urls.filter((function(e){return e[1]!==h.c}));return{personGuid:s.person_guid||null,registryServer:o,urls:d}})).catch((function(){return console.warn("error calling registry:",o),null}))},Ft=function(e){var t={};e.slice().reverse().forEach((function(e){var n=Object(S.a)(e,5),a=n[0],r=n[1],o=n[2],i=n[3],s=n[4],l=t[a]||{lastTimestamp:0,accesses:0,alternateUrls:[],guid:"",url:"",name:""},c=l.lastTimestamp<o,d={guid:l.guid||a,url:c?r:l.url,lastTimestamp:c?o:l.lastTimestamp,accesses:l.accesses+i,name:c?s:l.name,alternateUrls:l.alternateUrls.concat(r)};t[a]=d}));var n=Object(Ge.a)(e.slice().reverse().map((function(e){return Object(S.a)(e,1)[0]}))).map((function(e){return t[e]}));return{registryMachines:t,registryMachinesArray:n}};function Bt(e){var t,n,a,r,o,i,s,l,c,d,u,p,f,g,m;return k.a.wrap((function(b){for(;;)switch(b.prev=b.next){case 0:return t=e.payload,n=t.serverDefault,a="".concat(n,"api/v1/registry?action=hello"),b.prev=3,b.next=6,Object(E.a)(A.get,a,{headers:{"Cache-Control":"no-cache, no-store",Pragma:"no-cache"},withCredentials:!0});case 6:r=b.sent,b.next=15;break;case 9:return b.prev=9,b.t0=b.catch(3),console.warn("error accessing registry or Do-Not-Track is enabled"),b.next=14,Object(E.c)(Ze.f.failure());case 14:return b.abrupt("return");case 15:return o=r.data.cloud_base_url,i=r.data.hostname,s=r.data.machine_guid,l=r.data.registry,c=l===Ve.b,b.next=22,Object(E.c)(Ze.f.success({cloudBaseURL:o,hostname:i,isUsingGlobalRegistry:c,machineGuid:s}));case 22:return d=c?h.c:i,u=c?h.c:n,b.next=26,Object(E.a)(Nt,{machineGuid:s,maxRedirects:2,name:d,registryServer:l,url:u});case 26:if(p=b.sent,!r.data.anonymous_statistics){b.next=30;break}return b.next=30,Object(E.e)(Rt,r.data.machine_guid,null===p||void 0===p?void 0:p.personGuid);case 30:if(!((null===p||void 0===p?void 0:p.urls)&&(null===p||void 0===p?void 0:p.personGuid))){b.next=35;break}return f=Ft(p.urls),g=f.registryMachines,m=f.registryMachinesArray,b.next=35,Object(E.c)(Object(Ze.y)({personGuid:p.personGuid,registryMachines:g,registryMachinesArray:m}));case 35:return b.next=37,Object(E.c)(Object(Ze.a)({registryServer:(null===p||void 0===p?void 0:p.registryServer)||l}));case 37:case"end":return b.stop()}}),Dt,null,[[3,9]])}var Ht=function(e){return"options.".concat(e)};function zt(e){var t=e.payload,n=t.key,a=t.value;"stop_updates_when_focus_is_lost"!==n&&localStorage.setItem(Ht(n),JSON.stringify(a))}function Ut(e){var t;return k.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return(t=e.payload).isActive?document.body.className="with-panel":document.body.className="",n.next=4,Object(E.b)(1e3*Xe);case 4:return n.next=6,Object(E.c)(Object(Ze.v)({isActive:t.isActive}));case 6:case"end":return n.stop()}}),At)}function Wt(){return k.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(E.e)(Pt);case 2:return e.next=4,Object(E.e)(Lt);case 4:return e.next=6,Object(E.g)(Ze.f.request,Bt);case 6:return e.next=8,Object(E.e)(wt);case 8:return e.next=10,Object(E.g)(Ze.t,zt);case 10:return e.next=12,Object(E.g)(Ze.u,Ut);case 12:case"end":return e.stop()}}),Tt)}var Gt=n(563),Vt=n(611),Yt=/[&;]/,Xt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:decodeURIComponent(window.location.hash.substr(1));if(0===e.length)return{};var t=e.split(Yt),n=t.reduce((function(e,t){var n=t.split("="),a=Object(S.a)(n,2),r=a[0],o=a[1];return e[r]=o,e}),{});return n},Zt=function(e){var t=Object.entries(e);return 0===t.length?"":t.map((function(e){var t=Object(S.a)(e,2),n=t[0],a=t[1];return"".concat(n,"=").concat(encodeURIComponent(a))})).join(";")},$t=(Object(ue.a)(Xt,Zt),function(e){var t=Xt(),n=Object(Vt.a)(e,t);window.location.hash="".concat(Zt(n))}),Kt=function(e){window.location.hash="".concat(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:decodeURIComponent(window.location.hash.substr(1)),n=Object(Gt.a)(e,Xt(t));return Zt(n)}(e))},qt=k.a.mark(nn),Jt=k.a.mark(an),Qt="LOCAL-STORAGE-NEEDS-SYNC";function en(e){var t=e.payload,n=t.after,a=t.before;if(window.urlOptions)window.urlOptions.after===n&&window.urlOptions.before===a||window.urlOptions.netdataHighlightCallback(!0,n,a);else{var r=Xt(),o=Math.round(n).toString(),i=Math.round(a).toString();r.highlight_after===o&&r.highlight_before===i||$t({highlight_after:o,highlight_before:i})}}function tn(){window.urlOptions?window.urlOptions.netdataHighlightCallback(!1,0,0):Kt(["highlight_after","highlight_before"])}function nn(e){var t,n;return k.a.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:if(t=e.payload,!window.showSignInModal){a.next=8;break}return window.showSignInModal(),a.next=5,Object(E.f)(b.a);case 5:n=t.signInLinkHref,window.localStorage.setItem(Qt,"true"),window.location.href=n;case 8:case"end":return a.stop()}}),qt)}function an(){return k.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(E.g)(Ze.q,en);case 2:return e.next=4,Object(E.g)(Ze.d,tn);case 4:return e.next=6,Object(E.g)(b.d,nn);case 6:case"end":return e.stop()}}),Jt)}var rn=k.a.mark(on);function on(){return k.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(E.e)(Wt);case 2:return e.next=4,Object(E.e)(Ue);case 4:return e.next=6,Object(E.e)(an);case 6:case"end":return e.stop()}}),rn)}var sn=Object(c.b)(),ln=function(){var e=Object(l.e)(O,Object(l.d)(Object(l.a)(sn)));return sn.run(on),e}(),cn=n(328),dn=n.n(cn),un=(n(421),n(422),n(167)),hn=n.n(un);window.$=hn.a,window.jQuery=hn.a;n(423),n(436),n(437),n(438),n(439),n(442);var pn=function(e){return new Promise((function(t,n){var a=document.createElement("link");a.setAttribute("rel","stylesheet"),a.setAttribute("type","text/css"),a.setAttribute("href",e),a.onload=function(){t()},a.onerror=function(){n(Error("Error loading css: ".concat(e)))},document.getElementsByTagName("head")[0].appendChild(a)}))},fn=n(59),gn=n(9),mn=n(187),bn=n(342),vn=n(597),_n=n(341),yn=n(605),xn=n(616),On=n(331),wn=n(617),kn=n(26),En=n.n(kn),Cn=function(e){return"sparkline"===e.dygraphTheme},Sn={dygraph:{hasToolboxPanAndZoom:!0,xssRegexIgnore:new RegExp("^/api/v1/data.result.data$"),format:"json",options:function(e){return"function"===typeof this.isLogScale?"ms|flip".concat(this.isLogScale(e)?"|abs":""):""},hasLegend:function(e){var t=e.legend,n=void 0===t||t;return!Cn(e)&&Boolean(n)},trackColors:!0,pixelsPerPoint:function(e){return Cn(e)?2:3},isLogScale:function(e){return"logscale"===e.dygraphTheme},containerClass:function(e){return this.hasLegend(e)?En()("netdata-container-with-legend","bottom"===e.legendPosition&&"netdata-container-with-legend--bottom"):"netdata-container"}},sparkline:{hasToolboxPanAndZoom:!1,xssRegexIgnore:new RegExp("^/api/v1/data.result$"),format:"array",options:function(){return"flip|abs"},hasLegend:function(){return!1},trackColors:!1,pixelsPerPoint:function(){return 3},containerClass:function(){return"netdata-container"}},peity:{hasToolboxPanAndZoom:!1,xssRegexIgnore:new RegExp("^/api/v1/data.result$"),format:"ssvcomma",options:function(){return"null2zero|flip|abs"},hasLegend:function(){return!1},trackColors:!1,pixelsPerPoint:function(){return 3},containerClass:function(){return"netdata-container"}},google:{hasToolboxPanAndZoom:!1,xssRegexIgnore:new RegExp("^/api/v1/data.result.rows$"),format:"datatable",options:function(){return""},hasLegend:function(){return!1},trackColors:!1,pixelsPerPoint:function(){return 4},containerClass:function(){return"netdata-container"}},d3pie:{hasToolboxPanAndZoom:!1,xssRegexIgnore:new RegExp("^/api/v1/data.result.data$"),format:"json",hasLegend:function(){return!1},options:function(){return"objectrows|ms"},trackColors:!1,pixelsPerPoint:function(){return 15},containerClass:function(){return"netdata-container"}},easypiechart:{hasToolboxPanAndZoom:!1,xssRegexIgnore:new RegExp("^/api/v1/data.result$"),format:"array",options:function(){return"absolute"},hasLegend:function(){return!1},trackColors:!0,pixelsPerPoint:function(){return 3},aspectRatio:100,containerClass:function(){return"netdata-container-easypiechart"}},gauge:{hasToolboxPanAndZoom:!1,xssRegexIgnore:new RegExp("^/api/v1/data.result$"),format:"array",options:function(){return"absolute"},hasLegend:function(){return!1},trackColors:!0,pixelsPerPoint:function(){return 3},aspectRatio:60,containerClass:function(){return"netdata-container-gauge"}},textonly:{containerClass:function(){return"netdata-container"},format:"array",hasLegend:function(){return!1},options:function(){return"absolute"},pixelsPerPoint:function(){return 3},trackColors:!1,xssRegexIgnore:new RegExp("^/api/v1/data.result$")},groupbox:{containerClass:function(){return"netdata-container"},hasLegend:function(){return!1},options:function(){return"absolute"},format:"json",trackColors:!1,pixelsPerPoint:function(){return 3},xssRegexIgnore:new RegExp("^/api/v1/data.result$")}},jn=function(e,t){var n=e.appendOptions,a=e.overrideOptions,r="";return r+=a?a.toString():Sn[e.chartLibrary].options(e),"string"===typeof n&&(r+="|".concat(encodeURIComponent(n))),r+="|jsonwrap",t&&(r+="|nonzero"),("sum-of-abs"===e.dimensionsAggrMethod||!e.dimensionsAggrMethod&&e.groupBy&&"dimension"!==e.groupBy)&&(r+="|absolute"),r},Dn=n(595),An=Math.pow(2,31)-1,Tn=n(35),Mn=n(177),Pn=function(e){var t=e.containerNode,n=e.hasEmptyData,a=window.screen.height,o=t.clientHeight,i=Math.max(.2*o,5);o-=i;var s=(i-5)/2,l=t.clientWidth/10;o>l&&(s+=(o-l)/2,o=l),o>a/20&&(s+=(o-a/20)/2,o=a/20);var c=n?" empty":" netdata",d=n?"noData":"loading";return r.a.createElement("div",{className:"netdata-message icon",style:{fontSize:o,paddingTop:s}},r.a.createElement(Mn.a,{iconType:d}),c)},Ln=n(603),In=n(602),Rn=function(e){return e.ctrlKey?window.NETDATA.options.current.pan_and_zoom_factor*window.NETDATA.options.current.pan_and_zoom_factor_multiplier_control:e.shiftKey?window.NETDATA.options.current.pan_and_zoom_factor*window.NETDATA.options.current.pan_and_zoom_factor_multiplier_shift:e.altKey?window.NETDATA.options.current.pan_and_zoom_factor*window.NETDATA.options.current.pan_and_zoom_factor_multiplier_alt:window.NETDATA.options.current.pan_and_zoom_factor},Nn=n(152),Fn=n(107),Bn=function(e,t){return e===t||Number.isNaN(e)&&Number.isNaN(t)},Hn=[],zn=[],Un=function(e,t){var n=t;return e===t?("undefined"===typeof Hn[n]&&(Hn[n]=new Intl.NumberFormat(void 0,{useGrouping:!0,minimumFractionDigits:e,maximumFractionDigits:t})),Hn[n]):0===e?("undefined"===typeof zn[n]&&(zn[n]=new Intl.NumberFormat(void 0,{useGrouping:!0,minimumFractionDigits:e,maximumFractionDigits:t})),zn[n]):new Intl.NumberFormat(void 0,{useGrouping:!0,minimumFractionDigits:e,maximumFractionDigits:t})},Wn=function(e,t,n){return function(a){if("number"!==typeof a)return"-";var r,o,i=e(a);if("number"!==typeof i)return i;if(null!==t)return t.format(i);if(-1!==n)r=n,o=n;else{r=0;var s=i<0?-i:i;o=s>1e3?0:s>10?1:s>1?2:s>.1?2:s>.01?4:s>.001?5:s>1e-4?6:7}return Un(r,o).format(i)}},Gn=function(e){var t=e.attributes,n=e.data,r=e.units,o=e.unitsCommon,i=e.unitsDesired,s=e.uuid,l=Object(gn.b)(de.I),c=Object(gn.b)(de.x),d=Object(a.useState)((function(){return Nn.a})),u=Object(S.a)(d,2),h=u[0],p=u[1],f=Object(a.useState)(),g=Object(S.a)(f,2),m=g[0],b=g[1],v=Object(a.useState)(),_=Object(S.a)(v,2),y=_[0],x=_[1],O=Object(a.useState)(r),w=Object(S.a)(O,2),k=w[0],E=w[1],C=Object(a.useState)(-1),j=Object(S.a)(C,2),D=j[0],A=j[1],T=Object(a.useState)(null),M=Object(S.a)(T,2),P=M[0],L=M[1],I=t.decimalDigits,R=void 0===I?-1:I,N=Object(a.useMemo)((function(){return Wn(h,P,R)}),[h,R,P]),F=Object(a.useRef)(N),B=function(e,t,n){F.current=Wn(e,t,n)};return{legendFormatValue:N,legendFormatValueDecimalsFromMinMax:Object(a.useCallback)((function(e,t){if(Bn(m,e)&&Bn(y,t))return F.current;b(e),x(t);var a=Fn.a.get(s,e,t,r,i,o,(function(e){E(e)}),l,c);p((function(){return a}));var d,u=a(e),h=a(t);if("number"!==typeof u||"number"!==typeof h)return B(a,P,R),F.current;if(n.min===n.max)d=-1;else if(-1!==R)d=R;else{var f;d=(f=u===h?Math.abs(u):Math.abs(h-u))>1e3?0:f>10?1:f>1?2:f>.1?2:f>.01?4:f>.001?5:f>1e-4?6:7}var g=P;return d!==D&&(g=d<0?null:Un(d,d),L((function(){return g})),A(d)),B(a,g,d),F.current}),[D,R,m,y,s,l,r,i,o,c,n.min,n.max,P]),unitsCurrent:k}},Vn=n(57),Yn={r:255,g:0,b:0},Xn=n(18),Zn=q.d.div.withConfig({displayName:"chart-legend-bottomstyled__LegendContainer",componentId:"ltgk2z-0"})(["margin-bottom:",";padding-left:35px;"],Object($.w)(3)),$n=q.d.div.withConfig({displayName:"chart-legend-bottomstyled__LegendFirstRow",componentId:"ltgk2z-1"})(["margin-top:4px;display:flex;justify-content:space-between;"]),Kn=q.d.div.withConfig({displayName:"chart-legend-bottomstyled__LegendSecondRow",componentId:"ltgk2z-2"})(["margin-top:4px;display:flex;justify-content:space-between;"]),qn=q.d.div.withConfig({displayName:"chart-legend-bottomstyled__LegendUnit",componentId:"ltgk2z-3"})([""]),Jn=q.d.span.withConfig({displayName:"chart-legend-bottomstyled__DateTimeSeparator",componentId:"ltgk2z-4"})(["margin:0 3px;"]),Qn=q.d.div.withConfig({displayName:"chart-legend-bottomstyled__LegendItems",componentId:"ltgk2z-5"})(["display:flex;flex-wrap:wrap;overflow:auto;max-height:80px;"]),ea=q.d.div.withConfig({displayName:"chart-legend-bottomstyled__DimensionItem",componentId:"ltgk2z-6"})(["display:flex;align-items:center;color:",";margin-right:12px;cursor:pointer;opacity:",";user-select:none;font-size:11px;&:focus{outline:none;}"],(function(e){return e.color}),(function(e){return e.isDisabled?.3:null})),ta=q.d.div.withConfig({displayName:"chart-legend-bottomstyled__DimensionItemToolboxPlaceholder",componentId:"ltgk2z-7"})(["width:140px;height:20px;"]),na=q.d.div.withConfig({displayName:"chart-legend-bottomstyled__DimensionIcon",componentId:"ltgk2z-8"})(["width:14px;height:7px;border-radius:4px;overflow:hidden;background-color:",";"],(function(e){return e.color})),aa=q.d.span.withConfig({displayName:"chart-legend-bottomstyled__DimensionLabel",componentId:"ltgk2z-9"})(["margin-left:3px;"]),ra=q.d.span.withConfig({displayName:"chart-legend-bottomstyled__DimensionValue",componentId:"ltgk2z-10"})(["margin-left:5px;min-width:30px;"]),oa=q.d.div.withConfig({displayName:"chart-legend-bottomstyled__ToolboxContainer",componentId:"ltgk2z-11"})(["position:relative;touch-action:none;"]),ia={},sa=Object(Xn.a)(Tn.f,(function(e){var t=e.dimension_names,n=e.keys;return{dimensionNames:t,keys:void 0===n?ia:n}})),la=function(e){var t=e.id,n=e.index,o=Object(gn.b)(Object(a.useCallback)((function(e){return sa(e,{id:t})}),[t])),i=o.dimensionNames,s=o.keys,l=s.chart,c=s.node;if(l&&c&&2===Object.keys(s).length)return r.a.createElement(aa,null,l[n],"@",c[n]);var d=i[n];return r.a.createElement(aa,null,d)},ca=function(e){var t=e.chartUuid,n=e.chartMetadata,o=e.chartLibrary,i=e.colors,s=e.hoveredRow,l=e.hoveredX,c=e.legendFormatValue,d=e.onDimensionClick,u=e.selectedDimensions,h=e.showLatestOnBlur,p=e.unitsCurrent,f=e.viewBefore,g=Object(gn.b)(Object(a.useCallback)((function(e){return Object(Tn.f)(e,{id:t})}),[t])),m=g.dimension_names,b=g.dimension_ids,v=-1===s&&!h,_=new Date(l||f),y=window.NETDATA.options.current["color_fill_opacity_".concat(n.chart_type)],x=Object(fn.b)(),O=x.localeDateString,w=x.localeTimeString,k=Object(a.useRef)(null);return Object(a.useEffect)((function(){k.current&&window.Ps.initialize(k.current,{wheelSpeed:.2,wheelPropagation:!0,swipePropagation:!0,minScrollbarLength:null,maxScrollbarLength:null,useBothWheelAxes:!1,suppressScrollX:!0,suppressScrollY:!1,scrollXMarginOffset:0,scrollYMarginOffset:0,theme:"default"})}),[k]),r.a.createElement("div",{className:En()("netdata-chart-legend","netdata-".concat(o,"-legend"))},r.a.createElement("span",{className:"netdata-legend-title-date",title:Object(Vn.c)(!0,n)},v?Object(Vn.c)(!1,n):O(_)),r.a.createElement("br",null),r.a.createElement("span",{className:"netdata-legend-title-time",title:Object(Vn.d)(g,n)},v?n.context.toString():w(_)),r.a.createElement("br",null),r.a.createElement("span",{className:"netdata-legend-title-units"},p),r.a.createElement("br",null),r.a.createElement("div",{className:"netdata-legend-series",ref:k},r.a.createElement("div",{className:"netdata-legend-series-content"},b.map((function(e,o){var l,h=m[o],p=i[h],f=function(e){if(!e)return Yn;var t=e.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,(function(e,t,n,a){return t+t+n+n+a+a})),n=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return n||console.warn("wrong color format:",e),n?{r:parseInt(n[1],16),g:parseInt(n[2],16),b:parseInt(n[3],16)}:Yn}(p),b=0===u.length||u.includes(h);if(v)l=null;else if(-1!==s){var _=g.result.data[s];l=_?_[o+1]:null}else l=g.view_latest_values[o];return r.a.createElement(a.Fragment,{key:e},0!==o&&r.a.createElement("br",null),r.a.createElement("span",{title:h,className:En()("netdata-legend-name",b?"selected":"not-selected"),onClick:function(e){d(h,e)},role:"button",style:{color:p},tabIndex:0},r.a.createElement("table",{className:"netdata-legend-name-table-".concat(n.chart_type),style:{backgroundColor:"rgba(".concat(f.r,",").concat(f.g,",").concat(f.b,",").concat(y,")")}},r.a.createElement("tbody",null,r.a.createElement("tr",{className:"netdata-legend-name-tr"},r.a.createElement("td",{className:"netdata-legend-name-td"}))))," ",r.a.createElement(la,{id:t,index:o})),r.a.createElement("span",{title:h,className:En()("netdata-legend-value",!b&&"hidden"),onClick:function(e){d(h,e)},role:"button",style:{color:p},tabIndex:0},c(l)))})))))},da=function(e){var t=e.chartMetadata,n=e.showUndefined,a=e.hoveredX,o=e.viewBefore,i=e.chartData,s=Object(fn.b)(),l=s.localeDateString,c=s.localeTimeString,d=new Date(a||o);return r.a.createElement("div",null,r.a.createElement("span",{title:Object(Vn.c)(!0,t)},n?Object(Vn.c)(!1,t):l(d)),r.a.createElement(Jn,null,"|"),r.a.createElement("span",{title:Object(Vn.d)(i,t)},n?t.context.toString():c(d)))},ua=function(e){var t=e.chartUuid,n=e.chartMetadata,o=e.colors,i=e.hoveredRow,s=e.hoveredX,l=e.legendFormatValue,c=e.onDimensionClick,d=e.selectedDimensions,u=e.showLatestOnBlur,h=e.unitsCurrent,p=e.viewBefore,f=e.legendToolbox,g=e.resizeHandler,m=-1===i&&!u,b=Object(gn.b)(Object(a.useCallback)((function(e){return Object(Tn.f)(e,{id:t})}),[t])),v=b.dimension_names,_=b.dimension_ids;return r.a.createElement(Zn,null,r.a.createElement($n,null,r.a.createElement(qn,null,h),r.a.createElement(da,{chartMetadata:n,showUndefined:m,hoveredX:s,viewBefore:p,chartData:b})),r.a.createElement(Kn,null,r.a.createElement(Qn,null,_.map((function(e,n){var a,s=v[n],u=o[s],h=0===d.length||d.includes(s);if(m)a=null;else if(-1!==i){var p=b.result.data[i];a=p?p[n+1]:null}else a=b.view_latest_values[n];return r.a.createElement(ea,{color:u,onClick:function(e){c(s,e)},role:"button",tabIndex:0,isDisabled:!h,key:e},r.a.createElement(na,{title:s,color:u}),r.a.createElement(la,{id:t,index:n}),r.a.createElement(ra,null,h&&l(a)))})),r.a.createElement(ta,null)),r.a.createElement(oa,null,f,g)))},ha=function(e){var t=e.attributes,n=e.chartUuid,o=e.chartMetadata,i=e.chartLibrary,s=e.colors,l=e.hoveredRow,c=e.hoveredX,d=e.legendFormatValue,u=e.selectedDimensions,h=e.setSelectedDimensions,p=e.showLatestOnBlur,f=e.unitsCurrent,g=e.viewBefore,m=e.legendToolbox,b=e.resizeHandler,v=Object(gn.b)(Object(a.useCallback)((function(e){return Object(Tn.f)(e,{id:n}).dimension_names}),[n])),_=function(e,t){t.preventDefault();var n=t.shiftKey||t.ctrlKey,a=Object(Vn.b)({allDimensions:v,selectedDimensions:u,clickedDimensionName:e,isModifierKeyPressed:n});h(a)};return"bottom"===t.legendPosition?r.a.createElement(ua,{chartUuid:n,chartLibrary:i,chartMetadata:o,colors:s,hoveredRow:l,hoveredX:c,legendFormatValue:d,onDimensionClick:_,selectedDimensions:u,showLatestOnBlur:p,unitsCurrent:f,viewBefore:g,legendToolbox:m,resizeHandler:b}):r.a.createElement(ca,{chartUuid:n,chartLibrary:i,chartMetadata:o,colors:s,hoveredRow:l,hoveredX:c,legendFormatValue:d,onDimensionClick:_,selectedDimensions:u,showLatestOnBlur:p,unitsCurrent:f,viewBefore:g})},pa=n(108),fa=function(e){var t=e.onToolboxLeftClick,n=e.onToolboxResetClick,a=e.onToolboxRightClick,o=e.onToolboxZoomInClick,i=e.onToolboxZoomOutClick;return r.a.createElement("div",{className:"netdata-legend-toolbox"},r.a.createElement(pa.a,{className:"netdata-legend-toolbox-button",onClick:t,iconType:"left",popoverTitle:"Pan Left",popoverContent:"Pan the chart to the left. You can also <b>drag it</b> with your mouse or your finger (on touch devices).<br/><small>Help can be disabled from the settings.</small>"}),r.a.createElement(pa.a,{className:"netdata-legend-toolbox-button",onClick:n,iconType:"reset",popoverTitle:"Chart Reset",popoverContent:"Reset all the charts to their default auto-refreshing state. You can also <b>double click</b> the chart contents with your mouse or your finger (on touch devices). <br/><small>Help can be disabled from the settings.</small>"}),r.a.createElement(pa.a,{className:"netdata-legend-toolbox-button",onClick:a,iconType:"right",popoverTitle:"Pan Right",popoverContent:"Pan the chart to the right. You can also <b>drag it</b> with your mouse or your finger (on touch devices).<br/><small>Help can be disabled from the settings.</small>"}),r.a.createElement(pa.a,{className:"netdata-legend-toolbox-button",onClick:o,iconType:"zoomIn",popoverTitle:"Chart Zoom In",popoverContent:"Zoom in the chart. You can also press SHIFT and select an area of the chart, or press SHIFT or ALT and use the mouse wheel or 2-finger touchpad scroll to zoom in or out. <br/><small>Help can be disabled from the settings.</small>"}),r.a.createElement(pa.a,{className:"netdata-legend-toolbox-button",onClick:i,iconType:"zoomOut",popoverTitle:"Chart Zoom Out",popoverContent:"Zoom out the chart. You can also press SHIFT or ALT and use the mouse wheel, or 2-finger touchpad scroll to zoom in or out.<br/><small>Help can be disabled from the settings.</small>"}))},ga=n(114),ma=n(567),ba=n(596),va=n(49),_a=n.n(va),ya=(n(443),n(329)),xa=n(330),Oa=n(565),wa=n(220),ka=n.n(wa),Ea=function(e,t){return e.map((function(e){var n=Object(xa.a)(e),a=n[0],r=n.slice(1),o=[],i=0,s=0;return r.map((function(e,n){return{isVisible:t[n],value:e}})).slice().reverse().forEach((function(e){var t=e.isVisible,n=e.value;t?n>=0?(s+=n,o.push(s)):(i+=n,o.push(i)):o.push(0)})),[a].concat(o)}))},Ca=function(e,t,n,a){var r,o=a.isLogScale(e),i=e.dygraphType,s=void 0===i?n.chart_type:i,l=e.groupBy;if(l&&"dimension"!==l&&("percentage"===(r=n.units)||"percent"===r||-1!==r.indexOf("%")))return"line";var c=s;return"stacked"===c&&1===t.dimensions&&(c="area"),"stacked"===c&&o&&(c="area"),c},Sa=Object(Oa.a)(Object(vn.a)("true"),(function(){return ka()(window.NETDATA.themes.current.background)})),ja=function(e){return e.map((function(e){return ka()(e).mix(Sa(),.2).hex()}))},Da=function(e,t){return e?window.NETDATA.options.current.color_fill_opacity_fake_stacked:"stacked"===t?window.NETDATA.options.current.color_fill_opacity_stacked:window.NETDATA.options.current.color_fill_opacity_area},Aa=(n(461),n(598)),Ta=function(e,t){var n=Object(Aa.a)(!1),r=Object(S.a)(n,2),o=r[0],i=r[1],s=Object(a.useRef)(null),l=Object(a.useCallback)((function(n){var a=n.getArea().x,r=n.toDomXCoord(1e3*t.current.chartData.first_entry),o=r>a;if(i(o),o&&s.current){var l=e.current.getBoundingClientRect().height;s.current.style.left="".concat(a,"px"),s.current.style.right="calc(100% - ".concat(r,"px)"),s.current.style.top="".concat(l/2,"px")}}),[]);return[o,s,l]},Ma=q.d.div.withConfig({displayName:"proceeded-chart-disclaimer__Container",componentId:"sc-5o8wdv-0"})(["display:block;"]),Pa=Object(a.forwardRef)((function(e,t){return r.a.createElement(Ma,{ref:t,className:"dygraph__history-tip","data-testid":"proceededChartDisclaimer"},r.a.createElement("span",{className:"dygraph__history-tip-content"},"Want to extend your history of real-time metrics?",r.a.createElement("br",null),r.a.createElement("a",{href:"https://learn.netdata.cloud/guides/longer-metrics-storage/",target:"_blank",rel:"noopener noreferrer","data-testid":"proceededChartDisclaimer-configure"},"Configure Netdata's\xa0",r.a.createElement("b",null,"history")),"\xa0or use the\xa0",r.a.createElement("a",{href:"https://learn.netdata.cloud/docs/agent/database/engine/",target:"_blank",rel:"noopener noreferrer","data-testid":"proceededChartDisclaimer-engine"},"DB engine"),"."))})),La={WARNING:"#FFF8E1",CRITICAL:"#FFEBEF",CLEAR:"#E5F5E8"},Ia=function(e){return La[e]||null},Ra={WARNING:"#FFC300",CRITICAL:"#F59B9B",CLEAR:"#68C47D"},Na=function(e){return Ra[e]||null},Fa={WARNING:"#536775",CRITICAL:"#FF4136",CLEAR:"#00AB44"},Ba=function(e){return Fa[e]||null},Ha=q.d.div.withConfig({displayName:"alarmBadge__Container",componentId:"tz967u-0"})(["position:absolute;margin-right:10px;overflow:hidden;pointer-events:none;direction:rtl;z-index:10;"]),za=q.d.div.withConfig({displayName:"alarmBadge__Badge",componentId:"tz967u-1"})(["display:inline-block;border-radius:36px;padding:2px 12px;background:",";border:1px solid ",";color:",";font-size:12px;font-weight:700;direction:ltr;white-space:nowrap;"],(function(e){return e.background}),(function(e){return e.border}),(function(e){return e.color})),Ua=Object(a.forwardRef)((function(e,t){var n=e.isVisible,a=e.status,o=e.label;return r.a.createElement(Ha,{ref:t},n&&r.a.createElement(za,{background:Ia(a),border:Na(a),color:Ba(a)},o))})),Wa=function(e){var t=e.attributes,n=e.chartData,a=e.chartMetadata,r=e.chartSettings,o=e.dimensionsVisibility,i=e.hiddenLabelsElementId,s=e.isFakeStacked,l=e.orderedColors,c=e.setMinMax,d=e.shouldSmoothPlot,u=e.unitsCurrent,h=e.xAxisDateString,p=e.xAxisTimeString,f="sparkline"===t.dygraphTheme,g=f?3:4,m=r.isLogScale(t),b=Ca(t,n,a,r),v=t.dygraphSmooth,_=void 0===v?"line"===b&&!f:v,y=t.dygraphDrawAxis,x=void 0===y||y,O="bottom"===t.legendPosition,w=t.dygraphColors,k=void 0===w?l:w,E=t.dygraphRightGap,C=void 0===E?5:E,S=t.dygraphShowRangeSelector,j=void 0!==S&&S,D=t.dygraphShowRoller,A=void 0!==D&&D,T=t.dygraphTitle,M=void 0===T?t.title||a.title:T,P=t.dygraphTitleHeight,L=void 0===P?19:P,I=t.dygraphLegend,R=void 0===I?"always":I,N=t.dygraphLabelsDiv,F=void 0===N?i:N,B=t.dygraphLabelsSeparateLine,H=void 0===B||B,z=t.dygraphIncludeZero,U=void 0===z?"stacked"===b:z,W=t.dygraphShowZeroValues,V=void 0===W||W,Y=t.dygraphShowLabelsOnHighLight,X=void 0===Y||Y,Z=t.dygraphHideOverlayOnMouseOut,$=void 0===Z||Z,K=t.dygraphXRangePad,q=void 0===K?0:K,J=t.dygraphYRangePad,Q=void 0===J?1:J,ee=t.dygraphValueRange,te=void 0===ee?[null,null]:ee,ne=t.dygraphYLabelWidth,ae=void 0===ne?12:ne,re=t.dygraphStrokeWidth,oe=void 0===re?"stacked"===b?.1:!0===_?1.5:.7:re,ie=t.dygraphStrokePattern,se=t.dygraphDrawPoints,le=void 0!==se&&se,ce=t.dygraphDrawGapEdgePoints,de=void 0===ce||ce,ue=t.dygraphConnectSeparatedPoints,he=void 0!==ue&&ue,pe=t.dygraphPointSize,fe=void 0===pe?1:pe,ge=t.dygraphStepPlot,me=void 0!==ge&&ge,be=t.dygraphStrokeBorderColor,ve=void 0===be?window.NETDATA.themes.current.background:be,_e=t.dygraphStrokeBorderWidth,ye=void 0===_e?0:_e,xe=t.dygraphFillGraph,Oe=void 0===xe?"area"===b||"stacked"===b:xe,we=t.dygraphFillAlpha,ke=void 0===we?Da(s,b):we,Ee=t.dygraphStackedGraph,Ce=void 0===Ee?"stacked"===b&&!s:Ee,Se=t.dygraphStackedGraphNanFill,je=void 0===Se?"none":Se,De=t.dygraphAxisLabelFontSize,Ae=void 0===De?10:De,Te=t.dygraphAxisLineColor,Me=void 0===Te?window.NETDATA.themes.current.axis:Te,Pe=t.dygraphAxisLineWidth,Le=void 0===Pe?1:Pe,Ie=t.dygraphDrawGrid,Re=void 0===Ie||Ie,Ne=t.dygraphGridLinePattern,Fe=t.dygraphGridLineWidth,Be=void 0===Fe?1:Fe,He=t.dygraphGridLineColor,ze=void 0===He?window.NETDATA.themes.current.grid:He,Ue=t.dygraphMaxNumberWidth,We=void 0===Ue?8:Ue,Ge=t.dygraphSigFigs,Ve=t.dygraphDigitsAfterDecimal,Ye=void 0===Ve?2:Ve,Xe=t.dygraphHighlighCircleSize,Ze=void 0===Xe?g:Xe,$e=t.dygraphHighlightSeriesOpts,Ke=t.dygraphHighlightSeriesBackgroundAlpha,qe=t.dygraphXPixelsPerLabel,Je=void 0===qe?50:qe,Qe=t.dygraphXAxisLabelWidth,et=void 0===Qe?60:Qe,tt=t.dygraphDrawXAxis,nt=void 0===tt?x:tt,at=t.dygraphYPixelsPerLabel,rt=void 0===at?15:at,ot=t.dygraphYAxisLabelWidth,it=void 0===ot?O?30:50:ot,st=t.dygraphDrawYAxis,lt=void 0===st?x:st;return{colors:s?ja(Object(G.a)(k)):k,rightGap:f?0:C,showRangeSelector:j,showRoller:A,title:f?void 0:M,titleHeight:L,legend:R,labels:n.result.labels,labelsDiv:F,labelsSeparateLines:!!f||H,labelsShowZeroValues:!m&&V,labelsKMB:!1,labelsKMG2:!1,showLabelsOnHighlight:X,hideOverlayOnMouseOut:$,includeZero:U,xRangePad:q,yRangePad:f?1:Q,valueRange:te,ylabel:f||O?void 0:u,yLabelWidth:f||O?0:ae,plotter:_&&d?window.smoothPlotter:null,strokeWidth:oe,strokePattern:ie,drawPoints:le,drawGapEdgePoints:de,connectSeparatedPoints:!m&&he,pointSize:fe,stepPlot:me,strokeBorderColor:ve,strokeBorderWidth:ye,fillGraph:Oe,fillAlpha:ke,stackedGraph:Ce,stackedGraphNaNFill:je,drawAxis:!f&&x,axisLabelFontSize:Ae,axisLineColor:Me,axisLineWidth:Le,drawGrid:!f&&Re,gridLinePattern:Ne,gridLineWidth:Be,gridLineColor:ze,maxNumberWidth:We,sigFigs:Ge,digitsAfterDecimal:Ye,highlightCircleSize:Ze,highlightSeriesOpts:$e,highlightSeriesBackgroundAlpha:Ke,visibility:o,logscale:m,axes:{x:{pixelsPerLabel:Je,ticker:_a.a.dateTicker,axisLabelWidth:et,drawAxis:!f&&nt,axisLabelFormatter:function(e){return e.toTimeString().startsWith("00:00:00")?h(e):p(e)}},y:{logscale:m,pixelsPerLabel:rt,axisLabelWidth:it,drawAxis:!f&&lt,axisLabelFormatter:function(e){return c([this.axes_[0].extremeRange[0],this.axes_[0].extremeRange[1]])(e)}}}}},Ga=function(e){var t=e.attributes,n=e.chartData,o=e.chartMetadata,i=e.chartElementClassName,s=e.chartElementId,l=e.chartLibrary,c=e.chartUuid,d=e.dimensionsVisibility,u=e.hasEmptyData,h=e.hasLegend,p=e.isRemotelyControlled,f=e.onUpdateChartPanAndZoom,m=e.orderedColors,b=e.immediatelyDispatchPanAndZoom,v=e.hoveredRow,_=e.hoveredX,y=e.setGlobalChartUnderlay,x=e.setHoveredX,O=e.setMinMax,w=e.unitsCurrent,k=e.viewAfter,E=e.viewBefore,j=Object(gn.b)(de.l),D=Object(gn.b)(de.d),A=(null===D||void 0===D?void 0:D.chartId)===n.id?D:null,T=Object(fn.b)(),M=T.xAxisDateString,P=T.xAxisTimeString,L=Sn[l],I="".concat(c,"-hidden-labels-id"),R=Ca(t,n,o,L),N=n.min<0&&"stacked"===R,F=Da(N,R),B=Object(a.useRef)(null),H=Object(a.useCallback)((function(e){var t=e.after,n=e.before,a=e.callback,r=e.shouldNotExceedAvailableRange;f({after:t,before:n,callback:a,masterID:c,shouldNotExceedAvailableRange:r})}),[c,f]),z=Object(a.useRef)(),U=Object(a.useRef)(!1),W=Object(a.useRef)(!1),V=Object(a.useRef)(null),Y=Object(a.useRef)(0),X=Object(a.useRef)(0),Z=Object(a.useRef)(),$=Object(gn.a)(),K=Object(gn.b)(de.G),q=Object(a.useCallback)((function(){U.current=!1,z.current&&z.current.updateOptions({dateWindow:null}),$(K?Object(Ze.j)():Object(_e.g)({id:c}))}),[c,$,K]),J=function(){var e=Object(Aa.a)(!1),t=Object(S.a)(e,2),n=t[0],r=t[1],o=Object(a.useRef)(null);return[n,o,function(e,t,n){if(e){if(o.current){r(!0);var a=t.getArea().x;o.current.style.left="".concat(a,"px"),o.current.style.right="calc(100% - ".concat(n,"px)"),o.current.style.top="40px"}}else r(!1)}]}(),Q=Object(S.a)(J,3),ee=Q[0],te=Q[1],ne=Q[2],ae=Object(a.useRef)({alarm:A,chartData:n,globalChartUnderlay:j,hoveredX:_,immediatelyDispatchPanAndZoom:b,resetGlobalPanAndZoom:q,setGlobalChartUnderlay:y,updateAlarmBadge:ne,updateChartPanOrZoom:H,viewAfter:k,viewBefore:E}),re=Ta(B,ae),oe=Object(S.a)(re,3),ie=oe[0],se=oe[1],le=oe[2];Object(a.useLayoutEffect)((function(){ae.current.alarm=A,ae.current.chartData=n,ae.current.hoveredX=_,ae.current.immediatelyDispatchPanAndZoom=b,ae.current.globalChartUnderlay=j,ae.current.resetGlobalPanAndZoom=q,ae.current.setGlobalChartUnderlay=y,ae.current.updateAlarmBadge=ne,ae.current.updateChartPanOrZoom=H,ae.current.viewAfter=k,ae.current.viewBefore=E}),[A,n,j,_,b,q,y,ne,H,k,E]);var ce=Object(gn.b)(de.B);Object(a.useLayoutEffect)((function(){if(B&&B.current&&!z.current&&!u){var e=Wa({attributes:t,chartData:n,chartMetadata:o,chartSettings:L,dimensionsVisibility:d,hiddenLabelsElementId:I,isFakeStacked:N,orderedColors:m,setMinMax:O,shouldSmoothPlot:ce,unitsCurrent:w,xAxisDateString:M,xAxisTimeString:P});U.current=!1;var a=Object(g.a)({},e,{dateWindow:[ae.current.viewAfter,ae.current.viewBefore],highlightCallback:function(e,t){var n=W.current?null:t;n!==ae.current.hoveredX&&x(n)},unhighlightCallback:function(){null!==ae.current.hoveredX&&x(null)},drawCallback:function(e){if(U.current){U.current=!1;var t=e.xAxisRange(),n=Math.round(t[0]),a=Math.round(t[1]);(function(e){var t=e.after,n=e.before,a=e.chartData;return t>=1e3*a.first_entry&&n<=1e3*a.last_entry})({after:n,before:a,chartData:ae.current.chartData})&&ae.current.updateChartPanOrZoom({after:n,before:a})}},zoomCallback:function(e,t){U.current=!0,ae.current.updateChartPanOrZoom({after:e,before:t})},underlayCallback:function(e,t,n){if(le(n),ae.current.alarm){var a=ae.current.alarm,r=n.toDomXCoord(1e3*a.when),o=Na(a.status);requestAnimationFrame((function(){e.fillStyle=o;var n=e.globalAlpha;e.globalAlpha=.7,e.fillRect(r-3,t.y,6,t.h),e.globalAlpha=n})),ae.current.updateAlarmBadge(ae.current.alarm,n,r-3)}if(ae.current.globalChartUnderlay){var i=ae.current.globalChartUnderlay,s=i.after,l=i.before;if(s<l){var c=n.toDomCoords(s,-20),d=n.toDomCoords(l,20),u=c[0],h=d[0];e.fillStyle=window.NETDATA.themes.current.highlight,e.fillRect(u,t.y,h-u,t.h)}}},interactionModel:{mousedown:function(e,t,n){e.button&&2===e.button||(U.current=!0,W.current=!0,n.initializeMouseDown(e,t,n),n.tarp.tarps=n.tarp.tarps.filter((function(e){var t=Number(e.style.left.replace("px",""))>1e4;return t&&e.parentNode.removeChild(e),!t})),e.button&&1===e.button?e.shiftKey?(V.current=null,_a.a.startPan(e,t,n)):e.altKey||e.ctrlKey||e.metaKey?(V.current=t.toDataXCoord(e.offsetX),_a.a.startZoom(e,t,n)):(V.current=null,_a.a.startZoom(e,t,n)):e.shiftKey?(V.current=null,_a.a.startZoom(e,t,n)):e.altKey||e.ctrlKey||e.metaKey?(V.current=t.toDataXCoord(e.offsetX),_a.a.startZoom(e,t,n)):(V.current=null,_a.a.startPan(e,t,n)))},mousemove:function(e,t,n){null!==V.current?(U.current=!0,_a.a.moveZoom(e,t,n),e.preventDefault()):n.isPanning?(U.current=!0,n.is2DPan=!1,_a.a.movePan(e,t,n)):n.isZooming&&_a.a.moveZoom(e,t,n)},mouseup:function(e,t,n){if(W.current=!1,null!==V.current){var a=Object($e.a)((function(e){return+e}),[V.current,t.toDataXCoord(e.offsetX)]);ae.current.setGlobalChartUnderlay({after:a[0],before:a[1],masterID:c}),V.current=null,n.isZooming=!1,t.clearZoomRect_(),t.drawGraph_(!1)}else n.isPanning?(U.current=!0,_a.a.endPan(e,t,n),ae.current.immediatelyDispatchPanAndZoom()):n.isZooming&&(U.current=!0,_a.a.endZoom(e,t,n),ae.current.immediatelyDispatchPanAndZoom())},wheel:function(e,t){function n(e,t,n){var a=(e[1]-e[0])*t,r=[a*n,a*(1-n)];return[e[0]+r[0],e[1]-r[1]]}if(e.altKey||e.shiftKey){var a;U.current=!0,a="number"!==typeof e.wheelDelta||Number.isNaN(e.wheelDelta)?-1.2*e.deltaY:e.wheelDelta/40;var r=(e.detail?-1*e.detail:a)/50,o=function(e,t,n){var a=e.toDomXCoord(e.xAxisRange()[0]),r=e.yAxisRange(0),o=e.toDomYCoord(r[1]),i=t-a,s=n-o,l=e.toDomXCoord(e.xAxisRange()[1])-a,c=e.toDomYCoord(r[0])-o;return[0===l?0:i/l,1-(0===c?0:s/c)]}(t,e.offsetX,e.offsetY),i=o[0],s=o[1],l=function(e,t,a,r){for(var o=e.yAxisRanges(),i=[],s=0;s<o.length;s+=1)i[s]=n(o[s],t,r||.5);return n(e.xAxisRange(),t,a||.5)}(t,r,i,s),c=Object(S.a)(l,2),d=c[0],u=c[1];ae.current.updateChartPanOrZoom({after:d,before:u,shouldNotExceedAvailableRange:!0,callback:function(e,n){t.updateOptions({dateWindow:[e,n]})}}),e.preventDefault()}},click:function(e){e.preventDefault()},dblclick:function(){ae.current.resetGlobalPanAndZoom()},touchstart:function(e,t,n){W.current=!0,U.current=!0,_a.a.defaultInteractionModel.touchstart(e,t,n),n.touchDirections={x:!0,y:!1},Y.current=0,"number"===typeof e.touches[0].pageX?X.current=e.touches[0].pageX:X.current=0},touchmove:function(e,t,n){U.current=!0,_a.a.defaultInteractionModel.touchmove(e,t,n),Y.current=Date.now()},touchend:function(e,t,n){if(W.current=!1,U.current=!0,_a.a.defaultInteractionModel.touchend(e,t,n),0===Y.current&&0!==X.current&&B.current){U.current=!1;var a=t.plotter_,r=(X.current-(a.area.x+B.current.getBoundingClientRect().left))/a.area.w,o=ae.current,i=Math.round(o.viewAfter+(o.viewBefore-o.viewAfter)*r);x(i,!0)}var s=Date.now();"undefined"!==typeof Z.current&&(0===Y.current&&s-Z.current<=window.NETDATA.options.current.double_click_speed&&ae.current.resetGlobalPanAndZoom());Z.current=s,ae.current.immediatelyDispatchPanAndZoom()}}}),r=N?Ea(n.result.data,d):n.result.data,i=new _a.a(B.current,r,a);z.current=i}}),[t,n,o,L,c,d,u,I,N,m,x,O,ce,w,M,P,le]),Object(xn.a)((function(){if(z.current){var e="sparkline"===t.dygraphTheme,n="bottom"===t.legendPosition;z.current.updateOptions({ylabel:e||n?void 0:w})}}),[t,w]),Object(xn.a)((function(){z.current&&z.current.updateOptions({})}),[A,j]);var ue=Object(gn.b)(de.E);Object(xn.a)((function(){z.current&&window.requestAnimationFrame((function(){z.current&&z.current.resize()}))}),[ue]),Object(xn.a)((function(){if(z.current&&!u){var e=[k,E],a=z.current.xAxisRange(),r=Math.abs(E-k-(a[1]-a[0]))>5e3,o=E<=0&&a[1]>E&&a[0]>k&&!r,i=p&&!o?{dateWindow:e}:{},s=t.dygraphColors,l=void 0===s?m:s,c=N?Ea(n.result.data,d):n.result.data;z.current.updateOptions(Object(g.a)({},i,{colors:N?ja(Object(G.a)(l)):l,file:c,labels:n.result.labels,fillAlpha:F,stackedGraph:"stacked"===R&&!N,visibility:N?Object(G.a)(d):d}))}}),[t,n.result,c,d,R,F,u,N,p,m,k,E]),Object(xn.a)((function(){if(z.current){var e=Wa({attributes:t,chartData:n,chartMetadata:o,chartSettings:L,dimensionsVisibility:d,hiddenLabelsElementId:I,isFakeStacked:N,orderedColors:m,setMinMax:O,shouldSmoothPlot:ce,unitsCurrent:w,xAxisDateString:M,xAxisTimeString:P});z.current.updateOptions(e)}}),[R]);var he=Object(gn.b)(de.o);Object(a.useLayoutEffect)((function(){if(z.current&&he!==c){if(-1===v)return void(-1!==z.current.getSelection()&&z.current.clearSelection());z.current.setSelection(v)}}),[n,c,he,v,k,E]);var pe=Object(gn.b)((function(e){return Object(Tn.l)(e,{id:c})}));Object(a.useLayoutEffect)((function(){z.current&&z.current.resize()}),[pe,n.dimension_names.length]);var fe=Object(gn.b)((function(e){return t.commonMin?Object(de.h)(e,t.commonMin):void 0})),ge=Object(gn.b)((function(e){return t.commonMax?Object(de.g)(e,t.commonMax):void 0}));Object(a.useLayoutEffect)((function(){var e=t.commonMin,n=t.commonMax;if(z.current&&(e||n)){var a=z.current.yAxisExtremes()[0],r=Object(S.a)(a,2),o=r[0],i=r[1],s=t.dygraphValueRange,l=void 0===s?[null,null]:s,d=null===l[0],u=null===l[1],h=!1,p=Object(C.a)(a);if(e&&d&&fe&&fe.currentExtreme<o&&(p[0]=fe.currentExtreme,h=!0),n&&u&&ge&&ge.currentExtreme>i&&(p[1]=ge.currentExtreme,h=!0),h){z.current.updateOptions({valueRange:p});var f=z.current.yAxisExtremes()[0];p=Object(C.a)(f)}e&&d&&p[0]!==(null===fe||void 0===fe?void 0:fe.charts[c])&&$(Object(Ze.o)({chartUuid:c,commonMinKey:e,value:p[0]})),n&&u&&p[1]!==(null===ge||void 0===ge?void 0:ge.charts[c])&&$(Object(Ze.n)({chartUuid:c,commonMaxKey:n,value:p[1]}))}}),[t,n.result,c,fe,ge,$]),Object(a.useLayoutEffect)((function(){ie&&z.current&&le(z.current)}),[ie]),Object(On.a)((function(){z.current&&z.current.destroy()}));var me=Object(a.useRef)();Object(ba.a)((function(){if(t.detectResize){var e=!1,n=function(e,t){var n=null;return function(){for(var a=arguments.length,r=new Array(a),o=0;o<a;o++)r[o]=arguments[o];null!==n&&(clearTimeout(n),n=null),n=setTimeout((function(){return e.apply(void 0,r)}),t)}}((function(){e?z.current&&z.current.resize():e=!0}),500);me.current=new ya.a((function(){n()})),me.current.observe(B.current)}})),Object(On.a)((function(){z.current=null,me.current&&me.current.disconnect()}));var be="bottom"===t.legendPosition;return r.a.createElement(r.a.Fragment,null,r.a.createElement("div",{ref:B,id:s,className:En()(i,{"dygraph-chart--legend-bottom":be})}),ie&&h&&r.a.createElement(Pa,{ref:se}),A&&h&&r.a.createElement(Ua,{isVisible:ee,ref:te,status:A.status,label:A.value}),r.a.createElement("div",{className:"dygraph-chart__labels-hidden",id:I}))},Va=n(332),Ya=n.n(Va),Xa=n(194),Za=function(e){var t=e.attributes,n=e.chartData,o=e.chartMetadata,i=e.chartElementClassName,s=e.chartElementId,l=e.chartWidth,c=e.hoveredRow,d=e.legendFormatValue,u=e.orderedColors,h=e.setMinMax,p=e.showUndefined,f=e.unitsCurrent,g=Object(a.useRef)(null),m=Object(a.useState)(),b=Object(S.a)(m,2),v=b[0],_=b[1],y=-1===c?0:n.result.length-1-c,x=p?null:n.result[y],O=t.easyPieChartMinValue,w=void 0===O?n.min:O,k=t.easyPieChartMaxValue,E=void 0===k?n.max:k,C=Object(ue.a)(Object(Xa.a)((function(e){return+e})),Object($e.a)(Nn.a),(function(e){var t=Object(S.a)(e,2),n=t[0],a=t[1];return[Math.min(n,x||0),Math.max(a,x||0)]}))([w,E]);h(C);var j=function(e){var t,n=e.value,a=void 0===n?0:n,r=e.min,o=void 0===r?0:r,i=e.max,s=void 0===i?0:i;return!e.isMinOverride&&o>0&&(o=0),!e.isMaxOverride&&s<0&&(s=0),o<0&&s>0?(s=-o>s?-o:s,t=Math.round(100*a/s)):a>=0&&o>=0&&s>=0?0===(t=Math.round(100*(a-o)/(s-o)))&&(t=.1):0===(t=Math.round(100*(a-s)/(s-o)))&&(t=-.1),t}({value:p?0:x,min:C[0],max:C[1],isMinOverride:void 0!==t.easyPieChartMinValue,isMaxOverride:void 0!==t.easyPieChartMaxValue});Object(a.useEffect)((function(){if(g.current&&!v){var e=Object(bn.a)([[function(e){return e<3},Object(vn.a)(2)],[_n.a,Nn.a]])(Math.floor(l/22)),n=t.easyPieChartTrackColor,a=void 0===n?window.NETDATA.themes.current.easypiechart_track:n,r=t.easyPieChartScaleColor,o=void 0===r?window.NETDATA.themes.current.easypiechart_scale:r,i=t.easyPieChartScaleLength,s=void 0===i?5:i,c=t.easyPieChartLineCap,d=void 0===c?"round":c,h=t.easyPieChartLineWidth,p=void 0===h?e:h,f=t.easyPieChartTrackWidth,m=t.easyPieChartSize,b=void 0===m?l:m,y=t.easyPieChartRotate,x=void 0===y?0:y,O=t.easyPieChartAnimate,w=void 0===O?{duration:500,enabled:!0}:O,k=t.easyPieChartEasing,E=new Ya.a(g.current,{barColor:u[0],trackColor:a,scaleColor:o,scaleLength:s,lineCap:d,lineWidth:p,trackWidth:f,size:b,rotate:x,animate:w,easing:k});_(E)}}),[t,n,v,l,u]),Object(a.useEffect)((function(){if(v){var e=-1===c&&!p;e&&!v.options.animate.enabled?v.enableAnimation():!e&&v.options.animate.enabled&&v.disableAnimation(),setTimeout((function(){v.update(j)}),0)}}),[v,c,j,p]);var D=2*l/3/5,A=Math.round((l-D-l/40)/2),T=Math.round(1.6*D/3),M=Math.round(A-2*T-l/40),P=Math.round(.9*T),L=Math.round(A+(D+P)+l/40);return r.a.createElement("div",{ref:g,id:s,className:i},r.a.createElement("span",{className:"easyPieChartLabel",style:{fontSize:D,top:A}},d(x)),r.a.createElement("span",{className:"easyPieChartTitle",style:{fontSize:T,top:M}},t.title||o.title),r.a.createElement("span",{className:"easyPieChartUnits",style:{fontSize:P,top:L}},f))},$a=n(333),Ka=function(e){return"number"===typeof e},qa=function(e){var t=e.attributes,n=e.chartData,o=e.chartMetadata,i=e.chartElementClassName,s=e.chartElementId,l=e.chartUuid,c=e.chartHeight,d=e.chartWidth,u=e.hoveredRow,h=e.legendFormatValue,p=e.orderedColors,f=e.setMinMax,g=e.showUndefined,m=e.unitsCurrent,b=Object(a.useRef)(null),v=Object(a.useState)(),_=Object(S.a)(v,2),y=_[0],x=_[1],O=-1===u?0:n.result.length-1-u,w=n.result[O],k=t.gaugeMinValue,E=t.gaugeMaxValue,C=Ka(k)?k:n.min,j=Ka(E)?E:n.max,D=Object(ue.a)(Object(Xa.a)((function(e){return+e})),(function(e){var t=Object(S.a)(e,2),n=t[0],a=t[1];return[!Ka(k)&&n>0?0:n,!Ka(E)&&a<0?0:a]}),Object($e.a)(Nn.a),(function(e){var t=Object(S.a)(e,2),n=t[0],a=t[1];return[Math.min(n,w),Math.max(a,w)]}))([C,j]),A=Object(S.a)(D,2),T=A[0],M=A[1];f([T,M]);var P=Object(ue.a)(Object(vn.a)(100*(w-T)/(M-T)),(function(e){return Math.max(.001,e)}),(function(e){return Math.min(99.999,e)}))();Object(a.useEffect)((function(){if(b.current&&!y){var e=t.gaugePointerColor,n=void 0===e?window.NETDATA.themes.current.gauge_pointer:e,a=t.gaugeStrokeColor,r=void 0===a?window.NETDATA.themes.current.gauge_stroke:a,o=t.gaugeStartColor,i=void 0===o?p[0]:o,s=t.gaugeStopColor,l=t.gaugeGenerateGradient,c={lines:12,angle:.14,lineWidth:.57,radiusScale:1,pointer:{length:.85,strokeWidth:.045,color:n},limitMax:!0,limitMin:!0,colorStart:i,colorStop:s,strokeColor:r,generateGradient:!0===(void 0!==l&&l),gradientType:0,highDpiSupport:!0},d=new $a.Gauge(b.current).setOptions(c);d.minValue=0,d.maxValue=100,x(d)}}),[t,n,y,d,p]),Object(a.useEffect)((function(){if(y){var e=-1===u&&!g?32:1e9;y.animationSpeed=e,setTimeout((function(){y.set(g?0:P)}),0)}}),[y,c,d,u,P,g]);var L=Math.floor(c/5),I=Math.round((c-L)/3.2),R=Math.round(L/2.1),N=Math.round(.9*R),F=Math.round(.75*L);return r.a.createElement("div",{id:s,className:i},r.a.createElement("canvas",{ref:b,className:"gaugeChart",id:"gauge-".concat(l,"-canvas"),style:{width:d,height:c}}),r.a.createElement("span",{className:"gaugeChartLabel",style:{fontSize:L,top:I}},h(g?null:w)),r.a.createElement("span",{className:"gaugeChartTitle",style:{fontSize:R,top:0}},t.title||o.title),r.a.createElement("span",{className:"gaugeChartUnits",style:{fontSize:N}},m),r.a.createElement("span",{className:"gaugeChartMin",style:{fontSize:F}},h(g?null:T)),r.a.createElement("span",{className:"gaugeChartMax",style:{fontSize:F}},h(g?null:M)))},Ja=(n(256),n(138)),Qa=n(599),er=n(600),tr=Object(ue.a)(Ja.a,Object(Qa.a)(/[^0-9a-f]/gi,""),Object(bn.a)([[function(e){return e.length<6},function(e){return e[0]+e[0]+e[1]+e[1]+e[2]+e[2]}],[_n.a,Nn.a]])),nr=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=tr(e),a=Object(ue.a)((function(e){return Object(er.a)(2,e)}),Object(Xa.a)(Object(ue.a)((function(e){return parseInt(e,16)}),(function(e){return Math.round(Math.min(Math.max(0,e+e*t),255)).toString(16)}),(function(e){return"00".concat(e).substr(e.length)}))),(function(e){return e.join("")}))(n);return"#".concat(a)},ar=function(e){return e>0?e:(new Date).valueOf()+e},rr=function(e){var t=e.attributes,n=e.chartContainerElement,o=e.chartData,i=e.chartMetadata,s=e.chartElementClassName,l=e.chartElementId,c=e.orderedColors,d=e.unitsCurrent,u=e.viewAfterForCurrentData,h=e.viewBeforeForCurrentData,p=Object(a.useRef)(null),f=Object(a.useState)(),m=Object(S.a)(f,2),b=m[0],v=m[1],_=Object(a.useRef)(),y=t.forceTimeWindow?function(e,t){var n=ar(t[0]),a=ar(t[1]),r=e.after*Ve.a,o=e.before*Ve.a-r,i=a-n;if(o>i/1.03)return{};var s=o/i;return{paddingLeftPercentage:"".concat((r-n)/(a-n)*100,"%"),widthRatio:s}}(o,[u,h]):{},x=y.paddingLeftPercentage,O=void 0===x?void 0:x,w=y.widthRatio,k=void 0===w?1:w;Object(a.useEffect)((function(){var e=t.sparklineLineColor,n=void 0===e?c[0]:e,a="line"===i.chart_type?window.NETDATA.themes.current.background:nr(n,window.NETDATA.chartDefaults.fill_luminance),r=t.title||i.title,o=function(e){return"disable"===e?"":e},s=t.sparklineType,l=void 0===s?"line":s,u=t.sparklineFillColor,h=void 0===u?a:u,f=t.sparklineDisableInteraction,g=void 0!==f&&f,m=t.sparklineDisableTooltips,y=void 0!==m&&m,x=t.sparklineDisableHighlight,O=void 0!==x&&x,w=t.sparklineHighlightLighten,k=void 0===w?1.4:w,E=t.sparklineTooltipSuffix,C=void 0===E?" ".concat(d):E,S=t.sparklineNumberFormatter,j=void 0===S?function(e){return e.toFixed(2)}:S,D={type:l,lineColor:n,fillColor:h,chartRangeMin:t.sparklineChartRangeMin,chartRangeMax:t.sparklineChartRangeMax,composite:t.sparklineComposite,enableTagOptions:t.sparklineEnableTagOptions,tagOptionPrefix:t.sparklineTagOptionPrefix,tagValuesAttribute:t.sparklineTagValuesAttribute,disableHiddenCheck:t.sparklineDisableHiddenCheck,defaultPixelsPerValue:t.sparklineDefaultPixelsPerValue,spotColor:o(t.sparklineSpotColor),minSpotColor:o(t.sparklineMinSpotColor),maxSpotColor:o(t.sparklineMaxSpotColor),spotRadius:t.sparklineSpotRadius,valueSpots:t.sparklineValueSpots,highlightSpotColor:t.sparklineHighlightSpotColor,highlightLineColor:t.sparklineHighlightLineColor,lineWidth:t.sparklineLineWidth,normalRangeMin:t.sparklineNormalRangeMin,normalRangeMax:t.sparklineNormalRangeMax,drawNormalOnTop:t.sparklineDrawNormalOnTop,xvalues:t.sparklineXvalues,chartRangeClip:t.sparklineChartRangeClip,chartRangeMinX:t.sparklineChartRangeMinX,chartRangeMaxX:t.sparklineChartRangeMaxX,disableInteraction:g,disableTooltips:y,disableHighlight:O,highlightLighten:k,highlightColor:t.sparklineHighlightColor,tooltipContainer:t.sparklineTooltipContainer,tooltipClassname:t.sparklineTooltipClassname,tooltipChartTitle:r,tooltipFormat:t.sparklineTooltipFormat,tooltipPrefix:t.sparklineTooltipPrefix,tooltipSuffix:C,tooltipSkipNull:t.sparklineTooltipSkipNull,tooltipValueLookups:t.sparklineTooltipValueLookups,tooltipFormatFieldlist:t.sparklineTooltipFormatFieldlist,tooltipFormatFieldlistKey:t.sparklineTooltipFormatFieldlistKey,numberFormatter:j,numberDigitGroupSep:t.sparklineNumberDigitGroupSep,numberDecimalMark:t.sparklineNumberDecimalMark,numberDigitGroupCount:t.sparklineNumberDigitGroupCount,animatedZooms:t.sparklineAnimatedZooms};_.current=D,p.current&&!b&&v((function(){return window.$(p.current)}))}),[b,t,n,o.result,i,c,d,k]);var E=t.sparklineOnHover;Object(a.useEffect)((function(){if(b&&E){var e=function(){return E(null)},t=function(e){var t=Object(S.a)(e.sparklines,1)[0].getCurrentRegionFields(),n=t.x,a=t.y;E({x:n,y:a})};return b.bind("sparklineRegionChange",t).bind("mouseleave",e),function(){b.unbind("sparklineRegionChange",t).unbind("mouseleave",e)}}}),[b,E]),Object(a.useEffect)((function(){if(b){var e=n.getBoundingClientRect(),t=e.width,a=e.height;b.sparkline(o.result,Object(g.a)({},_.current,{width:Math.floor(t*k),height:Math.floor(a)}))}}),[b,o.result]);var C=O?{textAlign:"initial",paddingLeft:O}:void 0;return r.a.createElement("div",{ref:p,id:l,className:s,style:C})},or=n(150);window.d3=or;var ir,sr=n(334),lr=n.n(sr),cr=n(46),dr={label:"no data",value:100,color:"#666666"},ur=function(e){var t=e.chartData,n=e.index,a=e.localeDateString,r=e.localeTimeString,o=Math.round((t.before-t.after+1)/t.points),i=Object(cr.a)(o),s=t.result.data[n].time,l=s-1e3*o,c=a(l),d=r(l),u=a(s),h=r(s);return c===u?"".concat(c," ").concat(d," to ").concat(h,", ").concat(i):"".concat(c," ").concat(d," to ").concat(u," ").concat(h,", ").concat(i)},hr=function(e){var t=e.attributes,n=e.chartContainerElement,o=e.chartData,i=e.chartMetadata,s=e.chartElementClassName,l=e.chartElementId,c=e.hoveredRow,d=e.hoveredX,u=e.legendFormatValue,h=e.orderedColors,p=e.setMinMax,f=e.unitsCurrent,g=Object(a.useRef)(null),m=Object(a.useRef)(u);m.current=u;var b=Object(a.useState)(),v=Object(S.a)(b,2),_=v[0],y=v[1],x=Object(a.useRef)(),O=Object(fn.b)(),w=O.localeDateString,k=O.localeTimeString;return Object(a.useEffect)((function(){if(g.current&&!_){p([o.min,o.max]);var e=Object(W.a)(o.result.labels).map((function(e,t){return{label:e,value:o.result.data[0][e],color:h[t]}})).filter((function(e){return null!==e.value&&e.value>0})),a=e.length>0?e:dr,r=t.title||i.title,s=ur({chartData:o,index:0,localeDateString:w,localeTimeString:k}),l=t.d3pieTitle,c=void 0===l?r:l,d=t.d3pieSubtitle,u=void 0===d?f:d,b=t.d3pieFooter,v=void 0===b?s:b,O=t.d3pieTitleColor,E=void 0===O?window.NETDATA.themes.current.d3pie.title:O,C=t.d3pieTitleFontsize,S=void 0===C?12:C,j=t.d3pieTitleFontweight,D=void 0===j?"bold":j,A=t.d3pieTitleFont,T=void 0===A?"arial":A,M=t.d3PieSubtitleColor,P=void 0===M?window.NETDATA.themes.current.d3pie.subtitle:M,L=t.d3PieSubtitleFontsize,I=void 0===L?10:L,R=t.d3PieSubtitleFontweight,N=void 0===R?"normal":R,F=t.d3PieSubtitleFont,B=void 0===F?"arial":F,H=t.d3PieFooterColor,z=void 0===H?window.NETDATA.themes.current.d3pie.footer:H,U=t.d3PieFooterFontsize,G=void 0===U?9:U,V=t.d3PieFooterFontweight,Y=void 0===V?"bold":V,X=t.d3PieFooterFont,Z=void 0===X?"arial":X,$=t.d3PieFooterLocation,K=void 0===$?"bottom-center":$,q=t.d3PiePieinnerradius,J=void 0===q?"45%":q,Q=t.d3PiePieouterradius,ee=void 0===Q?"80%":Q,te=t.d3PieSortorder,ne=void 0===te?"value-desc":te,ae=t.d3PieSmallsegmentgroupingEnabled,re=void 0!==ae&&ae,oe=t.d3PieSmallsegmentgroupingValue,ie=void 0===oe?1:oe,se=t.d3PieSmallsegmentgroupingValuetype,le=void 0===se?"percentage":se,ce=t.d3PieSmallsegmentgroupingLabel,de=void 0===ce?"other":ce,ue=t.d3PieSmallsegmentgroupingColor,he=void 0===ue?window.NETDATA.themes.current.d3pie.other:ue,pe=t.d3PieLabelsOuterFormat,fe=void 0===pe?"label-value1":pe,ge=t.d3PieLabelsOuterHidewhenlessthanpercentage,me=void 0===ge?null:ge,be=t.d3PieLabelsOuterPiedistance,ve=void 0===be?15:be,_e=t.d3PieLabelsInnerFormat,ye=void 0===_e?"percentage":_e,xe=t.d3PieLabelsInnerHidewhenlessthanpercentage,Oe=void 0===xe?2:xe,we=t.d3PieLabelsMainLabelColor,ke=void 0===we?window.NETDATA.themes.current.d3pie.mainlabel:we,Ee=t.d3PieLabelsMainLabelFont,Ce=void 0===Ee?"arial":Ee,Se=t.d3PieLabelsMainLabelFontsize,je=void 0===Se?10:Se,De=t.d3PieLabelsMainLabelFontweight,Ae=void 0===De?"normal":De,Te=t.d3PieLabelsPercentageColor,Me=void 0===Te?window.NETDATA.themes.current.d3pie.percentage:Te,Pe=t.d3PieLabelsPercentageFont,Le=void 0===Pe?"arial":Pe,Ie=t.d3PieLabelsPercentageFontsize,Re=void 0===Ie?10:Ie,Ne=t.d3PieLabelsPercentageFontweight,Fe=void 0===Ne?"bold":Ne,Be=t.d3PieLabelsValueColor,He=void 0===Be?window.NETDATA.themes.current.d3pie.value:Be,ze=t.d3PieLabelsValueFont,Ue=void 0===ze?"arial":ze,We=t.d3PieLabelsValueFontsize,Ge=void 0===We?10:We,Ve=t.d3PieLabelsValueFontweight,Ye=void 0===Ve?"bold":Ve,Xe=t.d3PieLabelsLinesEnabled,Ze=void 0===Xe||Xe,$e=t.d3PieLabelsLinesStyle,Ke=void 0===$e?"curved":$e,qe=t.d3PieLabelsLinesColor,Je=void 0===qe?"segment":qe,Qe=t.d3PieLabelsTruncationEnabled,et=void 0!==Qe&&Qe,tt=t.d3PieLabelsTruncationTruncatelength,nt=void 0===tt?30:tt,at=t.d3PieMiscColorsSegmentstroke,rt=void 0===at?window.NETDATA.themes.current.d3pie.segment_stroke:at,ot=t.d3PieMiscGradientEnabled,it=void 0!==ot&&ot,st=t.d3PieMiscColorsPercentage,lt=void 0===st?95:st,ct=t.d3PieMiscGradientColor,dt=void 0===ct?window.NETDATA.themes.current.d3pie.gradient_color:ct,ut=t.d3PieCssprefix,ht=void 0===ut?null:ut,pt=n.getBoundingClientRect(),ft=pt.width,gt=pt.height,mt={header:{title:{text:c,color:E,fontSize:S,fontWeight:D,font:T},subtitle:{text:u,color:P,fontSize:I,fontWeight:N,font:B},titleSubtitlePadding:1},footer:{text:v,color:z,fontSize:G,fontWeight:Y,font:Z,location:K},size:{canvasHeight:Math.floor(gt),canvasWidth:Math.floor(ft),pieInnerRadius:J,pieOuterRadius:ee},data:{sortOrder:ne,smallSegmentGrouping:{enabled:re,value:ie,valueType:le,label:de,color:he},content:a},labels:{outer:{format:fe,hideWhenLessThanPercentage:me,pieDistance:ve},inner:{format:ye,hideWhenLessThanPercentage:Oe},mainLabel:{color:ke,font:Ce,fontSize:je,fontWeight:Ae},percentage:{color:Me,font:Le,fontSize:Re,fontWeight:Fe,decimalPlaces:0},value:{color:He,font:Ue,fontSize:Ge,fontWeight:Ye},lines:{enabled:Ze,style:Ke,color:Je},truncation:{enabled:et,truncateLength:nt},formatter:function(e){return"value"===e.part?m.current(e.value):"percentage"===e.part?"".concat(e.label,"%"):e.label}},effects:{load:{effect:"none",speed:0},pullOutSegmentOnClick:{effect:"bounce",speed:400,size:5},highlightSegmentOnMouseover:!0,highlightLuminosity:-.2},tooltips:{enabled:!1,type:"placeholder",string:"",placeholderParser:null,styles:{fadeInSpeed:250,backgroundColor:window.NETDATA.themes.current.d3pie.tooltip_bg,backgroundOpacity:.5,color:window.NETDATA.themes.current.d3pie.tooltip_fg,borderRadius:2,font:"arial",fontSize:12,padding:4}},misc:{colors:{background:"transparent",segmentStroke:rt},gradient:{enabled:it,percentage:lt,color:dt},canvasPadding:{top:5,right:5,bottom:5,left:5},pieCenterOffset:{x:0,y:0},cssPrefix:ht},callbacks:{onload:null,onMouseoverSegment:null,onMouseoutSegment:null,onClickSegment:null}},bt=new lr.a(g.current,mt);x.current=mt,y((function(){return bt}))}}),[t,n,o,i,_,u,w,k,h,p,f]),Object(a.useEffect)((function(){if(_&&x.current){var e=ur({chartData:o,index:0,localeDateString:w,localeTimeString:k}),n=t.d3pieSubtitle,a=void 0===n?f:n,r=t.d3pieFooter,i=void 0===r?e:r,s=!!d&&-1===c,l=o.result.data.length-c-1,u=l<0||l>=o.result.data.length?0:l,p=Object(W.a)(o.result.labels).map((function(e,t){return{label:e,value:o.result.data[u][e],color:h[t]}})).filter((function(e){return null!==e.value&&e.value>0})),g=p.length>0&&!s?p:[dr];_.options.header.subtitle.text=a,_.options.footer.text=i,_.options.data.content=g,_.destroy(),_.recreate()}}),[t,o,_,c,d,w,k,h,f]),r.a.createElement("div",{ref:g,id:l,className:s})},pr=(n(462),function(e){var t=e.attributes,n=e.chartContainerElement,o=e.chartData,i=e.chartMetadata,s=e.chartElementClassName,l=e.chartElementId,c=e.orderedColors,d=Object(a.useRef)(null),u=Object(a.useState)(),h=Object(S.a)(u,2),p=h[0],f=h[1],m=Object(a.useRef)();return Object(a.useLayoutEffect)((function(){if(d.current&&!p){var e=window.$(d.current),a=n.getBoundingClientRect(),r=a.width,o=a.height,i=t.peityStrokeWidth,s=void 0===i?1:i,l={stroke:window.NETDATA.themes.current.foreground,strokeWidth:s,width:Math.floor(r),height:Math.floor(o),fill:window.NETDATA.themes.current.foreground};f((function(){return e})),m.current=l}}),[t,p,n]),Object(a.useLayoutEffect)((function(){if(p&&m.current){var e=Object(g.a)({},m.current,{stroke:c[0],fill:c[0]===m.current.stroke?m.current.fill:"line"===i.chart_type?window.NETDATA.themes.current.background:nr(c[0],window.NETDATA.chartDefaults.fill_luminance)});p.peity("line",e),m.current=e}}),[p,o,i,c]),r.a.createElement("div",{ref:d,id:l,className:s},o.result)}),fr=function(e){var t=e.attributes,n=e.chartData,o=e.chartMetadata,i=e.chartElementClassName,s=e.chartElementId,l=e.orderedColors,c=e.unitsCurrent,d=Object(a.useRef)(null),u=Object(a.useRef)(),h=Object(a.useState)(!1),p=Object(S.a)(h,2),f=p[0],g=p[1];(ir||(ir=new Promise((function(e,t){setTimeout((function(){var n=document.createElement("script");n.type="text/javascript",n.async=!0,n.src="https://www.google.com/jsapi",n.onerror=function(){t(Error("error loading google.js api"))},n.onload=function(){e("ok")};var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(n,a)}),1e3)})).then((function(){return new Promise((function(e){window.google.load("visualization","1.1",{packages:["corechart","controls"],callback:e})}))})))).then((function(){g(!0)}));var m=Object(a.useRef)();return Object(a.useLayoutEffect)((function(){if(u.current&&m.current){var e=new window.google.visualization.DataTable(n.result);u.current.draw(e,m.current)}}),[n]),Object(a.useLayoutEffect)((function(){if(d.current&&!m.current&&f){var e=new window.google.visualization.DataTable(n.result),a=t.title,r=void 0===a?o.title:a,i=o.chart_type,s=new Map([["area",window.NETDATA.options.current.color_fill_opacity_area],["stacked",window.NETDATA.options.current.color_fill_opacity_stacked]]).get(i)||.3,h={colors:l,lineWidth:"line"===i?2:1,title:r,fontSize:11,hAxis:{viewWindowMode:"maximized",slantedText:!1,format:"HH:mm:ss",textStyle:{fontSize:9},gridlines:{color:"#EEE"}},vAxis:{title:c,viewWindowMode:"area"===i||"stacked"===i?"maximized":"pretty",minValue:"stacked"===i?void 0:-.1,maxValue:"stacked"===i?void 0:.1,direction:1,textStyle:{fontSize:9},gridlines:{color:"#EEE"}},chartArea:{width:"65%",height:"80%"},focusTarget:"category",annotation:{1:{style:"line"}},pointsVisible:!1,titlePosition:"out",titleTextStyle:{fontSize:11},tooltip:{isHtml:!1,ignoreBounds:!0,textStyle:{fontSize:9}},curveType:"function",areaOpacity:s,isStacked:"stacked"===i},p=["area","stacked"].includes(o.chart_type)?new window.google.visualization.AreaChart(d.current):new window.google.visualization.LineChart(d.current);p.draw(e,h),m.current=h,u.current=p}}),[t,n.result,o,d,f,l,c]),r.a.createElement("div",{ref:d,id:s,className:i})},gr=function(e){var t=e.attributes,n=e.chartData,a=e.chartElementClassName,o=e.chartElementId,i=t.textOnlyDecimalPlaces,s=void 0===i?1:i,l=t.textOnlyPrefix,c=void 0===l?"":l,d=t.textOnlySuffix,u=void 0===d?"":d,h=Math.pow(10,s),p=Math.round(n.result[0]*h)/h,f=0===n.result.length?"":c+p+u;return r.a.createElement("div",{id:o,className:a},f)},mr=n(43),br=Math.round(16/9),vr=function(e){return Math.sqrt(e.length/br)},_r=function(e){return e*br},yr=function(e,t){return 11*Math.floor(t%e)},xr=function(e,t){return 11*Math.floor(t/e)},Or=function(e){var t=vr(e),n=_r(t);return 11*Math.ceil(n)},wr=function(e,t){var n=t.onMouseenter,a=t.onMouseout,r=e.getContext("2d"),o=-1,i=function(){},s={},l=function(){},c=function(){i(),l(),r.clearRect(0,0,e.width,e.height),r.beginPath()};return{clear:c,update:function(t){var d=t.data,u=function(e){var t=vr(e),n=_r(t);return{width:11*Math.ceil(n),height:11*Math.ceil(t)+11,columns:Math.ceil(n)}}(d),h=u.width,p=u.height,f=u.columns;e.width=h,e.height=p,c(),l();var g,m=(g=d,Object(or.scaleLinear)().domain(Object(or.extent)(g,(function(e){return e}))).range(["rgba(198, 227, 246, 0.9)","rgba(14, 154, 255, 0.9)"])),b=function(e,t){r.fillStyle=m(e),r.fillRect(yr(f,t),xr(f,t),10,10)};d.forEach(b),l=function(e,t,n,a){var r=a.onMouseenter,o=a.onMouseout,i=-1,s=function(n){var a=e.getBoundingClientRect(),r=yr(t,n),o=xr(t,n),i=a.left+r,s=a.top+o;return{index:n,left:i,top:s,right:i+10,bottom:s+10,width:10,height:10,offsetX:r,offsetY:o}},l=function(){o(s(i)),i=-1},c=function(e){var a=e.offsetX,o=e.offsetY,c=Math.floor(a/11),d=Math.floor(o/11)*t+c;d!==i&&(-1!==i&&l(),d>=n||(r(s(d)),i=d))};return e.addEventListener("mousemove",c),e.addEventListener("mouseout",l),function(){e.removeEventListener("mousemove",c),e.removeEventListener("mouseout",l)}}(e,f,d.length,{onMouseenter:n,onMouseout:a}),i=function(){-1!==o&&b(d[o],o)},s=function(e){i(),o=e;var t=yr(f,e),n=xr(f,e);r.lineWidth=1,r.strokeStyle="#fff",r.strokeRect(t+1,n+1,8,8)}},activateBox:function(e){return s(e)},deactivateBox:function(){return i()}}},kr=function(e){return e.getBoundingClientRect().top/window.innerHeight>.5?"top":"bottom"},Er={top:{bottom:"top"},bottom:{top:"bottom"}},Cr=function(e){var t=e.data,n=e.renderTooltip,o=Object(a.useRef)(),i=Object(a.useRef)(),s=Object(a.useRef)(),l=Object(a.useState)(null),c=Object(S.a)(l,2),d=c[0],u=c[1],h=Object(a.useRef)(!1),p=Object(a.useRef)(-1),f=Object(a.useRef)(),g=function(){s.current.deactivateBox(),u(null),h.current=!1,p.current=-1},m=function(){return requestAnimationFrame((function(){u((function(e){return h.current||-1!==p.current&&p.current===(null===e||void 0===e?void 0:e.index)||g(),e}))}))};Object(a.useLayoutEffect)((function(){return s.current=wr(i.current,{onMouseenter:function(e){var t=e.index,n=Object(mr.a)(e,["index"]);p.current=t,s.current.activateBox(t),f.current=setTimeout((function(){u({target:{getBoundingClientRect:function(){return n}},index:t,rect:n})}),600)},onMouseout:function(){p.current=-1,clearTimeout(f.current),m()}}),function(){return s.current.clear()}}),[]),Object(a.useLayoutEffect)((function(){d&&o.current&&o.current.labels[d.index]!==t.labels[d.index]&&g(),o.current=t,s.current.update(t)}),[t]);var b=Object(a.useCallback)((function(){h.current=!0}),[]),v=Object(a.useCallback)((function(){h.current=!1,m()}),[]),_=d&&kr(d.target);return r.a.createElement(a.Fragment,null,r.a.createElement("canvas",{"data-testid":"groupBox",ref:i}),d&&n&&r.a.createElement($.f,{align:Er[_],target:d.target,onMouseEnter:b,onMouseLeave:v},n(d.index,_)))},Sr=q.d.span.withConfig({displayName:"groupBoxes__Title",componentId:"sc-11qnspu-0"})(["white-space:nowrap;text-overflow:ellipsis;overflow-x:hidden;"]),jr=Object(q.d)($.h).attrs({as:$.s,gap:1}).withConfig({displayName:"groupBoxes__Label",componentId:"sc-11qnspu-1"})(["cursor:default;&:hover{font-weight:bold;}"]),Dr=function(e){var t=e.data,n=e.label,o=e.groupIndex,i=e.renderGroupPopover,s=e.renderBoxPopover,l=Object(a.useRef)(),c=l.current&&kr(l.current),d=Object(a.useMemo)((function(){return{maxWidth:"".concat(Or(t.data),"px")}}),[t]),u=s&&function(e,t){return s({group:n,groupIndex:o,align:t,index:e})},h=i&&function(){return i({group:n,groupIndex:o,align:c})};return r.a.createElement($.h,{"data-testid":"groupBoxWrapper",column:!0,alignItems:"start",gap:1,margin:[0,4,0,0]},r.a.createElement($.n,{content:h,align:c,plain:!0},(function(e){var a=e.isOpen,o=e.ref,i=Object(mr.a)(e,["isOpen","ref"]);return r.a.createElement(jr,Object.assign({"data-testid":"groupBoxWrapper-title",ref:function(e){l.current=e,o(e)},strong:a,style:d},i),r.a.createElement(Sr,null,n),t.data.length>3&&r.a.createElement("span",null,"(",t.data.length,")"))})),r.a.createElement(Cr,{data:t,renderTooltip:u}))},Ar=function(e){var t=e.data,n=e.labels,a=e.renderBoxPopover,o=e.renderGroupPopover;return r.a.createElement($.h,{"data-testid":"groupBoxes",flexWrap:!0,overflow:{vertical:"auto"},flex:!0},n.map((function(e,n){return t[n].data.length?r.a.createElement(Dr,{key:e,label:e,groupIndex:n,data:t[n],renderGroupPopover:o,renderBoxPopover:a}):null})))},Tr=Object(q.d)($.h).attrs({width:"120px",height:"12px",round:!0}).withConfig({displayName:"legend__LinearColorScaleBar",componentId:"sc-7zc5gz-0"})(["background:linear-gradient(to right,#c6e3f6,#0e9aff);"]),Mr=function(e){var t=e.children;return r.a.createElement($.h,{"data-testid":"groupBox-legend",gap:4,alignItems:"center"},r.a.createElement($.t,{strong:!0},t),r.a.createElement($.h,{gap:2,alignItems:"center"},r.a.createElement($.t,null,"0%"),r.a.createElement(Tr,null),r.a.createElement($.t,null,"100%")))},Pr={k8s_cluster_id:{icon:"cluster",title:"Cluster Id"},k8s_node_name:{icon:"nodes_hollow",title:"Node"},k8s_namespace:{icon:"cluster_spaces",title:"Namespace"},k8s_controller_kind:{icon:"controller_kind",title:"Controller Kind"},k8s_controller_name:{icon:"controller_name",title:"Controller Name"},k8s_pod_name:{icon:"pod",title:"Pod Name"},k8s_container_name:{icon:"container",title:"Container"}},Lr=Object.keys(Pr),Ir=function(e){return e in Pr?Pr[e]:{title:e.replace(/_./g,(function(e){return" ".concat(e[1].toUpperCase())})).replace(/^k8s /,""),icon:"node"}},Rr=function(){return r.a.createElement($.h,{height:"1px",width:"100%",background:["gray","shuttleGray"]})},Nr=function(e){return r.a.createElement($.j,Object.assign({color:["white","pure"],wordBreak:"break-all","data-testid":"k8sPopover-header"},e))},Fr=Object(q.d)($.a).attrs((function(e){return{flavour:"borderless",neutral:!0,themeType:"dark",className:"btn",disabled:e.active,"data-testid":"k8sPopoverChart-tab"}})).withConfig({displayName:"tabs__TabButton",componentId:"sc-18vk2nn-0"})(["&&&{height:initial;width:initial;padding:2px 20px;"," color:","}"],(function(e){var t=e.active,n=e.theme;return t&&"border-bottom: 3px solid ".concat(Object($.v)(["white","almost"])({theme:n}),";")}),(function(e){var t=e.active,n=e.theme;return Object($.v)(t?["white","almost"]:["gray","nepal"])({theme:n})})),Br=function(e){var t=e.value,n=e.onChange,a=Object(mr.a)(e,["value","onChange"]);return r.a.createElement($.h,Object.assign({"data-testid":"k8sPopoverChart-tabs"},a),r.a.createElement(Fr,{label:"Context",active:"context"===t,onClick:function(){return n("context")}}),r.a.createElement(Fr,{label:"Metrics",active:"metrics"===t,onClick:function(){return n("metrics")}}))},Hr=Object(q.d)(Object($.x)($.a)).attrs({icon:"chevron_right_s",label:"More",flavour:"borderless",neutral:!0,themeType:"dark",className:"btn",alignItems:"baseline",gap:1,direction:"rowReverse"}).withConfig({displayName:"section__ExpandButton",componentId:"z6mskd-0"})(["&&&{padding:0;margin:0;font-weight:normal;height:initial;width:initial;svg{height:6px;width:6px;position:initial;}}"]),zr=function(e){var t=e.title,n=e.onExpand,a=e.children,o=e.noBorder;return r.a.createElement($.h,{gap:3,padding:[0,0,3],border:!o&&{side:"bottom",color:["gray","shuttleGray"]},column:!0,"data-testid":"k8sPopoverSection"},r.a.createElement($.h,{justifyContent:"between","data-testid":"k8sPopoverSection-header"},r.a.createElement($.k,{color:["gray","aluminium"],wordBreak:"break-all"},t),n&&r.a.createElement(Hr,{onClick:n})),r.a.createElement($.h,{gap:4,column:!0,"data-testid":"k8sPopoverSection-content"},a))},Ur=n(335),Wr=n(601),Gr=["180px","90px"],Vr=function(e,t,n){var a,r;"string"===typeof e.width?a=e.width:"number"===typeof e.width&&(a="".concat(e.width.toString(),"px")),void 0===t.aspectRatio&&("string"===typeof e.height?r=e.height:"number"===typeof e.height&&(r="".concat(e.height.toString(),"px")));var o="bottom"===e.legendPosition,i=e.heightId?function(e,t){var n=localStorage.getItem("".concat(ga.a).concat(e));if(n)return Number.isNaN(Number(n))?null:"".concat(t?Number(n)+Vn.a:n,"px");var a=localStorage.getItem("".concat(ga.b).concat(e));return a?Gr.includes(a)?null:a:null}(e.heightId,o):null;if(i&&(r=i.replace(/"/g,"")),n){var s=o?.5*window.innerHeight:.4*window.innerHeight;r="".concat(s,"px")}var l=window.NETDATA.chartDefaults.min_width;return{height:r,width:a,minWidth:null===l?void 0:l}},Yr={root:null,rootMargin:"0px",threshold:void 0},Xr=function(){var e=[],t=new IntersectionObserver((function(t){t.forEach((function(t){var n,a=t.isIntersecting,r=t.target,o=null===(n=e.find((function(e){return e.element===r})))||void 0===n?void 0:n.callback;o&&o(a)}))}),Yr);return{subscribe:function(n,a){t.observe(n),e=e.concat({element:n,callback:a})},unsubscribe:function(t){e=e.filter((function(e){return e.element!==t}))}}}(),Zr=function(e){var t=e.attributes;return r.a.createElement("span",{style:{position:"absolute",opacity:0,width:0}},t.id)},$r=localStorage.getItem("wipe-chart-state"),Kr=function(e){var t,n=e.attributes,o=e.chartUuid,i=e.children,s=e.portalNode,l=Object(gn.a)();Object(a.useEffect)((function(){return function(){l(Object(_e.a)({id:o}))}}),[]);var c=Sn[n.chartLibrary],d=Object(a.useState)(!1),u=Object(S.a)(d,2),h=u[0],p=u[1],f=(null===(t=Object(gn.b)(de.d))||void 0===t?void 0:t.chartId)===n.id;Object(a.useLayoutEffect)((function(){if(!h){var e=f&&"dygraph"===n.chartLibrary&&c.hasLegend(n),t=Vr(n,c,e);Object(Wr.a)((function(e,t){e&&s.style.setProperty(t,e)}),t),s.className=c.containerClass(n),p(!0)}}),[n,c,h,f,s,p]);var g=Object(gn.b)(de.j),m=Object(a.useRef)(),b=function(e,t){var n=Object(a.useState)(!1),r=Object(S.a)(n,2),o=r[0],i=r[1],s=Object(a.useRef)(o);return Object(a.useEffect)((function(){return"function"===typeof IntersectionObserver&&Xr.subscribe(e,(function(e){s.current!==e&&(t.current&&(t.current.style.visibility=e?"visible":"hidden"),s.current=e,i(e))})),function(){Xr.unsubscribe(e)}}),[t,e]),o}(s,m),v=Object(gn.b)(de.s)?750:100,_=Object(a.useState)(!b),y=Object(S.a)(_,2),x=y[0],O=y[1];Object(wn.a)((function(){O(!b)}),v,[b]);var w=!b||x,k=Object(a.useRef)(b);if(m.current&&k.current!==b&&(k.current=b),Object(a.useEffect)((function(){!ve&&w&&$r&&l(Object(_e.a)({id:o}))}),[o,l,w]),ve)return i;if(w){if(g)return r.a.createElement(Zr,{attributes:n});if(!m.current){var E=Array.from(s.children).map((function(e){return function(e){var t=e.cloneNode(!0),n=t.querySelectorAll("canvas");return e.querySelectorAll("canvas").forEach((function(e,t){var a=n[t],r=a.getContext("2d");a.width=e.width,a.height=e.height,r&&r.drawImage(e,0,0)})),t}(e)})),C=document.createElement("div");C.style.visibility="hidden",E.forEach((function(e){C.appendChild(e)})),m.current=C}return r.a.createElement(r.a.Fragment,null,r.a.createElement(Zr,{attributes:n}),r.a.createElement("div",{ref:function(e){e&&m.current&&e.appendChild(m.current)}}))}return!g&&m.current&&(m.current=void 0),i},qr=function(e){var t=e.attributes,n=e.chartMetadata,a=e.chartUuid,o=e.dropdownMenu,i=e.portalNode,s=e.renderCustomElementForDygraph,l=e.onAttributesChange,c=e.uuid;return r.a.createElement(Kr,{attributes:t,portalNode:i,chartUuid:a},r.a.createElement(Bo,{attributes:t,chartUuid:a,renderCustomElementForDygraph:s,onAttributesChange:l,dropdownMenu:o,externalChartMetadata:n,portalNode:i,uuid:c}))},Jr=null,Qr={sparklines_registry:{},os:"unknown",menu:{},submenu:{},context:{},sparkline:function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",r=arguments.length>4?arguments[4]:void 0;if(null===Jr||"undefined"===typeof Jr.charts)return"";if("undefined"===typeof Jr.charts[t])return"";if("undefined"===typeof Jr.charts[t].dimensions)return"";if("undefined"===typeof Jr.charts[t].dimensions[n])return"";var o="".concat(t,".").concat(n);return"undefined"===typeof this.sparklines_registry[o]?this.sparklines_registry[o]={count:1}:this.sparklines_registry[o].count+=1,o="".concat(o,".").concat(this.sparklines_registry[o].count),"".concat(e,'<div class="netdata-container" data-netdata="').concat(t,'" data-after="-120"\n data-width="25%" data-height="15px" data-chart-library="dygraph"\n data-dygraph-theme="sparkline" data-dimensions="').concat(n,'"\n data-show-value-of-').concat(n,'-at="').concat(o,'"></div>\n (<span id="').concat(o,'" style="display: inline-block; min-width: 50px; text-align: right;">\n X</span>').concat(a,")").concat(r)},gaugeChart:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";return"".concat('<div class="netdata-container" data-netdata="CHART_UNIQUE_ID" data-dimensions="').concat(n,'"')+' data-chart-library="gauge" data-gauge-adjust="width"'+' data-title="'.concat(e,'"')+' data-width="'.concat(t,'"')+' data-before="0" data-after="-CHART_DURATION" data-points="CHART_DURATION"'+' data-colors="'.concat(a,'"')+' role="application"></div>'},anyAttribute:function(e,t,n,a){if("undefined"!==typeof e[n]){var r=e[n][t];return"undefined"===typeof r?a:"function"===typeof r?r(Qr.os):r}return a},menuTitle:function(e){if(e.sectionTitle)return e.sectionTitle;if("undefined"!==typeof e.menu_pattern){var t=e.type||e.id.split(".")[0];return"".concat(this.anyAttribute(this.menu,"title",e.menu_pattern,e.menu_pattern).toString()," ").concat(t.slice(-(t.length-e.menu_pattern.length-1)).toString()).replace(/_/g," ")}return this.anyAttribute(this.menu,"title",e.menu,e.menu).toString().replace(/_/g," ")},menuIcon:function(e){return"undefined"!==typeof e.menu_pattern?this.anyAttribute(this.menu,"icon",e.menu_pattern,'<i class="fas fa-puzzle-piece"></i>').toString():this.anyAttribute(this.menu,"icon",e.menu,'<i class="fas fa-puzzle-piece"></i>')},menuInfo:function(e){return"undefined"!==typeof e.menu_pattern?this.anyAttribute(this.menu,"info",e.menu_pattern,null):this.anyAttribute(this.menu,"info",e.menu,null)},menuHeight:function(e){return"undefined"!==typeof e.menu_pattern?this.anyAttribute(this.menu,"height",e.menu_pattern,1):this.anyAttribute(this.menu,"height",e.menu,1)},submenuTitle:function(e,t){var n="".concat(e,".").concat(t),a=this.anyAttribute(this.submenu,"title",n,t).toString().replace(/_/g," ");if(a.length>28){var r=a.substring(0,13),o=a.substring(a.length-12,a.length);return"".concat(r,"...").concat(o)}return a},submenuInfo:function(e,t){var n="".concat(e,".").concat(t);return this.anyAttribute(this.submenu,"info",n,null)},submenuHeight:function(e,t,n){var a="".concat(e,".").concat(t);return this.anyAttribute(this.submenu,"height",a,1)*n},contextInfo:function(e){var t=this.anyAttribute(this.context,"info",e,null);return null!==t?'<div class="shorten dashboard-context-info"\n role="document">'.concat(t,"</div>"):""},contextValueRange:function(e){if("undefined"!==typeof this.context[e]&&"undefined"!==typeof this.context[e].valueRange)try{return JSON.parse(this.context[e].valueRange)}catch(t){return[null,null]}return[null,null]},contextHeight:function(e,t){return"undefined"!==typeof this.context[e]&&"undefined"!==typeof this.context[e].height?t*this.context[e].height:t},contextDecimalDigits:function(e,t){return"undefined"!==typeof this.context[e]&&"undefined"!==typeof this.context[e].decimalDigits?this.context[e].decimalDigits:t}};window.netdataDashboard=Qr;var eo=Object(q.d)($.p).withConfig({displayName:"chartOverview__Title",componentId:"sc-1ga681p-0"})(["text-overflow:ellipsis;max-width:120px;overflow-x:hidden;"]),to={avg:"Average",sum:"Sum",min:"Min",max:"Max"},no=Object(a.memo)((function(e){var t,n=e.id,a=e.units,o=e.aggrMethod,i=e.displayedIndex,s=Object(gn.b)((function(e){return Object(Tn.f)(e,{id:n})})),l="number"===typeof i?s.result[i]:s.view_latest_values[0],c=Gn({attributes:{},data:s,units:a,unitsCommon:null,unitsDesired:null,uuid:n}),d=c.legendFormatValue,u=c.unitsCurrent,h=function(e){return"".concat(to[e])||""}(o);return r.a.createElement($.p,{wordBreak:"keep-all",color:["white","pure"],margin:[0,0,0,"auto"],"data-testid":"k8sPopoverChart-chartValue"},h&&r.a.createElement($.p,{margin:[0,1,0,0],color:["gray","nepal"],"data-testid":"k8sPopoverChart-chartValue-aggr"},h),d(l),"percentage"===(t=u)?"%":" ".concat(t.replace(/milliseconds/,"ms")))})),ao=function(e){var t=e.id,n=Object(mr.a)(e,["id"]),a=Object(gn.b)((function(e){return Object(Tn.f)(e,{id:t})}));return a&&0!==a.result.length?r.a.createElement(no,Object.assign({id:t},n)):null},ro=Object(a.memo)((function(e){var t=e.id,n=e.chartMetadata,a=e.aggrMethod,o=e.displayedIndex,i=n.units,s=n.context.replace(/cgroup\./,""),l=Qr.menuIcon(n);return r.a.createElement($.h,{gap:2,"data-testid":"k8sPopoverChart-overview"},r.a.createElement($.p,{color:["white","pure"],dangerouslySetInnerHTML:{__html:l}}),r.a.createElement(eo,{color:["white","pure"],"data-testid":"k8sPopoverChart-title"},s),r.a.createElement(ao,{id:t,units:i,aggrMethod:a,displayedIndex:o}))})),oo=Object(a.memo)((function(e){var t=e.groupLabel,n=e.postGroupLabel,o=e.id,i=e.attributes,s=e.relatedIndex,l=Object(a.useContext)(q.a),c=Object(a.useRef)(),u=Object(a.useState)(),h=Object(S.a)(u,2),p=h[0],f=h[1],m=Object(a.useMemo)((function(){return Object(Ur.a)(400,f)}),[]),b=Object(a.useState)(),v=Object(S.a)(b,2)[1];Object(a.useLayoutEffect)((function(){v(!0)}),[]);var _=i.relatedCharts[s],y=_.chartMetadata,x=_.attributes,O=Object(a.useMemo)((function(){return{id:y.id,width:"100%",height:"60px",chartLibrary:"sparkline",sparklineLineWidth:"2px",sparklineLineColor:Object($.v)("border")({theme:l}),sparklineFillColor:Object($.v)("disabled")({theme:l}),sparklineSpotRadius:0,sparklineDisableTooltips:!0,sparklineOnHover:function(e){return m(null===e||void 0===e?void 0:e.x)},httpMethod:"POST",host:i.host,nodeIDs:i.nodeIDs,dimensions:x.dimensions,aggrMethod:x.aggrMethod,labels:Object(g.a)(Object(d.a)({k8s_cluster_id:[y.chartLabels.k8s_cluster_id[0]]},i.groupBy,[t]),n&&Object(d.a)({},i.postGroupBy,[n]))}}),[y,i]);return r.a.createElement($.h,{gap:2,column:!0,"data-testid":"k8sPopoverChart"},r.a.createElement("div",{ref:c,style:{height:"60px",width:"100%"},"data-testid":"k8sPopoverChart-container"},c.current&&r.a.createElement(qr,{chartUuid:o,attributes:O,chartMetadata:y,portalNode:c.current})),r.a.createElement(ro,{id:o,aggrMethod:O.aggrMethod,chartMetadata:y,displayedIndex:p}))})),io=Object(q.d)($.l).attrs({margin:[0,0,0,"auto"],color:["white","pure"],width:"10px",height:"10px",alignSelf:"center",name:"nav_arrow_goto",role:"button",title:"Go to node","data-testid":"k8sPopoverItem-externalButton"}).withConfig({displayName:"item__ExternalButton",componentId:"sc-351vj-0"})(["cursor:pointer;"]),so=function(e){var t=e.icon,n=e.title,a=e.secondary,o=e.onClick;return r.a.createElement($.h,{gap:1,alignItems:"start","data-testid":"k8sPopoverItem"},r.a.createElement($.h,{width:"22px",height:"22px","data-testid":"k8sPopoverItem-icon"},r.a.createElement($.l,{name:t,color:["white","pure"],margin:[0,1,0,0],width:"22px",height:"22px"})),r.a.createElement($.p,{color:["white","pure"],"data-testid":"k8sPopoverItem-title"},n),a&&r.a.createElement($.p,{color:"border",wordBreak:"break-all","data-testid":"k8sPopoverItem-detail"},a),o&&r.a.createElement(io,{onClick:o}))},lo=function(e){var t=e.date,n=e.title,a=Object(fn.b)(),o=a.localeDateString,i=a.localeTimeString;return r.a.createElement(so,{icon:"around_clock",title:n,secondary:"".concat(o(t)," | ").concat(i(t))})},co=function(e){var t=e.before,n=e.after;return r.a.createElement(zr,{title:"Time"},r.a.createElement(lo,{title:"From",date:n}),r.a.createElement(lo,{title:"To",date:t}))},uo=function(e){var t=e.groupLabel,n=e.postGroupLabel,a=e.attributes,o=e.viewAfter,i=e.viewBefore;return r.a.createElement($.h,{gap:3,column:!0,width:"100%","data-testid":"k8sPopoverMetrics"},r.a.createElement(co,{after:o,before:i}),r.a.createElement(zr,{title:"Metrics",noBorder:!0},r.a.createElement($.h,{gap:3,column:!0,"data-testid":"k8sPopoverMetrics-container"},a.relatedCharts.map((function(e,o){var i=e.chartMetadata;return r.a.createElement(oo,{key:i.id,id:[t,n,a.id,i.id].join("|"),attributes:a,relatedIndex:o,groupLabel:t,postGroupLabel:n})})))))},ho=function(e){var t=e.labelId,n=e.items,a=e.onExpand,o=e.onItemClick,i=Object(mr.a)(e,["labelId","items","onExpand","onItemClick"]),s=Ir(t),l=s.title,c=s.icon,d=n.slice(0,3),u=n.length>3,h=u?"".concat(l," (").concat(n.length,")"):l;return r.a.createElement(zr,Object.assign({title:h,onExpand:u&&a},i),d.map((function(e){return r.a.createElement(so,{key:e,icon:c,title:e,onClick:o&&function(){return o(e)}})})))},po=Object(a.memo)((function(e){var t=e.chartLabels,n=e.onExpand,a=e.onNodeClick,o=function(e){e=Object(g.a)({},e);var t=Lr.reduce((function(t,n){return n in e?(delete e[n],[].concat(Object(C.a)(t),[n])):t}),[]);return[].concat(Object(C.a)(t),Object(C.a)(Object.keys(e)))}(t);return r.a.createElement($.h,{gap:3,column:!0,width:"100%","data-testid":"k8sPopoverContext"},o.map((function(e,i){return r.a.createElement(ho,{key:e,labelId:e,items:t[e],onExpand:function(){return n(e)},noBorder:i===o.length-1,onItemClick:"k8s_node_name"===e&&a})})))})),fo=Object(q.d)(Object($.x)($.a)).attrs({flavour:"borderless",neutral:!0,themeType:"dark",className:"btn",alignItems:"start",gap:1}).withConfig({displayName:"list__StyledButton",componentId:"sc-11aix5x-0"})(["&&&{padding:0;margin:0;height:initial;width:initial;svg{height:18px;width:18px;position:initial;}}"]),go=function(e){var t=e.labelId,n=e.items,a=e.onBack,o=e.onItemClick,i=Ir(t),s=i.title,l=i.icon;return r.a.createElement($.h,{height:"100%",gap:3,"data-testid":"k8sPopoverList",column:!0},r.a.createElement(Nr,null,r.a.createElement(fo,{label:"".concat(s," (").concat(n.length,")"),icon:"chevron_left",onClick:a,"data-testid":"k8sPopoverList-back"})),r.a.createElement(Rr,null),r.a.createElement($.h,{gap:3,overflow:{vertical:"auto",horizontal:"hidden"},column:!0,"data-testid":"k8sPopoverList-container"},n.map((function(e){return r.a.createElement(so,{key:e,icon:l,title:e,onClick:o&&function(){return o(e)}})}))))},mo=function(e){return r.a.createElement($.g,Object.assign({background:["transparent","popover"],padding:[2,4],width:"322px",height:"422px"},e))},bo=function(e){var t=e.label,n=e.value,a=e.onChange,o=e.children;return r.a.createElement($.h,{height:"100%",column:!0},r.a.createElement(Nr,null,t),r.a.createElement(Br,{value:n,onChange:a,margin:[4,0,0,0]}),r.a.createElement(Rr,null),r.a.createElement($.h,{gap:3,overflow:{vertical:"auto",horizontal:"hidden"},margin:[4,0,0,0]},o))},vo=function(e){var t=e.title,n=e.groupLabel,o=e.postGroupLabel,i=e.chartLabels,s=e.attributes,l=e.viewBefore,c=e.viewAfter,d=Object(mr.a)(e,["title","groupLabel","postGroupLabel","chartLabels","attributes","viewBefore","viewAfter"]),u=Object(a.useState)("context"),h=Object(S.a)(u,2),p=h[0],f=h[1],g="context"!==p&&"metrics"!==p,m=s.onNodeClick;return r.a.createElement(mo,Object.assign({"data-testid":"k8sPopover"},d),g&&r.a.createElement(go,{labelId:p,items:i[p],attributes:s,onBack:function(){return f("context")},onItemClick:"k8s_node_name"===p&&m}),!g&&r.a.createElement(bo,{label:t,value:p,onChange:f},"context"===p&&r.a.createElement(po,{chartLabels:i,onExpand:f,onNodeClick:m}),"metrics"===p&&r.a.createElement(uo,{groupLabel:n,postGroupLabel:o,attributes:s,viewAfter:c,viewBefore:l})))},_o=function(e){var t=e.chartData,n=e.chartMetadata,o=e.attributes,i=e.viewAfter,s=e.viewBefore,l=e.hoveredRow,c=e.hoveredX,u=e.showUndefined,h=o.filteredRows,p=Object(a.useMemo)((function(){return function(e,t){var n=e.keys,a=e.labels,r=e.groupBy,o=e.postGroupBy,i=e.aggrGroups,s=e.postAggregated,l=n[r],c=n[o],u=(t||Object(C.a)(Array(l.length)).map((function(e,t){return t}))).reduce((function(e,t){var n=l[t];n in e||(e[n]={labels:[],indexes:[],chartLabels:[],postAggregated:[]});var r=e[n];r.indexes.push(t),r.labels.push(c[t]),r.postAggregated.push(s[t]);var o=i.reduce((function(e,n){return a[n][t]?Object(g.a)({},e,Object(d.a)({},n,a[n][t])):e}),{});return r.chartLabels.push(o),e}),{}),h=Object.keys(u).sort((function(e,t){return u[t].indexes.length-u[e].indexes.length})),p=h.map((function(e){return u[e]})),f=p.map((function(e){return i.reduce((function(t,n){var a=new Set(e.chartLabels.reduce((function(e,t){return t[n]?[].concat(Object(C.a)(e),Object(C.a)(t[n])):e}),[]));return 0===a.size?t:Object(g.a)({},t,Object(d.a)({},n,Array.from(a)))}),{})}));return{labels:h,data:p,chartLabels:f}}(t,h)}),[h,t]),f=p.data,m=p.labels,b=p.chartLabels,v=t.id,_=t.result.data,y=t.groupBy,x=t.postGroupBy,O=Object(a.useMemo)((function(){return f.map((function(e){return{labels:e.labels,data:-1===l||l>_.length||!(l in _)?e.postAggregated:e.indexes.map((function(e){return _[l][e+1]}))||[]}}))}),[_,f,l]);return r.a.createElement($.h,{column:!0,width:"100%",height:"100%",gap:4,padding:[4,2]},r.a.createElement(Ar,{data:O,labels:m,renderBoxPopover:function(e){var t=e.groupIndex,n=e.index,a=e.align,l=f[t].labels[n],c=Ir(x).title;return r.a.createElement(vo,{align:a,title:"".concat(c,": ").concat(l),groupLabel:m[t],postGroupLabel:l,chartLabels:f[t].chartLabels[n],attributes:o,viewBefore:s,viewAfter:i})},renderGroupPopover:function(e){var t=e.groupIndex,n=e.align,a=m[t],l=Ir(y).title;return r.a.createElement(vo,{align:n,title:"".concat(l,": ").concat(a),groupLabel:a,chartLabels:b[t],attributes:o,viewBefore:s,viewAfter:i})}}),r.a.createElement($.h,{"data-testid":"legend-container",justifyContent:"between"},r.a.createElement(Mr,null,v),r.a.createElement(da,{chartMetadata:n,showUndefined:u,hoveredX:c,viewBefore:s,chartData:t})))},yo=function(e){var t=e.attributes,n=e.chartContainerElement,o=e.chartData,i=e.chartMetadata,s=e.chartLibrary,l=e.colors,c=e.chartUuid,d=e.chartHeight,u=e.chartWidth,h=e.dimensionsVisibility,p=e.hasEmptyData,f=e.isRemotelyControlled,g=e.legendFormatValue,m=e.orderedColors,b=e.hoveredRow,v=e.hoveredX,_=e.onUpdateChartPanAndZoom,y=e.immediatelyDispatchPanAndZoom,x=e.setHoveredX,O=e.setMinMax,w=e.showLatestOnBlur,k=e.unitsCurrent,E=e.viewAfterForCurrentData,C=e.viewBeforeForCurrentData,S=Object(gn.a)(),j=Object(gn.b)(de.G),D=Object(a.useCallback)((function(e){var t=e.after,n=e.before,a=e.masterID;S(Object(Ze.q)({after:t,before:n,masterID:a})),S(j?Object(Ze.r)({after:E,before:C}):Object(_e.h)({after:E,before:C,id:c}))}),[c,S,j,E,C]),A=Sn[s],T=A.hasLegend,M=T(t)?En()("netdata-chart-with-legend-".concat(t.legendPosition||"right"),"netdata-".concat(s,"-chart-with-legend-right")):En()("netdata-chart","netdata-".concat(s,"-chart")),P="".concat(s,"-").concat(c,"-chart"),L=-1===b&&!w;return function(e){var t=e.attributes,n=e.chartData,r=e.chartSettings,o=e.hoveredRow,i=e.legendFormatValue,s=e.showUndefined,l=Object(a.useRef)([]);Object(ba.a)((function(){var e=t.showValueOf;if(e&&!Object(ma.a)(e)){var a=n.dimension_names,r=n.dimension_ids;a.forEach((function(t,n){var a=e["show-value-of-".concat(t.toLowerCase())]||e["show-value-of-".concat(r[n].toLowerCase(),"-at")];l.current=l.current.concat(document.getElementById(a))}))}})),Object(a.useEffect)((function(){if(l.current.length){var e=r.options(t),a=e.includes("flip");if("json"===n.format&&!e.includes("objectrows")){var c=n.result.data,d=-1===o?c.length-1:o,u=c[a?d:c.length-d-1];n.dimension_names.forEach((function(e,t){var n=s||!u?"":i(u[t+1]),a=l.current[t];a&&(a.innerText="".concat(n))}))}}}),[t,n,r,o,i,s])}({attributes:t,chartData:o,chartSettings:A,hoveredRow:b,legendFormatValue:g,showUndefined:L}),"easypiechart"===s?r.a.createElement(Za,{attributes:t,chartData:o,chartMetadata:i,chartElementClassName:M,chartElementId:P,chartLibrary:s,chartWidth:u,colors:l,chartUuid:c,dimensionsVisibility:h,isRemotelyControlled:f,key:u,legendFormatValue:g,orderedColors:m,hoveredRow:b,onUpdateChartPanAndZoom:_,setGlobalChartUnderlay:D,setMinMax:O,showUndefined:L,unitsCurrent:k,viewAfter:E,viewBefore:C}):"gauge"===s?r.a.createElement(qa,{attributes:t,chartData:o,chartMetadata:i,chartElementClassName:M,chartElementId:P,chartLibrary:s,chartHeight:d,chartWidth:u,colors:l,chartUuid:c,dimensionsVisibility:h,isRemotelyControlled:f,legendFormatValue:g,orderedColors:m,hoveredRow:b,hoveredX:v,onUpdateChartPanAndZoom:_,setGlobalChartUnderlay:D,setHoveredX:x,setMinMax:O,showUndefined:L,unitsCurrent:k,viewAfter:E,viewBefore:C}):"sparkline"===s?r.a.createElement(rr,{attributes:t,chartContainerElement:n,chartData:o,chartMetadata:i,chartElementClassName:M,chartElementId:P,dimensionsVisibility:h,isRemotelyControlled:f,orderedColors:m,unitsCurrent:k,viewAfterForCurrentData:E,viewBeforeForCurrentData:C}):"d3pie"===s?r.a.createElement(hr,{attributes:t,chartContainerElement:n,chartData:o,chartMetadata:i,chartElementClassName:M,chartElementId:P,dimensionsVisibility:h,hoveredRow:b,hoveredX:v,isRemotelyControlled:f,legendFormatValue:g,orderedColors:m,setMinMax:O,showUndefined:L,unitsCurrent:k}):"peity"===s?r.a.createElement(pr,{attributes:t,chartContainerElement:n,chartData:o,chartMetadata:i,chartElementClassName:M,chartElementId:P,orderedColors:m}):"google"===s?r.a.createElement(fr,{attributes:t,chartData:o,chartMetadata:i,chartElementClassName:M,chartElementId:P,orderedColors:m,unitsCurrent:k}):"textonly"===s?r.a.createElement(gr,{attributes:t,chartData:o,chartElementClassName:M,chartElementId:P}):"groupbox"===s?r.a.createElement(_o,{chartData:o,chartMetadata:i,attributes:t,viewAfter:E,viewBefore:C,hoveredRow:b,hoveredX:v,showUndefined:L}):r.a.createElement(Ga,{attributes:t,chartData:o,chartMetadata:i,chartElementClassName:M,chartElementId:P,chartLibrary:s,colors:l,chartUuid:c,dimensionsVisibility:h,hasEmptyData:p,hasLegend:T(t),isRemotelyControlled:f,orderedColors:m,immediatelyDispatchPanAndZoom:y,hoveredRow:b,hoveredX:v,onUpdateChartPanAndZoom:_,setGlobalChartUnderlay:D,setHoveredX:x,setMinMax:O,unitsCurrent:k,viewAfter:E,viewBefore:C})},xo=Object(a.memo)((function(e){var t=e.attributes,n=e.attributes.chartLibrary,o=e.chartContainerElement,i=e.chartData,s=e.chartMetadata,l=e.chartHeight,c=e.chartUuid,d=e.chartWidth,u=e.defaultAfter,h=e.globalPanAndZoom,p=e.hasEmptyData,f=e.isRemotelyControlled,g=e.viewRangeForCurrentData,m=e.viewRange,b=e.selectedDimensions,v=e.setSelectedDimensions,_=e.showLatestOnBlur,y=Object(a.useContext)(q.a),x=Object(gn.b)(de.L),O=Sn[n].hasLegend,w=t.units,k=void 0===w?s.units:w,E=t.unitsCommon,C=t.unitsDesired,j=void 0===C?x:C,D=Object(a.useMemo)((function(){return i.dimension_names.map((function(e){return 0===b.length||b.includes(e)}))}),[i.dimension_names,b]),A=O(t)&&window.NETDATA.options.current.legend_toolbox,T=A&&window.NETDATA.options.current.resize_charts&&!t.hideResizeHandler,M=Object(gn.a)(),P=Object(a.useMemo)((function(){var e=Object.values(s.dimensions).map((function(e){return e.name})),t=i.dimension_names.filter((function(t){return!e.includes(t)}));return e.concat(t)}),[i.dimension_names,s.dimensions]);Object(a.useEffect)((function(){M(Object(Ze.h)({chartContext:s.context,chartUuid:c,colorsAttribute:t.colors,commonColorsAttribute:t.commonColors,dimensionNames:P}))}),[P,t.colors,t.commonColors,s.context,c,M]);var L=Gn({attributes:t,data:i,units:k,unitsCommon:E,unitsDesired:j,uuid:c}),I=L.legendFormatValue,R=L.legendFormatValueDecimalsFromMinMax,N=L.unitsCurrent,F=Object(a.useState)(null),B=Object(S.a)(F,2),H=B[0],z=B[1],U=Object(gn.b)(de.H),W=Object(a.useCallback)((function(e,t){if(U){var n=t?{chartUuid:null,hoveredX:e}:{chartUuid:c,hoveredX:e};M(Object(Ze.s)(n))}else z(e)}),[c,M,U]),G=Object(gn.b)(de.n),V=U?G:H,Y=Object(Ve.e)(m[0])?m[0]:i.after*Ve.a,X=Object(Ve.e)(m[1])?m[1]:i.before*Ve.a,Z=Object(Ve.e)(g[0])?g[0]:i.after*Ve.a,$=Object(Ve.e)(g[1])?g[1]:i.before*Ve.a,K=i.first_entry*Ve.a,J=i.last_entry*Ve.a,Q=Object(a.useMemo)((function(){return Math.round(d/30*s.update_every*Ve.a)}),[s.update_every,d]),ee=Object(gn.b)(de.G),te=Object(In.a)((function(e){M(Object(Ze.r)(e))}),400),ne=Object(a.useCallback)((function(){te.flush()}),[te]),ae=Object(a.useCallback)((function(e){var t=e.after,n=e.before,a=e.callback,r=e.shouldFlushImmediately,o=void 0!==r&&r,s=e.shouldForceTimeRange,l=e.shouldNotExceedAvailableRange;if(!(n<t)){var d=Q,u=Math.round(X-Y),h=Math.round(t),p=Math.round(n),f=i.view_update_every*Ve.a;if(l){var g=K+f,m=J+f;p>m&&(h-=n-m,p=m),h<g&&(h=g)}var b=(p+=f-p%f)-(h-=h%f);u-f<d&&(d=u-f);var v=!0;if(b<u&&b<d){var _=((d=Q)-b)/2;b=(p+=_)-(h-=_),v=!1}var y=2*f,x=Math.abs(p-X);Math.abs(u-b)<=y&&x<=y&&v||(ee?(te.callback({after:h,before:p,masterID:c,shouldForceTimeRange:s}),o&&te.flush()):M(Object(_e.h)({after:h,before:p,id:c,shouldForceTimeRange:s})),v&&"function"===typeof a&&a(h,p))}}),[i.view_update_every,c,M,Q,ee,K,J,te,Y,X]),re=Object(a.useCallback)((function(e,t){var n=Math.max(e,K),a=Math.min(t,J);ae({after:n,before:a,shouldForceTimeRange:!0,shouldFlushImmediately:!0})}),[ae,K,J]),oe=Object(a.useCallback)((function(e){var t=(X-Y)*Rn(e),n=Y-t;n>=K&&re(n,X-t)}),[re,K,Y,X]),ie=Object(a.useCallback)((function(e){var t=X-Y,n=t*Rn(e),a=Math.min(X+n,J);re(a-t,a)}),[re,J,Y,X]),se=Object(a.useCallback)((function(e){var t=.8*Rn(e);if(h)if(X-Y>1.2*(J-K))re(K,J);else{var n=(X-Y)*t/2;re(Y+n,X-n)}else M(Object(Ze.p)({after:Math.round(u/(t+1))}))}),[u,M,h,re,K,J,Y,X]),le=Object(a.useCallback)((function(e){var t=.8*Rn(e);if(h){var n=((X-Y)/(1-.8*t)-(X-Y))/2;re(Y-n,X+n)}else M(Object(Ze.p)({after:Math.round(u*(t+1))}))}),[u,M,h,re,Y,X]),ce=Object(a.useCallback)((function(){M(ee?h?Object(Ze.j)():Object(Ze.i)():Object(_e.g)({id:c}))}),[c,M,h,ee]),ue=Object(a.useMemo)((function(){return Object(de.a)({chartContext:s.context,chartUuid:c,colorsAttribute:t.colors,commonColorsAttribute:t.commonColors})}),[t.colors,t.commonColors,s,c]),he=Object(gn.b)(ue),pe=Object(a.useMemo)((function(){return i.dimension_names.map(Object(Ke.a)(Ln.a,he))}),[i,he]);if(!he)return r.a.createElement("span",null);var fe=V&&V>=Y&&V<=X,ge=i.view_update_every*Ve.a,me=fe?Math.floor((V-i.after*Ve.a)/ge):-1,be="bottom"===t.legendPosition,ve=r.a.createElement(fa,{onToolboxLeftClick:oe,onToolboxResetClick:ce,onToolboxRightClick:ie,onToolboxZoomInClick:se,onToolboxZoomOutClick:le}),ye=T&&r.a.createElement(ga.c,{chartContainerElement:o,chartUuid:c,heightId:t.heightId,isLegendOnBottom:be});return r.a.createElement(r.a.Fragment,null,r.a.createElement(yo,{key:y.name,attributes:t,chartContainerElement:o,chartData:i,chartMetadata:s,chartLibrary:n,colors:he,chartUuid:c,chartHeight:l,chartWidth:d,dimensionsVisibility:D,hasEmptyData:p,onUpdateChartPanAndZoom:ae,immediatelyDispatchPanAndZoom:ne,isRemotelyControlled:f,legendFormatValue:I,orderedColors:pe,hoveredX:V,hoveredRow:me,setHoveredX:W,setMinMax:function(e){var t=Object(S.a)(e,2),n=t[0],a=t[1];return R(n,a)},showLatestOnBlur:_,unitsCurrent:N,viewAfterForCurrentData:Z,viewBeforeForCurrentData:$}),O(t)&&r.a.createElement(ha,{attributes:t,chartUuid:c,chartMetadata:s,chartLibrary:n,colors:he,hoveredX:V,hoveredRow:me,legendFormatValue:I,selectedDimensions:b,setSelectedDimensions:v,showLatestOnBlur:_,unitsCurrent:N,viewBefore:X,legendToolbox:ve,resizeHandler:ye}),A&&!be&&ve,!be&&ye)})),Oo=n(613),wo=n(606),ko=n(193),Eo=["gray","limedSpruce"],Co=q.d.div.withConfig({displayName:"styled__DropdownItem",componentId:"sc-1pvwpze-0"})(["display:flex;flex-direction:start;align-items:center;color:",";white-space:nowrap;& > svg use{fill:",";}"],Object($.v)(Eo),Object($.v)(Eo)),So=q.d.span.withConfig({displayName:"styled__DropdownItemLabel",componentId:"sc-1pvwpze-1"})(["margin-left:12px;"]),jo=Object(q.d)($.l).withConfig({displayName:"styled__DotsBtn",componentId:"sc-1pvwpze-2"})(["width:6px;height:10px;cursor:pointer;& use{fill:",";&:hover{fill:",";}}"],Object($.v)(Eo),Object($.v)(["gray","silverSand"])),Do=function(e){var t=e.attributes,n=e.chartID,o=e.chartMetadata,i=e.dropdownMenu,s=Object(a.useState)(!1),l=Object(S.a)(s,2),c=l[0],d=l[1],u=function(){d(!1)};return r.a.createElement(r.a.Fragment,null,r.a.createElement(jo,{name:"dots_2x3",onClick:function(){d(!0)}}),r.a.createElement(ko.b,null,r.a.createElement(ko.a,{open:c,onClose:u},r.a.createElement(Oo.a,null,i.map((function(e){var a=e.icon,i=e.label,s=e.onClick;return r.a.createElement(wo.b,{key:i,text:r.a.createElement(Co,null,a,r.a.createElement(So,null,i)),onClick:function(){s({attributes:t,chartMetadata:o,chartID:n}),u()}})}))))))},Ao=Object(q.e)(["0%{opacity:.1;}50%{opacity:.5;}100%{opacity:.1;}"]),To=q.d.div.withConfig({displayName:"styled__SpinnerContainer",componentId:"sc-1foc7xt-0"})(["position:absolute;top:","px;right:","px;display:flex;"],Object(Ke.a)("top"),Object(Ke.a)("right")),Mo=q.d.div.withConfig({displayName:"styled__Circle",componentId:"sc-1foc7xt-1"})(["width:","px;height:","px;background:",";border-radius:50%;animation:1s linear infinite both ",";"],Object(Ke.a)("size"),Object(Ke.a)("size"),Object($.v)("border"),Ao),Po=Object(q.d)(Mo).withConfig({displayName:"styled__Circle2",componentId:"sc-1foc7xt-2"})(["animation-delay:.3s;margin-left:","px;"],Object(Ke.a)("spaceBetween")),Lo=Object(q.d)(Mo).withConfig({displayName:"styled__Circle3",componentId:"sc-1foc7xt-3"})(["animation-delay:.6s;margin-left:","px;"],Object(Ke.a)("spaceBetween")),Io=function(e){var t=e.chartLibrary,n="dygraph"===t?33:0,a="dygraph"===t?8:0,o="dygraph"===t?10:7,i="dygraph"===t?4:2;return r.a.createElement(To,{top:n,right:a},r.a.createElement(Mo,{size:o}),r.a.createElement(Po,{size:o,spaceBetween:i}),r.a.createElement(Lo,{size:o,spaceBetween:i}))},Ro=q.d.div.withConfig({displayName:"styled__ChartDropdownContainer",componentId:"sc-177ahzb-0"})(["position:absolute;top:0;left:40px;width:20px;height:20px;z-index:",";"],10),No=(n(465),{"sum-of-abs":"sum"}),Fo=[],Bo=function(e){var t,n,o,i,s,l=e.attributes,c=e.chartUuid,d=e.uuid,u=e.dropdownMenu,h=e.externalChartMetadata,p=e.portalNode,g=e.renderCustomElementForDygraph,m=e.onAttributesChange,b=l.host,v=void 0===b?T.b:b,_=l.id,y=l.nodeIDs,x=Object(gn.a)(),O=Object(a.useMemo)(Tn.a,[]),w=Object(gn.b)((function(e){return O(e,{chartId:_,id:c})})),k=w.chartMetadata,E=w.isFetchingDetails,j=h||k;Object(a.useEffect)((function(){k||E||h||x(_e.b.request({chart:_,id:c,host:v,nodeIDs:y}))}),[_,c,x,v,E,k,h,y,d]);var A=Object(gn.b)(de.m),M=Object(gn.b)((function(e){return Object(Tn.i)(e,{id:c})})),P=M||A,L=!!A&&A.masterID===c||Boolean(M),I=(null===P||void 0===P?void 0:P.shouldForceTimeRange)||!1,R=!P||!L||I,N=Object(gn.b)((function(e){return Object(Tn.g)(e,{id:c})})),F=Object(gn.b)((function(e){return Object(Tn.j)(e,{id:c})})),B=Object(gn.b)((function(e){return Object(Tn.f)(e,{id:c})})),H=Object(gn.b)((function(e){return Object(Tn.h)(e,{id:c})})),z=Object(gn.b)(de.n),U=Object(bn.a)([[Object(vn.a)(!!B),function(){return 1e3*B.view_update_every}],[Object(vn.a)(!!j),function(){return 1e3*j.update_every}],[_n.a,Object(vn.a)(f.a)]])(),W=function(e){var t=e.areCriteriaMet,n=e.preferedIntervalTime,r=Object(gn.b)(de.r),o=Object(gn.b)(de.F),i=!(!r&&o),s=Object(a.useState)(!0),l=Object(S.a)(s,2),c=l[0],d=l[1],u=Object(a.useState)(!1),h=Object(S.a)(u,2),p=h[0],f=h[1];Object(a.useEffect)((function(){p&&i&&(f(!1),d(!0))}),[p,f,i]);var g=!i&&p||ve?An:n;return Object(Dn.a)((function(){if(t){if(!i)return void f(!0);d(!0)}}),g),[c,d]}({areCriteriaMet:!P&&!z,preferedIntervalTime:U}),G=Object(S.a)(W,2),V=G[0],Y=G[1],X=Object(yn.a)(P,f.b);Object(a.useEffect)((function(){Y(!0)}),[X,Y]);var Z=Object(gn.b)(de.i);Object(xn.a)((function(){Y(!0)}),[l.after,l.before,Z,l.dimensions,l.aggrMethod,l.groupBy]);var $=l.before,K=void 0===$?window.NETDATA.chartDefaults.before:$,q=l.after||Z,J=Sn[l.chartLibrary],Q=J.hasLegend,ee=p.getBoundingClientRect(),te=ee.width-(Q(l)?140:0),ne=ee.height,ae=Boolean(Object(gn.b)(de.C)),re=Object(gn.b)(de.y)||ae,oe=Object(gn.b)(de.v),ie=D.a.CancelToken,se=Object(a.useMemo)((function(){return ie.source()}),[]);Object(On.a)((function(){se.cancel("Chart scrolled out of view")}));var le=Object(a.useState)(!1),ce=Object(S.a)(le,2),ue=ce[0],he=ce[1],pe=ue&&H;Object(wn.a)((function(){H&&he(!0)}),2e3,[H]),Object(a.useEffect)((function(){!H&&ue&&he(!1)}),[H,ue]),Object(a.useEffect)((function(){if(V&&j&&!H){var e,t,n,a=window.NETDATA.options.force_data_points,r=1;if(P)if(L){if(n=[e=Math.round(P.after/1e3),t=Math.round(P.before/1e3)],oe){var o=Math.round((t-e)/2);e-=o,t+=o,r=2}}else e=Math.round(P.after/1e3),t=Math.round(P.before/1e3),r=1;else t=K,e=q,r=1;n=(n||[e,t]).map((function(e){return 1e3*e}));var i=l.points||Math.round(te/function(e){var t=e.attributes,n=e.chartSettings,a=t.pixelsPerPoint;if("number"===typeof a)return a;var r=n.pixelsPerPoint(t);return Math.max.apply(Math,Object(C.a)([r,window.NETDATA.options.current.pixels_per_point].filter((function(e){return"number"===typeof e}))))}({attributes:l,chartSettings:J})),s=a||i*r,d=l.forceTimeWindow||Boolean(Z)?function(e){var t=e.after,n=e.before,a=e.firstEntry,r=e.points,o=Math.round((new Date).valueOf()/1e3),i=t>0?t:o+t,s=n>0?n:o+n;if(i<a){var l=s-i,c=s-Math.max(i,a);return Math.round(r*c/l)}return null}({after:e,before:t,firstEntry:j.first_entry,points:s}):null,u=l.method||window.NETDATA.chartDefaults.method;Y(!1),x(_e.c.request({host:v,context:j.context,chart:j.id,format:J.format,points:d||s,group:u,gtime:l.gtime||0,options:jn(l,re),after:e||null,before:t||null,dimensions:l.dimensions,labels:l.labels,postGroupBy:l.postGroupBy,postAggregationMethod:l.postAggregationMethod,aggrMethod:l.aggrMethod,aggrGroups:l.aggrGroups,dimensionsAggrMethod:No[l.dimensionsAggrMethod]||l.dimensionsAggrMethod,nodeIDs:y,httpMethod:l.httpMethod,groupBy:l.groupBy,fetchDataParams:{fillMissingPoints:d?s-d:void 0,isRemotelyControlled:R,viewRange:n},id:c,cancelTokenSource:se}))}}),[l,j,J,c,te,Z,x,Q,v,K,H,L,R,q,P,p,Y,re,oe,V,se,y,d]),Object(gn.b)(de.E);var fe=null===l||void 0===l?void 0:l.selectedDimensions,ge=Object(a.useState)(fe||Fo),me=Object(S.a)(ge,2),be=me[0],ye=me[1];Object(a.useLayoutEffect)((function(){fe&&ye(fe)}),[fe]),Object(a.useLayoutEffect)((function(){ye(fe||Fo)}),[null===l||void 0===l?void 0:l.groupBy]);var xe=Object(a.useMemo)((function(){return g&&g({onAttributesChange:m,attributes:l,chartMetadata:j,chartData:B,chartID:_})}),[m,g,l,_,j,B]),Oe=0===(null===(t=B)||void 0===t?void 0:null===(n=t.result)||void 0===n?void 0:null===(o=n.data)||void 0===o?void 0:o.length)||0===(null===(i=B)||void 0===i?void 0:null===(s=i.result)||void 0===s?void 0:s.length);return B&&j?r.a.createElement(r.a.Fragment,null,Oe&&r.a.createElement(Pn,{key:"".concat(Oe),hasEmptyData:Oe,containerNode:p}),r.a.createElement(xo,{attributes:l,chartContainerElement:p,chartData:B,chartMetadata:j,chartUuid:c,chartHeight:ne,chartWidth:te,defaultAfter:Z,globalPanAndZoom:A,hasEmptyData:Oe,isRemotelyControlled:N.isRemotelyControlled,viewRangeForCurrentData:N.viewRange,viewRange:F,selectedDimensions:be,setSelectedDimensions:ye,showLatestOnBlur:!P}),pe&&r.a.createElement(Io,{chartLibrary:l.chartLibrary}),u&&u.length>0&&r.a.createElement(Ro,null,r.a.createElement(Do,{dropdownMenu:u,chartID:_,attributes:l,chartMetadata:j})),xe):r.a.createElement(r.a.Fragment,null,r.a.createElement(Pn,{key:"".concat(Oe),hasEmptyData:Oe,containerNode:p}),pe&&r.a.createElement(Io,{chartLibrary:l.chartLibrary}))},Ho=n(561),zo=function(e){return e[x.a]},Uo=Object(Xn.a)(zo,Object(Ke.a)("isSnapshotMode")),Wo=Object(Xn.a)(zo,Object(Ho.a)(["snapshotCharts","snapshotDataPoints"])),Go=function(e){var t=e.attributes,n=e.chartUuid,r=t.host||T.b,o=Object(gn.b)(Wo).snapshotDataPoints,i=t.method||window.NETDATA.chartDefaults.method,s=t.chartLibrary,l=Sn[s],c=Object(gn.b)(de.m),d=c.after/Ve.a,u=c.before/Ve.a,h=Object(gn.a)();return Object(a.useEffect)((function(){h(_e.e.request({host:r,context:t.id,chart:t.id,format:l.format,points:o,group:i,gtime:t.gtime||0,options:jn(t,!0),after:d||null,before:u||null,dimensions:t.dimensions,aggrMethod:t.aggrMethod,nodeIDs:t.nodeIDs,chartLibrary:s,id:n,groupBy:t.groupBy}))})),null},Vo=function(e){var t=e.attributes,n=e.chartUuid;return Object(gn.b)(Uo)?r.a.createElement(Go,{attributes:t,chartUuid:n}):null},Yo=Object(a.memo)((function(){var e=Array.from(document.querySelectorAll("[data-netdata]"));return r.a.createElement(r.a.Fragment,null,e.map((function(e,t){var n=Object(mn.b)(e),a="".concat(n.id,"-").concat(t);return Object(o.createPortal)(r.a.createElement(r.a.Fragment,null,r.a.createElement(Kr,{attributes:n,chartUuid:a,portalNode:e},r.a.createElement(Bo,{attributes:n,chartUuid:a,portalNode:e})),r.a.createElement(Vo,{attributes:n,chartUuid:a})),e)})))})),Xo=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2?arguments[2]:void 0,r=Object(a.useState)(!1),o=Object(S.a)(r,2),i=o[0],s=o[1],l=Object(a.useState)(!1),c=Object(S.a)(l,2),d=c[0],u=c[1],h=Object(a.useState)(null),p=Object(S.a)(h,2),f=p[0],g=p[1];return Object(a.useEffect)((function(){if(t&&e){var a=n?{headers:null,withCredentials:!1}:{};s(!0),A.get(e,a).then((function(e){e.data&&(g(e.data),u(!1),s(!1))})).catch((function(t){console.warn("error fetching ".concat(e),t),u(!0),s(!1)}))}}),[n,t,e]),[f,i,d]},Zo=document.getElementById("modal-root"),$o=function(e){var t=e.children,n=Object(a.useRef)(document.createElement("div"));return Object(a.useEffect)((function(){return Zo.appendChild(n.current),function(){Zo.removeChild(n.current)}}),[]),Object(o.createPortal)(t,n.current)},Ko=(n(466),function(){var e=Object(a.useRef)(null);Object(a.useEffect)((function(){e.current&&window.$(e.current).modal("show")}));var t=Object(gn.b)(Tn.b),n=Object(gn.b)(Tn.c),o=Object(gn.b)(Tn.k),i=0===t?0:n/t*100;Object(a.useEffect)((function(){100===i&&setTimeout((function(){window.$(e.current).modal("hide"),window.print(),window.close()}),1e3)}),[i]);var s=o&&"".concat(Math.round(i),"%, ").concat(o);return r.a.createElement($o,null,r.a.createElement("div",{ref:e,className:"modal fade",id:"printModal",tabIndex:-1,role:"dialog","aria-labelledby":"printModalLabel","data-keyboard":"false","data-backdrop":"static"},r.a.createElement("div",{className:"modal-dialog modal-lg",role:"document"},r.a.createElement("div",{className:"modal-content"},r.a.createElement("div",{className:"modal-header"},r.a.createElement("button",{type:"button",className:En()("close",{"print-modal__close-button--disabled":!0}),"data-dismiss":"modal","aria-label":"Close"},r.a.createElement("span",{"aria-hidden":"true"},"\xd7")),r.a.createElement("h4",{className:"modal-title",id:"printModalLabel"},"Preparing dashboard for printing...")),r.a.createElement("div",{className:"modal-body"},"Please wait while we initialize and render all the charts on the dashboard.",r.a.createElement("div",{className:"progress progress-striped active",style:{height:"2em"}},r.a.createElement("div",{id:"printModalProgressBar",className:"progress-bar progress-bar-info",role:"progressbar","aria-valuenow":i,"aria-valuemin":0,"aria-valuemax":100,style:{minWidth:"2em",width:"".concat(i,"%")}},r.a.createElement("span",{id:"printModalProgressBarText",style:{paddingLeft:10,paddingTop:4,fontSize:"1.2em",textAlign:"left",width:"100%",position:"absolute",display:"block",color:"black"}},s))),"The print dialog will appear as soon as we finish rendering the page."),r.a.createElement("div",{className:"modal-footer"})))))}),qo=q.d.div.withConfig({displayName:"styled__SocialMediaContainer",componentId:"sc-3gu94j-0"})(["width:185px;padding:",";background:",";font-size:12px;margin-bottom:",";"],Object($.w)(2),Object($.v)("borderSecondary"),Object($.w)(3)),Jo=q.d.div.withConfig({displayName:"styled__FirstRow",componentId:"sc-3gu94j-1"})(["display:flex;justify-content:space-between;"]),Qo=q.d.div.withConfig({displayName:"styled__GithubCopy",componentId:"sc-3gu94j-2"})([""]),ei=q.d.div.withConfig({displayName:"styled__GithubCopyLine",componentId:"sc-3gu94j-3"})([""]),ti=q.d.a.withConfig({displayName:"styled__SocialMediaLink",componentId:"sc-3gu94j-4"})(["&,&:hover{color:",";}"],Object($.v)("main")),ni=Object(q.d)(ti).withConfig({displayName:"styled__GithubStarQuestion",componentId:"sc-3gu94j-5"})([""]),ai=Object(q.d)(ti).withConfig({displayName:"styled__GithubIcon",componentId:"sc-3gu94j-6"})(["font-size:24px;"]),ri=Object(q.d)(ti).withConfig({displayName:"styled__TwitterIcon",componentId:"sc-3gu94j-7"})(["font-size:17px;"]),oi=Object(q.d)(ti).withConfig({displayName:"styled__FacebookIcon",componentId:"sc-3gu94j-8"})(["font-size:23px;"]),ii=q.d.div.withConfig({displayName:"styled__Separator",componentId:"sc-3gu94j-9"})(["margin-top:",";border-top:1px solid ",";"],Object($.w)(2),Object($.v)("separator")),si=q.d.div.withConfig({displayName:"styled__SecondRow",componentId:"sc-3gu94j-10"})(["margin-top:",";display:flex;align-items:center;justify-content:space-between;"],Object($.w)(2)),li=q.d.span.withConfig({displayName:"styled__SecondRowText",componentId:"sc-3gu94j-11"})(["font-size:10px;"]),ci=function(){return r.a.createElement(qo,null,r.a.createElement(Jo,null,r.a.createElement(Qo,null,r.a.createElement(ei,null,"Do you like Netdata?"),r.a.createElement(ni,{href:"https://github.com/netdata/netdata/",target:"_blank"},"Give us a star!")),r.a.createElement(ai,{href:"https://github.com/netdata/netdata/",target:"_blank"},r.a.createElement("i",{className:"fab fa-github"}))),r.a.createElement(ii,null),r.a.createElement(si,null,r.a.createElement(li,null,"And share the word!"),r.a.createElement(ri,{href:"https://twitter.com/linuxnetdata/",target:"_blank"},r.a.createElement("i",{className:"fab fa-twitter"})),r.a.createElement(oi,{href:"https://www.facebook.com/linuxnetdata/",target:"_blank"},r.a.createElement("i",{className:"fab fa-facebook"}))))},di=function(e){var t=e.children,n=Object(a.useRef)(document.querySelector("#sidebar-end-portal-container"));return Object(o.createPortal)(t,n.current)},ui=(n(467),Object(q.d)((function(e){var t=e.className,n=Object(mr.a)(e,["className"]);return r.a.createElement("div",{className:t},r.a.createElement(K.a,Object.assign({},n,{closeButton:!1})))})).withConfig({displayName:"notifications-container__NotificationsContainer",componentId:"n0kffi-0"})([".Toastify__toast-container{position:fixed;width:unset;min-width:400px;max-width:500px;",";color:",";}.Toastify__toast{padding:0;padding-top:5px;}.Toastify__toast--error{background:",";border:1px solid ",";}.Toastify__toast--warning{}.Toastify__toast--success{background:",";border:1px solid ",";}.Toastify__toast-body{}.Toastify__progress-bar{bottom:unset;top:0;}.Toastify__progress-bar--success{background-color:",";}.Toastify__progress-bar--error{background-color:",";}"],"z-index: 50;",Object($.v)("text"),Object($.v)(["red","roseWhite"]),Object($.v)("error"),Object($.v)(["green","clearDay"]),Object($.v)("success"),Object($.v)("success"),Object($.v)("error"))),hi=function(e){var t=e.icon,n=e.children,a=e.hasBorder;return r.a.createElement($.h,{gap:2,border:a&&{side:"right",color:"separator"},alignItems:"center",padding:[0,3,0,0],height:"100%"},!!t&&r.a.createElement($.l,{name:t,color:"bright",height:"15px"}),n)},pi=function(e){var t=e.global.snapshot,n=e.global.chartsMetadata.data;return t||n?t?t.hostname:n.hostname:""},fi=function(){var e=Object(gn.b)(pi);return r.a.createElement(hi,{icon:"node_hollow"},r.a.createElement($.p,{color:"bright",strong:!0,truncate:!0},e))},gi=function(){return r.a.createElement($.h,{gap:2},r.a.createElement($.a,{flavour:"borderless",neutral:!0,themeType:"dark","data-toggle":"modal","data-target":"#loadSnapshotModal",icon:"download",title:"Import a snapshot"}),r.a.createElement($.a,{flavour:"borderless",neutral:!0,themeType:"dark","data-toggle":"modal","data-target":"#saveSnapshotModal",icon:"upload",title:"Export a snapshot"}),r.a.createElement($.a,{flavour:"borderless",neutral:!0,themeType:"dark","data-toggle":"modal","data-target":"#printPreflightModal",icon:"print",title:"Print dashboard"}))},mi=function(e){var t,n=e.currentVersion,a="stable"===e.releaseChannel,o=Xo("https://api.github.com/repos/netdata/netdata/releases/latest",a,!0),i=Object(S.a)(o,1)[0],s=Xo("https://www.googleapis.com/storage/v1/b/netdata-nightlies/o/latest-version.txt",!a),l=Object(S.a)(s,1)[0],c=Xo(null===l||void 0===l?void 0:l.mediaLink,Boolean(l)),d=Object(S.a)(c,1)[0],u=a?null===(t=i)||void 0===t?void 0:t.tag_name.replace(/(\r\n|\n|\r| |\t)/gm,""):d?function(e){return e.replace(/(\r\n|\n|\r| |\t)/gm,"")}(d):null;if(!u)return null;var h=!function(e,t){if(e===t)return!0;var n=e.split("."),a=t.split("."),r=parseInt(n[0].substring(1,2),10),o=parseInt(a[0].substring(1,2),10);return!(r<o)&&(r>o||!((r=parseInt(n[1],10))<(o=parseInt(a[1],10)))&&(r>o||(n=n[2].split("-"),a=a[2].split("-"),!((r=parseInt(n[0],10))<(o=parseInt(a[0],10)))&&(r>o||!((r=n.length>1?parseInt(n[1],10):0)<(o=a.length>1?parseInt(a[1],10):0))))))}(n,u);return r.a.createElement($.a,{flavour:"borderless",themeType:"dark",small:!0,neutral:!h,warning:h,name:h?"update_pending":"update",title:h?"Need help?":"Check Version",icon:h?"update_pending":"update","data-toggle":"modal","data-target":"#updateModal"})},bi=function(e){var t=e.global.chartsMetadata.data;return t?{version:t.version,releaseChannel:t.release_channel}:null},vi=function(){var e=Object(gn.b)(bi);return e&&r.a.createElement(mi,{currentVersion:e.version,releaseChannel:e.releaseChannel})},_i=(n(468),n(500),n(337)),yi=n(23),xi=n.n(yi),Oi=n(221),wi=n(608),ki=q.d.div.withConfig({displayName:"styled__RootContainer",componentId:"sc-3kwar1-0"})(["width:100%;height:100%;display:flex;flex-flow:row nowrap;align-items:center;"]),Ei=(Object(q.d)(wi.a).withConfig({displayName:"styled__StyledMenu",componentId:"sc-3kwar1-1"})([""]),q.d.div.withConfig({displayName:"styled__DropdownContainer",componentId:"sc-3kwar1-2"})(["cursor:pointer;color:",";.mdc-menu-surface{border-radius:0;.mdc-list{padding:0;}.mdc-list-item{padding:0 "," 0 ",";font-size:14px;height:",";}}"],Object($.v)("bright"),Object($.w)(5),Object($.w)(5),Object($.w)(6))),Ci=q.d.div.withConfig({displayName:"styled__ListContainer",componentId:"sc-3kwar1-3"})(["padding:"," 0;"],Object($.w)(3)),Si=Object(q.d)($.l).withConfig({displayName:"styled__OpenerIcon",componentId:"sc-3kwar1-4"})(["flex-shrink:0;flex-grow:0;margin-left:",";fill:",";width:10px;height:5px;"],(function(e){return e.noMargin?"unset":"16px"}),Object($.v)("bright")),ji=n(339),Di={white:{background:$.d.colors.mainBackground,surface:$.d.colors.mainBackground,primary:$.d.colors.primary,secondary:$.d.colors.accent,error:$.d.colors.error,onPrimary:$.d.colors.bright,onSecondary:$.d.colors.bright,onSurface:$.d.colors.text,onError:$.d.colors.bright,dupaDupa:"#ff00ff",textPrimaryOnBackground:$.d.colors.text,textSecondaryOnBackground:$.d.colors.textFocus,textHintOnBackground:$.d.colors.text,textDisabledOnBackground:$.d.colors.disabled,textIconOnBackground:$.d.colors.text,textPrimaryOnLight:$.c.colors.text,textSecondaryOnLight:$.c.colors.textFocus,textHintOnLight:$.c.colors.text,textDisabledOnLight:$.c.colors.disabled,textIconOnLight:$.c.colors.text,textPrimaryOnDark:$.d.colors.text,textSecondaryOnDark:$.d.colors.textFocus,textHintOnDark:$.d.colors.text,textDisabledOnDark:$.d.colors.disabled,textIconOnDark:$.d.colors.text},slate:{background:$.c.colors.mainBackground,surface:$.c.colors.mainBackground,primary:$.c.colors.primary,secondary:$.c.colors.accent,error:$.c.colors.error,onPrimary:$.c.colors.bright,onSecondary:$.c.colors.bright,onSurface:$.c.colors.text,onError:$.c.colors.bright,textPrimaryOnBackground:$.c.colors.text,textSecondaryOnBackground:$.c.colors.textFocus,textHintOnBackground:$.c.colors.text,textDisabledOnBackground:$.c.colors.disabled,textIconOnBackground:$.c.colors.text,textPrimaryOnLight:$.d.colors.text,textSecondaryOnLight:$.d.colors.textFocus,textHintOnLight:$.d.colors.text,textDisabledOnLight:$.d.colors.disabled,textIconOnLight:$.d.colors.text,textPrimaryOnDark:$.c.colors.text,textSecondaryOnDark:$.c.colors.textFocus,textHintOnDark:$.c.colors.text,textDisabledOnDark:$.c.colors.disabled,textIconOnDark:$.c.colors.text}},Ai=function(e){var t=e.children,n=Object(gn.b)(de.J);return r.a.createElement(ji.a,{options:Di[n]},t)};function Ti(){var e=Object(Oi.a)(["\n width: 88px;\n height: 32px;\n padding-top: 8px;\n padding-bottom: 8px;\n padding-left: 8px;\n padding-right: 7px;\n border: 1px solid ",";\n box-sizing: border-box;\n border-radius: 4px;\n display: flex;\n justify-content: center;\n align-items: center;\n color: ",";\n .mdc-menu-surface--anchor {\n .mdc-menu-surface--open {\n margin-left: -16px;\n margin-top: ",";\n width: ",";\n background: ",";\n ","\n }\n }\n"]);return Ti=function(){return e},e}function Mi(){var e=Object(Oi.a)(["\n width: ",";\n height: ",";\n overflow: visible;\n top: ",";\n ","\n"]);return Mi=function(){return e},e}var Pi=Object(q.d)($.o).attrs((function(){return{Wrapper:Ai}}))(Mi(),Object($.w)(83),Object($.w)(51),Object($.w)(7),"z-index: 35;"),Li=q.d.div.withConfig({displayName:"styled__PickerBox",componentId:"sc-1yj3701-0"})(["display:flex;position:relative;min-width:",";min-height:",";flex-direction:column;align-items:flex-end;background-color:",";color:",";z-index:",";"],Object($.w)(83),Object($.w)(43),Object($.v)("mainBackground"),Object($.v)("text"),60),Ii=q.d.svg.withConfig({displayName:"styled__HeaderSvg",componentId:"sc-1yj3701-1"})(["fill:",";height:14px;width:14px;"],Object($.v)("text")),Ri=q.d.div.withConfig({displayName:"styled__IconSpacer",componentId:"sc-1yj3701-2"})(["display:flex;align-items:center;justify-content:center;padding-right:",";"],Object($.w)()),Ni=q.d.div.withConfig({displayName:"styled__PickerActionArea",componentId:"sc-1yj3701-3"})(["display:flex;flex-direction:column;width:100%;height:100%;justify-content:flex-end;"]),Fi=q.d.div.withConfig({displayName:"styled__PickerBtnArea",componentId:"sc-1yj3701-4"})(["bottom:0;display:flex;align-items:center;justify-content:center;padding:",";width:100%;"],Object($.w)(2)),Bi=q.d.div.withConfig({displayName:"styled__ShortPickHeader",componentId:"sc-1yj3701-5"})(["display:flex;justify-content:flex-start;align-items:center;width:100%;height:",";padding:",";color:",";font-weight:700;line-height:156px;height:24px;margin-top:",";margin-bottom:",";margin-left:",";"],Object($.w)(2),Object($.w)(2),Object($.v)("text"),Object($.w)(),Object($.w)(),Object($.w)(2)),Hi=q.d.div.withConfig({displayName:"styled__ShortPick",componentId:"sc-1yj3701-6"})(["display:flex;height:100%;flex-direction:column;justify-content:center;align-items:flex-start;"]),zi=q.d.div.withConfig({displayName:"styled__ShortPickElement",componentId:"sc-1yj3701-7"})(["display:flex;justify-content:flex-start;align-items:center;color:",";margin-left:",";margin-top:",";width:187px;height:",";padding:",";cursor:pointer;&:hover{color:",";}"],(function(e){var t=e.isSelected,n=e.theme;return Object($.v)(t?"primary":"text")({theme:n})}),Object($.w)(2),Object($.w)(2),Object($.w)(2),Object($.w)(2),Object($.v)("primary")),Ui=q.d.div.withConfig({displayName:"styled__AccessorBox",componentId:"sc-1yj3701-8"})(["width:100%;display:flex;justify-content:start;color:",";align-items:center;height:40px;padding:0 10px;box-sizing:border-box;white-space:nowrap;font-size:12px;cursor:pointer;"],Object($.v)("text")),Wi=q.d.div.withConfig({displayName:"styled__DropdownBox",componentId:"sc-1yj3701-9"})(["position:absolute;left:32px;display:flex;flex-direction:row;align-items:center;justify-content:flex-start;padding:0px;position:absolute;height:32px;"]),Gi=Object(q.d)((function(e){var t=e.title,n=e.children,a=e.className,o=e.renderTitle,i=e.isOpen,s=void 0!==i&&i,l=e.onMenuToggle,c=e.anchorCorner,d=void 0===c?"bottomStart":c,u=e.renderOpener;return r.a.createElement(Ei,{className:a},r.a.createElement(ko.b,null,r.a.createElement(ko.a,{open:s,onClose:function(){l(!1)},anchorCorner:d},r.a.createElement(Ci,null,r.a.createElement(Oo.a,null,n))),r.a.createElement(ki,{onClick:function(){l(!s)}},t||o&&o(),u?u():r.a.createElement(Si,{name:"triangle_down",noMargin:Boolean(o)}))))}))(Ti(),Object($.v)("border"),Object($.v)("text"),Object($.w)(2),Object($.w)(35),Object($.v)("mainBackground"),"z-index: 45;"),Vi=q.d.div.withConfig({displayName:"styled__TypeViewBox",componentId:"sc-1yj3701-10"})(["width:100%;display:flex;flex-direction:row nowrap;align-items:center;"]),Yi=Object(q.d)($.l).withConfig({displayName:"styled__DropdownIcon",componentId:"sc-1yj3701-11"})(["fill:",";width:12px;height:12px;"],Object($.v)("text")),Xi=Object(q.d)($.p).withConfig({displayName:"styled__TextBox",componentId:"sc-1yj3701-12"})(["flex:1;padding-right:15px;"]),Zi=q.d.div.withConfig({displayName:"styled__LastText",componentId:"sc-1yj3701-13"})(["font-weight:700;font-size:14px;line-height:14px;"]),$i=q.d.input.withConfig({displayName:"styled__CustomInput",componentId:"sc-1yj3701-14"})(["border:1px solid ",";background:",";box-sizing:border-box;border-radius:4px;padding:4px;width:32px;height:32px;margin-left:10px;margin-right:10px;outline:none;color:inherit;&:focus{border:1px solid ",";}"],Object($.v)("border"),Object($.v)("mainBackground"),Object($.v)("primary")),Ki=n(2),qi=n.n(Ki),Ji=n(3),Qi=n.n(Ji),es=new qi.a({id:"header-clock",use:"header-clock-usage",viewBox:"0 0 14 14",content:'<symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="header-clock"><path d="M7 1.667c-3.307 0-6 2.693-6 6a5.98 5.98 0 001.26 3.666L1.167 12.56a.665.665 0 00.493 1.107.652.652 0 00.5-.227l1.02-1.147A5.977 5.977 0 007 13.667c3.307 0 6-2.694 6-6 0-3.307-2.693-6-6-6zm0 10.666a4.672 4.672 0 01-4.667-4.666A4.672 4.672 0 017 3a4.672 4.672 0 014.667 4.667A4.672 4.672 0 017 12.333zM1.78 3.527A1.266 1.266 0 011.667 3c0-.733.6-1.333 1.333-1.333.26 0 .5.08.707.206.42-.24.86-.433 1.326-.58A2.652 2.652 0 003 .333 2.666 2.666 0 00.333 3c0 .673.26 1.287.674 1.753.213-.433.473-.846.773-1.226zM11 1.667c.733 0 1.333.6 1.333 1.333 0 .187-.04.367-.113.527.3.38.553.786.767 1.226.42-.466.68-1.08.68-1.753A2.666 2.666 0 0011 .333c-.82 0-1.547.38-2.033.96.466.147.906.34 1.326.58.207-.126.447-.206.707-.206zM7 4.333v3.334l2.007-2.66a3.227 3.227 0 00-.947-.5c-.34-.114-.7-.174-1.06-.174zm5.193 7.507c-.28.347-.593.667-.933.953l.573.647a.674.674 0 00.5.227.665.665 0 00.493-1.107l-.633-.72z" /></symbol>'}),ts=(Qi.a.add(es),es),ns=function(){return r.a.createElement(Ii,null,r.a.createElement("use",{xlinkHref:"#".concat(ts.id)}))},as=[["Last 5 minutes",-300],["Last 15 minutes",-900],["Last 30 minutes",-1800],["Last 2 hours",-7200],["Last 6 hours",-21600],["Last 12 hours",-43200]],rs=function(e){var t=e.handleDatesChange,n=e.selectedStart,a=e.tagging;return r.a.createElement(Hi,null,r.a.createElement(Bi,null,r.a.createElement(ns,null),"\xa0 Quick Selector"),as.map((function(e){var o,i=Object(S.a)(e,2),s=i[0],l=i[1];return r.a.createElement(zi,{key:l,onClick:(o=l,function(){t({startDate:o,endDate:0})}),isSelected:l===n,"data-testid":"date-picker::click-quick-selector::".concat(a,"::").concat(-l)},s)})))},os=function(e){var t,n;return e>=2592e3?(t="month",n=Math.round(e/2592e3)):e>=86400?(t="day",n=Math.round(e/86400)):e>=3600?(t="hour",n=Math.round(e/3600)):(t="minute",n=Math.round(e/60)),{resolution:t,value:n}},is=new qi.a({id:"arrow",use:"arrow-usage",viewBox:"0 0 13 9",content:'<symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 13 9" id="arrow"><path d="M8.4.6c-.2-.2-.5-.2-.7 0-.2.2-.2.5 0 .7L10.3 4H.5c-.3 0-.5.2-.5.5s.2.5.5.5h9.8L7.7 7.6c-.2.2-.2.5 0 .7.1.1.2.1.4.1s.3 0 .4-.1l3.9-3.9-4-3.8z" /></symbol>'}),ss=(Qi.a.add(is),is),ls=new qi.a({id:"calendar",use:"calendar-usage",viewBox:"0 0 20 20",content:'<symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" id="calendar"><path d="M17.1 2H17V1c0-.6-.4-1-1-1s-1 .4-1 1v1h-4V1c0-.6-.4-1-1-1S9 .4 9 1v1H5V1c0-.6-.4-1-1-1S3 .4 3 1v1h-.1C1.3 2 0 3.3 0 4.9v12.2C0 18.7 1.3 20 2.9 20h14.2c1.6 0 2.9-1.3 2.9-2.9V4.9C20 3.3 18.7 2 17.1 2zm.9 15.1c0 .5-.4.9-.9.9H2.9c-.5 0-.9-.4-.9-.9V8h16v9.1zM18 6H2V4.9c0-.5.4-.9.9-.9h14.2c.5 0 .9.4.9.9V6z" /></symbol>'}),cs=(Qi.a.add(ls),ls),ds=function(){return r.a.createElement(Ii,null,r.a.createElement("use",{xlinkHref:"#".concat(ss.id)}))},us=function(){return r.a.createElement(Ri,null,r.a.createElement(Ii,null,r.a.createElement("use",{xlinkHref:"#".concat(cs.id)})))},hs=function(e){var t=e.onClick,n=e.start,a=void 0===n?900:n,o=e.end;if(a<0)return r.a.createElement(Ui,{onClick:t},r.a.createElement(us,null),r.a.createElement(r.a.Fragment,null,function(e){var t=os(e),n=t.value,a=t.resolution;return n>1?"Last ".concat(n," ").concat(a,"s"):"Last ".concat(a)}(-a)));var i=xi()(a).format("DD/MM/YYYY HH:mm"),s=xi()(o).format("DD/MM/YYYY HH:mm");return r.a.createElement(Ui,{onClick:t},r.a.createElement(us,null),i,"\xa0",r.a.createElement(ds,null),"\xa0",s)},ps=["minute","hour","day","month"],fs=function(e,t){return 1===t?e:"".concat(e,"s")},gs=function(e,t){return-xi.a.duration(e,t).as("seconds")};function ms(e){var t=e.setRangeValues,n=e.handleDatesChange,o=e.selectedStart,i=e.tagging,s=o<=0?os(-o):{resolution:"hour",value:0},l=s.resolution,c=s.value,d=Object(a.useState)(!1),u=Object(S.a)(d,2),h=u[0],p=u[1],f=function(e){n({startDate:e,endDate:0}),t({start:e,end:0})};return r.a.createElement(Wi,{"data-testid":"date-picker::click-last-integer::".concat(i)},r.a.createElement(Zi,null,"Last"),r.a.createElement($i,{value:c,onChange:function(e){var t=Number(e.currentTarget.value);Number.isNaN(t)||f(gs(t,l))},"data-testid":"date-picker::click-last-integer::".concat(i,"::").concat(c)}),r.a.createElement(Gi,{isOpen:h,onMenuToggle:p,renderTitle:function(){return r.a.createElement(Vi,null,r.a.createElement(Xi,null,fs(l,Number(c))),r.a.createElement(Yi,{name:"triangle_down"}))},renderOpener:function(){return null}},ps.map((function(e){return r.a.createElement(zi,{key:e,onClick:(t=e,function(){f(gs(c,t)),p(!1)}),"data-testid":"date-picker::click-last-time-".concat(e,"::").concat(i)},fs(e,Number(c)));var t}))))}var bs=new qi.a({id:"month_arrow_l",use:"month_arrow_l-usage",viewBox:"0 0 8 12",content:'<symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 12" id="month_arrow_l"><path d="M7.41 1.41L6 0 0 6l6 6 1.41-1.41L2.83 6l4.58-4.59z" /></symbol>'}),vs=(Qi.a.add(bs),bs),_s=new qi.a({id:"month_arrow_r",use:"month_arrow_r-usage",viewBox:"0 0 8 12",content:'<symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 12" id="month_arrow_r"><path d="M.59 10.59L2 12l6-6-6-6L.59 1.41 5.17 6 .59 10.59z" /></symbol>'}),ys=(Qi.a.add(_s),_s);function xs(){return"DD/MM/YYYY HH:mm"}function Os(e){return e.diff(xi()(),"seconds")>0}var ws=function(){return r.a.createElement(Ii,{id:"month_left"},r.a.createElement("use",{xlinkHref:"#".concat(vs.id)}))},ks=function(){return r.a.createElement(Ii,{id:"month_right"},r.a.createElement("use",{xlinkHref:"#".concat(ys.id)}))};function Es(e,t){if("number"===typeof e)t(e);else if(e){var n=e.creationData().input;t(n&&"number"!==typeof n?xi()(n,"DD/MM/YYYY HH:mm").valueOf():e.valueOf())}}var Cs=function(e){return e>0?xi()(e):xi()((new Date).valueOf()+1e3*e)},Ss={startDate:"start",endDate:"finish"},js=function(e){var t=e.isOpen,n=e.handleOpenState,o=e.setRangeValues,i=e.pickedValues,s=e.tagging,l=void 0===s?"":s,c=Object(a.useState)(i.start),d=Object(S.a)(c,2),u=d[0],h=d[1],p=Object(a.useState)(i.end),f=Object(S.a)(p,2),g=f[0],m=f[1],b=Object(a.useMemo)((function(){return Cs(u)}),[u]),v=Object(a.useMemo)((function(){return Cs(g)}),[g]);Object(a.useEffect)((function(){h(i.start)}),[i.start]),Object(a.useEffect)((function(){m(i.end)}),[i.end]);var _=Object(a.useState)("startDate"),y=Object(S.a)(_,2),x=y[0],O=y[1];function w(e){var t=e.startDate,n=e.endDate;null!==t&&null!==n&&(Es(n,m),Es(t,h))}function k(){n(!1)}var E=function(e){var t=Object(a.useRef)(null),n=Object(a.useCallback)((function(t){"Escape"===t.key&&e()}),[e]),r=Object(a.useCallback)((function(n){t.current&&!t.current.contains(n.target)&&e&&"function"===typeof e&&e()}),[e]);return Object(a.useEffect)((function(){return document.addEventListener("click",r),document.addEventListener("keyup",n),function(){document.removeEventListener("click",r),document.removeEventListener("keyup",n)}}),[r,n]),t}(k);var C=Ss[x],j=r.a.createElement(Pi,{right:!0,closeOnEsc:!0,closeOnOverlayClick:!0},r.a.createElement(Li,{ref:E},r.a.createElement(Ni,null,r.a.createElement(rs,{handleDatesChange:w,selectedStart:u,tagging:l}),r.a.createElement(_i.DateRangePicker,{onDatesChange:w,daySize:30,focusedInput:x,onFocusChange:function(e){e&&O(e)},hideKeyboardShortcutsPanel:!0,enableOutsideDays:!0,isOutsideRange:Os,firstDayOfWeek:1,verticalSpacing:0,displayFormat:xs,endDate:v,startDate:b,startDateId:"dpStartDateInput",openDirection:"up",endDateId:"dpEndDateInput",navNext:r.a.createElement(ks,null),navPrev:r.a.createElement(ws,null)})),r.a.createElement(Fi,null,r.a.createElement(ms,{setRangeValues:o,handleDatesChange:w,selectedStart:u,tagging:l}),r.a.createElement($.a,{label:"CLEAR",flavour:"borderless",onClick:function(){m(0),h(-900),o({start:-900,end:0})},"data-testid":"date-picker::click-clear::".concat(l,"-").concat(C)}),r.a.createElement($.a,{label:"APPLY",onClick:function(){o({start:u,end:g}),k()},"data-testid":"date-picker::click-apply::".concat(l,"-").concat(C)}))));return r.a.createElement(r.a.Fragment,null,r.a.createElement(hs,Object.assign({onClick:function(){return n(!0)}},i)),t&&j)},Ds=function(e){var t=e.tagging,n=Object(gn.a)(),o=Object(a.useState)(!1),i=Object(S.a)(o,2),s=i[0],l=i[1],c=Object(gn.b)(de.m),d=Boolean(c),u=Object(gn.b)(de.i),h={start:d?c.after:u,end:d?c.before:0};return Object(a.useEffect)((function(){var e=h.start,t=h.end;if(window.urlOptions&&(window.urlOptions.after!==e||window.urlOptions.before!==t)){var n=e>0;window.urlOptions.netdataPanAndZoomCallback(n,e,t)}}),[h]),r.a.createElement(js,{isOpen:s,pickedValues:h,handleOpenState:function(e){l(e)},setRangeValues:function(e){var t=e.start,a=e.end;t<0?(n(Object(Ze.p)({after:t})),d&&n(Object(Ze.j)())):n(Object(Ze.r)({after:t,before:a}))},tagging:t})},As=function(){return r.a.createElement(q.b,{theme:$.c},r.a.createElement(hi,{hasBorder:!0},r.a.createElement(Ds,null)))},Ts={warning:"#FFF8E1",error:"#FFEBEF"},Ms=Object(q.d)($.h).attrs((function(e){var t=e.round,n=void 0===t?999:t,a=e.hollow,r=e.background;return{padding:[.5,2],round:n,border:!!a&&{side:"all",color:r,size:"1px"}}})).withConfig({displayName:"styled__StyledPill",componentId:"sc-1rgk900-0"})(["background:",";cursor:pointer;"],(function(e){var t=e.background;return e.hollow?Ts[t]:t})),Ps=Object(a.forwardRef)((function(e,t){var n=e.children,a=e.background,o=e.color,i=e.hollow,s=Object(mr.a)(e,["children","background","color","hollow"]);return r.a.createElement(Ms,Object.assign({background:a,hollow:i,ref:t},s),r.a.createElement($.s,{color:i?a:o,strong:!0},n))})),Ls={"data-toggle":"modal","data-target":"#alarmsModal"},Is=function(){var e=Object(gn.b)(de.c),t=Object(a.useMemo)((function(){return e?Object.values(e.alarms):[]}),[e]),n=Object(a.useMemo)((function(){return t.reduce((function(e,t){var n=t.status;return"CRITICAL"===n&&(e.critical=e.critical+1),"WARNING"===n&&(e.warning=e.warning+1),e}),{critical:0,warning:0})}),[t]),o=n.critical,i=n.warning;return r.a.createElement(hi,{icon:"alarm"},r.a.createElement(Ps,Object.assign({background:"error",hollow:!0},Ls),o),r.a.createElement(Ps,Object.assign({background:"warning",hollow:!0},Ls),i))},Rs=n(618),Ns=function(e){var t=e.onClose;return r.a.createElement($.h,{border:{side:"bottom",color:"selected"},justifyContent:"between",alignItems:"center",padding:[0,0,4,0]},r.a.createElement($.h,{gap:2},r.a.createElement($.l,{color:"text",name:"insights"}),r.a.createElement($.q,{strong:!0},"Netdata News")),r.a.createElement($.a,{flavour:"borderless",neutral:!0,icon:"x",title:"close news",onClick:t}))},Fs=Object(q.d)($.h).attrs({as:"img"}).withConfig({displayName:"image__Image",componentId:"r9cpkq-0"})(["object-fit:cover;"]),Bs=Object(q.d)($.h).attrs({as:"a"}).withConfig({displayName:"anchor__Anchor",componentId:"sc-12ym4mq-0"})(["text-decoration:none;&:hover{text-decoration:none;}"]),Hs=function(e){var t=e.item,n=t.last_publication_date,a=t.data,o=a.title,i=a.description,s=a.url,l=a.image,c=a.label,d=l&&l.url,u=new Date(n);return r.a.createElement($.h,{column:!0,gap:2},r.a.createElement($.h,{gap:4},d&&r.a.createElement(Fs,{src:d,width:"160px"}),r.a.createElement($.h,{column:!0,gap:2},r.a.createElement($.p,{strong:!0},o),r.a.createElement($.p,null,i))),r.a.createElement($.h,{justifyContent:"between",alignItems:"center"},r.a.createElement($.u,null,u.toLocaleDateString()),r.a.createElement(Bs,{href:s,target:"_blank",rel:"noopener noreferrer",gap:1,alignItems:"center"},r.a.createElement($.p,{color:"success",strong:!0},c),r.a.createElement($.l,{color:"success",rotate:2,name:"arrow_left"}))))},zs=Object(q.d)($.h).attrs({overflow:{vertical:"auto"},padding:[0,4,0,0]}).withConfig({displayName:"container__Container",componentId:"sc-1s01bs1-0"})(["",""],$.y),Us=function(e){var t=e.children,n=e.items,o=void 0===n?[]:n,i=e.onCloseClick,s=Object(Aa.a)(),l=Object(S.a)(s,2),c=l[0],d=l[1],u=Object(a.useCallback)((function(){d(),i&&i()}),[d,i]);return r.a.createElement(a.Fragment,null,t(d,c),c&&r.a.createElement($.m,{backdrop:!0,onClickOutside:u,onEsc:u},r.a.createElement($.h,{background:"mainBackground",round:!0,padding:[6],width:"640px",height:{max:"640px"},gap:4,column:!0},r.a.createElement(Ns,{onClose:u}),r.a.createElement(zs,{column:!0,gap:6},o.map((function(e){return r.a.createElement(Hs,{key:e.id,item:e})}))))))},Ws=n(222),Gs=Ws.a.client("https://netdata-news.cdn.prismic.io/api/v2"),Vs=function(){var e=Object(Rs.a)("news_last_seen"),t=Object(S.a)(e,2),n=t[0],o=t[1],i=Object(a.useState)([]),s=Object(S.a)(i,2),l=s[0],c=s[1];Object(a.useEffect)((function(){!function(e){var t;k.a.async((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,k.a.awrap(Gs.query(Ws.a.Predicates.at("document.type","news__announcements"),{pageSize:100,orderings:"[document.last_publication_date desc]"}));case 2:if(t=n.sent){n.next=5;break}return n.abrupt("return");case 5:e&&e(t);case 6:case"end":return n.stop()}}))}((function(e){var t=e.results;return c(t)}))}),[]);var d=Object(a.useMemo)((function(){if(!l.length)return!0;var e=Object(S.a)(l,1)[0].last_publication_date,t=new Date(e);return new Date(n)>=t}),[n,l]),u=Object(a.useCallback)((function(){var e=new Date;o(e)}),[o]);return r.a.createElement(Us,{items:l,onCloseClick:u},(function(e){return r.a.createElement($.a,{themeType:"dark",name:"news",title:"News & Features",icon:"insights",flavour:"borderless",neutral:d,warning:!d,onClick:e})}))},Ys=Object(Xn.a)(de.w,(function(e){return e.registryServer===Ve.b})),Xs=Object(Xn.a)((function(e){return e.dashboard}),(function(e){return e.offline})),Zs=function(e){var t=e.children,n=Object(Rs.a)("has-sign-in-history"),r=Object(S.a)(n,1)[0],o=Object(s.e)((function(e){return Object(de.A)(r)(e)})),i=Object(s.e)(Ys),l=Object(s.e)(Xs),c=Object(s.d)(),d=Object(a.useMemo)((function(){var e=window.location.href,t=encodeURIComponent(e);return"".concat(o,"&redirect_uri=").concat(t)}),[o]),u=Object(a.useCallback)((function(){return c(Object(b.d)({signInLinkHref:d}))}),[d]);return Object(a.useMemo)((function(){return"function"===typeof t?t({isRegistry:i,link:d,onSignIn:u,offline:l,hasSignedInBefore:r}):t}),[t,i,d,u,l,r])},$s=function(e,t){e.contentWindow&&e.contentWindow.postMessage(t,"*")},Ks=function(e,t,n){var r=Object(a.useState)(n),o=Object(S.a)(r,2),i=o[0],s=o[1],l=Object(a.useCallback)((function(n){var a=n.data;a.type===e&&(s(a.payload),t&&t(a.payload))}),[t,e]),c=Object(a.useCallback)((function(){s(n)}),[n]);return Object(a.useEffect)((function(){return window.addEventListener("message",l),function(){window.removeEventListener("message",l)}}),[l,e]),[i,c]},qs=Object(q.d)($.h).attrs({position:"absolute"}).withConfig({displayName:"iframe__IframeContainer",componentId:"sc-1tybwh7-0"})(["display:none;"]),Js=function(e){var t=e.signedIn,n=Object(a.useState)(!1),o=Object(S.a)(n,2),i=o[0],s=o[1],l=Object(a.useRef)(),c=Object(a.useRef)(),d=Object(Rs.a)(Qt),u=Object(S.a)(d,3),h=u[0],p=u[2],f=Object(gn.b)(de.f),g=Object(gn.b)(de.w),m=Object(gn.a)(),v=window.location,_=v.origin,y=v.pathname,x=encodeURIComponent(g.hostname),O=encodeURIComponent(_+y),w=Object(Ve.c)(f,"sign-in?id=".concat(g.machineGuid,"&name=").concat(x,"&origin=").concat(O));Ks("hello-from-sign-in",(function(e){l.current=e}));var k=Object(a.useCallback)((function(){s(!0),setTimeout((function(){return m(Object(b.c)({offline:void 0===l.current}))}),500)}),[]);return Object(a.useEffect)((function(){var e=function(e){(null===e||void 0===e?void 0:e.target)&&(e.target.src!==w||i||k())};return window.addEventListener("DOMFrameContentLoaded",e),function(){return window.removeEventListener("DOMFrameContentLoaded",e)}}),[w,i,k]),Object(a.useEffect)((function(){if(t&&c.current&&g.registryServer&&g.registryServer!==Ve.b&&h){p();var e=g.registryMachinesArray;e&&e.length>0&&$s(c.current,{type:"synced-private-registry",payload:e})}}),[t,g,h]),r.a.createElement(qs,{as:"iframe",src:w,onLoad:k})},Qs=function(){var e=Object(s.d)(),t=Object(Rs.a)("has-sign-in-history"),n=Object(S.a)(t,2),r=n[0],o=n[1],i=Object(a.useState)(r),l=Object(S.a)(i,2),c=l[0],d=l[1],u=Object(a.useCallback)((function(t){t&&(d(t),o(t)),e(Object(b.b)({isSignedIn:t}))}),[]),h=Ks("is-signed-in",u);return[Object(S.a)(h,1)[0],c]},el=function(){var e=Qs(),t=Object(S.a)(e,1)[0];return Object(s.e)(de.t)&&r.a.createElement(r.a.Fragment,null,r.a.createElement(Js,{signedIn:t}),!t&&r.a.createElement(Zs,null,(function(e){var t=e.isRegistry,n=e.link,a=e.hasSignedInBefore,o=e.offline,i=e.onSignIn;return r.a.createElement($.a,Object.assign({label:a?"SIGN IN TO CLOUD":"SIGN UP TO CLOUD",disabled:o},t?{as:"a",href:n}:{onClick:i}))})))},tl=Object(q.d)($.h).attrs({as:"header",position:"relative",justifyContent:"between",background:"panel",zIndex:20,width:"100%",padding:[2,4,2,4]}).withConfig({displayName:"header__Wrapper",componentId:"c0wsrq-0"})(["pointer-events:all;"]),nl=function(){return r.a.createElement(tl,null,r.a.createElement($.h,{alignItems:"center",gap:3},r.a.createElement(fi,null)),r.a.createElement($.h,{justifyContent:"end",alignItems:"center",gap:3},r.a.createElement(hi,{hasBorder:!0},r.a.createElement(vi,null),r.a.createElement(Vs,null),r.a.createElement(gi,null)),r.a.createElement(As,null),r.a.createElement(Is,null),r.a.createElement(el,null)))},al=Object(q.d)($.a).withConfig({displayName:"expandButton__ExpandButton",componentId:"ebkdno-0"})(["&&{> .button-icon{width:6px;height:9px;}"]),rl=Object(q.d)($.h).withConfig({displayName:"item__PanelRowContainer",componentId:"sc-1qh9192-0"})(["cursor:pointer;&:hover{background:",";}",""],Object($.v)("selected"),(function(e){return e.selected&&"background: ".concat(Object($.v)("selected")(e),";")})),ol=Object(a.forwardRef)((function(e,t){var n=e.disabled,o=e.children,i=e.Wrapper,s=void 0===i?$.p:i,l=e.onClick,c=e.testid,d=e.icon,u=e.padding,h=void 0===u?[2,3]:u,p=e.margin,f=void 0===p?[0]:p,g=e.round,m=void 0===g?0:g,b=e.actions,v=e.selected,_=e.width,y=void 0===_?"100%":_,x=Object(a.useCallback)((function(){n||l&&l()}),[l,n]);return r.a.createElement(rl,{ref:t,flexWrap:!1,justifyContent:"between",alignItems:"center",padding:h,margin:f,round:m,onClick:x,"data-testid":c,width:y,selected:v,disabled:n},r.a.createElement($.h,{alignItems:"center",gap:3,flex:!0,basis:""},"string"===typeof d?r.a.createElement($.l,{name:d,disabled:n,color:"text",height:"16px",width:"16px"}):d,r.a.createElement(s,{opacity:n?"medium":void 0,width:"150px"},o)),b)})),il=Object(q.d)($.i).attrs({padding:[0],margin:[0]}).withConfig({displayName:"list__DefaultListHeader",componentId:"cb73mo-0"})(["cursor:pointer;"]),sl=function(e){var t=e.toggleOpen,n=e.label,a=e.testid,o=e.Header,i=void 0===o?il:o;return r.a.createElement(i,{"data-testid":a,onClick:t},n)},ll=function(e){var t=e.isOpen,n=void 0!==t&&t,a=e.toggleOpen,o=e.label,i=e.children,s=e.testid,l=e.Header;return r.a.createElement($.h,{column:!0},r.a.createElement(sl,{Header:l,toggleOpen:a,label:o,testid:s}),r.a.createElement($.b,{open:n},i))},cl=(Object(q.d)($.h).attrs({bacgkround:"disabled",height:"1px",margin:[2,6]}).withConfig({displayName:"styled__Divider",componentId:"sc-1gb5vnf-0"})([""]),n(146)),dl=function(e){var t=e.flavour,n=void 0===t?"default":t,a=Object(mr.a)(e,["flavour"]),o=Object(s.e)(de.f);return r.a.createElement($.h,Object.assign({alignItems:"center",as:"iframe",src:"".concat(Object(cl.a)(o,"sign-out"),"?type=").concat(n),border:{side:"all",size:"0px"},width:{max:"128px"},height:{max:"40px"}},a))},ul=function(){return r.a.createElement(Zs,null,(function(e){var t=e.isRegistry,n=e.link,a=e.hasSignedInBefore,o=e.onSignIn;return r.a.createElement($.p,{onClick:t?function(e){return function(e,t){e.stopPropagation(),window.open(t,"_blank","noopener,noreferrer")}(e,n)}:o},a?"Sign in":"Sign up")}))},hl=Object(Xn.a)((function(e){return e.dashboard}),(function(e){return e.isSignedIn})),pl=function(){var e=Object(Aa.a)(),t=Object(S.a)(e,2),n=t[0],o=t[1],i=Object(gn.b)(hl),s=Object(a.useMemo)((function(){return[].concat(Object(C.a)(i?[{children:"Operational Status",onClick:function(){return window.open("https://status.netdata.cloud","_blank","noopener,noreferrer")}}]:[]),Object(C.a)(i?[{separator:!0}]:[]),Object(C.a)(i?[{children:r.a.createElement(dl,{flavour:"borderless",height:{max:"18px"}})}]:[{children:r.a.createElement(ul,null)}]))}),[i]);return r.a.createElement(q.b,{theme:$.c},r.a.createElement($.a,{flavour:"borderless",neutral:!0,icon:"user",title:"User settings",name:"userSettings",onClick:o}),n&&r.a.createElement($.m,{position:"bottom-left",onClickOutside:o,onEsc:o,backdrop:!1,margin:[5,18]},r.a.createElement($.h,{column:!0,width:52,background:"mainBackground",padding:[3],round:!0},s.map((function(e,t){return e.separator?r.a.createElement($.h,{height:"1px",background:"disabled",key:t}):r.a.createElement(ol,Object.assign({key:t,padding:[2,4],round:1},e.onClick&&{onClick:e.onClick}),e.children)})))))},fl=function(){return r.a.createElement(r.a.Fragment,null,r.a.createElement($.h,{width:"40px",height:"40px",round:2,border:{side:"all",color:"border",size:"2px",type:"dotted"}}),r.a.createElement($.h,{height:"1px",background:"separator",width:"20px"}),r.a.createElement($.a,{icon:"plus",disabled:!0}))},gl=function(){var e=Object(gn.b)(de.f);return r.a.createElement($.h,{as:"iframe",src:Object(Ve.c)(e,"space-bar"),title:"Space Bar",height:"100%",width:"100%",border:{side:"all",size:"0px"},overflow:"hidden"})},ml=function(e){var t=e.width,n=e.height,a=e.fill,o=void 0===a?"#FDFDFD":a;return r.a.createElement("svg",Object.assign({width:t,height:n},{viewBox:"0 0 31 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"}),r.a.createElement("path",{d:"M19.0002 0H0.630188L8.27019 24H19.0002C25.6202 24 31.0002 18.62 31.0002 12C31.0002 5.38 25.6202 0 19.0002 0Z",fill:o}))},bl=function(e){var t=e.isOpen,n=e.toggle,a=e.isSignedIn,o=Object(s.e)(de.t);return r.a.createElement($.h,{column:!0,justifyContent:"between",background:"panel",padding:[3,0],width:"64px",alignItems:"center",gap:6,position:"relative",overflow:"hidden"},r.a.createElement($.h,{column:!0,gap:4,alignItems:"center",height:"100%",overflow:"hidden"},r.a.createElement(ml,{width:32,height:32}),!t&&r.a.createElement(al,{icon:"chevron_right_s",onClick:n,small:!0,neutral:!0,flavour:"borderless",themeType:"dark"}),o&&a&&r.a.createElement(gl,null),o&&!a&&r.a.createElement(fl,null)),r.a.createElement($.h,{column:!0,gap:4,alignItems:"center"},r.a.createElement($.e,{app:"agent"},(function(e){return r.a.createElement($.a,{flavour:"borderless",neutral:!0,themeType:"dark",className:"btn",icon:"question",onClick:e,title:"Need help?"})})),r.a.createElement($.a,{flavour:"borderless",neutral:!0,themeType:"dark",className:"btn","data-toggle":"modal","data-target":"#optionsModal",icon:"gear",title:"Settings"}),o&&r.a.createElement(pl,null)))},vl=function(e){for(var t,n,a=[],r=0,o=-1,i=0;t=(n=e.charAt(r++)).charCodeAt(0);){var s=t>=48&&t<=57;s!==i&&(a[++o]="",i=s),a[o]+=n}return a},_l=function(e,t){for(var n=vl(e.toLowerCase()),a=vl(t.toLowerCase()),r=0;n[r]&&a[r];r++)if(n[r]!==a[r]){var o=Number(n[r]),i=Number(a[r]);return o.toString()===n[r]&&i.toString()===a[r]?o-i:n[r]>a[r]?1:-1}return n.length-a.length},yl=function(e,t){return"".concat(e,"/host/").concat(t,"/")},xl=function(e,t,n){if(!e||!t)return{};var a=function(e){var t=document.location.origin.toString()+decodeURI(document.location.pathname.toString());return t.endsWith("/host/".concat(e,"/"))&&(t=t.substring(0,t.length-"/host/".concat(e,"/").toString().length)),t.endsWith("/")&&(t=t.substring(0,t.length-1)),t}(t);return{parentNode:{hostname:Object(S.a)(e,1)[0].hostname,url:"".concat(a,"/")},replicatedNodes:e.slice(1).map((function(e,t){var r=e.hostname;return{hostname:r,url:yl(a,r),status:n[t+1].reachable}})).sort((function(e,t){return _l(e.hostname,t.hostname)}))}},Ol=Object(q.d)($.h).attrs({as:"a",gap:2,alignItems:"center"}).withConfig({displayName:"anchor__Anchor",componentId:"sc-8wivg4-0"})(["&:hover{text-decoration:none;}"]),wl=function(e){var t=e.hostname,n=e.url,a=e.status;return r.a.createElement(Ol,{href:n,justifyContent:"between",padding:[0,0,0,2]},r.a.createElement($.h,{alignItems:"center",gap:2},r.a.createElement($.l,{name:"node",color:"bright"}),r.a.createElement($.p,{color:"bright",truncate:!0},t)),r.a.createElement(Ps,{background:a?"success":"border",color:"bright",round:10},a?"Live":"Off"))},kl=Object(q.d)($.r).withConfig({displayName:"replicatedNodes__Search",componentId:"sc-1bn9jso-0"})(["& > label{margin-bottom:0;}"]),El=Object(q.d)($.l).withConfig({displayName:"replicatedNodes__StyledIcon",componentId:"sc-1bn9jso-1"})(["transform:",";"],(function(e){return e.right?"rotate(270deg)":"none"})),Cl=function(e){var t=e.parentNode,n=e.replicatedNodes,o=Object(a.useState)(!0),i=Object(S.a)(o,2),s=i[0],l=i[1],c=Object(a.useState)(""),d=Object(S.a)(c,2),u=d[0],h=d[1],p=Object(a.useCallback)((function(){return l((function(e){return!e}))}),[]),f=Object(a.useCallback)((function(e){return h(e.target.value)}),[]),g=Object(a.useMemo)((function(){return u?n.filter((function(e){return e.hostname.toLowerCase().includes(u.toLowerCase())})):n}),[n,u]);return r.a.createElement(ll,{isOpen:s,toggleOpen:p,label:r.a.createElement($.h,{alignItems:"center",justifyContent:"between"},r.a.createElement($.p,{strong:!0,color:"border"},"Replicated nodes"),r.a.createElement(El,{right:!s,name:"chevron_down",size:"small",color:"text"}))},r.a.createElement($.h,{column:!0,gap:4,padding:[4,0,0]},r.a.createElement(Ol,{as:"a",href:t.url,justifyContent:"start"},r.a.createElement($.l,{name:"nodes",size:"small",color:"bright"}),r.a.createElement($.p,{color:"bright"},t.hostname)),g.length>=5&&r.a.createElement($.h,{padding:[0,0,0,2]},r.a.createElement(kl,{value:u,onChange:f,iconLeft:r.a.createElement($.l,{name:"search_s",size:"small",color:"text"}),metaShrinked:!0})),r.a.createElement($.h,{column:!0,gap:2},g.map((function(e){var t=e.hostname,n=e.url,a=e.status;return r.a.createElement(wl,{key:t,hostname:t,url:n,status:a})})))))},Sl=function(e){var t=e.parentNode,n=e.replicatedNodes,o=Object(gn.b)(de.f),i=Object(a.useRef)(),s=Ks("hello-from-space-panel"),l=Object(S.a)(s,1)[0];return Object(a.useEffect)((function(){l&&i.current&&$s(i.current,{type:"streamed-hosts-data",payload:{parentNode:t,replicatedNodes:n}})}),[n,t,l]),r.a.createElement($.h,{ref:i,as:"iframe",src:Object(cl.a)(o,"space-panel"),title:"space panel",width:"100%",height:"100%",border:{side:"all",size:"0px"}})},jl={signIn:{title:"Welcome back!",content:[r.a.createElement($.u,{key:"1",color:"bright"},"Sign in again to enjoy the benefits of Netdata Cloud"," ")]},signUp:{title:"Welcome to Netdata Cloud!",content:[r.a.createElement($.u,{key:"1",color:"bright"},r.a.createElement($.u,{strong:!0,color:"bright"},"A single place")," ","for all your nodes."),r.a.createElement($.u,{key:"2",color:"bright"},r.a.createElement($.u,{strong:!0,color:"bright"},"Multi-node dashboards")," ","out of the box."),r.a.createElement($.u,{key:"3",color:"bright"},r.a.createElement($.u,{strong:!0,color:"bright"},"Custom dashboards")," ","for you to create, edit and share online."),r.a.createElement($.u,{key:"4",color:"bright"},r.a.createElement($.u,{strong:!0,color:"bright"},"Metric Correlations")," ","to find the root cause of anything."),r.a.createElement($.u,{key:"5",color:"bright"},r.a.createElement($.u,{strong:!0,color:"bright"},"Centrally dispatched notifications")," ","for all alarms of all your nodes."),r.a.createElement($.u,{key:"6",color:"bright"},"And... It is"," ",r.a.createElement($.u,{as:"a",href:"https://www.netdata.cloud/get-netdata/",target:"_blank",rel:"noopener noreferrer",strong:!0,color:"bright"},"free, forever!"))]}},Dl=function(){return r.a.createElement(Zs,null,(function(e){var t=e.isRegistry,n=e.link,a=e.hasSignedInBefore,o=e.onSignIn,i=e.offline,s=jl[a?"signIn":"signUp"],l=s.title,c=s.content;return r.a.createElement($.h,{background:["gray","trout"],column:!0,gap:4,padding:[10],border:{side:"right",color:"panel"}},r.a.createElement($.p,{color:"bright",strong:!0},l),c.map((function(e){return e})),r.a.createElement($.a,Object.assign({width:"100%",label:a?"SIGN IN TO CLOUD":"SIGN UP TO CLOUD",disabled:i},t?{as:"a",href:n}:{onClick:o})))}))},Al=function(){return r.a.createElement("svg",{width:"68",height:"68",viewBox:"0 0 68 68",fill:"none",xmlns:"http://www.w3.org/2000/svg"},r.a.createElement("path",{d:"M48.875 6.375H19.125C16.7778 6.375 14.875 8.27779 14.875 10.625V40.375C14.875 42.7222 16.7778 44.625 19.125 44.625H48.875C51.2222 44.625 53.125 42.7222 53.125 40.375V10.625C53.125 8.27779 51.2222 6.375 48.875 6.375Z",fill:"white",stroke:"#AEB3B7"}),r.a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M41.0834 38.25C41.8658 38.25 42.5 38.8843 42.5 39.6667V41.0833C44.0648 41.0833 45.3334 42.3519 45.3334 43.9167V58.0833C45.3334 59.6481 44.0648 60.9167 42.5 60.9167H38.25V65.1667H31.8278V60.9167H26.9167C25.3519 60.9167 24.0834 59.6481 24.0834 58.0833V43.9167C24.0834 42.3519 25.3519 41.0833 26.9167 41.0833V39.6667C26.9167 38.8843 27.551 38.25 28.3334 38.25H41.0834Z",fill:"#35414A"}),r.a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M39.7954 12.75C40.5778 12.75 41.2121 13.3843 41.2121 14.1667L41.2108 16.7294L43.9166 16.7296C44.699 16.7296 45.3333 17.3639 45.3333 18.1463V34C45.3333 34.7824 44.699 35.4167 43.9166 35.4167L43.272 35.4152L43.2727 33.3403H41.2121L41.2108 35.4152H39.151L39.1515 33.3403H37.0909L37.0897 35.4152H35.0299L35.0303 33.3403H32.9697L32.9686 35.4152H30.9088L30.909 33.3403H28.8484L28.8475 35.4152H26.7877L26.7878 33.3403H24.7272L24.7265 35.4152L24.0833 35.4167C23.3009 35.4167 22.6666 34.7824 22.6666 34V18.1463C22.6666 17.3639 23.3009 16.7296 24.0833 16.7296L26.7877 16.7294L26.7878 14.1667C26.7878 13.3843 27.4221 12.75 28.2045 12.75H39.7954Z",fill:"#35414A"}))},Tl=function(){return r.a.createElement($.h,{alignItems:"center",background:["gray","trout"],column:!0,gap:1,padding:[10]},r.a.createElement($.u,{color:"bright",strong:!0,textAlign:"center"},"Can't connect to Netdata Cloud"),r.a.createElement(Al,null),r.a.createElement($.t,{color:"bright",textAlign:"center",margin:[2,0,0]},"Maybe you are behind a firewall or you don\u2019t have connection to the internet"))},Ml=Object(Xn.a)((function(e){return e.global.chartsMetadata.data||{}}),(function(e){return e.global.registry.fullInfoPayload.mirrored_hosts_status||{}}),(function(e,t){var n=e.hosts,a=e.hostname;return xl(n,a,t)})),Pl=Object(Xn.a)((function(e){return e.global.registry}),(function(e){return e.registryMachinesArray||[]})),Ll=Object(Xn.a)((function(e){return e.dashboard}),(function(e){return{isSignedIn:e.isSignedIn,offline:e.offline}})),Il=r.a.memo((function(e){var t=e.isOpen,n=e.toggle,o=Object(s.e)(Ml),i=o.parentNode,l=void 0===i?{}:i,c=o.replicatedNodes,d=void 0===c?[]:c,u=Object(s.e)(Pl),h=Object(s.e)(de.u),p=Object(s.e)(Ll),f=p.isSignedIn,g=p.offline,m=Object(s.e)(de.t),b=Object(a.useCallback)((function(){return window.switchRegistryModalHandler()}),[]);return r.a.createElement($.b,{width:74,background:"panel",open:t,direction:"horizontal",persist:!0},r.a.createElement($.h,{flex:!0,column:!0,overflow:{vertical:"hidden"},margin:[3,0,0],border:{side:"left",color:"separator"},style:{pointerEvents:"all"}},r.a.createElement($.h,{overflow:{vertical:"auto"},flex:!0,column:!0,gap:4,padding:[4]},r.a.createElement($.h,{alignSelf:"end"},r.a.createElement($.a,{neutral:!0,flavour:"borderless",themeType:"dark",small:!0,icon:"chevron_left",onClick:n})),!f&&r.a.createElement(r.a.Fragment,null,!!d.length&&r.a.createElement(Cl,{parentNode:l,replicatedNodes:d}),!!u.length&&r.a.createElement($.p,{strong:!0,color:"border"},"VisitedNodes")),f&&r.a.createElement(Sl,{parentNode:l,replicatedNodes:d})),h&&r.a.createElement($.h,{border:{side:"top"},justifyContent:"center",alignItems:"center",padding:[6]},r.a.createElement($.u,{onClick:b},"Switch Identity")),!f&&m&&r.a.createElement(Dl,null),g&&m&&r.a.createElement(Tl,null)))})),Rl=Object(q.d)($.h).attrs({height:"100vh",zIndex:10}).withConfig({displayName:"sidebar__Wrapper",componentId:"v4d3v5-0"})(["pointer-events:all;"]),Nl=Object(Xn.a)((function(e){return e.dashboard}),(function(e){return e.isSignedIn})),Fl=r.a.memo((function(){var e=Object(Rs.a)("space-panel-state"),t=Object(S.a)(e,2),n=t[0],o=t[1],i=Object(s.e)(de.D),l=Object(s.e)(Nl),c=Object(s.d)(),d=Object(a.useCallback)((function(){c(Object(Ze.u)({isActive:!i})),o(!i)}),[i]);return Object(a.useEffect)((function(){c(Object(Ze.u)({isActive:!!n&&l}))}),[l]),r.a.createElement(Rl,null,r.a.createElement(bl,{isOpen:i,toggle:d,isSignedIn:l}),r.a.createElement(Il,{isOpen:i,toggle:d,offline:!0}))})),Bl=Object(q.d)($.h).attrs({position:"fixed",justifyContent:"start",alignItems:"start",width:"100%",zIndex:10}).withConfig({displayName:"layout__Wrapper",componentId:"sc-1d05imu-0"})(["top:0;left:0;pointer-events:none;"]),Hl=function(e){var t=e.children;return e.printMode?t:r.a.createElement(Bl,null,r.a.createElement(Fl,null),r.a.createElement(nl,null),t)},zl=(n(555),function(e){return{slate:$.c,white:$.d}[e]||$.c}),Ul=n(223);window.Ps=dn.a;var Wl=function(){var e=Object(s.f)();Object(a.useEffect)((function(){window.NETDATA.alarms={},window.NETDATA.pause=function(e){e()},Object(Ul.a)(e)}),[]);var t=Object(a.useState)(),n=Object(S.a)(t,2),o=n[0],i=n[1],l=void 0!==o,c=Object(a.useRef)((function(){i(Math.random())}));Object(a.useEffect)((function(){if(l){var e=document.getElementById("loadOverlay");e&&(e.style.display="none")}}),[l]);var d=Object(fn.b)(),u=d.localeDateString,p=d.localeTimeString;Object(a.useEffect)((function(){Object(Ul.b)({localeDateString:u,localeTimeString:p})}),[u,p]),function(e){var t=Object(gn.b)(de.w),n=Object(gn.a)();Object(a.useEffect)((function(){!e||t.isFetchingHello||t.hasFetchedHello||t.isHelloCallError||n(Ze.f.request({serverDefault:T.b}))}),[n,t,e])}(!0),function(e){var t=Object(gn.b)(de.q),n=Object(gn.a)();Object(a.useEffect)((function(){e&&!t&&n(Object(Ze.w)({serverDefault:T.b}))}),[n,t,e])}(!0),function(e){var t=Object(gn.b)(de.w),n=(null===t||void 0===t?void 0:t.hasStartedInfo)||!1,r=Object(gn.a)();Object(a.useEffect)((function(){e&&!n&&r(_e.f.request({poll:!1}))}),[r,n,e])}(!0);var f=Object(a.useState)(!1),g=Object(S.a)(f,2),m=g[0],b=g[1];Object(a.useLayoutEffect)((function(){Promise.all([pn(T.c+window.NETDATA.themes.current.bootstrap_css),pn(T.c+window.NETDATA.themes.current.dashboard_css)]).then((function(){b(!0)}))}),[]);var v=function(){var e=Xo("".concat(T.b,"api/v1/charts"));return Object(S.a)(e,1)[0]}(),_=Object(gn.b)(de.f);window.NETDATA.parseDom=c.current;var y=Object(gn.b)(de.p),x=Object(gn.b)(de.J);return function(){var e=Object(gn.a)();Object(ba.a)((function(){var t=Xt(),n=t.alarm_when;if(n){var a=Number(n),r=t.alarm_status,o=t.alarm_chart,i=t.alarm_value;if(!h.d.includes(r)||!o||!i)return;e(Object(Ze.m)({alarm:{chartId:o,status:r,value:i,when:a}}));e(Object(Ze.r)({after:1e3*a-3e5,before:1e3*a+3e5}))}}))}(),r.a.createElement(q.b,{theme:zl(x)},m&&r.a.createElement(ui,null),v&&_&&y&&l&&r.a.createElement(Hl,{printMode:ve},m&&r.a.createElement(r.a.Fragment,null,r.a.createElement(Yo,{key:o}),r.a.createElement(di,null,r.a.createElement(ci,null)),ve&&r.a.createElement(Ko,null))))};n(556);i.a.render(r.a.createElement(s.a,{store:ln},r.a.createElement(Wl,null)),document.getElementById("root"))},57:function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"c",(function(){return o})),n.d(t,"d",(function(){return i})),n.d(t,"b",(function(){return s}));var a=n(46),r=80,o=function(e,t){var n=" ",a="";return e&&"string"===typeof t.context&&(a=t.context),"string"===typeof t.plugin&&""!==t.plugin?((n=t.plugin).endsWith(".plugin")&&(n=n.substring(0,n.length-7)),"string"===typeof t.module&&""!==t.module&&(n+=":".concat(t.module)),e&&""!==a&&(n+=", ".concat(a))):e&&""!==a&&(n=a),n},i=function(e,t){var n=t.update_every,r=e.view_update_every;return n===r?"resolution ".concat(Object(a.a)(n)):"resolution ".concat(Object(a.a)(r),", collected every ").concat(Object(a.a)(n))},s=function(e){var t,n=e.allDimensions,a=e.selectedDimensions,r=e.clickedDimensionName,o=e.isModifierKeyPressed,i=0===a.length?n:a,s=i.includes(r);return(t=o||!(s&&i.length>1)&&s?s?i.filter((function(e){return e!==r})):i.concat(r):[r]).length===n.length?[]:t}},59:function(e,t,n){"use strict";n.d(t,"a",(function(){return h})),n.d(t,"b",(function(){return p}));var a=n(0),r=n(9),o=n(11),i=function(e){return e>-10&&e<10?"0".concat(e.toString()):e.toString()},s=!!(Intl&&Intl.DateTimeFormat&&navigator.language),l=function(e){return"number"===typeof e?new Date(e):e},c=function(e){return l(e).toLocaleDateString()},d=function(e){return l(e).toLocaleTimeString()},u=function(e){var t=l(e);return"".concat(i(t.getHours()),":").concat(i(t.getMinutes()),":").concat(i(t.getSeconds()))},h=function(e){try{Intl.DateTimeFormat(navigator.language,{localeMatcher:"best fit",formatMatcher:"best fit",weekday:"short",year:"numeric",month:"short",day:"2-digit",timeZone:e})}catch(t){return!1}return!0},p=function(){var e=Object(r.b)(o.K),t=""!==e&&"default"!==e,n=Object(a.useMemo)((function(){var n={localeMatcher:"best fit",formatMatcher:"best fit",weekday:"short",year:"numeric",month:"short",day:"2-digit",timeZone:t?e:void 0};return s?function(e){return new Intl.DateTimeFormat(navigator.language,n).format(e)}:c}),[e,t]),i=Object(a.useMemo)((function(){var n={localeMatcher:"best fit",hour12:!1,formatMatcher:"best fit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZone:t?e:void 0,timeZoneName:t?"short":void 0};return s?function(e){return new Intl.DateTimeFormat(navigator.language,n).format(e)}:d}),[e,t]),l=Object(a.useMemo)((function(){var n={localeMatcher:"best fit",hour12:!1,formatMatcher:"best fit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZone:t?e:void 0};return s?function(e){return new Intl.DateTimeFormat(navigator.language,n).format(e)}:u}),[e,t]);return{localeDateString:n,localeTimeString:i,xAxisDateString:Object(a.useMemo)((function(){var n={localeMatcher:"best fit",hour12:!1,formatMatcher:"best fit",day:"2-digit",month:"2-digit",timeZone:t?e:void 0};return s?function(e){return new Intl.DateTimeFormat(navigator.language,n).format(e)}:u}),[e,t]),xAxisTimeString:l}}},81:function(e,t,n){"use strict";n.d(t,"b",(function(){return a})),n.d(t,"c",(function(){return r})),n.d(t,"a",(function(){return o}));var a="true",r=!1,o=!1},82:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var a="dashboard"},9:function(e,t,n){"use strict";n.d(t,"b",(function(){return r})),n.d(t,"a",(function(){return o}));n(0);var a=n(32),r=a.e,o=a.d},93:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var a=n(7),r=n(22),o=function(e){var t=Object(r.createAction)(e.toUpperCase());return Object.assign(t,{request:t,success:Object(r.createAction)("".concat(e.toUpperCase(),"_SUCCESS"),(function(e){return e}),(function(e){return e})),failure:Object(r.createAction)("".concat(e.toUpperCase(),"_FAILURE"),(function(e){return e}),(function(e){return Object(a.a)({},e,{error:!0})}))})}}},[[346,1,2]]]);
+//# sourceMappingURL=main.8aa70c75.chunk.js.map \ No newline at end of file
diff --git a/web/gui/dashboard/static/js/main.8aa70c75.chunk.js.LICENSE b/web/gui/dashboard/static/js/main.8aa70c75.chunk.js.LICENSE
new file mode 100644
index 000000000..bf657eca5
--- /dev/null
+++ b/web/gui/dashboard/static/js/main.8aa70c75.chunk.js.LICENSE
@@ -0,0 +1,8 @@
+/*!
+ * d3pie
+ * @author Ben Keen
+ * @version 0.1.9
+ * @date June 17th, 2015
+ * @repo http://github.com/benkeen/d3pie
+ * SPDX-License-Identifier: MIT
+ */
diff --git a/web/gui/dashboard/static/js/main.8aa70c75.chunk.js.map b/web/gui/dashboard/static/js/main.8aa70c75.chunk.js.map
new file mode 100644
index 000000000..74b55ce30
--- /dev/null
+++ b/web/gui/dashboard/static/js/main.8aa70c75.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["domains/global/actions.ts","domains/global/options.ts","utils/is-demo.ts","utils/units-conversion.ts","components/button/button.tsx","domains/chart/components/toolbox-button.tsx","domains/global/selectors.ts","domains/chart/components/resize-handler.tsx","utils/index.ts","utils/name-2-id.ts","domains/chart/actions.ts","domains/global/reducer.ts","components/icon.tsx","domains/chart/reducer.ts","domains/chart/utils/transformDataAttributes.ts","main.js","domains/global/constants.ts","utils/utils.ts","utils/server-detection.ts","vendor/d3pie-0.2.1-netdata-3.js","domains/chart/selectors.ts","domains/dashboard/actions.ts","domains/chart/constants.ts","domains/chart/utils/seconds4human.ts","../public/lib/dygraph-c91c859.min.js","domains/dashboard/reducer.ts","store/root-reducer.ts","utils/api.ts","utils/netdata-sdk/axios-instance.ts","utils/netdata-sdk/metrics-stream.ts","utils/fill-missing-data.ts","components/ui-notification/styled.ts","components/ui-notification/ui-notification.tsx","components/notifications/styled.tsx","components/notifications/notifications.tsx","domains/dashboard/utils/parse-url.ts","domains/chart/sagas.ts","components/space-panel/settings.ts","domains/global/alarms-sagas.ts","domains/global/utils.ts","domains/global/sagas.ts","utils/hash-utils.ts","domains/dashboard/sagas.ts","store/root-saga.ts","store/store.ts","domains/chart/utils/jquery-loader.ts","utils/css-loader.ts","domains/chart/utils/chartLibrariesSettings.ts","domains/chart/utils/get-chart-url-options.ts","utils/biggest-interval-number.ts","domains/chart/components/loader.tsx","domains/chart/utils/get-pan-and-zoom-step.ts","utils/safe-equal-check.ts","domains/chart/utils/formatters.ts","utils/color-hex-2-rgb.ts","domains/chart/components/chart-legend-bottom.styled.ts","domains/chart/components/legendText.js","domains/chart/components/chart-legend-right.tsx","domains/chart/components/chart-legend-bottom.tsx","domains/chart/components/chart-legend.tsx","domains/chart/components/legend-toolbox.tsx","domains/chart/components/lib-charts/dygraph/utils.ts","domains/chart/hooks/use-proceeded-chart.ts","domains/chart/components/lib-charts/proceeded-chart-disclaimer.tsx","domains/chart/components/lib-charts/alarmBadge.js","domains/chart/components/lib-charts/dygraph-chart.tsx","domains/chart/hooks/useDygraphBadge.js","utils/debounce.ts","domains/chart/components/lib-charts/easy-pie-chart.tsx","domains/chart/components/lib-charts/gauge-chart.tsx","domains/chart/utils/color-luminance.ts","domains/chart/components/lib-charts/sparkline-chart.tsx","domains/chart/utils/d3-loader.ts","domains/chart/utils/google-visualization-loader.ts","domains/chart/components/lib-charts/d3pie-chart.tsx","domains/chart/components/lib-charts/peity-chart.tsx","domains/chart/components/lib-charts/google-chart.tsx","domains/chart/components/lib-charts/text-only.tsx","domains/chart/components/lib-charts/group-box-chart/utilities.ts","domains/chart/components/lib-charts/group-box-chart/drawBoxes.ts","domains/chart/components/lib-charts/group-box-chart/events.ts","domains/chart/components/lib-charts/group-box-chart/getAlign.ts","domains/chart/components/lib-charts/group-box-chart/groupBox.tsx","domains/chart/components/lib-charts/group-box-chart/groupBoxes.tsx","domains/chart/components/lib-charts/group-box-chart/legend.tsx","domains/chart/components/lib-charts/group-box-chart/kubernetes/getLabel.ts","domains/chart/components/lib-charts/group-box-chart/kubernetes/separator.tsx","domains/chart/components/lib-charts/group-box-chart/kubernetes/header.tsx","domains/chart/components/lib-charts/group-box-chart/kubernetes/tabs.tsx","domains/chart/components/lib-charts/group-box-chart/kubernetes/section.tsx","domains/chart/utils/get-portal-node-styles.ts","hooks/use-common-intersection.ts","domains/chart/components/invisible-searchable-text.tsx","domains/chart/components/disable-out-of-view.tsx","domains/chart/components/chart-container/chart-container.tsx","domains/dashboard/utils/netdata-dashboard.ts","domains/chart/components/lib-charts/group-box-chart/kubernetes/chartOverview.tsx","domains/chart/components/lib-charts/group-box-chart/kubernetes/chart.tsx","domains/chart/components/lib-charts/group-box-chart/kubernetes/item.tsx","domains/chart/components/lib-charts/group-box-chart/kubernetes/dateSection.tsx","domains/chart/components/lib-charts/group-box-chart/kubernetes/metrics.tsx","domains/chart/components/lib-charts/group-box-chart/kubernetes/context.tsx","domains/chart/components/lib-charts/group-box-chart/kubernetes/list.tsx","domains/chart/components/lib-charts/group-box-chart/kubernetes/popover.tsx","domains/chart/components/lib-charts/group-box-chart/kubernetes/index.tsx","domains/chart/components/lib-charts/group-box-chart/kubernetes/transform.ts","domains/chart/components/abstract-chart.tsx","hooks/use-show-value-outside.ts","domains/chart/components/chart.tsx","styles/layout-constants.ts","domains/chart/components/chart-dropdown/styled.ts","domains/chart/components/chart-dropdown/chart-dropdown.tsx","domains/chart/components/chart-spinner/styled.ts","domains/chart/components/chart-spinner/chart-spinner.tsx","domains/chart/components/chart-with-loader/styled.ts","styles/z-index.ts","domains/chart/components/chart-with-loader/chart-with-loader.tsx","domains/chart/hooks/use-fetch-new-data-clock.ts","domains/chart/utils/get-chart-pixels-per-point.ts","domains/dashboard/selectors.ts","domains/chart/components/snapshot-loader.tsx","domains/chart/components/portals.tsx","hooks/use-http.ts","domains/dashboard/components/modal-portal.tsx","domains/dashboard/components/print-modal/print-modal.tsx","domains/dashboard/components/sidebar-social-media/styled.ts","domains/dashboard/components/sidebar-social-media/sidebar-social-media.tsx","domains/dashboard/components/sidebar-social-media-portal/sidebar-social-media-portal.tsx","components/notifications-container/notifications-container.tsx","components/header/item.js","components/header/node/index.js","components/header/options/index.js","components/app-header/components/version-control/version-control.tsx","components/header/version.js","components/mdx-components/dropdown/styled.ts","services/ui-service/ui-theming.ts","rmwc-theme-provider.tsx","components/date-picker/styled.ts","components/mdx-components/dropdown/dropdown.tsx","components/date-picker/assets/header-clock.svg","components/date-picker/short-pick.tsx","components/date-picker/utils.ts","components/date-picker/assets/arrow.svg","components/date-picker/assets/calendar.svg","components/date-picker/accessor-element.tsx","components/date-picker/custom-short-pick.tsx","components/date-picker/assets/month_arrow_l.svg","components/date-picker/assets/month_arrow_r.svg","components/date-picker/picker.tsx","hooks/use-click-outside.ts","components/date-picker/redux-wrapped-picker.tsx","components/header/dateTimePicker.js","components/header/pill/styled.js","components/header/pill/index.js","components/header/alarms.js","components/news/header.js","components/news/item/image.js","components/news/item/anchor.js","components/news/item/index.js","components/news/container.js","components/news/index.js","components/header/news/dataSource/index.js","components/header/news/index.js","components/auth/signIn/index.js","utils/post-message.ts","components/auth/signIn/iframe.js","components/auth/signIn/useCheckSignInStatus.js","components/header/signIn/index.js","components/header/index.js","components/sidebar/spaces/expandButton.js","components/menus/item.js","components/menus/list.js","components/menus/styled.js","components/auth/signOut/index.js","components/sidebar/spaces/userSettings.js","components/sidebar/spaces/spacesSkeleton.js","components/sidebar/spaces/spacesIframe.js","components/sidebar/netdataLogo.js","components/sidebar/spaces/index.js","domains/dashboard/utils/sorting.ts","components/sidebar/space/nodes.js","components/sidebar/space/replicatedNodes/anchor.js","components/sidebar/space/replicatedNodes/node.js","components/sidebar/space/replicatedNodes/index.js","components/sidebar/space/spacePanelIframe.js","components/sidebar/space/prompts/signIn/promptContent.js","components/sidebar/space/prompts/signIn/index.js","components/sidebar/space/prompts/offline/noNetwork.js","components/sidebar/space/prompts/offline/index.js","components/sidebar/space/index.js","components/sidebar/index.js","components/layout/index.js","utils/map-theme.ts","App.tsx","hooks/use-registry.ts","hooks/use-alarms.ts","hooks/use-info.ts","domains/dashboard/hooks/use-charts-metadata.ts","domains/dashboard/hooks/useAlarmFromUrl.js","index.tsx","domains/chart/utils/legend-utils.ts","utils/date-time.ts","utils/env.ts","domains/dashboard/constants.ts","store/redux-separate-context.ts","utils/createRequestAction.ts"],"names":["requestCommonColorsAction","createAction","storeKey","setCommonMinAction","setCommonMaxAction","setGlobalSelectionAction","setGlobalPanAndZoomAction","resetGlobalPanAndZoomAction","setDefaultAfterAction","resetDefaultAfterAction","setGlobalChartUnderlayAction","centerAroundHighlightAction","clearHighlightAction","windowFocusChangeAction","fetchHelloAction","createRequestAction","updatePersonUrlsAction","accessRegistrySuccessAction","startAlarmsAction","fetchAllAlarmsAction","updateActiveAlarmsAction","setOptionAction","resetOptionsAction","loadSnapshotAction","chartsMetadataRequestSuccess","setSpacePanelStatusAction","setSpacePanelTransitionEndAction","setAlarmAction","resetRegistry","SYNC_PAN_AND_ZOOM","INITIAL_OPTIONS","Boolean","window","netdataShowHelp","netdataNoBootstrap","getOptionsMergedWithLocalStorage","optionsFromLocalStorage","Object","keys","localStorage","filter","key","startsWith","map","replace","localStorageKeyToOption","parsed","value","getItem","removeItem","JSON","parse","e","console","log","getItemFromLocalStorage","o","values","overridenOptions","mergeAll","mergeRight","optionsMergedWithLocalStorage","initialLegendRight","clearLocalStorage","forEach","LOCALSTORAGE_HEIGHT_KEY_PREFIX","isPrintMode","location","hash","split","includes","isDemo","hostname","document","endsWith","getIsDemo","currentTemperatureSetting","currentSecondsAsTimeSetting","zeropad","x","toString","scalableUnits","pps","Kpps","Mpps","bytes","kilobytes","megabytes","gigabytes","terabytes","Hz","kHz","MHz","GHz","THz","PHz","EHz","ZHz","B","KiB","MiB","GiB","TiB","PiB","KB","MB","GB","TB","PB","EB","EiB","convertibleUnits","Celsius","Fahrenheit","check","convert","celsius","fahrenheit","seconds","time","unitsConversionCreator","seconds2time","milliseconds","max","tms","Math","round","millisecondsRet","floor","millisecondsReturn","minutes","identity","latest","globalReset","this","secondsReturn","abs","days","hours","get","uuid","min","units","desiredUnits","commonUnitsName","switchUnitsCallback","temperatureSetting","secondsAsTimeSetting","undefined","newConvertFunction","tunits","tdivider","scalableUnitsGroup","unit","unitDivider","commonUnitsKey","t","divider","commonUnits","Button","React","ref","children","className","rest","type","classNames","ToolboxButton","iconType","onClick","onDoubleClick","onMouseDown","onTouchStart","popoverContent","popoverTitle","buttonRef","useRef","showHelp","useSelector","selectShowHelp","useEffect","current","$","popover","container","animation","html","trigger","placement","delay","show","NETDATA","options","show_help_delay_show_ms","hide","show_help_delay_hide_ms","title","content","createSelectAssignedColors","args","state","keyName","getKeyForCommonColorsState","substate","commonColorsKeys","assigned","selectGlobal","global","selectCommonMin","createSelector","_","commonMinKey","globalState","commonMin","selectCommonMax","commonMaxKey","commonMax","selectGlobalSelection","prop","selectGlobalSelectionMaster","selectGlobalPanAndZoom","selectDefaultAfter","selectGlobalChartUnderlay","selectHasWindowFocus","selectSnapshot","selectRegistry","selectCloudBaseUrl","selectSignInUrl","hasSignedInBefore","registry","cloudBaseURL","name","encodeURIComponent","origin","alwaysEndWithSlash","pathname","machineGuid","utmUrlSuffix","selectIsUsingGlobalRegistry","registryServer","selectIsCloudEnabled","isCloudEnabled","isHelloCallError","selectHasFetchedInfo","selectFullInfoPayload","selectHasStartedAlarms","path","selectActiveAlarms","alarms","activeAlarms","selectAlarm","alarm","selectSpacePanelIsActive","selectSpacePanelTransitionEndIsActive","selectOptions","createSelectOption","optionName","selectDestroyOnHide","selectStopUpdatesWhenFocusIsLost","selectShouldEliminateZeroDimensions","selectIsAsyncOnScroll","selectSyncSelection","selectSyncPanAndZoom","selectTheme","selectPanAndZoomDataPadding","selectSmoothPlot","selectUnitsScalingMethod","selectTemperatureSetting","selectSecondsAsTimeSetting","selectTimezoneSetting","selectChartsMetadata","chartsMetadata","data","selectChartMetadataFromChartsCall","chartId","allMetadata","charts","LOCALSTORAGE_HEIGHT_KEY_PREFIX_OLD","ResizeHandler","chartContainerElement","chartUuid","heightId","isLegendOnBottom","useState","clientHeight","resizeHeight","setResizeHeight","dispatch","useDispatch","setResizeHeightAction","id","handleResize","useCallback","event","preventDefault","intialHeight","eventStartHeight","touches","clientY","setHeight","currentHeight","nextHeight","style","height","heightForPersistance","LEGEND_BOTTOM_SINGLE_LINE_HEIGHT","setItem","onMouseMove","onTouchMove","addEventListener","onTouchEnd","removeEventListener","onMouseEnd","stopPropagation","name2id","s","fetchDataAction","fetchDataCancelAction","fetchDataForSnapshotAction","snapshotExportResetAction","fetchChartAction","setChartPanAndZoomAction","resetChartPanAndZoomAction","clearChartStateAction","fetchInfoAction","initialState","currentSelectionMasterId","globalPanAndZoom","defaultAfter","isMainJs","getInitialAfterFromWindow","globalChartUnderlay","hoveredX","hasWindowFocus","hasFocus","spacePanelIsActive","spacePanelTransitionEndIsActive","hasFetchedInfo","hasFetchedHello","isCloudAvailable","isAgentClaimed","isACLKAvailable","hasStartedInfo","isFetchingHello","fullInfoPayload","personGuid","registryMachines","registryMachinesArray","snapshot","hasStartedAlarms","isFetching","isFetchingError","globalReducer","createReducer","colorsAttribute","commonColorsAttribute","chartContext","hasCustomColors","length","hasLastOnly","array","last","createCommonColorsKeysSubstate","custom","init","shouldCopyTheme","available","themes","colors","on","dimensionNames","subState","currentlyAssignedNr","requestedDimensionsAssigned","dimensionName","i","currentExtreme","isActive","payload","after","before","masterID","warn","highlightMargin","resetPanAndZoom","hasFocusNow","request","success","failure","CLOUD_BASE_URL_DISABLED","parsedData","dataKey","uncompressed","uncompress","reduce","acc","obj","typeToClassName","left","reset","right","zoomIn","zoomOut","resize","lineChart","areaChart","noChart","loading","noData","Icon","initialSingleState","chartData","chartMetadata","chartPanAndZoom","fetchDataParams","isRemotelyControlled","viewRange","isFetchingData","isFetchDataFailure","isFetchDetailsFailure","isFetchingDetails","snapshotDataIsFetching","snapshotDataIsError","snapshotData","chartReducer","getSubstate","chart","useNewKeysOnlyIfDifferent","pick","shouldForceTimeRange","assoc","omit","getDataAttribute","element","defaultValue","hasAttribute","getAttribute","test","getAttributesStatic","node","mapObjIndexed","attribute","getDataAttributeBoolean","host","httpMethod","chartLibrary","chartDefaults","library","width","legend","legendPosition","unitsCommon","unitsDesired","aggrMethod","labels","postGroupBy","postAggregationMethod","dimensionsAggrMethod","aggrGroups","selectedChart","filteredRows","groupBy","nodeIDs","commonColors","decimalDigits","dimensions","selectedDimensions","forceTimeWindow","appendOptions","gtime","method","overrideOptions","pixelsPerPoint","points","hideResizeHandler","detectResize","dygraphType","dygraphValueRange","dygraphTheme","dygraphSmooth","dygraphColors","dygraphRightGap","dygraphShowRangeSelector","dygraphShowRoller","dygraphTitle","dygraphTitleHeight","dygraphLegend","dygraphLabelsDiv","dygraphLabelsSeparateLine","dygraphIncludeZero","dygraphShowZeroValues","dygraphShowLabelsOnHighLight","dygraphHideOverlayOnMouseOut","dygraphXRangePad","dygraphYRangePad","dygraphYLabelWidth","dygraphStrokeWidth","dygraphStrokePattern","dygraphDrawPoints","dygraphDrawGapEdgePoints","dygraphConnectSeparatedPoints","dygraphPointSize","dygraphStepPlot","dygraphStrokeBorderColor","dygraphStrokeBorderWidth","dygraphFillGraph","dygraphFillAlpha","dygraphStackedGraph","dygraphStackedGraphNanFill","dygraphAxisLabelFontSize","dygraphAxisLineColor","dygraphAxisLineWidth","dygraphDrawGrid","dygraphGridLinePattern","dygraphGridLineWidth","dygraphGridLineColor","dygraphMaxNumberWidth","dygraphSigFigs","dygraphDigitsAfterDecimal","dygraphHighlighCircleSize","dygraphHighlightSeriesOpts","dygraphHighlightSeriesBackgroundAlpha","dygraphXPixelsPerLabel","dygraphXAxisLabelWidth","dygraphDrawXAxis","dygraphYPixelsPerLabel","dygraphYAxisLabelWidth","dygraphDrawYAxis","dygraphDrawAxis","easyPieChartMinValue","easyPieChartMaxValue","easyPieChartBarColor","easyPieChartTrackColor","easyPieChartScaleColor","easyPieChartScaleLength","easyPieChartLineCap","easyPieChartLineWidth","easyPieChartTrackWidth","easyPieChartSize","easyPieChartRotate","easyPieChartAnimate","easyPieChartEasing","gaugeMinValue","gaugeMaxValue","gaugePointerColor","gaugeStrokeColor","gaugeStartColor","gaugeStopColor","gaugeGenerateGradient","sparklineType","sparklineLineColor","sparklineFillColor","sparklineChartRangeMin","sparklineChartRangeMax","sparklineComposite","sparklineEnableTagOptions","sparklineTagOptionPrefix","sparklineTagValuesAttribute","sparklineDisableHiddenCheck","sparklineDefaultPixelsPerValue","sparklineSpotColor","sparklineMinSpotColor","sparklineMaxSpotColor","sparklineSpotRadius","sparklineValueSpots","sparklineHighlightSpotColor","sparklineHighlightLineColor","sparklineLineWidth","sparklineNormalRangeMin","sparklineNormalRangeMax","sparklineDrawNormalOnTop","sparklineXvalues","sparklineChartRangeClip","sparklineChartRangeMinX","sparklineChartRangeMaxX","sparklineDisableInteraction","sparklineDisableTooltips","sparklineOnHover","sparklineDisableHighlight","sparklineHighlightLighten","sparklineHighlightColor","sparklineTooltipContainer","sparklineTooltipClassname","sparklineTooltipFormat","sparklineTooltipPrefix","sparklineTooltipSuffix","sparklineTooltipSkipNull","sparklineTooltipValueLookups","sparklineTooltipFormatFieldlist","sparklineTooltipFormatFieldlistKey","sparklineNumberFormatter","sparklineNumberDigitGroupSep","sparklineNumberDecimalMark","sparklineNumberDigitGroupCount","sparklineAnimatedZooms","d3pieTitle","d3pieSubtitle","d3pieFooter","d3pieTitleColor","d3pieTitleFontsize","d3pieTitleFontweight","d3pieTitleFont","d3PieSubtitleColor","d3PieSubtitleFontsize","d3PieSubtitleFontweight","d3PieSubtitleFont","d3PieFooterColor","d3PieFooterFontsize","d3PieFooterFontweight","d3PieFooterFont","d3PieFooterLocation","d3PiePieinnerradius","d3PiePieouterradius","d3PieSortorder","d3PieSmallsegmentgroupingEnabled","d3PieSmallsegmentgroupingValue","d3PieSmallsegmentgroupingValuetype","d3PieSmallsegmentgroupingLabel","d3PieSmallsegmentgroupingColor","d3PieLabelsOuterFormat","d3PieLabelsOuterHidewhenlessthanpercentage","d3PieLabelsOuterPiedistance","d3PieLabelsInnerFormat","d3PieLabelsInnerHidewhenlessthanpercentage","d3PieLabelsMainLabelColor","d3PieLabelsMainLabelFont","d3PieLabelsMainLabelFontsize","d3PieLabelsMainLabelFontweight","d3PieLabelsPercentageColor","d3PieLabelsPercentageFont","d3PieLabelsPercentageFontsize","d3PieLabelsPercentageFontweight","d3PieLabelsValueColor","d3PieLabelsValueFont","d3PieLabelsValueFontsize","d3PieLabelsValueFontweight","d3PieLabelsLinesEnabled","d3PieLabelsLinesStyle","d3PieLabelsLinesColor","d3PieLabelsTruncationEnabled","d3PieLabelsTruncationTruncatelength","d3PieMiscColorsSegmentstroke","d3PieMiscGradientEnabled","d3PieMiscColorsPercentage","d3PieMiscGradientColor","d3PieCssprefix","peityStrokeWidth","textOnlyDecimalPlaces","textOnlyPrefix","textOnlySuffix","getAttributes","attributesStatic","showValueOf","showValueOfAttribues","Array","from","attributes","merged","isEmpty","getAttributesDynamic","defaultAttributes","localeDateString","localeTimeString","updateLocaleFunctions","newLocaleDateString","newLocaleTimeString","netdataShowAlarms","netdataRegistry","netdataServer","netdataServerStatic","netdataCheckXSS","reduxStore","escapeUserInputHTML","setOption","getFromRegistry","getState","verifyURL","urlOptions","theme","help","mode","update_always","pan_and_zoom","server","highlight","highlight_after","highlight_before","nowelcome","show_alarms","family","hasProperty","property","genHash","forReload","parseHash","variables","len","p","decodeURIComponent","booleans","numeric","parseInt","welcome","Date","now","hashUpdate","history","replaceState","netdataPanAndZoomCallback","status","netdataSnapshotData","netdataHighlightCallback","d1","d2","getElementById","innerHTML","seconds4human","tooltip","clearHighlight","showHighlight","localStorageTested","localStorageTest","Storage","loadLocalStorage","ret","error","saveLocalStorage","getTheme","def","setTheme","netdataTheme","updateTheme","naturalSortChunkify","j","tz","y","n","charAt","charCodeAt","m","naturalSortCompare","a","b","aa","toLowerCase","bb","c","Number","d","saveTextToClient","filename","blob","Blob","url","URL","createObjectURL","link","createElement","setAttribute","el","appendChild","setTimeout","removeChild","revokeObjectURL","click","saveObjectToClient","stringify","netdataURL","indexOf","substring","netdataReload","reload","gotoHostedModalHandler","gotoServerValidateRemaining","gotoServerMiddleClick","gotoServerStop","gotoServerValidateUrl","guid","penalty","finalURL","registryHello","machine_guid","open","modal","gotoServerModalHandler","checked","alternateUrls","count","registrySearch","urls","switchRegistryModalHandler","notifyForSwitchRegistry","newPersonGuid","ajax","serverDefault","async","cache","headers","xhrFields","withCredentials","done","xss","checkAlways","fail","deleteRegistryGuid","deleteRegistryUrl","deleteRegistryModalHandler","notifyForDeleteRegistry","responseEl","registryDelete","result","menus","submenu_names","version","release_channel","hosts","duration","update_every","chartsPerRow","chartsHeight","total","prioritySort","priority","sortObjectByPriority","object","idx","sorted","hasOwnProperty","push","sort","scrollToId","offset","animate","scrollTop","top","customDashboard","menu","submenu","context","netdataDashboard","sparklines_registry","os","sparkline","prefix","dimension","suffix","gaugeChart","anyAttribute","attr","menuTitle","menu_pattern","slice","menuIcon","menuInfo","menuHeight","submenuTitle","submenuInfo","submenuHeight","relative","contextInfo","contextValueRange","valueRange","contextHeight","contextDecimalDigits","enrichChartData","parts","tmp","match","lastIndexOf","headMain","head","generateHeadCharts","hcharts","hi","hlen","renderPage","div","pcent_width","sidebar","mainhead","main","hasChartsOnBottom","chartAdditionalHeight","menuid","icon","info","shtml","mhead","sub","submenus","si","slen","submenuid","chtml","ci","clen","chartHeight","chartCommonMax","isMemoryModeDbEngine","memory_mode","dimensions_count","toLocaleString","charts_count","alarms_count","printPage","finalizePage","renderChartsAndMenu","menu_key","handleLoadJs","promise","callback","catch","alert","then","loadClipboard","clipboard","loadBootstrapTable","Promise","all","loadBootstrapSlider","slider","default","Slider","loadLzString","loadPako","pako","alarmsUpdateModal","active","footer","alarm_families","count_active","count_all","families","families_sort","charts_by_name","arr","unshift","families_sorted","fc","active_family_added","alarm_to_html","enableTooltipsAndPopovers","alarm_family_show","$accordion","target","bootstrapTable","pagination","pageSize","showPaginationSwitch","search","searchTimeOut","searchAlign","showColumns","showExport","exportDataType","exportOptions","fileName","onClickRow","row","scrollToChartAfterHidingModal","when","rowStyle","classes","showFooter","showHeader","showRefresh","showToggle","sortable","silentSort","columns","field","valign","titleTooltip","formatter","index","timestamp4human","align","switchable","visible","alarmid4human","negative_suffix","space","timestamp","toLocaleDateString","toLocaleTimeString","full","has_alarm","crit","badge_url","action_buttons","recipient","last_status_change","lookup_after","lookup_dimensions","lookup_method","lookup_before","lookup_options","alarm_lookup_explain","calc","green","red","warn_repeat_every","crit_repeat_every","delay_up_duration","delay_down_duration","delay_multiplier","delay_max_duration","exec","source","initializeDynamicDashboardWithData","timezone","clipboardCopy","text","writeText","clipboardCopyBadgeEmbed","initializeConfig","custom_info","loadDashboardInfo","memoizeWith","dataType","loadCustomDashboardInfo","always","extend","initializeChartsAndCustomInfo","chartRegistry","downloadAll","initializeDynamicDashboard","newReduxStore","netdataPrepCallback","innerText","versionLog","msg","versionsMatch","v1","v2","s1","s2","n1","n2","getGithubLatestVersion","tag_name","getGCSLatestVersion","response","mediaLink","xhr","textStatus","errorThrown","checkForUpdateByVersion","force","sha2","showPageFooter","display","parseDom","jsonStringifyFn","jsonParseFn","str","eval","xssModalDisableXss","enabled","enabled_for_data","xssModalKeepXss","notifyForUpdate","sha1","save","printPreflight","screen","snapshotOptions","bytes_per_chart","compressionDefault","compressions","bytes_per_point_memory","bytes_per_point_disk","compress","compressed_length","btoa","deflate","to","inflate","atob","LZString","compressToUTF16","decompressFromUTF16","compressToBase64","decompressFromBase64","compressToEncodedURIComponent","decompressFromEncodedURIComponent","loadSnapshotModalLog","tmpSnapshotData","loadSnapshotPreflightFile","file","string","fr","FileReader","onload","date_after","after_ms","date_before","before_ms","charts_ok","charts_failed","compression","data_size","netdata_version","data_points","duration_ms","snapshot_version","comments","removeClass","addClass","readAsText","loadSnapshotPreflightEmpty","loadSnapshot","highlight_after_ms","highlight_before_ms","loadSnapshotDragAndDropInitialized","loadSnapshotDragAndDropSetup","originalEvent","dataTransfer","files","item","loadSnapshotPreflight","saveSnapshotStop","saveSnapshotCancel","stopSnapshotModeAction","saveSnapshotModalInitialized","saveSnapshotModalSetup","saveSnapshotModalInit","find","focus","saveSnapshotModalLog","saveSnapshotModalShowExpectedSize","saveSnapshotViewDuration","saveSnapshotSelectedSecondsPerPoint","sizemb","saveSnapshotCompression","memmb","saveSnapshotSetCompression","saveSnapshotSlider","browser_timezone","start_ms","reduxState","start_date","yyyymmddhhssmm","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","view","destroy","ticks","step","scale","saveSnapshot","eltxt","saveData","update_every_ms","pack_api1_v1_chart_data","chartDataUniqueID","cstr","clearPanAndZoom","startSnapshotModeAction","dataPoints","saveSnapshotRestore","css","size","chartUpdated","chartsCount","selectAmountOfCharts","chartsOk","selectAmountOfSnapshotsFetched","chartsFailed","selectAmountOfSnapshotsFailed","pcent","Intl","DateTimeFormat","resolvedOptions","timeZone","getOption","option","dashboardSettingsSetup","update_options_modal","sync_option","self","bootstrapToggle","units_sync_option","temp_sync_option","timezoneOption","isUsingTimezone","timezone_sync_option","change","selected_server_timezone","CHART_DIV_ID_PREFIX","CHART_DIV_OFFSET","scrollDashboardTo","chartElement","offsetTop","querySelector","modalHiddenCallback","animated","alarmDate","alarmStatus","runOnceOnDashboardLastRun","runOnceOnDashboardWithjQuery","body","scrollspy","scrollPos","modal_depth","modal_shown","netdata_paused_on_modal","scrollspyOffset","scrollY","overflow","position","pauseCallback","pause","unpause","affix","bottom","removeAttr","Ps","initialize","wheelSpeed","wheelPropagation","swipePropagation","minScrollbarLength","maxScrollbarLength","useBothWheelAxes","suppressScrollX","suppressScrollY","scrollXMarginOffset","scrollYMarginOffset","fn","shorten","settings","config","showChars","minHideChars","ellipsesText","moreText","lessText","onLess","onscroll","onMore","errMsg","off","$this","hasClass","parent","prev","each","substr","inTag","bag","countChars","openTags","tagName","r","shift","retries_on_data_failures","q","arguments","l","getElementsByTagName","src","parentNode","insertBefore","ga","onresizeCallback","update","resetDashboardOptions","isProperTimezone","userSetServerTimezone","netdataCallback","showSignInModal","explicitlySignIn","explicitlySignInAction","MASKED_DATA","INFO_POLLING_FREQUENCY","alarmStatuses","isTimestamp","NETDATA_REGISTRY_SERVER","MS_IN_SECOND","getIframeSrc","getBoundingClientRect","obj1","obj2","equals","currentScript","isTestingEnv","getDefaultServer","isDevelopmentEnv","RegExp","getPathFromScriptSource","cond","T","pipe","concat","serverStatic","define","_uniqueIDCounter","defaultSettings","header","color","fontSize","fontWeight","font","subtitle","titleSubtitlePadding","canvasHeight","canvasWidth","pieInnerRadius","pieOuterRadius","sortOrder","ignoreSmallSegments","valueType","smallSegmentGrouping","label","outer","format","hideWhenLessThanPercentage","pieDistance","inner","mainLabel","percentage","decimalPlaces","lines","truncation","truncateLength","effects","load","effect","speed","pullOutSegmentOnClick","highlightSegmentOnMouseover","highlightLuminosity","tooltips","placeholderParser","styles","fadeInSpeed","backgroundColor","backgroundOpacity","borderRadius","padding","misc","background","segments","segmentStroke","gradient","canvasPadding","pieCenterOffset","cssPrefix","callbacks","onMouseoverSegment","onMouseoutSegment","onClickSegment","validate","pie","d3","HTMLElement","SVGElement","helpers","isArray","isNaN","addSVGSpace","svg","select","append","shuffleArray","tmpVal","randomIndex","currentIndex","random","processObj","is","getDimensions","w","h","getBBox","rectIntersect","r1","r2","getColorShade","hex","lum","String","newHex","initSegmentColors","finalColors","applySmallSegmentGrouping","totalSize","math","getTotalPieSize","newData","groupedData","totalGroupedData","isGrouped","showPoint","isFunction","functionToCheck","call","prototype","copy","copyIsArray","clone","deep","hasOwn","class2type","jQuery","isWindow","isNumeric","parseFloat","isFinite","isPlainObject","nodeType","constructor","toRadians","degrees","PI","toDegrees","radians","computePieRadius","textComponents","headerHeight","exists","innerRadius","percent","outerRadius","smallestDimension","pieDistanceSpace","sortPieData","getPieTranslateCenter","pieCenter","calculatePieCenter","hasTopTitle","hasTopSubtitle","headerOffset","footerOffset","rotate","xm","ym","cos","sin","translate","rads","pointIsInArc","pt","ptData","d3Arc","theta1","startAngle","theta2","endAngle","dist","angle","atan2","add","section","sectionDisplayType","include","getIncludes","outerLabel","insert","labelGroup","__labels","selectAll","enter","formatterContext","part","positionLabelElements","dims","computeLabelLinePositions","lineCoordGroups","computeLinePosition","x2","y2","x3","y3","getSegmentAngle","midpoint","originCoords","heightOffset","outerLabelGroupData","quarter","startOfLabelX","startOfLabel","addLabelLines","lineGroup","lineFunction","line","curve","curveBasis","positionLabelGroups","pieCenterCopy","newCoords","xOffset","yOffset","val","addMainLabel","addValue","addPercentage","computeOuterLabelCoords","getIdealOuterLabelPositions","resolveOuterLabelCollisions","checkConflict","currIndex","direction","curr","currIndexHemisphere","hs","nextIndex","currLabelGroup","examinedLabelGroup","labelHeights","center","lineLength","heightChange","isLabelHidden","adjustLabelPos","lastCorrectlyPositionedLabel","xDiff","yDiff","newXPos","newYPos","sqrt","labelGroupNode","labelGroupDims","originalX","originalY","hemisphere","effectMap","easeLinear","easeBounce","easeSin","easeElastic","easeBack","easeQuad","easeCircle","easeExp","create","pieChartElement","arc","addGradients","grads","addSegmentEventHandlers","merge","segment","currentEl","isExpanded","onSegmentEvent","closeSegment","openSegment","segColor","tt","showTooltip","moveTooltip","hideTooltip","func","expanded","isOpeningSegment","maybeCloseOpenSegment","transition","ease","centroid","pullOutSize","currentlyOpenSegment","getCentroid","bbox","opts","fullValue","compounded","currValue","offscreenCoord","addTitle","__title","positionTitle","headerLocation","addSubtitle","__subtitle","positionSubtitle","getHeaderHeight","addFooter","__footer","positionFooter","footerLocation","footerWidth","totalTitleHeight","footerPlusPadding","addTooltips","caption","replacePlaceholders","currentTooltip","mouseCoords","mouse","replacements","placeholder","d3pie","_setupData","_init","recreate","redraw","getOpenSegment","updateProp","propKey","oldVal","oldValue","dp","_getPercentage","totalPercentage","toFixed","relativeAmount","selectChartsState","selectSingleChartState","chartsState","selectChartData","chartState","selectChartMetadataFromExplicitCall","selectChartMetadata","metadataFromAll","metadataFromSingleCall","selectIsFetchingDetails","makeSelectChartMetadataRequest","selectChartViewRange","selectChartIsFetchingData","selectChartFetchDataParams","selectResizeHeight","selectChartPanAndZoom","selectAmountOfFetchedCharts","hasCompletedFetching","selectNameOfAnyFetchingChart","showSignInModalAction","isSignedInAction","setOfflineAction","fallbackUpdateTimeInterval","panAndZoomDelay","totalSeconds","defaultOptions","day","hour","minute","second","and","strings","pop","join","module","exports","require","Error","code","u","1","v","g","f","run","clearTimeout","fun","nextTick","apply","browser","env","argv","versions","addListener","once","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","2","defineProperty","__esModule","extractSeries","rollingAverage","3","pow","4","5","onPointsCreated_","y_top","NaN","y_bottom","yval_minus","yval_plus","getExtremeYValues","onLineEvaluated","calcYNormal_","6","X","Y","EXTRAS","seriesToPoints","xval","yval","canvasx","canvasy","7","8","9","dygraph_","layout","elementContext","height_","width_","isCanvasSupported","area","getPlotArea","canvas_ctx_","beginPath","rect","clip","hidden_ctx_","clear","clearRect","render","_updatePoints","_renderLineChart","_getIteratorPredicate","_predicateThatSkipsEmptyPoints","_drawStyledLine","dygraph","getBooleanOption","setName","isArrayLike","createIterator","drawingContext","setLineDash","_drawSeries","_drawPointsOnLine","restore","strokeStyle","lineWidth","array_","end_","predicate_","start_","moveTo","lineTo","nextIdx_","next","hasNext","peek","stroke","setNames","colorsMap_","strokeWidth","axis","axisPropertiesForSeries","plotArea","seriesIndex","seriesCount","singleSeriesName","allSeriesPoints","_Plotters","linePlotter","_linePlotter","fillPlotter","_fillPlotter","errorPlotter","_errorPlotter","getNumericOption","Circles","DEFAULT","toRGB_","fillStyle","closePath","fill","_fastCanvasProxy","splice","_count","getLabels","visibility","getColors","A","minyval","yscale","O","D","E","L","S","P","C","M","FORCE_FAST_PROXY","N","F","isOK","k","y_stacked","10","highlightCircleSize","highlightSeriesOpts","highlightSeriesBackgroundAlpha","highlightSeriesBackgroundColor","labelsSeparateLines","labelsShowZeroValues","labelsKMB","labelsKMG2","showLabelsOnHighlight","digitsAfterDecimal","maxNumberWidth","sigFigs","strokeBorderWidth","strokeBorderColor","axisTickSize","axisLabelFontSize","rightGap","showRoller","xValueParser","delimiter","sigma","errorBars","fractions","wilsonInterval","customBars","fillGraph","fillAlpha","connectSeparatedPoints","stackedGraph","stackedGraphNaNFill","hideOverlayOnMouseOut","stepPlot","xRangePad","yRangePad","drawAxesAtZero","titleHeight","xLabelHeight","yLabelWidth","axisLineColor","axisLineWidth","gridLineWidth","axisLabelWidth","gridLineColor","interactionModel","defaultModel","animatedZooms","showRangeSelector","rangeSelectorHeight","rangeSelectorPlotStrokeColor","rangeSelectorPlotFillGradientColor","rangeSelectorPlotFillColor","rangeSelectorBackgroundStrokeColor","rangeSelectorBackgroundLineWidth","rangeSelectorPlotLineWidth","rangeSelectorForegroundStrokeColor","rangeSelectorForegroundLineWidth","rangeSelectorAlpha","showInRangeSelector","plotter","plugins","axes","pixelsPerLabel","axisLabelFormatter","dateAxisLabelFormatter","valueFormatter","dateValueFormatter","drawGrid","drawAxis","independentTicks","ticker","dateTicker","numberValueFormatter","numberAxisLabelFormatter","numericTicks","11","draw","date_graph","setSelection","getSelection","layout_","column","12","dragEndX","dragGetX_","dragEndY","dragGetY_","dragStartX","dragStartY","lastx_","treatMouseOpAsClick","regionWidth","regionHeight","isPanning","xAxisRange","getOptionForAxis","initialLeftmostDate","log10","dateRange","xUnitsPerPixel","plotter_","xAxisExtremes","toDomXCoord","toDataXCoord","boundedDates","axes_","extremeRange","toDomYCoord","toDataYCoord","boundedValues","is2DPan","yAxisRange","attributes_","getForAxis","initialTopValue","dragValueRange","unitsPerPixel","dateWindow_","LOG_SCALE","drawGraph_","endPan","maybeTreatMouseOpAsClick","startZoom","isZooming","zoomMoved","moveZoom","dragDirection","VERTICAL","HORIZONTAL","drawZoomRect_","prevDragDirection","prevEndX","prevEndY","getFunctionOption","MAX_VALUE","selPoints_","cancelable","point","cascadeEvents_","pts","endZoom","clearZoomRect_","getArea","doZoomX_","cancelNextDblclick","doZoomY_","startTouch","startTimeForDoubleTapMs","pageX","pageY","dataX","dataY","initialTouches","initialPinchCenter","touchDirections","initialRange","moveTouch","yAxisRanges","endTouch","changedTouches","getTime","doubleTapX","screenX","doubleTapY","screenY","resetZoom","findPos","canvas_","offsetWidth","offsetHeight","mousedown","button","initializeMouseDown","altKey","shiftKey","startPan","movePan","addAndTrackEvent","removeEvent","willDestroyContextMyself","touchstart","touchmove","touchend","dblclick","nonInteractiveModel_","mouseup","dragIsPanInteractionModel","mousemove","13","annotations","yAxes_","xTicks_","yTicks_","addDataset","area_","computePlotArea","chart_div","graphDiv","reserveSpaceLeft","reserveSpaceRight","reserveSpaceTop","reserveSpaceBottom","chartRect","setAnnotations","setXTicks","setYAxes","evaluate","_xAxis","_evaluateLimits","_evaluateLineCharts","_evaluateLineTicks","_evaluateAnnotations","minval","maxval","xlogrange","xlogscale","computedValueRange","maxyval","yrange","ylogrange","ylogscale","calcXNormal_","getForSeries","yval_stacked","dataHandler_","xticks","label_v","toPercentXCoord","pos","has_tick","yticks","toPercentYCoord","series","annotated_points","annotation","removeAllDatasets","setPointsLengths","setPointsOffsets","14","_process","15","xAxis_","series_","global_","attrs_","user_","user_attrs_","labels_","highlightSeries_","reparseSeries","AXIS_STRING_MAPPINGS_","y1","Y1","Y2","axisToIndex_","yAxis","getGlobalUser_","getGlobalDefault_","getHighlightSeries","numAxes","axisForSeries","axisOptions","seriesForAxis","seriesNames","16","numericLinearTicks","binarySearch","tickValue","pixel_coord","reverse","ceil","MILLISECONDLY","TWO_MILLISECONDLY","FIVE_MILLISECONDLY","TEN_MILLISECONDLY","FIFTY_MILLISECONDLY","HUNDRED_MILLISECONDLY","FIVE_HUNDRED_MILLISECONDLY","SECONDLY","TWO_SECONDLY","FIVE_SECONDLY","TEN_SECONDLY","THIRTY_SECONDLY","MINUTELY","TWO_MINUTELY","FIVE_MINUTELY","TEN_MINUTELY","THIRTY_MINUTELY","HOURLY","TWO_HOURLY","SIX_HOURLY","DAILY","TWO_DAILY","WEEKLY","MONTHLY","QUARTERLY","BIANNUAL","ANNUAL","DECADAL","CENTENNIAL","NUM_GRANULARITIES","Granularity","datefield","spacing","DateAccessorsUTC","DateAccessorsLocal","getMilliseconds","getDay","makeDate","getDateAxis","17","toExponential","toPrecision","nt","rt","ot","st","cancelEvent","cancelBubble","cancel","returnValue","hsvToRGB","documentElement","pageXOffset","scrollLeft","pageYOffset","px","py","isValidPoint","floatFormat","hmsString_","dateString_","round_","dateParser","dateStrToMillis","updateDeep","Node","nodeName","isDateLike","createCanvas","getContextPixelRatio","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","Iterator","repeatAndCleanup","et","isPixelChangingOptionList","at","detectLineDelimiter","isNodeContainedBy","getComputedStyle","getContext","parseFloat_","G","lt","W","LN_TEN","U","logRangeFraction","DOTTED_LINE","DASHED_LINE","DOT_DASH_LINE","addEvent","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","getUTCDay","UTC","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","requestAnimFrame","annotationClickHandler","annotationDblClickHandler","annotationMouseOutHandler","annotationMouseOverHandler","clickCallback","drawCallback","drawHighlightPointCallback","drawPoints","drawPointCallback","highlightCallback","labelsDiv","panEdgeFraction","pixelsPerYLabel","pointClickCallback","pointSize","underlayCallback","unhighlightCallback","zoomCallback","it","18","Symbol","iterator","return","TypeError","R","H","Z","Q","__init__","NAME","VERSION","DEFAULT_ROLL_PERIOD","DEFAULT_WIDTH","DEFAULT_HEIGHT","ANIMATION_STEPS","ANIMATION_DURATION","Plotters","addedAnnotationCSS","is_initial_draw_","readyFns_","copyUserAttrs_","maindiv_","file_","rollPeriod_","rollPeriod","previousVerticalX_","fractions_","dateWindow","annotations_","clientWidth","boundaryIds_","setIndexByName_","datasetIndex_","registeredEvents_","eventListeners_","createInterface_","plugins_","PLUGINS","plugin","activate","events","pluginOptions","createDragInterface_","defaultPrevented","propagationStopped","getPluginInstance_","isZoomed","attr_","getStringOption","optionsViewForAxis_","numRows","rawData_","yAxisExtremes","gatherDatasets_","rolledSeries_","extremes","computeYAxisRanges_","toDomCoords","toDataCoords","numColumns","getValue","textAlign","hidden_","createPlotKitCanvas_","resizeElements_","mouseEventElement_","createMouseEventElement_","mouseMoveHandler_","mouseMove_","mouseOutHandler_","fromElement","relatedTarget","toElement","mouseOut_","resizeHandler_","removeTrackedEvents_","hasChildNodes","firstChild","setColors_","colors_","getPropertiesForSeries","createRollInterface_","roller_","onchange","adjustRoll","tarp","cover","draggingDate","draggingValue","uncover","fillRect","currentZoomRectArgs_","doZoomXDates_","doAnimatedZoom","zoomAnimationFunction","clearSelection","eventToDomCoords","offsetX","offsetY","findClosestRow","findClosestPoint","seriesName","findStackedPoint","getLeftBoundary_","isSeriesLocked","lastRow_","highlightSet_","animateSelection_","fadeLevel","animateId","updateSelection_","selectedRow","selectedX","selectedPoints","lockedSet_","loadedEvent_","parseCSV_","cascadeDataDidUpdateEvent_","predraw_","addXTicks_","getHandlerClass_","computeYAxes_","drawingTimeMs_","PointType","stackPoints_","boundaryIds","renderGraph_","canvas","readyFired_","detectTypeFromString_","setXAxisOptions_","parseArray_","parseDataTable_","getNumberOfColumns","getNumberOfRows","getColumnType","getColumnLabel","shortText","fromCharCode","getColumnRange","XMLHttpRequest","ActiveXObject","onreadystatechange","readyState","responseText","send","updateOptions","resize_lock","setVisibility","indexFromSetName","getRowForX","ready","elem","GVizChart","defaultInteractionModel","nonInteractiveModel","Plugins","Legend","Axes","Annotations","ChartLabels","Grid","RangeSelector","DataHandlers","DefaultHandler","BarsHandler","CustomBarsHandler","DefaultFractionHandler","ErrorBarsHandler","FractionsBarsHandler","19","tarps","zIndex","20","clearChart","didDrawChart","detachLabels","tickHeight","cssClass","createTextNode","attachAtBottom","borderColor","tickColor","tickWidth","21","xlabels_","ylabels_","willDrawChart","22","title_div_","xlabel_div_","ylabel_div_","y2label_div_","detachLabels_","23","24","legend_div_","is_generated_div_","one_em_width_","deselect","predraw","generateLegendHTML","dashHTML","labelHTML","isVisible","xHTML","yHTML","isHighlighted","defaultFormatter","25","hasTouchInterface_","TouchEvent","isMobileDevice_","navigator","appVersion","interfaceCreated_","getOption_","reserveSpace_","renderStaticLayer_","renderInteractiveLayer_","bgcanvas_","fgcanvas_","leftZoomHandle_","rightZoomHandle_","setDefaultOption_","createCanvases_","createZoomHandles_","initInteraction_","addToGraph_","graphDiv_","removeFromGraph_","updateVisibility_","resize_","drawStaticLayer_","isChangingRange_","placeZoomHandles_","drawInteractiveLayer_","canvasRect_","bgcanvas_ctx_","fgcanvas_ctx_","cursor","Image","cloneNode","leftHandlePos","rightHandlePos","clientX","srcElement","getZoomHandleStatus_","targetTouches","opera","drawMiniPlot_","computeCombinedSeriesAndLimits_","yMax","yMin","createLinearGradient","addColorStop","MIN_VALUE","isSnapshotMode","snapshotCharts","snapshotDataPoints","isSignedIn","offline","dashboardReducer","combineReducers","globalKey","chartKey","dashboardKey","axiosInstance","axios","Pragma","getFetchStream","concurrentCallsLimit","fetch$","Subject","resetFetch$","handler","mergeMap","params","onErrorCallback","onSuccessCallback","cancelTokenSource","timeout","cancelToken","token","tap","responseData","catchError","message","empty","startWith","switchMap","subscribe","fillMissingData","nrOfPointsToFill","viewUpdateEvery","view_update_every","firstAddedTimestamp","emptyPoint","tail","nulls","addPointsDygraph","emptyArray","transformResults","shouldRevertFlip","dataResult","pointData","sum","Container","styled","getSizeBy","SideContent","ContentContainer","HeaderText","Text","getColor","ContentText","TextSmall","UINotification","props","leftContent","rightContent","renderContent","createUINotification","NodeIconContainer","NotificationLink","toastOptions","toast","POSITION","BOTTOM_RIGHT","autoClose","pauseOnFocusLoss","showCloudInstallationProblemNotification","notificationComponent","showCloudConnectionProblemNotification","uiNotification","href","defaultUrlOptions","alarm_unique_id","alarm_id","alarm_event_id","alarm_when","parseQueryPair","isInvalidPair","mapIndexed","parseUrl","watchFetchDataResponseChannel","fetchDataSaga","fetchChartSaga","fetchInfoSaga","chartSagas","CONCURRENT_CALLS_LIMIT_METRICS","fetchDataResponseChannel","channel","take","action","start","end","put","constructCompatibleKey","IS_FLIP_RESPECTED_IN_COMPOSITE_CHARTS","getGroupByValues","fetchMetrics$","group","dimensionsWithUrlOptions","matchingKey","snapshotKey","agentOptionsOriginal","hasFlip","agentOptions","shouldAddFakeFlip","groupValues","axiosOptions","agent_options","post_aggregation_methods","aggregations","valueOf","fillMissingPoints","transformedResults","postAggregated","post_aggregated_data","fetchForSnapshot$","resetFetchForSnapshot$","fetchDataForSnapshotSaga","aggr_method","node_ids","stopSnapshotModeSaga","poll","wasCloudAvailable","wasACLKAvailable","takeEvery","spawn","sidePanelTransitionTimeInSeconds","getLog","notifyAll","alarmsLoop","startAlarms","fetchAllAlarmsSaga","alarmsSagas","ALARMS_INITIALIZATION_DELAY","ALARMS_UPDATE_EVERY","ALARMS_MS_BETWEEN_NOTIFICATIONS","areNotificationsAvailable","notificationCallback","netdataAlarmsNotifCallback","firstNotificationId","lastNotificationId","scrollToAlarm","chartID","scrollToChart","requestPermissions","Notification","permission","requestPermission","hasGivenNotificationPermissions","lastNotificationIdArg","getNotification","entry","firstNotificationIdArg","updated","valueString","value_string","tag","interaction","unique_id","old_status","no_clear_notification","notificationTitle","notificationOptions","requireInteraction","notificationHandler","alarmLogs","logsSorted","sortBy","newLogs","notifications","onclick","netdataAlarmsRemember","what","latest_alarm_log_unique_id","allAlarms","allowedReferrerDomains","isAllowedReferrer","referrer","watchWindowFocusChannel","waitForFullInfoPayload","injectPosthog","fetchHelloSaga","spacePanelSaga","globalSagas","windowFocusChannel","listenToWindowFocus","posthog","__SV","_i","api_host","people","loaded","identify","shouldMaskReferrer","register","$ip","$current_url","$pathname","$host","$initial_referring_domain","$initial_referrer","$referring_domain","$referrer","event_source","netdata_machine_guid","netdata_person_id","netdata_buildinfo","netdata_release_channel","mirrored_host_count","mirrored_hosts","alarms_normal","normal","alarms_warning","warning","alarms_critical","critical","host_os_name","os_name","host_os_id","os_id","host_os_id_like","os_id_like","host_os_version","os_version","host_os_version_id","os_version_id","host_os_detection","os_detection","system_cores_total","cores_total","system_total_disk_space","total_disk_space","system_cpu_freq","cpu_freq","system_ram_total","ram_total","system_kernel_name","kernel_name","system_kernel_version","kernel_version","system_architecture","architecture","system_virtualization","virtualization","system_virt_detection","virt_detection","system_container","system_container_detection","container_detection","container_os_name","container_os_id","container_os_id_like","container_os_version","container_os_version_id","host_collectors_count","collectors","host_cloud_enabled","host_cloud_available","host_agent_claimed","host_aclk_available","host_aclk_implementation","host_allmetrics_json_used","host_allmetrics_prometheus_used","host_allmetrics_shell_used","host_charts_count","host_dashboard_used","host_metrics_count","host_notification_methods","config_memory_mode","config_exporting_enabled","config_exporting_connectors","config_hosts_available","config_https_enabled","config_multidb_disk_quota","config_page_cache_size","config_stream_enabled","config_web_enabled","host_is_parent","host_labels","_is_parent","mirrored_hosts_reachable","mirrored_hosts_status","reachable","mirrored_hosts_unreachable","host_collectors","host_is_k8s_node","is_k8s_node","accessRegistry","maxRedirects","machine","isRedirect","returnData","person_guid","parsePersonUrls","personUrls","lastTimestamp","accesses","existingObj","isNewer","extended","uniq","helloCallUrl","cloud_base_url","isUsingGlobalRegistry","accessRegistryResponse","anonymous_statistics","constructOptionStorageKey","setOptonSaga","fragmentParamsSeparatorRegEx","getHashParams","param","makeHashFromObject","entries","setHashParams","allParams","allParamsResult","mergeDeepLeft","removeHashParams","excludedParams","filteredParams","getFilteredHash","showSignInSaga","mainJsSagas","LOCAL_STORAGE_NEEDS_SYNC","setGlobalChartUnderlaySaga","hashParams","clearHighlightSaga","signInLinkHref","rootSaga","sagaMiddleware","createSagaMiddleware","store","createStore","rootReducer","compose","applyMiddleware","configureStore","loadCss","resolve","reject","fileRef","onerror","isDygraphSparkline","chartLibrariesSettings","hasToolboxPanAndZoom","xssRegexIgnore","isLogScale","hasLegend","trackColors","containerClass","peity","google","easypiechart","aspectRatio","gauge","textonly","groupbox","getChartURLOptions","shouldEliminateZeroDimensions","BIGGEST_INTERVAL_NUMBER","Loader","containerNode","hasEmptyData","screenHeight","lost","paddingTop","getPanAndZoomStep","ctrlKey","pan_and_zoom_factor","pan_and_zoom_factor_multiplier_control","pan_and_zoom_factor_multiplier_shift","pan_and_zoom_factor_multiplier_alt","safeEqualCheck","formattersFixed","formattersZeroBased","fastNumberFormat","NumberFormat","useGrouping","minimumFractionDigits","maximumFractionDigits","getLegendFormatValue","convertUnits","intlNumberFormat","valueDecimalDetail","dmin","dmax","convertedValue","useFormatters","setConvertUnits","setMin","setMax","unitsCurrent","setUnitsCurrent","decimals","setDecimals","setIntlNumberFormat","legendFormatValue","useMemo","legendFormatValueRef","updateLegendFormatValueRef","newConvertUnits","newIntlNumberFormat","newDecimalDigits","legendFormatValueDecimalsFromMinMax","newMin","newMax","switchedUnits","newDecimals","convertedMin","convertedMax","delta","defaultColor","LegendContainer","LegendFirstRow","LegendSecondRow","LegendUnit","DateTimeSeparator","span","LegendItems","DimensionItem","isDisabled","DimensionItemToolboxPlaceholder","DimensionIcon","DimensionLabel","DimensionValue","ToolboxContainer","emptyObject","selector","dimension_names","LegendText","ChartLegendRight","hoveredRow","onDimensionClick","showLatestOnBlur","viewBefore","dimensionIds","dimension_ids","showUndefined","legendDate","colorFillOpacity","chart_type","useDateTime","scrollbarRef","legendPluginModuleString","legendResolutionTooltip","dimensionId","rgb","hexFull","colorHex2Rgb","isSelected","hoveredValueArray","view_latest_values","role","tabIndex","ChartTimeframe","ChartLegendBottom","legendToolbox","resizeHandler","ChartLegend","setSelectedDimensions","clickedDimensionName","isModifierKeyPressed","newSelectedDimensions","getNewSelectedDimensions","allDimensions","LegendToolbox","onToolboxLeftClick","onToolboxResetClick","onToolboxRightClick","onToolboxZoomInClick","onToolboxZoomOutClick","getDataForFakeStacked","dimensionsVisibility","currentMin","currentMax","getDygraphChartType","chartSettings","dygraphRequestedType","dygraphChartType","getBackgroundColor","Color","transformColors","mix","getDygraphFillAlpha","isFakeStacked","color_fill_opacity_fake_stacked","color_fill_opacity_stacked","color_fill_opacity_area","useProceededChart","chartRef","propsRef","useToggle","proceeded","toggleProceeded","updatePosition","distance","first_entry","hasProceeded","ProceededChartDisclaimer","forwardRef","data-testid","rel","backgroundColorMap","WARNING","CRITICAL","CLEAR","borderColorMap","getBorderColor","textColorMap","Badge","border","getInitialDygraphOptions","hiddenLabelsElementId","orderedColors","setMinMax","shouldSmoothPlot","xAxisDateString","xAxisTimeString","isSparkline","grid","includeZero","ylabel","smoothPlotter","strokePattern","drawGapEdgePoints","gridLinePattern","logscale","Dygraph","toTimeString","DygraphChart","chartElementClassName","chartElementId","onUpdateChartPanAndZoom","immediatelyDispatchPanAndZoom","setGlobalChartUnderlay","setHoveredX","viewAfter","selectedAlarm","updateChartPanOrZoom","shouldNotExceedAvailableRange","dygraphInstance","latestIsUserAction","isMouseDown","dygraphHighlightAfter","dygraphLastTouchMove","dygraphLastTouchPageX","dygraphLastTouchEnd","isSyncPanAndZoom","resetGlobalPanAndZoom","isRendered","toggleIsRendered","useDygraphBadge","isBadgeVisible","alarmBadgeRef","updateAlarmBadge","isProceeded","precededChartRef","updatePrecededPosition","useLayoutEffect","dygraphOptionsStatic","dygraphOptions","newHoveredX","xRange","last_entry","isInRangeOfAvailableData","minDate","maxDate","currentAlarm","alarmPosition","fillColor","globalAlphaCache","globalAlpha","bottomLeft","topRight","isOutsideReasonableViewport","metaKey","sortedRange","wheel","adjustAxis","zoomInPercentage","bias","increment","foo","normalDef","wheelDelta","deltaY","detail","percentages","yar0","offsetToPercentage","xPct","yPct","xBias","yBias","yAxes","newYAxes","zoomRange","updatedAfter","updatedBefore","dygraphPlotter","pct","double_click_speed","instance","useUpdateEffect","forceDateWindow","hasChangedDuration","hasScrolledToTheFutureDuringPlayMode","optionsDateWindow","commonMinState","commonMaxState","shouldUseCommonMin","shouldUseCommonMax","shouldUpdate","newExtremes","useUnmount","resizeObserver","useMount","hasOmitedFirstCallback","callbackDebounced","waitFor","debounce","ResizeObserver","observe","disconnect","EasyPieChart","chartWidth","chartInstance","setChartInstance","valueIndex","safeMinMax","_min","_max","isMinOverride","isMaxOverride","getPercentFromValueMinMax","easypiechart_track","easypiechart_scale","newChartInstance","EasyPie","barColor","trackColor","scaleColor","scaleLength","lineCap","trackWidth","easing","shouldUseAnimation","enableAnimation","disableAnimation","valueFontSize","valuetop","titleFontSize","titletop","unitFontSize","unitTop","isSetByUser","GaugeChart","chartCanvasElement","minAttribute","maxAttribute","safeMin","safeMax","_pcent","gauge_pointer","gauge_stroke","radiusScale","pointer","limitMax","limitMin","colorStart","colorStop","strokeColor","generateGradient","gradientType","highDpiSupport","Gauge","setOptions","minValue","maxValue","animationSpeed","set","valueTop","minMaxFontSize","normalizeHex","colorLuminance","hexNormalized","splitEvery","nr","convertToTimestamp","number","SparklineChart","viewAfterForCurrentData","viewBeforeForCurrentData","$chartElement","set$chartElement","sparklineOptions","requestedAfter","requestedBefore","currentDuration","requestedDuration","widthRatio","paddingLeftPercentage","getForceTimeWindowCorrection","defaultFillColor","fill_luminance","chartTitle","emptyStringIfDisable","sparklineInitOptions","lineColor","chartRangeMin","chartRangeMax","composite","enableTagOptions","tagOptionPrefix","tagValuesAttribute","disableHiddenCheck","defaultPixelsPerValue","spotColor","minSpotColor","maxSpotColor","spotRadius","valueSpots","highlightSpotColor","highlightLineColor","normalRangeMin","normalRangeMax","drawNormalOnTop","xvalues","chartRangeClip","chartRangeMinX","chartRangeMaxX","disableInteraction","disableTooltips","disableHighlight","highlightLighten","highlightColor","tooltipContainer","tooltipClassname","tooltipChartTitle","tooltipFormat","tooltipPrefix","tooltipSuffix","tooltipSkipNull","tooltipValueLookups","tooltipFormatFieldlist","tooltipFormatFieldlistKey","numberFormatter","numberDigitGroupSep","numberDecimalMark","numberDigitGroupCount","onLeave","onChange","sparklines","getCurrentRegionFields","bind","unbind","paddingLeft","fetchPromise","emptyContent","getDateRange","dt","dtString","t1","t2","D3pieChart","d3pieInstance","setD3pieInstance","d3pieOptions","safeContent","defaultTitle","other","mainlabel","segment_stroke","gradient_color","initialD3pieOptions","tooltip_bg","tooltip_fg","newD3pieInstance","isHoveredButNoData","slot","PeityChart","peityOptions","$element","peityInitOptions","foreground","updatedOptions","GoogleChart","googleChartInstance","hasApiBeenLoaded","setHasApiBeenLoaded","script","firstScript","packages","googleOptions","dataTable","visualization","DataTable","chartType","areaOpacity","Map","initialGoogleOptions","hAxis","viewWindowMode","slantedText","textStyle","gridlines","vAxis","chartArea","focusTarget","pointsVisible","titlePosition","titleTextStyle","isHtml","ignoreBounds","curveType","isStacked","googleInstance","AreaChart","LineChart","TextOnly","precision","textContent","getRows","getColumns","rows","getXPosition","getYPosition","getWidth","onMouseenter","onMouseout","activeBox","deactivateBox","activateBox","clearEvents","getCanvasAttributes","scaleLinear","domain","extent","range","drawBox","cellSize","hoveredIndex","getEvent","mouseout","nextHoveredIndex","registerEvents","strokeRect","cellBoxSize","innerHeight","aligns","GroupBox","renderTooltip","dataRef","canvasRef","boxesRef","hover","setHover","dropHoverRef","boxHoverRef","timeoutId","close","closeDrop","currentHover","drawBoxes","onMouseEnter","onMouseLeave","getAlign","Title","Label","Flex","attrs","as","TextMicro","gap","GroupBoxWrapper","groupIndex","renderGroupPopover","renderBoxPopover","maxWidth","boxPopover","boxAlign","groupPopover","alignItems","margin","plain","isOpen","popoverRef","strong","GroupBoxes","flexWrap","vertical","flex","LinearColorScaleBar","k8s_cluster_id","k8s_node_name","k8s_namespace","k8s_controller_kind","k8s_controller_name","k8s_pod_name","k8s_container_name","labelIds","word","toUpperCase","Separator","Header","wordBreak","TabButton","flavour","neutral","themeType","disabled","Tabs","ExpandButton","makeFlex","Section","onExpand","noBorder","side","justifyContent","oldDefaultHeights","getPortalNodeStyles","shouldAddSpecialHeight","heightFromLocalStorage","heightID","persitedHeight","persistedHeightOld","getHeightFromLocalStorage","heightOverriden","chartDefaultsMinWidth","min_width","minWidth","globalIntersectionOptions","root","rootMargin","threshold","globalIntersectionObserver","globalObserver","IntersectionObserver","isIntersecting","unsubscribe","elementToUnsubscribe","createGlobalIntersectionObserver","InvisibleSearchableText","opacity","shouldCleanChartStateAlways","DisableOutOfView","portalNode","hasPortalNodeBeenStyled","setHasPortalNodeBeenStyled","isShowingAlarmOnChart","forEachObjIndexed","styleName","setProperty","destroyOnHide","clonedChildrenRef","isVisibleIntersection","setIsVisible","isVisibleRef","newIsVisible","useCommonIntersection","debounceTime","shouldHideDebounced","setShouldHideDebounced","useDebounce","shouldHide","previousIsVisibleIntersection","newClonedChildren","child","cloned","clonedCanvases","querySelectorAll","oldCanvas","newCanvas","drawImage","cloneWithCanvas","clonedChildrenContainer","nodeElement","ChartContainer","dropdownMenu","renderCustomElementForDygraph","onAttributesChange","externalChartMetadata","sectionTitle","aggrMethods","avg","ChartValueContainer","memo","displayedIndex","aggregation","getAggregation","ChartValue","dangerouslySetInnerHTML","__html","groupLabel","postGroupLabel","relatedIndex","useContext","ThemeContext","chartContainerRef","setDisplayedIndex","setDisplayedIndexThrottled","throttle","repaint","relatedCharts","relatedChartAttributes","chartAttributes","chartLabels","ExternalButton","alignSelf","Item","secondary","DateItem","date","DateSection","Metrics","LabelsSection","labelId","items","onItemClick","getLabel","sliced","expandable","onNodeClick","ids","predefinedLabelIds","getLabelIds","StyledButton","List","onBack","horizontal","TabsContainer","Popover","setView","isLabelView","Kubernetes","labelValues","postGroupValues","postGroupData","groupValue","indexes","boxes","labelsAcc","groupData","groupChartLabels","groupLabels","Set","accChartLabels","transform","groupBoxData","groupedBoxesData","groupedBox","AbstractChart","showValueAttributesNodes","userElementId","chartSettingCallOptions","isFlipped","dimensionIndex","useShowValueOutside","Chart","viewRangeForCurrentData","themeContext","unitsScalingMethod","shouldDisplayToolbox","legend_toolbox","shouldDisplayResizeHandler","resize_charts","allDimensionNames","dimensionNamesFromMetadata","additionalDimensionNamesFromData","localHoveredX","setLocalHoveredX","isSyncSelection","handleSetHoveredX","noMaster","globalHoveredX","netdataFirst","netdataLast","fixedMinDuration","setGlobalPanAndZoomDebounced","useDebouncedCallback","newGlobalPanAndZoom","flush","handleUpdateChartPanAndZoom","shouldFlushImmediately","minDuration","currentDuraton","afterForced","beforeForced","first","wantedDuration","doCallback","tolerance","movement","handleToolBoxPanAndZoom","newAfter","newBefore","handleToolboxLeftClick","handleToolboxRightClick","timeWindow","handleToolboxZoomInClick","panAndZoomStep","handleToolboxZoomOutClick","handleToolboxResetClick","selectAssignedColors","__","isTimeVisible","grayLimedSpruce","DropdownItem","DropdownItemLabel","DotsBtn","ChartDropdown","setIsOpen","handleClose","onClose","circleAnimation","keyframes","SpinnerContainer","Circle","Circle2","Circle3","ChartSpinner","spaceBetween","ChartDropdownContainer","dimensionsAggrMethodMap","ChartWithLoader","selectChartMetadataRequest","actualChartMetadata","panAndZoom","isPanAndZoomMaster","areCriteriaMet","preferedIntervalTime","stopUpdatesWhenFocusIsLost","shouldBeUpdating","shouldFetch","setShouldFetch","shouldFetchImmediatelyAfterFocus","setShouldFetchImmediatelyAfterFocus","intervalTime","useInterval","useFetchNewDataClock","panAndZoomThrottled","useThrottle","initialBefore","liveModeAfter","boundingClientRect","isShowingSnapshot","shouldUsePanAndZoomPadding","CancelToken","shouldShowSpinnerDebounced","setShouldShowSpinnerDebounced","shouldShowSpinner","newViewRange","forceDataPoints","force_data_points","pointsMultiplier","requestedPadding","pixelsPerPointAttribute","pixelsPerPointSetting","pixels_per_point","getChartPixelsPerPoint","correctedPoints","firstEntry","nowInSeconds","afterAbsolute","beforeAbsolute","requestedRange","availableRange","getCorrectedPoints","externalSelectedDimensions","customElementForDygraph","selectDashboardDomain","selectIsSnapshotMode","selectSnapshotOptions","SnapshotLoader","SnapshotLoaderContainer","Portals","nodes","attributesMapped","createPortal","useHttp","shouldMakeCall","isExternal","setIsFetching","isError","setIsError","setData","modalRoot","ModalPortal","PrintModal","printModalElement","amountOfCharts","amountOfFetchedCharts","nameOfAnyFetchingChart","print","progressBarText","aria-labelledby","data-keyboard","data-backdrop","data-dismiss","aria-label","aria-hidden","aria-valuenow","aria-valuemin","aria-valuemax","SocialMediaContainer","FirstRow","GithubCopy","GithubCopyLine","SocialMediaLink","GithubStarQuestion","GithubIcon","TwitterIcon","FacebookIcon","SecondRow","SecondRowText","SidebarSocialMedia","SidebarSocialMediaPortal","NotificationsContainer","closeButton","hasBorder","hostNameSelector","truncate","Options","data-toggle","data-target","VersionControl","currentVersion","isStableReleaseChannel","releaseChannel","githubVersion","gcsVersionResponse","mediaLinkResponse","latestVersion","transformGcsVersionResponse","isNewVersionAvailable","small","versionSelector","Version","RootContainer","DropdownContainer","Menu","ListContainer","OpenerIcon","noMargin","themeOptions","white","DefaultTheme","mainBackground","surface","primary","accent","onPrimary","bright","onSecondary","onSurface","onError","dupaDupa","textPrimaryOnBackground","textSecondaryOnBackground","textFocus","textHintOnBackground","textDisabledOnBackground","textIconOnBackground","textPrimaryOnLight","DarkTheme","textSecondaryOnLight","textHintOnLight","textDisabledOnLight","textIconOnLight","textPrimaryOnDark","textSecondaryOnDark","textHintOnDark","textDisabledOnDark","textIconOnDark","slate","RMWCThemeProvider","StyledSidebar","PortalSidebar","Wrapper","PickerBox","HeaderSvg","IconSpacer","PickerActionArea","PickerBtnArea","ShortPickHeader","ShortPick","ShortPickElement","AccessorBox","DropdownBox","StyledDropdown","renderTitle","onMenuToggle","anchorCorner","renderOpener","TypeViewBox","DropdownIcon","TextBox","LastText","CustomInput","input","symbol","AlarmClock","xlinkHref","Clock","PRESET_RANGES","ShortPickArea","handleDatesChange","selectedStart","tagging","timeCorrection","startDate","endDate","guessResolutionAndValue","resolution","DAY","HOUR","MINUTE","Arrow","ArrowSvg","Calendar","CalendarSvg","PickerAccessorElement","getShortHandTimeAlias","startAlias","moment","endAlias","dateResolutions","pluralize","getNewStart","CustomShortPicker","setRangeValues","isDropdownOpen","toggleDropdown","handleStartChange","newStart","newTimeCorrection","currentTarget","dateResolution","newResolution","pickerFormat","disabledDates","diff","MonthLeft","MonthLeftSvg","MonthRight","MonthRightSvg","handleChangeDateByManualInput","dateToBeSet","setterFn","creationData","convertToMoment","focusTaggingMap","Picker","handleOpenState","pickedValues","startDateState","setStartDate","endDateState","setEndDate","startDateMoment","endDateMoment","focusedInput","setFocusedInput","escapeListener","clickListener","contains","useCloseOnOutsideClick","focusTagging","pickerModal","closeOnEsc","closeOnOverlayClick","onDatesChange","daySize","onFocusChange","fi","hideKeyboardShortcutsPanel","enableOutsideDays","isOutsideRange","firstDayOfWeek","verticalSpacing","displayFormat","startDateId","openDirection","endDateId","navNext","navPrev","ReduxWrappedPicker","setOpenState","isGlobalPanAndZoom","isPanAndZoom","DateTimePicker","hollowColors","StyledPill","hollow","Pill","pillProps","Alarms","Anchor","publishedAt","last_publication_date","description","image","imageSrc","dateFormated","webkitVisibleScrollbar","News","onCloseClick","toggle","backdrop","onClickOutside","onEsc","client","Prismic","AgentNews","useLocalStorage","setValue","news","setNews","onSuccess","query","Predicates","orderings","fetchNews","results","upToDate","latestEntry","isRegistrySelector","offlineSelector","dashboard","SignIn","signInUrl","isRegistry","redirectURI","onSignIn","sendToChildIframe","htmlIframeElement","contentWindow","postMessage","useListenToPostMessage","messageType","defaultState","lastMessage","setLastMessage","handleMessage","resetMesssage","IframeContainer","Iframe","signedIn","rendered","setRendered","signInMsg","lsValue","removeLsValue","nameParam","originParam","signInIframeUrl","onLoad","useCheckSignInStatus","setHasSignedInBefore","onMessage","isNew","Fragment","PanelRowContainer","selected","MenuItem","testid","actions","basis","DefaultListHeader","H4","SectionHandle","toggleOpen","ItemsList","bacgkround","SignOut","SignInItem","isSignedInSelector","UserSettings","menuItems","separator","SpacesSkeleton","SpacesIframe","NetdataLogo","viewBox","xmlns","Spaces","cloudEnabled","app","getNodeUrl","baseUrl","getNodes","hostsStatus","base","decodeURI","getBaseUrl","replicatedNodes","Search","TextInput","StyledIcon","ReplicatedNodes","listOpen","setListOpen","toggleListOpen","iconLeft","metaShrinked","SpacePanelIframe","spacePanelMessage","promptContent","signIn","signUp","SignInPrompt","NoNetwork","fillRule","clipRule","OfflinePrompt","replicatedNodesSelector","visitedNodesSelector","visitedNodes","globalRegistry","switchIdentity","persist","pointerEvents","setLsValue","Layout","printMode","mapTheme","App","useStore","refreshHelper","setRefreshHelper","haveDOMReadyForParsing","loadOverlay","shouldUseRegistry","useRegistry","shouldUseAlarms","useAlarms","shouldUseInfo","useInfo","hasFetchDependencies","setHasFetchDependencies","bootstrap_css","dashboard_css","useChartsMetadata","alarmWhen","alarmTime","alarmChart","alarmValue","useAlarmFromUrl","ReactDOM","withContext","collected","viewed","enabledDimensions","isCurrentlySelected","isSupportingDateTimeFormat","language","narrowToDate","localeDateStringNative","localeTimeStringNative","xAxisTimeStringNative","localeMatcher","formatMatcher","weekday","year","month","dateOptions","timeOptions","hour12","timeZoneName","xAxisOptions","process","useSelectorOriginal","useDispatchOriginal","assign","meta"],"mappings":"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","file":"static/js/main.8aa70c75.chunk.js","sourcesContent":["import { createAction } from \"redux-act\"\n\nimport { createRequestAction } from \"utils/createRequestAction\"\nimport { RegistryMachine } from \"domains/global/sagas\"\nimport { storeKey } from \"./constants\"\nimport { ActiveAlarms, ChartsMetadata, Snapshot, Alarm } from \"./types\"\n\ninterface RequestCommonColors {\n chartContext: string\n chartUuid: string\n colorsAttribute: string | undefined\n commonColorsAttribute: string | undefined\n dimensionNames: string[]\n}\nexport const requestCommonColorsAction = createAction<RequestCommonColors>(\n `${storeKey}/globalRequestCommonColors`,\n)\n\ninterface SetCommonMinAction { chartUuid: string, commonMinKey: string, value: number }\nexport const setCommonMinAction = createAction<SetCommonMinAction>(`${storeKey}/setCommonMin`)\n\ninterface SetCommonMaxAction { chartUuid: string, commonMaxKey: string, value: number }\nexport const setCommonMaxAction = createAction<SetCommonMaxAction>(`${storeKey}/setCommonMax`)\n\ninterface SetGlobalSelectionAction {\n chartUuid: string | null\n hoveredX: number\n}\nexport const setGlobalSelectionAction = createAction<SetGlobalSelectionAction>(\n `${storeKey}/setGlobalSelection`,\n)\n\nexport interface SetGlobalPanAndZoomAction {\n after: number\n before: number\n masterID?: string\n shouldForceTimeRange?: boolean\n}\nexport const setGlobalPanAndZoomAction = createAction<SetGlobalPanAndZoomAction>(\n `${storeKey}/setGlobalPanAndZoom`,\n)\n\nexport const resetGlobalPanAndZoomAction = createAction(`${storeKey}/resetGlobalPanAndZoomAction`)\n\nexport interface SetDefaultAfterAction {\n after: number\n}\nexport const setDefaultAfterAction = createAction<SetDefaultAfterAction>(\n `${storeKey}/setDefaultAfterAction`,\n)\n\nexport const resetDefaultAfterAction = createAction(`${storeKey}/resetDefaultAfterAction`)\n\nexport interface SetGlobalChartUnderlayAction {\n after: number\n before: number\n masterID: string\n}\nexport const setGlobalChartUnderlayAction = createAction<SetGlobalChartUnderlayAction>(\n `${storeKey}/setGlobalChartUnderlay`,\n)\n\nexport const centerAroundHighlightAction = createAction(`${storeKey}/centerAroundHighlightAction`)\nexport const clearHighlightAction = createAction(`${storeKey}/clearHighlightAction`)\n\ninterface WindowFocusChangeAction {\n hasWindowFocus: boolean\n}\nexport const windowFocusChangeAction = createAction<WindowFocusChangeAction>(\n `${storeKey}/windowFocusChangeAction`,\n)\n\nexport interface FetchHelloPayload {\n serverDefault: string\n}\n/* eslint-disable camelcase */\nexport interface HelloResponse {\n action: \"hello\"\n anonymous_statistics: boolean\n cloud_base_url: string\n hostname: string\n machine_guid: string\n registry: string\n status: string\n}\n/* eslint-enable camelcase */\n\nexport const fetchHelloAction = createRequestAction<\n FetchHelloPayload,\n { cloudBaseURL: string, hostname: string, isCloudEnabled: boolean, machineGuid: string }\n >(`${storeKey}/fetchHelloAction`)\n\n\ninterface UpdatePersonUrlsAction {\n personGuid: string\n registryMachines: { [key: string]: RegistryMachine }\n registryMachinesArray: RegistryMachine[]\n}\nexport const updatePersonUrlsAction = createAction<UpdatePersonUrlsAction>(\n `${storeKey}/updatePersonUrlsAction`,\n)\n\nexport interface AccessRegistrySuccessAction {\n registryServer: string\n}\nexport const accessRegistrySuccessAction = createAction<AccessRegistrySuccessAction>(\n `${storeKey}/accessRegistrySuccessAction`,\n)\n\nexport interface StartAlarmsPayload {\n serverDefault: string\n}\nexport const startAlarmsAction = createAction<StartAlarmsPayload>(`${storeKey}/startAlarmsAction`)\n\nexport const fetchAllAlarmsAction = createRequestAction(`${storeKey}/fetchAllAlarmsAction`)\n\nexport interface UpdateActiveAlarmAction { activeAlarms: ActiveAlarms }\nexport const updateActiveAlarmsAction = createAction<UpdateActiveAlarmAction>(\n `${storeKey}/updateActiveAlarmsAction`,\n)\n\nexport interface SetOptionAction {\n key: string\n value: unknown\n}\nexport const setOptionAction = createAction<SetOptionAction>(`${storeKey}/setOptionAction`)\n\nexport const resetOptionsAction = createAction(`${storeKey}/resetOptions`)\n\nexport const loadSnapshotAction = createAction<{ snapshot: Snapshot }>(\n `${storeKey}/loadSnapshotAction`,\n)\n\nexport const chartsMetadataRequestSuccess = createAction<{ data: ChartsMetadata }>(\n `${storeKey}/chartsMetadataRequestSuccess`,\n)\n\nexport interface SetSpacePanelStatusActionPayload {\n isActive: boolean\n}\nexport const setSpacePanelStatusAction = createAction<SetSpacePanelStatusActionPayload>(\n `${storeKey}/setSpacePanelStatusAction`,\n)\n\nexport interface SetSpacePanelTransitionEndPayload {\n isActive: boolean\n}\nexport const setSpacePanelTransitionEndAction = createAction<SetSpacePanelTransitionEndPayload>(\n `${storeKey}/setSpacePanelStatusAction`,\n)\n\nexport const setAlarmAction = createAction<{ alarm: Alarm }>(`${storeKey}/setAlarmAction`)\n\nexport const resetRegistry = createAction(`${storeKey}/resetRegistry`)\n","import { mergeAll, mergeRight } from \"ramda\"\nimport { LOCALSTORAGE_HEIGHT_KEY_PREFIX } from \"domains/chart/components/resize-handler\"\nimport { DashboardTheme } from \"utils/map-theme\"\n\nexport const SYNC_PAN_AND_ZOOM = \"sync_pan_and_zoom\"\nexport const STOP_UPDATES_WHEN_FOCUS_IS_LOST = \"stop_updates_when_focus_is_lost\"\nexport const DESTROY_ON_HIDE = \"destroy_on_hide\"\nexport const THEME = \"theme\"\nexport const LEGEND_RIGHT = \"legend_right\"\n\nexport const themeLocalStorageKey = \"netdataTheme\"\n\n/* eslint-disable camelcase */\n\nexport interface Options {\n // performance options\n [STOP_UPDATES_WHEN_FOCUS_IS_LOST]: boolean\n eliminate_zero_dimensions: boolean\n [DESTROY_ON_HIDE]: boolean\n async_on_scroll: boolean\n\n // synchronization options\n parallel_refresher: boolean\n concurrent_refreshes: boolean\n sync_selection: boolean\n [SYNC_PAN_AND_ZOOM]: boolean\n\n // visual options\n [LEGEND_RIGHT]: boolean\n [THEME]: DashboardTheme\n show_help: boolean\n pan_and_zoom_data_padding: boolean\n smooth_plot: boolean\n\n // locale options\n units: \"auto\" | \"original\"\n temperature: \"celsius\" | \"fahrenheit\"\n seconds_as_time: boolean\n timezone: string\n user_set_server_timezone: string\n}\nexport type OptionsKey = keyof Options\n\n// those options have been created around 2015/2016 and some of them are not needed anymore\n// so we need to revisit them, test their impact, etc.\n\nexport const INITIAL_OPTIONS: Options = {\n // performance options\n\n // boolean - shall we stop auto-refreshes when document does not have user focus\n [STOP_UPDATES_WHEN_FOCUS_IS_LOST]: true,\n // do not show dimensions with just zeros\n eliminate_zero_dimensions: true,\n // destroy charts when they are not visible\n [DESTROY_ON_HIDE]: false, // eventually apply slow device detection\n async_on_scroll: false,\n\n // synchronization options\n // enable parallel refresh of charts\n parallel_refresher: true, // eventually apply slow device detection\n // when parallel_refresher is enabled, sync also the charts\n concurrent_refreshes: true,\n // enable or disable selection sync\n sync_selection: true,\n // enable or disable pan and zoom sync\n [SYNC_PAN_AND_ZOOM]: true,\n\n // visual options\n [LEGEND_RIGHT]: false,\n [THEME]: \"slate\",\n // when enabled the charts will show some help\n // when there's no bootstrap, we can't show it\n show_help: Boolean(window.netdataShowHelp) && !window.netdataNoBootstrap,\n // fetch more data for the master chart when panning or zooming\n pan_and_zoom_data_padding: true,\n // enable smooth plot, where possible\n smooth_plot: true, // eventually apply slow device detection\n\n // locale options\n units: \"auto\", // auto or original\n temperature: \"celsius\",\n seconds_as_time: true, // show seconds as DDd:HH:MM:SS ?\n timezone: \"default\", // the timezone to use, or 'default'\n user_set_server_timezone: \"default\", // as set by the user on the dashboard\n}\n\nconst localStorageKeyToOption = <T extends string>(key: T) => key.replace(/^options\\./, \"\")\n .replace(themeLocalStorageKey, THEME)\n\nconst getItemFromLocalStorage = <T extends string>(key: T) => {\n const value = localStorage.getItem(key)\n // \"undefined\" (deliberate as a string) to support \"options.setOptionCallback\", an old property\n // used in old dashboard. users will still have it, so we need to support it for some time\n if (value === null || value === \"undefined\") {\n localStorage.removeItem(key)\n return null\n }\n let parsed\n try {\n parsed = JSON.parse(value)\n } catch (e) {\n // todo fix after main.js refactor\n // special case for netdataTheme, only this option is not boolean\n if (key === themeLocalStorageKey && value) {\n return value\n }\n\n console.log(`localStorage: failed to read \"${key}\", using default`) // eslint-disable-line no-console, max-len\n // it was not present in old dashboard, but it probably makes sense to remove broken values\n localStorage.removeItem(key)\n return null\n }\n return parsed\n}\n\nexport const getOptionsMergedWithLocalStorage = (): Options => {\n const optionsFromLocalStorage = Object.keys(localStorage)\n .filter((key) => key.startsWith(\"options.\") || key === themeLocalStorageKey)\n .map((key) => ({\n [localStorageKeyToOption(key)]: getItemFromLocalStorage(key),\n }))\n .filter((o) => Object.values(o)[0] !== null)\n\n const overridenOptions = mergeAll(optionsFromLocalStorage) as unknown as Options\n return mergeRight(INITIAL_OPTIONS, overridenOptions)\n}\n\nexport const optionsMergedWithLocalStorage = getOptionsMergedWithLocalStorage()\nexport const initialLegendRight = optionsMergedWithLocalStorage[LEGEND_RIGHT]\n\nexport const clearLocalStorage = () => {\n const localStorageKeys = Object.keys(localStorage)\n localStorageKeys.forEach((key) => {\n if (key.startsWith(LOCALSTORAGE_HEIGHT_KEY_PREFIX) || key.startsWith(\"options.\")) {\n localStorage.removeItem(key)\n }\n })\n}\n","const isPrintMode = window.location.hash.split(\";\").includes(\"help=true\")\n\nconst getIsDemo = () => {\n if (isPrintMode) {\n return false\n }\n const { hostname } = document.location\n return (\n hostname.endsWith(\".my-netdata.io\")\n || hostname.endsWith(\".mynetdata.io\")\n || hostname.endsWith(\".netdata.rocks\")\n || hostname.endsWith(\".netdata.ai\")\n || hostname.endsWith(\".netdata.live\")\n || hostname.endsWith(\".firehol.org\")\n || hostname.endsWith(\".netdata.online\")\n || hostname.endsWith(\".netdata.cloud\")\n )\n}\n\nexport const isDemo = getIsDemo()\n","export const zeropad = (x: number) => {\n if (x > -10 && x < 10) {\n return `0${x.toString()}`\n }\n return x.toString()\n}\n\ninterface ScalableUnits {\n [unitGroupName: string]: {\n [unitName: string]: number\n }\n}\n\nconst scalableUnits: ScalableUnits = {\n \"packets/s\": {\n pps: 1,\n Kpps: 1000,\n Mpps: 1000000,\n },\n pps: {\n pps: 1,\n Kpps: 1000,\n Mpps: 1000000,\n },\n \"kilobits/s\": {\n \"bits/s\": 1 / 1000,\n \"kilobits/s\": 1,\n \"megabits/s\": 1000,\n \"gigabits/s\": 1000000,\n \"terabits/s\": 1000000000,\n },\n \"bytes/s\": {\n \"bytes/s\": 1,\n \"kilobytes/s\": 1024,\n \"megabytes/s\": 1024 * 1024,\n \"gigabytes/s\": 1024 * 1024 * 1024,\n \"terabytes/s\": 1024 * 1024 * 1024 * 1024,\n },\n \"kilobytes/s\": {\n \"bytes/s\": 1 / 1024,\n \"kilobytes/s\": 1,\n \"megabytes/s\": 1024,\n \"gigabytes/s\": 1024 * 1024,\n \"terabytes/s\": 1024 * 1024 * 1024,\n },\n \"B/s\": {\n \"B/s\": 1,\n \"KiB/s\": 1024,\n \"MiB/s\": 1024 * 1024,\n \"GiB/s\": 1024 * 1024 * 1024,\n \"TiB/s\": 1024 * 1024 * 1024 * 1024,\n },\n \"KB/s\": {\n \"B/s\": 1 / 1024,\n \"KB/s\": 1,\n \"MB/s\": 1024,\n \"GB/s\": 1024 * 1024,\n \"TB/s\": 1024 * 1024 * 1024,\n },\n \"KiB/s\": {\n \"B/s\": 1 / 1024,\n \"KiB/s\": 1,\n \"MiB/s\": 1024,\n \"GiB/s\": 1024 * 1024,\n \"TiB/s\": 1024 * 1024 * 1024,\n },\n bytes: {\n bytes: 1,\n kilobytes: 1024,\n megabytes: 1024 * 1024,\n gigabytes: 1024 * 1024 * 1024,\n terabytes: 1024 * 1024 * 1024 * 1024,\n },\n Hz: {\n Hz: 1,\n kHz: 10 ** 3,\n MHz: 10 ** 6,\n GHz: 10 ** 9,\n THz: 10 ** 12,\n PHz: 10 ** 15,\n EHz: 10 ** 18,\n ZHz: 10 ** 21,\n },\n B: {\n B: 1,\n KiB: 1024,\n MiB: 1024 * 1024,\n GiB: 1024 * 1024 * 1024,\n TiB: 1024 * 1024 * 1024 * 1024,\n PiB: 1024 * 1024 * 1024 * 1024 * 1024,\n },\n KB: {\n B: 1 / 1024,\n KB: 1,\n MB: 1024,\n GB: 1024 * 1024,\n TB: 1024 * 1024 * 1024,\n },\n KiB: {\n B: 1 / 1024,\n KiB: 1,\n MiB: 1024,\n GiB: 1024 * 1024,\n TiB: 1024 * 1024 * 1024,\n },\n MB: {\n B: 1 / (1024 * 1024),\n KB: 1 / 1024,\n MB: 1,\n GB: 1024,\n TB: 1024 * 1024,\n PB: 1024 * 1024 * 1024,\n },\n MiB: {\n B: 1 / (1024 * 1024),\n KiB: 1 / 1024,\n MiB: 1,\n GiB: 1024,\n TiB: 1024 * 1024,\n PiB: 1024 * 1024 * 1024,\n },\n GB: {\n B: 1 / (1024 * 1024 * 1024),\n KB: 1 / (1024 * 1024),\n MB: 1 / 1024,\n GB: 1,\n TB: 1024,\n PB: 1024 * 1024,\n EB: 1024 * 1024 * 1024,\n },\n GiB: {\n B: 1 / (1024 * 1024 * 1024),\n KiB: 1 / (1024 * 1024),\n MiB: 1 / 1024,\n GiB: 1,\n TiB: 1024,\n PiB: 1024 * 1024,\n EiB: 1024 * 1024 * 1024,\n },\n /*\n 'milliseconds': {\n 'seconds': 1000\n },\n 'seconds': {\n 'milliseconds': 0.001,\n 'seconds': 1,\n 'minutes': 60,\n 'hours': 3600,\n 'days': 86400\n }\n */\n}\n\nlet currentTemperatureSetting: \"celsius\" | \"fahrenheit\"\nlet currentSecondsAsTimeSetting: boolean\ninterface ConvertibleUnits {\n [unitIn: string]: {\n [unitOut: string]: {\n check: ((number: number) => boolean) | (() => boolean)\n convert: (number: number) => number | string\n }\n }\n}\nconst convertibleUnits: ConvertibleUnits = {\n Celsius: {\n Fahrenheit: {\n // check(max) {\n check() {\n return currentTemperatureSetting === \"fahrenheit\"\n },\n convert(value: number) {\n return (value * 9) / 5 + 32\n },\n },\n },\n celsius: {\n fahrenheit: {\n // check(max) {\n check() {\n return currentTemperatureSetting === \"fahrenheit\"\n },\n convert(value: number) {\n return (value * 9) / 5 + 32\n },\n },\n },\n seconds: {\n time: {\n // check(max) {\n check() {\n return currentSecondsAsTimeSetting\n },\n convert(seconds: number) {\n // eslint-disable-next-line no-use-before-define\n return unitsConversionCreator.seconds2time(seconds)\n },\n },\n },\n milliseconds: {\n milliseconds: {\n check(max: number) {\n return currentSecondsAsTimeSetting && max < 1000\n },\n convert(milliseconds: number) {\n let tms = Math.round(milliseconds * 10)\n const millisecondsRet = Math.floor(tms / 10)\n\n tms -= millisecondsRet * 10\n\n return `${(millisecondsRet).toString()}.${tms.toString()}`\n },\n },\n seconds: {\n check(max: number) {\n return currentSecondsAsTimeSetting && max >= 1000 && max < 60000\n },\n convert(milliseconds: number) {\n let millisecondsReturn = Math.round(milliseconds)\n\n const seconds = Math.floor(millisecondsReturn / 1000)\n millisecondsReturn -= seconds * 1000\n\n millisecondsReturn = Math.round(millisecondsReturn / 10)\n\n return `${seconds.toString()}.${\n zeropad(millisecondsReturn)}`\n },\n },\n \"M:SS.ms\": {\n check(max) {\n return currentSecondsAsTimeSetting && max >= 60000\n },\n convert(milliseconds: number) {\n let millisecondsReturn = Math.round(milliseconds)\n\n const minutes = Math.floor(millisecondsReturn / 60000)\n millisecondsReturn -= minutes * 60000\n\n const seconds = Math.floor(millisecondsReturn / 1000)\n millisecondsReturn -= seconds * 1000\n\n millisecondsReturn = Math.round(millisecondsReturn / 10)\n\n return `${minutes.toString()}:${\n zeropad(seconds)}.${\n zeropad(millisecondsReturn)}`\n },\n },\n },\n}\n\nconst identity = (value: number) => value\n\ninterface Keys {\n [commonUnitsKey: string]: {\n [uuid: string]: {\n divider: number\n units: string\n }\n }\n}\ninterface Latest {\n [commonUnitsKey: string]: {\n divider: number\n units: string\n }\n}\nexport const unitsConversionCreator = {\n // todo lift the state\n keys: {} as Keys, // keys for data-common-units\n latest: {} as Latest, // latest selected units for data-common-units\n\n globalReset() {\n this.keys = {}\n this.latest = {}\n },\n\n seconds2time(seconds: number) {\n let secondsReturn = Math.abs(seconds)\n\n const days = Math.floor(secondsReturn / 86400)\n secondsReturn -= days * 86400\n\n const hours = Math.floor(secondsReturn / 3600)\n secondsReturn -= hours * 3600\n\n const minutes = Math.floor(secondsReturn / 60)\n secondsReturn -= minutes * 60\n\n secondsReturn = Math.round(secondsReturn)\n\n const msTxt = \"\"\n\n return `${((days > 0) ? `${days.toString()}d:` : \"\").toString()\n + zeropad(hours)}:${\n zeropad(minutes)}:${\n zeropad(secondsReturn)\n }${msTxt}`\n },\n\n // get a function that converts the units\n // + every time units are switched call the callback\n get(\n uuid: string, min: number, max: number, units: string | undefined,\n desiredUnits: undefined | null | string, commonUnitsName: string | null | undefined,\n switchUnitsCallback: (units: string) => void, temperatureSetting: \"celsius\" | \"fahrenheit\",\n secondsAsTimeSetting: boolean,\n ) {\n // validate the parameters\n if (typeof units === \"undefined\") {\n // eslint-disable-next-line no-param-reassign\n units = \"undefined\"\n }\n\n // it will be removed when we'll lift the state to redux\n currentTemperatureSetting = temperatureSetting\n currentSecondsAsTimeSetting = secondsAsTimeSetting\n\n // check if we support units conversion\n if (typeof scalableUnits[units] === \"undefined\"\n && typeof convertibleUnits[units] === \"undefined\"\n ) {\n // we can't convert these units\n // console.log('DEBUG: ' + uuid.toString() + ' can\\'t convert units: ' + units.toString());\n return (value: number) => value\n }\n\n // check if the caller wants the original units\n if (desiredUnits === undefined || desiredUnits === null || desiredUnits === \"original\"\n || desiredUnits === units\n ) {\n // console.log('DEBUG: ' + uuid.toString() + ' original units wanted');\n switchUnitsCallback(units)\n return identity\n }\n\n // now we know we can convert the units\n // and the caller wants some kind of conversion\n\n let tunits = null\n let tdivider = 0\n\n if (typeof scalableUnits[units] !== \"undefined\") {\n // units that can be scaled\n // we decide a divider\n\n if (desiredUnits === \"auto\") {\n // the caller wants to auto-scale the units\n\n // find the absolute maximum value that is rendered on the chart\n // based on this we decide the scale\n /* eslint-disable no-param-reassign */\n min = Math.abs(min)\n max = Math.abs(max)\n if (min > max) {\n max = min\n }\n /* eslint-enable no-param-reassign */\n\n const scalableUnitsGroup = scalableUnits[units]\n Object.keys(scalableUnitsGroup).forEach((unit) => {\n const unitDivider = scalableUnitsGroup[unit]\n if (unitDivider <= max && unitDivider > tdivider) {\n tunits = unit\n tdivider = unitDivider\n }\n })\n\n if (tunits === null || tdivider <= 0) {\n // we couldn't find auto-scaling candidate for unit\n switchUnitsCallback(units)\n return identity\n }\n\n if (typeof commonUnitsName === \"string\") {\n // the caller wants several charts to have the same units\n // data-common-units\n\n const commonUnitsKey = `${commonUnitsName}-${units}`\n\n // add our divider into the list of keys\n let t = this.keys[commonUnitsKey]\n if (typeof t === \"undefined\") {\n this.keys[commonUnitsKey] = {}\n t = this.keys[commonUnitsKey]\n }\n t[uuid] = {\n units: tunits,\n divider: tdivider,\n }\n\n // find the max divider of all charts\n let commonUnits = t[uuid]\n // todo remove imperative forEach\n Object.keys(t).forEach((x) => {\n if (t[x].divider > commonUnits.divider) {\n commonUnits = t[x]\n }\n })\n\n // save our common_max to the latest keys\n const latest = {\n units: commonUnits.units,\n divider: commonUnits.divider,\n }\n this.latest[commonUnitsKey] = latest\n\n tunits = latest.units\n tdivider = latest.divider\n\n // apply it to this chart\n switchUnitsCallback(tunits)\n return (value: number) => {\n if (tdivider !== latest.divider) {\n // another chart switched our common units\n // we should switch them too\n tunits = latest.units\n tdivider = latest.divider\n switchUnitsCallback(tunits)\n }\n\n return value / tdivider\n }\n }\n // the caller did not give data-common-units\n // this chart auto-scales independently of all others\n\n switchUnitsCallback(tunits)\n return (value: number) => value / tdivider\n }\n // the caller wants specific units\n\n if (typeof scalableUnits[units][desiredUnits] !== \"undefined\") {\n // all good, set the new units\n tdivider = scalableUnits[units][desiredUnits]\n switchUnitsCallback(desiredUnits)\n return (value: number) => value / tdivider\n }\n // oops! switch back to original units\n // eslint-disable-next-line no-console\n console.log(`Units conversion from ${units.toString()} to ${desiredUnits.toString()}\n is not supported.`)\n\n switchUnitsCallback(units)\n return identity\n } if (typeof convertibleUnits[units] !== \"undefined\") {\n // units that can be converted\n if (desiredUnits === \"auto\") {\n let newConvertFunction: ((number: number) => number | string) | undefined\n Object.keys(convertibleUnits[units]).forEach((x) => {\n if (newConvertFunction) { return }\n if (convertibleUnits[(units as string)][x].check(max)) {\n // converting\n switchUnitsCallback(x)\n newConvertFunction = convertibleUnits[(units as string)][x].convert\n }\n })\n if (newConvertFunction) {\n return newConvertFunction\n }\n\n // none checked ok (no conversion available)\n switchUnitsCallback(units)\n return identity\n } if (typeof convertibleUnits[units][desiredUnits] !== \"undefined\") {\n switchUnitsCallback(desiredUnits)\n return convertibleUnits[units][desiredUnits].convert\n }\n // eslint-disable-next-line no-console\n console.log(`Units conversion from ${units.toString()} to ${desiredUnits.toString()}\n is not supported.`)\n switchUnitsCallback(units)\n return identity\n }\n // hm... did we forget to implement the new type?\n // eslint-disable-next-line no-console\n console.log(`Unmatched unit conversion method for units ${units.toString()}`)\n switchUnitsCallback(units)\n return identity\n },\n}\n","import * as React from \"react\"\nimport classNames from \"classnames\"\n\nimport \"./button.css\"\n\ntype Props = React.ButtonHTMLAttributes<HTMLButtonElement>\nexport const Button = React.forwardRef(({\n children,\n className,\n ...rest\n}: Props, ref: React.Ref<HTMLButtonElement>) => (\n <button\n {...rest} // eslint-disable-line react/jsx-props-no-spreading\n type=\"button\"\n className={classNames(\"netdata-reset-button\", className)}\n ref={ref}\n >\n {children}\n </button>\n))\n","import React, { useRef, useEffect } from \"react\"\nimport classNames from \"classnames\"\n\nimport { useSelector } from \"store/redux-separate-context\"\nimport { selectShowHelp } from \"domains/global/selectors\"\nimport { Icon, IconType } from \"components/icon\"\nimport { Button } from \"components/button\"\n\ntype ClickCallback = (event: React.MouseEvent) => void\ninterface ToolboxButtonProps {\n className?: string\n iconType: IconType\n onClick?: ClickCallback\n onDoubleClick?: (event: React.MouseEvent) => void\n onMouseDown?: (event: React.MouseEvent) => void\n onTouchStart?: (event: React.TouchEvent) => void\n popoverContent: string\n popoverTitle: string\n}\nexport const ToolboxButton = ({\n className,\n iconType,\n onClick,\n onDoubleClick,\n onMouseDown,\n onTouchStart,\n popoverContent,\n popoverTitle,\n}: ToolboxButtonProps) => {\n const buttonRef = useRef(null)\n const showHelp = useSelector(selectShowHelp)\n useEffect(() => {\n if (buttonRef.current && showHelp) {\n window.$(buttonRef.current).popover({\n container: \"body\",\n animation: false,\n html: true,\n trigger: \"hover\",\n placement: \"bottom\",\n delay: {\n show: window.NETDATA.options.current.show_help_delay_show_ms,\n hide: window.NETDATA.options.current.show_help_delay_hide_ms,\n },\n title: popoverTitle,\n content: popoverContent,\n })\n }\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n return (\n <Button\n className={classNames(className)}\n onClick={onClick}\n onDoubleClick={onDoubleClick}\n onMouseDown={onMouseDown}\n onTouchStart={onTouchStart}\n ref={buttonRef}\n >\n <Icon iconType={iconType} />\n </Button>\n )\n}\n","import { prop, path } from \"ramda\"\nimport { createSelector } from \"reselect\"\n\nimport { AppStateT } from \"store/app-state\"\nimport { utmUrlSuffix } from \"utils/utils\"\nimport { alwaysEndWithSlash } from \"utils/server-detection\"\n\nimport { GetKeyArguments, getKeyForCommonColorsState } from \"./reducer\"\nimport { storeKey } from \"./constants\"\nimport { OptionsKey } from \"./options\"\n\nconst NETDATA_REGISTRY_SERVER = \"https://registry.my-netdata.io\"\n\nexport const createSelectAssignedColors = (args: GetKeyArguments) => (state: AppStateT) => {\n const keyName = getKeyForCommonColorsState(args)\n const substate = state[storeKey].commonColorsKeys[keyName]\n return substate && substate.assigned\n}\n\nexport const selectGlobal = (state: AppStateT) => state.global\n\nexport const selectCommonMin = createSelector(\n selectGlobal,\n (_: unknown, commonMinKey: string) => commonMinKey,\n (globalState, commonMinKey) => (\n globalState.commonMin[commonMinKey]\n ),\n)\n\nexport const selectCommonMax = createSelector(\n selectGlobal,\n (_: unknown, commonMaxKey: string) => commonMaxKey,\n (globalState, commonMaxKey) => (\n globalState.commonMax[commonMaxKey]\n ),\n)\n\nexport const selectGlobalSelection = createSelector(selectGlobal, prop(\"hoveredX\"))\n\nexport const selectGlobalSelectionMaster = createSelector(\n selectGlobal,\n prop(\"currentSelectionMasterId\"),\n)\n\nexport const selectGlobalPanAndZoom = createSelector(selectGlobal, prop(\"globalPanAndZoom\"))\n\nexport const selectDefaultAfter = createSelector(selectGlobal, prop(\"defaultAfter\"))\n\nexport const selectGlobalChartUnderlay = createSelector(selectGlobal, prop(\"globalChartUnderlay\"))\n\nexport const selectHasWindowFocus = createSelector(selectGlobal, prop(\"hasWindowFocus\"))\n\nexport const selectSnapshot = createSelector(\n selectGlobal,\n prop(\"snapshot\"),\n)\n\nexport const selectRegistry = createSelector(selectGlobal, prop(\"registry\"))\n\nexport const selectCloudBaseUrl = createSelector(selectRegistry, prop(\"cloudBaseURL\"))\n\nexport const selectSignInUrl = (hasSignedInBefore) => createSelector(\n selectRegistry,\n selectCloudBaseUrl,\n (registry, cloudBaseURL) => {\n const name = encodeURIComponent(registry.hostname)\n const origin = encodeURIComponent(\n alwaysEndWithSlash(window.location.origin + window.location.pathname),\n )\n // not adding redirect_url - it needs to always be based on newest href\n // eslint-disable-next-line max-len\n return `${cloudBaseURL}/${hasSignedInBefore ? 'sign-in' : 'sign-up'}?id=${registry.machineGuid}&name=${name}&origin=${origin}${utmUrlSuffix}`\n },\n)\n\nexport const selectIsFetchingHello = createSelector(selectRegistry, prop(\"isFetchingHello\"))\nexport const selectIsUsingGlobalRegistry = createSelector(\n selectRegistry,\n ({ registryServer }) => registryServer && (registryServer !== NETDATA_REGISTRY_SERVER),\n)\n\n// currently cloud-base-url is taken from registry?action=hello call, which returns error\n// if Agent+browser are configured to respect do-not-track\nexport const selectIsCloudEnabled = createSelector(\n selectRegistry,\n (registry) => registry.isCloudEnabled && !registry.isHelloCallError,\n)\nexport const selectHasFetchedInfo = createSelector(selectRegistry, prop(\"hasFetchedInfo\"))\nexport const selectFullInfoPayload = createSelector(selectRegistry, prop(\"fullInfoPayload\"))\n\nexport const selectHasStartedAlarms = createSelector(\n selectGlobal,\n path([\"alarms\", \"hasStartedAlarms\"]),\n)\nexport const selectActiveAlarms = createSelector(\n selectGlobal,\n (global) => global.alarms.activeAlarms,\n)\n\nexport const selectAlarm = createSelector(\n selectGlobal,\n (global) => global.alarm\n)\n\nexport const selectSpacePanelIsActive = createSelector(selectGlobal, prop(\"spacePanelIsActive\"))\nexport const selectSpacePanelTransitionEndIsActive = createSelector(\n selectGlobal, prop(\"spacePanelTransitionEndIsActive\"),\n)\n\nexport const selectOptions = createSelector(selectGlobal, global => global.options)\n\nexport const createSelectOption = <T extends OptionsKey>(optionName: T) => (\n createSelector(selectOptions, (options) => options[optionName])\n)\n\nexport const selectDestroyOnHide = createSelectOption(\"destroy_on_hide\")\nexport const selectStopUpdatesWhenFocusIsLost = createSelectOption(\n \"stop_updates_when_focus_is_lost\",\n)\nexport const selectShouldEliminateZeroDimensions = createSelectOption(\"eliminate_zero_dimensions\")\nexport const selectIsAsyncOnScroll = createSelectOption(\"async_on_scroll\")\n\nexport const selectParallelRefresher = createSelectOption(\"parallel_refresher\")\nexport const selectConcurrentRefreshes = createSelectOption(\"concurrent_refreshes\")\nexport const selectSyncSelection = createSelectOption(\"sync_selection\")\nexport const selectSyncPanAndZoom = createSelectOption(\"sync_pan_and_zoom\")\n\nexport const selectTheme = createSelectOption(\"theme\")\nexport const selectShowHelp = createSelectOption(\"show_help\")\nexport const selectPanAndZoomDataPadding = createSelectOption(\"pan_and_zoom_data_padding\")\nexport const selectSmoothPlot = createSelectOption(\"smooth_plot\")\n\nexport const selectUnitsScalingMethod = createSelectOption(\"units\")\nexport const selectTemperatureSetting = createSelectOption(\"temperature\")\nexport const selectSecondsAsTimeSetting = createSelectOption(\"seconds_as_time\")\nexport const selectTimezoneSetting = createSelectOption(\"timezone\")\nexport const selectUserSetServerTimezone = createSelectOption(\"user_set_server_timezone\")\n\nexport const selectChartsMetadata = createSelector(\n selectGlobal,\n (global) => global.chartsMetadata.data,\n)\n\nexport const selectChartMetadataFromChartsCall = createSelector(\n selectChartsMetadata,\n (_: unknown, { chartId }: { chartId: string, id: string }) => chartId,\n (allMetadata, chartId) => allMetadata?.charts[chartId],\n)\n","import React, { useState, useCallback, useEffect } from \"react\"\nimport { ToolboxButton } from \"domains/chart/components/toolbox-button\"\nimport { setResizeHeightAction } from \"domains/chart/actions\"\nimport { LEGEND_BOTTOM_SINGLE_LINE_HEIGHT } from \"domains/chart/utils/legend-utils\"\nimport { useDispatch } from \"store/redux-separate-context\"\n\nexport const LOCALSTORAGE_HEIGHT_KEY_PREFIX_OLD = \"chart_heights.\"\nexport const LOCALSTORAGE_HEIGHT_KEY_PREFIX = \"chart_height.\"\n\ninterface Props {\n chartContainerElement: HTMLElement\n chartUuid: string\n heightId: string | undefined\n isLegendOnBottom: boolean\n}\n\nexport const ResizeHandler = ({\n chartContainerElement, chartUuid, heightId, isLegendOnBottom,\n}: Props) => {\n const [resizeHeight, setResizeHeight] = useState(() => chartContainerElement.clientHeight)\n const dispatch = useDispatch()\n\n useEffect(() => {\n // todo when attributes.id are present, hook height to localStorage\n if (resizeHeight >= 70) {\n dispatch(\n setResizeHeightAction({\n id: chartUuid,\n resizeHeight,\n }),\n )\n }\n }, [resizeHeight, chartUuid, heightId, dispatch])\n\n const handleResize = useCallback(\n (event) => {\n event.preventDefault()\n const intialHeight = chartContainerElement.clientHeight\n const eventStartHeight = event.type === \"touchstart\"\n ? event.touches[0].clientY\n : event.clientY\n\n const setHeight = (currentHeight: number) => {\n const nextHeight = intialHeight + currentHeight - eventStartHeight\n // eslint-disable-next-line no-param-reassign\n chartContainerElement.style.height = `${nextHeight.toString()}px`\n setResizeHeight(nextHeight)\n if (heightId) {\n const heightForPersistance = isLegendOnBottom\n ? (nextHeight - LEGEND_BOTTOM_SINGLE_LINE_HEIGHT)\n : nextHeight\n localStorage.setItem(\n `${LOCALSTORAGE_HEIGHT_KEY_PREFIX}${heightId}`,\n `${heightForPersistance}`,\n )\n }\n }\n\n const onMouseMove = (e: MouseEvent) => setHeight(e.clientY)\n const onTouchMove = (e: TouchEvent) => setHeight(e.touches[0].clientY)\n\n const onMouseEnd = () => {\n document.removeEventListener(\"mousemove\", onMouseMove)\n document.removeEventListener(\"mouseup\", onMouseEnd)\n }\n\n const onTouchEnd = () => {\n document.removeEventListener(\"touchmove\", onTouchMove)\n document.removeEventListener(\"touchend\", onTouchEnd)\n }\n\n if (event.type === \"touchstart\") {\n document.addEventListener(\"touchmove\", onTouchMove)\n document.addEventListener(\"touchend\", onTouchEnd)\n } else {\n document.addEventListener(\"mousemove\", onMouseMove)\n document.addEventListener(\"mouseup\", onMouseEnd)\n }\n },\n [chartContainerElement.clientHeight, chartContainerElement.style.height, heightId,\n isLegendOnBottom],\n )\n\n return (\n <ToolboxButton\n className=\"netdata-legend-resize-handler\"\n onDoubleClick={(event: React.MouseEvent) => {\n event.preventDefault()\n event.stopPropagation()\n }}\n onMouseDown={handleResize}\n onTouchStart={handleResize}\n iconType=\"resize\"\n popoverTitle=\"Chart Resize\"\n popoverContent=\"Drag this point with your mouse or your finger (on touch devices), to resize\n the chart vertically. You can also <b>double click it</b> or <b>double tap it</b> to reset\n between 2 states: the default and the one that fits all the values.<br/><small>Help\n can be disabled from the settings.</small>\"\n />\n )\n}\n","export * from \"./utils\"\n","export const name2id = (s: string) => s\n .replace(/ /g, \"_\")\n .replace(/:/g, \"_\")\n .replace(/\\(/g, \"_\")\n .replace(/\\)/g, \"_\")\n .replace(/\\./g, \"_\")\n .replace(/\\//g, \"_\")\n","import { createAction } from \"redux-act\"\nimport { CancelTokenSource, Method } from \"axios\"\n\nimport { createRequestAction } from \"utils/createRequestAction\"\nimport { InfoPayload } from \"domains/global/__mocks__/info-mock\"\n\nimport { storeKey } from \"./constants\"\nimport { ChartData, ChartMetadata } from \"./chart-types\"\n\nexport interface UpdateChartDataAction {\n chartData: ChartData\n id: string\n}\nexport const updateChartDataAction = createAction<UpdateChartDataAction>(\n `${storeKey}/updateChartData`,\n)\n\nexport interface UpdateChartMetadataAction {\n chartMetadata: ChartMetadata\n id: string\n}\nexport const updateChartMetadataAction = createAction<UpdateChartMetadataAction>(\n `${storeKey}/updateChartMetadata`,\n)\n\nexport interface FetchDataParams {\n fillMissingPoints?: number\n isRemotelyControlled: boolean\n viewRange: [number, number]\n}\nexport interface FetchDataUrlParams {\n host: string\n chart: string\n context: string\n format: string\n points: number\n group: string\n gtime: number\n options: string\n after: number | null\n before?: number | null\n dimensions?: string\n labels?: {[key: string]: string}\n postGroupBy?: string\n postAggregationMethod?: string\n aggrMethod?: string\n aggrGroups?: string[]\n dimensionsAggrMethod?: string\n nodeIDs?: string[]\n httpMethod?: Method\n groupBy?: string\n}\nexport interface FetchDataPayload extends FetchDataUrlParams {\n id: string,\n fetchDataParams: FetchDataParams\n cancelTokenSource: CancelTokenSource\n}\n\nexport const fetchDataAction = createRequestAction<\n FetchDataPayload,\n { id: string, chartData: ChartData, fetchDataParams: FetchDataParams }\n>(`${storeKey}/fetchDataAction`)\n\n\nexport interface FetchDataCancelAction { id: string }\nexport const fetchDataCancelAction = createAction<FetchDataCancelAction>(\n `${storeKey}/fetchDataCancelAction`,\n)\n\nexport interface FetchDataForSnapshotPayload extends FetchDataUrlParams {\n chartLibrary: string\n id: string\n}\nexport const fetchDataForSnapshotAction = createRequestAction<\n FetchDataForSnapshotPayload,\n { id: string, snapshotData: ChartData }\n>(`${storeKey}/fetchDataForSnapshotAction`)\n\nexport const snapshotExportResetAction = createRequestAction(\n `${storeKey}/snapshotExportResetAction`,\n)\n\nexport interface FetchChartPayload {\n chart: string\n id: string\n host: string\n nodeIDs?: string[]\n}\n\nexport const fetchChartAction = createRequestAction<\n FetchChartPayload,\n { chartMetadata: ChartMetadata, id: string }\n>(`${storeKey}/fetchChartAction`)\n\n\nexport interface SetResizeHeightAction {\n id: string\n resizeHeight: number\n}\nexport const setResizeHeightAction = createAction<SetResizeHeightAction>(\n `${storeKey}/setResizeHeight`,\n)\n\nexport interface SetChartPanAndZoomAction {\n id: string\n after: number\n before: number\n shouldForceTimeRange?: boolean\n}\nexport const setChartPanAndZoomAction = createAction<SetChartPanAndZoomAction>(\n `${storeKey}/setChartPanAndZoom`,\n)\n\nexport const resetChartPanAndZoomAction = createAction<{ id: string }>(\n `${storeKey}/resetChartPanAndZoomAction`,\n)\n\nexport const clearChartStateAction = createAction<{ id: string }>(\n `${storeKey}/clearChartStateAction`,\n)\n\nexport interface FetchInfoPayload {\n poll?: boolean\n}\nexport interface FetchInfoSuccessPayload {\n isCloudAvailable: boolean\n isCloudEnabled: boolean\n isAgentClaimed: boolean\n isACLKAvailable: boolean\n fullInfoPayload: InfoPayload\n}\nexport const fetchInfoAction = createRequestAction<\n FetchInfoPayload,\n FetchInfoSuccessPayload\n>(`${storeKey}/fetchInfoAction`)\n","import { init, last, mergeAll } from \"ramda\"\nimport { createReducer } from \"redux-act\"\n\nimport { getInitialAfterFromWindow } from \"utils/utils\"\nimport { isMainJs } from \"utils/env\"\nimport { RegistryMachine } from \"domains/global/sagas\"\nimport { Alarm, ActiveAlarms, Snapshot, ChartsMetadata } from \"domains/global/types\"\nimport { fetchInfoAction } from \"domains/chart/actions\"\nimport { InfoPayload } from \"./__mocks__/info-mock\"\nimport {\n requestCommonColorsAction,\n setGlobalChartUnderlayAction,\n setGlobalSelectionAction,\n setGlobalPanAndZoomAction,\n centerAroundHighlightAction,\n clearHighlightAction,\n resetGlobalPanAndZoomAction,\n setDefaultAfterAction,\n windowFocusChangeAction,\n fetchHelloAction,\n updatePersonUrlsAction,\n startAlarmsAction,\n updateActiveAlarmsAction,\n setOptionAction,\n loadSnapshotAction,\n chartsMetadataRequestSuccess,\n setCommonMaxAction,\n setCommonMinAction,\n resetOptionsAction,\n setSpacePanelStatusAction,\n setSpacePanelTransitionEndAction,\n resetRegistry,\n accessRegistrySuccessAction,\n resetDefaultAfterAction,\n setAlarmAction,\n} from \"./actions\"\nimport {\n Options, optionsMergedWithLocalStorage, getOptionsMergedWithLocalStorage, clearLocalStorage,\n} from \"./options\"\nimport { CLOUD_BASE_URL_DISABLED } from \"./constants\"\n\ninterface CommonMinMax {\n [commonKey: string]: {\n charts: {\n [chartUuid: string]: number\n }\n currentExtreme: number\n }\n}\n\nexport type StateT = {\n commonColorsKeys: {\n [key: string]: {\n // key can be uuid, chart's context or commonColors attribute\n assigned: {\n // name-value of dimensions and their colors\n [dimensionName: string]: string\n }\n available: string[] // an array of colors available to be used\n custom: string[] // the array of colors defined by the user\n charts: {} // the charts linked to this todo remove\n copyTheme: boolean\n }\n }\n commonMin: CommonMinMax\n commonMax: CommonMinMax\n currentSelectionMasterId: string | null\n globalPanAndZoom: null | {\n after: number // timestamp in ms\n before: number // timestamp in ms\n masterID?: string\n shouldForceTimeRange?: boolean\n }\n defaultAfter: number\n globalChartUnderlay: null | {\n after: number\n before: number\n masterID: string\n }\n hoveredX: number | null\n hasWindowFocus: boolean\n\n spacePanelIsActive: boolean\n spacePanelTransitionEndIsActive: boolean\n\n registry: {\n cloudBaseURL: string | null\n hasFetchedHello: boolean\n isHelloCallError: boolean | null\n hasFetchedInfo: boolean\n hostname: string\n isCloudEnabled: boolean | null\n isCloudAvailable: boolean | null\n isAgentClaimed: boolean | null\n isACLKAvailable: boolean | null\n hasStartedInfo: boolean\n fullInfoPayload: InfoPayload | null\n isFetchingHello: boolean\n machineGuid: string | null\n personGuid: string | null\n registryMachines: { [key: string]: RegistryMachine } | null\n registryMachinesArray: RegistryMachine[] | null\n registryServer: string | null,\n }\n\n chartsMetadata: {\n isFetching: boolean\n isFetchingError: boolean\n data: null | ChartsMetadata\n }\n\n alarms: {\n activeAlarms: null | ActiveAlarms\n hasStartedAlarms: boolean\n }\n alarm: null | Alarm\n\n snapshot: Snapshot | null\n options: Options\n}\n\nexport const initialDefaultAfter = isMainJs ? getInitialAfterFromWindow() : -900\n\nexport const initialState: StateT = {\n commonColorsKeys: {},\n commonMin: {},\n commonMax: {},\n currentSelectionMasterId: null,\n globalPanAndZoom: null,\n // todo for dashboard calculate it based on width and window.NETDATA.chartDefaults.after\n defaultAfter: initialDefaultAfter,\n globalChartUnderlay: null,\n hoveredX: null,\n hasWindowFocus: document.hasFocus(),\n spacePanelIsActive: false, // set to true only for testing layout\n // the same as property above, just updated after transition ends\n spacePanelTransitionEndIsActive: false,\n\n registry: {\n cloudBaseURL: null,\n hasFetchedInfo: false,\n hasFetchedHello: false,\n isHelloCallError: null,\n hostname: \"unknown\",\n isCloudEnabled: null,\n isCloudAvailable: null,\n isAgentClaimed: null,\n isACLKAvailable: null,\n hasStartedInfo: false,\n isFetchingHello: false,\n fullInfoPayload: null,\n machineGuid: null,\n personGuid: null,\n registryMachines: null,\n registryMachinesArray: null,\n registryServer: null,\n },\n\n snapshot: null,\n alarms: {\n activeAlarms: null,\n hasStartedAlarms: false,\n },\n alarm: null,\n\n chartsMetadata: {\n isFetching: false,\n isFetchingError: false,\n data: null,\n },\n\n options: optionsMergedWithLocalStorage,\n}\n\nexport const globalReducer = createReducer<StateT>({}, initialState)\n\nexport interface GetKeyArguments {\n colorsAttribute: string | undefined\n commonColorsAttribute: string | undefined\n chartUuid: string\n chartContext: string\n}\nexport const getKeyForCommonColorsState = ({\n colorsAttribute,\n commonColorsAttribute,\n chartUuid,\n chartContext,\n}: GetKeyArguments) => {\n const hasCustomColors = typeof colorsAttribute === \"string\" && colorsAttribute.length > 0\n\n // when there's commonColors attribute, share the state between all charts with that attribute\n // if not, when there are custom colors, make each chart independent\n // if not, share the same state between charts with the same context\n return commonColorsAttribute || (hasCustomColors ? chartUuid : chartContext)\n}\n\nconst hasLastOnly = (array: string[]) => last(array) === \"ONLY\"\nconst removeLastOnly = (array: string[]) => (hasLastOnly(array) ? init(array) : array)\nconst createCommonColorsKeysSubstate = (\n colorsAttribute: string | undefined,\n hasCustomColors: boolean,\n) => {\n const custom = hasCustomColors ? removeLastOnly((colorsAttribute as string).split(\" \")) : []\n const shouldCopyTheme = hasCustomColors\n // disable copyTheme when there's \"ONLY\" keyword in \"data-colors\" attribute\n ? !hasLastOnly((colorsAttribute as string).split(\" \"))\n : true\n const available = [\n ...custom,\n ...(shouldCopyTheme || custom.length === 0 ? window.NETDATA.themes.current.colors : []),\n ]\n return {\n assigned: {},\n available,\n custom,\n }\n}\n\nglobalReducer.on(\n requestCommonColorsAction,\n //@ts-ignore\n (state, {\n chartContext, chartUuid, colorsAttribute, commonColorsAttribute, dimensionNames,\n }) => {\n const keyName = getKeyForCommonColorsState({\n colorsAttribute,\n commonColorsAttribute,\n chartUuid,\n chartContext,\n })\n\n const hasCustomColors = typeof colorsAttribute === \"string\" && colorsAttribute.length > 0\n const subState = state.commonColorsKeys[keyName]\n || createCommonColorsKeysSubstate(colorsAttribute, hasCustomColors)\n\n const currentlyAssignedNr = Object.keys(subState.assigned).length\n const requestedDimensionsAssigned = mergeAll(\n dimensionNames\n // dont assign already assigned dimensions\n .filter((dimensionName) => !subState.assigned[dimensionName])\n .map((dimensionName, i) => ({\n [dimensionName]:\n subState.available[(i + currentlyAssignedNr) % subState.available.length],\n })),\n )\n const assigned = {\n ...subState.assigned,\n ...requestedDimensionsAssigned,\n }\n\n return {\n ...state,\n commonColorsKeys: {\n ...state.commonColorsKeys,\n [keyName]: {\n ...subState,\n assigned,\n },\n },\n }\n },\n)\n\n\nglobalReducer.on(setCommonMinAction, (state, { chartUuid, commonMinKey, value }) => {\n const charts = {\n ...state.commonMin[commonMinKey]?.charts,\n [chartUuid]: value,\n }\n const currentExtreme = Math.min(...Object.values(charts))\n\n return {\n ...state,\n commonMin: {\n ...state.commonMin,\n [commonMinKey]: {\n charts,\n currentExtreme,\n },\n },\n }\n})\n\nglobalReducer.on(setCommonMaxAction, (state, { chartUuid, commonMaxKey, value }) => {\n const charts = {\n ...state.commonMax[commonMaxKey]?.charts,\n [chartUuid]: value,\n }\n const currentExtreme = Math.max(...Object.values(charts))\n\n return {\n ...state,\n commonMax: {\n ...state.commonMax,\n [commonMaxKey]: {\n charts,\n currentExtreme,\n },\n },\n }\n})\n\nglobalReducer.on(setSpacePanelStatusAction, (state, { isActive }) => ({\n ...state,\n spacePanelIsActive: isActive,\n}))\n\nglobalReducer.on(setSpacePanelTransitionEndAction, (state, { isActive }) => ({\n ...state,\n spacePanelTransitionEndIsActive: isActive,\n}))\n\nglobalReducer.on(setGlobalSelectionAction, (state, { chartUuid, hoveredX }) => ({\n ...state,\n hoveredX,\n currentSelectionMasterId: chartUuid,\n}))\n\nglobalReducer.on(\n setGlobalPanAndZoomAction,\n (state, payload) => ({\n ...state,\n globalPanAndZoom: payload,\n }),\n)\n\nglobalReducer.on(resetGlobalPanAndZoomAction, (state) => ({\n ...state,\n globalPanAndZoom: initialState.globalPanAndZoom,\n hoveredX: initialState.hoveredX, // need to reset this also on mobile\n}))\n\nglobalReducer.on(setDefaultAfterAction, (state, { after }) => ({\n ...state,\n defaultAfter: after,\n}))\n\nglobalReducer.on(resetDefaultAfterAction, (state) => ({\n ...state,\n defaultAfter: initialState.defaultAfter,\n}))\n\nglobalReducer.on(setGlobalChartUnderlayAction, (state, { after, before, masterID }) => ({\n ...state,\n globalChartUnderlay: {\n after,\n before,\n masterID,\n },\n}))\n\nglobalReducer.on(centerAroundHighlightAction, (state) => {\n if (!state.globalChartUnderlay) {\n // eslint-disable-next-line no-console\n console.warn(\"Cannot center around empty selection\")\n return state\n }\n const { after, before } = state.globalChartUnderlay\n const highlightMargin = (before - after) / 2\n return {\n ...state,\n globalPanAndZoom: {\n after: after - highlightMargin,\n before: before + highlightMargin,\n },\n }\n})\n\n\nglobalReducer.on(clearHighlightAction, (state, { resetPanAndZoom = true }:{ resetPanAndZoom?: boolean } = {}) => ({\n ...state,\n globalChartUnderlay: initialState.globalChartUnderlay,\n ...(resetPanAndZoom ? {globalPanAndZoom: initialState.globalPanAndZoom}: {}),\n}))\n\nglobalReducer.on(windowFocusChangeAction, (state, { hasWindowFocus }) => {\n // make additional check, because it's possible to get hasWindowFocus === false\n // message from iframe, after main window makes the state change (race condition)\n const hasFocusNow = document.hasFocus()\n return {\n ...state,\n hasWindowFocus: hasFocusNow || hasWindowFocus,\n }\n})\n\nglobalReducer.on(fetchHelloAction.request, (state) => ({\n ...state,\n registry: {\n ...state.registry,\n isFetchingHello: true,\n },\n}))\n\nglobalReducer.on(fetchHelloAction.success, (state, {\n cloudBaseURL, hostname, machineGuid,\n}) => ({\n ...state,\n registry: {\n ...state.registry,\n cloudBaseURL,\n isFetchingHello: false,\n hasFetchedHello: true,\n hostname,\n machineGuid,\n },\n}))\nglobalReducer.on(fetchHelloAction.failure, (state) => ({\n ...state,\n registry: {\n ...state.registry,\n cloudBaseURL: CLOUD_BASE_URL_DISABLED,\n isFetchingHello: false,\n isHelloCallError: true,\n },\n}))\nglobalReducer.on(accessRegistrySuccessAction, (state, { registryServer }) => ({\n ...state,\n registry: {\n ...state.registry,\n registryServer,\n },\n}))\n\nglobalReducer.on(resetRegistry, (state) => ({\n ...state,\n registry: {\n ...state.registry,\n hasFetchedHello: initialState.registry.hasFetchedHello,\n },\n}))\n\nglobalReducer.on(fetchInfoAction, (state) => ({\n ...state,\n registry: {\n ...state.registry,\n hasStartedInfo: true,\n },\n}))\nglobalReducer.on(fetchInfoAction.success, (state, {\n isCloudAvailable, isCloudEnabled, isAgentClaimed, isACLKAvailable, fullInfoPayload,\n}) => ({\n ...state,\n registry: {\n ...state.registry,\n hasFetchedInfo: true,\n isCloudAvailable,\n isCloudEnabled,\n isAgentClaimed,\n isACLKAvailable,\n fullInfoPayload,\n },\n}))\n\nglobalReducer.on(fetchInfoAction.failure, (state) => ({\n ...state,\n registry: {\n ...state.registry,\n isCloudAvailable: false,\n isCloudEnabled: false,\n isAgentClaimed: false,\n isACLKAvailable: false,\n },\n}))\n\nglobalReducer.on(updatePersonUrlsAction, (state, {\n personGuid, registryMachines, registryMachinesArray,\n}) => ({\n ...state,\n registry: {\n ...state.registry,\n personGuid,\n registryMachines,\n registryMachinesArray,\n },\n}))\n\nglobalReducer.on(startAlarmsAction, (state) => ({\n ...state,\n alarms: {\n ...state.alarms,\n hasStartedAlarms: true,\n },\n}))\n\nglobalReducer.on(updateActiveAlarmsAction, (state, { activeAlarms }) => ({\n ...state,\n alarms: {\n ...state.alarms,\n activeAlarms,\n },\n}))\n\nglobalReducer.on(setOptionAction, (state, { key, value }) => ({\n ...state,\n options: {\n ...state.options,\n [key]: value,\n },\n}))\n\nglobalReducer.on(resetOptionsAction, (state) => {\n clearLocalStorage()\n return {\n ...state,\n options: getOptionsMergedWithLocalStorage(),\n }\n})\n\nglobalReducer.on(loadSnapshotAction, (state, { snapshot }) => {\n const parsedData = Object.keys(snapshot.data)\n .map((dataKey) => {\n let uncompressed\n try {\n // @ts-ignore\n uncompressed = snapshot.uncompress(snapshot.data[dataKey])\n\n // repeat old logging\n if (uncompressed === null) {\n // eslint-disable-next-line no-console\n console.warn(`uncompressed snapshot data for key ${dataKey} is null`)\n return null\n }\n\n if (typeof uncompressed === \"undefined\") {\n // eslint-disable-next-line no-console\n console.warn(`uncompressed snapshot data for key ${dataKey} is undefined`)\n return null\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn(`decompression of snapshot data for key ${dataKey} failed`, e)\n uncompressed = null\n }\n\n if (typeof uncompressed !== \"string\") {\n // eslint-disable-next-line no-console\n console.warn(`uncompressed snapshot data for key ${dataKey} is not string`)\n return {}\n }\n\n let data\n try {\n data = JSON.parse(uncompressed)\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn(`parsing snapshot data for key ${dataKey} failed`)\n return {}\n }\n\n return { [dataKey]: data }\n })\n .reduce((acc, obj) => ({ ...acc, ...obj }), {})\n\n return {\n ...state,\n snapshot: {\n ...snapshot,\n data: parsedData as { [key: string]: unknown },\n },\n }\n})\n\nglobalReducer.on(setAlarmAction, (state, { alarm }) => ({\n ...state,\n alarm,\n}))\n\nglobalReducer.on(chartsMetadataRequestSuccess, (state, { data }) => ({\n ...state,\n chartsMetadata: {\n ...state.chartsMetadata,\n data,\n },\n}))\n","import React from \"react\"\nimport classNames from \"classnames\"\n\n// todo add supoort for window.netdataIcons\nexport type IconType = \"left\" | \"reset\" | \"right\" | \"zoomIn\" | \"zoomOut\" | \"resize\" | \"lineChart\"\n | \"areaChart\" | \"noChart\" | \"loading\" | \"noData\"\nconst typeToClassName = (iconType: IconType) => ({\n left: \"fa-backward\",\n reset: \"fa-play\",\n right: \"fa-forward\",\n zoomIn: \"fa-plus\",\n zoomOut: \"fa-minus\",\n resize: \"fa-sort\",\n lineChart: \"fa-chart-line\",\n areaChart: \"fa-chart-area\",\n noChart: \"fa-chart-area\",\n loading: \"fa-sync-alt\",\n noData: \"fa-exclamation-triangle\",\n} as {[key in IconType]: string})[iconType]\n\ninterface Props {\n iconType: IconType\n}\nexport const Icon = ({ iconType }: Props) => (\n <i className={classNames(\"fas\", typeToClassName(iconType))} />\n)\n","import {\n map, omit, assoc, pick,\n} from \"ramda\"\nimport { createReducer } from \"redux-act\"\n\nimport { setOptionAction } from \"domains/global/actions\"\nimport { SYNC_PAN_AND_ZOOM } from \"domains/global/options\"\nimport { useNewKeysOnlyIfDifferent } from \"utils/utils\"\n\nimport {\n fetchDataAction,\n fetchChartAction,\n setResizeHeightAction,\n clearChartStateAction,\n fetchDataForSnapshotAction,\n snapshotExportResetAction,\n setChartPanAndZoomAction,\n resetChartPanAndZoomAction,\n fetchDataCancelAction,\n} from \"./actions\"\nimport { ChartState } from \"./chart-types\"\n\nexport type StateT = {\n [chartID: string]: ChartState\n}\n\nexport const initialState = {\n}\nexport const initialSingleState = {\n chartData: null,\n chartId: null,\n chartMetadata: null,\n chartPanAndZoom: null,\n fetchDataParams: {\n isRemotelyControlled: false,\n viewRange: null,\n },\n isFetchingData: false,\n isFetchDataFailure: false,\n isFetchDetailsFailure: false,\n isFetchingDetails: false,\n resizeHeight: null,\n\n snapshotDataIsFetching: false,\n snapshotDataIsError: false,\n snapshotData: null,\n viewRange: null,\n}\n\nexport const chartReducer = createReducer<StateT>(\n {},\n initialState,\n)\n\nexport const getSubstate = (state: StateT, id: string) => state[id] || initialSingleState\n\nchartReducer.on(fetchDataAction.request, (state, { chart, fetchDataParams, id }) => ({\n ...state,\n [id]: {\n ...getSubstate(state, id),\n chartId: chart,\n isFetchingData: true,\n viewRange: fetchDataParams.viewRange,\n },\n}))\n\nchartReducer.on(fetchDataCancelAction, (state, { id }) => ({\n ...state,\n [id]: {\n ...getSubstate(state, id),\n isFetchingData: false,\n },\n}))\n\nchartReducer.on(fetchDataAction.failure, (state, { id }) => ({\n ...state,\n [id]: {\n ...getSubstate(state, id),\n isFetchingData: false,\n isFetchDataFailure: true,\n },\n}))\n\nchartReducer.on(fetchDataAction.success, (state, { id, chartData, fetchDataParams }) => {\n const substate = getSubstate(state, id)\n return {\n ...state,\n [id]: {\n ...substate,\n chartData: useNewKeysOnlyIfDifferent([\"dimension_names\"], substate.chartData, chartData!),\n fetchDataParams,\n isFetchingData: false,\n isFetchDataFailure: false,\n viewRange: fetchDataParams.viewRange,\n },\n }\n})\n\n\nchartReducer.on(fetchDataForSnapshotAction.request, (state, { id }) => ({\n ...state,\n [id]: {\n ...getSubstate(state, id),\n snapshotDataIsFetching: true,\n },\n}))\n\nchartReducer.on(fetchDataForSnapshotAction.failure, (state, { id }) => ({\n ...state,\n [id]: {\n ...getSubstate(state, id),\n snapshotDataIsFetching: false,\n snapshotDataIsError: true,\n },\n}))\n\nchartReducer.on(fetchDataForSnapshotAction.success, (state, { id, snapshotData }) => ({\n ...state,\n [id]: {\n ...getSubstate(state, id),\n snapshotDataIsFetching: false,\n snapshotDataIsError: false,\n snapshotData,\n },\n}))\n\nchartReducer.on(snapshotExportResetAction, (state) => map((substate) => ({\n ...substate,\n ...pick([\"snapshotDataIsFetching\", \"snapshotDataIsError\", \"snapshotData\"], initialSingleState),\n}), state))\n\n\nchartReducer.on(fetchChartAction.request, (state, { id }) => ({\n ...state,\n [id]: {\n ...getSubstate(state, id),\n isFetchingDetails: true,\n },\n}))\n\nchartReducer.on(fetchChartAction.failure, (state, { id }) => ({\n ...state,\n [id]: {\n ...getSubstate(state, id),\n isFetchDetailsFailure: true,\n },\n}))\n\nchartReducer.on(fetchChartAction.success, (state, { id, chartMetadata }) => ({\n ...state,\n [id]: {\n ...getSubstate(state, id),\n chartMetadata,\n isFetchingDetails: false,\n isFetchDetailsFailure: false,\n },\n}))\n\n// todo handle errors without creating a loop\n// chartReducer.on(fetchChartAction.failure, (state, { id }) => ({\n// ...state,\n// [id]: {\n// ...getSubstate(state, id),\n// isFetchingDetails: false,\n// },\n// }))\n\nchartReducer.on(setResizeHeightAction, (state, { id, resizeHeight }) => ({\n ...state,\n [id]: {\n ...getSubstate(state, id),\n resizeHeight,\n },\n}))\n\nchartReducer.on(setChartPanAndZoomAction, (state, {\n after, before, id, shouldForceTimeRange,\n}) => ({\n ...state,\n [id]: {\n ...getSubstate(state, id),\n chartPanAndZoom: { after, before, shouldForceTimeRange },\n },\n}))\n\nchartReducer.on(resetChartPanAndZoomAction, (state, { id }) => ({\n ...state,\n [id]: {\n ...getSubstate(state, id),\n chartPanAndZoom: initialSingleState.chartPanAndZoom,\n },\n}))\n\nchartReducer.on(setOptionAction, (state, { key, value }) => {\n // clear chartPanAndZoom, when SYNC_PAN_AND_ZOOM flag is turned on\n if (key === SYNC_PAN_AND_ZOOM && value === true) {\n return map(\n assoc(\"chartPanAndZoom\", initialSingleState.chartPanAndZoom),\n state,\n )\n }\n return state\n})\n\nchartReducer.on(clearChartStateAction, (state, { id }) => omit([id], state))\n","import { mapObjIndexed, mergeAll, isEmpty } from \"ramda\"\nimport { Method } from \"axios\"\nimport { initialLegendRight } from \"domains/global/options\"\nimport { ChartLibraryName } from \"./chartLibrariesSettings\"\n\ntype OutputValue = string | boolean | number | null | undefined | any[]\n// almost the same as in old dashboard to ensure readers that it works the same way\nconst getDataAttribute = (element: Element, key: string, defaultValue?: OutputValue) => {\n const dataKey = `data-${key}`\n if (element.hasAttribute(dataKey)) {\n // we know it's not null because of hasAttribute()\n const data = element.getAttribute(dataKey) as string\n\n if (data === \"true\") {\n return true\n }\n if (data === \"false\") {\n return false\n }\n if (data === \"null\") {\n return null\n }\n\n // Only convert to a number if it doesn't change the string\n if (data === `${+data}`) {\n return +data\n }\n\n if (/^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/.test(data)) {\n return JSON.parse(data)\n }\n\n return data\n }\n // if no default is passed, then it's undefined and can be replaced with default value later\n // it is recommended to do it in props destructuring assignment phase, ie.:\n // const Chart = ({ dygraphPointsize = 1 }) => ....\n return defaultValue\n}\n\nconst getDataAttributeBoolean = (element: Element, key: string, defaultValue?: boolean) => {\n const value = getDataAttribute(element, key, defaultValue)\n\n if (value === true || value === false) { // gmosx: Love this :)\n return value\n }\n\n if (typeof (value) === \"string\") {\n if (value === \"yes\" || value === \"on\") {\n return true\n }\n\n if (value === \"\" || value === \"no\" || value === \"off\" || value === \"null\") {\n return false\n }\n\n return defaultValue\n }\n\n if (typeof (value) === \"number\") {\n return value !== 0\n }\n\n return defaultValue\n}\n\ninterface BaseAttributeConfig {\n key: string\n defaultValue?: OutputValue\n}\ninterface BooleanAttributeConfig extends BaseAttributeConfig {\n type: \"boolean\"\n defaultValue?: boolean\n}\ntype AttributeConfig = BaseAttributeConfig | BooleanAttributeConfig\n\nexport interface StaticAttributes {\n id: string\n host?: string | undefined\n httpMethod?: Method\n title?: string\n chartLibrary: ChartLibraryName\n width: number | string | null\n height?: number | string | null\n after?: number\n before?: number\n legend?: boolean\n legendPosition?: \"bottom\" | \"right\"\n units?: string\n unitsCommon?: string\n unitsDesired?: string\n aggrMethod?: string\n labels?: {[key: string]: string}\n postGroupBy?: string\n dimensionsAggrMethod?: string\n postAggregationMethod?: string\n aggrGroups?: string[]\n selectedChart?: string\n filteredRows?: string[] | null\n groupBy?: string\n nodeIDs?: string[]\n colors?: string\n commonColors?: string\n decimalDigits?: number\n dimensions?: string\n selectedDimensions?: string[]\n forceTimeWindow?: boolean\n\n appendOptions?: string | undefined\n gtime?: number\n method?: string\n overrideOptions?: string\n pixelsPerPoint?: number\n points?: number\n heightId?: string\n hideResizeHandler?: boolean\n detectResize?: boolean\n commonMin?: string\n commonMax?: string\n\n dygraphType?: string\n dygraphValueRange?: any[]\n dygraphTheme?: string\n dygraphSmooth?: boolean\n dygraphColors?: string[]\n dygraphRightGap?: number\n dygraphShowRangeSelector?: boolean\n dygraphShowRoller?: boolean\n dygraphTitle?: string\n dygraphTitleHeight?: number\n dygraphLegend?: \"always\" | \"follow\" | \"onmouseover\" | \"never\"\n dygraphLabelsDiv?: string\n dygraphLabelsSeparateLine?: boolean\n dygraphIncludeZero?: boolean\n dygraphShowZeroValues?: boolean\n dygraphShowLabelsOnHighLight?: boolean\n dygraphHideOverlayOnMouseOut?: boolean\n dygraphXRangePad?: number\n dygraphYRangePad?: number\n dygraphYLabelWidth?: number\n dygraphStrokeWidth?: number\n dygraphStrokePattern?: number[]\n dygraphDrawPoints?: boolean\n dygraphDrawGapEdgePoints?: boolean\n dygraphConnectSeparatedPoints?: boolean\n dygraphPointSize?: number\n dygraphStepPlot?: boolean\n dygraphStrokeBorderColor?: string\n dygraphStrokeBorderWidth?: number\n dygraphFillGraph?: boolean\n dygraphFillAlpha?: number\n dygraphStackedGraph?: boolean\n dygraphStackedGraphNanFill?: string\n dygraphAxisLabelFontSize?: number\n dygraphAxisLineColor?: string\n dygraphAxisLineWidth?: number\n dygraphDrawGrid?: boolean\n dygraphGridLinePattern?: number[]\n dygraphGridLineWidth?: number\n dygraphGridLineColor?: string\n dygraphMaxNumberWidth?: number\n dygraphSigFigs?: number\n dygraphDigitsAfterDecimal?: number\n dygraphHighlighCircleSize?: number\n dygraphHighlightSeriesOpts?: {[options: string]: number}\n dygraphHighlightSeriesBackgroundAlpha?: number\n dygraphXPixelsPerLabel?: number\n dygraphXAxisLabelWidth?: number\n dygraphDrawXAxis?: boolean\n dygraphYPixelsPerLabel?: number\n dygraphYAxisLabelWidth?: number\n dygraphDrawYAxis?: boolean\n dygraphDrawAxis?: boolean\n\n easyPieChartMinValue?: number\n easyPieChartMaxValue?: number\n easyPieChartBarColor?: string\n easyPieChartTrackColor?: string\n easyPieChartScaleColor?: string,\n easyPieChartScaleLength?: number,\n easyPieChartLineCap?: string,\n easyPieChartLineWidth?: string,\n easyPieChartTrackWidth?: string,\n easyPieChartSize?: string,\n easyPieChartRotate?: number,\n easyPieChartAnimate?: string,\n easyPieChartEasing?: string,\n\n gaugeMinValue?: number,\n gaugeMaxValue?: number,\n gaugePointerColor?: string,\n gaugeStrokeColor?: string,\n gaugeStartColor?: string,\n gaugeStopColor?: string,\n gaugeGenerateGradient?: boolean | string[],\n\n sparklineType?: string,\n sparklineLineColor?: string,\n sparklineFillColor?: string,\n sparklineChartRangeMin?: string,\n sparklineChartRangeMax?: string,\n sparklineComposite?: string,\n sparklineEnableTagOptions?: string,\n sparklineTagOptionPrefix?: string,\n sparklineTagValuesAttribute?: string,\n sparklineDisableHiddenCheck?: string,\n sparklineDefaultPixelsPerValue?: string,\n sparklineSpotColor?: string,\n sparklineMinSpotColor?: string,\n sparklineMaxSpotColor?: string,\n sparklineSpotRadius?: string,\n sparklineValueSpots?: string,\n sparklineHighlightSpotColor?: string,\n sparklineHighlightLineColor?: string,\n sparklineLineWidth?: string,\n sparklineNormalRangeMin?: string,\n sparklineNormalRangeMax?: string,\n sparklineDrawNormalOnTop?: string,\n sparklineXvalues?: string,\n sparklineChartRangeClip?: string,\n sparklineChartRangeMinX?: string,\n sparklineChartRangeMaxX?: string,\n sparklineDisableInteraction?: boolean,\n sparklineDisableTooltips?: boolean,\n sparklineOnHover?: Function,\n sparklineDisableHighlight?: boolean,\n sparklineHighlightLighten?: string,\n sparklineHighlightColor?: string,\n sparklineTooltipContainer?: string,\n sparklineTooltipClassname?: string,\n sparklineTooltipFormat?: string,\n sparklineTooltipPrefix?: string,\n sparklineTooltipSuffix?: string,\n sparklineTooltipSkipNull?: boolean,\n sparklineTooltipValueLookups?: string,\n sparklineTooltipFormatFieldlist?: string,\n sparklineTooltipFormatFieldlistKey?: string,\n sparklineNumberFormatter?: (d: number) => string,\n sparklineNumberDigitGroupSep?: string,\n sparklineNumberDecimalMark?: string,\n sparklineNumberDigitGroupCount?: string,\n sparklineAnimatedZooms?: boolean,\n\n\n d3pieTitle?: string,\n d3pieSubtitle?: string,\n d3pieFooter?: string,\n d3pieTitleColor?: string,\n d3pieTitleFontsize?: string,\n d3pieTitleFontweight?: string,\n d3pieTitleFont?: string,\n d3PieSubtitleColor?: string,\n d3PieSubtitleFontsize?: string,\n d3PieSubtitleFontweight?: string,\n d3PieSubtitleFont?: string,\n d3PieFooterColor?: string,\n d3PieFooterFontsize?: string,\n d3PieFooterFontweight?: string,\n d3PieFooterFont?: string,\n d3PieFooterLocation?: string,\n d3PiePieinnerradius?: string,\n d3PiePieouterradius?: string,\n d3PieSortorder?: string,\n d3PieSmallsegmentgroupingEnabled?: boolean,\n d3PieSmallsegmentgroupingValue?: string,\n d3PieSmallsegmentgroupingValuetype?: string,\n d3PieSmallsegmentgroupingLabel?: string,\n d3PieSmallsegmentgroupingColor?: string,\n d3PieLabelsOuterFormat?: string,\n d3PieLabelsOuterHidewhenlessthanpercentage?: string,\n d3PieLabelsOuterPiedistance?: string,\n d3PieLabelsInnerFormat?: string,\n d3PieLabelsInnerHidewhenlessthanpercentage?: string,\n d3PieLabelsMainLabelColor?: string,\n d3PieLabelsMainLabelFont?: string,\n d3PieLabelsMainLabelFontsize?: string,\n d3PieLabelsMainLabelFontweight?: string,\n d3PieLabelsPercentageColor?: string,\n d3PieLabelsPercentageFont?: string,\n d3PieLabelsPercentageFontsize?: string,\n d3PieLabelsPercentageFontweight?: string,\n d3PieLabelsValueColor?: string,\n d3PieLabelsValueFont?: string,\n d3PieLabelsValueFontsize?: string,\n d3PieLabelsValueFontweight?: string,\n d3PieLabelsLinesEnabled?: boolean,\n d3PieLabelsLinesStyle?: string,\n d3PieLabelsLinesColor?: string,\n d3PieLabelsTruncationEnabled?: boolean,\n d3PieLabelsTruncationTruncatelength?: string,\n d3PieMiscColorsSegmentstroke?: string,\n d3PieMiscGradientEnabled?: boolean,\n d3PieMiscColorsPercentage?: string,\n d3PieMiscGradientColor?: string,\n d3PieCssprefix?: string,\n\n peityStrokeWidth?: number,\n\n textOnlyDecimalPlaces?: number,\n textOnlyPrefix?: string,\n textOnlySuffix?: string,\n}\n\nexport interface Attributes extends StaticAttributes {\n // changed structure compared to original dashboard.js (not flat list, but dynamic objects stored\n // in \"showValueOf\" property\n showValueOf?: { [key: string]: string }\n}\n\nexport interface ChartsAttributes {\n [chartID:string]: Attributes\n}\n\nexport type AttributePropKeys = keyof StaticAttributes\n\ntype AttributesMap = {\n [key in AttributePropKeys]: AttributeConfig\n}\n\n// needs to be a getter so all window.NETDATA settings are set\nconst getAttributesMap = (): AttributesMap => ({\n // all properties that don't have `defaultValue` should be \"| undefined\" in Attributes interface\n // todo try to write above rule in TS\n id: { key: \"netdata\" },\n host: { key: \"host\" },\n httpMethod: { key: \"http-method\" },\n title: { key: \"title\" },\n chartLibrary: { key: \"chart-library\", defaultValue: window.NETDATA.chartDefaults.library },\n width: { key: \"width\", defaultValue: window.NETDATA.chartDefaults.width },\n height: { key: \"height\", defaultValue: window.NETDATA.chartDefaults.height },\n // todo use chartDefaults for static custom dashboards\n // after: { key: \"after\", defaultValue: window.NETDATA.chartDefaults.after },\n after: { key: \"after\" },\n before: { key: \"before\", defaultValue: window.NETDATA.chartDefaults.before },\n legend: { key: \"legend\", type: \"boolean\", defaultValue: true },\n legendPosition: { key: \"legend-position\" },\n units: { key: \"units\" },\n unitsCommon: { key: \"common-units\" },\n unitsDesired: { key: \"desired-units\" },\n aggrMethod: { key: \"aggr-method\" },\n labels: { key: \"labels\" },\n postGroupBy: { key: \"post-group-by\" },\n postAggregationMethod: { key: \"post-aggregation-method\" },\n dimensionsAggrMethod: { key: \"dimensions-aggr-method\" },\n aggrGroups: { key: \"aggrGroups\" },\n selectedChart: { key: \"selected-chart\" },\n filteredRows: { key: \"filtered-rows\" },\n groupBy: { key: \"group-by\" },\n nodeIDs: { key: \"node-ids\" },\n colors: { key: \"colors\" },\n commonColors: { key: \"common-colors\" },\n decimalDigits: { key: \"decimal-digits\" },\n dimensions: { key: \"dimensions\" },\n selectedDimensions: { key: \"selected-dimensions\" },\n forceTimeWindow: { key: \"force-time-window\" },\n\n appendOptions: { key: \"append-options\" },\n gtime: { key: \"gtime\" },\n method: { key: \"method\" },\n overrideOptions: { key: \"override-options\" },\n pixelsPerPoint: { key: \"pixels-per-point\" },\n points: { key: \"points\" },\n heightId: { key: \"id\" },\n hideResizeHandler: { key: \"hide-resize-handler\" },\n detectResize: { key: \"detect-resize\" },\n commonMin: { key: \"common-min\" },\n commonMax: { key: \"common-max\" },\n\n // let's not put the default values here, because they will also be needed by the main Agent page\n // and the Cloud App\n dygraphType: { key: \"dygraph-type\" },\n dygraphValueRange: { key: \"dygraph-valuerange\" },\n dygraphTheme: { key: \"dygraph-theme\" },\n dygraphSmooth: { key: \"dygraph-smooth\", type: \"boolean\" },\n dygraphColors: { key: \"dygraph-colors\" }, // not working in original dashboard\n dygraphRightGap: { key: \"dygraph-rightgap\" },\n dygraphShowRangeSelector: { key: \"dygraph-showrangeselector\", type: \"boolean\" },\n dygraphShowRoller: { key: \"dygraph-showroller\", type: \"boolean\" },\n dygraphTitle: { key: \"dygraph-title\" },\n dygraphTitleHeight: { key: \"dygraph-titleheight\" },\n dygraphLegend: { key: \"dygraph-legend\" },\n dygraphLabelsDiv: { key: \"dygraph-labelsdiv\" },\n dygraphLabelsSeparateLine: { key: \"dygraph-labelsseparatelines\", type: \"boolean\" },\n dygraphIncludeZero: { key: \"dygraph-includezero\", type: \"boolean\" },\n dygraphShowZeroValues: { key: \"dygraph-labelsshowzerovalues\", type: \"boolean\" },\n dygraphShowLabelsOnHighLight: { key: \"dygraph-showlabelsonhighlight\", type: \"boolean\" },\n dygraphHideOverlayOnMouseOut: { key: \"dygraph-hideoverlayonmouseout\", type: \"boolean\" },\n dygraphXRangePad: { key: \"dygraph-xrangepad\" },\n dygraphYRangePad: { key: \"dygraph-yrangepad\" },\n dygraphYLabelWidth: { key: \"dygraph-ylabelwidth\" },\n dygraphStrokeWidth: { key: \"dygraph-strokewidth\" },\n dygraphStrokePattern: { key: \"dygraph-strokepattern\" },\n dygraphDrawPoints: { key: \"dygraph-drawpoints\", type: \"boolean\" },\n dygraphDrawGapEdgePoints: { key: \"dygraph-drawgapedgepoints\", type: \"boolean\" },\n dygraphConnectSeparatedPoints: { key: \"dygraph-connectseparatedpoints\", type: \"boolean\" },\n dygraphPointSize: { key: \"dygraph-pointsize\" },\n dygraphStepPlot: { key: \"dygraph-stepplot\", type: \"boolean\" },\n dygraphStrokeBorderColor: { key: \"dygraph-strokebordercolor\" },\n dygraphStrokeBorderWidth: { key: \"dygraph-strokeborderwidth\" },\n // it was not boolean in the old app, but that was most likely a bug\n dygraphFillGraph: { key: \"dygraph-fillgraph\", type: \"boolean\" },\n dygraphFillAlpha: { key: \"dygraph-fillalpha\" },\n // also originally not set as boolean\n dygraphStackedGraph: { key: \"dygraph-stackedgraph\", type: \"boolean\" },\n dygraphStackedGraphNanFill: { key: \"dygraph-stackedgraphnanfill\" },\n dygraphAxisLabelFontSize: { key: \"dygraph-axislabelfontsize\" },\n dygraphAxisLineColor: { key: \"dygraph-axislinecolor\" },\n dygraphAxisLineWidth: { key: \"dygraph-axislinewidth\" },\n dygraphDrawGrid: { key: \"dygraph-drawgrid\", type: \"boolean\" },\n dygraphGridLinePattern: { key: \"dygraph-gridlinepattern\" },\n dygraphGridLineWidth: { key: \"dygraph-gridlinewidth\" },\n dygraphGridLineColor: { key: \"dygraph-gridlinecolor\" },\n dygraphMaxNumberWidth: { key: \"dygraph-maxnumberwidth\" },\n dygraphSigFigs: { key: \"dygraph-sigfigs\" },\n dygraphDigitsAfterDecimal: { key: \"dygraph-digitsafterdecimal\" },\n // dygraphValueFormatter: { key: \"dygraph-valueformatter\" },\n dygraphHighlighCircleSize: { key: \"dygraph-highlightcirclesize\" },\n dygraphHighlightSeriesOpts: { key: \"dygraph-highlightseriesopts\" },\n dygraphHighlightSeriesBackgroundAlpha: { key: \"dygraph-highlightseriesbackgroundalpha\" },\n // dygraphPointClickCallback: { key: \"dygraph-pointclickcallback\" },\n dygraphXPixelsPerLabel: { key: \"dygraph-xpixelsperlabel\" },\n dygraphXAxisLabelWidth: { key: \"dygraph-xaxislabelwidth\" },\n dygraphDrawXAxis: { key: \"dygraph-drawxaxis\", type: \"boolean\" },\n dygraphYPixelsPerLabel: { key: \"dygraph-ypixelsperlabel\" },\n dygraphYAxisLabelWidth: { key: \"dygraph-yaxislabelwidth\" },\n dygraphDrawYAxis: { key: \"dygraph-drawyaxis\", type: \"boolean\" },\n dygraphDrawAxis: { key: \"dygraph-drawaxis\", type: \"boolean\" },\n\n easyPieChartMinValue: { key: \"easypiechart-min-value\" },\n easyPieChartMaxValue: { key: \"easypiechart-max-value\" },\n easyPieChartBarColor: { key: \"easypiechart-barcolor\" },\n easyPieChartTrackColor: { key: \"easypiechart-trackcolor\" },\n easyPieChartScaleColor: { key: \"easypiechart-scalecolor\" },\n easyPieChartScaleLength: { key: \"easypiechart-scalelength\" },\n easyPieChartLineCap: { key: \"easypiechart-linecap\" },\n easyPieChartLineWidth: { key: \"easypiechart-linewidth\" },\n easyPieChartTrackWidth: { key: \"easypiechart-trackwidth\" },\n easyPieChartSize: { key: \"easypiechart-size\" },\n easyPieChartRotate: { key: \"easypiechart-rotate\" },\n easyPieChartAnimate: { key: \"easypiechart-animate\" },\n easyPieChartEasing: { key: \"easypiechart-easing\" },\n\n gaugeMinValue: { key: \"gauge-min-value\" },\n gaugeMaxValue: { key: \"gauge-max-value\" },\n gaugePointerColor: { key: \"gauge-pointer-color\" },\n gaugeStrokeColor: { key: \"gauge-stroke-color\" },\n gaugeStartColor: { key: \"gauge-start-color\" },\n gaugeStopColor: { key: \"gauge-stop-color\" },\n gaugeGenerateGradient: { key: \"gauge-generate-gradient\" },\n\n sparklineType: { key: \"sparkline-type\" },\n sparklineLineColor: { key: \"sparkline-linecolor\" },\n sparklineFillColor: { key: \"sparkline-fillcolor\" },\n sparklineChartRangeMin: { key: \"sparkline-chartrangemin\" },\n sparklineChartRangeMax: { key: \"sparkline-chartrangemax\" },\n sparklineComposite: { key: \"sparkline-composite\" },\n sparklineEnableTagOptions: { key: \"sparkline-enabletagoptions\" },\n sparklineTagOptionPrefix: { key: \"sparkline-tagoptionprefix\" },\n sparklineTagValuesAttribute: { key: \"sparkline-tagvaluesattribute\" },\n sparklineDisableHiddenCheck: { key: \"sparkline-disablehiddencheck\" },\n sparklineDefaultPixelsPerValue: { key: \"sparkline-defaultpixelspervalue\" },\n sparklineSpotColor: { key: \"sparkline-spotcolor\" },\n sparklineMinSpotColor: { key: \"sparkline-minspotcolor\" },\n sparklineMaxSpotColor: { key: \"sparkline-maxspotcolor\" },\n sparklineSpotRadius: { key: \"sparkline-spotradius\" },\n sparklineValueSpots: { key: \"sparkline-valuespots\" },\n sparklineHighlightSpotColor: { key: \"sparkline-highlightspotcolor\" },\n sparklineHighlightLineColor: { key: \"sparkline-highlightlinecolor\" },\n sparklineLineWidth: { key: \"sparkline-linewidth\" },\n sparklineNormalRangeMin: { key: \"sparkline-normalrangemin\" },\n sparklineNormalRangeMax: { key: \"sparkline-normalrangemax\" },\n sparklineDrawNormalOnTop: { key: \"sparkline-drawnormalontop\" },\n sparklineXvalues: { key: \"sparkline-xvalues\" },\n sparklineChartRangeClip: { key: \"sparkline-chartrangeclip\" },\n sparklineChartRangeMinX: { key: \"sparkline-chartrangeminx\" },\n sparklineChartRangeMaxX: { key: \"sparkline-chartrangemaxx\" },\n sparklineDisableInteraction: { key: \"sparkline-disableinteraction\", type: \"boolean\" },\n sparklineDisableTooltips: { key: \"sparkline-disabletooltips\", type: \"boolean\" },\n sparklineOnHover: { key: \"sparkline-on-hover\" },\n sparklineDisableHighlight: { key: \"sparkline-disablehighlight\", type: \"boolean\" },\n sparklineHighlightLighten: { key: \"sparkline-highlightlighten\" },\n sparklineHighlightColor: { key: \"sparkline-highlightcolor\" },\n sparklineTooltipContainer: { key: \"sparkline-tooltipcontainer\" },\n sparklineTooltipClassname: { key: \"sparkline-tooltipclassname\" },\n sparklineTooltipFormat: { key: \"sparkline-tooltipformat\" },\n sparklineTooltipPrefix: { key: \"sparkline-tooltipprefix\" },\n sparklineTooltipSuffix: { key: \"sparkline-tooltipsuffix\" },\n sparklineTooltipSkipNull: { key: \"sparkline-tooltipskipnull\", type: \"boolean\" },\n sparklineTooltipValueLookups: { key: \"sparkline-tooltipvaluelookups\" },\n sparklineTooltipFormatFieldlist: { key: \"sparkline-tooltipformatfieldlist\" },\n sparklineTooltipFormatFieldlistKey: { key: \"sparkline-tooltipformatfieldlistkey\" },\n sparklineNumberFormatter: { key: \"sparkline-numberformatter\" },\n sparklineNumberDigitGroupSep: { key: \"sparkline-numberdigitgroupsep\" },\n sparklineNumberDecimalMark: { key: \"sparkline-numberdecimalmark\" },\n sparklineNumberDigitGroupCount: { key: \"sparkline-numberdigitgroupcount\" },\n sparklineAnimatedZooms: { key: \"sparkline-animatedzooms\", type: \"boolean\" },\n\n d3pieTitle: { key: \"d3pie-title\" },\n d3pieSubtitle: { key: \"d3pie-subtitle\" },\n d3pieFooter: { key: \"d3pie-footer\" },\n d3pieTitleColor: { key: \"d3pie-title-color\" },\n d3pieTitleFontsize: { key: \"d3pie-title-fontsize\" },\n d3pieTitleFontweight: { key: \"d3pie-title-fontweight\" },\n d3pieTitleFont: { key: \"d3pie-title-font\" },\n d3PieSubtitleColor: { key: \"d3pie-subtitle-color\" },\n d3PieSubtitleFontsize: { key: \"d3pie-subtitle-fontsize\" },\n d3PieSubtitleFontweight: { key: \"d3pie-subtitle-fontweight\" },\n d3PieSubtitleFont: { key: \"d3pie-subtitle-font\" },\n d3PieFooterColor: { key: \"d3pie-footer-color\" },\n d3PieFooterFontsize: { key: \"d3pie-footer-fontsize\" },\n d3PieFooterFontweight: { key: \"d3pie-footer-fontweight\" },\n d3PieFooterFont: { key: \"d3pie-footer-font\" },\n d3PieFooterLocation: { key: \"d3pie-footer-location\" },\n d3PiePieinnerradius: { key: \"d3pie-pieinnerradius\" },\n d3PiePieouterradius: { key: \"d3pie-pieouterradius\" },\n d3PieSortorder: { key: \"d3pie-sortorder\" },\n d3PieSmallsegmentgroupingEnabled: { key: \"d3pie-smallsegmentgrouping-enabled\", type: \"boolean\" },\n d3PieSmallsegmentgroupingValue: { key: \"d3pie-smallsegmentgrouping-value\" },\n d3PieSmallsegmentgroupingValuetype: { key: \"d3pie-smallsegmentgrouping-valuetype\" },\n d3PieSmallsegmentgroupingLabel: { key: \"d3pie-smallsegmentgrouping-label\" },\n d3PieSmallsegmentgroupingColor: { key: \"d3pie-smallsegmentgrouping-color\" },\n d3PieLabelsOuterFormat: { key: \"d3pie-labels-outer-format\" },\n d3PieLabelsOuterHidewhenlessthanpercentage: {\n key: \"d3pie-labels-outer-hidewhenlessthanpercentage\",\n },\n d3PieLabelsOuterPiedistance: { key: \"d3pie-labels-outer-piedistance\" },\n d3PieLabelsInnerFormat: { key: \"d3pie-labels-inner-format\" },\n d3PieLabelsInnerHidewhenlessthanpercentage: {\n key: \"d3pie-labels-inner-hidewhenlessthanpercentage\",\n },\n d3PieLabelsMainLabelColor: { key: \"d3pie-labels-mainLabel-color\" },\n d3PieLabelsMainLabelFont: { key: \"d3pie-labels-mainLabel-font\" },\n d3PieLabelsMainLabelFontsize: { key: \"d3pie-labels-mainLabel-fontsize\" },\n d3PieLabelsMainLabelFontweight: { key: \"d3pie-labels-mainLabel-fontweight\" },\n d3PieLabelsPercentageColor: { key: \"d3pie-labels-percentage-color\" },\n d3PieLabelsPercentageFont: { key: \"d3pie-labels-percentage-font\" },\n d3PieLabelsPercentageFontsize: { key: \"d3pie-labels-percentage-fontsize\" },\n d3PieLabelsPercentageFontweight: { key: \"d3pie-labels-percentage-fontweight\" },\n d3PieLabelsValueColor: { key: \"d3pie-labels-value-color\" },\n d3PieLabelsValueFont: { key: \"d3pie-labels-value-font\" },\n d3PieLabelsValueFontsize: { key: \"d3pie-labels-value-fontsize\" },\n d3PieLabelsValueFontweight: { key: \"d3pie-labels-value-fontweight\" },\n d3PieLabelsLinesEnabled: { key: \"d3pie-labels-lines-enabled\", type: \"boolean\" },\n d3PieLabelsLinesStyle: { key: \"d3pie-labels-lines-style\" },\n d3PieLabelsLinesColor: { key: \"d3pie-labels-lines-color\" },\n d3PieLabelsTruncationEnabled: { key: \"d3pie-labels-truncation-enabled\", type: \"boolean\" },\n d3PieLabelsTruncationTruncatelength: { key: \"d3pie-labels-truncation-truncatelength\" },\n d3PieMiscColorsSegmentstroke: { key: \"d3pie-misc-colors-segmentstroke\" },\n d3PieMiscGradientEnabled: { key: \"d3pie-misc-gradient-enabled\", type: \"boolean\" },\n d3PieMiscColorsPercentage: { key: \"d3pie-misc-colors-percentage\" },\n d3PieMiscGradientColor: { key: \"d3pie-misc-gradient-color\" },\n d3PieCssprefix: { key: \"d3pie-cssprefix\" },\n\n peityStrokeWidth: { key: \"peity-strokewidth\" },\n\n textOnlyDecimalPlaces: { key: \"textonly-decimal-places\" },\n textOnlyPrefix: { key: \"textonly-prefix\" },\n textOnlySuffix: { key: \"textonly-suffix\" },\n})\n\nexport const getAttributesStatic = (node: Element): Attributes => mapObjIndexed(\n (attribute: AttributeConfig) => (\n (attribute as BooleanAttributeConfig).type === \"boolean\"\n ? getDataAttributeBoolean(\n node,\n attribute.key,\n attribute.defaultValue as BooleanAttributeConfig[\"defaultValue\"],\n ) : getDataAttribute(node, attribute.key, attribute.defaultValue)\n ),\n getAttributesMap(),\n) as Attributes // need to override because of broken Ramda typings\n\nexport const getAttributesDynamic = (node: Element) => {\n const showValueOfAttribues = Array.from(node.attributes)\n .filter((attribute) => attribute.name.startsWith(\"data-show-value-of\"))\n .map((attribute) => ({\n [attribute.name.replace(\"data-\", \"\")]: attribute.value,\n }))\n const merged = mergeAll(showValueOfAttribues)\n return isEmpty(merged) ? undefined : merged\n}\n\nexport const getAttributes = (node: Element): Attributes => {\n const attributesStatic = getAttributesStatic(node)\n const showValueOf = getAttributesDynamic(node)\n return { ...attributesStatic, showValueOf }\n}\n\nexport const defaultAttributes: Partial<Attributes> = {\n legendPosition: initialLegendRight ? \"right\" : \"bottom\",\n}\n","/* eslint-disable */\n// Main JavaScript file for the Netdata GUI.\n\n// Codacy declarations\n/* global NETDATA */\n\nimport { identity, memoizeWith } from \"ramda\"\nimport {\n centerAroundHighlightAction,\n chartsMetadataRequestSuccess,\n clearHighlightAction,\n fetchAllAlarmsAction,\n loadSnapshotAction,\n resetGlobalPanAndZoomAction,\n resetOptionsAction,\n resetRegistry,\n setDefaultAfterAction,\n setGlobalChartUnderlayAction,\n setGlobalPanAndZoomAction,\n setOptionAction,\n} from './domains/global/actions';\nimport {\n createSelectOption,\n selectGlobalPanAndZoom,\n selectRegistry,\n} from './domains/global/selectors';\nimport { seconds4human } from './domains/chart/utils/seconds4human';\nimport { zeropad } from './utils/units-conversion';\nimport {\n explicitlySignInAction,\n startSnapshotModeAction,\n stopSnapshotModeAction,\n} from './domains/dashboard/actions';\nimport { snapshotExportResetAction } from './domains/chart/actions';\nimport {\n selectAmountOfCharts,\n selectAmountOfSnapshotsFailed,\n selectAmountOfSnapshotsFetched,\n} from './domains/chart/selectors';\nimport { serverDefault } from './utils/server-detection';\nimport { name2id } from './utils/name-2-id';\nimport { isProperTimezone } from './utils/date-time';\nimport { NETDATA_REGISTRY_SERVER } from './utils';\nimport { isDemo } from \"./utils/is-demo\"\nimport { LEGEND_BOTTOM_SINGLE_LINE_HEIGHT } from './domains/chart/utils/legend-utils';\nimport { defaultAttributes } from './domains/chart/utils/transformDataAttributes';\n\n// this is temporary, hook will be used after the full main.js refactor\nlet localeDateString, localeTimeString\nexport const updateLocaleFunctions = ({\n localeDateString: newLocaleDateString,\n localeTimeString: newLocaleTimeString,\n}) => {\n localeDateString = newLocaleDateString\n localeTimeString = newLocaleTimeString\n}\n\n// enable alarms checking and notifications\nvar netdataShowAlarms = true;\n\n// enable registry updates\nvar netdataRegistry = true;\n\n// forward definition only - not used here\nvar netdataServer = undefined;\nvar netdataServerStatic = undefined;\nvar netdataCheckXSS = undefined;\n\nlet reduxStore\n\nfunction escapeUserInputHTML(s) {\n return s.toString()\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/#/g, '&#35;')\n .replace(/'/g, '&#39;')\n .replace(/\\(/g, '&#40;')\n .replace(/\\)/g, '&#41;')\n .replace(/\\//g, '&#47;');\n}\n\nconst setOption = (key, value) => {\n reduxStore.dispatch(setOptionAction({\n key,\n value,\n }))\n}\n\n// temporary function that will be removed after full main.js migration to react\nconst getFromRegistry = (prop) => {\n const registry = selectRegistry(reduxStore.getState())\n return registry?.[prop]\n}\n\nfunction verifyURL(s) {\n if (typeof (s) === 'string' && (s.startsWith('http://') || s.startsWith('https://'))) {\n return s\n .replace(/'/g, '%22')\n .replace(/\"/g, '%27')\n .replace(/\\)/g, '%28')\n .replace(/\\(/g, '%29');\n }\n\n console.log('invalid URL detected:');\n console.log(s);\n return 'javascript:alert(\"invalid url\");';\n}\n\n// --------------------------------------------------------------------\n// urlOptions\n\nwindow.urlOptions = {\n hash: '#',\n theme: null,\n help: null,\n mode: 'live', // 'live', 'print'\n update_always: false,\n pan_and_zoom: false,\n server: null,\n after: 0,\n before: 0,\n highlight: false,\n highlight_after: 0,\n highlight_before: 0,\n nowelcome: false,\n show_alarms: false,\n chart: null,\n family: null,\n alarm: null,\n\n hasProperty: function (property) {\n // console.log('checking property ' + property + ' of type ' + typeof(this[property]));\n return typeof this[property] !== 'undefined';\n },\n\n genHash: function (forReload) {\n var hash = urlOptions.hash;\n\n hash += ';after=' + urlOptions.after.toString() +\n ';before=' + urlOptions.before.toString();\n\n if (urlOptions.highlight === true) {\n hash += ';highlight_after=' + urlOptions.highlight_after.toString() +\n ';highlight_before=' + urlOptions.highlight_before.toString();\n }\n\n if (urlOptions.theme !== null) {\n hash += ';theme=' + urlOptions.theme.toString();\n }\n\n if (urlOptions.help !== null) {\n hash += ';help=' + urlOptions.help.toString();\n }\n\n if (urlOptions.update_always === true) {\n hash += ';update_always=true';\n }\n\n if (forReload === true && urlOptions.server !== null) {\n hash += ';server=' + urlOptions.server.toString();\n }\n\n if (urlOptions.mode !== 'live') {\n hash += ';mode=' + urlOptions.mode;\n }\n\n return hash;\n },\n\n parseHash: function () {\n var variables = document.location.hash.split(';');\n var len = variables.length;\n while (len--) {\n if (len !== 0) {\n var p = variables[len].split('=');\n if (urlOptions.hasProperty(p[0]) && typeof p[1] !== 'undefined') {\n urlOptions[p[0]] = decodeURIComponent(p[1]);\n }\n } else {\n if (variables[len].length > 0) {\n urlOptions.hash = variables[len];\n }\n }\n }\n\n var booleans = ['nowelcome', 'show_alarms', 'update_always'];\n len = booleans.length;\n while (len--) {\n if (urlOptions[booleans[len]] === 'true' || urlOptions[booleans[len]] === true || urlOptions[booleans[len]] === '1' || urlOptions[booleans[len]] === 1) {\n urlOptions[booleans[len]] = true;\n } else {\n urlOptions[booleans[len]] = false;\n }\n }\n\n var numeric = ['after', 'before', 'highlight_after', 'highlight_before'];\n len = numeric.length;\n while (len--) {\n if (typeof urlOptions[numeric[len]] === 'string') {\n try {\n urlOptions[numeric[len]] = parseInt(urlOptions[numeric[len]]);\n }\n catch (e) {\n console.log('failed to parse URL hash parameter ' + numeric[len]);\n urlOptions[numeric[len]] = 0;\n }\n }\n }\n\n if (urlOptions.server !== null && urlOptions.server !== '') {\n netdataServerStatic = document.location.origin.toString() + document.location.pathname.toString();\n netdataServer = urlOptions.server;\n netdataCheckXSS = true;\n } else {\n urlOptions.server = null;\n }\n\n if (urlOptions.before > 0 && urlOptions.after > 0) {\n urlOptions.pan_and_zoom = true;\n urlOptions.nowelcome = true;\n } else {\n urlOptions.pan_and_zoom = false;\n }\n\n if (urlOptions.highlight_before > 0 && urlOptions.highlight_after > 0) {\n urlOptions.highlight = true;\n } else {\n urlOptions.highlight = false;\n }\n\n switch (urlOptions.mode) {\n case 'print':\n urlOptions.theme = 'white';\n urlOptions.welcome = false;\n urlOptions.help = false;\n urlOptions.show_alarms = false;\n\n if (urlOptions.pan_and_zoom === false) {\n urlOptions.pan_and_zoom = true;\n urlOptions.before = Date.now();\n urlOptions.after = urlOptions.before - 600000;\n }\n\n netdataShowAlarms = false;\n netdataRegistry = false;\n break;\n\n case 'live':\n default:\n urlOptions.mode = 'live';\n break;\n }\n\n // console.log(urlOptions);\n },\n\n hashUpdate: function () {\n history.replaceState(null, '', urlOptions.genHash(true));\n },\n\n netdataPanAndZoomCallback: function (status, after, before) {\n //console.log(1);\n //console.log(new Error().stack);\n\n if (netdataSnapshotData === null) {\n urlOptions.pan_and_zoom = status;\n urlOptions.after = after;\n urlOptions.before = before;\n urlOptions.hashUpdate();\n }\n },\n\n netdataHighlightCallback: function (status, after, before) {\n if (status === true && (after === null || before === null || after <= 0 || before <= 0 || after >= before)) {\n status = false;\n after = 0;\n before = 0;\n }\n\n if (window.netdataSnapshotData === null) {\n urlOptions.highlight = status;\n } else {\n urlOptions.highlight = false;\n }\n\n urlOptions.highlight_after = Math.round(after);\n urlOptions.highlight_before = Math.round(before);\n urlOptions.hashUpdate();\n\n if (status === true && after > 0 && before > 0 && after < before) {\n var d1 = localeDateString(after);\n var d2 = localeDateString(before);\n if (d1 === d2) {\n d2 = '';\n }\n document.getElementById('navbar-highlight-content').innerHTML =\n '<span class=\"navbar-highlight-bar highlight-tooltip\" onclick=\"urlOptions.showHighlight();\" title=\"restore the highlighted view\" data-toggle=\"tooltip\" data-placement=\"bottom\">'\n + 'highlighted time-frame'\n + ' <b>' + d1 + ' <code>' + localeTimeString(after) + '</code></b> to '\n + ' <b>' + d2 + ' <code>' + localeTimeString(before) + '</code></b>, '\n + 'duration <b>' + seconds4human(Math.round((before - after) / 1000)) + '</b>'\n + '</span>'\n + '<span class=\"navbar-highlight-button-right highlight-tooltip\" onclick=\"urlOptions.clearHighlight();\" title=\"clear the highlighted time-frame\" data-toggle=\"tooltip\" data-placement=\"bottom\"><i class=\"fas fa-times\"></i></span>';\n\n $('.navbar-highlight').show();\n $('.navbar-highlight').width(\"80%\");\n $('.highlight-tooltip').tooltip({\n html: true,\n delay: { show: 500, hide: 0 },\n container: 'body'\n });\n } else {\n $('.navbar-highlight').hide();\n $('.navbar-highlight').width(\"100%\");\n }\n },\n\n clearHighlight: function () {\n reduxStore.dispatch(clearHighlightAction())\n },\n\n showHighlight: function () {\n reduxStore.dispatch(centerAroundHighlightAction())\n }\n};\n\nurlOptions.parseHash();\n\n// --------------------------------------------------------------------\n// check options that should be processed before loading netdata.js\n\nvar localStorageTested = -1;\n\nfunction localStorageTest() {\n if (localStorageTested !== -1) {\n return localStorageTested;\n }\n\n if (typeof Storage !== \"undefined\" && typeof localStorage === 'object') {\n var test = 'test';\n try {\n localStorage.setItem(test, test);\n localStorage.removeItem(test);\n localStorageTested = true;\n }\n catch (e) {\n console.log(e);\n localStorageTested = false;\n }\n } else {\n localStorageTested = false;\n }\n\n return localStorageTested;\n}\n\nfunction loadLocalStorage(name) {\n var ret = null;\n\n try {\n if (localStorageTest() === true) {\n ret = localStorage.getItem(name);\n } else {\n console.log('localStorage is not available');\n }\n }\n catch (error) {\n console.log(error);\n return null;\n }\n\n if (typeof ret === 'undefined' || ret === null) {\n return null;\n }\n\n // console.log('loaded: ' + name.toString() + ' = ' + ret.toString());\n\n return ret;\n}\n\nfunction saveLocalStorage(name, value) {\n // console.log('saving: ' + name.toString() + ' = ' + value.toString());\n try {\n if (localStorageTest() === true) {\n localStorage.setItem(name, value.toString());\n return true;\n }\n }\n catch (error) {\n console.log(error);\n }\n\n return false;\n}\n\nfunction getTheme(def) {\n if (urlOptions.mode === 'print') {\n return 'white';\n }\n\n var ret = loadLocalStorage('netdataTheme');\n if (typeof ret === 'undefined' || ret === null || ret === 'undefined') {\n return def;\n } else {\n return ret;\n }\n}\n\nfunction setTheme(theme) {\n if (urlOptions.mode === 'print') {\n return false;\n }\n\n if (theme === netdataTheme) {\n return false;\n }\n return saveLocalStorage('netdataTheme', theme);\n}\n\nwindow.netdataTheme = getTheme('slate');\n// this is of course temporary, will be fixed during complete main.js rewrite\nNETDATA.updateTheme()\nvar netdataShowHelp = true;\n\nif (urlOptions.theme !== null) {\n setTheme(urlOptions.theme);\n netdataTheme = urlOptions.theme;\n window.NETDATA.updateTheme()\n} else {\n urlOptions.theme = netdataTheme;\n}\n\nif (urlOptions.help !== null) {\n saveLocalStorage('options.show_help', urlOptions.help);\n netdataShowHelp = urlOptions.help;\n} else {\n urlOptions.help = loadLocalStorage('options.show_help');\n}\n\n// --------------------------------------------------------------------\n// natural sorting\n// http://www.davekoelle.com/files/alphanum.js - LGPL\n\nfunction naturalSortChunkify(t) {\n var tz = [];\n var x = 0, y = -1, n = 0, i, j;\n\n while (i = (j = t.charAt(x++)).charCodeAt(0)) {\n var m = (i >= 48 && i <= 57);\n if (m !== n) {\n tz[++y] = \"\";\n n = m;\n }\n tz[y] += j;\n }\n\n return tz;\n}\n\nfunction naturalSortCompare(a, b) {\n var aa = naturalSortChunkify(a.toLowerCase());\n var bb = naturalSortChunkify(b.toLowerCase());\n\n for (var x = 0; aa[x] && bb[x]; x++) {\n if (aa[x] !== bb[x]) {\n var c = Number(aa[x]), d = Number(bb[x]);\n if (c.toString() === aa[x] && d.toString() === bb[x]) {\n return c - d;\n } else {\n return (aa[x] > bb[x]) ? 1 : -1;\n }\n }\n }\n\n return aa.length - bb.length;\n}\n\n// --------------------------------------------------------------------\n// saving files to client\n\nfunction saveTextToClient(data, filename) {\n var blob = new Blob([data], {\n type: 'application/octet-stream'\n });\n\n var url = URL.createObjectURL(blob);\n var link = document.createElement('a');\n link.setAttribute('href', url);\n link.setAttribute('download', filename);\n\n var el = document.getElementById('hiddenDownloadLinks');\n el.innerHTML = '';\n el.appendChild(link);\n\n setTimeout(function () {\n el.removeChild(link);\n URL.revokeObjectURL(url);\n }, 60);\n\n link.click();\n}\n\nfunction saveObjectToClient(data, filename) {\n saveTextToClient(JSON.stringify(data), filename);\n}\n\nfunction netdataURL(url, forReload) {\n if (typeof url === 'undefined')\n // url = document.location.toString();\n {\n url = '';\n }\n\n if (url.indexOf('#') !== -1) {\n url = url.substring(0, url.indexOf('#'));\n }\n\n var hash = urlOptions.genHash(forReload);\n\n // console.log('netdataURL: ' + url + hash);\n\n return url + hash;\n}\n\nfunction netdataReload(url) {\n document.location = verifyURL(netdataURL(url, true));\n\n // since we play with hash\n // this is needed to reload the page\n location.reload();\n}\n\nwindow.gotoHostedModalHandler = (url) => {\n document.location = verifyURL(url + urlOptions.genHash());\n return false;\n}\n\nvar gotoServerValidateRemaining = 0;\nvar gotoServerMiddleClick = false;\nvar gotoServerStop = false;\n\nfunction gotoServerValidateUrl(id, guid, url) {\n var penalty = 0;\n var error = 'failed';\n\n if (document.location.toString().startsWith('http://') && url.toString().startsWith('https://'))\n // we penalize https only if the current url is http\n // to allow the user walk through all its servers.\n {\n penalty = 500;\n } else if (document.location.toString().startsWith('https://') && url.toString().startsWith('http://')) {\n error = 'can\\'t check';\n }\n\n var finalURL = netdataURL(url);\n\n setTimeout(function () {\n document.getElementById('gotoServerList').innerHTML += '<tr><td style=\"padding-left: 20px;\"><a href=\"' + verifyURL(finalURL) + '\" target=\"_blank\">' + escapeUserInputHTML(url) + '</a></td><td style=\"padding-left: 30px;\"><code id=\"' + guid + '-' + id + '-status\">checking...</code></td></tr>';\n\n NETDATA.registryHello(url, function (data) {\n if (typeof data !== 'undefined' && data !== null && typeof data.machine_guid === 'string' && data.machine_guid === guid) {\n // console.log('OK ' + id + ' URL: ' + url);\n document.getElementById(guid + '-' + id + '-status').innerHTML = \"OK\";\n\n if (!gotoServerStop) {\n gotoServerStop = true;\n\n if (gotoServerMiddleClick) {\n window.open(verifyURL(finalURL), '_blank');\n gotoServerMiddleClick = false;\n const registryMachines = getFromRegistry(\"registryMachines\");\n document.getElementById('gotoServerResponse').innerHTML = '<b>Opening new window to ' + registryMachines[guid].name + '<br/><a href=\"' + verifyURL(finalURL) + '\">' + escapeUserInputHTML(url) + '</a></b><br/>(check your pop-up blocker if it fails)';\n } else {\n document.getElementById('gotoServerResponse').innerHTML += 'found it! It is at:<br/><small>' + escapeUserInputHTML(url) + '</small>';\n document.location = verifyURL(finalURL);\n $('#gotoServerModal').modal('hide');\n }\n }\n } else {\n if (typeof data !== 'undefined' && data !== null && typeof data.machine_guid === 'string' && data.machine_guid !== guid) {\n error = 'wrong machine';\n }\n\n document.getElementById(guid + '-' + id + '-status').innerHTML = error;\n gotoServerValidateRemaining--;\n if (gotoServerValidateRemaining <= 0) {\n gotoServerMiddleClick = false;\n document.getElementById('gotoServerResponse').innerHTML = '<b>Sorry! I cannot find any operational URL for this server</b>';\n }\n }\n });\n }, (id * 50) + penalty);\n}\n\nwindow.gotoServerModalHandler = function gotoServerModalHandler(guid) {\n // console.log('goto server: ' + guid);\n\n gotoServerStop = false;\n var checked = {};\n const registryMachines = getFromRegistry(\"registryMachines\");\n var len = registryMachines[guid].alternateUrls.length;\n var count = 0;\n\n document.getElementById('gotoServerResponse').innerHTML = '';\n document.getElementById('gotoServerList').innerHTML = '';\n document.getElementById('gotoServerName').innerHTML = registryMachines[guid].name;\n $('#gotoServerModal').modal('show');\n\n gotoServerValidateRemaining = len;\n while (len--) {\n var url = registryMachines[guid].alternateUrls[len];\n checked[url] = true;\n gotoServerValidateUrl(count++, guid, url);\n }\n\n // When the registry is enabled, if the user's known URLs are not working\n // we consult the registry to get additional URLs.\n setTimeout(function () {\n if (gotoServerStop === false) {\n document.getElementById('gotoServerResponse').innerHTML = '<b>Added all the known URLs for this machine.</b>';\n NETDATA.registrySearch(guid, getFromRegistry, function (data) {\n // console.log(data);\n len = data.urls.length;\n while (len--) {\n var url = data.urls[len][1];\n // console.log(url);\n if (typeof checked[url] === 'undefined') {\n gotoServerValidateRemaining++;\n checked[url] = true;\n gotoServerValidateUrl(count++, guid, url);\n }\n }\n });\n }\n }, 2000);\n\n return false;\n}\n\nwindow.switchRegistryModalHandler = () => {\n document.getElementById('switchRegistryPersonGUID').value = getFromRegistry(\"personGuid\");\n document.getElementById('switchRegistryURL').innerHTML = getFromRegistry(\"registryServer\");\n document.getElementById('switchRegistryResponse').innerHTML = '';\n $('#switchRegistryModal').modal('show');\n};\n\nwindow.notifyForSwitchRegistry = () => {\n // it's just old code, with minimal changes\n const newPersonGuid = document.getElementById('switchRegistryPersonGUID').value;\n\n if (newPersonGuid !== '' && newPersonGuid.length === 36) {\n\n $.ajax({\n url: getFromRegistry(\"registryServer\") + '/api/v1/registry?action=switch&machine='\n + getFromRegistry(\"machineGuid\") + '&name='\n + encodeURIComponent(getFromRegistry(\"hostname\")) + '&url='\n + encodeURIComponent(serverDefault) + '&to=' + newPersonGuid,\n async: true,\n cache: false,\n headers: {\n 'Cache-Control': 'no-cache, no-store',\n 'Pragma': 'no-cache'\n },\n xhrFields: {withCredentials: true} // required for the cookie\n })\n .done(function (data) {\n data = NETDATA.xss.checkAlways('/api/v1/registry?action=switch', data);\n\n if (typeof data.status !== 'string' || data.status !== 'ok') {\n // NETDATA.error(413, NETDATA.registry.server + ' responded with: ' + JSON.stringify(data));\n console.warn(\"Netdata registry server send invalid response to SWITCH\", data)\n data = null;\n }\n\n $('#switchRegistryModal').modal('hide');\n })\n .fail(function () {\n // NETDATA.error(414, NETDATA.registry.server);\n console.warn(\"Netdata registry SWITCH failed\")\n document.getElementById('switchRegistryResponse').innerHTML = \"<b>Sorry! The registry rejected your request.</b>\";\n });\n } else {\n document.getElementById('switchRegistryResponse').innerHTML = \"<b>The ID you have entered is not a GUID.</b>\";\n }\n};\n\nvar deleteRegistryGuid = null;\nvar deleteRegistryUrl = null;\n\nwindow.deleteRegistryModalHandler = (guid, name, url) => {\n deleteRegistryGuid = guid;\n deleteRegistryUrl = url;\n\n document.getElementById('deleteRegistryServerName').innerHTML = name;\n document.getElementById('deleteRegistryServerName2').innerHTML = name;\n document.getElementById('deleteRegistryServerURL').innerHTML = url;\n document.getElementById('deleteRegistryResponse').innerHTML = '';\n\n $('#deleteRegistryModal').modal('show');\n}\n\nwindow.notifyForDeleteRegistry = () => {\n const responseEl = document.getElementById('deleteRegistryResponse');\n\n if (deleteRegistryUrl) {\n NETDATA.registryDelete(getFromRegistry, serverDefault, deleteRegistryUrl, function (result) {\n if (result !== null) {\n deleteRegistryUrl = null;\n $('#deleteRegistryModal').modal('hide');\n reduxStore.dispatch(resetRegistry())\n } else {\n responseEl.innerHTML = \"<b>Sorry, this command was rejected by the registry server!</b>\";\n }\n });\n }\n}\n\nvar options = {\n menus: {},\n submenu_names: {},\n data: null,\n hostname: 'netdata_server', // will be overwritten by the netdata server\n version: 'unknown',\n release_channel: 'unknown',\n hosts: [],\n\n duration: 0, // the default duration of the charts\n update_every: 1,\n\n chartsPerRow: 0,\n // chartsMinWidth: 1450,\n chartsHeight: 180,\n};\n\nfunction chartsPerRow(total) {\n void (total);\n\n if (options.chartsPerRow === 0) {\n return 1;\n //var width = Math.floor(total / options.chartsMinWidth);\n //if(width === 0) width = 1;\n //return width;\n } else {\n return options.chartsPerRow;\n }\n}\n\nfunction prioritySort(a, b) {\n if (a.priority < b.priority) {\n return -1;\n }\n if (a.priority > b.priority) {\n return 1;\n }\n return naturalSortCompare(a.name, b.name);\n}\n\nfunction sortObjectByPriority(object) {\n var idx = {};\n var sorted = [];\n\n for (var i in object) {\n if (!object.hasOwnProperty(i)) {\n continue;\n }\n\n if (typeof idx[i] === 'undefined') {\n idx[i] = object[i];\n sorted.push(i);\n }\n }\n\n sorted.sort(function (a, b) {\n if (idx[a].priority < idx[b].priority) {\n return -1;\n }\n if (idx[a].priority > idx[b].priority) {\n return 1;\n }\n return naturalSortCompare(a, b);\n });\n\n return sorted;\n}\n\n// ----------------------------------------------------------------------------\n// scroll to a section, without changing the browser history\n\nwindow.scrollToId = (hash) => {\n if (hash && hash !== '' && document.getElementById(hash) !== null) {\n var offset = $('#' + hash).offset();\n if (typeof offset !== 'undefined') {\n //console.log('scrolling to ' + hash + ' at ' + offset.top.toString());\n $('html, body').animate({ scrollTop: offset.top - 30 }, 0);\n }\n }\n\n // we must return false to prevent the default action\n return false;\n}\n\n// ----------------------------------------------------------------------------\n\n// user editable information\nwindow.customDashboard = {\n menu: {},\n submenu: {},\n context: {}\n};\n\n// netdata standard information\nconst netdataDashboard = {\n sparklines_registry: {},\n os: 'unknown',\n\n menu: {},\n submenu: {},\n context: {},\n\n // generate a sparkline\n // used in the documentation\n sparkline: function (prefix, chart, dimension, units, suffix) {\n if (options.data === null || typeof options.data.charts === 'undefined') {\n return '';\n }\n\n if (typeof options.data.charts[chart] === 'undefined') {\n return '';\n }\n\n if (typeof options.data.charts[chart].dimensions === 'undefined') {\n return '';\n }\n\n if (typeof options.data.charts[chart].dimensions[dimension] === 'undefined') {\n return '';\n }\n\n var key = chart + '.' + dimension;\n\n if (typeof units === 'undefined') {\n units = '';\n }\n\n if (typeof this.sparklines_registry[key] === 'undefined') {\n this.sparklines_registry[key] = { count: 1 };\n } else {\n this.sparklines_registry[key].count++;\n }\n\n key = key + '.' + this.sparklines_registry[key].count;\n\n return prefix + '<div class=\"netdata-container\" data-netdata=\"' + chart + '\" data-width=\"25%\" data-height=\"15px\" data-chart-library=\"dygraph\" data-dygraph-theme=\"sparkline\" data-dimensions=\"' + dimension + '\" data-show-value-of-' + dimension + '-at=\"' + key + '\"></div> (<span id=\"' + key + '\" style=\"display: inline-block; min-width: 50px; text-align: right;\">X</span>' + units + ')' + suffix;\n },\n\n gaugeChart: function (title, width, dimensions, colors) {\n if (typeof colors === 'undefined') {\n colors = '';\n }\n\n if (typeof dimensions === 'undefined') {\n dimensions = '';\n }\n\n return '<div class=\"netdata-container\" data-netdata=\"CHART_UNIQUE_ID\"'\n + ' data-dimensions=\"' + dimensions + '\"'\n + ' data-chart-library=\"gauge\"'\n + ' data-gauge-adjust=\"width\"'\n + ' data-title=\"' + title + '\"'\n + ' data-width=\"' + width + '\"'\n + ' data-points=\"CHART_DURATION\"'\n + ' data-colors=\"' + colors + '\"'\n + ' role=\"application\"></div>';\n },\n\n anyAttribute: function (obj, attr, key, def) {\n if (typeof (obj[key]) !== 'undefined') {\n var x = obj[key][attr];\n\n if (typeof (x) === 'undefined') {\n return def;\n }\n\n if (typeof (x) === 'function') {\n return x(netdataDashboard.os);\n }\n\n return x;\n }\n\n return def;\n },\n\n menuTitle: function (chart) {\n if (typeof chart.menu_pattern !== 'undefined') {\n return (this.anyAttribute(this.menu, 'title', chart.menu_pattern, chart.menu_pattern).toString()\n + '&nbsp;' + chart.type.slice(-(chart.type.length - chart.menu_pattern.length - 1)).toString()).replace(/_/g, ' ');\n }\n\n return (this.anyAttribute(this.menu, 'title', chart.menu, chart.menu)).toString().replace(/_/g, ' ');\n },\n\n menuIcon: function (chart) {\n if (typeof chart.menu_pattern !== 'undefined') {\n return this.anyAttribute(this.menu, 'icon', chart.menu_pattern, '<i class=\"fas fa-puzzle-piece\"></i>').toString();\n }\n\n return this.anyAttribute(this.menu, 'icon', chart.menu, '<i class=\"fas fa-puzzle-piece\"></i>');\n },\n\n menuInfo: function (chart) {\n if (typeof chart.menu_pattern !== 'undefined') {\n return this.anyAttribute(this.menu, 'info', chart.menu_pattern, null);\n }\n\n return this.anyAttribute(this.menu, 'info', chart.menu, null);\n },\n\n menuHeight: function (chart) {\n if (typeof chart.menu_pattern !== 'undefined') {\n return this.anyAttribute(this.menu, 'height', chart.menu_pattern, 1.0);\n }\n\n return this.anyAttribute(this.menu, 'height', chart.menu, 1.0);\n },\n\n submenuTitle: function (menu, submenu) {\n var key = menu + '.' + submenu;\n // console.log(key);\n var title = this.anyAttribute(this.submenu, 'title', key, submenu).toString().replace(/_/g, ' ');\n if (title.length > 28) {\n var a = title.substring(0, 13);\n var b = title.substring(title.length - 12, title.length);\n return a + '...' + b;\n }\n return title;\n },\n\n submenuInfo: function (menu, submenu) {\n var key = menu + '.' + submenu;\n return this.anyAttribute(this.submenu, 'info', key, null);\n },\n\n submenuHeight: function (menu, submenu, relative) {\n var key = menu + '.' + submenu;\n return this.anyAttribute(this.submenu, 'height', key, 1.0) * relative;\n },\n\n contextInfo: function (id) {\n var x = this.anyAttribute(this.context, 'info', id, null);\n\n if (x !== null) {\n return '<div class=\"shorten dashboard-context-info netdata-chart-alignment\" role=\"document\">' + x + '</div>';\n } else {\n return '';\n }\n },\n\n contextValueRange: function (id) {\n if (typeof this.context[id] !== 'undefined' && typeof this.context[id].valueRange !== 'undefined') {\n return this.context[id].valueRange;\n } else {\n return '[null, null]';\n }\n },\n\n contextHeight: function (id, def) {\n if (typeof this.context[id] !== 'undefined' && typeof this.context[id].height !== 'undefined') {\n return def * this.context[id].height;\n } else {\n return def;\n }\n },\n\n contextDecimalDigits: function (id, def) {\n if (typeof this.context[id] !== 'undefined' && typeof this.context[id].decimalDigits !== 'undefined') {\n return this.context[id].decimalDigits;\n } else {\n return def;\n }\n }\n};\nwindow.netdataDashboard = netdataDashboard // share with dashboard_info.js :/\n\n// ----------------------------------------------------------------------------\n\n// enrich the data structure returned by netdata\n// to reflect our menu system and content\n// TODO: this is a shame - we should fix charts naming (issue #807)\nfunction enrichChartData(chart) {\n var parts = chart.type.split('_');\n var tmp = parts[0];\n\n switch (tmp) {\n case 'ap':\n case 'net':\n case 'disk':\n case 'powersupply':\n case 'statsd':\n chart.menu = tmp;\n break;\n\n case 'apache':\n chart.menu = chart.type;\n if (parts.length > 2 && parts[1] === 'cache') {\n chart.menu_pattern = tmp + '_' + parts[1];\n } else if (parts.length > 1) {\n chart.menu_pattern = tmp;\n }\n break;\n\n case 'bind':\n chart.menu = chart.type;\n if (parts.length > 2 && parts[1] === 'rndc') {\n chart.menu_pattern = tmp + '_' + parts[1];\n } else if (parts.length > 1) {\n chart.menu_pattern = tmp;\n }\n break;\n\n case 'cgroup':\n chart.menu = chart.type;\n if (chart.id.match(/.*[\\._\\/-:]qemu[\\._\\/-:]*/) || chart.id.match(/.*[\\._\\/-:]kvm[\\._\\/-:]*/)) {\n chart.menu_pattern = 'cgqemu';\n } else {\n chart.menu_pattern = 'cgroup';\n }\n break;\n\n case 'go':\n chart.menu = chart.type;\n if (parts.length > 2 && parts[1] === 'expvar') {\n chart.menu_pattern = tmp + '_' + parts[1];\n } else if (parts.length > 1) {\n chart.menu_pattern = tmp;\n }\n break;\n\n case 'mount':\n if (parts.length > 2) {\n chart.menu = tmp + '_' + parts[1];\n }\n else {\n chart.menu = tmp;\n }\n break;\n\n case 'isc':\n chart.menu = chart.type;\n if (parts.length > 2 && parts[1] === 'dhcpd') {\n chart.menu_pattern = tmp + '_' + parts[1];\n } else if (parts.length > 1) {\n chart.menu_pattern = tmp;\n }\n break;\n\n case 'ovpn':\n chart.menu = chart.type;\n if (parts.length > 3 && parts[1] === 'status' && parts[2] === 'log') {\n chart.menu_pattern = tmp + '_' + parts[1];\n } else if (parts.length > 1) {\n chart.menu_pattern = tmp;\n }\n break;\n\n case 'smartd':\n case 'web':\n chart.menu = chart.type;\n if (parts.length > 2 && parts[1] === 'log') {\n chart.menu_pattern = tmp + '_' + parts[1];\n } else if (parts.length > 1) {\n chart.menu_pattern = tmp;\n }\n break;\n\n case 'tc':\n chart.menu = tmp;\n\n // find a name for this device from fireqos info\n // we strip '_(in|out)' or '(in|out)_'\n if (chart.context === 'tc.qos' && (typeof options.submenu_names[chart.family] === 'undefined' || options.submenu_names[chart.family] === chart.family)) {\n var n = chart.name.split('.')[1];\n if (n.endsWith('_in')) {\n options.submenu_names[chart.family] = n.slice(0, n.lastIndexOf('_in'));\n } else if (n.endsWith('_out')) {\n options.submenu_names[chart.family] = n.slice(0, n.lastIndexOf('_out'));\n } else if (n.startsWith('in_')) {\n options.submenu_names[chart.family] = n.slice(3, n.length);\n } else if (n.startsWith('out_')) {\n options.submenu_names[chart.family] = n.slice(4, n.length);\n } else {\n options.submenu_names[chart.family] = n;\n }\n }\n\n // increase the priority of IFB devices\n // to have inbound appear before outbound\n if (chart.id.match(/.*-ifb$/)) {\n chart.priority--;\n }\n\n break;\n\n default:\n chart.menu = chart.type;\n if (parts.length > 1) {\n chart.menu_pattern = tmp;\n }\n break;\n }\n\n chart.submenu = chart.family;\n}\n\n// ----------------------------------------------------------------------------\n\nfunction headMain(os, charts, duration) {\n void (os);\n\n if (urlOptions.mode === 'print') {\n return '';\n }\n\n var head = '';\n\n if (typeof charts['system.swap'] !== 'undefined') {\n head += '<div class=\"netdata-container\" style=\"margin-right: 10px;\" data-netdata=\"system.swap\"'\n + ' data-dimensions=\"used\"'\n + ' data-append-options=\"percentage\"'\n + ' data-chart-library=\"easypiechart\"'\n + ' data-title=\"Used Swap\"'\n + ' data-units=\"%\"'\n + ' data-easypiechart-max-value=\"100\"'\n + ' data-width=\"9%\"'\n + ' data-points=\"' + duration.toString() + '\"'\n + ' data-colors=\"#DD4400\"'\n + ' role=\"application\"></div>';\n }\n\n if (typeof charts['system.io'] !== 'undefined') {\n head += '<div class=\"netdata-container\" style=\"margin-right: 10px;\" data-netdata=\"system.io\"'\n + ' data-dimensions=\"in\"'\n + ' data-chart-library=\"easypiechart\"'\n + ' data-title=\"Disk Read\"'\n + ' data-width=\"11%\"'\n + ' data-points=\"' + duration.toString() + '\"'\n + ' data-common-units=\"system.io.mainhead\"'\n + ' role=\"application\"></div>';\n\n head += '<div class=\"netdata-container\" style=\"margin-right: 10px;\" data-netdata=\"system.io\"'\n + ' data-dimensions=\"out\"'\n + ' data-chart-library=\"easypiechart\"'\n + ' data-title=\"Disk Write\"'\n + ' data-width=\"11%\"'\n + ' data-points=\"' + duration.toString() + '\"'\n + ' data-common-units=\"system.io.mainhead\"'\n + ' role=\"application\"></div>';\n }\n else if (typeof charts['system.pgpgio'] !== 'undefined') {\n head += '<div class=\"netdata-container\" style=\"margin-right: 10px;\" data-netdata=\"system.pgpgio\"'\n + ' data-dimensions=\"in\"'\n + ' data-chart-library=\"easypiechart\"'\n + ' data-title=\"Disk Read\"'\n + ' data-width=\"11%\"'\n + ' data-points=\"' + duration.toString() + '\"'\n + ' data-common-units=\"system.pgpgio.mainhead\"'\n + ' role=\"application\"></div>';\n\n head += '<div class=\"netdata-container\" style=\"margin-right: 10px;\" data-netdata=\"system.pgpgio\"'\n + ' data-dimensions=\"out\"'\n + ' data-chart-library=\"easypiechart\"'\n + ' data-title=\"Disk Write\"'\n + ' data-width=\"11%\"'\n + ' data-points=\"' + duration.toString() + '\"'\n + ' data-common-units=\"system.pgpgio.mainhead\"'\n + ' role=\"application\"></div>';\n }\n\n if (typeof charts['system.cpu'] !== 'undefined') {\n head += '<div class=\"netdata-container\" style=\"margin-right: 10px;\" data-netdata=\"system.cpu\"'\n + ' data-chart-library=\"gauge\"'\n + ' data-title=\"CPU\"'\n + ' data-units=\"%\"'\n + ' data-gauge-max-value=\"100\"'\n + ' data-width=\"20%\"'\n + ' data-points=\"' + duration.toString() + '\"'\n + ' data-colors=\"' + NETDATA.colors[12] + '\"'\n + ' role=\"application\"></div>';\n }\n\n if (typeof charts['system.net'] !== 'undefined') {\n head += '<div class=\"netdata-container\" style=\"margin-right: 10px;\" data-netdata=\"system.net\"'\n + ' data-dimensions=\"received\"'\n + ' data-chart-library=\"easypiechart\"'\n + ' data-title=\"Net Inbound\"'\n + ' data-width=\"11%\"'\n + ' data-points=\"' + duration.toString() + '\"'\n + ' data-common-units=\"system.net.mainhead\"'\n + ' role=\"application\"></div>';\n\n head += '<div class=\"netdata-container\" style=\"margin-right: 10px;\" data-netdata=\"system.net\"'\n + ' data-dimensions=\"sent\"'\n + ' data-chart-library=\"easypiechart\"'\n + ' data-title=\"Net Outbound\"'\n + ' data-width=\"11%\"'\n + ' data-points=\"' + duration.toString() + '\"'\n + ' data-common-units=\"system.net.mainhead\"'\n + ' role=\"application\"></div>';\n }\n else if (typeof charts['system.ip'] !== 'undefined') {\n head += '<div class=\"netdata-container\" style=\"margin-right: 10px;\" data-netdata=\"system.ip\"'\n + ' data-dimensions=\"received\"'\n + ' data-chart-library=\"easypiechart\"'\n + ' data-title=\"IP Inbound\"'\n + ' data-width=\"11%\"'\n + ' data-points=\"' + duration.toString() + '\"'\n + ' data-common-units=\"system.ip.mainhead\"'\n + ' role=\"application\"></div>';\n\n head += '<div class=\"netdata-container\" style=\"margin-right: 10px;\" data-netdata=\"system.ip\"'\n + ' data-dimensions=\"sent\"'\n + ' data-chart-library=\"easypiechart\"'\n + ' data-title=\"IP Outbound\"'\n + ' data-width=\"11%\"'\n + ' data-points=\"' + duration.toString() + '\"'\n + ' data-common-units=\"system.ip.mainhead\"'\n + ' role=\"application\"></div>';\n }\n else if (typeof charts['system.ipv4'] !== 'undefined') {\n head += '<div class=\"netdata-container\" style=\"margin-right: 10px;\" data-netdata=\"system.ipv4\"'\n + ' data-dimensions=\"received\"'\n + ' data-chart-library=\"easypiechart\"'\n + ' data-title=\"IPv4 Inbound\"'\n + ' data-width=\"11%\"'\n + ' data-points=\"' + duration.toString() + '\"'\n + ' data-common-units=\"system.ipv4.mainhead\"'\n + ' role=\"application\"></div>';\n\n head += '<div class=\"netdata-container\" style=\"margin-right: 10px;\" data-netdata=\"system.ipv4\"'\n + ' data-dimensions=\"sent\"'\n + ' data-chart-library=\"easypiechart\"'\n + ' data-title=\"IPv4 Outbound\"'\n + ' data-width=\"11%\"'\n + ' data-points=\"' + duration.toString() + '\"'\n + ' data-common-units=\"system.ipv4.mainhead\"'\n + ' role=\"application\"></div>';\n }\n else if (typeof charts['system.ipv6'] !== 'undefined') {\n head += '<div class=\"netdata-container\" style=\"margin-right: 10px;\" data-netdata=\"system.ipv6\"'\n + ' data-dimensions=\"received\"'\n + ' data-chart-library=\"easypiechart\"'\n + ' data-title=\"IPv6 Inbound\"'\n + ' data-units=\"kbps\"'\n + ' data-width=\"11%\"'\n + ' data-points=\"' + duration.toString() + '\"'\n + ' data-common-units=\"system.ipv6.mainhead\"'\n + ' role=\"application\"></div>';\n\n head += '<div class=\"netdata-container\" style=\"margin-right: 10px;\" data-netdata=\"system.ipv6\"'\n + ' data-dimensions=\"sent\"'\n + ' data-chart-library=\"easypiechart\"'\n + ' data-title=\"IPv6 Outbound\"'\n + ' data-units=\"kbps\"'\n + ' data-width=\"11%\"'\n + ' data-points=\"' + duration.toString() + '\"'\n + ' data-common-units=\"system.ipv6.mainhead\"'\n + ' role=\"application\"></div>';\n }\n\n if (typeof charts['system.ram'] !== 'undefined') {\n head += '<div class=\"netdata-container\" style=\"margin-right: 10px;\" data-netdata=\"system.ram\"'\n + ' data-dimensions=\"used|buffers|active|wired\"' // active and wired are FreeBSD stats\n + ' data-append-options=\"percentage\"'\n + ' data-chart-library=\"easypiechart\"'\n + ' data-title=\"Used RAM\"'\n + ' data-units=\"%\"'\n + ' data-easypiechart-max-value=\"100\"'\n + ' data-width=\"9%\"'\n + ' data-points=\"' + duration.toString() + '\"'\n + ' data-colors=\"' + NETDATA.colors[7] + '\"'\n + ' role=\"application\"></div>';\n }\n\n return head;\n}\n\nfunction generateHeadCharts(type, chart, duration) {\n if (urlOptions.mode === 'print') {\n return '';\n }\n\n var head = '';\n var hcharts = netdataDashboard.anyAttribute(netdataDashboard.context, type, chart.context, []);\n if (hcharts.length > 0) {\n var hi = 0, hlen = hcharts.length;\n while (hi < hlen) {\n if (typeof hcharts[hi] === 'function') {\n head += hcharts[hi](netdataDashboard.os, chart.id).replace(/CHART_DURATION/g, duration.toString()).replace(/CHART_UNIQUE_ID/g, chart.id);\n } else {\n head += hcharts[hi].replace(/CHART_DURATION/g, duration.toString()).replace(/CHART_UNIQUE_ID/g, chart.id);\n }\n hi++;\n }\n }\n return head;\n}\n\nfunction renderPage(menus, data) {\n var div = document.getElementById('charts_div');\n var pcent_width = Math.floor(100 / chartsPerRow($(div).width()));\n\n // find the proper duration for per-second updates\n var duration = Math.round(($(div).width() * pcent_width / 100 * data.update_every / 3) / 60) * 60;\n options.duration = duration;\n options.update_every = data.update_every;\n\n var html = '';\n var sidebar = '<ul class=\"nav dashboard-sidenav\" data-spy=\"affix\" id=\"sidebar_ul\">';\n var mainhead = headMain(netdataDashboard.os, data.charts, duration);\n\n // sort the menus\n var main = sortObjectByPriority(menus);\n var i = 0, len = main.length;\n\n // todo hook to options\n const hasChartsOnBottom = defaultAttributes.legendPosition === \"bottom\"\n const chartAdditionalHeight = hasChartsOnBottom ? LEGEND_BOTTOM_SINGLE_LINE_HEIGHT : 0\n while (i < len) {\n var menu = main[i++];\n\n // generate an entry at the main menu\n\n var menuid = NETDATA.name2id('menu_' + menu);\n sidebar += '<li class=\"\"><a href=\"#' + menuid + '\" onClick=\"return scrollToId(\\'' + menuid + '\\');\">' + menus[menu].icon + ' ' + menus[menu].title + '</a><ul class=\"nav\">';\n html += '<div role=\"section\" class=\"dashboard-section\"><div role=\"sectionhead\"><h1 id=\"' + menuid + '\" role=\"heading\">' + menus[menu].icon + ' ' + menus[menu].title + '</h1></div><div role=\"section\" class=\"dashboard-subsection\">';\n\n if (menus[menu].info !== null) {\n html += menus[menu].info;\n }\n\n // console.log(' >> ' + menu + ' (' + menus[menu].priority + '): ' + menus[menu].title);\n\n var shtml = '';\n var mhead = '<div class=\"netdata-chart-row\">' + mainhead;\n mainhead = '';\n\n // sort the submenus of this menu\n var sub = sortObjectByPriority(menus[menu].submenus);\n var si = 0, slen = sub.length;\n while (si < slen) {\n var submenu = sub[si++];\n\n // generate an entry at the submenu\n var submenuid = NETDATA.name2id('menu_' + menu + '_submenu_' + submenu);\n sidebar += '<li class><a href=\"#' + submenuid + '\" onClick=\"return scrollToId(\\'' + submenuid + '\\');\">' + menus[menu].submenus[submenu].title + '</a></li>';\n shtml += '<div role=\"section\" class=\"dashboard-section-container\" id=\"' + submenuid + '\"><h2 id=\"' + submenuid + '\" class=\"netdata-chart-alignment\" role=\"heading\">' + menus[menu].submenus[submenu].title + '</h2>';\n\n if (menus[menu].submenus[submenu].info !== null) {\n shtml += '<div class=\"dashboard-submenu-info netdata-chart-alignment\" role=\"document\">' + menus[menu].submenus[submenu].info + '</div>';\n }\n\n var head = '<div class=\"netdata-chart-row\">';\n var chtml = '';\n\n // console.log(' \\------- ' + submenu + ' (' + menus[menu].submenus[submenu].priority + '): ' + menus[menu].submenus[submenu].title);\n\n // sort the charts in this submenu of this menu\n menus[menu].submenus[submenu].charts.sort(prioritySort);\n var ci = 0, clen = menus[menu].submenus[submenu].charts.length;\n while (ci < clen) {\n var chart = menus[menu].submenus[submenu].charts[ci++];\n\n // generate the submenu heading charts\n mhead += generateHeadCharts('mainheads', chart, duration);\n head += generateHeadCharts('heads', chart, duration);\n\n function chartCommonMin(family, context, units) {\n var x = netdataDashboard.anyAttribute(netdataDashboard.context, 'commonMin', context, undefined);\n if (typeof x !== 'undefined') {\n return ' data-common-min=\"' + family + '/' + context + '/' + units + '\"';\n } else {\n return '';\n }\n }\n\n function chartCommonMax(family, context, units) {\n var x = netdataDashboard.anyAttribute(netdataDashboard.context, 'commonMax', context, undefined);\n if (typeof x !== 'undefined') {\n return ' data-common-max=\"' + family + '/' + context + '/' + units + '\"';\n } else {\n return '';\n }\n }\n\n // generate the chart\n if (urlOptions.mode === 'print') {\n chtml += '<div role=\"row\" class=\"dashboard-print-row\">';\n }\n\n const chartHeight = netdataDashboard.contextHeight(chart.context, options.chartsHeight)\n + chartAdditionalHeight;\n\n chtml += '<div class=\"netdata-chartblock-container\" style=\"width: ' + pcent_width.toString() + '%;\">' + netdataDashboard.contextInfo(chart.context) + '<div class=\"netdata-container\" id=\"chart_' + NETDATA.name2id(chart.id) + '\" data-netdata=\"' + chart.id + '\"'\n + ' data-width=\"100%\"'\n + ' data-height=\"' + chartHeight.toString() + 'px\"'\n + ' data-dygraph-valuerange=\"' + netdataDashboard.contextValueRange(chart.context) + '\"'\n + ' data-id=\"' + NETDATA.name2id(options.hostname + '/' + chart.id) + '\"'\n + ' data-colors=\"' + netdataDashboard.anyAttribute(netdataDashboard.context, 'colors', chart.context, '') + '\"'\n + ' data-decimal-digits=\"' + netdataDashboard.contextDecimalDigits(chart.context, -1) + '\"'\n + (hasChartsOnBottom ? ' data-legend-position=\"bottom\"' : '')\n + chartCommonMin(chart.family, chart.context, chart.units)\n + chartCommonMax(chart.family, chart.context, chart.units)\n + ' role=\"application\"></div></div>';\n\n if (urlOptions.mode === 'print') {\n chtml += '</div>';\n }\n }\n\n head += '</div>';\n shtml += head + chtml + '</div>';\n }\n\n mhead += '</div>';\n sidebar += '</ul></li>';\n html += mhead + shtml + '</div></div><hr role=\"separator\"/>';\n }\n\n const isMemoryModeDbEngine = data.memory_mode === \"dbengine\";\n\n sidebar += '<li class=\"\" style=\"padding-top:15px;\"><a href=\"https://learn.netdata.cloud/docs/agent/collectors/quickstart/\" target=\"_blank\"><i class=\"fas fa-plus\"></i> Add more charts</a></li>';\n sidebar += '<li class=\"\"><a href=\"https://learn.netdata.cloud/docs/agent/health/quickstart/\" target=\"_blank\"><i class=\"fas fa-plus\"></i> Add more alarms</a></li>';\n sidebar += '<li class=\"\" style=\"margin:20px;color:#666;\"><small>Every ' +\n ((data.update_every === 1) ? 'second' : data.update_every.toString() + ' seconds') + ', ' +\n 'Netdata collects <strong>' + data.dimensions_count.toLocaleString() + '</strong> metrics on ' +\n data.hostname.toString() + ', presents them in <strong>' +\n data.charts_count.toLocaleString() + '</strong> charts' +\n (isMemoryModeDbEngine ? '' : ',') + // oxford comma\n ' and monitors them with <strong>' +\n data.alarms_count.toLocaleString() + '</strong> alarms.';\n\n if (!isMemoryModeDbEngine) {\n sidebar += '<br />&nbsp;<br />Get more history by ' +\n '<a href=\"https://learn.netdata.cloud/guides/longer-metrics-storage#using-the-round-robin-database\" target=_blank>configuring Netdata\\'s <strong>history</strong></a> or switching to the <a href=\"https://learn.netdata.cloud/docs/agent/database/engine\" target=_blank>database engine.</a>';\n }\n\n sidebar += '<br/>&nbsp;<br/><strong>netdata</strong><br/>' + data.version.toString() + '</small>';\n\n sidebar += '</li>'\n\n sidebar += '<li id=\"sidebar-end-portal-container\"></li>'\n\n\n sidebar += '</ul>';\n div.innerHTML = html;\n document.getElementById('sidebar').innerHTML = sidebar;\n\n if (urlOptions.highlight === true) {\n reduxStore.dispatch(setGlobalChartUnderlayAction({\n after: urlOptions.highlight_after,\n before: urlOptions.highlight_before,\n }))\n }\n\n if (urlOptions.mode === 'print') {\n printPage();\n } else {\n finalizePage();\n }\n}\n\nfunction renderChartsAndMenu(data) {\n options.menus = {};\n options.submenu_names = {};\n\n var menus = options.menus;\n var charts = data.charts;\n var m, menu_key;\n\n for (var c in charts) {\n if (!charts.hasOwnProperty(c)) {\n continue;\n }\n\n var chart = charts[c];\n enrichChartData(chart);\n m = chart.menu;\n\n // create the menu\n if (typeof menus[m] === 'undefined') {\n menus[m] = {\n menu_pattern: chart.menu_pattern,\n priority: chart.priority,\n submenus: {},\n title: netdataDashboard.menuTitle(chart),\n icon: netdataDashboard.menuIcon(chart),\n info: netdataDashboard.menuInfo(chart),\n height: netdataDashboard.menuHeight(chart) * options.chartsHeight\n };\n } else {\n if (typeof (menus[m].menu_pattern) === 'undefined') {\n menus[m].menu_pattern = chart.menu_pattern;\n }\n\n if (chart.priority < menus[m].priority) {\n menus[m].priority = chart.priority;\n }\n }\n\n menu_key = (typeof (menus[m].menu_pattern) !== 'undefined') ? menus[m].menu_pattern : m;\n\n // create the submenu\n if (typeof menus[m].submenus[chart.submenu] === 'undefined') {\n menus[m].submenus[chart.submenu] = {\n priority: chart.priority,\n charts: [],\n title: null,\n info: netdataDashboard.submenuInfo(menu_key, chart.submenu),\n height: netdataDashboard.submenuHeight(menu_key, chart.submenu, menus[m].height)\n };\n } else {\n if (chart.priority < menus[m].submenus[chart.submenu].priority) {\n menus[m].submenus[chart.submenu].priority = chart.priority;\n }\n }\n\n // index the chart in the menu/submenu\n menus[m].submenus[chart.submenu].charts.push(chart);\n }\n\n // propagate the descriptive subname given to QoS\n // to all the other submenus with the same name\n for (var m in menus) {\n if (!menus.hasOwnProperty(m)) {\n continue;\n }\n\n for (var s in menus[m].submenus) {\n if (!menus[m].submenus.hasOwnProperty(s)) {\n continue;\n }\n\n // set the family using a name\n if (typeof options.submenu_names[s] !== 'undefined') {\n menus[m].submenus[s].title = s + ' (' + options.submenu_names[s] + ')';\n } else {\n menu_key = (typeof (menus[m].menu_pattern) !== 'undefined') ? menus[m].menu_pattern : m;\n menus[m].submenus[s].title = netdataDashboard.submenuTitle(menu_key, s);\n }\n }\n }\n\n renderPage(menus, data);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const handleLoadJs = (promise, library, callback) => promise\n .catch((e) => {\n console.warn('error', e);\n alert(`Cannot load required JS library: ${library}`)\n })\n .then(() => {\n callback()\n })\n\n\nfunction loadClipboard(callback) {\n handleLoadJs(\n import(\"clipboard-polyfill\").then((clipboard) => {\n window.clipboard = clipboard\n }),\n \"clipboard-polyfill\",\n callback,\n )\n}\n\nfunction loadBootstrapTable(callback) {\n handleLoadJs(\n Promise.all([\n import(\"bootstrap-table\").then(() => (\n import('bootstrap-table/dist/extensions/export/bootstrap-table-export.min')\n )),\n import(\"tableexport.jquery.plugin\")\n ]),\n \"bootstrap-table\",\n callback,\n )\n}\n\nfunction loadBootstrapSlider(callback) {\n handleLoadJs(\n Promise.all([\n import(\"bootstrap-slider\").then(({ default: slider }) => {\n window.Slider = slider\n }),\n import(\"bootstrap-slider/dist/css/bootstrap-slider.min.css\"),\n ]),\n \"bootstrap-slider\",\n callback,\n )\n}\n\nfunction loadLzString(callback) {\n handleLoadJs(import(\"lz-string\"), \"lz-string\", callback)\n}\n\nfunction loadPako(callback) {\n handleLoadJs(\n import(\"pako\").then(({ default: pako }) => {\n window.pako = pako\n }),\n \"pako\",\n callback,\n )\n}\n\n// ----------------------------------------------------------------------------\n\nwindow.clipboardCopy = text => {\n clipboard.writeText(text);\n};\n\nwindow.clipboardCopyBadgeEmbed = url => {\n clipboard.writeText('<embed src=\"' + url + '\" type=\"image/svg+xml\" height=\"20\"/>');\n};\n\n// ----------------------------------------------------------------------------\n\nfunction alarmsUpdateModal() {\n var active = '<h3>Raised Alarms</h3><table class=\"table\">';\n var all = '<h3>All Running Alarms</h3><div class=\"panel-group\" id=\"alarms_all_accordion\" role=\"tablist\" aria-multiselectable=\"true\">';\n var footer = '<hr/><a href=\"https://github.com/netdata/netdata/tree/master/web/api/badges#netdata-badges\" target=\"_blank\">netdata badges</a> refresh automatically. Their color indicates the state of the alarm: <span style=\"color: #e05d44\"><b>&nbsp;red&nbsp;</b></span> is critical, <span style=\"color:#fe7d37\"><b>&nbsp;orange&nbsp;</b></span> is warning, <span style=\"color: #4c1\"><b>&nbsp;bright green&nbsp;</b></span> is ok, <span style=\"color: #9f9f9f\"><b>&nbsp;light grey&nbsp;</b></span> is undefined (i.e. no data or no status), <span style=\"color: #000\"><b>&nbsp;black&nbsp;</b></span> is not initialized. You can copy and paste their URLs to embed them in any web page.<br/>netdata can send notifications for these alarms. Check <a href=\"https://github.com/netdata/netdata/blob/master/health/notifications/health_alarm_notify.conf\" target=\"_blank\">this configuration file</a> for more information.';\n\n loadClipboard(function () {\n });\n\n\n const callback = (data) => {\n options.alarm_families = [];\n\n if (data === null) {\n document.getElementById('alarms_active').innerHTML =\n document.getElementById('alarms_all').innerHTML =\n document.getElementById('alarms_log').innerHTML =\n 'failed to load alarm data!';\n return;\n }\n\n function alarmid4human(id) {\n if (id === 0) {\n return '-';\n }\n\n return id.toString();\n }\n\n function timestamp4human(timestamp, space) {\n if (timestamp === 0) {\n return '-';\n }\n\n if (typeof space === 'undefined') {\n space = '&nbsp;';\n }\n\n var t = new Date(timestamp * 1000);\n\n // commented out to always have date+time, to have consistent exports\n // var now = new Date();\n\n // if (t.toDateString() === now.toDateString()) {\n // return t.toLocaleTimeString();\n // }\n\n return t.toLocaleDateString() + space + t.toLocaleTimeString();\n }\n\n function alarm_lookup_explain(alarm, chart) {\n var dimensions = ' of all values ';\n\n if (chart.dimensions.length > 1) {\n dimensions = ' of the sum of all dimensions ';\n }\n\n if (typeof alarm.lookup_dimensions !== 'undefined') {\n var d = alarm.lookup_dimensions.replace(/|/g, ',');\n var x = d.split(',');\n if (x.length > 1) {\n dimensions = 'of the sum of dimensions <code>' + alarm.lookup_dimensions + '</code> ';\n } else {\n dimensions = 'of all values of dimension <code>' + alarm.lookup_dimensions + '</code> ';\n }\n }\n\n return '<code>' + alarm.lookup_method + '</code> '\n + dimensions + ', of chart <code>' + alarm.chart + '</code>'\n + ', starting <code>' + seconds4human(alarm.lookup_after + alarm.lookup_before, { space: '&nbsp;' }) + '</code> and up to <code>' + seconds4human(alarm.lookup_before, { space: '&nbsp;' }) + '</code>'\n + ((alarm.lookup_options) ? (', with options <code>' + alarm.lookup_options.replace(/ /g, ',&nbsp;') + '</code>') : '')\n + '.';\n }\n\n function alarm_to_html(alarm, full) {\n var chart = options.data.charts[alarm.chart];\n if (typeof (chart) === 'undefined') {\n chart = options.data.charts_by_name[alarm.chart];\n if (typeof (chart) === 'undefined') {\n // this means the charts loaded are incomplete\n // probably netdata was restarted and more alarms\n // are now available.\n console.log('Cannot find chart ' + alarm.chart + ', you probably need to refresh the page.');\n return '';\n }\n }\n\n var has_alarm = (typeof alarm.warn !== 'undefined' || typeof alarm.crit !== 'undefined');\n var badge_url = `${serverDefault}/api/v1/badge.svg?chart=${alarm.chart}&alarm=${alarm.name}&refresh=auto`;\n\n var action_buttons = '<br/>&nbsp;<br/>role: <b>' + alarm.recipient + '</b><br/>&nbsp;<br/>'\n + '<div class=\"action-button ripple\" title=\"click to scroll the dashboard to the chart of this alarm\" data-toggle=\"tooltip\" data-placement=\"bottom\" onClick=\"scrollToChartAfterHidingModal(\\'' + alarm.chart + '\\', ' + alarm.last_status_change * 1000 + ', \\'' + alarm.status + '\\'); $(\\'#alarmsModal\\').modal(\\'hide\\'); return false;\"><i class=\"fab fa-periscope\"></i></div>'\n + '<div class=\"action-button ripple\" title=\"click to copy to the clipboard the URL of this badge\" data-toggle=\"tooltip\" data-placement=\"bottom\" onClick=\"clipboardCopy(\\'' + badge_url + '\\'); return false;\"><i class=\"far fa-copy\"></i></div>'\n + '<div class=\"action-button ripple\" title=\"click to copy to the clipboard an auto-refreshing <code>embed</code> html element for this badge\" data-toggle=\"tooltip\" data-placement=\"bottom\" onClick=\"clipboardCopyBadgeEmbed(\\'' + badge_url + '\\'); return false;\"><i class=\"fas fa-copy\"></i></div>';\n\n var html = '<tr><td class=\"text-center\" style=\"vertical-align: middle; word-break: break-word;\" width=\"40%\"><b>' + alarm.chart + '</b><br/>&nbsp;<br/><embed src=\"' + badge_url + '\" type=\"image/svg+xml\" height=\"20\"/><br/>&nbsp;<br/><span style=\"font-size: 18px;\">' + alarm.info + '</span>' + action_buttons + '</td>'\n + '<td><table class=\"table\">'\n + ((typeof alarm.warn !== 'undefined') ? ('<tr><td width=\"10%\" style=\"text-align:right\">warning&nbsp;when</td><td><span style=\"font-family: monospace; color:#fe7d37; font-weight: bold;\">' + alarm.warn + '</span></td></tr>') : '')\n + ((typeof alarm.crit !== 'undefined') ? ('<tr><td width=\"10%\" style=\"text-align:right\">critical&nbsp;when</td><td><span style=\"font-family: monospace; color: #e05d44; font-weight: bold;\">' + alarm.crit + '</span></td></tr>') : '');\n\n if (full === true) {\n var units = chart.units;\n if (units === '%') {\n units = '&#37;';\n }\n\n html += ((typeof alarm.lookup_after !== 'undefined') ? ('<tr><td width=\"10%\" style=\"text-align:right\">db&nbsp;lookup</td><td>' + alarm_lookup_explain(alarm, chart) + '</td></tr>') : '')\n + ((typeof alarm.calc !== 'undefined') ? ('<tr><td width=\"10%\" style=\"text-align:right\">calculation</td><td><span style=\"font-family: monospace;\">' + alarm.calc + '</span></td></tr>') : '')\n + ((chart.green !== null) ? ('<tr><td width=\"10%\" style=\"text-align:right\">green&nbsp;threshold</td><td><code>' + chart.green + ' ' + units + '</code></td></tr>') : '')\n + ((chart.red !== null) ? ('<tr><td width=\"10%\" style=\"text-align:right\">red&nbsp;threshold</td><td><code>' + chart.red + ' ' + units + '</code></td></tr>') : '');\n }\n\n if (alarm.warn_repeat_every > 0) {\n html += '<tr><td width=\"10%\" style=\"text-align:right\">repeat&nbsp;warning</td><td>' + seconds4human(alarm.warn_repeat_every) + '</td></tr>';\n }\n\n if (alarm.crit_repeat_every > 0) {\n html += '<tr><td width=\"10%\" style=\"text-align:right\">repeat&nbsp;critical</td><td>' + seconds4human(alarm.crit_repeat_every) + '</td></tr>';\n }\n\n var delay = '';\n if ((alarm.delay_up_duration > 0 || alarm.delay_down_duration > 0) && alarm.delay_multiplier !== 0 && alarm.delay_max_duration > 0) {\n if (alarm.delay_up_duration === alarm.delay_down_duration) {\n delay += '<small><br/>hysteresis ' + seconds4human(alarm.delay_up_duration, {\n space: '&nbsp;',\n negative_suffix: ''\n });\n } else {\n delay = '<small><br/>hysteresis ';\n if (alarm.delay_up_duration > 0) {\n delay += 'on&nbsp;escalation&nbsp;<code>' + seconds4human(alarm.delay_up_duration, {\n space: '&nbsp;',\n negative_suffix: ''\n }) + '</code>, ';\n }\n if (alarm.delay_down_duration > 0) {\n delay += 'on&nbsp;recovery&nbsp;<code>' + seconds4human(alarm.delay_down_duration, {\n space: '&nbsp;',\n negative_suffix: ''\n }) + '</code>, ';\n }\n }\n if (alarm.delay_multiplier !== 1.0) {\n delay += 'multiplied&nbsp;by&nbsp;<code>' + alarm.delay_multiplier.toString() + '</code>';\n delay += ',&nbsp;up&nbsp;to&nbsp;<code>' + seconds4human(alarm.delay_max_duration, {\n space: '&nbsp;',\n negative_suffix: ''\n }) + '</code>';\n }\n delay += '</small>';\n }\n\n html += '<tr><td width=\"10%\" style=\"text-align:right\">check&nbsp;every</td><td>' + seconds4human(alarm.update_every, {\n space: '&nbsp;',\n negative_suffix: ''\n }) + '</td></tr>'\n + ((has_alarm === true) ? ('<tr><td width=\"10%\" style=\"text-align:right\">execute</td><td><span style=\"font-family: monospace;\">' + alarm.exec + '</span>' + delay + '</td></tr>') : '')\n + '<tr><td width=\"10%\" style=\"text-align:right\">source</td><td><span style=\"font-family: monospace; word-break: break-word;\">' + alarm.source + '</span></td></tr>'\n + '</table></td></tr>';\n\n return html;\n }\n\n function alarm_family_show(id) {\n var html = '<table class=\"table\">';\n var family = options.alarm_families[id];\n var len = family.arr.length;\n while (len--) {\n var alarm = family.arr[len];\n html += alarm_to_html(alarm, true);\n }\n html += '</table>';\n\n $('#alarm_all_' + id.toString()).html(html);\n enableTooltipsAndPopovers();\n }\n\n // find the proper family of each alarm\n var x, family, alarm;\n var count_active = 0;\n var count_all = 0;\n var families = {};\n var families_sort = [];\n for (x in data.alarms) {\n if (!data.alarms.hasOwnProperty(x)) {\n continue;\n }\n\n alarm = data.alarms[x];\n family = alarm.family;\n\n // find the chart\n var chart = options.data.charts[alarm.chart];\n if (typeof chart === 'undefined') {\n chart = options.data.charts_by_name[alarm.chart];\n }\n\n // not found - this should never happen!\n if (typeof chart === 'undefined') {\n console.log('WARNING: alarm ' + x + ' is linked to chart ' + alarm.chart + ', which is not found in the list of chart got from the server.');\n chart = { priority: 9999999 };\n }\n else if (typeof chart.menu !== 'undefined' && typeof chart.submenu !== 'undefined')\n // the family based on the chart\n {\n family = chart.menu + ' - ' + chart.submenu;\n }\n\n if (typeof families[family] === 'undefined') {\n families[family] = {\n name: family,\n arr: [],\n priority: chart.priority\n };\n\n families_sort.push(families[family]);\n }\n\n if (chart.priority < families[family].priority) {\n families[family].priority = chart.priority;\n }\n\n families[family].arr.unshift(alarm);\n }\n\n // sort the families, like the dashboard menu does\n var families_sorted = families_sort.sort(function (a, b) {\n if (a.priority < b.priority) {\n return -1;\n }\n if (a.priority > b.priority) {\n return 1;\n }\n return naturalSortCompare(a.name, b.name);\n });\n\n var i = 0;\n var fc = 0;\n var len = families_sorted.length;\n while (len--) {\n family = families_sorted[i++].name;\n var active_family_added = false;\n\n var expanded = 'false';\n var collapsed = 'class=\"collapsed\"';\n var cin = '';\n\n // uncomment if first family needs to be expanded by default\n // var expanded = 'true';\n // var collapsed = '';\n // var cin = 'in';\n\n if (fc !== 0) {\n all += \"</table></div></div></div>\";\n\n // uncomment if first family needs to be expanded by default\n // expanded = 'false';\n // collapsed = 'class=\"collapsed\"';\n // cin = '';\n }\n\n all += '<div class=\"panel panel-default\"><div class=\"panel-heading\" role=\"tab\" id=\"alarm_all_heading_' + fc.toString() + '\"><h4 class=\"panel-title\"><a ' + collapsed + ' role=\"button\" data-toggle=\"collapse\" data-parent=\"#alarms_all_accordion\" href=\"#alarm_all_' + fc.toString() + '\" aria-expanded=\"' + expanded + '\" aria-controls=\"alarm_all_' + fc.toString() + '\">' + family.toString() + '</a></h4></div><div id=\"alarm_all_' + fc.toString() + '\" class=\"panel-collapse collapse ' + cin + '\" role=\"tabpanel\" aria-labelledby=\"alarm_all_heading_' + fc.toString() + '\" data-alarm-id=\"' + fc.toString() + '\"><div class=\"panel-body\" id=\"alarm_all_body_' + fc.toString() + '\">';\n\n options.alarm_families[fc] = families[family];\n\n fc++;\n\n var arr = families[family].arr;\n var c = arr.length;\n while (c--) {\n alarm = arr[c];\n if (alarm.status === 'WARNING' || alarm.status === 'CRITICAL') {\n if (!active_family_added) {\n active_family_added = true;\n active += '<tr><th class=\"text-center\" colspan=\"2\"><h4>' + family + '</h4></th></tr>';\n }\n count_active++;\n active += alarm_to_html(alarm, true);\n }\n\n count_all++;\n }\n }\n active += \"</table>\";\n if (families_sorted.length > 0) {\n all += \"</div></div></div>\";\n }\n all += \"</div>\";\n\n if (!count_active) {\n active += '<div style=\"width:100%; height: 100px; text-align: center;\"><span style=\"font-size: 50px;\"><i class=\"fas fa-thumbs-up\"></i></span><br/>Everything is normal. No raised alarms.</div>';\n } else {\n active += footer;\n }\n\n if (!count_all) {\n all += \"<h4>No alarms are running in this system.</h4>\";\n } else {\n all += footer;\n }\n\n document.getElementById('alarms_active').innerHTML = active;\n document.getElementById('alarms_all').innerHTML = all;\n enableTooltipsAndPopovers();\n\n if (families_sorted.length > 0) {\n alarm_family_show(0);\n }\n\n // register bootstrap events\n var $accordion = $('#alarms_all_accordion');\n $accordion.on('show.bs.collapse', function (d) {\n var target = $(d.target);\n var id = $(target).data('alarm-id');\n alarm_family_show(id);\n });\n $accordion.on('hidden.bs.collapse', function (d) {\n var target = $(d.target);\n var id = $(target).data('alarm-id');\n $('#alarm_all_' + id.toString()).html('');\n });\n\n document.getElementById('alarms_log').innerHTML = '<h3>Alarm Log</h3><table id=\"alarms_log_table\"></table>';\n\n loadBootstrapTable(function () {\n $('#alarms_log_table').bootstrapTable({\n url: `${serverDefault}/api/v1/alarm_log?all`,\n cache: false,\n pagination: true,\n pageSize: 10,\n showPaginationSwitch: false,\n search: true,\n searchTimeOut: 300,\n searchAlign: 'left',\n showColumns: true,\n showExport: true,\n exportDataType: 'all',\n exportOptions: {\n fileName: 'netdata_alarm_log'\n },\n onClickRow: function (row) {\n scrollToChartAfterHidingModal(row.chart, row.when * 1000, row.status);\n $('#alarmsModal').modal('hide');\n return false;\n },\n rowStyle: function (row) {\n switch (row.status) {\n case 'CRITICAL':\n return { classes: 'danger' };\n break;\n case 'WARNING':\n return { classes: 'warning' };\n break;\n case 'UNDEFINED':\n return { classes: 'info' };\n break;\n case 'CLEAR':\n return { classes: 'success' };\n break;\n }\n return {};\n },\n showFooter: false,\n showHeader: true,\n showRefresh: true,\n showToggle: false,\n sortable: true,\n silentSort: false,\n columns: [\n {\n field: 'when',\n title: 'Event Date',\n valign: 'middle',\n titleTooltip: 'The date and time the even took place',\n formatter: function (value, row, index) {\n void (row);\n void (index);\n return timestamp4human(value, ' ');\n },\n align: 'center',\n switchable: false,\n sortable: true\n },\n {\n field: 'hostname',\n title: 'Host',\n valign: 'middle',\n titleTooltip: 'The host that generated this event',\n align: 'center',\n visible: false,\n sortable: true\n },\n {\n field: 'unique_id',\n title: 'Unique ID',\n titleTooltip: 'The host unique ID for this event',\n formatter: function (value, row, index) {\n void (row);\n void (index);\n return alarmid4human(value);\n },\n align: 'center',\n valign: 'middle',\n visible: false,\n sortable: true\n },\n {\n field: 'alarm_id',\n title: 'Alarm ID',\n titleTooltip: 'The ID of the alarm that generated this event',\n formatter: function (value, row, index) {\n void (row);\n void (index);\n return alarmid4human(value);\n },\n align: 'center',\n valign: 'middle',\n visible: false,\n sortable: true\n },\n {\n field: 'alarm_event_id',\n title: 'Alarm Event ID',\n titleTooltip: 'The incremental ID of this event for the given alarm',\n formatter: function (value, row, index) {\n void (row);\n void (index);\n return alarmid4human(value);\n },\n align: 'center',\n valign: 'middle',\n visible: false,\n sortable: true\n },\n {\n field: 'chart',\n title: 'Chart',\n titleTooltip: 'The chart the alarm is attached to',\n align: 'center',\n valign: 'middle',\n switchable: false,\n sortable: true\n },\n {\n field: 'family',\n title: 'Family',\n titleTooltip: 'The family of the chart the alarm is attached to',\n align: 'center',\n valign: 'middle',\n visible: false,\n sortable: true\n },\n {\n field: 'name',\n title: 'Alarm',\n titleTooltip: 'The alarm name that generated this event',\n formatter: function (value, row, index) {\n void (row);\n void (index);\n return value.toString().replace(/_/g, ' ');\n },\n align: 'center',\n valign: 'middle',\n switchable: false,\n sortable: true\n },\n {\n field: 'value_string',\n title: 'Friendly Value',\n titleTooltip: 'The value of the alarm, that triggered this event',\n align: 'right',\n valign: 'middle',\n sortable: true\n },\n {\n field: 'old_value_string',\n title: 'Friendly Old Value',\n titleTooltip: 'The value of the alarm, just before this event',\n align: 'right',\n valign: 'middle',\n visible: false,\n sortable: true\n },\n {\n field: 'old_value',\n title: 'Old Value',\n titleTooltip: 'The value of the alarm, just before this event',\n formatter: function (value, row, index) {\n void (row);\n void (index);\n return ((value !== null) ? Math.round(value * 100) / 100 : 'NaN').toString();\n },\n align: 'center',\n valign: 'middle',\n visible: false,\n sortable: true\n },\n {\n field: 'value',\n title: 'Value',\n titleTooltip: 'The value of the alarm, that triggered this event',\n formatter: function (value, row, index) {\n void (row);\n void (index);\n return ((value !== null) ? Math.round(value * 100) / 100 : 'NaN').toString();\n },\n align: 'right',\n valign: 'middle',\n visible: false,\n sortable: true\n },\n {\n field: 'units',\n title: 'Units',\n titleTooltip: 'The units of the value of the alarm',\n align: 'left',\n valign: 'middle',\n visible: false,\n sortable: true\n },\n {\n field: 'old_status',\n title: 'Old Status',\n titleTooltip: 'The status of the alarm, just before this event',\n align: 'center',\n valign: 'middle',\n visible: false,\n sortable: true\n },\n {\n field: 'status',\n title: 'Status',\n titleTooltip: 'The status of the alarm, that was set due to this event',\n align: 'center',\n valign: 'middle',\n switchable: false,\n sortable: true\n },\n {\n field: 'duration',\n title: 'Last Duration',\n titleTooltip: 'The duration the alarm was at its previous state, just before this event',\n formatter: function (value, row, index) {\n void (row);\n void (index);\n return seconds4human(value, { negative_suffix: '', space: ' ', now: 'no time' });\n },\n align: 'center',\n valign: 'middle',\n visible: false,\n sortable: true\n },\n {\n field: 'non_clear_duration',\n title: 'Raised Duration',\n titleTooltip: 'The duration the alarm was raised, just before this event',\n formatter: function (value, row, index) {\n void (row);\n void (index);\n return seconds4human(value, { negative_suffix: '', space: ' ', now: 'no time' });\n },\n align: 'center',\n valign: 'middle',\n visible: false,\n sortable: true\n },\n {\n field: 'recipient',\n title: 'Recipient',\n titleTooltip: 'The recipient of this event',\n align: 'center',\n valign: 'middle',\n visible: false,\n sortable: true\n },\n {\n field: 'processed',\n title: 'Processed Status',\n titleTooltip: 'True when this event is processed',\n formatter: function (value, row, index) {\n void (row);\n void (index);\n\n if (value === true) {\n return 'DONE';\n } else {\n return 'PENDING';\n }\n },\n align: 'center',\n valign: 'middle',\n visible: false,\n sortable: true\n },\n {\n field: 'updated',\n title: 'Updated Status',\n titleTooltip: 'True when this event has been updated by another event',\n formatter: function (value, row, index) {\n void (row);\n void (index);\n\n if (value === true) {\n return 'UPDATED';\n } else {\n return 'CURRENT';\n }\n },\n align: 'center',\n valign: 'middle',\n visible: false,\n sortable: true\n },\n {\n field: 'updated_by_id',\n title: 'Updated By ID',\n titleTooltip: 'The unique ID of the event that obsoleted this one',\n formatter: function (value, row, index) {\n void (row);\n void (index);\n return alarmid4human(value);\n },\n align: 'center',\n valign: 'middle',\n visible: false,\n sortable: true\n },\n {\n field: 'updates_id',\n title: 'Updates ID',\n titleTooltip: 'The unique ID of the event obsoleted because of this event',\n formatter: function (value, row, index) {\n void (row);\n void (index);\n return alarmid4human(value);\n },\n align: 'center',\n valign: 'middle',\n visible: false,\n sortable: true\n },\n {\n field: 'exec',\n title: 'Script',\n titleTooltip: 'The script to handle the event notification',\n align: 'center',\n valign: 'middle',\n visible: false,\n sortable: true\n },\n {\n field: 'exec_run',\n title: 'Script Run At',\n titleTooltip: 'The date and time the script has been ran',\n formatter: function (value, row, index) {\n void (row);\n void (index);\n return timestamp4human(value, ' ');\n },\n align: 'center',\n valign: 'middle',\n visible: false,\n sortable: true\n },\n {\n field: 'exec_code',\n title: 'Script Return Value',\n titleTooltip: 'The return code of the script',\n formatter: function (value, row, index) {\n void (row);\n void (index);\n\n if (value === 0) {\n return 'OK (returned 0)';\n } else {\n return 'FAILED (with code ' + value.toString() + ')';\n }\n },\n align: 'center',\n valign: 'middle',\n visible: false,\n sortable: true\n },\n {\n field: 'delay',\n title: 'Script Delay',\n titleTooltip: 'The hysteresis of the notification',\n formatter: function (value, row, index) {\n void (row);\n void (index);\n\n return seconds4human(value, { negative_suffix: '', space: ' ', now: 'no time' });\n },\n align: 'center',\n valign: 'middle',\n visible: false,\n sortable: true\n },\n {\n field: 'delay_up_to_timestamp',\n title: 'Script Delay Run At',\n titleTooltip: 'The date and time the script should be run, after hysteresis',\n formatter: function (value, row, index) {\n void (row);\n void (index);\n return timestamp4human(value, ' ');\n },\n align: 'center',\n valign: 'middle',\n visible: false,\n sortable: true\n },\n {\n field: 'info',\n title: 'Description',\n titleTooltip: 'A short description of the alarm',\n align: 'center',\n valign: 'middle',\n visible: false,\n sortable: true\n },\n {\n field: 'source',\n title: 'Alarm Source',\n titleTooltip: 'The source of configuration of the alarm',\n align: 'center',\n valign: 'middle',\n visible: false,\n sortable: true\n }\n ]\n });\n // console.log($('#alarms_log_table').bootstrapTable('getOptions'));\n });\n }\n\n reduxStore.dispatch(fetchAllAlarmsAction.request({\n callback,\n serverDefault,\n }))\n}\n\nfunction initializeDynamicDashboardWithData(data) {\n if (data !== null) {\n options.hostname = data.hostname;\n options.data = data;\n options.version = data.version;\n options.release_channel = data.release_channel;\n options.timezone = data.timezone;\n netdataDashboard.os = data.os;\n\n if (typeof data.hosts !== 'undefined') {\n options.hosts = data.hosts;\n }\n\n // update the dashboard hostname\n document.getElementById('netdataVersion').innerHTML = options.version;\n\n // update the dashboard title\n document.title = options.hostname + ' netdata dashboard';\n\n // create a chart_by_name index\n data.charts_by_name = {};\n var charts = data.charts;\n var x;\n for (x in charts) {\n if (!charts.hasOwnProperty(x)) {\n continue;\n }\n\n var chart = charts[x];\n data.charts_by_name[chart.name] = chart;\n }\n\n // render all charts\n renderChartsAndMenu(data);\n }\n}\n\n// an object to keep initilization configuration\n// needed due to the async nature of the XSS modal\nvar initializeConfig = {\n url: null,\n custom_info: true,\n};\n\n// will be removed when we'll transform dashboard_info.js into DSL\n// memoize so it's fetched only once\nconst loadDashboardInfo = memoizeWith(identity, () => (\n $.ajax({\n url: `${serverDefault}dashboard_info.js`,\n cache: true,\n dataType: 'script',\n xhrFields: { withCredentials: true }, // required for the cookie\n })\n .fail(function () {\n alert(`Cannot load required JS library: dashboard_info.js`);\n })\n))\n\nfunction loadCustomDashboardInfo(url, callback) {\n $.ajax({\n url,\n cache: true,\n dataType: \"script\",\n xhrFields: { withCredentials: true } // required for the cookie\n })\n .fail(function () {\n alert(`Cannot load required JS library: ${url}`);\n })\n .always(function () {\n $.extend(true, netdataDashboard, customDashboard);\n callback();\n })\n}\n\nfunction initializeChartsAndCustomInfo() {\n loadDashboardInfo().then(() => {\n // download all the charts the server knows\n NETDATA.chartRegistry.downloadAll(initializeConfig.url, function (data) {\n if (data !== null) {\n reduxStore.dispatch(chartsMetadataRequestSuccess({ data }))\n if (initializeConfig.custom_info === true && typeof data.custom_info !== 'undefined' && data.custom_info !== \"\" && window.netdataSnapshotData === null) {\n //console.log('loading custom dashboard decorations from server ' + initializeConfig.url);\n loadCustomDashboardInfo(serverDefault + data.custom_info, function () {\n initializeDynamicDashboardWithData(data);\n });\n } else {\n //console.log('not loading custom dashboard decorations from server ' + initializeConfig.url);\n initializeDynamicDashboardWithData(data);\n }\n }\n });\n })\n}\n\nwindow.xssModalDisableXss = () => {\n //console.log('disabling xss checks');\n NETDATA.xss.enabled = false;\n NETDATA.xss.enabled_for_data = false;\n initializeConfig.custom_info = true;\n initializeChartsAndCustomInfo();\n return false;\n};\n\n\nwindow.xssModalKeepXss = () => {\n //console.log('keeping xss checks');\n NETDATA.xss.enabled = true;\n NETDATA.xss.enabled_for_data = true;\n initializeConfig.custom_info = false;\n initializeChartsAndCustomInfo();\n return false;\n};\n\nfunction initializeDynamicDashboard(newReduxStore) {\n if (newReduxStore) {\n reduxStore = newReduxStore\n\n netdataPrepCallback()\n\n initializeConfig.url = serverDefault;\n }\n\n if (typeof netdataCheckXSS !== 'undefined' && netdataCheckXSS === true) {\n //$(\"#loadOverlay\").css(\"display\",\"none\");\n document.getElementById('netdataXssModalServer').innerText = initializeConfig.url;\n $('#xssModal').modal('show');\n } else {\n initializeChartsAndCustomInfo();\n }\n}\n\n// ----------------------------------------------------------------------------\n\nfunction versionLog(msg) {\n document.getElementById('versionCheckLog').innerHTML = msg;\n}\n\n// New way of checking for updates, based only on versions\n\nfunction versionsMatch(v1, v2) {\n if (v1 == v2) {\n return true;\n } else {\n let s1 = v1.split('.');\n let s2 = v2.split('.');\n // Check major version\n let n1 = parseInt(s1[0].substring(1, 2), 10);\n let n2 = parseInt(s2[0].substring(1, 2), 10);\n if (n1 < n2) return false;\n else if (n1 > n2) return true;\n\n // Check minor version\n n1 = parseInt(s1[1], 10);\n n2 = parseInt(s2[1], 10);\n if (n1 < n2) return false;\n else if (n1 > n2) return true;\n\n // Split patch: format could be e.g. 0-22-nightly\n s1 = s1[2].split('-');\n s2 = s2[2].split('-');\n\n n1 = parseInt(s1[0], 10);\n n2 = parseInt(s2[0], 10);\n if (n1 < n2) return false;\n else if (n1 > n2) return true;\n\n n1 = (s1.length > 1) ? parseInt(s1[1], 10) : 0;\n n2 = (s2.length > 1) ? parseInt(s2[1], 10) : 0;\n if (n1 < n2) return false;\n else return true;\n }\n}\n\nfunction getGithubLatestVersion(callback) {\n versionLog('Downloading latest version id from github...');\n\n $.ajax({\n url: 'https://api.github.com/repos/netdata/netdata/releases/latest',\n async: true,\n cache: false\n })\n .done(function (data) {\n data = data.tag_name.replace(/(\\r\\n|\\n|\\r| |\\t)/gm, \"\");\n versionLog('Latest stable version from github is ' + data);\n callback(data);\n })\n .fail(function () {\n versionLog('Failed to download the latest stable version id from github!');\n callback(null);\n });\n}\n\nfunction getGCSLatestVersion(callback) {\n versionLog('Downloading latest version id from GCS...');\n $.ajax({\n url: \"https://www.googleapis.com/storage/v1/b/netdata-nightlies/o/latest-version.txt\",\n async: true,\n cache: false\n })\n .done(function (response) {\n $.ajax({\n url: response.mediaLink,\n async: true,\n cache: false\n })\n .done(function (data) {\n data = data.replace(/(\\r\\n|\\n|\\r| |\\t)/gm, \"\");\n versionLog('Latest nightly version from GCS is ' + data);\n callback(data);\n })\n .fail(function (xhr, textStatus, errorThrown) {\n versionLog('Failed to download the latest nightly version id from GCS!');\n callback(null);\n });\n })\n .fail(function (xhr, textStatus, errorThrown) {\n versionLog('Failed to download the latest nightly version from GCS!');\n callback(null);\n });\n}\n\n\nfunction checkForUpdateByVersion(force, callback) {\n if (options.release_channel === 'stable') {\n getGithubLatestVersion(function (sha2) {\n callback(options.version, sha2);\n });\n } else {\n getGCSLatestVersion(function (sha2) {\n callback(options.version, sha2);\n });\n }\n return null;\n}\n\nwindow.notifyForUpdate = (force) => {\n versionLog('<p>checking for updates...</p>');\n\n var now = Date.now();\n\n if (typeof force === 'undefined' || force !== true) {\n var last = loadLocalStorage('last_update_check');\n\n if (typeof last === 'string') {\n last = parseInt(last);\n } else {\n last = 0;\n }\n\n if (now - last < 3600000 * 8) {\n // no need to check it - too soon\n return;\n }\n }\n\n checkForUpdateByVersion(force, function (sha1, sha2) {\n var save = false;\n\n if (sha1 === null) {\n save = false;\n versionLog('<p><big>Failed to get your netdata version!</big></p><p>You can always get the latest netdata from <a href=\"https://github.com/netdata/netdata\" target=\"_blank\">its github page</a>.</p>');\n } else if (sha2 === null) {\n save = false;\n versionLog('<p><big>Failed to get the latest netdata version.</big></p><p>You can always get the latest netdata from <a href=\"https://github.com/netdata/netdata\" target=\"_blank\">its github page</a>.</p>');\n } else if (versionsMatch(sha1, sha2)) {\n save = true;\n versionLog('<p><big>You already have the latest netdata!</big></p><p>No update yet?<br/>We probably need some motivation to keep going on!</p><p>If you haven\\'t already, <a href=\"https://github.com/netdata/netdata\" target=\"_blank\">give netdata a <b><i class=\"fas fa-star\"></i></b> at its github page</a>.</p>');\n } else {\n save = true;\n var compare = 'https://learn.netdata.cloud/docs/agent/changelog/';\n versionLog('<p><big><strong>New version of netdata available!</strong></big></p><p>Latest version: <b><code>' + sha2 + '</code></b></p><p><a href=\"' + compare + '\" target=\"_blank\">Click here for the changes log</a> and<br/><a href=\"https://github.com/netdata/netdata/tree/master/packaging/installer/UPDATE.md\" target=\"_blank\">click here for directions on updating</a> your netdata installation.</p><p>We suggest to review the changes log for new features you may be interested, or important bug fixes you may need.<br/>Keeping your netdata updated is generally a good idea.</p>');\n }\n\n if (save) {\n saveLocalStorage('last_update_check', now.toString());\n }\n });\n}\n\n// ----------------------------------------------------------------------------\n// printing dashboards\n\nfunction showPageFooter() {\n document.getElementById('footer').style.display = 'block';\n}\n\nwindow.printPreflight = () => {\n var url = document.location.origin.toString() + document.location.pathname.toString() + document.location.search.toString() + urlOptions.genHash() + ';mode=print';\n var width = 990;\n var height = screen.height * 90 / 100;\n //console.log(url);\n //console.log(document.location);\n window.open(url, '', 'width=' + width.toString() + ',height=' + height.toString() + ',menubar=no,toolbar=no,personalbar=no,location=no,resizable=no,scrollbars=yes,status=no,chrome=yes,centerscreen=yes,attention=yes,dialog=yes');\n $('#printPreflightModal').modal('hide');\n}\n\nfunction printPage() {\n window.NETDATA.parseDom();\n if (urlOptions.pan_and_zoom === true) {\n reduxStore.dispatch(setGlobalPanAndZoomAction({\n after: urlOptions.after,\n before: urlOptions.before,\n }))\n }\n showPageFooter(); // todo after full rewrite the footer should show when charts are loaded\n}\n\n// --------------------------------------------------------------------\n\nfunction jsonStringifyFn(obj) {\n return JSON.stringify(obj, function (key, value) {\n return (typeof value === 'function') ? value.toString() : value;\n });\n}\n\nfunction jsonParseFn(str) {\n return JSON.parse(str, function (key, value) {\n if (typeof value != 'string') {\n return value;\n }\n return (value.substring(0, 8) == 'function') ? eval('(' + value + ')') : value;\n });\n}\n\n// --------------------------------------------------------------------\n\nvar snapshotOptions = {\n bytes_per_chart: 2048,\n compressionDefault: 'pako.deflate.base64',\n\n compressions: {\n 'none': {\n bytes_per_point_memory: 5.2,\n bytes_per_point_disk: 5.6,\n\n compress: function (s) {\n return s;\n },\n\n compressed_length: function (s) {\n return s.length;\n },\n\n uncompress: function (s) {\n return s;\n }\n },\n\n 'pako.deflate.base64': {\n bytes_per_point_memory: 1.8,\n bytes_per_point_disk: 1.9,\n\n compress: function (s) {\n return btoa(pako.deflate(s, { to: 'string' }));\n },\n\n compressed_length: function (s) {\n return s.length;\n },\n\n uncompress: function (s) {\n return pako.inflate(atob(s), { to: 'string' });\n }\n },\n\n 'pako.deflate': {\n bytes_per_point_memory: 1.4,\n bytes_per_point_disk: 3.2,\n\n compress: function (s) {\n return pako.deflate(s, { to: 'string' });\n },\n\n compressed_length: function (s) {\n return s.length;\n },\n\n uncompress: function (s) {\n return pako.inflate(s, { to: 'string' });\n }\n },\n\n 'lzstring.utf16': {\n bytes_per_point_memory: 1.7,\n bytes_per_point_disk: 2.6,\n\n compress: function (s) {\n return LZString.compressToUTF16(s);\n },\n\n compressed_length: function (s) {\n return s.length * 2;\n },\n\n uncompress: function (s) {\n return LZString.decompressFromUTF16(s);\n }\n },\n\n 'lzstring.base64': {\n bytes_per_point_memory: 2.1,\n bytes_per_point_disk: 2.3,\n\n compress: function (s) {\n return LZString.compressToBase64(s);\n },\n\n compressed_length: function (s) {\n return s.length;\n },\n\n uncompress: function (s) {\n return LZString.decompressFromBase64(s);\n }\n },\n\n 'lzstring.uri': {\n bytes_per_point_memory: 2.1,\n bytes_per_point_disk: 2.3,\n\n compress: function (s) {\n return LZString.compressToEncodedURIComponent(s);\n },\n\n compressed_length: function (s) {\n return s.length;\n },\n\n uncompress: function (s) {\n return LZString.decompressFromEncodedURIComponent(s);\n }\n }\n }\n};\n\n// --------------------------------------------------------------------\n// loading snapshots\n\nfunction loadSnapshotModalLog(priority, msg) {\n document.getElementById('loadSnapshotStatus').className = \"alert alert-\" + priority;\n document.getElementById('loadSnapshotStatus').innerHTML = msg;\n}\n\nvar tmpSnapshotData = null;\n\nwindow.loadSnapshot = () => {\n $('#loadSnapshotImport').addClass('disabled');\n\n if (tmpSnapshotData === null) {\n loadSnapshotPreflightEmpty();\n loadSnapshotModalLog('danger', 'no data have been loaded');\n return;\n }\n\n loadPako(function () {\n loadLzString(function () {\n loadSnapshotModalLog('info', 'Please wait, activating snapshot...');\n $('#loadSnapshotModal').modal('hide');\n\n netdataShowAlarms = false;\n netdataRegistry = false;\n netdataServer = tmpSnapshotData.server;\n\n document.getElementById('charts_div').innerHTML = '';\n document.getElementById('sidebar').innerHTML = '';\n\n if (typeof tmpSnapshotData.hash !== 'undefined') {\n urlOptions.hash = tmpSnapshotData.hash;\n } else {\n urlOptions.hash = '#';\n }\n\n if (typeof tmpSnapshotData.info !== 'undefined') {\n var info = jsonParseFn(tmpSnapshotData.info);\n if (typeof info.menu !== 'undefined') {\n netdataDashboard.menu = info.menu;\n }\n\n if (typeof info.submenu !== 'undefined') {\n netdataDashboard.submenu = info.submenu;\n }\n\n if (typeof info.context !== 'undefined') {\n netdataDashboard.context = info.context;\n }\n }\n\n if (typeof tmpSnapshotData.compression !== 'string') {\n tmpSnapshotData.compression = 'none';\n }\n\n if (typeof snapshotOptions.compressions[tmpSnapshotData.compression] === 'undefined') {\n alert('unknown compression method: ' + tmpSnapshotData.compression);\n tmpSnapshotData.compression = 'none';\n }\n\n tmpSnapshotData.uncompress = snapshotOptions.compressions[tmpSnapshotData.compression].uncompress;\n\n window.NETDATA.parseDom()\n reduxStore.dispatch(loadSnapshotAction({\n snapshot: tmpSnapshotData,\n }))\n\n window.netdataSnapshotData = tmpSnapshotData;\n\n urlOptions.after = tmpSnapshotData.after_ms;\n urlOptions.before = tmpSnapshotData.before_ms;\n\n if (typeof tmpSnapshotData.highlight_after_ms !== 'undefined'\n && tmpSnapshotData.highlight_after_ms !== null\n && tmpSnapshotData.highlight_after_ms > 0\n && typeof tmpSnapshotData.highlight_before_ms !== 'undefined'\n && tmpSnapshotData.highlight_before_ms !== null\n && tmpSnapshotData.highlight_before_ms > 0\n ) {\n urlOptions.highlight_after = tmpSnapshotData.highlight_after_ms;\n urlOptions.highlight_before = tmpSnapshotData.highlight_before_ms;\n urlOptions.highlight = true;\n } else {\n urlOptions.highlight_after = 0;\n urlOptions.highlight_before = 0;\n urlOptions.highlight = false;\n }\n\n netdataCheckXSS = false; // disable the modal - this does not affect XSS checks, since dashboard.js is already loaded\n NETDATA.xss.enabled = true; // we should not do any remote requests, but if we do, check them\n NETDATA.xss.enabled_for_data = true; // check also snapshot data - that have been excluded from the initial check, due to compression\n loadSnapshotPreflightEmpty();\n initializeDynamicDashboard();\n });\n });\n};\n\nfunction loadSnapshotPreflightFile(file) {\n var filename = NETDATA.xss.string(file.name);\n var fr = new FileReader();\n fr.onload = function (e) {\n document.getElementById('loadSnapshotFilename').innerHTML = filename;\n var result = null;\n try {\n result = NETDATA.xss.checkAlways('snapshot', JSON.parse(e.target.result), /^(snapshot\\.info|snapshot\\.data)$/);\n\n //console.log(result);\n var date_after = new Date(result.after_ms);\n var date_before = new Date(result.before_ms);\n\n if (typeof result.charts_ok === 'undefined') {\n result.charts_ok = 'unknown';\n }\n\n if (typeof result.charts_failed === 'undefined') {\n result.charts_failed = 0;\n }\n\n if (typeof result.compression === 'undefined') {\n result.compression = 'none';\n }\n\n if (typeof result.data_size === 'undefined') {\n result.data_size = 0;\n }\n\n document.getElementById('loadSnapshotFilename').innerHTML = '<code>' + filename + '</code>';\n document.getElementById('loadSnapshotHostname').innerHTML = '<b>' + result.hostname + '</b>, netdata version: <b>' + result.netdata_version.toString() + '</b>';\n document.getElementById('loadSnapshotURL').innerHTML = result.url;\n document.getElementById('loadSnapshotCharts').innerHTML = result.charts.charts_count.toString() + ' charts, ' + result.charts.dimensions_count.toString() + ' dimensions, ' + result.data_points.toString() + ' points per dimension, ' + Math.round(result.duration_ms / result.data_points).toString() + ' ms per point';\n document.getElementById('loadSnapshotInfo').innerHTML = 'version: <b>' + result.snapshot_version.toString() + '</b>, includes <b>' + result.charts_ok.toString() + '</b> unique chart data queries ' + ((result.charts_failed > 0) ? ('<b>' + result.charts_failed.toString() + '</b> failed') : '').toString() + ', compressed with <code>' + result.compression.toString() + '</code>, data size ' + (Math.round(result.data_size * 100 / 1024 / 1024) / 100).toString() + ' MB';\n document.getElementById('loadSnapshotTimeRange').innerHTML = '<b>' + localeDateString(date_after) + ' ' + localeTimeString(date_after) + '</b> to <b>' + localeDateString(date_before) + ' ' + localeTimeString(date_before) + '</b>';\n document.getElementById('loadSnapshotComments').innerHTML = ((result.comments) ? result.comments : '').toString();\n loadSnapshotModalLog('success', 'File loaded, click <b>Import</b> to render it!');\n $('#loadSnapshotImport').removeClass('disabled');\n\n tmpSnapshotData = result;\n }\n catch (e) {\n console.log(e);\n document.getElementById('loadSnapshotStatus').className = \"alert alert-danger\";\n document.getElementById('loadSnapshotStatus').innerHTML = \"Failed to parse this file!\";\n $('#loadSnapshotImport').addClass('disabled');\n }\n }\n\n //console.log(file);\n fr.readAsText(file);\n};\n\nfunction loadSnapshotPreflightEmpty() {\n document.getElementById('loadSnapshotFilename').innerHTML = '';\n document.getElementById('loadSnapshotHostname').innerHTML = '';\n document.getElementById('loadSnapshotURL').innerHTML = '';\n document.getElementById('loadSnapshotCharts').innerHTML = '';\n document.getElementById('loadSnapshotInfo').innerHTML = '';\n document.getElementById('loadSnapshotTimeRange').innerHTML = '';\n document.getElementById('loadSnapshotComments').innerHTML = '';\n loadSnapshotModalLog('success', 'Browse for a snapshot file (or drag it and drop it here), then click <b>Import</b> to render it.');\n $('#loadSnapshotImport').addClass('disabled');\n};\n\nvar loadSnapshotDragAndDropInitialized = false;\n\nfunction loadSnapshotDragAndDropSetup() {\n if (loadSnapshotDragAndDropInitialized === false) {\n loadSnapshotDragAndDropInitialized = true;\n $('#loadSnapshotDragAndDrop')\n .on('drag dragstart dragend dragover dragenter dragleave drop', function (e) {\n e.preventDefault();\n e.stopPropagation();\n })\n .on('drop', function (e) {\n if (e.originalEvent.dataTransfer.files.length) {\n loadSnapshotPreflightFile(e.originalEvent.dataTransfer.files.item(0));\n } else {\n loadSnapshotPreflightEmpty();\n loadSnapshotModalLog('danger', 'No file selected');\n }\n });\n }\n};\n\nwindow.loadSnapshotPreflight = () => {\n var files = document.getElementById('loadSnapshotSelectFiles').files;\n if (!files.length) {\n loadSnapshotPreflightEmpty();\n loadSnapshotModalLog('danger', 'No file selected');\n return;\n }\n\n loadSnapshotModalLog('info', 'Loading file...');\n\n loadSnapshotPreflightFile(files.item(0));\n}\n\n// --------------------------------------------------------------------\n// saving snapshots\n\nvar saveSnapshotStop = false;\n\nfunction saveSnapshotCancel() {\n reduxStore.dispatch(stopSnapshotModeAction())\n saveSnapshotStop = true;\n}\n\nvar saveSnapshotModalInitialized = false;\n\nfunction saveSnapshotModalSetup() {\n if (saveSnapshotModalInitialized === false) {\n saveSnapshotModalInitialized = true;\n $('#saveSnapshotModal')\n .on('hide.bs.modal', saveSnapshotCancel)\n .on('show.bs.modal', saveSnapshotModalInit)\n .on('shown.bs.modal', function () {\n $('#saveSnapshotResolutionSlider').find(\".slider-handle:first\").attr(\"tabindex\", 1);\n document.getElementById('saveSnapshotComments').focus();\n });\n }\n};\n\nfunction saveSnapshotModalLog(priority, msg) {\n document.getElementById('saveSnapshotStatus').className = \"alert alert-\" + priority;\n document.getElementById('saveSnapshotStatus').innerHTML = msg;\n}\n\nfunction saveSnapshotModalShowExpectedSize() {\n var points = Math.round(saveSnapshotViewDuration / saveSnapshotSelectedSecondsPerPoint);\n var priority = 'info';\n var msg = 'A moderate snapshot.';\n\n var sizemb = Math.round(\n (options.data.charts_count * snapshotOptions.bytes_per_chart\n + options.data.dimensions_count * points * snapshotOptions.compressions[saveSnapshotCompression].bytes_per_point_disk)\n * 10 / 1024 / 1024) / 10;\n\n var memmb = Math.round(\n (options.data.charts_count * snapshotOptions.bytes_per_chart\n + options.data.dimensions_count * points * snapshotOptions.compressions[saveSnapshotCompression].bytes_per_point_memory)\n * 10 / 1024 / 1024) / 10;\n\n if (sizemb < 10) {\n priority = 'success';\n msg = 'A nice small snapshot!';\n }\n if (sizemb > 50) {\n priority = 'warning';\n msg = 'Will stress your browser...';\n }\n if (sizemb > 100) {\n priority = 'danger';\n msg = 'Hm... good luck...';\n }\n\n saveSnapshotModalLog(priority, 'The snapshot will have ' + points.toString() + ' points per dimension. Expected size on disk ' + sizemb + ' MB, at browser memory ' + memmb + ' MB.<br/>' + msg);\n}\n\nvar saveSnapshotCompression = snapshotOptions.compressionDefault;\n\nfunction saveSnapshotSetCompression(name) {\n saveSnapshotCompression = name;\n document.getElementById('saveSnapshotCompressionName').innerHTML = saveSnapshotCompression;\n saveSnapshotModalShowExpectedSize();\n}\n\nvar saveSnapshotSlider = null;\nvar saveSnapshotSelectedSecondsPerPoint = 1;\nvar saveSnapshotViewDuration = 1;\n\nfunction saveSnapshotModalInit() {\n $('#saveSnapshotModalProgressSection').hide();\n $('#saveSnapshotResolutionRadio').show();\n saveSnapshotModalLog('info', 'Select resolution and click <b>Save</b>');\n $('#saveSnapshotExport').removeClass('disabled');\n\n loadBootstrapSlider(function () {\n saveSnapshotViewDuration = options.duration;\n var start_ms = Math.round(Date.now() - saveSnapshotViewDuration * 1000);\n const reduxState = reduxStore.getState()\n const globalPanAndZoom = selectGlobalPanAndZoom(reduxState)\n\n if (Boolean(globalPanAndZoom)) {\n saveSnapshotViewDuration = Math.round((globalPanAndZoom.before - globalPanAndZoom.after) / 1000);\n start_ms = globalPanAndZoom.after;\n }\n\n var start_date = new Date(start_ms);\n var yyyymmddhhssmm = start_date.getFullYear() + zeropad(start_date.getMonth() + 1) + zeropad(start_date.getDate()) + '-' + zeropad(start_date.getHours()) + zeropad(start_date.getMinutes()) + zeropad(start_date.getSeconds());\n\n document.getElementById('saveSnapshotFilename').value = 'netdata-' + options.hostname.toString() + '-' + yyyymmddhhssmm.toString() + '-' + saveSnapshotViewDuration.toString() + '.snapshot';\n saveSnapshotSetCompression(saveSnapshotCompression);\n\n var min = options.update_every;\n var max = Math.round(saveSnapshotViewDuration / 100);\n\n if (Boolean(globalPanAndZoom)) {\n max = Math.round(saveSnapshotViewDuration / 50);\n }\n\n var view = Math.round(saveSnapshotViewDuration / Math.round($(document.getElementById('charts_div')).width() / 2));\n\n if (max < 10) {\n max = 10;\n }\n if (max < min) {\n max = min;\n }\n if (view < min) {\n view = min;\n }\n if (view > max) {\n view = max;\n }\n\n if (saveSnapshotSlider !== null) {\n saveSnapshotSlider.destroy();\n }\n\n saveSnapshotSlider = new Slider('#saveSnapshotResolutionSlider', {\n ticks: [min, view, max],\n min: min,\n max: max,\n step: options.update_every,\n value: view,\n scale: (max > 100) ? 'logarithmic' : 'linear',\n tooltip: 'always',\n formatter: function (value) {\n if (value < 1) {\n value = 1;\n }\n\n if (value < options.data.update_every) {\n value = options.data.update_every;\n }\n\n saveSnapshotSelectedSecondsPerPoint = value;\n saveSnapshotModalShowExpectedSize();\n\n var seconds = ' seconds ';\n if (value === 1) {\n seconds = ' second ';\n }\n\n return value + seconds + 'per point' + ((value === options.data.update_every) ? ', server default' : '').toString();\n }\n });\n });\n}\n\nwindow.saveSnapshot = () => {\n loadPako(function () {\n loadLzString(function () {\n saveSnapshotStop = false;\n $('#saveSnapshotModalProgressSection').show();\n $('#saveSnapshotResolutionRadio').hide();\n $('#saveSnapshotExport').addClass('disabled');\n\n var filename = document.getElementById('saveSnapshotFilename').value;\n // console.log(filename);\n saveSnapshotModalLog('info', 'Generating snapshot as <code>' + filename.toString() + '</code>');\n\n\n var el = document.getElementById('saveSnapshotModalProgressBar');\n var eltxt = document.getElementById('saveSnapshotModalProgressBarText');\n\n options.data.charts_by_name = null;\n\n var saveData = {\n hostname: options.hostname,\n server: serverDefault,\n netdata_version: options.data.version,\n snapshot_version: 1,\n after_ms: Date.now() - options.duration * 1000,\n before_ms: Date.now(),\n highlight_after_ms: urlOptions.highlight_after,\n highlight_before_ms: urlOptions.highlight_before,\n duration_ms: options.duration * 1000,\n update_every_ms: options.update_every * 1000,\n data_points: 0,\n url: ((urlOptions.server !== null) ? urlOptions.server : document.location.origin.toString() + document.location.pathname.toString() + document.location.search.toString()).toString(),\n comments: document.getElementById('saveSnapshotComments').value.toString(),\n hash: urlOptions.hash,\n charts: options.data,\n info: jsonStringifyFn({\n menu: netdataDashboard.menu,\n submenu: netdataDashboard.submenu,\n context: netdataDashboard.context\n }),\n charts_ok: 0,\n charts_failed: 0,\n compression: saveSnapshotCompression,\n data_size: 0,\n data: {}\n };\n\n if (typeof snapshotOptions.compressions[saveData.compression] === 'undefined') {\n alert('unknown compression method: ' + saveData.compression);\n saveData.compression = 'none';\n }\n\n var compress = snapshotOptions.compressions[saveData.compression].compress;\n var compressed_length = snapshotOptions.compressions[saveData.compression].compressed_length;\n\n function pack_api1_v1_chart_data({ data, chartDataUniqueID }) {\n if (data === null) {\n return 0\n }\n\n var str = JSON.stringify(data);\n\n var cstr = compress(str);\n saveData.data[chartDataUniqueID] = cstr;\n return compressed_length(cstr);\n }\n\n const reduxState = reduxStore.getState()\n\n const globalPanAndZoom = selectGlobalPanAndZoom(reduxState)\n var clearPanAndZoom = false;\n if (!globalPanAndZoom) {\n reduxStore.dispatch(setGlobalPanAndZoomAction({\n after: saveData.after_ms,\n before: saveData.before_ms,\n }))\n clearPanAndZoom = true;\n } else {\n saveData.after_ms = globalPanAndZoom.after\n saveData.before_ms = globalPanAndZoom.before\n }\n\n\n saveData.duration_ms = saveData.before_ms - saveData.after_ms;\n saveData.data_points = Math.round((saveData.before_ms - saveData.after_ms) / (saveSnapshotSelectedSecondsPerPoint * 1000));\n saveSnapshotModalLog('info', 'Generating snapshot with ' + saveData.data_points.toString() + ' data points per dimension...');\n\n reduxStore.dispatch(startSnapshotModeAction({\n charts: saveData.charts,\n dataPoints: saveData.data_points,\n }))\n\n\n window.saveSnapshotRestore = () => {\n $('#saveSnapshotModal').modal('hide');\n\n $(el).css('width', '0%').attr('aria-valuenow', 0);\n eltxt.innerText = '0%';\n\n reduxStore.dispatch(stopSnapshotModeAction())\n reduxStore.dispatch(snapshotExportResetAction())\n if (clearPanAndZoom) {\n // clear that afterwards\n reduxStore.dispatch(resetGlobalPanAndZoomAction())\n }\n\n $('#saveSnapshotExport').removeClass('disabled');\n }\n\n var size = 0;\n var info = ' Resolution: <b>' + saveSnapshotSelectedSecondsPerPoint.toString() + ((saveSnapshotSelectedSecondsPerPoint === 1) ? ' second ' : ' seconds ').toString() + 'per point</b>.';\n\n window.chartUpdated = ({ chart, chartDataUniqueID, data }) => {\n if (saveSnapshotStop === true) {\n saveSnapshotModalLog('info', 'Cancelled!');\n saveSnapshotRestore()\n }\n const state = reduxStore.getState()\n const chartsCount = selectAmountOfCharts(state)\n const chartsOk = selectAmountOfSnapshotsFetched(state) // hook\n const chartsFailed = selectAmountOfSnapshotsFailed(state)\n\n const pcent = ((chartsOk + chartsFailed) / chartsCount) * 100\n $(el).css('width', pcent + '%').attr('aria-valuenow', pcent);\n eltxt.innerText = Math.round(pcent).toString() + '%, ' + (chart || data.id)\n\n size += pack_api1_v1_chart_data({ data, chartDataUniqueID })\n\n saveSnapshotModalLog((chartsFailed) ? 'danger' : 'info', 'Generated snapshot data size <b>' + (Math.round(size * 100 / 1024 / 1024) / 100).toString() + ' MB</b>. ' + ((chartsFailed) ? (chartsFailed.toString() + ' charts have failed to be downloaded') : '').toString() + info);\n\n window.saveData = saveData\n // better not to use equality against pcent in case of floating point errors\n if (chartsOk + chartsFailed === chartsCount) {\n saveData.charts_ok = chartsOk\n saveData.charts_failed = chartsFailed\n saveData.data_size = size\n\n saveObjectToClient(saveData, filename)\n if (chartsFailed > 0) {\n alert(`${chartsFailed} failed to be downloaded`);\n }\n saveSnapshotRestore()\n saveData = null\n }\n }\n\n // called for every chart\n function update_chart(idx) {\n if (saveSnapshotStop === true) {\n saveSnapshotModalLog('info', 'Cancelled!');\n saveSnapshotRestore();\n return;\n }\n\n var state = NETDATA.options.targets[--idx];\n\n var pcent = (NETDATA.options.targets.length - idx) * 100 / NETDATA.options.targets.length;\n $(el).css('width', pcent + '%').attr('aria-valuenow', pcent);\n eltxt.innerText = Math.round(pcent).toString() + '%, ' + state.id;\n\n setTimeout(function () {\n charts_count++;\n state.isVisible(true);\n state.current.force_after_ms = saveData.after_ms;\n state.current.force_before_ms = saveData.before_ms;\n\n state.updateChart(function (status, reason) {\n state.current.force_after_ms = null;\n state.current.force_before_ms = null;\n\n if (status === true) {\n charts_ok++;\n // state.log('ok');\n size += pack_api1_v1_chart_data(state);\n } else {\n charts_failed++;\n state.log('failed to be updated: ' + reason);\n }\n\n saveSnapshotModalLog((charts_failed) ? 'danger' : 'info', 'Generated snapshot data size <b>' + (Math.round(size * 100 / 1024 / 1024) / 100).toString() + ' MB</b>. ' + ((charts_failed) ? (charts_failed.toString() + ' charts have failed to be downloaded') : '').toString() + info);\n\n if (idx > 0) {\n update_chart(idx);\n } else {\n saveData.charts_ok = charts_ok;\n saveData.charts_failed = charts_failed;\n saveData.data_size = size;\n // console.log(saveData.compression + ': ' + (size / (options.data.dimensions_count * Math.round(saveSnapshotViewDuration / saveSnapshotSelectedSecondsPerPoint))).toString());\n\n // save it\n // console.log(saveData);\n saveObjectToClient(saveData, filename);\n\n if (charts_failed > 0) {\n alert(charts_failed.toString() + ' failed to be downloaded');\n }\n\n saveSnapshotRestore();\n saveData = null;\n }\n })\n }, 0);\n }\n\n });\n });\n}\n\n// --------------------------------------------------------------------\n// activate netdata on the page\nlet browser_timezone\ntry {\n browser_timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n} catch (e) {\n console.log('failed to detect browser timezone: ' + e.toString());\n browser_timezone = 'cannot-detect-it';\n}\n\nconst getOption = (option) => {\n const state = reduxStore.getState()\n return createSelectOption(option)(state)\n}\n\n\nfunction dashboardSettingsSetup() {\n var update_options_modal = function () {\n var sync_option = function (option) {\n var self = $('#' + option);\n\n if (self.prop('checked') !== getOption(option)) {\n // console.log('switching ' + option.toString());\n self.bootstrapToggle(getOption(option) ? 'on' : 'off');\n }\n };\n\n var theme_sync_option = function (option) {\n var self = $('#' + option);\n\n self.bootstrapToggle(netdataTheme === 'slate' ? 'on' : 'off');\n };\n var units_sync_option = function (option) {\n var self = $('#' + option);\n\n if (self.prop('checked') !== (getOption('units') === 'auto')) {\n self.bootstrapToggle(getOption('units') === 'auto' ? 'on' : 'off');\n }\n\n if (self.prop('checked') === true) {\n $('#settingsLocaleTempRow').show();\n $('#settingsLocaleTimeRow').show();\n } else {\n $('#settingsLocaleTempRow').hide();\n $('#settingsLocaleTimeRow').hide();\n }\n };\n var temp_sync_option = function (option) {\n var self = $('#' + option);\n\n if (self.prop('checked') !== (getOption('temperature') === 'celsius')) {\n self.bootstrapToggle(getOption('temperature') === 'celsius' ? 'on' : 'off');\n }\n };\n var timezone_sync_option = function (option) {\n var self = $('#' + option);\n\n const timezoneOption = getOption(\"timezone\")\n document.getElementById('browser_timezone').innerText = browser_timezone;\n document.getElementById('server_timezone').innerText = options.timezone || \"unknown\";\n document.getElementById('current_timezone').innerText = timezoneOption === 'default'\n ? 'unset, using browser default' : timezoneOption;\n\n const isUsingTimezone = timezoneOption !== \"\" && timezoneOption !== \"default\"\n if (self.prop('checked') === isUsingTimezone) {\n self.bootstrapToggle(isUsingTimezone ? 'off' : 'on');\n }\n };\n\n\n sync_option('stop_updates_when_focus_is_lost');\n sync_option('eliminate_zero_dimensions');\n sync_option('destroy_on_hide');\n sync_option('async_on_scroll');\n\n sync_option('parallel_refresher');\n sync_option('concurrent_refreshes');\n sync_option('sync_selection');\n sync_option('sync_pan_and_zoom');\n\n sync_option('legend_right');\n theme_sync_option('netdata_theme_control');\n sync_option('show_help');\n sync_option('pan_and_zoom_data_padding');\n sync_option('smooth_plot');\n\n units_sync_option('units_conversion');\n temp_sync_option('units_temp');\n sync_option('seconds_as_time');\n timezone_sync_option('local_timezone');\n\n if (getOption('parallel_refresher') === false) {\n $('#concurrent_refreshes_row').hide();\n } else {\n $('#concurrent_refreshes_row').show();\n }\n };\n\n update_options_modal();\n\n // handle options changes\n $('#eliminate_zero_dimensions').change(function () {\n setOption('eliminate_zero_dimensions', $(this).prop('checked'));\n });\n $('#destroy_on_hide').change(function () {\n setOption('destroy_on_hide', $(this).prop('checked'));\n });\n $('#async_on_scroll').change(function () {\n setOption('async_on_scroll', $(this).prop('checked'));\n });\n $('#parallel_refresher').change(function () {\n setOption('parallel_refresher', $(this).prop('checked'));\n });\n $('#concurrent_refreshes').change(function () {\n setOption('concurrent_refreshes', $(this).prop('checked'));\n });\n $('#sync_selection').change(function () {\n setOption('sync_selection', $(this).prop('checked'));\n netdataReload();\n });\n $('#sync_pan_and_zoom').change(function () {\n setOption('sync_pan_and_zoom', $(this).prop('checked'));\n });\n $('#stop_updates_when_focus_is_lost').change(function () {\n urlOptions.update_always = !$(this).prop('checked');\n urlOptions.hashUpdate();\n\n setOption('stop_updates_when_focus_is_lost', !urlOptions.update_always);\n });\n $('#smooth_plot').change(function () {\n setOption('smooth_plot', $(this).prop('checked'));\n });\n $('#pan_and_zoom_data_padding').change(function () {\n setOption('pan_and_zoom_data_padding', $(this).prop('checked'));\n });\n $('#seconds_as_time').change(function () {\n setOption('seconds_as_time', $(this).prop('checked'));\n });\n $('#local_timezone').change(function () {\n if ($(this).prop('checked')) {\n selected_server_timezone('default', true);\n } else {\n selected_server_timezone('default', false);\n }\n });\n\n $('#units_conversion').change(function () {\n setOption('units', $(this).prop('checked') ? 'auto' : 'original');\n update_options_modal()\n });\n $('#units_temp').change(function () {\n setOption('temperature', $(this).prop('checked') ? 'celsius' : 'fahrenheit');\n });\n\n $('#legend_right').change(function () {\n setOption('legend_right', $(this).prop('checked'));\n // reloading for now, it's much easier than rebuilding charts bootstraping in main.js\n netdataReload();\n });\n\n $('#show_help').change(function () {\n urlOptions.help = $(this).prop('checked');\n urlOptions.hashUpdate();\n\n setOption('show_help', urlOptions.help);\n netdataReload();\n });\n\n // this has to be the last\n // it reloads the page\n $('#netdata_theme_control').change(function () {\n urlOptions.theme = $(this).prop('checked') ? 'slate' : 'white';\n urlOptions.hashUpdate();\n\n if (setTheme(urlOptions.theme)) {\n netdataReload();\n }\n });\n}\n\nconst CHART_DIV_ID_PREFIX = 'chart_'\nconst CHART_DIV_OFFSET = -50\n\nfunction scrollDashboardTo() {\n if (window.netdataSnapshotData !== null && typeof window.netdataSnapshotData.hash !== 'undefined') {\n scrollToId(window.netdataSnapshotData.hash.replace('#', ''));\n } else {\n // check if we have to jump to a specific section\n scrollToId(urlOptions.hash.replace('#', ''));\n if (urlOptions.chart !== null) {\n const chartElement = document.getElementById(`${CHART_DIV_ID_PREFIX}${name2id(urlOptions.chart)}`)\n if (chartElement) {\n const offset = chartElement.offsetTop + CHART_DIV_OFFSET;\n document.querySelector(\"html\").scrollTop = offset\n }\n }\n }\n}\n\nvar modalHiddenCallback = null;\n\nwindow.scrollToChartAfterHidingModal = (chart, alarmDate, alarmStatus) => {\n modalHiddenCallback = function () {\n\n if (typeof chart === 'string') {\n const chartElement = document.getElementById(`${CHART_DIV_ID_PREFIX}${name2id(chart)}`)\n if (chartElement) {\n const offset = chartElement.offsetTop + CHART_DIV_OFFSET;\n document.querySelector(\"html\").scrollTop = offset\n }\n }\n\n if (['WARNING', 'CRITICAL'].includes(alarmStatus)) {\n const twoMinutes = 2 * 60 * 1000\n reduxStore.dispatch(setGlobalPanAndZoomAction({\n after: alarmDate - twoMinutes,\n before: alarmDate + twoMinutes,\n }))\n }\n };\n}\n\n// ----------------------------------------------------------------------------\n\nfunction enableTooltipsAndPopovers() {\n $('[data-toggle=\"tooltip\"]').tooltip({\n animated: 'fade',\n trigger: 'hover',\n html: true,\n delay: { show: 500, hide: 0 },\n container: 'body'\n });\n $('[data-toggle=\"popover\"]').popover();\n}\n\n// ----------------------------------------------------------------------------\n\nvar runOnceOnDashboardLastRun = 0;\n\nfunction runOnceOnDashboardWithjQuery() {\n if (runOnceOnDashboardLastRun !== 0) {\n scrollDashboardTo();\n\n // restore the scrollspy at the proper position\n $(document.body).scrollspy('refresh');\n $(document.body).scrollspy('process');\n\n return;\n }\n\n runOnceOnDashboardLastRun = Date.now();\n\n // ------------------------------------------------------------------------\n // bootstrap modals\n\n // prevent bootstrap modals from scrolling the page\n // maintains the current scroll position\n // https://stackoverflow.com/a/34754029/4525767\n\n var scrollPos = 0;\n var modal_depth = 0; // how many modals are currently open\n var modal_shown = false; // set to true, if a modal is shown\n var netdata_paused_on_modal = false; // set to true, if the modal paused netdata\n var scrollspyOffset = $(window).height() / 3; // will be updated below - the offset of scrollspy to select an item\n\n $('.modal')\n .on('show.bs.modal', function () {\n if (modal_depth === 0) {\n scrollPos = window.scrollY;\n\n $('body').css({\n overflow: 'hidden',\n position: 'fixed',\n top: -scrollPos\n });\n\n modal_shown = true;\n\n if (NETDATA.options.pauseCallback === null) {\n NETDATA.pause(function () {\n });\n netdata_paused_on_modal = true;\n } else {\n netdata_paused_on_modal = false;\n }\n }\n\n modal_depth++;\n //console.log(urlOptions.after);\n\n })\n .on('hide.bs.modal', function () {\n\n modal_depth--;\n\n if (modal_depth <= 0) {\n modal_depth = 0;\n\n $('body')\n .css({\n overflow: '',\n position: '',\n top: ''\n });\n\n // scroll to the position we had open before the modal\n $('html, body')\n .animate({ scrollTop: scrollPos }, 0);\n\n // unpause netdata, if we paused it\n if (netdata_paused_on_modal === true) {\n NETDATA.unpause();\n netdata_paused_on_modal = false;\n }\n\n // restore the scrollspy at the proper position\n $(document.body).scrollspy('process');\n }\n //console.log(urlOptions.after);\n })\n .on('hidden.bs.modal', function () {\n if (modal_depth === 0) {\n modal_shown = false;\n }\n\n if (typeof modalHiddenCallback === 'function') {\n modalHiddenCallback();\n }\n\n modalHiddenCallback = null;\n //console.log(urlOptions.after);\n });\n\n // ------------------------------------------------------------------------\n // sidebar / affix\n\n $('#sidebar')\n .affix({\n offset: {\n top: 0,\n bottom: 0\n }\n })\n .on('affixed.bs.affix', function () {\n // fix scrolling of very long affix lists\n // http://stackoverflow.com/questions/21691585/bootstrap-3-1-0-affix-too-long\n\n $(this).removeAttr('style');\n })\n .on('affix-top.bs.affix', function () {\n // fix bootstrap affix click bug\n // https://stackoverflow.com/a/37847981/4525767\n\n if (modal_shown) {\n return false;\n }\n })\n .on('activate.bs.scrollspy', function (e) {\n // change the URL based on the current position of the screen\n\n if (modal_shown === false) {\n var el = $(e.target);\n var hash = el.find('a').attr('href');\n if (typeof hash === 'string' && hash.substring(0, 1) === '#' && urlOptions.hash.startsWith(hash + '_submenu_') === false) {\n urlOptions.hash = hash;\n urlOptions.hashUpdate();\n }\n }\n });\n\n Ps.initialize(document.getElementById('sidebar'), {\n wheelSpeed: 0.5,\n wheelPropagation: true,\n swipePropagation: true,\n minScrollbarLength: null,\n maxScrollbarLength: null,\n useBothWheelAxes: false,\n suppressScrollX: true,\n suppressScrollY: false,\n scrollXMarginOffset: 0,\n scrollYMarginOffset: 0,\n theme: 'default'\n });\n\n // ------------------------------------------------------------------------\n // scrollspy\n\n if (scrollspyOffset > 250) {\n scrollspyOffset = 250;\n }\n if (scrollspyOffset < 75) {\n scrollspyOffset = 75;\n }\n document.body.setAttribute('data-offset', scrollspyOffset);\n\n // scroll the dashboard, before activating the scrollspy, so that our\n // hash will not be updated before we got the chance to scroll to it\n scrollDashboardTo();\n\n $(document.body).scrollspy({\n target: '#sidebar',\n offset: scrollspyOffset // controls the diff of the <hX> element to the top, to select it\n });\n\n // ------------------------------------------------------------------------\n // my-netdata menu\n\n $('#deleteRegistryModal')\n .on('hidden.bs.modal', function () {\n deleteRegistryGuid = null;\n });\n\n // ------------------------------------------------------------------------\n // update modal\n\n $('#updateModal')\n .on('show.bs.modal', function () {\n versionLog('checking, please wait...');\n })\n .on('shown.bs.modal', function () {\n notifyForUpdate(true);\n });\n\n // ------------------------------------------------------------------------\n // alarms modal\n\n $('#alarmsModal')\n .on('shown.bs.modal', function () {\n alarmsUpdateModal();\n })\n .on('hidden.bs.modal', function () {\n document.getElementById('alarms_active').innerHTML =\n document.getElementById('alarms_all').innerHTML =\n document.getElementById('alarms_log').innerHTML =\n 'loading...';\n });\n\n // ------------------------------------------------------------------------\n\n dashboardSettingsSetup();\n loadSnapshotDragAndDropSetup();\n saveSnapshotModalSetup();\n showPageFooter();\n\n // ------------------------------------------------------------------------\n // https://github.com/viralpatel/jquery.shorten/blob/master/src/jquery.shorten.js\n\n $.fn.shorten = function (settings) {\n \"use strict\";\n\n var config = {\n showChars: 750,\n minHideChars: 10,\n ellipsesText: \"...\",\n moreText: '<i class=\"fas fa-expand\"></i> show more information',\n lessText: '<i class=\"fas fa-compress\"></i> show less information',\n onLess: function () {\n NETDATA.onscroll();\n },\n onMore: function () {\n NETDATA.onscroll();\n },\n errMsg: null,\n force: false\n };\n\n if (settings) {\n $.extend(config, settings);\n }\n\n if ($(this).data('jquery.shorten') && !config.force) {\n return false;\n }\n $(this).data('jquery.shorten', true);\n\n $(document).off(\"click\", '.morelink');\n\n $(document).on({\n click: function () {\n\n var $this = $(this);\n if ($this.hasClass('less')) {\n $this.removeClass('less');\n $this.html(config.moreText);\n $this.parent().prev().animate({ 'height': '0' + '%' }, 0, function () {\n $this.parent().prev().prev().show();\n }).hide(0, function () {\n config.onLess();\n });\n } else {\n $this.addClass('less');\n $this.html(config.lessText);\n $this.parent().prev().animate({ 'height': '100' + '%' }, 0, function () {\n $this.parent().prev().prev().hide();\n }).show(0, function () {\n config.onMore();\n });\n }\n return false;\n }\n }, '.morelink');\n\n return this.each(function () {\n var $this = $(this);\n\n var content = $this.html();\n var contentlen = $this.text().length;\n if (contentlen > config.showChars + config.minHideChars) {\n var c = content.substr(0, config.showChars);\n if (c.indexOf('<') >= 0) // If there's HTML don't want to cut it\n {\n var inTag = false; // I'm in a tag?\n var bag = ''; // Put the characters to be shown here\n var countChars = 0; // Current bag size\n var openTags = []; // Stack for opened tags, so I can close them later\n var tagName = null;\n\n for (var i = 0, r = 0; r <= config.showChars; i++) {\n if (content[i] === '<' && !inTag) {\n inTag = true;\n\n // This could be \"tag\" or \"/tag\"\n tagName = content.substring(i + 1, content.indexOf('>', i));\n\n // If its a closing tag\n if (tagName[0] === '/') {\n\n if (tagName !== ('/' + openTags[0])) {\n config.errMsg = 'ERROR en HTML: the top of the stack should be the tag that closes';\n } else {\n openTags.shift(); // Pops the last tag from the open tag stack (the tag is closed in the retult HTML!)\n }\n\n } else {\n // There are some nasty tags that don't have a close tag like <br/>\n if (tagName.toLowerCase() !== 'br') {\n openTags.unshift(tagName); // Add to start the name of the tag that opens\n }\n }\n }\n\n if (inTag && content[i] === '>') {\n inTag = false;\n }\n\n if (inTag) {\n bag += content.charAt(i);\n } else {\n // Add tag name chars to the result\n r++;\n if (countChars <= config.showChars) {\n bag += content.charAt(i); // Fix to ie 7 not allowing you to reference string characters using the []\n countChars++;\n } else {\n // Now I have the characters needed\n if (openTags.length > 0) {\n // I have unclosed tags\n\n for (var j = 0; j < openTags.length; j++) {\n bag += '</' + openTags[j] + '>'; // Close all tags that were opened\n\n // You could shift the tag from the stack to check if you end with an empty stack, that means you have closed all open tags\n }\n break;\n }\n }\n }\n }\n c = $('<div/>').html(bag + '<span class=\"ellip\">' + config.ellipsesText + '</span>').html();\n } else {\n c += config.ellipsesText;\n }\n\n var html = '<div class=\"shortcontent\">' + c +\n '</div><div class=\"allcontent\">' + content +\n '</div><span><a href=\"javascript://nop/\" class=\"morelink\">' + config.moreText + '</a></span>';\n\n $this.html(html);\n $this.find(\".allcontent\").hide(); // Hide all text\n $('.shortcontent p:last', $this).css('margin-bottom', 0); //Remove bottom margin on last paragraph as it's likely shortened\n }\n });\n };\n}\n\nfunction finalizePage() {\n if (urlOptions.after < 0) {\n reduxStore.dispatch(setDefaultAfterAction({ after: urlOptions.after }))\n } else if (urlOptions.pan_and_zoom === true) {\n reduxStore.dispatch(setGlobalPanAndZoomAction({\n after: urlOptions.after,\n before: urlOptions.before,\n }))\n }\n\n // resize all charts - without starting the background thread\n // this has to be done while NETDATA is paused\n // if we ommit this, the affix menu will be wrong, since all\n // the Dom elements are initially zero-sized\n NETDATA.parseDom();\n\n // let it run (update the charts)\n NETDATA.unpause();\n\n runOnceOnDashboardWithjQuery();\n $(\".shorten\").shorten();\n enableTooltipsAndPopovers();\n\n if (isDemo) {\n // do not to give errors on netdata demo servers for 60 seconds\n NETDATA.options.current.retries_on_data_failures = 60;\n\n // google analytics when this is used for the home page of the demo sites\n // this does not run on user's installations\n setTimeout(function () {\n (function (i, s, o, g, r, a, m) {\n i['GoogleAnalyticsObject'] = r;\n i[r] = i[r] || function () {\n (i[r].q = i[r].q || []).push(arguments)\n }, i[r].l = 1 * new Date();\n a = s.createElement(o),\n m = s.getElementsByTagName(o)[0];\n a.async = 1;\n a.src = g;\n m.parentNode.insertBefore(a, m)\n })(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga');\n\n ga('create', 'UA-64295674-3', 'auto');\n ga('send', 'pageview', '/demosite/' + window.location.host);\n }, 2000);\n } else {\n notifyForUpdate();\n }\n\n if (urlOptions.show_alarms === true) {\n setTimeout(function () {\n $('#alarmsModal').modal('show');\n }, 1000);\n }\n\n NETDATA.onresizeCallback = function () {\n Ps.update(document.getElementById('sidebar'));\n };\n NETDATA.onresizeCallback();\n\n if (window.netdataSnapshotData !== null) {\n reduxStore.dispatch(setGlobalPanAndZoomAction({\n after: window.netdataSnapshotData.after_ms,\n before: window.netdataSnapshotData.before_ms,\n }))\n }\n}\n\nwindow.resetDashboardOptions = () => {\n reduxStore.dispatch(resetOptionsAction())\n\n // it's dirty, but this will be rewritten anyway\n urlOptions.update_always = false;\n urlOptions.help = false;\n urlOptions.theme = \"slate\";\n urlOptions.hashUpdate();\n\n netdataReload()\n}\n\n// callback to add the dashboard info to the\n// parallel javascript downloader in netdata\nexport const netdataPrepCallback = () => {\n if (isDemo) {\n document.getElementById('masthead').style.display = 'block';\n } else {\n if (urlOptions.update_always === true) {\n setOption('stop_updates_when_focus_is_lost', !urlOptions.update_always);\n }\n }\n};\n\nwindow.selected_server_timezone = function (timezone, status) {\n // clear the error\n document.getElementById('timezone_error_message').innerHTML = '';\n\n if (typeof status === 'undefined') {\n // the user selected a timezone from the menu\n\n setOption('user_set_server_timezone', timezone);\n\n if (!isProperTimezone(timezone)) {\n setOption(\"timezone\", \"default\")\n\n if (!$('#local_timezone').prop('checked')) {\n $('#local_timezone').bootstrapToggle('on');\n }\n\n document.getElementById('timezone_error_message').innerHTML = 'Ooops! That timezone was not accepted by your browser. Please open a github issue to help us fix it.';\n setOption('user_set_server_timezone', options.timezone);\n } else {\n if ($('#local_timezone').prop('checked')) {\n $('#local_timezone').bootstrapToggle('off');\n }\n setOption(\"timezone\", timezone)\n }\n } else if (status === true) {\n // the user wants the browser default timezone to be activated\n setOption(\"timezone\", \"default\")\n } else {\n // the user wants the server default timezone to be activated\n\n let userSetServerTimezone = getOption(\"user_set_server_timezone\")\n if (userSetServerTimezone === 'default') {\n setOption(\"user_set_server_timezone\", options.timezone) // timezone from /charts endpoint\n userSetServerTimezone = options.timezone\n }\n\n if (!isProperTimezone(userSetServerTimezone)) {\n setOption(\"timezone\", \"default\");\n\n if (!$('#local_timezone').prop('checked')) {\n $('#local_timezone').bootstrapToggle('on');\n }\n\n document.getElementById('timezone_error_message').innerHTML = 'Sorry. The timezone \"' + timezone.toString() + '\" is not accepted by your browser. Please select one from the list.';\n setOption('user_set_server_timezone', options.timezone);\n } else {\n setOption(\"timezone\", userSetServerTimezone)\n }\n }\n\n const timezoneOption = getOption(\"timezone\")\n document.getElementById('current_timezone').innerText = (timezoneOption === 'default') ? 'unset, using browser default' : timezoneOption;\n return false;\n};\n\nexport var netdataCallback = initializeDynamicDashboard;\n\nwindow.showSignInModal = function() {\n document.getElementById(\"sim-registry\").innerHTML = getFromRegistry(\"registryServer\");\n $(\"#signInModal\").modal(\"show\");\n}\n\nwindow.explicitlySignIn = () => {\n $(\"#signInModal\").modal(\"hide\");\n reduxStore.dispatch(explicitlySignInAction())\n};\n","import { AlarmStatus } from \"domains/global/types\"\n\nexport const storeKey = \"global\"\n\nexport const TEMPORARY_MAIN_JS_TIMEOUT = 1000\n\nexport const MASKED_DATA = \"***\"\n\nexport const NOTIFICATIONS_TIMEOUT = 5000\n\nexport const INFO_POLLING_FREQUENCY = 5000\n\nexport const CLOUD_BASE_URL_DISABLED = \"CLOUD_BASE_URL_DISABLED\"\n\nexport const alarmStatuses: AlarmStatus[] = [\"WARNING\", \"ERROR\", \"REMOVED\", \"UNDEFINED\", \"UNINITIALIZED\", \"CLEAR\", \"CRITICAL\"]\n","import { equals } from \"ramda\"\n\n// we use numbers to specify time. it can be either a timestamp (ms), or a relative value in seconds\n// which is always 0 or less (0 is now, -300 is -5 minutes)\n\nexport const isTimestamp = (x: number) => x > 0\n\nexport const NETDATA_REGISTRY_SERVER = \"https://registry.my-netdata.io\"\n\nexport const MS_IN_SECOND = 1000\nexport const NODE_VIEW_DYGRAPH_TITLE_HEIGHT = 30\nexport const DEFAULT_DASHBOARD_DURATION = 5 * 60\n\nexport const getIframeSrc = (cloudBaseURL: string, path: string) => `${cloudBaseURL}/sso/v2/${path}`\nexport const utmUrlSuffix = \"&utm_source=agent&utm_medium=web\"\n\nexport const getInitialAfterFromWindow = () => {\n const div = document.getElementById(\"charts_div\")\n if (!div) {\n // eslint-disable-next-line no-console\n console.error(\"Couldn't find '.charts_div' element to calculate width\")\n return -900\n }\n // based on https://github.com/netdata/dashboard/blob/7a7b538b00f1c5a4e1550f69cb5333212bb68f95/src/main.js#L1753\n // eslint-disable-next-line max-len\n // var duration = Math.round(($(div).width() * pcent_width / 100 * data.update_every / 3) / 60) * 60;\n return -Math.round((div.getBoundingClientRect().width / 3) / 60) * 60\n}\n\nexport const SPACE_PANEL_STATE = \"space-panel-state\"\n\nexport const useNewKeysOnlyIfDifferent = <T extends {}>(\n keys: (keyof T)[], obj1: T | null, obj2: T,\n): T => {\n if (!obj1) {\n return obj2\n }\n return keys.reduce<T>((acc, key) => ({\n ...acc,\n [key]: equals(obj1[key], obj2![key]) ? obj1[key] : obj2[key],\n }), obj2)\n}\n","import {\n concat, cond, equals, identity, last, pipe, T,\n} from \"ramda\"\n\nimport { isDevelopmentEnv, isMainJs, isTestingEnv } from \"utils/env\"\n\n\n// this part needs to be static and should run immediately because otherwise document.currentScript\n// will be null\nconst currentScript = isTestingEnv\n ? { src: \"http://localhost:3000/some-script.js\" } // test env doesnt have document.currentScript\n : document.currentScript\n\nconst getScriptSource = () => {\n // logic based on old dashboard\n\n // http://stackoverflow.com/questions/984510/what-is-my-script-src-url\n // http://stackoverflow.com/questions/6941533/get-protocol-domain-and-port-from-url\n const script = cond([\n [Boolean, identity],\n // \"last\" typings don't work well with HTMLScriptElement\n // if document.currentScript is not available\n [T, () => last(document.getElementsByTagName(\"script\") as unknown as [HTMLScriptElement])],\n ])(currentScript)\n\n return script.src\n}\n\nexport const getPathFromScriptSource = (source: string) => {\n // match strings not containing slash, ending with `.js`, with optional suffix started by `?`\n const jsFilenameRegex = \"[^\\\\/]*\\\\.js(\\\\/?.*)?$\"\n const staticJsPath = \"/static/js\"\n return source.replace(new RegExp(jsFilenameRegex), \"\")\n .replace(staticJsPath, \"\")\n}\n\nconst getDefaultServer = () => {\n if (isDevelopmentEnv) {\n return \"http://localhost:19999\"\n }\n\n // Agent Dashboard does not need sophisticated server-detection, which is causing problems\n // when navigating through streamed nodes. Let's overwrite that setting\n if (isMainJs) {\n const pathname = window.location.pathname\n .replace(\"index.html\", \"\")\n // todo consider .replace(/[^\\/]*\\.html/, \"\") (every .html file in the url)\n .replace(\"default.html\", \"\") // for netdata demo servers\n return window.location.origin + pathname\n }\n\n const source = getScriptSource()\n return getPathFromScriptSource(source)\n}\n\n// append \"/\" at the end, if it's not already there\nexport const alwaysEndWithSlash = cond([\n [pipe(last, equals(\"/\")), identity],\n [T, (x: string) => concat(x, \"/\")], // R.__ typings don't work well\n])\n\nexport const serverDefault: string = alwaysEndWithSlash(\n window.netdataServer || getDefaultServer(),\n)\n\nexport const serverStatic: string = isDevelopmentEnv\n ? \"/\" // for localhost:3000/css/...\n : alwaysEndWithSlash(getDefaultServer()) // by default, load from netdata server\n","/* eslint-disable */\n/*!\n * d3pie\n * @author Ben Keen\n * @version 0.1.9\n * @date June 17th, 2015\n * @repo http://github.com/benkeen/d3pie\n * SPDX-License-Identifier: MIT\n */\n\n// UMD pattern from https://github.com/umdjs/umd/blob/master/returnExports.js\n(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module\n define([], factory);\n } else if (typeof exports === 'object') {\n // Node. Does not work with strict CommonJS, but only CommonJS-like environments that support module.exports,\n // like Node\n module.exports = factory();\n } else {\n // browser globals (root is window)\n root.d3pie = factory(root);\n }\n}(this, function() {\n\n var _scriptName = \"d3pie\";\n var _version = \"0.2.1\";\n\n // used to uniquely generate IDs and classes, ensuring no conflict between multiple pies on the same page\n var _uniqueIDCounter = 0;\n\n\n // this section includes all helper libs on the d3pie object. They're populated via grunt-template. Note: to keep\n // the syntax highlighting from getting all messed up, I commented out each line. That REQUIRES each of the files\n // to have an empty first line. Crumby, yes, but acceptable.\n //// --------- _default-settings.js -----------/**\n/**\n * Contains the out-the-box settings for the script. Any of these settings that aren't explicitly overridden for the\n * d3pie instance will inherit from these. This is also included on the main website for use in the generation script.\n */\nvar defaultSettings = {\n header: {\n title: {\n text: \"\",\n color: \"#333333\",\n fontSize: 18,\n fontWeight: \"bold\",\n font: \"arial\"\n },\n subtitle: {\n text: \"\",\n color: \"#666666\",\n fontSize: 14,\n fontWeight: \"bold\",\n font: \"arial\"\n },\n location: \"top-center\",\n titleSubtitlePadding: 8\n },\n footer: {\n text: \t \"\",\n color: \"#666666\",\n fontSize: 14,\n fontWeight: \"bold\",\n font: \"arial\",\n location: \"left\"\n },\n size: {\n canvasHeight: 500,\n canvasWidth: 500,\n pieInnerRadius: \"0%\",\n pieOuterRadius: null\n },\n data: {\n sortOrder: \"none\",\n ignoreSmallSegments: {\n enabled: false,\n valueType: \"percentage\",\n value: null\n },\n smallSegmentGrouping: {\n enabled: false,\n value: 1,\n valueType: \"percentage\",\n label: \"Other\",\n color: \"#cccccc\"\n },\n content: []\n },\n labels: {\n outer: {\n format: \"label\",\n hideWhenLessThanPercentage: null,\n pieDistance: 30\n },\n inner: {\n format: \"percentage\",\n hideWhenLessThanPercentage: null\n },\n mainLabel: {\n color: \"#333333\",\n font: \"arial\",\n fontWeight: \"normal\",\n fontSize: 10\n },\n percentage: {\n color: \"#dddddd\",\n font: \"arial\",\n fontWeight: \"bold\",\n fontSize: 10,\n decimalPlaces: 0\n },\n value: {\n color: \"#cccc44\",\n fontWeight: \"bold\",\n font: \"arial\",\n fontSize: 10\n },\n lines: {\n enabled: true,\n style: \"curved\",\n color: \"segment\"\n },\n truncation: {\n enabled: false,\n truncateLength: 30\n },\n formatter: null\n },\n effects: {\n load: {\n effect: \"none\", // \"default\", commented in the code\n speed: 1000\n },\n pullOutSegmentOnClick: {\n effect: \"none\", // \"bounce\", commented in the code\n speed: 300,\n size: 10\n },\n highlightSegmentOnMouseover: false,\n highlightLuminosity: -0.2\n },\n tooltips: {\n enabled: false,\n type: \"placeholder\", // caption|placeholder\n string: \"\",\n placeholderParser: null,\n styles: {\n fadeInSpeed: 250,\n backgroundColor: \"#000000\",\n backgroundOpacity: 0.5,\n color: \"#efefef\",\n borderRadius: 2,\n font: \"arial\",\n fontWeight: \"bold\",\n fontSize: 10,\n padding: 4\n }\n },\n misc: {\n colors: {\n background: null,\n segments: [\n \"#2484c1\", \"#65a620\", \"#7b6888\", \"#a05d56\", \"#961a1a\", \"#d8d23a\", \"#e98125\", \"#d0743c\", \"#635222\", \"#6ada6a\",\n \"#0c6197\", \"#7d9058\", \"#207f33\", \"#44b9b0\", \"#bca44a\", \"#e4a14b\", \"#a3acb2\", \"#8cc3e9\", \"#69a6f9\", \"#5b388f\",\n \"#546e91\", \"#8bde95\", \"#d2ab58\", \"#273c71\", \"#98bf6e\", \"#4daa4b\", \"#98abc5\", \"#cc1010\", \"#31383b\", \"#006391\",\n \"#c2643f\", \"#b0a474\", \"#a5a39c\", \"#a9c2bc\", \"#22af8c\", \"#7fcecf\", \"#987ac6\", \"#3d3b87\", \"#b77b1c\", \"#c9c2b6\",\n \"#807ece\", \"#8db27c\", \"#be66a2\", \"#9ed3c6\", \"#00644b\", \"#005064\", \"#77979f\", \"#77e079\", \"#9c73ab\", \"#1f79a7\"\n ],\n segmentStroke: \"#ffffff\"\n },\n gradient: {\n enabled: false,\n percentage: 95,\n color: \"#000000\"\n },\n canvasPadding: {\n top: 5,\n right: 5,\n bottom: 5,\n left: 5\n },\n pieCenterOffset: {\n x: 0,\n y: 0\n },\n cssPrefix: null\n },\n callbacks: {\n onload: null,\n onMouseoverSegment: null,\n onMouseoutSegment: null,\n onClickSegment: null\n }\n};\n\n //// --------- validate.js -----------\nvar validate = {\n\n // called whenever a new pie chart is created\n initialCheck: function(pie) {\n var cssPrefix = pie.cssPrefix;\n var element = pie.element;\n var options = pie.options;\n\n // confirm d3 is available [check minimum version]\n if (!window.d3 || !window.d3.hasOwnProperty(\"version\")) {\n console.error(\"d3pie error: d3 is not available\");\n return false;\n }\n\n // confirm element is either a DOM element or a valid string for a DOM element\n if (!(element instanceof HTMLElement || element instanceof SVGElement)) {\n console.error(\"d3pie error: the first d3pie() param must be a valid DOM element (not jQuery) or a ID string.\");\n return false;\n }\n\n // confirm the CSS prefix is valid. It has to start with a-Z and contain nothing but a-Z0-9_-\n if (!(/[a-zA-Z][a-zA-Z0-9_-]*$/.test(cssPrefix))) {\n console.error(\"d3pie error: invalid options.misc.cssPrefix\");\n return false;\n }\n\n // confirm some data has been supplied\n if (!helpers.isArray(options.data.content)) {\n console.error(\"d3pie error: invalid config structure: missing data.content property.\");\n return false;\n }\n if (options.data.content.length === 0) {\n console.error(\"d3pie error: no data supplied.\");\n return false;\n }\n\n // clear out any invalid data. Each data row needs a valid positive number and a label\n var data = [];\n for (var i=0; i<options.data.content.length; i++) {\n if (typeof options.data.content[i].value !== \"number\" || isNaN(options.data.content[i].value)) {\n console.log(\"not valid: \", options.data.content[i]);\n continue;\n }\n if (options.data.content[i].value <= 0) {\n console.log(\"not valid - should have positive value: \", options.data.content[i]);\n continue;\n }\n data.push(options.data.content[i]);\n }\n pie.options.data.content = data;\n\n // labels.outer.hideWhenLessThanPercentage - 1-100\n // labels.inner.hideWhenLessThanPercentage - 1-100\n\n return true;\n }\n};\n\n //// --------- helpers.js -----------\nvar helpers = {\n\n // creates the SVG element\n addSVGSpace: function(pie) {\n var element = pie.element;\n var canvasWidth = pie.options.size.canvasWidth;\n var canvasHeight = pie.options.size.canvasHeight;\n var backgroundColor = pie.options.misc.colors.background;\n\n var svg = d3.select(element).append(\"svg:svg\")\n .attr(\"width\", canvasWidth)\n .attr(\"height\", canvasHeight);\n\n if (backgroundColor !== \"transparent\") {\n svg.style(\"background-color\", function() { return backgroundColor; });\n }\n\n return svg;\n },\n\n shuffleArray: function(array) {\n var currentIndex = array.length, tmpVal, randomIndex;\n\n while (0 !== currentIndex) {\n randomIndex = Math.floor(Math.random() * currentIndex);\n currentIndex -= 1;\n\n // and swap it with the current element\n tmpVal = array[currentIndex];\n array[currentIndex] = array[randomIndex];\n array[randomIndex] = tmpVal;\n }\n return array;\n },\n\n processObj: function(obj, is, value) {\n if (typeof is === 'string') {\n return helpers.processObj(obj, is.split('.'), value);\n } else if (is.length === 1 && value !== undefined) {\n obj[is[0]] = value;\n return obj[is[0]];\n } else if (is.length === 0) {\n return obj;\n } else {\n return helpers.processObj(obj[is[0]], is.slice(1), value);\n }\n },\n\n getDimensions: function(el) {\n if(typeof el === 'string')\n el = document.getElementById(el);\n\n var w = 0, h = 0;\n if (el) {\n var dimensions = el.getBBox();\n w = dimensions.width;\n h = dimensions.height;\n }\n else {\n console.log(\"error: getDimensions() \" + id + \" not found.\");\n }\n\n return { w: w, h: h };\n },\n\n /**\n * This is based on the SVG coordinate system, where top-left is 0,0 and bottom right is n-n.\n * @param r1\n * @param r2\n * @returns {boolean}\n */\n rectIntersect: function(r1, r2) {\n var returnVal = (\n // r2.left > r1.right\n (r2.x > (r1.x + r1.w)) ||\n\n // r2.right < r1.left\n ((r2.x + r2.w) < r1.x) ||\n\n // r2.top < r1.bottom\n ((r2.y + r2.h) < r1.y) ||\n\n // r2.bottom > r1.top\n (r2.y > (r1.y + r1.h))\n );\n\n return !returnVal;\n },\n\n /**\n * Returns a lighter/darker shade of a hex value, based on a luminance value passed.\n * @param hex a hex color value such as “#abc” or “#123456″ (the hash is optional)\n * @param lum the luminosity factor: -0.1 is 10% darker, 0.2 is 20% lighter, etc.\n * @returns {string}\n */\n getColorShade: function(hex, lum) {\n\n // validate hex string\n hex = String(hex).replace(/[^0-9a-f]/gi, '');\n if (hex.length < 6) {\n hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2];\n }\n lum = lum || 0;\n\n // convert to decimal and change luminosity\n var newHex = \"#\";\n for (var i=0; i<3; i++) {\n var c = parseInt(hex.substr(i * 2, 2), 16);\n c = Math.round(Math.min(Math.max(0, c + (c * lum)), 255)).toString(16);\n newHex += (\"00\" + c).substr(c.length);\n }\n\n return newHex;\n },\n\n /**\n * Users can choose to specify segment colors in three ways (in order of precedence):\n * \t1. include a \"color\" attribute for each row in data.content\n * \t2. include a misc.colors.segments property which contains an array of hex codes\n * \t3. specify nothing at all and rely on this lib provide some reasonable defaults\n *\n * This function sees what's included and populates this.options.colors with whatever's required\n * for this pie chart.\n * @param data\n */\n initSegmentColors: function(pie) {\n var data = pie.options.data.content;\n var colors = pie.options.misc.colors.segments;\n\n // TODO this needs a ton of error handling\n\n var finalColors = [];\n for (var i=0; i<data.length; i++) {\n if (data[i].hasOwnProperty(\"color\")) {\n finalColors.push(data[i].color);\n } else {\n finalColors.push(colors[i]);\n }\n }\n\n return finalColors;\n },\n\n applySmallSegmentGrouping: function(data, smallSegmentGrouping) {\n var totalSize;\n if (smallSegmentGrouping.valueType === \"percentage\") {\n totalSize = math.getTotalPieSize(data);\n }\n\n // loop through each data item\n var newData = [];\n var groupedData = [];\n var totalGroupedData = 0;\n for (var i=0; i<data.length; i++) {\n if (smallSegmentGrouping.valueType === \"percentage\") {\n var dataPercent = (data[i].value / totalSize) * 100;\n if (dataPercent <= smallSegmentGrouping.value) {\n groupedData.push(data[i]);\n totalGroupedData += data[i].value;\n continue;\n }\n data[i].isGrouped = false;\n newData.push(data[i]);\n } else {\n if (data[i].value <= smallSegmentGrouping.value) {\n groupedData.push(data[i]);\n totalGroupedData += data[i].value;\n continue;\n }\n data[i].isGrouped = false;\n newData.push(data[i]);\n }\n }\n\n // we're done! See if there's any small segment groups to add\n if (groupedData.length) {\n newData.push({\n color: smallSegmentGrouping.color,\n label: smallSegmentGrouping.label,\n value: totalGroupedData,\n isGrouped: true,\n groupedData: groupedData\n });\n }\n\n return newData;\n },\n\n // for debugging\n showPoint: function(svg, x, y) {\n svg.append(\"circle\").attr(\"cx\", x).attr(\"cy\", y).attr(\"r\", 2).style(\"fill\", \"black\");\n },\n\n isFunction: function(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n },\n\n isArray: function(o) {\n return Object.prototype.toString.call(o) === '[object Array]';\n }\n};\n\n\n// taken from jQuery\nvar extend = function() {\n var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {},\n i = 1,\n length = arguments.length,\n deep = false,\n toString = Object.prototype.toString,\n hasOwn = Object.prototype.hasOwnProperty,\n class2type = {\n \"[object Boolean]\": \"boolean\",\n \"[object Number]\": \"number\",\n \"[object String]\": \"string\",\n \"[object Function]\": \"function\",\n \"[object Array]\": \"array\",\n \"[object Date]\": \"date\",\n \"[object RegExp]\": \"regexp\",\n \"[object Object]\": \"object\"\n },\n\n jQuery = {\n isFunction: function (obj) {\n return jQuery.type(obj) === \"function\";\n },\n isArray: Array.isArray ||\n function (obj) {\n return jQuery.type(obj) === \"array\";\n },\n isWindow: function (obj) {\n return obj !== null && obj === obj.window;\n },\n isNumeric: function (obj) {\n return !isNaN(parseFloat(obj)) && isFinite(obj);\n },\n type: function (obj) {\n return obj === null ? String(obj) : class2type[toString.call(obj)] || \"object\";\n },\n isPlainObject: function (obj) {\n if (!obj || jQuery.type(obj) !== \"object\" || obj.nodeType) {\n return false;\n }\n try {\n if (obj.constructor && !hasOwn.call(obj, \"constructor\") && !hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\")) {\n return false;\n }\n } catch (e) {\n return false;\n }\n var key;\n for (key in obj) {}\n return key === undefined || hasOwn.call(obj, key);\n }\n };\n if (typeof target === \"boolean\") {\n deep = target;\n target = arguments[1] || {};\n i = 2;\n }\n if (typeof target !== \"object\" && !jQuery.isFunction(target)) {\n target = {};\n }\n if (length === i) {\n target = this;\n --i;\n }\n for (i; i < length; i++) {\n if ((options = arguments[i]) !== null) {\n for (name in options) {\n src = target[name];\n copy = options[name];\n if (target === copy) {\n continue;\n }\n if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)))) {\n if (copyIsArray) {\n copyIsArray = false;\n clone = src && jQuery.isArray(src) ? src : [];\n } else {\n clone = src && jQuery.isPlainObject(src) ? src : {};\n }\n // WARNING: RECURSION\n target[name] = extend(deep, clone, copy);\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n return target;\n};\n //// --------- math.js -----------\nvar math = {\n\n toRadians: function(degrees) {\n return degrees * (Math.PI / 180);\n },\n\n toDegrees: function(radians) {\n return radians * (180 / Math.PI);\n },\n\n computePieRadius: function(pie) {\n var size = pie.options.size;\n var canvasPadding = pie.options.misc.canvasPadding;\n\n // outer radius is either specified (e.g. through the generator), or omitted altogether\n // and calculated based on the canvas dimensions. Right now the estimated version isn't great - it should\n // be possible to calculate it to precisely generate the maximum sized pie, but it's fussy as heck. Something\n // for the next release.\n\n // first, calculate the default _outerRadius\n var w = size.canvasWidth - canvasPadding.left - canvasPadding.right;\n var h = size.canvasHeight - canvasPadding.top - canvasPadding.bottom;\n\n // now factor in the footer, title & subtitle\n if (pie.options.header.location !== \"pie-center\") {\n h -= pie.textComponents.headerHeight;\n }\n\n if (pie.textComponents.footer.exists) {\n h -= pie.textComponents.footer.h;\n }\n\n // for really teeny pies, h may be < 0. Adjust it back\n h = (h < 0) ? 0 : h;\n\n var outerRadius = ((w < h) ? w : h) / 3;\n var innerRadius, percent;\n\n // if the user specified something, use that instead\n if (size.pieOuterRadius !== null) {\n if (/%/.test(size.pieOuterRadius)) {\n percent = parseInt(size.pieOuterRadius.replace(/[\\D]/, \"\"), 10);\n percent = (percent > 99) ? 99 : percent;\n percent = (percent < 0) ? 0 : percent;\n\n var smallestDimension = (w < h) ? w : h;\n\n // now factor in the label line size\n if (pie.options.labels.outer.format !== \"none\") {\n var pieDistanceSpace = parseInt(pie.options.labels.outer.pieDistance, 10) * 2;\n if (smallestDimension - pieDistanceSpace > 0) {\n smallestDimension -= pieDistanceSpace;\n }\n }\n\n outerRadius = Math.floor((smallestDimension / 100) * percent) / 2;\n } else {\n outerRadius = parseInt(size.pieOuterRadius, 10);\n }\n }\n\n // inner radius\n if (/%/.test(size.pieInnerRadius)) {\n percent = parseInt(size.pieInnerRadius.replace(/[\\D]/, \"\"), 10);\n percent = (percent > 99) ? 99 : percent;\n percent = (percent < 0) ? 0 : percent;\n innerRadius = Math.floor((outerRadius / 100) * percent);\n } else {\n innerRadius = parseInt(size.pieInnerRadius, 10);\n }\n\n pie.innerRadius = innerRadius;\n pie.outerRadius = outerRadius;\n },\n\n getTotalPieSize: function(data) {\n var totalSize = 0;\n for (var i=0; i<data.length; i++) {\n totalSize += data[i].value;\n }\n return totalSize;\n },\n\n sortPieData: function(pie) {\n var data = pie.options.data.content;\n var sortOrder = pie.options.data.sortOrder;\n\n switch (sortOrder) {\n case \"none\":\n // do nothing\n break;\n case \"random\":\n data = helpers.shuffleArray(data);\n break;\n case \"value-asc\":\n data.sort(function(a, b) { return (a.value < b.value) ? -1 : 1; });\n break;\n case \"value-desc\":\n data.sort(function(a, b) { return (a.value < b.value) ? 1 : -1; });\n break;\n case \"label-asc\":\n data.sort(function(a, b) { return (a.label.toLowerCase() > b.label.toLowerCase()) ? 1 : -1; });\n break;\n case \"label-desc\":\n data.sort(function(a, b) { return (a.label.toLowerCase() < b.label.toLowerCase()) ? 1 : -1; });\n break;\n }\n\n return data;\n },\n\n // var pieCenter = math.getPieCenter();\n getPieTranslateCenter: function(pieCenter) {\n return \"translate(\" + pieCenter.x + \",\" + pieCenter.y + \")\";\n },\n\n /**\n * Used to determine where on the canvas the center of the pie chart should be. It takes into account the\n * height and position of the title, subtitle and footer, and the various paddings.\n * @private\n */\n calculatePieCenter: function(pie) {\n var pieCenterOffset = pie.options.misc.pieCenterOffset;\n var hasTopTitle = (pie.textComponents.title.exists && pie.options.header.location !== \"pie-center\");\n var hasTopSubtitle = (pie.textComponents.subtitle.exists && pie.options.header.location !== \"pie-center\");\n\n var headerOffset = pie.options.misc.canvasPadding.top;\n if (hasTopTitle && hasTopSubtitle) {\n headerOffset += pie.textComponents.title.h + pie.options.header.titleSubtitlePadding + pie.textComponents.subtitle.h;\n } else if (hasTopTitle) {\n headerOffset += pie.textComponents.title.h;\n } else if (hasTopSubtitle) {\n headerOffset += pie.textComponents.subtitle.h;\n }\n\n var footerOffset = 0;\n if (pie.textComponents.footer.exists) {\n footerOffset = pie.textComponents.footer.h + pie.options.misc.canvasPadding.bottom;\n }\n\n var x = ((pie.options.size.canvasWidth - pie.options.misc.canvasPadding.left - pie.options.misc.canvasPadding.right) / 2) + pie.options.misc.canvasPadding.left;\n var y = ((pie.options.size.canvasHeight - footerOffset - headerOffset) / 2) + headerOffset;\n\n x += pieCenterOffset.x;\n y += pieCenterOffset.y;\n\n pie.pieCenter = { x: x, y: y };\n },\n\n\n /**\n * Rotates a point (x, y) around an axis (xm, ym) by degrees (a).\n * @param x\n * @param y\n * @param xm\n * @param ym\n * @param a angle in degrees\n * @returns {Array}\n */\n rotate: function(x, y, xm, ym, a) {\n\n a = a * Math.PI / 180; // convert to radians\n\n var cos = Math.cos,\n sin = Math.sin,\n // subtract midpoints, so that midpoint is translated to origin and add it in the end again\n xr = (x - xm) * cos(a) - (y - ym) * sin(a) + xm,\n yr = (x - xm) * sin(a) + (y - ym) * cos(a) + ym;\n\n return { x: xr, y: yr };\n },\n\n /**\n * Translates a point x, y by distance d, and by angle a.\n * @param x\n * @param y\n * @param dist\n * @param a angle in degrees\n */\n translate: function(x, y, d, a) {\n var rads = math.toRadians(a);\n return {\n x: x + d * Math.sin(rads),\n y: y - d * Math.cos(rads)\n };\n },\n\n // from: http://stackoverflow.com/questions/19792552/d3-put-arc-labels-in-a-pie-chart-if-there-is-enough-space\n pointIsInArc: function(pt, ptData, d3Arc) {\n // Center of the arc is assumed to be 0,0\n // (pt.x, pt.y) are assumed to be relative to the center\n var r1 = d3Arc.innerRadius()(ptData), // Note: Using the innerRadius\n r2 = d3Arc.outerRadius()(ptData),\n theta1 = d3Arc.startAngle()(ptData),\n theta2 = d3Arc.endAngle()(ptData);\n\n var dist = pt.x * pt.x + pt.y * pt.y,\n angle = Math.atan2(pt.x, -pt.y); // Note: different coordinate system\n\n angle = (angle < 0) ? (angle + Math.PI * 2) : angle;\n\n return (r1 * r1 <= dist) && (dist <= r2 * r2) &&\n (theta1 <= angle) && (angle <= theta2);\n }\n};\n\n //// --------- labels.js -----------\nvar labels = {\n\n /**\n * Adds the labels to the pie chart, but doesn't position them. There are two locations for the\n * labels: inside (center) of the segments, or outside the segments on the edge.\n * @param section \"inner\" or \"outer\"\n * @param sectionDisplayType \"percentage\", \"value\", \"label\", \"label-value1\", etc.\n * @param pie\n */\n add: function(pie, section, sectionDisplayType) {\n var include = labels.getIncludes(sectionDisplayType);\n var settings = pie.options.labels;\n\n // group the label groups (label, percentage, value) into a single element for simpler positioning\n var outerLabel = pie.svg.insert(\"g\", \".\" + pie.cssPrefix + \"labels-\" + section)\n .attr(\"class\", pie.cssPrefix + \"labels-\" + section);\n\n var labelGroup = pie.__labels[section] = outerLabel.selectAll(\".\" + pie.cssPrefix + \"labelGroup-\" + section)\n .data(pie.options.data.content)\n .enter()\n .append(\"g\")\n .attr(\"id\", function(d, i) { return pie.cssPrefix + \"labelGroup\" + i + \"-\" + section; })\n .attr(\"data-index\", function(d, i) { return i; })\n .attr(\"class\", pie.cssPrefix + \"labelGroup-\" + section)\n .style(\"opacity\", 0);\n\n var formatterContext = { section: section, sectionDisplayType: sectionDisplayType };\n\n // 1. Add the main label\n if (include.mainLabel) {\n labelGroup.append(\"text\")\n .attr(\"id\", function(d, i) { return pie.cssPrefix + \"segmentMainLabel\" + i + \"-\" + section; })\n .attr(\"class\", pie.cssPrefix + \"segmentMainLabel-\" + section)\n .text(function(d, i) {\n var str = d.label;\n\n // if a custom formatter has been defined, pass it the raw label string - it can do whatever it wants with it.\n // we only apply truncation if it's not defined\n if (settings.formatter) {\n formatterContext.index = i;\n formatterContext.part = 'mainLabel';\n formatterContext.value = d.value;\n formatterContext.label = str;\n str = settings.formatter(formatterContext);\n } else if (settings.truncation.enabled && d.label.length > settings.truncation.truncateLength) {\n str = d.label.substring(0, settings.truncation.truncateLength) + \"...\";\n }\n return str;\n })\n .style(\"font-size\", settings.mainLabel.fontSize + \"px\")\n .style(\"font-family\", settings.mainLabel.font)\n .style(\"font-weight\", settings.mainLabel.fontWeight)\n .style(\"fill\", function(d, i) {\n return (settings.mainLabel.color === \"segment\") ? pie.options.colors[i] : settings.mainLabel.color;\n });\n }\n\n // 2. Add the percentage label\n if (include.percentage) {\n labelGroup.append(\"text\")\n .attr(\"id\", function(d, i) { return pie.cssPrefix + \"segmentPercentage\" + i + \"-\" + section; })\n .attr(\"class\", pie.cssPrefix + \"segmentPercentage-\" + section)\n .text(function(d, i) {\n var percentage = d.percentage;\n if (settings.formatter) {\n formatterContext.index = i;\n formatterContext.part = \"percentage\";\n formatterContext.value = d.value;\n formatterContext.label = d.percentage;\n percentage = settings.formatter(formatterContext);\n } else {\n percentage += \"%\";\n }\n return percentage;\n })\n .style(\"font-size\", settings.percentage.fontSize + \"px\")\n .style(\"font-family\", settings.percentage.font)\n .style(\"font-weight\", settings.percentage.fontWeight)\n .style(\"fill\", settings.percentage.color);\n }\n\n // 3. Add the value label\n if (include.value) {\n labelGroup.append(\"text\")\n .attr(\"id\", function(d, i) { return pie.cssPrefix + \"segmentValue\" + i + \"-\" + section; })\n .attr(\"class\", pie.cssPrefix + \"segmentValue-\" + section)\n .text(function(d, i) {\n formatterContext.index = i;\n formatterContext.part = \"value\";\n formatterContext.value = d.value;\n formatterContext.label = d.value;\n return settings.formatter ? settings.formatter(formatterContext, d.value) : d.value;\n })\n .style(\"font-size\", settings.value.fontSize + \"px\")\n .style(\"font-family\", settings.value.font)\n .style(\"font-weight\", settings.value.fontWeight)\n .style(\"fill\", settings.value.color);\n }\n },\n\n /**\n * @param section \"inner\" / \"outer\"\n */\n positionLabelElements: function(pie, section, sectionDisplayType) {\n labels[\"dimensions-\" + section] = [];\n\n // get the latest widths, heights\n var labelGroups = pie.__labels[section];\n labelGroups.each(function(d, i) {\n var mainLabel = d3.select(this).selectAll(\".\" + pie.cssPrefix + \"segmentMainLabel-\" + section);\n var percentage = d3.select(this).selectAll(\".\" + pie.cssPrefix + \"segmentPercentage-\" + section);\n var value = d3.select(this).selectAll(\".\" + pie.cssPrefix + \"segmentValue-\" + section);\n\n labels[\"dimensions-\" + section].push({\n mainLabel: (mainLabel.node() !== null) ? mainLabel.node().getBBox() : null,\n percentage: (percentage.node() !== null) ? percentage.node().getBBox() : null,\n value: (value.node() !== null) ? value.node().getBBox() : null\n });\n });\n\n var singleLinePad = 5;\n var dims = labels[\"dimensions-\" + section];\n switch (sectionDisplayType) {\n case \"label-value1\":\n pie.svg.selectAll(\".\" + pie.cssPrefix + \"segmentValue-\" + section)\n .attr(\"dx\", function(d, i) { return dims[i].mainLabel.width + singleLinePad; });\n break;\n case \"label-value2\":\n pie.svg.selectAll(\".\" + pie.cssPrefix + \"segmentValue-\" + section)\n .attr(\"dy\", function(d, i) { return dims[i].mainLabel.height; });\n break;\n case \"label-percentage1\":\n pie.svg.selectAll(\".\" + pie.cssPrefix + \"segmentPercentage-\" + section)\n .attr(\"dx\", function(d, i) { return dims[i].mainLabel.width + singleLinePad; });\n break;\n case \"label-percentage2\":\n pie.svg.selectAll(\".\" + pie.cssPrefix + \"segmentPercentage-\" + section)\n .attr(\"dx\", function(d, i) { return (dims[i].mainLabel.width / 2) - (dims[i].percentage.width / 2); })\n .attr(\"dy\", function(d, i) { return dims[i].mainLabel.height; });\n break;\n }\n },\n\n computeLabelLinePositions: function(pie) {\n pie.lineCoordGroups = [];\n pie.__labels.outer\n .each(function(d, i) { return labels.computeLinePosition(pie, i); });\n },\n\n computeLinePosition: function(pie, i) {\n var angle = segments.getSegmentAngle(i, pie.options.data.content, pie.totalSize, { midpoint: true });\n var originCoords = math.rotate(pie.pieCenter.x, pie.pieCenter.y - pie.outerRadius, pie.pieCenter.x, pie.pieCenter.y, angle);\n var heightOffset = pie.outerLabelGroupData[i].h / 5; // TODO check\n var labelXMargin = 6; // the x-distance of the label from the end of the line [TODO configurable]\n\n var quarter = Math.floor(angle / 90);\n var midPoint = 4;\n var x2, y2, x3, y3;\n\n // this resolves an issue when the\n if (quarter === 2 && angle === 180) {\n quarter = 1;\n }\n\n switch (quarter) {\n case 0:\n x2 = pie.outerLabelGroupData[i].x - labelXMargin - ((pie.outerLabelGroupData[i].x - labelXMargin - originCoords.x) / 2);\n y2 = pie.outerLabelGroupData[i].y + ((originCoords.y - pie.outerLabelGroupData[i].y) / midPoint);\n x3 = pie.outerLabelGroupData[i].x - labelXMargin;\n y3 = pie.outerLabelGroupData[i].y - heightOffset;\n break;\n case 1:\n x2 = originCoords.x + (pie.outerLabelGroupData[i].x - originCoords.x) / midPoint;\n y2 = originCoords.y + (pie.outerLabelGroupData[i].y - originCoords.y) / midPoint;\n x3 = pie.outerLabelGroupData[i].x - labelXMargin;\n y3 = pie.outerLabelGroupData[i].y - heightOffset;\n break;\n case 2:\n var startOfLabelX = pie.outerLabelGroupData[i].x + pie.outerLabelGroupData[i].w + labelXMargin;\n x2 = originCoords.x - (originCoords.x - startOfLabelX) / midPoint;\n y2 = originCoords.y + (pie.outerLabelGroupData[i].y - originCoords.y) / midPoint;\n x3 = pie.outerLabelGroupData[i].x + pie.outerLabelGroupData[i].w + labelXMargin;\n y3 = pie.outerLabelGroupData[i].y - heightOffset;\n break;\n case 3:\n var startOfLabel = pie.outerLabelGroupData[i].x + pie.outerLabelGroupData[i].w + labelXMargin;\n x2 = startOfLabel + ((originCoords.x - startOfLabel) / midPoint);\n y2 = pie.outerLabelGroupData[i].y + (originCoords.y - pie.outerLabelGroupData[i].y) / midPoint;\n x3 = pie.outerLabelGroupData[i].x + pie.outerLabelGroupData[i].w + labelXMargin;\n y3 = pie.outerLabelGroupData[i].y - heightOffset;\n break;\n }\n\n /*\n * x1 / y1: the x/y coords of the start of the line, at the mid point of the segments arc on the pie circumference\n * x2 / y2: if \"curved\" line style is being used, this is the midpoint of the line. Other\n * x3 / y3: the end of the line; closest point to the label\n */\n if (pie.options.labels.lines.style === \"straight\") {\n pie.lineCoordGroups[i] = [\n { x: originCoords.x, y: originCoords.y },\n { x: x3, y: y3 }\n ];\n } else {\n pie.lineCoordGroups[i] = [\n { x: originCoords.x, y: originCoords.y },\n { x: x2, y: y2 },\n { x: x3, y: y3 }\n ];\n }\n },\n\n addLabelLines: function(pie) {\n var lineGroups = pie.svg.insert(\"g\", \".\" + pie.cssPrefix + \"pieChart\") // meaning, BEFORE .pieChart\n .attr(\"class\", pie.cssPrefix + \"lineGroups\")\n .style(\"opacity\", 1);\n\n var lineGroup = lineGroups.selectAll(\".\" + pie.cssPrefix + \"lineGroup\")\n .data(pie.lineCoordGroups)\n .enter()\n .append(\"g\")\n .attr(\"class\", pie.cssPrefix + \"lineGroup\");\n\n var lineFunction = d3.line()\n .curve(d3.curveBasis)\n .x(function(d) { return d.x; })\n .y(function(d) { return d.y; });\n\n lineGroup.append(\"path\")\n .attr(\"d\", lineFunction)\n .attr(\"stroke\", function(d, i) {\n return (pie.options.labels.lines.color === \"segment\") ? pie.options.colors[i] : pie.options.labels.lines.color;\n })\n .attr(\"stroke-width\", 1)\n .attr(\"fill\", \"none\")\n .style(\"opacity\", function(d, i) {\n var percentage = pie.options.labels.outer.hideWhenLessThanPercentage;\n var isHidden = (percentage !== null && d.percentage < percentage) || pie.options.data.content[i].label === \"\";\n return isHidden ? 0 : 1;\n });\n },\n\n positionLabelGroups: function(pie, section) {\n if (pie.options.labels[section].format === \"none\")\n return;\n\n pie.__labels[section]\n .style(\"opacity\", function(d, i) {\n var percentage = pie.options.labels[section].hideWhenLessThanPercentage;\n return (percentage !== null && d.percentage < percentage) ? 0 : 1;\n })\n .attr(\"transform\", function(d, i) {\n var x, y;\n if (section === \"outer\") {\n x = pie.outerLabelGroupData[i].x;\n y = pie.outerLabelGroupData[i].y;\n } else {\n var pieCenterCopy = extend(true, {}, pie.pieCenter);\n\n // now recompute the \"center\" based on the current _innerRadius\n if (pie.innerRadius > 0) {\n var angle = segments.getSegmentAngle(i, pie.options.data.content, pie.totalSize, { midpoint: true });\n var newCoords = math.translate(pie.pieCenter.x, pie.pieCenter.y, pie.innerRadius, angle);\n pieCenterCopy.x = newCoords.x;\n pieCenterCopy.y = newCoords.y;\n }\n\n var dims = helpers.getDimensions(pie.cssPrefix + \"labelGroup\" + i + \"-inner\");\n var xOffset = dims.w / 2;\n var yOffset = dims.h / 4; // confusing! Why 4? should be 2, but it doesn't look right\n\n x = pieCenterCopy.x + (pie.lineCoordGroups[i][0].x - pieCenterCopy.x) / 1.8;\n y = pieCenterCopy.y + (pie.lineCoordGroups[i][0].y - pieCenterCopy.y) / 1.8;\n\n x = x - xOffset;\n y = y + yOffset;\n }\n\n return \"translate(\" + x + \",\" + y + \")\";\n });\n },\n\n\n getIncludes: function(val) {\n var addMainLabel = false;\n var addValue = false;\n var addPercentage = false;\n\n switch (val) {\n case \"label\":\n addMainLabel = true;\n break;\n case \"value\":\n addValue = true;\n break;\n case \"percentage\":\n addPercentage = true;\n break;\n case \"label-value1\":\n case \"label-value2\":\n addMainLabel = true;\n addValue = true;\n break;\n case \"label-percentage1\":\n case \"label-percentage2\":\n addMainLabel = true;\n addPercentage = true;\n break;\n }\n return {\n mainLabel: addMainLabel,\n value: addValue,\n percentage: addPercentage\n };\n },\n\n\n /**\n * This does the heavy-lifting to compute the actual coordinates for the outer label groups. It does two things:\n * 1. Make a first pass and position them in the ideal positions, based on the pie sizes\n * 2. Do some basic collision avoidance.\n */\n computeOuterLabelCoords: function(pie) {\n\n // 1. figure out the ideal positions for the outer labels\n pie.__labels.outer\n .each(function(d, i) {\n return labels.getIdealOuterLabelPositions(pie, i);\n });\n\n // 2. now adjust those positions to try to accommodate conflicts\n labels.resolveOuterLabelCollisions(pie);\n },\n\n /**\n * This attempts to resolve label positioning collisions.\n */\n resolveOuterLabelCollisions: function(pie) {\n if (pie.options.labels.outer.format === \"none\") {\n return;\n }\n\n var size = pie.options.data.content.length;\n labels.checkConflict(pie, 0, \"clockwise\", size);\n labels.checkConflict(pie, size-1, \"anticlockwise\", size);\n },\n\n checkConflict: function(pie, currIndex, direction, size) {\n var i, curr;\n\n if (size <= 1) {\n return;\n }\n\n var currIndexHemisphere = pie.outerLabelGroupData[currIndex].hs;\n if (direction === \"clockwise\" && currIndexHemisphere !== \"right\") {\n return;\n }\n if (direction === \"anticlockwise\" && currIndexHemisphere !== \"left\") {\n return;\n }\n var nextIndex = (direction === \"clockwise\") ? currIndex+1 : currIndex-1;\n\n // this is the current label group being looked at. We KNOW it's positioned properly (the first item\n // is always correct)\n var currLabelGroup = pie.outerLabelGroupData[currIndex];\n\n // this one we don't know about. That's the one we're going to look at and move if necessary\n var examinedLabelGroup = pie.outerLabelGroupData[nextIndex];\n\n var info = {\n labelHeights: pie.outerLabelGroupData[0].h,\n center: pie.pieCenter,\n lineLength: (pie.outerRadius + pie.options.labels.outer.pieDistance),\n heightChange: pie.outerLabelGroupData[0].h + 1 // 1 = padding\n };\n\n // loop through *ALL* label groups examined so far to check for conflicts. This is because when they're\n // very tightly fitted, a later label group may still appear high up on the page\n if (direction === \"clockwise\") {\n i = 0;\n for (; i<=currIndex; i++) {\n curr = pie.outerLabelGroupData[i];\n\n // if there's a conflict with this label group, shift the label to be AFTER the last known\n // one that's been properly placed\n if (!labels.isLabelHidden(pie, i) && helpers.rectIntersect(curr, examinedLabelGroup)) {\n labels.adjustLabelPos(pie, nextIndex, currLabelGroup, info);\n break;\n }\n }\n } else {\n i = size - 1;\n for (; i >= currIndex; i--) {\n curr = pie.outerLabelGroupData[i];\n\n // if there's a conflict with this label group, shift the label to be AFTER the last known\n // one that's been properly placed\n if (!labels.isLabelHidden(pie, i) && helpers.rectIntersect(curr, examinedLabelGroup)) {\n labels.adjustLabelPos(pie, nextIndex, currLabelGroup, info);\n break;\n }\n }\n }\n labels.checkConflict(pie, nextIndex, direction, size);\n },\n\n isLabelHidden: function(pie, index) {\n var percentage = pie.options.labels.outer.hideWhenLessThanPercentage;\n return (percentage !== null && d.percentage < percentage) || pie.options.data.content[index].label === \"\";\n },\n\n // does a little math to shift a label into a new position based on the last properly placed one\n adjustLabelPos: function(pie, nextIndex, lastCorrectlyPositionedLabel, info) {\n var xDiff, yDiff, newXPos, newYPos;\n newYPos = lastCorrectlyPositionedLabel.y + info.heightChange;\n yDiff = info.center.y - newYPos;\n\n if (Math.abs(info.lineLength) > Math.abs(yDiff)) {\n xDiff = Math.sqrt((info.lineLength * info.lineLength) - (yDiff * yDiff));\n } else {\n xDiff = Math.sqrt((yDiff * yDiff) - (info.lineLength * info.lineLength));\n }\n\n if (lastCorrectlyPositionedLabel.hs === \"right\") {\n newXPos = info.center.x + xDiff;\n } else {\n newXPos = info.center.x - xDiff - pie.outerLabelGroupData[nextIndex].w;\n }\n\n pie.outerLabelGroupData[nextIndex].x = newXPos;\n pie.outerLabelGroupData[nextIndex].y = newYPos;\n },\n\n /**\n * @param i 0-N where N is the dataset size - 1.\n */\n getIdealOuterLabelPositions: function(pie, i) {\n var labelGroupNode = pie.svg.select(\"#\" + pie.cssPrefix + \"labelGroup\" + i + \"-outer\").node();\n if (!labelGroupNode) return;\n\n var labelGroupDims = labelGroupNode.getBBox();\n var angle = segments.getSegmentAngle(i, pie.options.data.content, pie.totalSize, { midpoint: true });\n\n var originalX = pie.pieCenter.x;\n var originalY = pie.pieCenter.y - (pie.outerRadius + pie.options.labels.outer.pieDistance);\n var newCoords = math.rotate(originalX, originalY, pie.pieCenter.x, pie.pieCenter.y, angle);\n\n // if the label is on the left half of the pie, adjust the values\n var hemisphere = \"right\"; // hemisphere\n if (angle > 180) {\n newCoords.x -= (labelGroupDims.width + 8);\n hemisphere = \"left\";\n } else {\n newCoords.x += 8;\n }\n\n pie.outerLabelGroupData[i] = {\n x: newCoords.x,\n y: newCoords.y,\n w: labelGroupDims.width,\n h: labelGroupDims.height,\n hs: hemisphere\n };\n }\n};\n\n //// --------- segments.js -----------\nvar segments = {\n\n effectMap: {\n \"none\": d3.easeLinear,\n \"bounce\": d3.easeBounce,\n \"linear\": d3.easeLinear,\n \"sin\": d3.easeSin,\n \"elastic\": d3.easeElastic,\n \"back\": d3.easeBack,\n \"quad\": d3.easeQuad,\n \"circle\": d3.easeCircle,\n \"exp\": d3.easeExp\n },\n\n /**\n * Creates the pie chart segments and displays them according to the desired load effect.\n * @private\n */\n create: function(pie) {\n var pieCenter = pie.pieCenter;\n var colors = pie.options.colors;\n var loadEffects = pie.options.effects.load;\n var segmentStroke = pie.options.misc.colors.segmentStroke;\n\n // we insert the pie chart BEFORE the title, to ensure the title overlaps the pie\n var pieChartElement = pie.svg.insert(\"g\", \"#\" + pie.cssPrefix + \"title\")\n .attr(\"transform\", function() { return math.getPieTranslateCenter(pieCenter); })\n .attr(\"class\", pie.cssPrefix + \"pieChart\");\n\n var arc = d3.arc()\n .innerRadius(pie.innerRadius)\n .outerRadius(pie.outerRadius)\n .startAngle(0)\n .endAngle(function(d) {\n return (d.value / pie.totalSize) * 2 * Math.PI;\n });\n\n var g = pieChartElement.selectAll(\".\" + pie.cssPrefix + \"arc\")\n .data(pie.options.data.content)\n .enter()\n .append(\"g\")\n .attr(\"class\", pie.cssPrefix + \"arc\");\n\n // if we're not fading in the pie, just set the load speed to 0\n //var loadSpeed = loadEffects.speed;\n //if (loadEffects.effect === \"none\") {\n //\tloadSpeed = 0;\n //}\n\n g.append(\"path\")\n .attr(\"id\", function(d, i) { return pie.cssPrefix + \"segment\" + i; })\n .attr(\"fill\", function(d, i) {\n var color = colors[i];\n if (pie.options.misc.gradient.enabled) {\n color = \"url(#\" + pie.cssPrefix + \"grad\" + i + \")\";\n }\n return color;\n })\n .style(\"stroke\", segmentStroke)\n .style(\"stroke-width\", 1)\n //.transition()\n //.ease(d3.easeCubicInOut)\n //.duration(loadSpeed)\n .attr(\"data-index\", function(d, i) { return i; })\n .attr(\"d\", arc);\n/*\n .attrTween(\"d\", function(b) {\n var i = d3.interpolate({ value: 0 }, b);\n return function(t) {\n var ret = pie.arc(i(t));\n console.log(ret);\n return ret;\n };\n });\n*/\n pie.svg.selectAll(\"g.\" + pie.cssPrefix + \"arc\")\n .attr(\"transform\",\n function(d, i) {\n var angle = 0;\n if (i > 0) {\n angle = segments.getSegmentAngle(i-1, pie.options.data.content, pie.totalSize);\n }\n return \"rotate(\" + angle + \")\";\n }\n );\n pie.arc = arc;\n },\n\n addGradients: function(pie) {\n var grads = pie.svg.append(\"defs\")\n .selectAll(\"radialGradient\")\n .data(pie.options.data.content)\n .enter().append(\"radialGradient\")\n .attr(\"gradientUnits\", \"userSpaceOnUse\")\n .attr(\"cx\", 0)\n .attr(\"cy\", 0)\n .attr(\"r\", \"120%\")\n .attr(\"id\", function(d, i) { return pie.cssPrefix + \"grad\" + i; });\n\n grads.append(\"stop\").attr(\"offset\", \"0%\").style(\"stop-color\", function(d, i) { return pie.options.colors[i]; });\n grads.append(\"stop\").attr(\"offset\", pie.options.misc.gradient.percentage + \"%\").style(\"stop-color\", pie.options.misc.gradient.color);\n },\n\n addSegmentEventHandlers: function(pie) {\n var arc = pie.svg.selectAll(\".\" + pie.cssPrefix + \"arc\");\n arc = arc.merge(pie.__labels.inner.merge(pie.__labels.outer));\n\n arc.on(\"click\", function() {\n var currentEl = d3.select(this);\n var segment;\n\n // mouseover works on both the segments AND the segment labels, hence the following\n if (currentEl.attr(\"class\") === pie.cssPrefix + \"arc\") {\n segment = currentEl.select(\"path\");\n } else {\n var index = currentEl.attr(\"data-index\");\n segment = d3.select(\"#\" + pie.cssPrefix + \"segment\" + index);\n }\n\n var isExpanded = segment.attr(\"class\") === pie.cssPrefix + \"expanded\";\n segments.onSegmentEvent(pie, pie.options.callbacks.onClickSegment, segment, isExpanded);\n if (pie.options.effects.pullOutSegmentOnClick.effect !== \"none\") {\n if (isExpanded) {\n segments.closeSegment(pie, segment.node());\n } else {\n segments.openSegment(pie, segment.node());\n }\n }\n });\n\n arc.on(\"mouseover\", function() {\n var currentEl = d3.select(this);\n var segment, index;\n\n if (currentEl.attr(\"class\") === pie.cssPrefix + \"arc\") {\n segment = currentEl.select(\"path\");\n } else {\n index = currentEl.attr(\"data-index\");\n segment = d3.select(\"#\" + pie.cssPrefix + \"segment\" + index);\n }\n\n if (pie.options.effects.highlightSegmentOnMouseover) {\n index = segment.attr(\"data-index\");\n var segColor = pie.options.colors[index];\n segment.style(\"fill\", helpers.getColorShade(segColor, pie.options.effects.highlightLuminosity));\n }\n\n if (pie.options.tooltips.enabled) {\n index = segment.attr(\"data-index\");\n tt.showTooltip(pie, index);\n }\n\n var isExpanded = segment.attr(\"class\") === pie.cssPrefix + \"expanded\";\n segments.onSegmentEvent(pie, pie.options.callbacks.onMouseoverSegment, segment, isExpanded);\n });\n\n arc.on(\"mousemove\", function() {\n tt.moveTooltip(pie);\n });\n\n arc.on(\"mouseout\", function() {\n var currentEl = d3.select(this);\n var segment, index;\n\n if (currentEl.attr(\"class\") === pie.cssPrefix + \"arc\") {\n segment = currentEl.select(\"path\");\n } else {\n index = currentEl.attr(\"data-index\");\n segment = d3.select(\"#\" + pie.cssPrefix + \"segment\" + index);\n }\n\n if (pie.options.effects.highlightSegmentOnMouseover) {\n index = segment.attr(\"data-index\");\n var color = pie.options.colors[index];\n if (pie.options.misc.gradient.enabled) {\n color = \"url(#\" + pie.cssPrefix + \"grad\" + index + \")\";\n }\n segment.style(\"fill\", color);\n }\n\n if (pie.options.tooltips.enabled) {\n index = segment.attr(\"data-index\");\n tt.hideTooltip(pie, index);\n }\n\n var isExpanded = segment.attr(\"class\") === pie.cssPrefix + \"expanded\";\n segments.onSegmentEvent(pie, pie.options.callbacks.onMouseoutSegment, segment, isExpanded);\n });\n },\n\n // helper function used to call the click, mouseover, mouseout segment callback functions\n onSegmentEvent: function(pie, func, segment, isExpanded) {\n if (!helpers.isFunction(func)) {\n return;\n }\n var index = parseInt(segment.attr(\"data-index\"), 10);\n func({\n segment: segment.node(),\n index: index,\n expanded: isExpanded,\n data: pie.options.data.content[index]\n });\n },\n\n openSegment: function(pie, segment) {\n if (pie.isOpeningSegment) {\n return;\n }\n pie.isOpeningSegment = true;\n\n segments.maybeCloseOpenSegment(pie);\n\n d3.select(segment)\n .transition()\n .ease(segments.effectMap[pie.options.effects.pullOutSegmentOnClick.effect])\n .duration(pie.options.effects.pullOutSegmentOnClick.speed)\n .attr(\"transform\", function(d, i) {\n var c = pie.arc.centroid(d),\n x = c[0],\n y = c[1],\n h = Math.sqrt(x*x + y*y),\n pullOutSize = parseInt(pie.options.effects.pullOutSegmentOnClick.size, 10);\n\n return \"translate(\" + ((x/h) * pullOutSize) + ',' + ((y/h) * pullOutSize) + \")\";\n })\n .on(\"end\", function(d, i) {\n pie.currentlyOpenSegment = segment;\n pie.isOpeningSegment = false;\n d3.select(segment).attr(\"class\", pie.cssPrefix + \"expanded\");\n });\n },\n\n maybeCloseOpenSegment: function(pie) {\n if (typeof pie !== 'undefined' && pie.svg.selectAll(\".\" + pie.cssPrefix + \"expanded\").size() > 0) {\n segments.closeSegment(pie, pie.svg.select(\".\" + pie.cssPrefix + \"expanded\").node());\n }\n },\n\n closeSegment: function(pie, segment) {\n d3.select(segment)\n .transition()\n .duration(400)\n .attr(\"transform\", \"translate(0,0)\")\n .on(\"end\", function(d, i) {\n d3.select(segment).attr(\"class\", \"\");\n pie.currentlyOpenSegment = null;\n });\n },\n\n getCentroid: function(el) {\n var bbox = el.getBBox();\n return {\n x: bbox.x + bbox.width / 2,\n y: bbox.y + bbox.height / 2\n };\n },\n\n /**\n * General helper function to return a segment's angle, in various different ways.\n * @param index\n * @param opts optional object for fine-tuning exactly what you want.\n */\n getSegmentAngle: function(index, data, totalSize, opts) {\n var options = extend({\n // if true, this returns the full angle from the origin. Otherwise it returns the single segment angle\n compounded: true,\n\n // optionally returns the midpoint of the angle instead of the full angle\n midpoint: false\n }, opts);\n\n var currValue = data[index].value;\n var fullValue;\n if (options.compounded) {\n fullValue = 0;\n\n // get all values up to and including the specified index\n for (var i=0; i<=index; i++) {\n fullValue += data[i].value;\n }\n }\n\n if (typeof fullValue === 'undefined') {\n fullValue = currValue;\n }\n\n // now convert the full value to an angle\n var angle = (fullValue / totalSize) * 360;\n\n // lastly, if we want the midpoint, factor that sucker in\n if (options.midpoint) {\n var currAngle = (currValue / totalSize) * 360;\n angle -= (currAngle / 2);\n }\n\n return angle;\n }\n\n};\n\n //// --------- text.js -----------\nvar text = {\n offscreenCoord: -10000,\n\n addTitle: function(pie) {\n pie.__title = pie.svg.selectAll(\".\" + pie.cssPrefix + \"title\")\n .data([pie.options.header.title])\n .enter()\n .append(\"text\")\n .text(function(d) { return d.text; })\n .attr(\"id\", pie.cssPrefix + \"title\")\n .attr(\"class\", pie.cssPrefix + \"title\")\n .attr(\"x\", text.offscreenCoord)\n .attr(\"y\", text.offscreenCoord)\n .attr(\"text-anchor\", function() {\n var location;\n if (pie.options.header.location === \"top-center\" || pie.options.header.location === \"pie-center\") {\n location = \"middle\";\n } else {\n location = \"left\";\n }\n return location;\n })\n .attr(\"fill\", function(d) { return d.color; })\n .style(\"font-size\", function(d) { return d.fontSize + \"px\"; })\n .style(\"font-weight\", function(d) { return d.fontWeight; })\n .style(\"font-family\", function(d) { return d.font; });\n },\n\n positionTitle: function(pie) {\n var textComponents = pie.textComponents;\n var headerLocation = pie.options.header.location;\n var canvasPadding = pie.options.misc.canvasPadding;\n var canvasWidth = pie.options.size.canvasWidth;\n var titleSubtitlePadding = pie.options.header.titleSubtitlePadding;\n\n var x;\n if (headerLocation === \"top-left\") {\n x = canvasPadding.left;\n } else {\n x = ((canvasWidth - canvasPadding.right) / 2) + canvasPadding.left;\n }\n\n // add whatever offset has been added by user\n x += pie.options.misc.pieCenterOffset.x;\n\n var y = canvasPadding.top + textComponents.title.h;\n\n if (headerLocation === \"pie-center\") {\n y = pie.pieCenter.y;\n\n // still not fully correct\n if (textComponents.subtitle.exists) {\n var totalTitleHeight = textComponents.title.h + titleSubtitlePadding + textComponents.subtitle.h;\n y = y - (totalTitleHeight / 2) + textComponents.title.h;\n } else {\n y += (textComponents.title.h / 4);\n }\n }\n\n pie.__title\n .attr(\"x\", x)\n .attr(\"y\", y);\n },\n\n addSubtitle: function(pie) {\n var headerLocation = pie.options.header.location;\n\n pie.__subtitle = pie.svg.selectAll(\".\" + pie.cssPrefix + \"subtitle\")\n .data([pie.options.header.subtitle])\n .enter()\n .append(\"text\")\n .text(function(d) { return d.text; })\n .attr(\"x\", text.offscreenCoord)\n .attr(\"y\", text.offscreenCoord)\n .attr(\"id\", pie.cssPrefix + \"subtitle\")\n .attr(\"class\", pie.cssPrefix + \"subtitle\")\n .attr(\"text-anchor\", function() {\n var location;\n if (headerLocation === \"top-center\" || headerLocation === \"pie-center\") {\n location = \"middle\";\n } else {\n location = \"left\";\n }\n return location;\n })\n .attr(\"fill\", function(d) { return d.color; })\n .style(\"font-size\", function(d) { return d.fontSize + \"px\"; })\n .style(\"font-weight\", function(d) { return d.fontWeight; })\n .style(\"font-family\", function(d) { return d.font; });\n },\n\n positionSubtitle: function(pie) {\n var canvasPadding = pie.options.misc.canvasPadding;\n var canvasWidth = pie.options.size.canvasWidth;\n\n var x;\n if (pie.options.header.location === \"top-left\") {\n x = canvasPadding.left;\n } else {\n x = ((canvasWidth - canvasPadding.right) / 2) + canvasPadding.left;\n }\n\n // add whatever offset has been added by user\n x += pie.options.misc.pieCenterOffset.x;\n\n var y = text.getHeaderHeight(pie);\n\n pie.__subtitle\n .attr(\"x\", x)\n .attr(\"y\", y);\n },\n\n addFooter: function(pie) {\n pie.__footer = pie.svg.selectAll(\".\" + pie.cssPrefix + \"footer\")\n .data([pie.options.footer])\n .enter()\n .append(\"text\")\n .text(function(d) { return d.text; })\n .attr(\"x\", text.offscreenCoord)\n .attr(\"y\", text.offscreenCoord)\n .attr(\"id\", pie.cssPrefix + \"footer\")\n .attr(\"class\", pie.cssPrefix + \"footer\")\n .attr(\"text-anchor\", function() {\n var location = \"left\";\n if (pie.options.footer.location === \"bottom-center\") {\n location = \"middle\";\n } else if (pie.options.footer.location === \"bottom-right\") {\n location = \"left\"; // on purpose. We have to change the x-coord to make it properly right-aligned\n }\n return location;\n })\n .attr(\"fill\", function(d) { return d.color; })\n .style(\"font-size\", function(d) { return d.fontSize + \"px\"; })\n .style(\"font-weight\", function(d) { return d.fontWeight; })\n .style(\"font-family\", function(d) { return d.font; });\n },\n\n positionFooter: function(pie) {\n var footerLocation = pie.options.footer.location;\n var footerWidth = pie.textComponents.footer.w;\n var canvasWidth = pie.options.size.canvasWidth;\n var canvasHeight = pie.options.size.canvasHeight;\n var canvasPadding = pie.options.misc.canvasPadding;\n\n var x;\n if (footerLocation === \"bottom-left\") {\n x = canvasPadding.left;\n } else if (footerLocation === \"bottom-right\") {\n x = canvasWidth - footerWidth - canvasPadding.right;\n } else {\n x = canvasWidth / 2; // TODO - shouldn't this also take into account padding?\n }\n\n pie.__footer\n .attr(\"x\", x)\n .attr(\"y\", canvasHeight - canvasPadding.bottom);\n },\n\n getHeaderHeight: function(pie) {\n var h;\n if (pie.textComponents.title.exists) {\n\n // if the subtitle isn't defined, it'll be set to 0\n var totalTitleHeight = pie.textComponents.title.h + pie.options.header.titleSubtitlePadding + pie.textComponents.subtitle.h;\n if (pie.options.header.location === \"pie-center\") {\n h = pie.pieCenter.y - (totalTitleHeight / 2) + totalTitleHeight;\n } else {\n h = totalTitleHeight + pie.options.misc.canvasPadding.top;\n }\n } else {\n if (pie.options.header.location === \"pie-center\") {\n var footerPlusPadding = pie.options.misc.canvasPadding.bottom + pie.textComponents.footer.h;\n h = ((pie.options.size.canvasHeight - footerPlusPadding) / 2) + pie.options.misc.canvasPadding.top + (pie.textComponents.subtitle.h / 2);\n } else {\n h = pie.options.misc.canvasPadding.top + pie.textComponents.subtitle.h;\n }\n }\n return h;\n }\n};\n\n //// --------- validate.js -----------\nvar tt = {\n addTooltips: function(pie) {\n\n // group the label groups (label, percentage, value) into a single element for simpler positioning\n var tooltips = pie.svg.insert(\"g\")\n .attr(\"class\", pie.cssPrefix + \"tooltips\");\n\n tooltips.selectAll(\".\" + pie.cssPrefix + \"tooltip\")\n .data(pie.options.data.content)\n .enter()\n .append(\"g\")\n .attr(\"class\", pie.cssPrefix + \"tooltip\")\n .attr(\"id\", function(d, i) { return pie.cssPrefix + \"tooltip\" + i; })\n .style(\"opacity\", 0)\n .append(\"rect\")\n .attr(\"rx\", pie.options.tooltips.styles.borderRadius)\n .attr(\"ry\", pie.options.tooltips.styles.borderRadius)\n .attr(\"x\", -pie.options.tooltips.styles.padding)\n .attr(\"opacity\", pie.options.tooltips.styles.backgroundOpacity)\n .style(\"fill\", pie.options.tooltips.styles.backgroundColor);\n\n tooltips.selectAll(\".\" + pie.cssPrefix + \"tooltip\")\n .data(pie.options.data.content)\n .append(\"text\")\n .attr(\"fill\", function(d) { return pie.options.tooltips.styles.color; })\n .style(\"font-size\", function(d) { return pie.options.tooltips.styles.fontSize; })\n .style(\"font-weight\", function(d) { return pie.options.tooltips.styles.fontWeight; })\n .style(\"font-family\", function(d) { return pie.options.tooltips.styles.font; })\n .text(function(d, i) {\n var caption = pie.options.tooltips.string;\n if (pie.options.tooltips.type === \"caption\") {\n caption = d.caption;\n }\n return tt.replacePlaceholders(pie, caption, i, {\n label: d.label,\n value: d.value,\n percentage: d.percentage\n });\n });\n\n tooltips.selectAll(\".\" + pie.cssPrefix + \"tooltip rect\")\n .attr(\"width\", function (d, i) {\n var dims = helpers.getDimensions(pie.cssPrefix + \"tooltip\" + i);\n return dims.w + (2 * pie.options.tooltips.styles.padding);\n })\n .attr(\"height\", function (d, i) {\n var dims = helpers.getDimensions(pie.cssPrefix + \"tooltip\" + i);\n return dims.h + (2 * pie.options.tooltips.styles.padding);\n })\n .attr(\"y\", function (d, i) {\n var dims = helpers.getDimensions(pie.cssPrefix + \"tooltip\" + i);\n return -(dims.h / 2) + 1;\n });\n },\n\n showTooltip: function(pie, index) {\n var fadeInSpeed = pie.options.tooltips.styles.fadeInSpeed;\n if (tt.currentTooltip === index) {\n fadeInSpeed = 1;\n }\n\n tt.currentTooltip = index;\n d3.select(\"#\" + pie.cssPrefix + \"tooltip\" + index)\n .transition()\n .duration(fadeInSpeed)\n .style(\"opacity\", function() { return 1; });\n\n tt.moveTooltip(pie);\n },\n\n moveTooltip: function(pie) {\n d3.selectAll(\"#\" + pie.cssPrefix + \"tooltip\" + tt.currentTooltip)\n .attr(\"transform\", function(d) {\n var mouseCoords = d3.mouse(this.parentNode);\n var x = mouseCoords[0] + pie.options.tooltips.styles.padding + 2;\n var y = mouseCoords[1] - (2 * pie.options.tooltips.styles.padding) - 2;\n return \"translate(\" + x + \",\" + y + \")\";\n });\n },\n\n hideTooltip: function(pie, index) {\n d3.select(\"#\" + pie.cssPrefix + \"tooltip\" + index)\n .style(\"opacity\", function() { return 0; });\n\n // move the tooltip offscreen. This ensures that when the user next mouseovers the segment the hidden\n // element won't interfere\n d3.select(\"#\" + pie.cssPrefix + \"tooltip\" + tt.currentTooltip)\n .attr(\"transform\", function(d, i) {\n // klutzy, but it accounts for tooltip padding which could push it onscreen\n var x = pie.options.size.canvasWidth + 1000;\n var y = pie.options.size.canvasHeight + 1000;\n return \"translate(\" + x + \",\" + y + \")\";\n });\n },\n\n replacePlaceholders: function(pie, str, index, replacements) {\n\n // if the user has defined a placeholderParser function, call it before doing the replacements\n if (helpers.isFunction(pie.options.tooltips.placeholderParser)) {\n pie.options.tooltips.placeholderParser(index, replacements);\n }\n\n var replacer = function() {\n return function(match) {\n var placeholder = arguments[1];\n if (replacements.hasOwnProperty(placeholder)) {\n return replacements[arguments[1]];\n } else {\n return arguments[0];\n }\n };\n };\n return str.replace(/\\{(\\w+)\\}/g, replacer(replacements));\n }\n};\n\n\n // --------------------------------------------------------------------------------------------\n\n // our constructor\n var d3pie = function(element, options) {\n\n // element can be an ID or DOM element\n this.element = element;\n if (typeof element === \"string\") {\n var el = element.replace(/^#/, \"\"); // replace any jQuery-like ID hash char\n this.element = document.getElementById(el);\n }\n\n var opts = {};\n extend(true, opts, defaultSettings, options);\n this.options = opts;\n\n // if the user specified a custom CSS element prefix (ID, class), use it\n if (this.options.misc.cssPrefix !== null) {\n this.cssPrefix = this.options.misc.cssPrefix;\n } else {\n this.cssPrefix = \"p\" + _uniqueIDCounter + \"_\";\n _uniqueIDCounter++;\n }\n\n\n // now run some validation on the user-defined info\n if (!validate.initialCheck(this)) {\n return;\n }\n\n // add a data-role to the DOM node to let anyone know that it contains a d3pie instance, and the d3pie version\n d3.select(this.element).attr(_scriptName, _version);\n\n // things that are done once\n _setupData.call(this);\n _init.call(this);\n };\n\n d3pie.prototype.recreate = function() {\n // now run some validation on the user-defined info\n if (!validate.initialCheck(this)) {\n return;\n }\n\n _setupData.call(this);\n _init.call(this);\n };\n\n d3pie.prototype.redraw = function() {\n this.element.innerHTML = \"\";\n _init.call(this);\n };\n\n d3pie.prototype.destroy = function() {\n this.element.innerHTML = \"\"; // clear out the SVG\n d3.select(this.element).attr(_scriptName, null); // remove the data attr\n };\n\n /**\n * Returns all pertinent info about the current open info. Returns null if nothing's open, or if one is, an object of\n * the following form:\n * \t{\n * \t element: DOM NODE,\n * \t index: N,\n * \t data: {}\n * \t}\n */\n d3pie.prototype.getOpenSegment = function() {\n var segment = this.currentlyOpenSegment;\n if (segment !== null && typeof segment !== \"undefined\") {\n var index = parseInt(d3.select(segment).attr(\"data-index\"), 10);\n return {\n element: segment,\n index: index,\n data: this.options.data.content[index]\n };\n } else {\n return null;\n }\n };\n\n d3pie.prototype.openSegment = function(index) {\n index = parseInt(index, 10);\n if (index < 0 || index > this.options.data.content.length-1) {\n return;\n }\n segments.openSegment(this, d3.select(\"#\" + this.cssPrefix + \"segment\" + index).node());\n };\n\n d3pie.prototype.closeSegment = function() {\n segments.maybeCloseOpenSegment(this);\n };\n\n // this let's the user dynamically update aspects of the pie chart without causing a complete redraw. It\n // intelligently re-renders only the part of the pie that the user specifies. Some things cause a repaint, others\n // just redraw the single element\n d3pie.prototype.updateProp = function(propKey, value) {\n switch (propKey) {\n case \"header.title.text\":\n var oldVal = helpers.processObj(this.options, propKey);\n helpers.processObj(this.options, propKey, value);\n d3.select(\"#\" + this.cssPrefix + \"title\").html(value);\n if ((oldVal === \"\" && value !== \"\") || (oldVal !== \"\" && value === \"\")) {\n this.redraw();\n }\n break;\n\n case \"header.subtitle.text\":\n var oldValue = helpers.processObj(this.options, propKey);\n helpers.processObj(this.options, propKey, value);\n d3.select(\"#\" + this.cssPrefix + \"subtitle\").html(value);\n if ((oldValue === \"\" && value !== \"\") || (oldValue !== \"\" && value === \"\")) {\n this.redraw();\n }\n break;\n\n case \"callbacks.onload\":\n case \"callbacks.onMouseoverSegment\":\n case \"callbacks.onMouseoutSegment\":\n case \"callbacks.onClickSegment\":\n case \"effects.pullOutSegmentOnClick.effect\":\n case \"effects.pullOutSegmentOnClick.speed\":\n case \"effects.pullOutSegmentOnClick.size\":\n case \"effects.highlightSegmentOnMouseover\":\n case \"effects.highlightLuminosity\":\n helpers.processObj(this.options, propKey, value);\n break;\n\n // everything else, attempt to update it & do a repaint\n default:\n helpers.processObj(this.options, propKey, value);\n\n this.destroy();\n this.recreate();\n break;\n }\n };\n\n\n // ------------------------------------------------------------------------------------------------\n\n var _setupData = function () {\n this.options.data.content = math.sortPieData(this);\n if (this.options.data.smallSegmentGrouping.enabled) {\n this.options.data.content = helpers.applySmallSegmentGrouping(this.options.data.content, this.options.data.smallSegmentGrouping);\n }\n\n\n this.options.colors = helpers.initSegmentColors(this);\n this.totalSize = math.getTotalPieSize(this.options.data.content);\n\n var dp = this.options.labels.percentage.decimalPlaces;\n\n // add in percentage data to content\n for (var i=0; i<this.options.data.content.length; i++) {\n this.options.data.content[i].percentage = _getPercentage(this.options.data.content[i].value, this.totalSize, dp);\n }\n\n // adjust the final item to ensure the percentage always adds up to precisely 100%. This is necessary\n var totalPercentage = 0;\n for (var j=0; j<this.options.data.content.length; j++) {\n if (j === this.options.data.content.length - 1) {\n this.options.data.content[j].percentage = (100 - totalPercentage).toFixed(dp);\n }\n totalPercentage += parseFloat(this.options.data.content[j].percentage);\n }\n };\n\n var _init = function() {\n\n // prep-work\n this.svg = helpers.addSVGSpace(this);\n\n // store info about the main text components as part of the d3pie object instance\n this.textComponents = {\n headerHeight: 0,\n title: {\n exists: this.options.header.title.text !== \"\",\n h: 0,\n w: 0\n },\n subtitle: {\n exists: this.options.header.subtitle.text !== \"\",\n h: 0,\n w: 0\n },\n footer: {\n exists: this.options.footer.text !== \"\",\n h: 0,\n w: 0\n }\n };\n\n this.outerLabelGroupData = [];\n\n // add the key text components offscreen (title, subtitle, footer). We need to know their widths/heights for later computation\n if (this.textComponents.title.exists) text.addTitle(this);\n if (this.textComponents.subtitle.exists) text.addSubtitle(this);\n text.addFooter(this);\n\n // console.log(this);\n\n // the footer never moves. Put it in place now\n var self = this;\n text.positionFooter(self);\n var d3 = helpers.getDimensions(self.__footer.node());\n self.textComponents.footer.h = d3.h;\n self.textComponents.footer.w = d3.w;\n\n if (self.textComponents.title.exists) {\n var d1 = helpers.getDimensions(self.__title.node());\n self.textComponents.title.h = d1.h;\n self.textComponents.title.w = d1.w;\n }\n\n if (self.textComponents.subtitle.exists) {\n var d2 = helpers.getDimensions(self.__subtitle.node());\n self.textComponents.subtitle.h = d2.h;\n self.textComponents.subtitle.w = d2.w;\n }\n\n // now compute the full header height\n if (self.textComponents.title.exists || self.textComponents.subtitle.exists) {\n var headerHeight = 0;\n if (self.textComponents.title.exists) {\n headerHeight += self.textComponents.title.h;\n if (self.textComponents.subtitle.exists) {\n headerHeight += self.options.header.titleSubtitlePadding;\n }\n }\n if (self.textComponents.subtitle.exists) {\n headerHeight += self.textComponents.subtitle.h;\n }\n self.textComponents.headerHeight = headerHeight;\n }\n\n // at this point, all main text component dimensions have been calculated\n math.computePieRadius(self);\n\n // this value is used all over the place for placing things and calculating locations. We figure it out ONCE\n // and store it as part of the object\n math.calculatePieCenter(self);\n\n // position the title and subtitle\n text.positionTitle(self);\n text.positionSubtitle(self);\n\n // now create the pie chart segments, and gradients if the user desired\n if (self.options.misc.gradient.enabled) {\n segments.addGradients(self);\n }\n segments.create(self); // also creates this.arc\n\n self.__labels = {};\n labels.add(self, \"inner\", self.options.labels.inner.format);\n labels.add(self, \"outer\", self.options.labels.outer.format);\n\n // position the label elements relatively within their individual group (label, percentage, value)\n labels.positionLabelElements(self, \"inner\", self.options.labels.inner.format);\n labels.positionLabelElements(self, \"outer\", self.options.labels.outer.format);\n labels.computeOuterLabelCoords(self);\n\n // this is (and should be) dumb. It just places the outer groups at their calculated, collision-free positions\n labels.positionLabelGroups(self, \"outer\");\n\n // we use the label line positions for many other calculations, so ALWAYS compute them\n labels.computeLabelLinePositions(self);\n\n // only add them if they're actually enabled\n if (self.options.labels.lines.enabled && self.options.labels.outer.format !== \"none\") {\n labels.addLabelLines(self);\n }\n\n labels.positionLabelGroups(self, \"inner\");\n\n if (helpers.isFunction(self.options.callbacks.onload)) {\n try {\n self.options.callbacks.onload();\n } catch (e) { }\n }\n\n // add and position the tooltips\n if (self.options.tooltips.enabled) {\n tt.addTooltips(self);\n }\n\n segments.addSegmentEventHandlers(self);\n };\n\n var _getPercentage = function(value, total, decimalPlaces) {\n var relativeAmount = value / total;\n if (decimalPlaces <= 0) {\n return Math.round(relativeAmount * 100);\n } else {\n return (relativeAmount * 100).toFixed(decimalPlaces);\n }\n };\n\n return d3pie;\n}));\n","import { prop } from \"ramda\"\nimport { createSelector } from \"reselect\"\n\nimport { AppStateT } from \"store/app-state\"\nimport { selectChartMetadataFromChartsCall } from \"domains/global/selectors\"\n\nimport { ChartState } from \"./chart-types\"\nimport { initialSingleState } from \"./reducer\"\nimport { storeKey } from \"./constants\"\n\nexport const selectChartsState = (state: AppStateT) => state[storeKey]\nexport const selectSingleChartState = createSelector(\n selectChartsState,\n (_: unknown, { id }: { chartId?: string, id: string }) => id,\n (chartsState, id) => chartsState[id] || initialSingleState,\n)\n\nexport const selectChartData = createSelector(\n selectSingleChartState,\n (chartState) => chartState.chartData,\n)\n\nconst selectChartMetadataFromExplicitCall = createSelector(\n selectSingleChartState, prop(\"chartMetadata\"),\n)\n// dashboard.js normally fetches metadata for every individual charts, but we can prevent it\n// if metadata for ALL charts will be present in state.global (from single call)\nconst selectChartMetadata = createSelector(\n selectChartMetadataFromChartsCall,\n selectChartMetadataFromExplicitCall,\n (metadataFromAll, metadataFromSingleCall) => metadataFromAll || metadataFromSingleCall,\n)\nconst selectIsFetchingDetails = createSelector(selectSingleChartState, prop(\"isFetchingDetails\"))\n\nexport const makeSelectChartMetadataRequest = () => createSelector(\n selectChartMetadata,\n selectIsFetchingDetails,\n (chartMetadata, isFetchingDetails) => ({ chartMetadata, isFetchingDetails }),\n)\n\nexport const selectChartViewRange = createSelector(\n selectSingleChartState,\n (chartState) => chartState.viewRange,\n)\n\nexport const selectChartIsFetchingData = createSelector(\n selectSingleChartState,\n (chartState) => chartState.isFetchingData,\n)\n\nexport const selectChartFetchDataParams = createSelector(\n selectSingleChartState,\n (chartState) => chartState.fetchDataParams,\n)\n\nexport const selectResizeHeight = createSelector(\n selectSingleChartState,\n (chartState) => chartState.resizeHeight,\n)\n\nexport const selectChartPanAndZoom = createSelector(selectSingleChartState, prop(\"chartPanAndZoom\"))\n\n// count the nr of \"success\" or \"failure\" charts\nconst hasCompletedFetching = (chartState: ChartState) => chartState.isFetchDataFailure\n || Boolean(chartState.chartData) || chartState.isFetchDetailsFailure\n\nexport const selectAmountOfFetchedCharts = createSelector(\n selectChartsState,\n (chartsState) => Object.values(chartsState)\n .reduce((acc, chartState) => acc + (hasCompletedFetching(chartState) ? 1 : 0), 0),\n)\n\nexport const selectAmountOfCharts = createSelector(\n selectChartsState,\n (chartsState) => Object.keys(chartsState).length,\n)\n\nexport const selectNameOfAnyFetchingChart = createSelector(\n selectChartsState,\n (chartsState) => Object.values(chartsState)\n .find((chartState) => chartState.isFetchingData)?.chartId,\n)\n\nexport const selectAmountOfSnapshotsFetched = createSelector(\n selectChartsState,\n (chartsState) => Object.values(chartsState)\n .reduce((acc, chartState) => acc + (chartState.snapshotData ? 1 : 0), 0),\n)\n\nexport const selectAmountOfSnapshotsFailed = createSelector(\n selectChartsState,\n (chartsState) => Object.values(chartsState)\n .reduce((acc, chartState) => acc + (chartState.snapshotDataIsError ? 1 : 0), 0),\n)\n","import { createAction } from \"redux-act\"\nimport { ChartsMetadata } from \"domains/global/types\"\n\nimport { storeKey } from \"./constants\"\n\nexport interface startSnapshotModeAction {\n charts: ChartsMetadata\n dataPoints: number\n}\nexport const startSnapshotModeAction = createAction<startSnapshotModeAction>(\n `${storeKey}/isSnapshotModeAction`,\n)\n\nexport const stopSnapshotModeAction = createAction(`${storeKey}/stopSnapshotModeAction`)\n\nexport interface ShowSignInModalAction { signInLinkHref: string }\nexport const showSignInModalAction = createAction<ShowSignInModalAction>(\n `${storeKey}/showSignInModal`,\n)\n\nexport const explicitlySignInAction = createAction(`${storeKey}/explicitlySignIn`)\n\nexport interface IsSignedInAction { isSignedIn: boolean }\nexport const isSignedInAction = createAction<IsSignedInAction>(`${storeKey}/isSignedInAction`)\n\nexport interface SetOfflineAction { offline: boolean }\nexport const setOfflineAction = createAction<SetOfflineAction>(`${storeKey}/setOfflineAction`)\n","export const storeKey = \"chart\"\n\nexport const fallbackUpdateTimeInterval = 2000\n\n// corresponds to force_update_at in old dashboard\n// throttle time between use globalPanAndZoom change actions - and requests sent to server\nexport const panAndZoomDelay = 300\n","export const seconds4human = (\n totalSeconds: number | string, overrideOptions?: {[key: string]: string},\n) => {\n const defaultOptions: {[key: string]: string} = {\n now: \"now\",\n space: \" \",\n negative_suffix: \"ago\",\n day: \"day\",\n days: \"days\",\n hour: \"hour\",\n hours: \"hours\",\n minute: \"min\",\n minutes: \"mins\",\n second: \"sec\",\n seconds: \"secs\",\n and: \"and\",\n }\n\n const options = typeof overrideOptions === \"object\"\n ? { ...defaultOptions, ...overrideOptions }\n : defaultOptions\n\n let seconds = typeof totalSeconds === \"string\"\n ? parseInt(totalSeconds, 10)\n : totalSeconds\n\n if (seconds === 0) {\n return options.now\n }\n\n let suffix = \"\"\n if (seconds < 0) {\n seconds = -seconds\n if (options.negative_suffix !== \"\") {\n suffix = options.space + options.negative_suffix\n }\n }\n\n const days = Math.floor(seconds / 86400)\n seconds -= (days * 86400)\n\n const hours = Math.floor(seconds / 3600)\n seconds -= (hours * 3600)\n\n const minutes = Math.floor(seconds / 60)\n seconds -= (minutes * 60)\n\n const strings = []\n\n if (days > 1) {\n strings.push(days.toString() + options.space + options.days)\n } else if (days === 1) {\n strings.push(days.toString() + options.space + options.day)\n }\n\n if (hours > 1) {\n strings.push(hours.toString() + options.space + options.hours)\n } else if (hours === 1) {\n strings.push(hours.toString() + options.space + options.hour)\n }\n\n if (minutes > 1) {\n strings.push(minutes.toString() + options.space + options.minutes)\n } else if (minutes === 1) {\n strings.push(minutes.toString() + options.space + options.minute)\n }\n\n if (seconds > 1) {\n strings.push(Math.floor(seconds).toString() + options.space + options.seconds)\n } else if (seconds === 1) {\n strings.push(Math.floor(seconds).toString() + options.space + options.second)\n }\n\n if (strings.length === 1) {\n return strings.pop() + suffix\n }\n\n const last = strings.pop()\n return `${strings.join(\", \")} ${options.and} ${last}${suffix}`\n}\n","/*! @license Copyright 2017 Dan Vanderkam (danvdk@gmail.com) MIT-licensed (http://opensource.org/licenses/MIT) */\n// SPDX-License-Identifier: MIT\n!function(t){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=t();else if(\"function\"==typeof define&&define.amd)define([],t);else{var e;e=\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this,e.Dygraph=t()}}(function(){return function t(e,a,i){function n(o,s){if(!a[o]){if(!e[o]){var l=\"function\"==typeof require&&require;if(!s&&l)return l(o,!0);if(r)return r(o,!0);var h=new Error(\"Cannot find module '\"+o+\"'\");throw h.code=\"MODULE_NOT_FOUND\",h}var u=a[o]={exports:{}};e[o][0].call(u.exports,function(t){var a=e[o][1][t];return n(a||t)},u,u.exports,t,e,a,i)}return a[o].exports}for(var r=\"function\"==typeof require&&require,o=0;o<i.length;o++)n(i[o]);return n}({1:[function(t,e,a){function i(){throw new Error(\"setTimeout has not been defined\")}function n(){throw new Error(\"clearTimeout has not been defined\")}function r(t){if(d===setTimeout)return setTimeout(t,0);if((d===i||!d)&&setTimeout)return d=setTimeout,setTimeout(t,0);try{return d(t,0)}catch(e){try{return d.call(null,t,0)}catch(e){return d.call(this,t,0)}}}function o(t){if(c===clearTimeout)return clearTimeout(t);if((c===n||!c)&&clearTimeout)return c=clearTimeout,clearTimeout(t);try{return c(t)}catch(e){try{return c.call(null,t)}catch(e){return c.call(this,t)}}}function s(){v&&g&&(v=!1,g.length?f=g.concat(f):_=-1,f.length&&l())}function l(){if(!v){var t=r(s);v=!0;for(var e=f.length;e;){for(g=f,f=[];++_<e;)g&&g[_].run();_=-1,e=f.length}g=null,v=!1,o(t)}}function h(t,e){this.fun=t,this.array=e}function u(){}var d,c,p=e.exports={};!function(){try{d=\"function\"==typeof setTimeout?setTimeout:i}catch(t){d=i}try{c=\"function\"==typeof clearTimeout?clearTimeout:n}catch(t){c=n}}();var g,f=[],v=!1,_=-1;p.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var a=1;a<arguments.length;a++)e[a-1]=arguments[a];f.push(new h(t,e)),1!==f.length||v||r(l)},h.prototype.run=function(){this.fun.apply(null,this.array)},p.title=\"browser\",p.browser=!0,p.env={},p.argv=[],p.version=\"\",p.versions={},p.on=u,p.addListener=u,p.once=u,p.off=u,p.removeListener=u,p.removeAllListeners=u,p.emit=u,p.prependListener=u,p.prependOnceListener=u,p.listeners=function(t){return[]},p.binding=function(t){throw new Error(\"process.binding is not supported\")},p.cwd=function(){return\"/\"},p.chdir=function(t){throw new Error(\"process.chdir is not supported\")},p.umask=function(){return 0}},{}],2:[function(t,e,a){\"use strict\";Object.defineProperty(a,\"__esModule\",{value:!0});var i=t(\"./bars\"),n=function(t){return t&&t.__esModule?t:{default:t}}(i),r=function(){};r.prototype=new n.default,r.prototype.extractSeries=function(t,e,a){for(var i,n,r,o=[],s=a.get(\"logscale\"),l=0;l<t.length;l++)i=t[l][0],r=t[l][e],s&&null!==r&&(r[0]<=0||r[1]<=0||r[2]<=0)&&(r=null),null!==r?(n=r[1],null===n||isNaN(n)?o.push([i,n,[n,n]]):o.push([i,n,[r[0],r[2]]])):o.push([i,null,[null,null]]);return o},r.prototype.rollingAverage=function(t,e,a){e=Math.min(e,t.length);var i,n,r,o,s,l,h,u=[];for(n=0,o=0,r=0,s=0,l=0;l<t.length;l++){if(i=t[l][1],h=t[l][2],u[l]=t[l],null===i||isNaN(i)||(n+=h[0],o+=i,r+=h[1],s+=1),l-e>=0){var d=t[l-e];null===d[1]||isNaN(d[1])||(n-=d[2][0],o-=d[1],r-=d[2][1],s-=1)}u[l]=s?[t[l][0],1*o/s,[1*n/s,1*r/s]]:[t[l][0],null,[null,null]]}return u},a.default=r,e.exports=a.default},{\"./bars\":5}],3:[function(t,e,a){\"use strict\";Object.defineProperty(a,\"__esModule\",{value:!0});var i=t(\"./bars\"),n=function(t){return t&&t.__esModule?t:{default:t}}(i),r=function(){};r.prototype=new n.default,r.prototype.extractSeries=function(t,e,a){for(var i,n,r,o,s=[],l=a.get(\"sigma\"),h=a.get(\"logscale\"),u=0;u<t.length;u++)i=t[u][0],o=t[u][e],h&&null!==o&&(o[0]<=0||o[0]-l*o[1]<=0)&&(o=null),null!==o?(n=o[0],null===n||isNaN(n)?s.push([i,n,[n,n,n]]):(r=l*o[1],s.push([i,n,[n-r,n+r,o[1]]]))):s.push([i,null,[null,null,null]]);return s},r.prototype.rollingAverage=function(t,e,a){e=Math.min(e,t.length);var i,n,r,o,s,l,h,u,d,c=[],p=a.get(\"sigma\");for(i=0;i<t.length;i++){for(s=0,u=0,l=0,n=Math.max(0,i-e+1);n<i+1;n++)null===(r=t[n][1])||isNaN(r)||(l++,s+=r,u+=Math.pow(t[n][2][2],2));l?(h=Math.sqrt(u)/l,d=s/l,c[i]=[t[i][0],d,[d-p*h,d+p*h]]):(o=1==e?t[i][1]:null,c[i]=[t[i][0],o,[o,o]])}return c},a.default=r,e.exports=a.default},{\"./bars\":5}],4:[function(t,e,a){\"use strict\";Object.defineProperty(a,\"__esModule\",{value:!0});var i=t(\"./bars\"),n=function(t){return t&&t.__esModule?t:{default:t}}(i),r=function(){};r.prototype=new n.default,r.prototype.extractSeries=function(t,e,a){for(var i,n,r,o,s,l,h,u,d=[],c=a.get(\"sigma\"),p=a.get(\"logscale\"),g=0;g<t.length;g++)i=t[g][0],r=t[g][e],p&&null!==r&&(r[0]<=0||r[1]<=0)&&(r=null),null!==r?(o=r[0],s=r[1],null===o||isNaN(o)?d.push([i,o,[o,o,o,s]]):(l=s?o/s:0,h=s?c*Math.sqrt(l*(1-l)/s):1,u=100*h,n=100*l,d.push([i,n,[n-u,n+u,o,s]]))):d.push([i,null,[null,null,null,null]]);return d},r.prototype.rollingAverage=function(t,e,a){e=Math.min(e,t.length);var i,n,r,o,s=[],l=a.get(\"sigma\"),h=a.get(\"wilsonInterval\"),u=0,d=0;for(r=0;r<t.length;r++){u+=t[r][2][2],d+=t[r][2][3],r-e>=0&&(u-=t[r-e][2][2],d-=t[r-e][2][3]);var c=t[r][0],p=d?u/d:0;if(h)if(d){var g=p<0?0:p,f=d,v=l*Math.sqrt(g*(1-g)/f+l*l/(4*f*f)),_=1+l*l/d;i=(g+l*l/(2*d)-v)/_,n=(g+l*l/(2*d)+v)/_,s[r]=[c,100*g,[100*i,100*n]]}else s[r]=[c,0,[0,0]];else o=d?l*Math.sqrt(p*(1-p)/d):1,s[r]=[c,100*p,[100*(p-o),100*(p+o)]]}return s},a.default=r,e.exports=a.default},{\"./bars\":5}],5:[function(t,e,a){\"use strict\";function i(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(a,\"__esModule\",{value:!0});var n=t(\"./datahandler\"),r=i(n),o=t(\"../dygraph-layout\"),s=i(o),l=function(){r.default.call(this)};l.prototype=new r.default,l.prototype.extractSeries=function(t,e,a){},l.prototype.rollingAverage=function(t,e,a){},l.prototype.onPointsCreated_=function(t,e){for(var a=0;a<t.length;++a){var i=t[a],n=e[a];n.y_top=NaN,n.y_bottom=NaN,n.yval_minus=r.default.parseFloat(i[2][0]),n.yval_plus=r.default.parseFloat(i[2][1])}},l.prototype.getExtremeYValues=function(t,e,a){for(var i,n=null,r=null,o=t.length-1,s=0;s<=o;s++)if(null!==(i=t[s][1])&&!isNaN(i)){var l=t[s][2][0],h=t[s][2][1];l>i&&(l=i),h<i&&(h=i),(null===r||h>r)&&(r=h),(null===n||l<n)&&(n=l)}return[n,r]},l.prototype.onLineEvaluated=function(t,e,a){for(var i,n=0;n<t.length;n++)i=t[n],i.y_top=s.default.calcYNormal_(e,i.yval_minus,a),i.y_bottom=s.default.calcYNormal_(e,i.yval_plus,a)},a.default=l,e.exports=a.default},{\"../dygraph-layout\":13,\"./datahandler\":6}],6:[function(t,e,a){\"use strict\";Object.defineProperty(a,\"__esModule\",{value:!0});var i=function(){},n=i;n.X=0,n.Y=1,n.EXTRAS=2,n.prototype.extractSeries=function(t,e,a){},n.prototype.seriesToPoints=function(t,e,a){for(var i=[],r=0;r<t.length;++r){var o=t[r],s=o[1],l=null===s?null:n.parseFloat(s),h={x:NaN,y:NaN,xval:n.parseFloat(o[0]),yval:l,name:e,idx:r+a,canvasx:NaN,canvasy:NaN};i.push(h)}return this.onPointsCreated_(t,i),i},n.prototype.onPointsCreated_=function(t,e){},n.prototype.rollingAverage=function(t,e,a){},n.prototype.getExtremeYValues=function(t,e,a){},n.prototype.onLineEvaluated=function(t,e,a){},n.parseFloat=function(t){return null===t?NaN:t},a.default=i,e.exports=a.default},{}],7:[function(t,e,a){\"use strict\";function i(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(a,\"__esModule\",{value:!0});var n=t(\"./datahandler\"),r=(i(n),t(\"./default\")),o=i(r),s=function(){};s.prototype=new o.default,s.prototype.extractSeries=function(t,e,a){for(var i,n,r,o,s,l,h=[],u=a.get(\"logscale\"),d=0;d<t.length;d++)i=t[d][0],r=t[d][e],u&&null!==r&&(r[0]<=0||r[1]<=0)&&(r=null),null!==r?(o=r[0],s=r[1],null===o||isNaN(o)?h.push([i,o,[o,s]]):(l=s?o/s:0,n=100*l,h.push([i,n,[o,s]]))):h.push([i,null,[null,null]]);return h},s.prototype.rollingAverage=function(t,e,a){e=Math.min(e,t.length);var i,n=[],r=0,o=0;for(i=0;i<t.length;i++){r+=t[i][2][0],o+=t[i][2][1],i-e>=0&&(r-=t[i-e][2][0],o-=t[i-e][2][1]);var s=t[i][0],l=o?r/o:0;n[i]=[s,100*l]}return n},a.default=s,e.exports=a.default},{\"./datahandler\":6,\"./default\":8}],8:[function(t,e,a){\"use strict\";Object.defineProperty(a,\"__esModule\",{value:!0});var i=t(\"./datahandler\"),n=function(t){return t&&t.__esModule?t:{default:t}}(i),r=function(){};r.prototype=new n.default,r.prototype.extractSeries=function(t,e,a){for(var i=[],n=a.get(\"logscale\"),r=0;r<t.length;r++){var o=t[r][0],s=t[r][e];n&&s<=0&&(s=null),i.push([o,s])}return i},r.prototype.rollingAverage=function(t,e,a){e=Math.min(e,t.length);var i,n,r,o,s,l=[];if(1==e)return t;for(i=0;i<t.length;i++){for(o=0,s=0,n=Math.max(0,i-e+1);n<i+1;n++)null===(r=t[n][1])||isNaN(r)||(s++,o+=t[n][1]);l[i]=s?[t[i][0],o/s]:[t[i][0],null]}return l},r.prototype.getExtremeYValues=function(t,e,a){for(var i,n=null,r=null,o=t.length-1,s=0;s<=o;s++)null===(i=t[s][1])||isNaN(i)||((null===r||i>r)&&(r=i),(null===n||i<n)&&(n=i));return[n,r]},a.default=r,e.exports=a.default},{\"./datahandler\":6}],9:[function(t,e,a){\"use strict\";Object.defineProperty(a,\"__esModule\",{value:!0});var i=t(\"./dygraph-utils\"),n=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e.default=t,e}(i),r=t(\"./dygraph\"),o=function(t){return t&&t.__esModule?t:{default:t}}(r),s=function(t,e,a,i){if(this.dygraph_=t,this.layout=i,this.element=e,this.elementContext=a,this.height=t.height_,this.width=t.width_,!n.isCanvasSupported(this.element))throw\"Canvas is not supported.\";this.area=i.getPlotArea();var r=this.dygraph_.canvas_ctx_;r.beginPath(),r.rect(this.area.x,this.area.y,this.area.w,this.area.h),r.clip(),r=this.dygraph_.hidden_ctx_,r.beginPath(),r.rect(this.area.x,this.area.y,this.area.w,this.area.h),r.clip()};s.prototype.clear=function(){this.elementContext.clearRect(0,0,this.width,this.height)},s.prototype.render=function(){this._updatePoints(),this._renderLineChart()},s._getIteratorPredicate=function(t){return t?s._predicateThatSkipsEmptyPoints:null},s._predicateThatSkipsEmptyPoints=function(t,e){return null!==t[e].yval},s._drawStyledLine=function(t,e,a,i,r,o,l){var h=t.dygraph,u=h.getBooleanOption(\"stepPlot\",t.setName);n.isArrayLike(i)||(i=null);var d=h.getBooleanOption(\"drawGapEdgePoints\",t.setName),c=t.points,p=t.setName,g=n.createIterator(c,0,c.length,s._getIteratorPredicate(h.getBooleanOption(\"connectSeparatedPoints\",p))),f=i&&i.length>=2,v=t.drawingContext;v.save(),f&&v.setLineDash&&v.setLineDash(i);var _=s._drawSeries(t,g,a,l,r,d,u,e);s._drawPointsOnLine(t,_,o,e,l),f&&v.setLineDash&&v.setLineDash([]),v.restore()},s._drawSeries=function(t,e,a,i,n,r,o,s){var l,h,u=null,d=null,c=null,p=[],g=!0,f=t.drawingContext;f.beginPath(),f.strokeStyle=s,f.lineWidth=a;for(var v=e.array_,_=e.end_,y=e.predicate_,x=e.start_;x<_;x++){if(h=v[x],y){for(;x<_&&!y(v,x);)x++;if(x==_)break;h=v[x]}if(null===h.canvasy||h.canvasy!=h.canvasy)o&&null!==u&&(f.moveTo(u,d),f.lineTo(h.canvasx,d)),u=d=null;else{if(l=!1,r||null===u){e.nextIdx_=x,e.next(),c=e.hasNext?e.peek.canvasy:null;var m=null===c||c!=c;l=null===u&&m,r&&(!g&&null===u||e.hasNext&&m)&&(l=!0)}null!==u?a&&(o&&(f.moveTo(u,d),f.lineTo(h.canvasx,d)),f.lineTo(h.canvasx,h.canvasy)):f.moveTo(h.canvasx,h.canvasy),(n||l)&&p.push([h.canvasx,h.canvasy,h.idx]),u=h.canvasx,d=h.canvasy}g=!1}return f.stroke(),p},s._drawPointsOnLine=function(t,e,a,i,n){for(var r=t.drawingContext,o=0;o<e.length;o++){var s=e[o];r.save(),a.call(t.dygraph,t.dygraph,t.setName,r,s[0],s[1],i,n,s[2]),r.restore()}},s.prototype._updatePoints=function(){for(var t=this.layout.points,e=t.length;e--;)for(var a=t[e],i=a.length;i--;){var n=a[i];n.canvasx=this.area.w*n.x+this.area.x,n.canvasy=this.area.h*n.y+this.area.y}},s.prototype._renderLineChart=function(t,e){var a,i,r=e||this.elementContext,o=this.layout.points,s=this.layout.setNames;this.colors=this.dygraph_.colorsMap_;var l=this.dygraph_.getOption(\"plotter\"),h=l;n.isArrayLike(h)||(h=[h]);var u={};for(a=0;a<s.length;a++){i=s[a];var d=this.dygraph_.getOption(\"plotter\",i);d!=l&&(u[i]=d)}for(a=0;a<h.length;a++)for(var c=h[a],p=a==h.length-1,g=0;g<o.length;g++)if(i=s[g],!t||i==t){var f=o[g],v=c;if(i in u){if(!p)continue;v=u[i]}var _=this.colors[i],y=this.dygraph_.getOption(\"strokeWidth\",i);r.save(),r.strokeStyle=_,r.lineWidth=y,v({points:f,setName:i,drawingContext:r,color:_,strokeWidth:y,dygraph:this.dygraph_,axis:this.dygraph_.axisPropertiesForSeries(i),plotArea:this.area,seriesIndex:g,seriesCount:o.length,singleSeriesName:t,allSeriesPoints:o}),r.restore()}},s._Plotters={linePlotter:function(t){s._linePlotter(t)},fillPlotter:function(t){s._fillPlotter(t)},errorPlotter:function(t){s._errorPlotter(t)}},s._linePlotter=function(t){var e=t.dygraph,a=t.setName,i=t.strokeWidth,r=e.getNumericOption(\"strokeBorderWidth\",a),o=e.getOption(\"drawPointCallback\",a)||n.Circles.DEFAULT,l=e.getOption(\"strokePattern\",a),h=e.getBooleanOption(\"drawPoints\",a),u=e.getNumericOption(\"pointSize\",a);r&&i&&s._drawStyledLine(t,e.getOption(\"strokeBorderColor\",a),i+2*r,l,h,o,u),s._drawStyledLine(t,t.color,i,l,h,o,u)},s._errorPlotter=function(t){var e=t.dygraph,a=t.setName;if(e.getBooleanOption(\"errorBars\")||e.getBooleanOption(\"customBars\")){e.getBooleanOption(\"fillGraph\",a)&&console.warn(\"Can't use fillGraph option with error bars\");var i,r=t.drawingContext,o=t.color,l=e.getNumericOption(\"fillAlpha\",a),h=e.getBooleanOption(\"stepPlot\",a),u=t.points,d=n.createIterator(u,0,u.length,s._getIteratorPredicate(e.getBooleanOption(\"connectSeparatedPoints\",a))),c=NaN,p=NaN,g=[-1,-1],f=n.toRGB_(o),v=\"rgba(\"+f.r+\",\"+f.g+\",\"+f.b+\",\"+l+\")\";r.fillStyle=v,r.beginPath();for(var _=function(t){return null===t||void 0===t||isNaN(t)};d.hasNext;){var y=d.next();!h&&_(y.y)||h&&!isNaN(p)&&_(p)?c=NaN:(i=[y.y_bottom,y.y_top],h&&(p=y.y),isNaN(i[0])&&(i[0]=y.y),isNaN(i[1])&&(i[1]=y.y),i[0]=t.plotArea.h*i[0]+t.plotArea.y,i[1]=t.plotArea.h*i[1]+t.plotArea.y,isNaN(c)||(h?(r.moveTo(c,g[0]),r.lineTo(y.canvasx,g[0]),r.lineTo(y.canvasx,g[1])):(r.moveTo(c,g[0]),r.lineTo(y.canvasx,i[0]),r.lineTo(y.canvasx,i[1])),r.lineTo(c,g[1]),r.closePath()),g=i,c=y.canvasx)}r.fill()}},s._fastCanvasProxy=function(t){var e=[],a=null,i=null,n=0,r=function(t){if(!(e.length<=1)){for(var a=e.length-1;a>0;a--){var i=e[a];if(2==i[0]){var n=e[a-1];n[1]==i[1]&&n[2]==i[2]&&e.splice(a,1)}}for(var a=0;a<e.length-1;){var i=e[a];2==i[0]&&2==e[a+1][0]?e.splice(a,1):a++}if(e.length>2&&!t){var r=0;2==e[0][0]&&r++;for(var o=null,s=null,a=r;a<e.length;a++){var i=e[a];if(1==i[0])if(null===o&&null===s)o=a,s=a;else{var l=i[2];l<e[o][2]?o=a:l>e[s][2]&&(s=a)}}var h=e[o],u=e[s];e.splice(r,e.length-r),o<s?(e.push(h),e.push(u)):o>s?(e.push(u),e.push(h)):e.push(h)}}},o=function(a){r(a);for(var o=0,s=e.length;o<s;o++){var l=e[o];1==l[0]?t.lineTo(l[1],l[2]):2==l[0]&&t.moveTo(l[1],l[2])}e.length&&(i=e[e.length-1][1]),n+=e.length,e=[]},s=function(t,n,r){var s=Math.round(n);if(null===a||s!=a){var l=a-i>1,h=s-a>1;o(l||h),a=s}e.push([t,n,r])};return{moveTo:function(t,e){s(2,t,e)},lineTo:function(t,e){s(1,t,e)},stroke:function(){o(!0),t.stroke()},fill:function(){o(!0),t.fill()},beginPath:function(){o(!0),t.beginPath()},closePath:function(){o(!0),t.closePath()},_count:function(){return n}}},s._fillPlotter=function(t){if(!t.singleSeriesName&&0===t.seriesIndex){for(var e=t.dygraph,a=e.getLabels().slice(1),i=a.length;i>=0;i--)e.visibility()[i]||a.splice(i,1);if(function(){for(var t=0;t<a.length;t++)if(e.getBooleanOption(\"fillGraph\",a[t]))return!0;return!1}())for(var r,l,h=t.plotArea,u=t.allSeriesPoints,d=u.length,c=e.getBooleanOption(\"stackedGraph\"),p=e.getColors(),g={},f=function(t,e,a,i){if(t.lineTo(e,a),c)for(var n=i.length-1;n>=0;n--){var r=i[n];t.lineTo(r[0],r[1])}},v=d-1;v>=0;v--){var _=t.drawingContext,y=a[v];if(e.getBooleanOption(\"fillGraph\",y)){var x=e.getNumericOption(\"fillAlpha\",y),m=e.getBooleanOption(\"stepPlot\",y),b=p[v],w=e.axisPropertiesForSeries(y),A=1+w.minyval*w.yscale;A<0?A=0:A>1&&(A=1),A=h.h*A+h.y;var O,D=u[v],E=n.createIterator(D,0,D.length,s._getIteratorPredicate(e.getBooleanOption(\"connectSeparatedPoints\",y))),L=NaN,T=[-1,-1],S=n.toRGB_(b),P=\"rgba(\"+S.r+\",\"+S.g+\",\"+S.b+\",\"+x+\")\";_.fillStyle=P,_.beginPath();var C,M=!0;(D.length>2*e.width_||o.default.FORCE_FAST_PROXY)&&(_=s._fastCanvasProxy(_));for(var N,F=[];E.hasNext;)if(N=E.next(),n.isOK(N.y)||m){if(c){if(!M&&C==N.xval)continue;M=!1,C=N.xval,r=g[N.canvasx];var k;k=void 0===r?A:l?r[0]:r,O=[N.canvasy,k],m?-1===T[0]?g[N.canvasx]=[N.canvasy,A]:g[N.canvasx]=[N.canvasy,T[0]]:g[N.canvasx]=N.canvasy}else O=isNaN(N.canvasy)&&m?[h.y+h.h,A]:[N.canvasy,A];isNaN(L)?(_.moveTo(N.canvasx,O[1]),_.lineTo(N.canvasx,O[0])):(m?(_.lineTo(N.canvasx,T[0]),_.lineTo(N.canvasx,O[0])):_.lineTo(N.canvasx,O[0]),c&&(F.push([L,T[1]]),l&&r?F.push([N.canvasx,r[1]]):F.push([N.canvasx,O[1]]))),T=O,L=N.canvasx}else f(_,L,T[1],F),F=[],L=NaN,null===N.y_stacked||isNaN(N.y_stacked)||(g[N.canvasx]=h.h*N.y_stacked+h.y);l=m,O&&N&&(f(_,N.canvasx,O[1],F),F=[]),_.fill()}}}},a.default=s,e.exports=a.default},{\"./dygraph\":18,\"./dygraph-utils\":17}],10:[function(t,e,a){\"use strict\";function i(t){return t&&t.__esModule?t:{default:t}}function n(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e.default=t,e}Object.defineProperty(a,\"__esModule\",{value:!0});var r=t(\"./dygraph-tickers\"),o=n(r),s=t(\"./dygraph-interaction-model\"),l=i(s),h=t(\"./dygraph-canvas\"),u=i(h),d=t(\"./dygraph-utils\"),c=n(d),p={highlightCircleSize:3,highlightSeriesOpts:null,highlightSeriesBackgroundAlpha:.5,highlightSeriesBackgroundColor:\"rgb(255, 255, 255)\",labelsSeparateLines:!1,labelsShowZeroValues:!0,labelsKMB:!1,labelsKMG2:!1,showLabelsOnHighlight:!0,digitsAfterDecimal:2,maxNumberWidth:6,sigFigs:null,strokeWidth:1,strokeBorderWidth:0,strokeBorderColor:\"white\",axisTickSize:3,axisLabelFontSize:14,rightGap:5,showRoller:!1,xValueParser:void 0,delimiter:\",\",sigma:2,errorBars:!1,fractions:!1,wilsonInterval:!0,customBars:!1,fillGraph:!1,fillAlpha:.15,connectSeparatedPoints:!1,stackedGraph:!1,stackedGraphNaNFill:\"all\",hideOverlayOnMouseOut:!0,legend:\"onmouseover\",stepPlot:!1,xRangePad:0,yRangePad:null,drawAxesAtZero:!1,titleHeight:28,xLabelHeight:18,yLabelWidth:18,axisLineColor:\"black\",axisLineWidth:.3,gridLineWidth:.3,axisLabelWidth:50,gridLineColor:\"rgb(128,128,128)\",interactionModel:l.default.defaultModel,animatedZooms:!1,showRangeSelector:!1,rangeSelectorHeight:40,rangeSelectorPlotStrokeColor:\"#808FAB\",rangeSelectorPlotFillGradientColor:\"white\",rangeSelectorPlotFillColor:\"#A7B1C4\",rangeSelectorBackgroundStrokeColor:\"gray\",rangeSelectorBackgroundLineWidth:1,rangeSelectorPlotLineWidth:1.5,rangeSelectorForegroundStrokeColor:\"black\",rangeSelectorForegroundLineWidth:1,rangeSelectorAlpha:.6,showInRangeSelector:null,plotter:[u.default._fillPlotter,u.default._errorPlotter,u.default._linePlotter],plugins:[],axes:{x:{pixelsPerLabel:70,axisLabelWidth:60,axisLabelFormatter:c.dateAxisLabelFormatter,valueFormatter:c.dateValueFormatter,drawGrid:!0,drawAxis:!0,independentTicks:!0,ticker:o.dateTicker},y:{axisLabelWidth:50,pixelsPerLabel:30,valueFormatter:c.numberValueFormatter,axisLabelFormatter:c.numberAxisLabelFormatter,drawGrid:!0,drawAxis:!0,independentTicks:!0,ticker:o.numericTicks},y2:{axisLabelWidth:50,pixelsPerLabel:30,valueFormatter:c.numberValueFormatter,axisLabelFormatter:c.numberAxisLabelFormatter,drawAxis:!0,drawGrid:!1,independentTicks:!1,ticker:o.numericTicks}}};a.default=p,e.exports=a.default},{\"./dygraph-canvas\":9,\"./dygraph-interaction-model\":12,\"./dygraph-tickers\":16,\"./dygraph-utils\":17}],11:[function(t,e,a){\"use strict\";Object.defineProperty(a,\"__esModule\",{value:!0});var i=t(\"./dygraph\"),n=function(t){return t&&t.__esModule?t:{default:t}}(i),r=function(t){this.container=t};r.prototype.draw=function(t,e){this.container.innerHTML=\"\",void 0!==this.date_graph&&this.date_graph.destroy(),this.date_graph=new n.default(this.container,t,e)},r.prototype.setSelection=function(t){var e=!1;t.length&&(e=t[0].row),this.date_graph.setSelection(e)},r.prototype.getSelection=function(){var t=[],e=this.date_graph.getSelection();if(e<0)return t;for(var a=this.date_graph.layout_.points,i=0;i<a.length;++i)t.push({row:e,column:i+1});return t},a.default=r,e.exports=a.default},{\"./dygraph\":18}],12:[function(t,e,a){\"use strict\";Object.defineProperty(a,\"__esModule\",{value:!0});var i=t(\"./dygraph-utils\"),n=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e.default=t,e}(i),r={};r.maybeTreatMouseOpAsClick=function(t,e,a){a.dragEndX=n.dragGetX_(t,a),a.dragEndY=n.dragGetY_(t,a);var i=Math.abs(a.dragEndX-a.dragStartX),o=Math.abs(a.dragEndY-a.dragStartY);i<2&&o<2&&void 0!==e.lastx_&&-1!=e.lastx_&&r.treatMouseOpAsClick(e,t,a),a.regionWidth=i,a.regionHeight=o},r.startPan=function(t,e,a){var i,r;a.isPanning=!0;var o=e.xAxisRange();if(e.getOptionForAxis(\"logscale\",\"x\")?(a.initialLeftmostDate=n.log10(o[0]),a.dateRange=n.log10(o[1])-n.log10(o[0])):(a.initialLeftmostDate=o[0],a.dateRange=o[1]-o[0]),a.xUnitsPerPixel=a.dateRange/(e.plotter_.area.w-1),e.getNumericOption(\"panEdgeFraction\")){var s=e.width_*e.getNumericOption(\"panEdgeFraction\"),l=e.xAxisExtremes(),h=e.toDomXCoord(l[0])-s,u=e.toDomXCoord(l[1])+s,d=e.toDataXCoord(h),c=e.toDataXCoord(u);a.boundedDates=[d,c];var p=[],g=e.height_*e.getNumericOption(\"panEdgeFraction\");for(i=0;i<e.axes_.length;i++){r=e.axes_[i];var f=r.extremeRange,v=e.toDomYCoord(f[0],i)+g,_=e.toDomYCoord(f[1],i)-g,y=e.toDataYCoord(v,i),x=e.toDataYCoord(_,i);p[i]=[y,x]}a.boundedValues=p}for(a.is2DPan=!1,a.axes=[],i=0;i<e.axes_.length;i++){r=e.axes_[i];var m={},b=e.yAxisRange(i);e.attributes_.getForAxis(\"logscale\",i)?(m.initialTopValue=n.log10(b[1]),m.dragValueRange=n.log10(b[1])-n.log10(b[0])):(m.initialTopValue=b[1],m.dragValueRange=b[1]-b[0]),m.unitsPerPixel=m.dragValueRange/(e.plotter_.area.h-1),a.axes.push(m),r.valueRange&&(a.is2DPan=!0)}},r.movePan=function(t,e,a){a.dragEndX=n.dragGetX_(t,a),a.dragEndY=n.dragGetY_(t,a);var i=a.initialLeftmostDate-(a.dragEndX-a.dragStartX)*a.xUnitsPerPixel;a.boundedDates&&(i=Math.max(i,a.boundedDates[0]));var r=i+a.dateRange;if(a.boundedDates&&r>a.boundedDates[1]&&(i-=r-a.boundedDates[1],r=i+a.dateRange),e.getOptionForAxis(\"logscale\",\"x\")?e.dateWindow_=[Math.pow(n.LOG_SCALE,i),Math.pow(n.LOG_SCALE,r)]:e.dateWindow_=[i,r],a.is2DPan)for(var o=a.dragEndY-a.dragStartY,s=0;s<e.axes_.length;s++){var l=e.axes_[s],h=a.axes[s],u=o*h.unitsPerPixel,d=a.boundedValues?a.boundedValues[s]:null,c=h.initialTopValue+u;d&&(c=Math.min(c,d[1]));var p=c-h.dragValueRange;d&&p<d[0]&&(c-=p-d[0],p=c-h.dragValueRange),e.attributes_.getForAxis(\"logscale\",s)?l.valueRange=[Math.pow(n.LOG_SCALE,p),Math.pow(n.LOG_SCALE,c)]:l.valueRange=[p,c]}e.drawGraph_(!1)},r.endPan=r.maybeTreatMouseOpAsClick,r.startZoom=function(t,e,a){a.isZooming=!0,a.zoomMoved=!1},r.moveZoom=function(t,e,a){a.zoomMoved=!0,a.dragEndX=n.dragGetX_(t,a),a.dragEndY=n.dragGetY_(t,a);var i=Math.abs(a.dragStartX-a.dragEndX),r=Math.abs(a.dragStartY-a.dragEndY);a.dragDirection=i<r/2?n.VERTICAL:n.HORIZONTAL,e.drawZoomRect_(a.dragDirection,a.dragStartX,a.dragEndX,a.dragStartY,a.dragEndY,a.prevDragDirection,a.prevEndX,a.prevEndY),a.prevEndX=a.dragEndX,a.prevEndY=a.dragEndY,a.prevDragDirection=a.dragDirection},r.treatMouseOpAsClick=function(t,e,a){for(var i=t.getFunctionOption(\"clickCallback\"),n=t.getFunctionOption(\"pointClickCallback\"),r=null,o=-1,s=Number.MAX_VALUE,l=0;l<t.selPoints_.length;l++){var h=t.selPoints_[l],u=Math.pow(h.canvasx-a.dragEndX,2)+Math.pow(h.canvasy-a.dragEndY,2);!isNaN(u)&&(-1==o||u<s)&&(s=u,o=l)}var d=t.getNumericOption(\"highlightCircleSize\")+2;if(s<=d*d&&(r=t.selPoints_[o]),r){var c={cancelable:!0,point:r,canvasx:a.dragEndX,canvasy:a.dragEndY};if(t.cascadeEvents_(\"pointClick\",c))return;n&&n.call(t,e,r)}var c={cancelable:!0,xval:t.lastx_,pts:t.selPoints_,canvasx:a.dragEndX,canvasy:a.dragEndY};t.cascadeEvents_(\"click\",c)||i&&i.call(t,e,t.lastx_,t.selPoints_)},r.endZoom=function(t,e,a){e.clearZoomRect_(),a.isZooming=!1,r.maybeTreatMouseOpAsClick(t,e,a);var i=e.getArea();if(a.regionWidth>=10&&a.dragDirection==n.HORIZONTAL){var o=Math.min(a.dragStartX,a.dragEndX),s=Math.max(a.dragStartX,a.dragEndX);o=Math.max(o,i.x),s=Math.min(s,i.x+i.w),o<s&&e.doZoomX_(o,s),a.cancelNextDblclick=!0}else if(a.regionHeight>=10&&a.dragDirection==n.VERTICAL){var l=Math.min(a.dragStartY,a.dragEndY),h=Math.max(a.dragStartY,a.dragEndY);l=Math.max(l,i.y),h=Math.min(h,i.y+i.h),l<h&&e.doZoomY_(l,h),a.cancelNextDblclick=!0}a.dragStartX=null,a.dragStartY=null},r.startTouch=function(t,e,a){t.preventDefault(),t.touches.length>1&&(a.startTimeForDoubleTapMs=null);for(var i=[],n=0;n<t.touches.length;n++){var r=t.touches[n];i.push({pageX:r.pageX,pageY:r.pageY,dataX:e.toDataXCoord(r.pageX),dataY:e.toDataYCoord(r.pageY)})}if(a.initialTouches=i,1==i.length)a.initialPinchCenter=i[0],a.touchDirections={x:!0,y:!0};else if(i.length>=2){a.initialPinchCenter={pageX:.5*(i[0].pageX+i[1].pageX),pageY:.5*(i[0].pageY+i[1].pageY),dataX:.5*(i[0].dataX+i[1].dataX),dataY:.5*(i[0].dataY+i[1].dataY)};var o=180/Math.PI*Math.atan2(a.initialPinchCenter.pageY-i[0].pageY,i[0].pageX-a.initialPinchCenter.pageX);o=Math.abs(o),o>90&&(o=90-o),a.touchDirections={x:o<67.5,y:o>22.5}}a.initialRange={x:e.xAxisRange(),y:e.yAxisRange()}},r.moveTouch=function(t,e,a){a.startTimeForDoubleTapMs=null;var i,n=[];for(i=0;i<t.touches.length;i++){var r=t.touches[i];n.push({pageX:r.pageX,pageY:r.pageY})}var o,s=a.initialTouches,l=a.initialPinchCenter;o=1==n.length?n[0]:{pageX:.5*(n[0].pageX+n[1].pageX),pageY:.5*(n[0].pageY+n[1].pageY)};var h={pageX:o.pageX-l.pageX,pageY:o.pageY-l.pageY},u=a.initialRange.x[1]-a.initialRange.x[0],d=a.initialRange.y[0]-a.initialRange.y[1];h.dataX=h.pageX/e.plotter_.area.w*u,h.dataY=h.pageY/e.plotter_.area.h*d;var c,p;if(1==n.length)c=1,p=1;else if(n.length>=2){var g=s[1].pageX-l.pageX;c=(n[1].pageX-o.pageX)/g;var f=s[1].pageY-l.pageY;p=(n[1].pageY-o.pageY)/f}c=Math.min(8,Math.max(.125,c)),p=Math.min(8,Math.max(.125,p));var v=!1;if(a.touchDirections.x&&(e.dateWindow_=[l.dataX-h.dataX+(a.initialRange.x[0]-l.dataX)/c,l.dataX-h.dataX+(a.initialRange.x[1]-l.dataX)/c],v=!0),a.touchDirections.y)for(i=0;i<1;i++){var _=e.axes_[i],y=e.attributes_.getForAxis(\"logscale\",i);y||(_.valueRange=[l.dataY-h.dataY+(a.initialRange.y[0]-l.dataY)/p,l.dataY-h.dataY+(a.initialRange.y[1]-l.dataY)/p],v=!0)}if(e.drawGraph_(!1),v&&n.length>1&&e.getFunctionOption(\"zoomCallback\")){var x=e.xAxisRange();e.getFunctionOption(\"zoomCallback\").call(e,x[0],x[1],e.yAxisRanges())}},r.endTouch=function(t,e,a){if(0!==t.touches.length)r.startTouch(t,e,a);else if(1==t.changedTouches.length){var i=(new Date).getTime(),n=t.changedTouches[0];a.startTimeForDoubleTapMs&&i-a.startTimeForDoubleTapMs<500&&a.doubleTapX&&Math.abs(a.doubleTapX-n.screenX)<50&&a.doubleTapY&&Math.abs(a.doubleTapY-n.screenY)<50?e.resetZoom():(a.startTimeForDoubleTapMs=i,a.doubleTapX=n.screenX,a.doubleTapY=n.screenY)}};var o=function(t,e,a){return t<e?e-t:t>a?t-a:0},s=function(t,e){var a=n.findPos(e.canvas_),i={left:a.x,right:a.x+e.canvas_.offsetWidth,top:a.y,bottom:a.y+e.canvas_.offsetHeight},r={x:n.pageX(t),y:n.pageY(t)},s=o(r.x,i.left,i.right),l=o(r.y,i.top,i.bottom);return Math.max(s,l)};r.defaultModel={mousedown:function(t,e,a){if(!t.button||2!=t.button){a.initializeMouseDown(t,e,a),t.altKey||t.shiftKey?r.startPan(t,e,a):r.startZoom(t,e,a);var i=function(t){if(a.isZooming){s(t,e)<100?r.moveZoom(t,e,a):null!==a.dragEndX&&(a.dragEndX=null,a.dragEndY=null,e.clearZoomRect_())}else a.isPanning&&r.movePan(t,e,a)},o=function t(o){a.isZooming?null!==a.dragEndX?r.endZoom(o,e,a):r.maybeTreatMouseOpAsClick(o,e,a):a.isPanning&&r.endPan(o,e,a),n.removeEvent(document,\"mousemove\",i),n.removeEvent(document,\"mouseup\",t),a.destroy()};e.addAndTrackEvent(document,\"mousemove\",i),e.addAndTrackEvent(document,\"mouseup\",o)}},willDestroyContextMyself:!0,touchstart:function(t,e,a){r.startTouch(t,e,a)},touchmove:function(t,e,a){r.moveTouch(t,e,a)},touchend:function(t,e,a){r.endTouch(t,e,a)},dblclick:function(t,e,a){if(a.cancelNextDblclick)return void(a.cancelNextDblclick=!1);var i={canvasx:a.dragEndX,canvasy:a.dragEndY,cancelable:!0};e.cascadeEvents_(\"dblclick\",i)||t.altKey||t.shiftKey||e.resetZoom()}},r.nonInteractiveModel_={mousedown:function(t,e,a){a.initializeMouseDown(t,e,a)},mouseup:r.maybeTreatMouseOpAsClick},r.dragIsPanInteractionModel={mousedown:function(t,e,a){a.initializeMouseDown(t,e,a),r.startPan(t,e,a)},mousemove:function(t,e,a){a.isPanning&&r.movePan(t,e,a)},mouseup:function(t,e,a){a.isPanning&&r.endPan(t,e,a)}},a.default=r,e.exports=a.default},{\"./dygraph-utils\":17}],13:[function(t,e,a){\"use strict\";Object.defineProperty(a,\"__esModule\",{value:!0});var i=t(\"./dygraph-utils\"),n=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e.default=t,e}(i),r=function(t){this.dygraph_=t,this.points=[],this.setNames=[],this.annotations=[],this.yAxes_=null,this.xTicks_=null,this.yTicks_=null};r.prototype.addDataset=function(t,e){this.points.push(e),this.setNames.push(t)},r.prototype.getPlotArea=function(){return this.area_},r.prototype.computePlotArea=function(){var t={x:0,y:0};t.w=this.dygraph_.width_-t.x-this.dygraph_.getOption(\"rightGap\"),t.h=this.dygraph_.height_;var e={chart_div:this.dygraph_.graphDiv,reserveSpaceLeft:function(e){var a={x:t.x,y:t.y,w:e,h:t.h};return t.x+=e,t.w-=e,a},reserveSpaceRight:function(e){var a={x:t.x+t.w-e,y:t.y,w:e,h:t.h};return t.w-=e,a},reserveSpaceTop:function(e){var a={x:t.x,y:t.y,w:t.w,h:e};return t.y+=e,t.h-=e,a},reserveSpaceBottom:function(e){var a={x:t.x,y:t.y+t.h-e,w:t.w,h:e};return t.h-=e,a},chartRect:function(){return{x:t.x,y:t.y,w:t.w,h:t.h}}};this.dygraph_.cascadeEvents_(\"layout\",e),this.area_=t},r.prototype.setAnnotations=function(t){this.annotations=[];for(var e=this.dygraph_.getOption(\"xValueParser\")||function(t){return t},a=0;a<t.length;a++){var i={};if(!t[a].xval&&void 0===t[a].x)return void console.error(\"Annotations must have an 'x' property\");if(t[a].icon&&(!t[a].hasOwnProperty(\"width\")||!t[a].hasOwnProperty(\"height\")))return void console.error(\"Must set width and height when setting annotation.icon property\");n.update(i,t[a]),i.xval||(i.xval=e(i.x)),this.annotations.push(i)}},r.prototype.setXTicks=function(t){this.xTicks_=t},r.prototype.setYAxes=function(t){this.yAxes_=t},r.prototype.evaluate=function(){this._xAxis={},this._evaluateLimits(),this._evaluateLineCharts(),this._evaluateLineTicks(),this._evaluateAnnotations()},r.prototype._evaluateLimits=function(){var t=this.dygraph_.xAxisRange();this._xAxis.minval=t[0],this._xAxis.maxval=t[1];var e=t[1]-t[0];this._xAxis.scale=0!==e?1/e:1,this.dygraph_.getOptionForAxis(\"logscale\",\"x\")&&(this._xAxis.xlogrange=n.log10(this._xAxis.maxval)-n.log10(this._xAxis.minval),this._xAxis.xlogscale=0!==this._xAxis.xlogrange?1/this._xAxis.xlogrange:1);for(var a=0;a<this.yAxes_.length;a++){var i=this.yAxes_[a];i.minyval=i.computedValueRange[0],i.maxyval=i.computedValueRange[1],i.yrange=i.maxyval-i.minyval,i.yscale=0!==i.yrange?1/i.yrange:1,this.dygraph_.getOption(\"logscale\")&&(i.ylogrange=n.log10(i.maxyval)-n.log10(i.minyval),i.ylogscale=0!==i.ylogrange?1/i.ylogrange:1,isFinite(i.ylogrange)&&!isNaN(i.ylogrange)||console.error(\"axis \"+a+\" of graph at \"+i.g+\" can't be displayed in log scale for range [\"+i.minyval+\" - \"+i.maxyval+\"]\"))}},r.calcXNormal_=function(t,e,a){return a?(n.log10(t)-n.log10(e.minval))*e.xlogscale:(t-e.minval)*e.scale},r.calcYNormal_=function(t,e,a){if(a){var i=1-(n.log10(e)-n.log10(t.minyval))*t.ylogscale;return isFinite(i)?i:NaN}return 1-(e-t.minyval)*t.yscale},r.prototype._evaluateLineCharts=function(){for(var t=this.dygraph_.getOption(\"stackedGraph\"),e=this.dygraph_.getOptionForAxis(\"logscale\",\"x\"),a=0;a<this.points.length;a++){for(var i=this.points[a],n=this.setNames[a],o=this.dygraph_.getOption(\"connectSeparatedPoints\",n),s=this.dygraph_.axisPropertiesForSeries(n),l=this.dygraph_.attributes_.getForSeries(\"logscale\",n),h=0;h<i.length;h++){var u=i[h];u.x=r.calcXNormal_(u.xval,this._xAxis,e);var d=u.yval;t&&(u.y_stacked=r.calcYNormal_(s,u.yval_stacked,l),\nnull===d||isNaN(d)||(d=u.yval_stacked)),null===d&&(d=NaN,o||(u.yval=NaN)),u.y=r.calcYNormal_(s,d,l)}this.dygraph_.dataHandler_.onLineEvaluated(i,s,l)}},r.prototype._evaluateLineTicks=function(){var t,e,a,i,n,r;for(this.xticks=[],t=0;t<this.xTicks_.length;t++)e=this.xTicks_[t],a=e.label,r=!(\"label_v\"in e),n=r?e.v:e.label_v,(i=this.dygraph_.toPercentXCoord(n))>=0&&i<1&&this.xticks.push({pos:i,label:a,has_tick:r});for(this.yticks=[],t=0;t<this.yAxes_.length;t++)for(var o=this.yAxes_[t],s=0;s<o.ticks.length;s++)e=o.ticks[s],a=e.label,r=!(\"label_v\"in e),n=r?e.v:e.label_v,(i=this.dygraph_.toPercentYCoord(n,t))>0&&i<=1&&this.yticks.push({axis:t,pos:i,label:a,has_tick:r})},r.prototype._evaluateAnnotations=function(){var t,e={};for(t=0;t<this.annotations.length;t++){var a=this.annotations[t];e[a.xval+\",\"+a.series]=a}if(this.annotated_points=[],this.annotations&&this.annotations.length)for(var i=0;i<this.points.length;i++){var n=this.points[i];for(t=0;t<n.length;t++){var r=n[t],o=r.xval+\",\"+r.name;o in e&&(r.annotation=e[o],this.annotated_points.push(r))}}},r.prototype.removeAllDatasets=function(){delete this.points,delete this.setNames,delete this.setPointsLengths,delete this.setPointsOffsets,this.points=[],this.setNames=[],this.setPointsLengths=[],this.setPointsOffsets=[]},a.default=r,e.exports=a.default},{\"./dygraph-utils\":17}],14:[function(t,e,a){(function(t){\"use strict\";Object.defineProperty(a,\"__esModule\",{value:!0});var i=null;if(void 0!==t);a.default=i,e.exports=a.default}).call(this,t(\"_process\"))},{_process:1}],15:[function(t,e,a){(function(i){\"use strict\";function n(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(a,\"__esModule\",{value:!0});var r=t(\"./dygraph-utils\"),o=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e.default=t,e}(r),s=t(\"./dygraph-default-attrs\"),l=n(s),h=t(\"./dygraph-options-reference\"),u=(n(h),function(t){this.dygraph_=t,this.yAxes_=[],this.xAxis_={},this.series_={},this.global_=this.dygraph_.attrs_,this.user_=this.dygraph_.user_attrs_||{},this.labels_=[],this.highlightSeries_=this.get(\"highlightSeriesOpts\")||{},this.reparseSeries()});if(u.AXIS_STRING_MAPPINGS_={y:0,Y:0,y1:0,Y1:0,y2:1,Y2:1},u.axisToIndex_=function(t){if(\"string\"==typeof t){if(u.AXIS_STRING_MAPPINGS_.hasOwnProperty(t))return u.AXIS_STRING_MAPPINGS_[t];throw\"Unknown axis : \"+t}if(\"number\"==typeof t){if(0===t||1===t)return t;throw\"Dygraphs only supports two y-axes, indexed from 0-1.\"}if(t)throw\"Unknown axis : \"+t;return 0},u.prototype.reparseSeries=function(){var t=this.get(\"labels\");if(t){this.labels_=t.slice(1),this.yAxes_=[{series:[],options:{}}],this.xAxis_={options:{}},this.series_={};for(var e=this.user_.series||{},a=0;a<this.labels_.length;a++){var i=this.labels_[a],n=e[i]||{},r=u.axisToIndex_(n.axis);this.series_[i]={idx:a,yAxis:r,options:n},this.yAxes_[r]?this.yAxes_[r].series.push(i):this.yAxes_[r]={series:[i],options:{}}}var s=this.user_.axes||{};o.update(this.yAxes_[0].options,s.y||{}),this.yAxes_.length>1&&o.update(this.yAxes_[1].options,s.y2||{}),o.update(this.xAxis_.options,s.x||{})}},u.prototype.get=function(t){var e=this.getGlobalUser_(t);return null!==e?e:this.getGlobalDefault_(t)},u.prototype.getGlobalUser_=function(t){return this.user_.hasOwnProperty(t)?this.user_[t]:null},u.prototype.getGlobalDefault_=function(t){return this.global_.hasOwnProperty(t)?this.global_[t]:l.default.hasOwnProperty(t)?l.default[t]:null},u.prototype.getForAxis=function(t,e){var a,i;if(\"number\"==typeof e)a=e,i=0===a?\"y\":\"y2\";else{if(\"y1\"==e&&(e=\"y\"),\"y\"==e)a=0;else if(\"y2\"==e)a=1;else{if(\"x\"!=e)throw\"Unknown axis \"+e;a=-1}i=e}var n=-1==a?this.xAxis_:this.yAxes_[a];if(n){var r=n.options;if(r.hasOwnProperty(t))return r[t]}if(\"x\"!==e||\"logscale\"!==t){var o=this.getGlobalUser_(t);if(null!==o)return o}var s=l.default.axes[i];return s.hasOwnProperty(t)?s[t]:this.getGlobalDefault_(t)},u.prototype.getForSeries=function(t,e){if(e===this.dygraph_.getHighlightSeries()&&this.highlightSeries_.hasOwnProperty(t))return this.highlightSeries_[t];if(!this.series_.hasOwnProperty(e))throw\"Unknown series: \"+e;var a=this.series_[e],i=a.options;return i.hasOwnProperty(t)?i[t]:this.getForAxis(t,a.yAxis)},u.prototype.numAxes=function(){return this.yAxes_.length},u.prototype.axisForSeries=function(t){return this.series_[t].yAxis},u.prototype.axisOptions=function(t){return this.yAxes_[t].options},u.prototype.seriesForAxis=function(t){return this.yAxes_[t].series},u.prototype.seriesNames=function(){return this.labels_},void 0!==i);a.default=u,e.exports=a.default}).call(this,t(\"_process\"))},{\"./dygraph-default-attrs\":10,\"./dygraph-options-reference\":14,\"./dygraph-utils\":17,_process:1}],16:[function(t,e,a){\"use strict\";Object.defineProperty(a,\"__esModule\",{value:!0});var i=t(\"./dygraph-utils\"),n=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e.default=t,e}(i),r=function(t,e,a,i,n,r){return o(t,e,a,function(t){return\"logscale\"!==t&&i(t)},n,r)};a.numericLinearTicks=r;var o=function(t,e,a,i,r,o){var s,l,h,u,c=i(\"pixelsPerLabel\"),p=[];if(o)for(s=0;s<o.length;s++)p.push({v:o[s]});else{if(i(\"logscale\")){u=Math.floor(a/c);var g=n.binarySearch(t,d,1),f=n.binarySearch(e,d,-1);-1==g&&(g=0),-1==f&&(f=d.length-1);var v=null;if(f-g>=u/4){for(var _=f;_>=g;_--){var y=d[_],x=Math.log(y/t)/Math.log(e/t)*a,m={v:y};null===v?v={tickValue:y,pixel_coord:x}:Math.abs(x-v.pixel_coord)>=c?v={tickValue:y,pixel_coord:x}:m.label=\"\",p.push(m)}p.reverse()}}if(0===p.length){var b,w,A=i(\"labelsKMG2\");A?(b=[1,2,4,8,16,32,64,128,256],w=16):(b=[1,2,5,10,20,50,100],w=10);var O,D,E,L=Math.ceil(a/c),T=Math.abs(e-t)/L,S=Math.floor(Math.log(T)/Math.log(w)),P=Math.pow(w,S);for(l=0;l<b.length&&(O=P*b[l],D=Math.floor(t/O)*O,E=Math.ceil(e/O)*O,u=Math.abs(E-D)/O,!(a/u>c));l++);for(D>E&&(O*=-1),s=0;s<=u;s++)h=D+s*O,p.push({v:h})}}var C=i(\"axisLabelFormatter\");for(s=0;s<p.length;s++)void 0===p[s].label&&(p[s].label=C.call(r,p[s].v,0,i,r));return p};a.numericTicks=o;var s=function(t,e,a,i,n,r){var o=c(t,e,a,i);return o>=0?g(t,e,o,i,n):[]};a.dateTicker=s;var l={MILLISECONDLY:0,TWO_MILLISECONDLY:1,FIVE_MILLISECONDLY:2,TEN_MILLISECONDLY:3,FIFTY_MILLISECONDLY:4,HUNDRED_MILLISECONDLY:5,FIVE_HUNDRED_MILLISECONDLY:6,SECONDLY:7,TWO_SECONDLY:8,FIVE_SECONDLY:9,TEN_SECONDLY:10,THIRTY_SECONDLY:11,MINUTELY:12,TWO_MINUTELY:13,FIVE_MINUTELY:14,TEN_MINUTELY:15,THIRTY_MINUTELY:16,HOURLY:17,TWO_HOURLY:18,SIX_HOURLY:19,DAILY:20,TWO_DAILY:21,WEEKLY:22,MONTHLY:23,QUARTERLY:24,BIANNUAL:25,ANNUAL:26,DECADAL:27,CENTENNIAL:28,NUM_GRANULARITIES:29};a.Granularity=l;var h={DATEFIELD_Y:0,DATEFIELD_M:1,DATEFIELD_D:2,DATEFIELD_HH:3,DATEFIELD_MM:4,DATEFIELD_SS:5,DATEFIELD_MS:6,NUM_DATEFIELDS:7},u=[];u[l.MILLISECONDLY]={datefield:h.DATEFIELD_MS,step:1,spacing:1},u[l.TWO_MILLISECONDLY]={datefield:h.DATEFIELD_MS,step:2,spacing:2},u[l.FIVE_MILLISECONDLY]={datefield:h.DATEFIELD_MS,step:5,spacing:5},u[l.TEN_MILLISECONDLY]={datefield:h.DATEFIELD_MS,step:10,spacing:10},u[l.FIFTY_MILLISECONDLY]={datefield:h.DATEFIELD_MS,step:50,spacing:50},u[l.HUNDRED_MILLISECONDLY]={datefield:h.DATEFIELD_MS,step:100,spacing:100},u[l.FIVE_HUNDRED_MILLISECONDLY]={datefield:h.DATEFIELD_MS,step:500,spacing:500},u[l.SECONDLY]={datefield:h.DATEFIELD_SS,step:1,spacing:1e3},u[l.TWO_SECONDLY]={datefield:h.DATEFIELD_SS,step:2,spacing:2e3},u[l.FIVE_SECONDLY]={datefield:h.DATEFIELD_SS,step:5,spacing:5e3},u[l.TEN_SECONDLY]={datefield:h.DATEFIELD_SS,step:10,spacing:1e4},u[l.THIRTY_SECONDLY]={datefield:h.DATEFIELD_SS,step:30,spacing:3e4},u[l.MINUTELY]={datefield:h.DATEFIELD_MM,step:1,spacing:6e4},u[l.TWO_MINUTELY]={datefield:h.DATEFIELD_MM,step:2,spacing:12e4},u[l.FIVE_MINUTELY]={datefield:h.DATEFIELD_MM,step:5,spacing:3e5},u[l.TEN_MINUTELY]={datefield:h.DATEFIELD_MM,step:10,spacing:6e5},u[l.THIRTY_MINUTELY]={datefield:h.DATEFIELD_MM,step:30,spacing:18e5},u[l.HOURLY]={datefield:h.DATEFIELD_HH,step:1,spacing:36e5},u[l.TWO_HOURLY]={datefield:h.DATEFIELD_HH,step:2,spacing:72e5},u[l.SIX_HOURLY]={datefield:h.DATEFIELD_HH,step:6,spacing:216e5},u[l.DAILY]={datefield:h.DATEFIELD_D,step:1,spacing:864e5},u[l.TWO_DAILY]={datefield:h.DATEFIELD_D,step:2,spacing:1728e5},u[l.WEEKLY]={datefield:h.DATEFIELD_D,step:7,spacing:6048e5},u[l.MONTHLY]={datefield:h.DATEFIELD_M,step:1,spacing:2629817280},u[l.QUARTERLY]={datefield:h.DATEFIELD_M,step:3,spacing:216e5*365.2524},u[l.BIANNUAL]={datefield:h.DATEFIELD_M,step:6,spacing:432e5*365.2524},u[l.ANNUAL]={datefield:h.DATEFIELD_Y,step:1,spacing:864e5*365.2524},u[l.DECADAL]={datefield:h.DATEFIELD_Y,step:10,spacing:315578073600},u[l.CENTENNIAL]={datefield:h.DATEFIELD_Y,step:100,spacing:3155780736e3};var d=function(){for(var t=[],e=-39;e<=39;e++)for(var a=Math.pow(10,e),i=1;i<=9;i++){var n=a*i;t.push(n)}return t}(),c=function(t,e,a,i){for(var n=i(\"pixelsPerLabel\"),r=0;r<l.NUM_GRANULARITIES;r++){if(a/p(t,e,r)>=n)return r}return-1},p=function(t,e,a){var i=u[a].spacing;return Math.round(1*(e-t)/i)},g=function(t,e,a,i,r){var o=i(\"axisLabelFormatter\"),s=i(\"labelsUTC\"),d=s?n.DateAccessorsUTC:n.DateAccessorsLocal,c=u[a].datefield,p=u[a].step,g=u[a].spacing,f=new Date(t),v=[];v[h.DATEFIELD_Y]=d.getFullYear(f),v[h.DATEFIELD_M]=d.getMonth(f),v[h.DATEFIELD_D]=d.getDate(f),v[h.DATEFIELD_HH]=d.getHours(f),v[h.DATEFIELD_MM]=d.getMinutes(f),v[h.DATEFIELD_SS]=d.getSeconds(f),v[h.DATEFIELD_MS]=d.getMilliseconds(f);var _=v[c]%p;a==l.WEEKLY&&(_=d.getDay(f)),v[c]-=_;for(var y=c+1;y<h.NUM_DATEFIELDS;y++)v[y]=y===h.DATEFIELD_D?1:0;var x=[],m=d.makeDate.apply(null,v),b=m.getTime();if(a<=l.HOURLY)for(b<t&&(b+=g,m=new Date(b));b<=e;)x.push({v:b,label:o.call(r,m,a,i,r)}),b+=g,m=new Date(b);else for(b<t&&(v[c]+=p,m=d.makeDate.apply(null,v),b=m.getTime());b<=e;)(a>=l.DAILY||d.getHours(m)%p==0)&&x.push({v:b,label:o.call(r,m,a,i,r)}),v[c]+=p,m=d.makeDate.apply(null,v),b=m.getTime();return x};a.getDateAxis=g},{\"./dygraph-utils\":17}],17:[function(t,e,a){\"use strict\";function i(t,e,a){t.removeEventListener(e,a,!1)}function n(t){return t=t||window.event,t.stopPropagation&&t.stopPropagation(),t.preventDefault&&t.preventDefault(),t.cancelBubble=!0,t.cancel=!0,t.returnValue=!1,!1}function r(t,e,a){var i,n,r;if(0===e)i=a,n=a,r=a;else{var o=Math.floor(6*t),s=6*t-o,l=a*(1-e),h=a*(1-e*s),u=a*(1-e*(1-s));switch(o){case 1:i=h,n=a,r=l;break;case 2:i=l,n=a,r=u;break;case 3:i=l,n=h,r=a;break;case 4:i=u,n=l,r=a;break;case 5:i=a,n=l,r=h;break;case 6:case 0:i=a,n=u,r=l}}return i=Math.floor(255*i+.5),n=Math.floor(255*n+.5),r=Math.floor(255*r+.5),\"rgb(\"+i+\",\"+n+\",\"+r+\")\"}function o(t){var e=t.getBoundingClientRect(),a=window,i=document.documentElement;return{x:e.left+(a.pageXOffset||i.scrollLeft),y:e.top+(a.pageYOffset||i.scrollTop)}}function s(t){return!t.pageX||t.pageX<0?0:t.pageX}function l(t){return!t.pageY||t.pageY<0?0:t.pageY}function h(t,e){return s(t)-e.px}function u(t,e){return l(t)-e.py}function d(t){return!!t&&!isNaN(t)}function c(t,e){return!!t&&(null!==t.yval&&(null!==t.x&&void 0!==t.x&&(null!==t.y&&void 0!==t.y&&!(isNaN(t.x)||!e&&isNaN(t.y)))))}function p(t,e){var a=Math.min(Math.max(1,e||2),21);return Math.abs(t)<.001&&0!==t?t.toExponential(a-1):t.toPrecision(a)}function g(t){return t<10?\"0\"+t:\"\"+t}function f(t,e,a,i){var n=g(t)+\":\"+g(e);if(a&&(n+=\":\"+g(a),i)){var r=\"\"+i;n+=\".\"+(\"000\"+r).substring(r.length)}return n}function v(t,e){var a=e?tt:$,i=new Date(t),n=a.getFullYear(i),r=a.getMonth(i),o=a.getDate(i),s=a.getHours(i),l=a.getMinutes(i),h=a.getSeconds(i),u=a.getMilliseconds(i),d=\"\"+n,c=g(r+1),p=g(o),v=3600*s+60*l+h+.001*u,_=d+\"/\"+c+\"/\"+p;return v&&(_+=\" \"+f(s,l,h,u)),_}function _(t,e){var a=Math.pow(10,e);return Math.round(t*a)/a}function y(t,e,a,i,n){for(var r=!0;r;){var o=t,s=e,l=a,h=i,u=n;if(r=!1,null!==h&&void 0!==h&&null!==u&&void 0!==u||(h=0,u=s.length-1),h>u)return-1;null!==l&&void 0!==l||(l=0);var d,c=function(t){return t>=0&&t<s.length},p=parseInt((h+u)/2,10),g=s[p];if(g==o)return p;if(g>o){if(l>0&&(d=p-1,c(d)&&s[d]<o))return p;t=o,e=s,a=l,i=h,n=p-1,r=!0,c=p=g=d=void 0}else{if(!(g<o))return-1;if(l<0&&(d=p+1,c(d)&&s[d]>o))return p;t=o,e=s,a=l,i=p+1,n=u,r=!0,c=p=g=d=void 0}}}function x(t){var e,a;if((-1==t.search(\"-\")||-1!=t.search(\"T\")||-1!=t.search(\"Z\"))&&(a=m(t))&&!isNaN(a))return a;if(-1!=t.search(\"-\")){for(e=t.replace(\"-\",\"/\",\"g\");-1!=e.search(\"-\");)e=e.replace(\"-\",\"/\");a=m(e)}else 8==t.length?(e=t.substr(0,4)+\"/\"+t.substr(4,2)+\"/\"+t.substr(6,2),a=m(e)):a=m(t);return a&&!isNaN(a)||console.error(\"Couldn't parse \"+t+\" as a date\"),a}function m(t){return new Date(t).getTime()}function b(t,e){if(void 0!==e&&null!==e)for(var a in e)e.hasOwnProperty(a)&&(t[a]=e[a]);return t}function w(t,e){if(void 0!==e&&null!==e)for(var a in e)e.hasOwnProperty(a)&&(null===e[a]?t[a]=null:A(e[a])?t[a]=e[a].slice():!function(t){return\"object\"==typeof Node?t instanceof Node:\"object\"==typeof t&&\"number\"==typeof t.nodeType&&\"string\"==typeof t.nodeName}(e[a])&&\"object\"==typeof e[a]?(\"object\"==typeof t[a]&&null!==t[a]||(t[a]={}),w(t[a],e[a])):t[a]=e[a]);return t}function A(t){var e=typeof t;return(\"object\"==e||\"function\"==e&&\"function\"==typeof t.item)&&null!==t&&\"number\"==typeof t.length&&3!==t.nodeType}function O(t){return\"object\"==typeof t&&null!==t&&\"function\"==typeof t.getTime}function D(t){for(var e=[],a=0;a<t.length;a++)A(t[a])?e.push(D(t[a])):e.push(t[a]);return e}function E(){return document.createElement(\"canvas\")}function L(t){try{var e=window.devicePixelRatio,a=t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;return void 0!==e?e/a:1}catch(t){return 1}}function T(t,e,a,i){e=e||0,a=a||t.length,this.hasNext=!0,this.peek=null,this.start_=e,this.array_=t,this.predicate_=i,this.end_=Math.min(t.length,e+a),this.nextIdx_=e-1,this.next()}function S(t,e,a,i){return new T(t,e,a,i)}function P(t,e,a,i){var n,r=0,o=(new Date).getTime();if(t(r),1==e)return void i();var s=e-1;!function l(){r>=e||et.call(window,function(){var e=(new Date).getTime(),h=e-o;n=r,r=Math.floor(h/a);var u=r-n;r+u>s||r>=s?(t(s),i()):(0!==u&&t(r),l())})}()}function C(t,e){var a={};if(t)for(var i=1;i<t.length;i++)a[t[i]]=!0;var n=function(t){for(var e in t)if(t.hasOwnProperty(e)&&!at[e])return!0;return!1};for(var r in e)if(e.hasOwnProperty(r))if(\"highlightSeriesOpts\"==r||a[r]&&!e.series){if(n(e[r]))return!0}else if(\"series\"==r||\"axes\"==r){var o=e[r];for(var s in o)if(o.hasOwnProperty(s)&&n(o[s]))return!0}else if(!at[r])return!0;return!1}function M(t){for(var e=0;e<t.length;e++){var a=t.charAt(e);if(\"\\r\"===a)return e+1<t.length&&\"\\n\"===t.charAt(e+1)?\"\\r\\n\":a;if(\"\\n\"===a)return e+1<t.length&&\"\\r\"===t.charAt(e+1)?\"\\n\\r\":a}return null}function N(t,e){if(null===e||null===t)return!1;for(var a=t;a&&a!==e;)a=a.parentNode;return a===e}function F(t,e){return e<0?1/Math.pow(t,-e):Math.pow(t,e)}function k(t){var e=nt.exec(t);if(!e)return null;var a=parseInt(e[1],10),i=parseInt(e[2],10),n=parseInt(e[3],10);return e[4]?{r:a,g:i,b:n,a:parseFloat(e[4])}:{r:a,g:i,b:n}}function R(t){var e=k(t);if(e)return e;var a=document.createElement(\"div\");a.style.backgroundColor=t,a.style.visibility=\"hidden\",document.body.appendChild(a);var i=window.getComputedStyle(a,null).backgroundColor;return document.body.removeChild(a),k(i)}function I(t){try{(t||document.createElement(\"canvas\")).getContext(\"2d\")}catch(t){return!1}return!0}function H(t,e,a){var i=parseFloat(t);if(!isNaN(i))return i;if(/^ *$/.test(t))return null;if(/^ *nan *$/i.test(t))return NaN;var n=\"Unable to parse '\"+t+\"' as a number\";return void 0!==a&&void 0!==e&&(n+=\" on line \"+(1+(e||0))+\" ('\"+a+\"') of CSV.\"),console.error(n),null}function Y(t,e){var a=e(\"sigFigs\");if(null!==a)return p(t,a);var i,n=e(\"digitsAfterDecimal\"),r=e(\"maxNumberWidth\"),o=e(\"labelsKMB\"),s=e(\"labelsKMG2\");if(i=0!==t&&(Math.abs(t)>=Math.pow(10,r)||Math.abs(t)<Math.pow(10,-n))?t.toExponential(n):\"\"+_(t,n),o||s){var l,h=[],u=[];o&&(l=1e3,h=rt),s&&(o&&console.warn(\"Setting both labelsKMB and labelsKMG2. Pick one!\"),l=1024,h=ot,u=st);for(var d=Math.abs(t),c=F(l,h.length),g=h.length-1;g>=0;g--,c/=l)if(d>=c){i=_(t/c,n)+h[g];break}if(s){var f=String(t.toExponential()).split(\"e-\");2===f.length&&f[1]>=3&&f[1]<=24&&(i=f[1]%3>0?_(f[0]/F(10,f[1]%3),n):Number(f[0]).toFixed(2),i+=u[Math.floor(f[1]/3)-1])}}return i}function X(t,e,a){return Y.call(this,t,a)}function V(t,e,a){var i=a(\"labelsUTC\"),n=i?tt:$,r=n.getFullYear(t),o=n.getMonth(t),s=n.getDate(t),l=n.getHours(t),h=n.getMinutes(t),u=n.getSeconds(t),d=n.getMilliseconds(t);if(e>=G.Granularity.DECADAL)return\"\"+r;if(e>=G.Granularity.MONTHLY)return lt[o]+\"&#160;\"+r;if(0===3600*l+60*h+u+.001*d||e>=G.Granularity.DAILY)return g(s)+\"&#160;\"+lt[o];if(e<G.Granularity.SECONDLY){var c=\"\"+d;return g(u)+\".\"+(\"000\"+c).substring(c.length)}return e>G.Granularity.MINUTELY?f(l,h,u,0):f(l,h,u,d)}function Z(t,e){return v(t,e(\"labelsUTC\"))}Object.defineProperty(a,\"__esModule\",{value:!0}),a.removeEvent=i,a.cancelEvent=n,a.hsvToRGB=r,a.findPos=o,a.pageX=s,a.pageY=l,a.dragGetX_=h,a.dragGetY_=u,a.isOK=d,a.isValidPoint=c,a.floatFormat=p,a.zeropad=g,a.hmsString_=f,a.dateString_=v,a.round_=_,a.binarySearch=y,a.dateParser=x,a.dateStrToMillis=m,a.update=b,a.updateDeep=w,a.isArrayLike=A,a.isDateLike=O,a.clone=D,a.createCanvas=E,a.getContextPixelRatio=L,a.Iterator=T,a.createIterator=S,a.repeatAndCleanup=P,a.isPixelChangingOptionList=C,a.detectLineDelimiter=M,a.isNodeContainedBy=N,a.pow=F,a.toRGB_=R,a.isCanvasSupported=I,a.parseFloat_=H,a.numberValueFormatter=Y,a.numberAxisLabelFormatter=X,a.dateAxisLabelFormatter=V,a.dateValueFormatter=Z;var B=t(\"./dygraph-tickers\"),G=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e.default=t,e}(B);a.LOG_SCALE=10;var W=Math.log(10);a.LN_TEN=W;var U=function(t){return Math.log(t)/W};a.log10=U;var z=function(t,e,a){var i=U(t),n=U(e),r=i+a*(n-i);return Math.pow(10,r)};a.logRangeFraction=z;var j=[2,2];a.DOTTED_LINE=j;var K=[7,3];a.DASHED_LINE=K;var q=[7,2,2,2];a.DOT_DASH_LINE=q;a.HORIZONTAL=1;a.VERTICAL=2;var Q=function(t){return t.getContext(\"2d\")};a.getContext=Q;var J=function(t,e,a){t.addEventListener(e,a,!1)};a.addEvent=J;var $={getFullYear:function(t){return t.getFullYear()},getMonth:function(t){return t.getMonth()},getDate:function(t){return t.getDate()},getHours:function(t){return t.getHours()},getMinutes:function(t){return t.getMinutes()},getSeconds:function(t){return t.getSeconds()},getMilliseconds:function(t){return t.getMilliseconds()},getDay:function(t){return t.getDay()},makeDate:function(t,e,a,i,n,r,o){return new Date(t,e,a,i,n,r,o)}};a.DateAccessorsLocal=$;var tt={getFullYear:function(t){return t.getUTCFullYear()},getMonth:function(t){return t.getUTCMonth()},getDate:function(t){return t.getUTCDate()},getHours:function(t){return t.getUTCHours()},getMinutes:function(t){return t.getUTCMinutes()},getSeconds:function(t){return t.getUTCSeconds()},getMilliseconds:function(t){return t.getUTCMilliseconds()},getDay:function(t){return t.getUTCDay()},makeDate:function(t,e,a,i,n,r,o){return new Date(Date.UTC(t,e,a,i,n,r,o))}};a.DateAccessorsUTC=tt,T.prototype.next=function(){if(!this.hasNext)return null;for(var t=this.peek,e=this.nextIdx_+1,a=!1;e<this.end_;){if(!this.predicate_||this.predicate_(this.array_,e)){this.peek=this.array_[e],a=!0;break}e++}return this.nextIdx_=e,a||(this.hasNext=!1,this.peek=null),t};var et=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}();a.requestAnimFrame=et;var at={annotationClickHandler:!0,annotationDblClickHandler:!0,annotationMouseOutHandler:!0,annotationMouseOverHandler:!0,axisLineColor:!0,axisLineWidth:!0,clickCallback:!0,drawCallback:!0,drawHighlightPointCallback:!0,drawPoints:!0,drawPointCallback:!0,drawGrid:!0,fillAlpha:!0,gridLineColor:!0,gridLineWidth:!0,hideOverlayOnMouseOut:!0,highlightCallback:!0,highlightCircleSize:!0,interactionModel:!0,labelsDiv:!0,labelsKMB:!0,labelsKMG2:!0,labelsSeparateLines:!0,labelsShowZeroValues:!0,legend:!0,panEdgeFraction:!0,pixelsPerYLabel:!0,pointClickCallback:!0,pointSize:!0,rangeSelectorPlotFillColor:!0,rangeSelectorPlotFillGradientColor:!0,rangeSelectorPlotStrokeColor:!0,rangeSelectorBackgroundStrokeColor:!0,rangeSelectorBackgroundLineWidth:!0,rangeSelectorPlotLineWidth:!0,rangeSelectorForegroundStrokeColor:!0,rangeSelectorForegroundLineWidth:!0,rangeSelectorAlpha:!0,showLabelsOnHighlight:!0,showRoller:!0,strokeWidth:!0,underlayCallback:!0,unhighlightCallback:!0,zoomCallback:!0},it={DEFAULT:function(t,e,a,i,n,r,o){a.beginPath(),a.fillStyle=r,a.arc(i,n,o,0,2*Math.PI,!1),a.fill()}};a.Circles=it;var nt=/^rgba?\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})(?:,\\s*([01](?:\\.\\d+)?))?\\)$/,rt=[\"K\",\"M\",\"B\",\"T\",\"Q\"],ot=[\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"],st=[\"m\",\"u\",\"n\",\"p\",\"f\",\"a\",\"z\",\"y\"],lt=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"]},{\"./dygraph-tickers\":16}],18:[function(t,e,a){(function(i){\"use strict\";function n(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e.default=t,e}function r(t){return t&&t.__esModule?t:{default:t}}function o(t){var e=t[0],a=e[0];if(\"number\"!=typeof a&&!x.isDateLike(a))throw new Error(\"Expected number or date but got \"+typeof a+\": \"+a+\".\");for(var i=1;i<e.length;i++){var n=e[i];if(null!==n&&void 0!==n&&(\"number\"!=typeof n&&!x.isArrayLike(n)))throw new Error(\"Expected number or array but got \"+typeof n+\": \"+n+\".\")}}Object.defineProperty(a,\"__esModule\",{value:!0});var s=function(){function t(t,e){var a=[],i=!0,n=!1,r=void 0;try{for(var o,s=t[Symbol.iterator]();!(i=(o=s.next()).done)&&(a.push(o.value),!e||a.length!==e);i=!0);}catch(t){n=!0,r=t}finally{try{!i&&s.return&&s.return()}finally{if(n)throw r}}return a}return function(e,a){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,a);throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}}(),l=t(\"./dygraph-layout\"),h=r(l),u=t(\"./dygraph-canvas\"),d=r(u),c=t(\"./dygraph-options\"),p=r(c),g=t(\"./dygraph-interaction-model\"),f=r(g),v=t(\"./dygraph-tickers\"),_=n(v),y=t(\"./dygraph-utils\"),x=n(y),m=t(\"./dygraph-default-attrs\"),b=r(m),w=t(\"./dygraph-options-reference\"),A=(r(w),t(\"./iframe-tarp\")),O=r(A),D=t(\"./datahandler/default\"),E=r(D),L=t(\"./datahandler/bars-error\"),T=r(L),S=t(\"./datahandler/bars-custom\"),P=r(S),C=t(\"./datahandler/default-fractions\"),M=r(C),N=t(\"./datahandler/bars-fractions\"),F=r(N),k=t(\"./datahandler/bars\"),R=r(k),I=t(\"./plugins/annotations\"),H=r(I),Y=t(\"./plugins/axes\"),X=r(Y),V=t(\"./plugins/chart-labels\"),Z=r(V),B=t(\"./plugins/grid\"),G=r(B),W=t(\"./plugins/legend\"),U=r(W),z=t(\"./plugins/range-selector\"),j=r(z),K=t(\"./dygraph-gviz\"),q=r(K),Q=function(t,e,a){this.__init__(t,e,a)};Q.NAME=\"Dygraph\",Q.VERSION=\"2.1.0\",Q.DEFAULT_ROLL_PERIOD=1,Q.DEFAULT_WIDTH=480,Q.DEFAULT_HEIGHT=320,Q.ANIMATION_STEPS=12,Q.ANIMATION_DURATION=200,Q.Plotters=d.default._Plotters,Q.addedAnnotationCSS=!1,Q.prototype.__init__=function(t,e,a){if(this.is_initial_draw_=!0,this.readyFns_=[],null!==a&&void 0!==a||(a={}),a=Q.copyUserAttrs_(a),\"string\"==typeof t&&(t=document.getElementById(t)),!t)throw new Error(\"Constructing dygraph with a non-existent div!\");this.maindiv_=t,this.file_=e,this.rollPeriod_=a.rollPeriod||Q.DEFAULT_ROLL_PERIOD,this.previousVerticalX_=-1,this.fractions_=a.fractions||!1,this.dateWindow_=a.dateWindow||null,this.annotations_=[],t.innerHTML=\"\",\"\"===t.style.width&&a.width&&(t.style.width=a.width+\"px\"),\"\"===t.style.height&&a.height&&(t.style.height=a.height+\"px\"),\"\"===t.style.height&&0===t.clientHeight&&(t.style.height=Q.DEFAULT_HEIGHT+\"px\",\"\"===t.style.width&&(t.style.width=Q.DEFAULT_WIDTH+\"px\")),this.width_=t.clientWidth||a.width||0,this.height_=t.clientHeight||a.height||0,a.stackedGraph&&(a.fillGraph=!0),this.user_attrs_={},x.update(this.user_attrs_,a),this.attrs_={},x.updateDeep(this.attrs_,b.default),this.boundaryIds_=[],this.setIndexByName_={},this.datasetIndex_=[],this.registeredEvents_=[],this.eventListeners_={},this.attributes_=new p.default(this),this.createInterface_(),this.plugins_=[];for(var i=Q.PLUGINS.concat(this.getOption(\"plugins\")),n=0;n<i.length;n++){var r,o=i[n];r=void 0!==o.activate?o:new o;var s={plugin:r,events:{},options:{},pluginOptions:{}},l=r.activate(this);for(var h in l)l.hasOwnProperty(h)&&(s.events[h]=l[h]);this.plugins_.push(s)}for(var n=0;n<this.plugins_.length;n++){var u=this.plugins_[n];for(var h in u.events)if(u.events.hasOwnProperty(h)){var d=u.events[h],c=[u.plugin,d];h in this.eventListeners_?this.eventListeners_[h].push(c):this.eventListeners_[h]=[c]}}this.createDragInterface_(),this.start_()},Q.prototype.cascadeEvents_=function(t,e){if(!(t in this.eventListeners_))return!1;var a={dygraph:this,cancelable:!1,defaultPrevented:!1,preventDefault:function(){if(!a.cancelable)throw\"Cannot call preventDefault on non-cancelable event.\";a.defaultPrevented=!0},propagationStopped:!1,stopPropagation:function(){a.propagationStopped=!0}};x.update(a,e);var i=this.eventListeners_[t];if(i)for(var n=i.length-1;n>=0;n--){var r=i[n][0],o=i[n][1];if(o.call(r,a),a.propagationStopped)break}return a.defaultPrevented},Q.prototype.getPluginInstance_=function(t){for(var e=0;e<this.plugins_.length;e++){var a=this.plugins_[e];if(a.plugin instanceof t)return a.plugin}return null},Q.prototype.isZoomed=function(t){var e=!!this.dateWindow_;if(\"x\"===t)return e;var a=this.axes_.map(function(t){return!!t.valueRange}).indexOf(!0)>=0;if(null===t||void 0===t)return e||a;if(\"y\"===t)return a;throw new Error(\"axis parameter is [\"+t+\"] must be null, 'x' or 'y'.\")},Q.prototype.toString=function(){var t=this.maindiv_;return\"[Dygraph \"+(t&&t.id?t.id:t)+\"]\"},Q.prototype.attr_=function(t,e){return e?this.attributes_.getForSeries(t,e):this.attributes_.get(t)},Q.prototype.getOption=function(t,e){return this.attr_(t,e)},Q.prototype.getNumericOption=function(t,e){return this.getOption(t,e)},Q.prototype.getStringOption=function(t,e){return this.getOption(t,e)},Q.prototype.getBooleanOption=function(t,e){return this.getOption(t,e)},Q.prototype.getFunctionOption=function(t,e){return this.getOption(t,e)},Q.prototype.getOptionForAxis=function(t,e){return this.attributes_.getForAxis(t,e)},Q.prototype.optionsViewForAxis_=function(t){var e=this;return function(a){var i=e.user_attrs_.axes;return i&&i[t]&&i[t].hasOwnProperty(a)?i[t][a]:(\"x\"!==t||\"logscale\"!==a)&&(void 0!==e.user_attrs_[a]?e.user_attrs_[a]:(i=e.attrs_.axes,i&&i[t]&&i[t].hasOwnProperty(a)?i[t][a]:\"y\"==t&&e.axes_[0].hasOwnProperty(a)?e.axes_[0][a]:\"y2\"==t&&e.axes_[1].hasOwnProperty(a)?e.axes_[1][a]:e.attr_(a)))}},Q.prototype.rollPeriod=function(){return this.rollPeriod_},Q.prototype.xAxisRange=function(){return this.dateWindow_?this.dateWindow_:this.xAxisExtremes()},Q.prototype.xAxisExtremes=function(){var t=this.getNumericOption(\"xRangePad\")/this.plotter_.area.w;if(0===this.numRows())return[0-t,1+t];var e=this.rawData_[0][0],a=this.rawData_[this.rawData_.length-1][0];if(t){var i=a-e;e-=i*t,a+=i*t}return[e,a]},Q.prototype.yAxisExtremes=function(){var t=this.gatherDatasets_(this.rolledSeries_,null),e=t.extremes,a=this.axes_;this.computeYAxisRanges_(e);var i=this.axes_;return this.axes_=a,i.map(function(t){return t.extremeRange})},Q.prototype.yAxisRange=function(t){if(void 0===t&&(t=0),t<0||t>=this.axes_.length)return null;var e=this.axes_[t];return[e.computedValueRange[0],e.computedValueRange[1]]},Q.prototype.yAxisRanges=function(){for(var t=[],e=0;e<this.axes_.length;e++)t.push(this.yAxisRange(e));return t},Q.prototype.toDomCoords=function(t,e,a){return[this.toDomXCoord(t),this.toDomYCoord(e,a)]},Q.prototype.toDomXCoord=function(t){if(null===t)return null;var e=this.plotter_.area,a=this.xAxisRange();return e.x+(t-a[0])/(a[1]-a[0])*e.w},Q.prototype.toDomYCoord=function(t,e){var a=this.toPercentYCoord(t,e);if(null===a)return null;var i=this.plotter_.area;return i.y+a*i.h},Q.prototype.toDataCoords=function(t,e,a){return[this.toDataXCoord(t),this.toDataYCoord(e,a)]},Q.prototype.toDataXCoord=function(t){if(null===t)return null;var e=this.plotter_.area,a=this.xAxisRange();if(this.attributes_.getForAxis(\"logscale\",\"x\")){var i=(t-e.x)/e.w;return x.logRangeFraction(a[0],a[1],i)}return a[0]+(t-e.x)/e.w*(a[1]-a[0])},Q.prototype.toDataYCoord=function(t,e){if(null===t)return null;var a=this.plotter_.area,i=this.yAxisRange(e);if(void 0===e&&(e=0),this.attributes_.getForAxis(\"logscale\",e)){var n=(t-a.y)/a.h;return x.logRangeFraction(i[1],i[0],n)}return i[0]+(a.y+a.h-t)/a.h*(i[1]-i[0])},Q.prototype.toPercentYCoord=function(t,e){if(null===t)return null;void 0===e&&(e=0);var a,i=this.yAxisRange(e);if(this.attributes_.getForAxis(\"logscale\",e)){var n=x.log10(i[0]),r=x.log10(i[1]);a=(r-x.log10(t))/(r-n)}else a=(i[1]-t)/(i[1]-i[0]);return a},Q.prototype.toPercentXCoord=function(t){if(null===t)return null;var e,a=this.xAxisRange();if(!0===this.attributes_.getForAxis(\"logscale\",\"x\")){var i=x.log10(a[0]),n=x.log10(a[1]);e=(x.log10(t)-i)/(n-i)}else e=(t-a[0])/(a[1]-a[0]);return e},Q.prototype.numColumns=function(){return this.rawData_?this.rawData_[0]?this.rawData_[0].length:this.attr_(\"labels\").length:0},Q.prototype.numRows=function(){return this.rawData_?this.rawData_.length:0},Q.prototype.getValue=function(t,e){return t<0||t>this.rawData_.length?null:e<0||e>this.rawData_[t].length?null:this.rawData_[t][e]},Q.prototype.createInterface_=function(){var t=this.maindiv_;this.graphDiv=document.createElement(\"div\"),this.graphDiv.style.textAlign=\"left\",this.graphDiv.style.position=\"relative\",t.appendChild(this.graphDiv),this.canvas_=x.createCanvas(),this.canvas_.style.position=\"absolute\",this.hidden_=this.createPlotKitCanvas_(this.canvas_),this.canvas_ctx_=x.getContext(this.canvas_),this.hidden_ctx_=x.getContext(this.hidden_),this.resizeElements_(),this.graphDiv.appendChild(this.hidden_),this.graphDiv.appendChild(this.canvas_),this.mouseEventElement_=this.createMouseEventElement_(),this.layout_=new h.default(this);var e=this;this.mouseMoveHandler_=function(t){e.mouseMove_(t)},this.mouseOutHandler_=function(t){var a=t.target||t.fromElement,i=t.relatedTarget||t.toElement;x.isNodeContainedBy(a,e.graphDiv)&&!x.isNodeContainedBy(i,e.graphDiv)&&e.mouseOut_(t)},this.addAndTrackEvent(window,\"mouseout\",this.mouseOutHandler_),this.addAndTrackEvent(this.mouseEventElement_,\"mousemove\",this.mouseMoveHandler_),this.resizeHandler_||(this.resizeHandler_=function(t){e.resize()},this.addAndTrackEvent(window,\"resize\",this.resizeHandler_))},Q.prototype.resizeElements_=function(){this.graphDiv.style.width=this.width_+\"px\",this.graphDiv.style.height=this.height_+\"px\";var t=this.getNumericOption(\"pixelRatio\"),e=t||x.getContextPixelRatio(this.canvas_ctx_);this.canvas_.width=this.width_*e,this.canvas_.height=this.height_*e,this.canvas_.style.width=this.width_+\"px\",this.canvas_.style.height=this.height_+\"px\",1!==e&&this.canvas_ctx_.scale(e,e);var a=t||x.getContextPixelRatio(this.hidden_ctx_);this.hidden_.width=this.width_*a,this.hidden_.height=this.height_*a,this.hidden_.style.width=this.width_+\"px\",this.hidden_.style.height=this.height_+\"px\",1!==a&&this.hidden_ctx_.scale(a,a)},Q.prototype.destroy=function(){this.canvas_ctx_.restore(),this.hidden_ctx_.restore();for(var t=this.plugins_.length-1;t>=0;t--){var e=this.plugins_.pop();e.plugin.destroy&&e.plugin.destroy()}this.removeTrackedEvents_(),x.removeEvent(window,\"mouseout\",this.mouseOutHandler_),x.removeEvent(this.mouseEventElement_,\"mousemove\",this.mouseMoveHandler_),x.removeEvent(window,\"resize\",this.resizeHandler_),this.resizeHandler_=null,function t(e){for(;e.hasChildNodes();)t(e.firstChild),e.removeChild(e.firstChild)}(this.maindiv_);var a=function(t){for(var e in t)\"object\"==typeof t[e]&&(t[e]=null)};a(this.layout_),a(this.plotter_),a(this)},Q.prototype.createPlotKitCanvas_=function(t){var e=x.createCanvas();return e.style.position=\"absolute\",e.style.top=t.style.top,e.style.left=t.style.left,\ne.width=this.width_,e.height=this.height_,e.style.width=this.width_+\"px\",e.style.height=this.height_+\"px\",e},Q.prototype.createMouseEventElement_=function(){return this.canvas_},Q.prototype.setColors_=function(){var t=this.getLabels(),e=t.length-1;this.colors_=[],this.colorsMap_={};for(var a=this.getNumericOption(\"colorSaturation\")||1,i=this.getNumericOption(\"colorValue\")||.5,n=Math.ceil(e/2),r=this.getOption(\"colors\"),o=this.visibility(),s=0;s<e;s++)if(o[s]){var l=t[s+1],h=this.attributes_.getForSeries(\"color\",l);if(!h)if(r)h=r[s%r.length];else{var u=s%2?n+(s+1)/2:Math.ceil((s+1)/2),d=1*u/(1+e);h=x.hsvToRGB(d,a,i)}this.colors_.push(h),this.colorsMap_[l]=h}},Q.prototype.getColors=function(){return this.colors_},Q.prototype.getPropertiesForSeries=function(t){for(var e=-1,a=this.getLabels(),i=1;i<a.length;i++)if(a[i]==t){e=i;break}return-1==e?null:{name:t,column:e,visible:this.visibility()[e-1],color:this.colorsMap_[t],axis:1+this.attributes_.axisForSeries(t)}},Q.prototype.createRollInterface_=function(){var t=this,e=this.roller_;e||(this.roller_=e=document.createElement(\"input\"),e.type=\"text\",e.style.display=\"none\",e.className=\"dygraph-roller\",this.graphDiv.appendChild(e));var a=this.getBooleanOption(\"showRoller\")?\"block\":\"none\",i=this.getArea(),n={top:i.y+i.h-25+\"px\",left:i.x+1+\"px\",display:a};e.size=\"2\",e.value=this.rollPeriod_,x.update(e.style,n),e.onchange=function(){return t.adjustRoll(e.value)}},Q.prototype.createDragInterface_=function(){var t={isZooming:!1,isPanning:!1,is2DPan:!1,dragStartX:null,dragStartY:null,dragEndX:null,dragEndY:null,dragDirection:null,prevEndX:null,prevEndY:null,prevDragDirection:null,cancelNextDblclick:!1,initialLeftmostDate:null,xUnitsPerPixel:null,dateRange:null,px:0,py:0,boundedDates:null,boundedValues:null,tarp:new O.default,initializeMouseDown:function(t,e,a){t.preventDefault?t.preventDefault():(t.returnValue=!1,t.cancelBubble=!0);var i=x.findPos(e.canvas_);a.px=i.x,a.py=i.y,a.dragStartX=x.dragGetX_(t,a),a.dragStartY=x.dragGetY_(t,a),a.cancelNextDblclick=!1,a.tarp.cover()},destroy:function(){var t=this;if((t.isZooming||t.isPanning)&&(t.isZooming=!1,t.dragStartX=null,t.dragStartY=null),t.isPanning){t.isPanning=!1,t.draggingDate=null,t.dateRange=null;for(var e=0;e<a.axes_.length;e++)delete a.axes_[e].draggingValue,delete a.axes_[e].dragValueRange}t.tarp.uncover()}},e=this.getOption(\"interactionModel\"),a=this;for(var i in e)e.hasOwnProperty(i)&&this.addAndTrackEvent(this.mouseEventElement_,i,function(e){return function(i){e(i,a,t)}}(e[i]));if(!e.willDestroyContextMyself){var n=function(e){t.destroy()};this.addAndTrackEvent(document,\"mouseup\",n)}},Q.prototype.drawZoomRect_=function(t,e,a,i,n,r,o,s){var l=this.canvas_ctx_;r==x.HORIZONTAL?l.clearRect(Math.min(e,o),this.layout_.getPlotArea().y,Math.abs(e-o),this.layout_.getPlotArea().h):r==x.VERTICAL&&l.clearRect(this.layout_.getPlotArea().x,Math.min(i,s),this.layout_.getPlotArea().w,Math.abs(i-s)),t==x.HORIZONTAL?a&&e&&(l.fillStyle=\"rgba(128,128,128,0.33)\",l.fillRect(Math.min(e,a),this.layout_.getPlotArea().y,Math.abs(a-e),this.layout_.getPlotArea().h)):t==x.VERTICAL&&n&&i&&(l.fillStyle=\"rgba(128,128,128,0.33)\",l.fillRect(this.layout_.getPlotArea().x,Math.min(i,n),this.layout_.getPlotArea().w,Math.abs(n-i)))},Q.prototype.clearZoomRect_=function(){this.currentZoomRectArgs_=null,this.canvas_ctx_.clearRect(0,0,this.width_,this.height_)},Q.prototype.doZoomX_=function(t,e){this.currentZoomRectArgs_=null;var a=this.toDataXCoord(t),i=this.toDataXCoord(e);this.doZoomXDates_(a,i)},Q.prototype.doZoomXDates_=function(t,e){var a=this,i=this.xAxisRange(),n=[t,e],r=this.getFunctionOption(\"zoomCallback\");this.doAnimatedZoom(i,n,null,null,function(){r&&r.call(a,t,e,a.yAxisRanges())})},Q.prototype.doZoomY_=function(t,e){var a=this;this.currentZoomRectArgs_=null;for(var i=this.yAxisRanges(),n=[],r=0;r<this.axes_.length;r++){var o=this.toDataYCoord(t,r),l=this.toDataYCoord(e,r);n.push([l,o])}var h=this.getFunctionOption(\"zoomCallback\");this.doAnimatedZoom(null,null,i,n,function(){if(h){var t=a.xAxisRange(),e=s(t,2),i=e[0],n=e[1];h.call(a,i,n,a.yAxisRanges())}})},Q.zoomAnimationFunction=function(t,e){return(1-Math.pow(1.5,-t))/(1-Math.pow(1.5,-e))},Q.prototype.resetZoom=function(){var t=this,e=this.isZoomed(\"x\"),a=this.isZoomed(\"y\"),i=e||a;if(this.clearSelection(),i){var n=this.xAxisExtremes(),r=s(n,2),o=r[0],l=r[1],h=this.getBooleanOption(\"animatedZooms\"),u=this.getFunctionOption(\"zoomCallback\");if(!h)return this.dateWindow_=null,this.axes_.forEach(function(t){t.valueRange&&delete t.valueRange}),this.drawGraph_(),void(u&&u.call(this,o,l,this.yAxisRanges()));var d=null,c=null,p=null,g=null;e&&(d=this.xAxisRange(),c=[o,l]),a&&(p=this.yAxisRanges(),g=this.yAxisExtremes()),this.doAnimatedZoom(d,c,p,g,function(){t.dateWindow_=null,t.axes_.forEach(function(t){t.valueRange&&delete t.valueRange}),u&&u.call(t,o,l,t.yAxisRanges())})}},Q.prototype.doAnimatedZoom=function(t,e,a,i,n){var r,o,s=this,l=this.getBooleanOption(\"animatedZooms\")?Q.ANIMATION_STEPS:1,h=[],u=[];if(null!==t&&null!==e)for(r=1;r<=l;r++)o=Q.zoomAnimationFunction(r,l),h[r-1]=[t[0]*(1-o)+o*e[0],t[1]*(1-o)+o*e[1]];if(null!==a&&null!==i)for(r=1;r<=l;r++){o=Q.zoomAnimationFunction(r,l);for(var d=[],c=0;c<this.axes_.length;c++)d.push([a[c][0]*(1-o)+o*i[c][0],a[c][1]*(1-o)+o*i[c][1]]);u[r-1]=d}x.repeatAndCleanup(function(t){if(u.length)for(var e=0;e<s.axes_.length;e++){var a=u[t][e];s.axes_[e].valueRange=[a[0],a[1]]}h.length&&(s.dateWindow_=h[t]),s.drawGraph_()},l,Q.ANIMATION_DURATION/l,n)},Q.prototype.getArea=function(){return this.plotter_.area},Q.prototype.eventToDomCoords=function(t){if(t.offsetX&&t.offsetY)return[t.offsetX,t.offsetY];var e=x.findPos(this.mouseEventElement_);return[x.pageX(t)-e.x,x.pageY(t)-e.y]},Q.prototype.findClosestRow=function(t){for(var e=1/0,a=-1,i=this.layout_.points,n=0;n<i.length;n++)for(var r=i[n],o=r.length,s=0;s<o;s++){var l=r[s];if(x.isValidPoint(l,!0)){var h=Math.abs(l.canvasx-t);h<e&&(e=h,a=l.idx)}}return a},Q.prototype.findClosestPoint=function(t,e){for(var a,i,n,r,o,s,l,h=1/0,u=this.layout_.points.length-1;u>=0;--u)for(var d=this.layout_.points[u],c=0;c<d.length;++c)r=d[c],x.isValidPoint(r)&&(i=r.canvasx-t,n=r.canvasy-e,(a=i*i+n*n)<h&&(h=a,o=r,s=u,l=r.idx));return{row:l,seriesName:this.layout_.setNames[s],point:o}},Q.prototype.findStackedPoint=function(t,e){for(var a,i,n=this.findClosestRow(t),r=0;r<this.layout_.points.length;++r){var o=this.getLeftBoundary_(r),s=n-o,l=this.layout_.points[r];if(!(s>=l.length)){var h=l[s];if(x.isValidPoint(h)){var u=h.canvasy;if(t>h.canvasx&&s+1<l.length){var d=l[s+1];if(x.isValidPoint(d)){var c=d.canvasx-h.canvasx;if(c>0){var p=(t-h.canvasx)/c;u+=p*(d.canvasy-h.canvasy)}}}else if(t<h.canvasx&&s>0){var g=l[s-1];if(x.isValidPoint(g)){var c=h.canvasx-g.canvasx;if(c>0){var p=(h.canvasx-t)/c;u+=p*(g.canvasy-h.canvasy)}}}(0===r||u<e)&&(a=h,i=r)}}}return{row:n,seriesName:this.layout_.setNames[i],point:a}},Q.prototype.mouseMove_=function(t){var e=this.layout_.points;if(void 0!==e&&null!==e){var a=this.eventToDomCoords(t),i=a[0],n=a[1],r=this.getOption(\"highlightSeriesOpts\"),o=!1;if(r&&!this.isSeriesLocked()){var s;s=this.getBooleanOption(\"stackedGraph\")?this.findStackedPoint(i,n):this.findClosestPoint(i,n),o=this.setSelection(s.row,s.seriesName)}else{var l=this.findClosestRow(i);o=this.setSelection(l)}var h=this.getFunctionOption(\"highlightCallback\");h&&o&&h.call(this,t,this.lastx_,this.selPoints_,this.lastRow_,this.highlightSet_)}},Q.prototype.getLeftBoundary_=function(t){if(this.boundaryIds_[t])return this.boundaryIds_[t][0];for(var e=0;e<this.boundaryIds_.length;e++)if(void 0!==this.boundaryIds_[e])return this.boundaryIds_[e][0];return 0},Q.prototype.animateSelection_=function(t){void 0===this.fadeLevel&&(this.fadeLevel=0),void 0===this.animateId&&(this.animateId=0);var e=this.fadeLevel,a=t<0?e:10-e;if(a<=0)return void(this.fadeLevel&&this.updateSelection_(1));var i=++this.animateId,n=this,r=function(){0!==n.fadeLevel&&t<0&&(n.fadeLevel=0,n.clearSelection())};x.repeatAndCleanup(function(e){n.animateId==i&&(n.fadeLevel+=t,0===n.fadeLevel?n.clearSelection():n.updateSelection_(n.fadeLevel/10))},a,30,r)},Q.prototype.updateSelection_=function(t){this.cascadeEvents_(\"select\",{selectedRow:-1===this.lastRow_?void 0:this.lastRow_,selectedX:-1===this.lastx_?void 0:this.lastx_,selectedPoints:this.selPoints_});var e,a=this.canvas_ctx_;if(this.getOption(\"highlightSeriesOpts\")){a.clearRect(0,0,this.width_,this.height_);var i=1-this.getNumericOption(\"highlightSeriesBackgroundAlpha\"),n=x.toRGB_(this.getOption(\"highlightSeriesBackgroundColor\"));if(i){if(void 0===t)return void this.animateSelection_(1);i*=t,a.fillStyle=\"rgba(\"+n.r+\",\"+n.g+\",\"+n.b+\",\"+i+\")\",a.fillRect(0,0,this.width_,this.height_)}this.plotter_._renderLineChart(this.highlightSet_,a)}else if(this.previousVerticalX_>=0){var r=0,o=this.attr_(\"labels\");for(e=1;e<o.length;e++){var s=this.getNumericOption(\"highlightCircleSize\",o[e]);s>r&&(r=s)}var l=this.previousVerticalX_;a.clearRect(l-r-1,0,2*r+2,this.height_)}if(this.selPoints_.length>0){var h=this.selPoints_[0].canvasx;for(a.save(),e=0;e<this.selPoints_.length;e++){var u=this.selPoints_[e];if(!isNaN(u.canvasy)){var d=this.getNumericOption(\"highlightCircleSize\",u.name),c=this.getFunctionOption(\"drawHighlightPointCallback\",u.name),p=this.plotter_.colors[u.name];c||(c=x.Circles.DEFAULT),a.lineWidth=this.getNumericOption(\"strokeWidth\",u.name),a.strokeStyle=p,a.fillStyle=p,c.call(this,this,u.name,a,h,u.canvasy,p,d,u.idx)}}a.restore(),this.previousVerticalX_=h}},Q.prototype.setSelection=function(t,e,a){this.selPoints_=[];var i=!1;if(!1!==t&&t>=0){t!=this.lastRow_&&(i=!0),this.lastRow_=t;for(var n=0;n<this.layout_.points.length;++n){var r=this.layout_.points[n],o=t-this.getLeftBoundary_(n);if(o>=0&&o<r.length&&r[o].idx==t){var s=r[o];null!==s.yval&&this.selPoints_.push(s)}else for(var l=0;l<r.length;++l){var s=r[l];if(s.idx==t){null!==s.yval&&this.selPoints_.push(s);break}}}}else this.lastRow_>=0&&(i=!0),this.lastRow_=-1;return this.selPoints_.length?this.lastx_=this.selPoints_[0].xval:this.lastx_=-1,void 0!==e&&(this.highlightSet_!==e&&(i=!0),this.highlightSet_=e),void 0!==a&&(this.lockedSet_=a),i&&this.updateSelection_(void 0),i},Q.prototype.mouseOut_=function(t){this.getFunctionOption(\"unhighlightCallback\")&&this.getFunctionOption(\"unhighlightCallback\").call(this,t),this.getBooleanOption(\"hideOverlayOnMouseOut\")&&!this.lockedSet_&&this.clearSelection()},Q.prototype.clearSelection=function(){if(this.cascadeEvents_(\"deselect\",{}),this.lockedSet_=!1,this.fadeLevel)return void this.animateSelection_(-1);this.canvas_ctx_.clearRect(0,0,this.width_,this.height_),this.fadeLevel=0,this.selPoints_=[],this.lastx_=-1,this.lastRow_=-1,this.highlightSet_=null},Q.prototype.getSelection=function(){if(!this.selPoints_||this.selPoints_.length<1)return-1;for(var t=0;t<this.layout_.points.length;t++)for(var e=this.layout_.points[t],a=0;a<e.length;a++)if(e[a].x==this.selPoints_[0].x)return e[a].idx;return-1},Q.prototype.getHighlightSeries=function(){return this.highlightSet_},Q.prototype.isSeriesLocked=function(){return this.lockedSet_},Q.prototype.loadedEvent_=function(t){this.rawData_=this.parseCSV_(t),this.cascadeDataDidUpdateEvent_(),this.predraw_()},Q.prototype.addXTicks_=function(){var t;t=this.dateWindow_?[this.dateWindow_[0],this.dateWindow_[1]]:this.xAxisExtremes();var e=this.optionsViewForAxis_(\"x\"),a=e(\"ticker\")(t[0],t[1],this.plotter_.area.w,e,this);this.layout_.setXTicks(a)},Q.prototype.getHandlerClass_=function(){return this.attr_(\"dataHandler\")?this.attr_(\"dataHandler\"):this.fractions_?this.getBooleanOption(\"errorBars\")?F.default:M.default:this.getBooleanOption(\"customBars\")?P.default:this.getBooleanOption(\"errorBars\")?T.default:E.default},Q.prototype.predraw_=function(){var t=new Date;this.dataHandler_=new(this.getHandlerClass_()),this.layout_.computePlotArea(),this.computeYAxes_(),this.is_initial_draw_||(this.canvas_ctx_.restore(),this.hidden_ctx_.restore()),this.canvas_ctx_.save(),this.hidden_ctx_.save(),this.plotter_=new d.default(this,this.hidden_,this.hidden_ctx_,this.layout_),this.createRollInterface_(),this.cascadeEvents_(\"predraw\"),this.rolledSeries_=[null];for(var e=1;e<this.numColumns();e++){var a=this.dataHandler_.extractSeries(this.rawData_,e,this.attributes_);this.rollPeriod_>1&&(a=this.dataHandler_.rollingAverage(a,this.rollPeriod_,this.attributes_)),this.rolledSeries_.push(a)}this.drawGraph_();var i=new Date;this.drawingTimeMs_=i-t},Q.PointType=void 0,Q.stackPoints_=function(t,e,a,i){for(var n=null,r=null,o=null,s=-1,l=0;l<t.length;++l){var h=t[l],u=h.xval;void 0===e[u]&&(e[u]=0);var d=h.yval;isNaN(d)||null===d?\"none\"==i?d=0:(!function(e){if(!(s>=e))for(var a=e;a<t.length;++a)if(o=null,!isNaN(t[a].yval)&&null!==t[a].yval){s=a,o=t[a];break}}(l),d=r&&o&&\"none\"!=i?r.yval+(o.yval-r.yval)*((u-r.xval)/(o.xval-r.xval)):r&&\"all\"==i?r.yval:o&&\"all\"==i?o.yval:0):r=h;var c=e[u];n!=u&&(c+=d,e[u]=c),n=u,h.yval_stacked=c,c>a[1]&&(a[1]=c),c<a[0]&&(a[0]=c)}},Q.prototype.gatherDatasets_=function(t,e){var a,i,n,r,o,s,l=[],h=[],u=[],d={},c=t.length-1;for(a=c;a>=1;a--)if(this.visibility()[a-1]){if(e){s=t[a];var p=e[0],g=e[1];for(n=null,r=null,i=0;i<s.length;i++)s[i][0]>=p&&null===n&&(n=i),s[i][0]<=g&&(r=i);null===n&&(n=0);for(var f=n,v=!0;v&&f>0;)f--,v=null===s[f][1];null===r&&(r=s.length-1);var _=r;for(v=!0;v&&_<s.length-1;)_++,v=null===s[_][1];f!==n&&(n=f),_!==r&&(r=_),l[a-1]=[n,r],s=s.slice(n,r+1)}else s=t[a],l[a-1]=[0,s.length-1];var y=this.attr_(\"labels\")[a],x=this.dataHandler_.getExtremeYValues(s,e,this.getBooleanOption(\"stepPlot\",y)),m=this.dataHandler_.seriesToPoints(s,y,l[a-1][0]);this.getBooleanOption(\"stackedGraph\")&&(o=this.attributes_.axisForSeries(y),void 0===u[o]&&(u[o]=[]),Q.stackPoints_(m,u[o],x,this.getBooleanOption(\"stackedGraphNaNFill\"))),d[y]=x,h[a]=m}return{points:h,extremes:d,boundaryIds:l}},Q.prototype.drawGraph_=function(){var t=new Date,e=this.is_initial_draw_;this.is_initial_draw_=!1,this.layout_.removeAllDatasets(),this.setColors_(),this.attrs_.pointSize=.5*this.getNumericOption(\"highlightCircleSize\");var a=this.gatherDatasets_(this.rolledSeries_,this.dateWindow_),i=a.points,n=a.extremes;this.boundaryIds_=a.boundaryIds,this.setIndexByName_={};for(var r=this.attr_(\"labels\"),o=0,s=1;s<i.length;s++)this.visibility()[s-1]&&(this.layout_.addDataset(r[s],i[s]),this.datasetIndex_[s]=o++);for(var s=0;s<r.length;s++)this.setIndexByName_[r[s]]=s;if(this.computeYAxisRanges_(n),this.layout_.setYAxes(this.axes_),this.addXTicks_(),this.layout_.evaluate(),this.renderGraph_(e),this.getStringOption(\"timingName\")){var l=new Date;console.log(this.getStringOption(\"timingName\")+\" - drawGraph: \"+(l-t)+\"ms\")}},Q.prototype.renderGraph_=function(t){this.cascadeEvents_(\"clearChart\"),this.plotter_.clear();var e=this.getFunctionOption(\"underlayCallback\");e&&e.call(this,this.hidden_ctx_,this.layout_.getPlotArea(),this,this);var a={canvas:this.hidden_,drawingContext:this.hidden_ctx_};this.cascadeEvents_(\"willDrawChart\",a),this.plotter_.render(),this.cascadeEvents_(\"didDrawChart\",a),this.lastRow_=-1,this.canvas_.getContext(\"2d\").clearRect(0,0,this.width_,this.height_);var i=this.getFunctionOption(\"drawCallback\");if(null!==i&&i.call(this,this,t),t)for(this.readyFired_=!0;this.readyFns_.length>0;){var n=this.readyFns_.pop();n(this)}},Q.prototype.computeYAxes_=function(){var t,e,a;for(this.axes_=[],t=0;t<this.attributes_.numAxes();t++)e={g:this},x.update(e,this.attributes_.axisOptions(t)),this.axes_[t]=e;for(t=0;t<this.axes_.length;t++)if(0===t)e=this.optionsViewForAxis_(\"y\"+(t?\"2\":\"\")),(a=e(\"valueRange\"))&&(this.axes_[t].valueRange=a);else{var i=this.user_attrs_.axes;i&&i.y2&&(a=i.y2.valueRange)&&(this.axes_[t].valueRange=a)}},Q.prototype.numAxes=function(){return this.attributes_.numAxes()},Q.prototype.axisPropertiesForSeries=function(t){return this.axes_[this.attributes_.axisForSeries(t)]},Q.prototype.computeYAxisRanges_=function(t){for(var e,a,i,n,r,o=function(t){return isNaN(parseFloat(t))},s=this.attributes_.numAxes(),l=0;l<s;l++){var h=this.axes_[l],u=this.attributes_.getForAxis(\"logscale\",l),d=this.attributes_.getForAxis(\"includeZero\",l),c=this.attributes_.getForAxis(\"independentTicks\",l);i=this.attributes_.seriesForAxis(l),e=!0,n=.1;var p=this.getNumericOption(\"yRangePad\");if(null!==p&&(e=!1,n=p/this.plotter_.area.h),0===i.length)h.extremeRange=[0,1];else{for(var g,f,v=1/0,_=-1/0,y=0;y<i.length;y++)t.hasOwnProperty(i[y])&&(g=t[i[y]][0],null!==g&&(v=Math.min(g,v)),null!==(f=t[i[y]][1])&&(_=Math.max(f,_)));d&&!u&&(v>0&&(v=0),_<0&&(_=0)),v==1/0&&(v=0),_==-1/0&&(_=1),a=_-v,0===a&&(0!==_?a=Math.abs(_):(_=1,a=1));var m=_,b=v;e&&(u?(m=_+n*a,b=v):(m=_+n*a,b=v-n*a,b<0&&v>=0&&(b=0),m>0&&_<=0&&(m=0))),h.extremeRange=[b,m]}if(h.valueRange){var w=o(h.valueRange[0])?h.extremeRange[0]:h.valueRange[0],A=o(h.valueRange[1])?h.extremeRange[1]:h.valueRange[1];h.computedValueRange=[w,A]}else h.computedValueRange=h.extremeRange;if(!e)if(w=h.computedValueRange[0],A=h.computedValueRange[1],w===A&&(w-=.5,A+=.5),u){var O=n/(2*n-1),D=(n-1)/(2*n-1);h.computedValueRange[0]=x.logRangeFraction(w,A,O),h.computedValueRange[1]=x.logRangeFraction(w,A,D)}else a=A-w,h.computedValueRange[0]=w-a*n,h.computedValueRange[1]=A+a*n;if(c){h.independentTicks=c;var E=this.optionsViewForAxis_(\"y\"+(l?\"2\":\"\")),L=E(\"ticker\");h.ticks=L(h.computedValueRange[0],h.computedValueRange[1],this.plotter_.area.h,E,this),r||(r=h)}}if(void 0===r)throw'Configuration Error: At least one axis has to have the \"independentTicks\" option activated.';for(var l=0;l<s;l++){var h=this.axes_[l];if(!h.independentTicks){for(var E=this.optionsViewForAxis_(\"y\"+(l?\"2\":\"\")),L=E(\"ticker\"),T=r.ticks,S=r.computedValueRange[1]-r.computedValueRange[0],P=h.computedValueRange[1]-h.computedValueRange[0],C=[],M=0;M<T.length;M++){var N=(T[M].v-r.computedValueRange[0])/S,F=h.computedValueRange[0]+N*P;C.push(F)}h.ticks=L(h.computedValueRange[0],h.computedValueRange[1],this.plotter_.area.h,E,this,C)}}},Q.prototype.detectTypeFromString_=function(t){var e=!1,a=t.indexOf(\"-\");a>0&&\"e\"!=t[a-1]&&\"E\"!=t[a-1]||t.indexOf(\"/\")>=0||isNaN(parseFloat(t))?e=!0:8==t.length&&t>\"19700101\"&&t<\"20371231\"&&(e=!0),this.setXAxisOptions_(e)},Q.prototype.setXAxisOptions_=function(t){t?(this.attrs_.xValueParser=x.dateParser,this.attrs_.axes.x.valueFormatter=x.dateValueFormatter,this.attrs_.axes.x.ticker=_.dateTicker,this.attrs_.axes.x.axisLabelFormatter=x.dateAxisLabelFormatter):(this.attrs_.xValueParser=function(t){return parseFloat(t)},this.attrs_.axes.x.valueFormatter=function(t){return t},this.attrs_.axes.x.ticker=_.numericTicks,this.attrs_.axes.x.axisLabelFormatter=this.attrs_.axes.x.valueFormatter)},Q.prototype.parseCSV_=function(t){var e,a,i=[],n=x.detectLineDelimiter(t),r=t.split(n||\"\\n\"),o=this.getStringOption(\"delimiter\");-1==r[0].indexOf(o)&&r[0].indexOf(\"\\t\")>=0&&(o=\"\\t\");var s=0;\"labels\"in this.user_attrs_||(s=1,this.attrs_.labels=r[0].split(o),this.attributes_.reparseSeries());for(var l,h=!1,u=this.attr_(\"labels\").length,d=!1,c=s;c<r.length;c++){var p=r[c];if(c,0!==p.length&&\"#\"!=p[0]){var g=p.split(o);if(!(g.length<2)){var f=[];if(h||(this.detectTypeFromString_(g[0]),l=this.getFunctionOption(\"xValueParser\"),h=!0),f[0]=l(g[0],this),this.fractions_)for(a=1;a<g.length;a++)e=g[a].split(\"/\"),2!=e.length?(console.error('Expected fractional \"num/den\" values in CSV data but found a value \\''+g[a]+\"' on line \"+(1+c)+\" ('\"+p+\"') which is not of this form.\"),f[a]=[0,0]):f[a]=[x.parseFloat_(e[0],c,p),x.parseFloat_(e[1],c,p)];else if(this.getBooleanOption(\"errorBars\"))for(g.length%2!=1&&console.error(\"Expected alternating (value, stdev.) pairs in CSV data but line \"+(1+c)+\" has an odd number of values (\"+(g.length-1)+\"): '\"+p+\"'\"),a=1;a<g.length;a+=2)f[(a+1)/2]=[x.parseFloat_(g[a],c,p),x.parseFloat_(g[a+1],c,p)];else if(this.getBooleanOption(\"customBars\"))for(a=1;a<g.length;a++){var v=g[a];/^ *$/.test(v)?f[a]=[null,null,null]:(e=v.split(\";\"),3==e.length?f[a]=[x.parseFloat_(e[0],c,p),x.parseFloat_(e[1],c,p),x.parseFloat_(e[2],c,p)]:console.warn('When using customBars, values must be either blank or \"low;center;high\" tuples (got \"'+v+'\" on line '+(1+c)))}else for(a=1;a<g.length;a++)f[a]=x.parseFloat_(g[a],c,p);if(i.length>0&&f[0]<i[i.length-1][0]&&(d=!0),f.length!=u&&console.error(\"Number of columns in line \"+c+\" (\"+f.length+\") does not agree with number of labels (\"+u+\") \"+p),0===c&&this.attr_(\"labels\")){var _=!0;for(a=0;_&&a<f.length;a++)f[a]&&(_=!1);if(_){console.warn(\"The dygraphs 'labels' option is set, but the first row of CSV data ('\"+p+\"') appears to also contain labels. Will drop the CSV labels and use the option labels.\");continue}}i.push(f)}}}return d&&(console.warn(\"CSV is out of order; order it correctly to speed loading.\"),i.sort(function(t,e){return t[0]-e[0]})),i},Q.prototype.parseArray_=function(t){if(0===t.length)return console.error(\"Can't plot empty data set\"),null;if(0===t[0].length)return console.error(\"Data set cannot contain an empty row\"),null;o(t);var e;if(null===this.attr_(\"labels\")){for(console.warn(\"Using default labels. Set labels explicitly via 'labels' in the options parameter\"),this.attrs_.labels=[\"X\"],e=1;e<t[0].length;e++)this.attrs_.labels.push(\"Y\"+e);this.attributes_.reparseSeries()}else{var a=this.attr_(\"labels\");if(a.length!=t[0].length)return console.error(\"Mismatch between number of labels (\"+a+\") and number of columns in array (\"+t[0].length+\")\"),null}if(x.isDateLike(t[0][0])){this.attrs_.axes.x.valueFormatter=x.dateValueFormatter,this.attrs_.axes.x.ticker=_.dateTicker,this.attrs_.axes.x.axisLabelFormatter=x.dateAxisLabelFormatter;var i=x.clone(t);for(e=0;e<t.length;e++){if(0===i[e].length)return console.error(\"Row \"+(1+e)+\" of data is empty\"),null;if(null===i[e][0]||\"function\"!=typeof i[e][0].getTime||isNaN(i[e][0].getTime()))return console.error(\"x value in row \"+(1+e)+\" is not a Date\"),null;i[e][0]=i[e][0].getTime()}return i}return this.attrs_.axes.x.valueFormatter=function(t){return t},this.attrs_.axes.x.ticker=_.numericTicks,this.attrs_.axes.x.axisLabelFormatter=x.numberAxisLabelFormatter,t},Q.prototype.parseDataTable_=function(t){var e=t.getNumberOfColumns(),a=t.getNumberOfRows(),i=t.getColumnType(0);if(\"date\"==i||\"datetime\"==i)this.attrs_.xValueParser=x.dateParser,this.attrs_.axes.x.valueFormatter=x.dateValueFormatter,this.attrs_.axes.x.ticker=_.dateTicker,this.attrs_.axes.x.axisLabelFormatter=x.dateAxisLabelFormatter;else{if(\"number\"!=i)throw new Error(\"only 'date', 'datetime' and 'number' types are supported for column 1 of DataTable input (Got '\"+i+\"')\");this.attrs_.xValueParser=function(t){return parseFloat(t)},this.attrs_.axes.x.valueFormatter=function(t){return t},this.attrs_.axes.x.ticker=_.numericTicks,this.attrs_.axes.x.axisLabelFormatter=this.attrs_.axes.x.valueFormatter}var n,r,o=[],s={},l=!1;for(n=1;n<e;n++){var h=t.getColumnType(n);if(\"number\"==h)o.push(n);else{if(\"string\"!=h||!this.getBooleanOption(\"displayAnnotations\"))throw new Error(\"Only 'number' is supported as a dependent type with Gviz. 'string' is only supported if displayAnnotations is true\");var u=o[o.length-1];s.hasOwnProperty(u)?s[u].push(n):s[u]=[n],l=!0}}var d=[t.getColumnLabel(0)];for(n=0;n<o.length;n++)d.push(t.getColumnLabel(o[n])),this.getBooleanOption(\"errorBars\")&&(n+=1);this.attrs_.labels=d,e=d.length;var c=[],p=!1,g=[];for(n=0;n<a;n++){var f=[];if(void 0!==t.getValue(n,0)&&null!==t.getValue(n,0)){if(\"date\"==i||\"datetime\"==i?f.push(t.getValue(n,0).getTime()):f.push(t.getValue(n,0)),this.getBooleanOption(\"errorBars\"))for(r=0;r<e-1;r++)f.push([t.getValue(n,1+2*r),t.getValue(n,2+2*r)]);else{for(r=0;r<o.length;r++){var v=o[r];if(f.push(t.getValue(n,v)),l&&s.hasOwnProperty(v)&&null!==t.getValue(n,s[v][0])){var y={};y.series=t.getColumnLabel(v),y.xval=f[0],y.shortText=function(t){var e=String.fromCharCode(65+t%26);for(t=Math.floor(t/26);t>0;)e=String.fromCharCode(65+(t-1)%26)+e.toLowerCase(),t=Math.floor((t-1)/26);return e}(g.length),y.text=\"\";for(var m=0;m<s[v].length;m++)m&&(y.text+=\"\\n\"),y.text+=t.getValue(n,s[v][m]);g.push(y)}}for(r=0;r<f.length;r++)isFinite(f[r])||(f[r]=null)}c.length>0&&f[0]<c[c.length-1][0]&&(p=!0),c.push(f)}else console.warn(\"Ignoring row \"+n+\" of DataTable because of undefined or null first column.\")}p&&(console.warn(\"DataTable is out of order; order it correctly to speed loading.\"),c.sort(function(t,e){return t[0]-e[0]})),this.rawData_=c,g.length>0&&this.setAnnotations(g,!0),this.attributes_.reparseSeries()},Q.prototype.cascadeDataDidUpdateEvent_=function(){this.cascadeEvents_(\"dataDidUpdate\",{})},Q.prototype.start_=function(){var t=this.file_;if(\"function\"==typeof t&&(t=t()),x.isArrayLike(t))this.rawData_=this.parseArray_(t),this.cascadeDataDidUpdateEvent_(),this.predraw_();else if(\"object\"==typeof t&&\"function\"==typeof t.getColumnRange)this.parseDataTable_(t),this.cascadeDataDidUpdateEvent_(),this.predraw_();else if(\"string\"==typeof t){var e=x.detectLineDelimiter(t);if(e)this.loadedEvent_(t);else{var a;a=window.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject(\"Microsoft.XMLHTTP\");var i=this;a.onreadystatechange=function(){4==a.readyState&&(200!==a.status&&0!==a.status||i.loadedEvent_(a.responseText))},a.open(\"GET\",t,!0),a.send(null)}}else console.error(\"Unknown data format: \"+typeof t)},Q.prototype.updateOptions=function(t,e){void 0===e&&(e=!1);var a=t.file,i=Q.copyUserAttrs_(t);\"rollPeriod\"in i&&(this.rollPeriod_=i.rollPeriod),\"dateWindow\"in i&&(this.dateWindow_=i.dateWindow);var n=x.isPixelChangingOptionList(this.attr_(\"labels\"),i);x.updateDeep(this.user_attrs_,i),this.attributes_.reparseSeries(),a?(this.cascadeEvents_(\"dataWillUpdate\",{}),this.file_=a,e||this.start_()):e||(n?this.predraw_():this.renderGraph_(!1))},Q.copyUserAttrs_=function(t){var e={};for(var a in t)t.hasOwnProperty(a)&&\"file\"!=a&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e},Q.prototype.resize=function(t,e){if(!this.resize_lock){this.resize_lock=!0,null===t!=(null===e)&&(console.warn(\"Dygraph.resize() should be called with zero parameters or two non-NULL parameters. Pretending it was zero.\"),t=e=null);var a=this.width_,i=this.height_;t?(this.maindiv_.style.width=t+\"px\",this.maindiv_.style.height=e+\"px\",this.width_=t,this.height_=e):(this.width_=this.maindiv_.clientWidth,this.height_=this.maindiv_.clientHeight),a==this.width_&&i==this.height_||(this.resizeElements_(),this.predraw_()),this.resize_lock=!1}},Q.prototype.adjustRoll=function(t){this.rollPeriod_=t,this.predraw_()},Q.prototype.visibility=function(){for(this.getOption(\"visibility\")||(this.attrs_.visibility=[]);this.getOption(\"visibility\").length<this.numColumns()-1;)this.attrs_.visibility.push(!0);return this.getOption(\"visibility\")},Q.prototype.setVisibility=function(t,e){var a=this.visibility(),i=!1;if(Array.isArray(t)||(null!==t&&\"object\"==typeof t?i=!0:t=[t]),i)for(var n in t)t.hasOwnProperty(n)&&(n<0||n>=a.length?console.warn(\"Invalid series number in setVisibility: \"+n):a[n]=t[n]);else for(var n=0;n<t.length;n++)\"boolean\"==typeof t[n]?n>=a.length?console.warn(\"Invalid series number in setVisibility: \"+n):a[n]=t[n]:t[n]<0||t[n]>=a.length?console.warn(\"Invalid series number in setVisibility: \"+t[n]):a[t[n]]=e;this.predraw_()},Q.prototype.size=function(){return{width:this.width_,height:this.height_}},Q.prototype.setAnnotations=function(t,e){if(this.annotations_=t,!this.layout_)return void console.warn(\"Tried to setAnnotations before dygraph was ready. Try setting them in a ready() block. See dygraphs.com/tests/annotation.html\");this.layout_.setAnnotations(this.annotations_),e||this.predraw_()},Q.prototype.annotations=function(){return this.annotations_},Q.prototype.getLabels=function(){var t=this.attr_(\"labels\");return t?t.slice():null},Q.prototype.indexFromSetName=function(t){return this.setIndexByName_[t]},Q.prototype.getRowForX=function(t){for(var e=0,a=this.numRows()-1;e<=a;){var i=a+e>>1,n=this.getValue(i,0);if(n<t)e=i+1;else if(n>t)a=i-1;else{if(e==i)return i;a=i}}return null},Q.prototype.ready=function(t){this.is_initial_draw_?this.readyFns_.push(t):t.call(this,this)},Q.prototype.addAndTrackEvent=function(t,e,a){x.addEvent(t,e,a),this.registeredEvents_.push({elem:t,type:e,fn:a})},Q.prototype.removeTrackedEvents_=function(){if(this.registeredEvents_)for(var t=0;t<this.registeredEvents_.length;t++){var e=this.registeredEvents_[t];x.removeEvent(e.elem,e.type,e.fn)}this.registeredEvents_=[]},Q.PLUGINS=[U.default,X.default,j.default,Z.default,H.default,G.default],Q.GVizChart=q.default,Q.DASHED_LINE=x.DASHED_LINE,Q.DOT_DASH_LINE=x.DOT_DASH_LINE,Q.dateAxisLabelFormatter=x.dateAxisLabelFormatter,Q.toRGB_=x.toRGB_,Q.findPos=x.findPos,Q.pageX=x.pageX,Q.pageY=x.pageY,Q.dateString_=x.dateString_,Q.defaultInteractionModel=f.default.defaultModel,Q.nonInteractiveModel=Q.nonInteractiveModel_=f.default.nonInteractiveModel_,Q.Circles=x.Circles,Q.Plugins={Legend:U.default,Axes:X.default,Annotations:H.default,ChartLabels:Z.default,Grid:G.default,RangeSelector:j.default},Q.DataHandlers={DefaultHandler:E.default,BarsHandler:R.default,CustomBarsHandler:P.default,DefaultFractionHandler:M.default,ErrorBarsHandler:T.default,FractionsBarsHandler:F.default},Q.startPan=f.default.startPan,Q.startZoom=f.default.startZoom,Q.movePan=f.default.movePan,Q.moveZoom=f.default.moveZoom,Q.endPan=f.default.endPan,Q.endZoom=f.default.endZoom,Q.numericLinearTicks=_.numericLinearTicks,Q.numericTicks=_.numericTicks,Q.dateTicker=_.dateTicker,Q.Granularity=_.Granularity,Q.getDateAxis=_.getDateAxis,Q.floatFormat=x.floatFormat,a.default=Q,e.exports=a.default}).call(this,t(\"_process\"))},{\"./datahandler/bars\":5,\"./datahandler/bars-custom\":2,\"./datahandler/bars-error\":3,\"./datahandler/bars-fractions\":4,\"./datahandler/default\":8,\"./datahandler/default-fractions\":7,\"./dygraph-canvas\":9,\"./dygraph-default-attrs\":10,\"./dygraph-gviz\":11,\"./dygraph-interaction-model\":12,\"./dygraph-layout\":13,\"./dygraph-options\":15,\"./dygraph-options-reference\":14,\"./dygraph-tickers\":16,\"./dygraph-utils\":17,\"./iframe-tarp\":19,\"./plugins/annotations\":20,\"./plugins/axes\":21,\"./plugins/chart-labels\":22,\"./plugins/grid\":23,\"./plugins/legend\":24,\"./plugins/range-selector\":25,_process:1}],19:[function(t,e,a){\"use strict\";function i(){this.tarps=[]}Object.defineProperty(a,\"__esModule\",{value:!0});var n=t(\"./dygraph-utils\"),r=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e.default=t,e}(n);i.prototype.cover=function(){for(var t=document.getElementsByTagName(\"iframe\"),e=0;e<t.length;e++){var a=t[e],i=r.findPos(a),n=i.x,o=i.y,s=a.offsetWidth,l=a.offsetHeight,h=document.createElement(\"div\");h.style.position=\"absolute\",h.style.left=n+\"px\",h.style.top=o+\"px\",h.style.width=s+\"px\",h.style.height=l+\"px\",h.style.zIndex=999,document.body.appendChild(h),this.tarps.push(h)}},i.prototype.uncover=function(){for(var t=0;t<this.tarps.length;t++)this.tarps[t].parentNode.removeChild(this.tarps[t]);this.tarps=[]},a.default=i,e.exports=a.default},{\"./dygraph-utils\":17}],20:[function(t,e,a){\"use strict\";Object.defineProperty(a,\"__esModule\",{value:!0});var i=function(){this.annotations_=[]};i.prototype.toString=function(){return\"Annotations Plugin\"},i.prototype.activate=function(t){return{clearChart:this.clearChart,didDrawChart:this.didDrawChart}},i.prototype.detachLabels=function(){for(var t=0;t<this.annotations_.length;t++){var e=this.annotations_[t];e.parentNode&&e.parentNode.removeChild(e),this.annotations_[t]=null}this.annotations_=[]},i.prototype.clearChart=function(t){this.detachLabels()},i.prototype.didDrawChart=function(t){var e=t.dygraph,a=e.layout_.annotated_points;if(a&&0!==a.length)for(var i=t.canvas.parentNode,n=function(t,a,i){return function(n){var r=i.annotation;r.hasOwnProperty(t)?r[t](r,i,e,n):e.getOption(a)&&e.getOption(a)(r,i,e,n)}},r=t.dygraph.getArea(),o={},s=0;s<a.length;s++){var l=a[s];if(!(l.canvasx<r.x||l.canvasx>r.x+r.w||l.canvasy<r.y||l.canvasy>r.y+r.h)){var h=l.annotation,u=6;h.hasOwnProperty(\"tickHeight\")&&(u=h.tickHeight);var d=document.createElement(\"div\");d.style.fontSize=e.getOption(\"axisLabelFontSize\")+\"px\"\n;var c=\"dygraph-annotation\";h.hasOwnProperty(\"icon\")||(c+=\" dygraphDefaultAnnotation dygraph-default-annotation\"),h.hasOwnProperty(\"cssClass\")&&(c+=\" \"+h.cssClass),d.className=c;var p=h.hasOwnProperty(\"width\")?h.width:16,g=h.hasOwnProperty(\"height\")?h.height:16;if(h.hasOwnProperty(\"icon\")){var f=document.createElement(\"img\");f.src=h.icon,f.width=p,f.height=g,d.appendChild(f)}else l.annotation.hasOwnProperty(\"shortText\")&&d.appendChild(document.createTextNode(l.annotation.shortText));var v=l.canvasx-p/2;d.style.left=v+\"px\";var _=0;if(h.attachAtBottom){var y=r.y+r.h-g-u;o[v]?y-=o[v]:o[v]=0,o[v]+=u+g,_=y}else _=l.canvasy-g-u;d.style.top=_+\"px\",d.style.width=p+\"px\",d.style.height=g+\"px\",d.title=l.annotation.text,d.style.color=e.colorsMap_[l.name],d.style.borderColor=e.colorsMap_[l.name],h.div=d,e.addAndTrackEvent(d,\"click\",n(\"clickHandler\",\"annotationClickHandler\",l)),e.addAndTrackEvent(d,\"mouseover\",n(\"mouseOverHandler\",\"annotationMouseOverHandler\",l)),e.addAndTrackEvent(d,\"mouseout\",n(\"mouseOutHandler\",\"annotationMouseOutHandler\",l)),e.addAndTrackEvent(d,\"dblclick\",n(\"dblClickHandler\",\"annotationDblClickHandler\",l)),i.appendChild(d),this.annotations_.push(d);var x=t.drawingContext;if(x.save(),x.strokeStyle=h.hasOwnProperty(\"tickColor\")?h.tickColor:e.colorsMap_[l.name],x.lineWidth=h.hasOwnProperty(\"tickWidth\")?h.tickWidth:e.getOption(\"strokeWidth\"),x.beginPath(),h.attachAtBottom){var y=_+g;x.moveTo(l.canvasx,y),x.lineTo(l.canvasx,y+u)}else x.moveTo(l.canvasx,l.canvasy),x.lineTo(l.canvasx,l.canvasy-2-u);x.closePath(),x.stroke(),x.restore()}}},i.prototype.destroy=function(){this.detachLabels()},a.default=i,e.exports=a.default},{}],21:[function(t,e,a){\"use strict\";Object.defineProperty(a,\"__esModule\",{value:!0});var i=t(\"../dygraph-utils\"),n=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e.default=t,e}(i),r=function(){this.xlabels_=[],this.ylabels_=[]};r.prototype.toString=function(){return\"Axes Plugin\"},r.prototype.activate=function(t){return{layout:this.layout,clearChart:this.clearChart,willDrawChart:this.willDrawChart}},r.prototype.layout=function(t){var e=t.dygraph;if(e.getOptionForAxis(\"drawAxis\",\"y\")){var a=e.getOptionForAxis(\"axisLabelWidth\",\"y\")+2*e.getOptionForAxis(\"axisTickSize\",\"y\");t.reserveSpaceLeft(a)}if(e.getOptionForAxis(\"drawAxis\",\"x\")){var i;i=e.getOption(\"xAxisHeight\")?e.getOption(\"xAxisHeight\"):e.getOptionForAxis(\"axisLabelFontSize\",\"x\")+2*e.getOptionForAxis(\"axisTickSize\",\"x\"),t.reserveSpaceBottom(i)}if(2==e.numAxes()){if(e.getOptionForAxis(\"drawAxis\",\"y2\")){var a=e.getOptionForAxis(\"axisLabelWidth\",\"y2\")+2*e.getOptionForAxis(\"axisTickSize\",\"y2\");t.reserveSpaceRight(a)}}else e.numAxes()>2&&e.error(\"Only two y-axes are supported at this time. (Trying to use \"+e.numAxes()+\")\")},r.prototype.detachLabels=function(){function t(t){for(var e=0;e<t.length;e++){var a=t[e];a.parentNode&&a.parentNode.removeChild(a)}}t(this.xlabels_),t(this.ylabels_),this.xlabels_=[],this.ylabels_=[]},r.prototype.clearChart=function(t){this.detachLabels()},r.prototype.willDrawChart=function(t){function e(t){return Math.round(t)+.5}function a(t){return Math.round(t)-.5}var i=this,r=t.dygraph;if(r.getOptionForAxis(\"drawAxis\",\"x\")||r.getOptionForAxis(\"drawAxis\",\"y\")||r.getOptionForAxis(\"drawAxis\",\"y2\")){var o,s,l,h=t.drawingContext,u=t.canvas.parentNode,d=r.width_,c=r.height_,p=function(t){return{position:\"absolute\",fontSize:r.getOptionForAxis(\"axisLabelFontSize\",t)+\"px\",width:r.getOptionForAxis(\"axisLabelWidth\",t)+\"px\"}},g={x:p(\"x\"),y:p(\"y\"),y2:p(\"y2\")},f=function(t,e,a){var i=document.createElement(\"div\"),r=g[\"y2\"==a?\"y2\":e];n.update(i.style,r);var o=document.createElement(\"div\");return o.className=\"dygraph-axis-label dygraph-axis-label-\"+e+(a?\" dygraph-axis-label-\"+a:\"\"),o.innerHTML=t,i.appendChild(o),i};h.save();var v=r.layout_,_=t.dygraph.plotter_.area,y=function(t){return function(e){return r.getOptionForAxis(e,t)}};if(r.getOptionForAxis(\"drawAxis\",\"y\")){if(v.yticks&&v.yticks.length>0){var x=r.numAxes(),m=[y(\"y\"),y(\"y2\")];v.yticks.forEach(function(t){if(void 0!==t.label){s=_.x;var e=\"y1\",a=m[0];1==t.axis&&(s=_.x+_.w,-1,e=\"y2\",a=m[1]);var n=a(\"axisLabelFontSize\");l=_.y+t.pos*_.h,o=f(t.label,\"y\",2==x?e:null);var r=l-n/2;r<0&&(r=0),r+n+3>c?o.style.bottom=\"0\":o.style.top=r+\"px\",0===t.axis?(o.style.left=_.x-a(\"axisLabelWidth\")-a(\"axisTickSize\")+\"px\",o.style.textAlign=\"right\"):1==t.axis&&(o.style.left=_.x+_.w+a(\"axisTickSize\")+\"px\",o.style.textAlign=\"left\"),o.style.width=a(\"axisLabelWidth\")+\"px\",u.appendChild(o),i.ylabels_.push(o)}});var b=this.ylabels_[0],w=r.getOptionForAxis(\"axisLabelFontSize\",\"y\");parseInt(b.style.top,10)+w>c-w&&(b.style.top=parseInt(b.style.top,10)-w/2+\"px\")}var A;if(r.getOption(\"drawAxesAtZero\")){var O=r.toPercentXCoord(0);(O>1||O<0||isNaN(O))&&(O=0),A=e(_.x+O*_.w)}else A=e(_.x);h.strokeStyle=r.getOptionForAxis(\"axisLineColor\",\"y\"),h.lineWidth=r.getOptionForAxis(\"axisLineWidth\",\"y\"),h.beginPath(),h.moveTo(A,a(_.y)),h.lineTo(A,a(_.y+_.h)),h.closePath(),h.stroke(),2==r.numAxes()&&(h.strokeStyle=r.getOptionForAxis(\"axisLineColor\",\"y2\"),h.lineWidth=r.getOptionForAxis(\"axisLineWidth\",\"y2\"),h.beginPath(),h.moveTo(a(_.x+_.w),a(_.y)),h.lineTo(a(_.x+_.w),a(_.y+_.h)),h.closePath(),h.stroke())}if(r.getOptionForAxis(\"drawAxis\",\"x\")){if(v.xticks){var D=y(\"x\");v.xticks.forEach(function(t){if(void 0!==t.label){s=_.x+t.pos*_.w,l=_.y+_.h,o=f(t.label,\"x\"),o.style.textAlign=\"center\",o.style.top=l+D(\"axisTickSize\")+\"px\";var e=s-D(\"axisLabelWidth\")/2;e+D(\"axisLabelWidth\")>d&&(e=d-D(\"axisLabelWidth\"),o.style.textAlign=\"right\"),e<0&&(e=0,o.style.textAlign=\"left\"),o.style.left=e+\"px\",o.style.width=D(\"axisLabelWidth\")+\"px\",u.appendChild(o),i.xlabels_.push(o)}})}h.strokeStyle=r.getOptionForAxis(\"axisLineColor\",\"x\"),h.lineWidth=r.getOptionForAxis(\"axisLineWidth\",\"x\"),h.beginPath();var E;if(r.getOption(\"drawAxesAtZero\")){var O=r.toPercentYCoord(0,0);(O>1||O<0)&&(O=1),E=a(_.y+O*_.h)}else E=a(_.y+_.h);h.moveTo(e(_.x),E),h.lineTo(e(_.x+_.w),E),h.closePath(),h.stroke()}h.restore()}},a.default=r,e.exports=a.default},{\"../dygraph-utils\":17}],22:[function(t,e,a){\"use strict\";Object.defineProperty(a,\"__esModule\",{value:!0});var i=function(){this.title_div_=null,this.xlabel_div_=null,this.ylabel_div_=null,this.y2label_div_=null};i.prototype.toString=function(){return\"ChartLabels Plugin\"},i.prototype.activate=function(t){return{layout:this.layout,didDrawChart:this.didDrawChart}};var n=function(t){var e=document.createElement(\"div\");return e.style.position=\"absolute\",e.style.left=t.x+\"px\",e.style.top=t.y+\"px\",e.style.width=t.w+\"px\",e.style.height=t.h+\"px\",e};i.prototype.detachLabels_=function(){for(var t=[this.title_div_,this.xlabel_div_,this.ylabel_div_,this.y2label_div_],e=0;e<t.length;e++){var a=t[e];a&&(a.parentNode&&a.parentNode.removeChild(a))}this.title_div_=null,this.xlabel_div_=null,this.ylabel_div_=null,this.y2label_div_=null};var r=function(t,e,a,i,n){var r=document.createElement(\"div\");r.style.position=\"absolute\",r.style.left=1==a?\"0px\":e.x+\"px\",r.style.top=e.y+\"px\",r.style.width=e.w+\"px\",r.style.height=e.h+\"px\",r.style.fontSize=t.getOption(\"yLabelWidth\")-2+\"px\";var o=document.createElement(\"div\");o.style.position=\"absolute\",o.style.width=e.h+\"px\",o.style.height=e.w+\"px\",o.style.top=e.h/2-e.w/2+\"px\",o.style.left=e.w/2-e.h/2+\"px\",o.className=\"dygraph-label-rotate-\"+(1==a?\"right\":\"left\");var s=document.createElement(\"div\");return s.className=i,s.innerHTML=n,o.appendChild(s),r.appendChild(o),r};i.prototype.layout=function(t){this.detachLabels_();var e=t.dygraph,a=t.chart_div;if(e.getOption(\"title\")){var i=t.reserveSpaceTop(e.getOption(\"titleHeight\"));this.title_div_=n(i),this.title_div_.style.fontSize=e.getOption(\"titleHeight\")-8+\"px\";var o=document.createElement(\"div\");o.className=\"dygraph-label dygraph-title\",o.innerHTML=e.getOption(\"title\"),this.title_div_.appendChild(o),a.appendChild(this.title_div_)}if(e.getOption(\"xlabel\")){var s=t.reserveSpaceBottom(e.getOption(\"xLabelHeight\"));this.xlabel_div_=n(s),this.xlabel_div_.style.fontSize=e.getOption(\"xLabelHeight\")-2+\"px\";var o=document.createElement(\"div\");o.className=\"dygraph-label dygraph-xlabel\",o.innerHTML=e.getOption(\"xlabel\"),this.xlabel_div_.appendChild(o),a.appendChild(this.xlabel_div_)}if(e.getOption(\"ylabel\")){var l=t.reserveSpaceLeft(0);this.ylabel_div_=r(e,l,1,\"dygraph-label dygraph-ylabel\",e.getOption(\"ylabel\")),a.appendChild(this.ylabel_div_)}if(e.getOption(\"y2label\")&&2==e.numAxes()){var h=t.reserveSpaceRight(0);this.y2label_div_=r(e,h,2,\"dygraph-label dygraph-y2label\",e.getOption(\"y2label\")),a.appendChild(this.y2label_div_)}},i.prototype.didDrawChart=function(t){var e=t.dygraph;this.title_div_&&(this.title_div_.children[0].innerHTML=e.getOption(\"title\")),this.xlabel_div_&&(this.xlabel_div_.children[0].innerHTML=e.getOption(\"xlabel\")),this.ylabel_div_&&(this.ylabel_div_.children[0].children[0].innerHTML=e.getOption(\"ylabel\")),this.y2label_div_&&(this.y2label_div_.children[0].children[0].innerHTML=e.getOption(\"y2label\"))},i.prototype.clearChart=function(){},i.prototype.destroy=function(){this.detachLabels_()},a.default=i,e.exports=a.default},{}],23:[function(t,e,a){\"use strict\";Object.defineProperty(a,\"__esModule\",{value:!0});var i=function(){};i.prototype.toString=function(){return\"Gridline Plugin\"},i.prototype.activate=function(t){return{willDrawChart:this.willDrawChart}},i.prototype.willDrawChart=function(t){function e(t){return Math.round(t)+.5}function a(t){return Math.round(t)-.5}var i,n,r,o,s=t.dygraph,l=t.drawingContext,h=s.layout_,u=t.dygraph.plotter_.area;if(s.getOptionForAxis(\"drawGrid\",\"y\")){for(var d=[\"y\",\"y2\"],c=[],p=[],g=[],f=[],v=[],r=0;r<d.length;r++)g[r]=s.getOptionForAxis(\"drawGrid\",d[r]),g[r]&&(c[r]=s.getOptionForAxis(\"gridLineColor\",d[r]),p[r]=s.getOptionForAxis(\"gridLineWidth\",d[r]),v[r]=s.getOptionForAxis(\"gridLinePattern\",d[r]),f[r]=v[r]&&v[r].length>=2);o=h.yticks,l.save(),o.forEach(function(t){if(t.has_tick){var r=t.axis;g[r]&&(l.save(),f[r]&&l.setLineDash&&l.setLineDash(v[r]),l.strokeStyle=c[r],l.lineWidth=p[r],i=e(u.x),n=a(u.y+t.pos*u.h),l.beginPath(),l.moveTo(i,n),l.lineTo(i+u.w,n),l.stroke(),l.restore())}}),l.restore()}if(s.getOptionForAxis(\"drawGrid\",\"x\")){o=h.xticks,l.save();var v=s.getOptionForAxis(\"gridLinePattern\",\"x\"),f=v&&v.length>=2;f&&l.setLineDash&&l.setLineDash(v),l.strokeStyle=s.getOptionForAxis(\"gridLineColor\",\"x\"),l.lineWidth=s.getOptionForAxis(\"gridLineWidth\",\"x\"),o.forEach(function(t){t.has_tick&&(i=e(u.x+t.pos*u.w),n=a(u.y+u.h),l.beginPath(),l.moveTo(i,n),l.lineTo(i,u.y),l.closePath(),l.stroke())}),f&&l.setLineDash&&l.setLineDash([]),l.restore()}},i.prototype.destroy=function(){},a.default=i,e.exports=a.default},{}],24:[function(t,e,a){\"use strict\";function i(t,e,a){if(!t||t.length<=1)return'<div class=\"dygraph-legend-line\" style=\"border-bottom-color: '+e+';\"></div>';var i,n,r,o,s,l=0,h=0,u=[];for(i=0;i<=t.length;i++)l+=t[i%t.length];if((s=Math.floor(a/(l-t[0])))>1){for(i=0;i<t.length;i++)u[i]=t[i]/a;h=u.length}else{for(s=1,i=0;i<t.length;i++)u[i]=t[i]/l;h=u.length+1}var d=\"\";for(n=0;n<s;n++)for(i=0;i<h;i+=2)r=u[i%u.length],o=i<t.length?u[(i+1)%u.length]:0,d+='<div class=\"dygraph-legend-dash\" style=\"margin-right: '+o+\"em; padding-left: \"+r+'em;\"></div>';return d}Object.defineProperty(a,\"__esModule\",{value:!0});var n=t(\"../dygraph-utils\"),r=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e.default=t,e}(n),o=function(){this.legend_div_=null,this.is_generated_div_=!1};o.prototype.toString=function(){return\"Legend Plugin\"},o.prototype.activate=function(t){var e,a=t.getOption(\"labelsDiv\");return a&&null!==a?e=\"string\"==typeof a||a instanceof String?document.getElementById(a):a:(e=document.createElement(\"div\"),e.className=\"dygraph-legend\",t.graphDiv.appendChild(e),this.is_generated_div_=!0),this.legend_div_=e,this.one_em_width_=10,{select:this.select,deselect:this.deselect,predraw:this.predraw,didDrawChart:this.didDrawChart}};var s=function(t){var e=document.createElement(\"span\");e.setAttribute(\"style\",\"margin: 0; padding: 0 0 0 1em; border: 0;\"),t.appendChild(e);var a=e.offsetWidth;return t.removeChild(e),a},l=function(t){return t.replace(/&/g,\"&amp;\").replace(/\"/g,\"&quot;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\")};o.prototype.select=function(t){var e=t.selectedX,a=t.selectedPoints,i=t.selectedRow,n=t.dygraph.getOption(\"legend\");if(\"never\"===n)return void(this.legend_div_.style.display=\"none\");if(\"follow\"===n){var r=t.dygraph.plotter_.area,s=this.legend_div_.offsetWidth,l=t.dygraph.getOptionForAxis(\"axisLabelWidth\",\"y\"),h=a[0].x*r.w+50,u=a[0].y*r.h-50;h+s+1>r.w&&(h=h-100-s-(l-r.x)),t.dygraph.graphDiv.appendChild(this.legend_div_),this.legend_div_.style.left=l+h+\"px\",this.legend_div_.style.top=u+\"px\"}var d=o.generateLegendHTML(t.dygraph,e,a,this.one_em_width_,i);this.legend_div_.innerHTML=d,this.legend_div_.style.display=\"\"},o.prototype.deselect=function(t){\"always\"!==t.dygraph.getOption(\"legend\")&&(this.legend_div_.style.display=\"none\");var e=s(this.legend_div_);this.one_em_width_=e;var a=o.generateLegendHTML(t.dygraph,void 0,void 0,e,null);this.legend_div_.innerHTML=a},o.prototype.didDrawChart=function(t){this.deselect(t)},o.prototype.predraw=function(t){if(this.is_generated_div_){t.dygraph.graphDiv.appendChild(this.legend_div_);var e=t.dygraph.getArea(),a=this.legend_div_.offsetWidth;this.legend_div_.style.left=e.x+e.w-a-1+\"px\",this.legend_div_.style.top=e.y+\"px\"}},o.prototype.destroy=function(){this.legend_div_=null},o.generateLegendHTML=function(t,e,a,n,s){var h={dygraph:t,x:e,series:[]},u={},d=t.getLabels();if(d)for(var c=1;c<d.length;c++){var p=t.getPropertiesForSeries(d[c]),g=t.getOption(\"strokePattern\",d[c]),f={dashHTML:i(g,p.color,n),label:d[c],labelHTML:l(d[c]),isVisible:p.visible,color:p.color};h.series.push(f),u[d[c]]=f}if(void 0!==e){var v=t.optionsViewForAxis_(\"x\"),_=v(\"valueFormatter\");h.xHTML=_.call(t,e,v,d[0],t,s,0);for(var y=[],x=t.numAxes(),c=0;c<x;c++)y[c]=t.optionsViewForAxis_(\"y\"+(c?1+c:\"\"));var m=t.getOption(\"labelsShowZeroValues\"),b=t.getHighlightSeries();for(c=0;c<a.length;c++){var w=a[c],f=u[w.name];if(f.y=w.yval,0===w.yval&&!m||isNaN(w.canvasy))f.isVisible=!1;else{var p=t.getPropertiesForSeries(w.name),A=y[p.axis-1],O=A(\"valueFormatter\"),D=O.call(t,w.yval,A,w.name,t,s,d.indexOf(w.name));r.update(f,{yHTML:D}),w.name==b&&(f.isHighlighted=!0)}}}return(t.getOption(\"legendFormatter\")||o.defaultFormatter).call(t,h)},o.defaultFormatter=function(t){var e=t.dygraph;if(!0!==e.getOption(\"showLabelsOnHighlight\"))return\"\";var a,i=e.getOption(\"labelsSeparateLines\");if(void 0===t.x){if(\"always\"!=e.getOption(\"legend\"))return\"\";a=\"\";for(var n=0;n<t.series.length;n++){var r=t.series[n];r.isVisible&&(\"\"!==a&&(a+=i?\"<br/>\":\" \"),a+=\"<span style='font-weight: bold; color: \"+r.color+\";'>\"+r.dashHTML+\" \"+r.labelHTML+\"</span>\")}return a}a=t.xHTML+\":\";for(var n=0;n<t.series.length;n++){var r=t.series[n];if(r.isVisible){i&&(a+=\"<br>\");a+=\"<span\"+(r.isHighlighted?' class=\"highlight\"':\"\")+\"> <b><span style='color: \"+r.color+\";'>\"+r.labelHTML+\"</span></b>:&#160;\"+r.yHTML+\"</span>\"}}return a},a.default=o,e.exports=a.default},{\"../dygraph-utils\":17}],25:[function(t,e,a){\"use strict\";function i(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(a,\"__esModule\",{value:!0});var n=t(\"../dygraph-utils\"),r=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e.default=t,e}(n),o=t(\"../dygraph-interaction-model\"),s=i(o),l=t(\"../iframe-tarp\"),h=i(l),u=function(){this.hasTouchInterface_=\"undefined\"!=typeof TouchEvent,this.isMobileDevice_=/mobile|android/gi.test(navigator.appVersion),this.interfaceCreated_=!1};u.prototype.toString=function(){return\"RangeSelector Plugin\"},u.prototype.activate=function(t){return this.dygraph_=t,this.getOption_(\"showRangeSelector\")&&this.createInterface_(),{layout:this.reserveSpace_,predraw:this.renderStaticLayer_,didDrawChart:this.renderInteractiveLayer_}},u.prototype.destroy=function(){this.bgcanvas_=null,this.fgcanvas_=null,this.leftZoomHandle_=null,this.rightZoomHandle_=null},u.prototype.getOption_=function(t,e){return this.dygraph_.getOption(t,e)},u.prototype.setDefaultOption_=function(t,e){this.dygraph_.attrs_[t]=e},u.prototype.createInterface_=function(){this.createCanvases_(),this.createZoomHandles_(),this.initInteraction_(),this.getOption_(\"animatedZooms\")&&(console.warn(\"Animated zooms and range selector are not compatible; disabling animatedZooms.\"),this.dygraph_.updateOptions({animatedZooms:!1},!0)),this.interfaceCreated_=!0,this.addToGraph_()},u.prototype.addToGraph_=function(){var t=this.graphDiv_=this.dygraph_.graphDiv;t.appendChild(this.bgcanvas_),t.appendChild(this.fgcanvas_),t.appendChild(this.leftZoomHandle_),t.appendChild(this.rightZoomHandle_)},u.prototype.removeFromGraph_=function(){var t=this.graphDiv_;t.removeChild(this.bgcanvas_),t.removeChild(this.fgcanvas_),t.removeChild(this.leftZoomHandle_),t.removeChild(this.rightZoomHandle_),this.graphDiv_=null},u.prototype.reserveSpace_=function(t){this.getOption_(\"showRangeSelector\")&&t.reserveSpaceBottom(this.getOption_(\"rangeSelectorHeight\")+4)},u.prototype.renderStaticLayer_=function(){this.updateVisibility_()&&(this.resize_(),this.drawStaticLayer_())},u.prototype.renderInteractiveLayer_=function(){this.updateVisibility_()&&!this.isChangingRange_&&(this.placeZoomHandles_(),this.drawInteractiveLayer_())},u.prototype.updateVisibility_=function(){var t=this.getOption_(\"showRangeSelector\");if(t)this.interfaceCreated_?this.graphDiv_&&this.graphDiv_.parentNode||this.addToGraph_():this.createInterface_();else if(this.graphDiv_){this.removeFromGraph_();var e=this.dygraph_;setTimeout(function(){e.width_=0,e.resize()},1)}return t},u.prototype.resize_=function(){function t(t,e,a,i){var n=i||r.getContextPixelRatio(e);t.style.top=a.y+\"px\",t.style.left=a.x+\"px\",t.width=a.w*n,t.height=a.h*n,t.style.width=a.w+\"px\",t.style.height=a.h+\"px\",1!=n&&e.scale(n,n)}var e=this.dygraph_.layout_.getPlotArea(),a=0;this.dygraph_.getOptionForAxis(\"drawAxis\",\"x\")&&(a=this.getOption_(\"xAxisHeight\")||this.getOption_(\"axisLabelFontSize\")+2*this.getOption_(\"axisTickSize\")),this.canvasRect_={x:e.x,y:e.y+e.h+a+4,w:e.w,h:this.getOption_(\"rangeSelectorHeight\")};var i=this.dygraph_.getNumericOption(\"pixelRatio\");t(this.bgcanvas_,this.bgcanvas_ctx_,this.canvasRect_,i),t(this.fgcanvas_,this.fgcanvas_ctx_,this.canvasRect_,i)},u.prototype.createCanvases_=function(){this.bgcanvas_=r.createCanvas(),this.bgcanvas_.className=\"dygraph-rangesel-bgcanvas\",this.bgcanvas_.style.position=\"absolute\",this.bgcanvas_.style.zIndex=9,this.bgcanvas_ctx_=r.getContext(this.bgcanvas_),this.fgcanvas_=r.createCanvas(),this.fgcanvas_.className=\"dygraph-rangesel-fgcanvas\",this.fgcanvas_.style.position=\"absolute\",this.fgcanvas_.style.zIndex=9,this.fgcanvas_.style.cursor=\"default\",this.fgcanvas_ctx_=r.getContext(this.fgcanvas_)},u.prototype.createZoomHandles_=function(){var t=new Image;t.className=\"dygraph-rangesel-zoomhandle\",t.style.position=\"absolute\",t.style.zIndex=10,t.style.visibility=\"hidden\",t.style.cursor=\"col-resize\",t.width=9,t.height=16,t.src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAQCAYAAADESFVDAAAAAXNSR0IArs4c6QAAAAZiS0dEANAAzwDP4Z7KegAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAAd0SU1FB9sHGw0cMqdt1UwAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAaElEQVQoz+3SsRFAQBCF4Z9WJM8KCDVwownl6YXsTmCUsyKGkZzcl7zkz3YLkypgAnreFmDEpHkIwVOMfpdi9CEEN2nGpFdwD03yEqDtOgCaun7sqSTDH32I1pQA2Pb9sZecAxc5r3IAb21d6878xsAAAAAASUVORK5CYII=\",this.isMobileDevice_&&(t.width*=2,t.height*=2),this.leftZoomHandle_=t,this.rightZoomHandle_=t.cloneNode(!1)},u.prototype.initInteraction_=function(){var t,e,a,i,n,o,l,u,d,c,p,g,f,v,_=this,y=document,x=0,m=null,b=!1,w=!1,A=!this.isMobileDevice_,O=new h.default;t=function(t){var e=_.dygraph_.xAxisExtremes(),a=(e[1]-e[0])/_.canvasRect_.w;return[e[0]+(t.leftHandlePos-_.canvasRect_.x)*a,e[0]+(t.rightHandlePos-_.canvasRect_.x)*a]},e=function(t){return r.cancelEvent(t),b=!0,x=t.clientX,m=t.target?t.target:t.srcElement,\"mousedown\"!==t.type&&\"dragstart\"!==t.type||(r.addEvent(y,\"mousemove\",a),r.addEvent(y,\"mouseup\",i)),_.fgcanvas_.style.cursor=\"col-resize\",O.cover(),!0},a=function(t){if(!b)return!1;r.cancelEvent(t);var e=t.clientX-x;if(Math.abs(e)<4)return!0;x=t.clientX;var a,i=_.getZoomHandleStatus_();m==_.leftZoomHandle_?(a=i.leftHandlePos+e,a=Math.min(a,i.rightHandlePos-m.width-3),a=Math.max(a,_.canvasRect_.x)):(a=i.rightHandlePos+e,a=Math.min(a,_.canvasRect_.x+_.canvasRect_.w),a=Math.max(a,i.leftHandlePos+m.width+3));var o=m.width/2;return m.style.left=a-o+\"px\",_.drawInteractiveLayer_(),A&&n(),!0},i=function(t){return!!b&&(b=!1,O.uncover(),r.removeEvent(y,\"mousemove\",a),r.removeEvent(y,\"mouseup\",i),_.fgcanvas_.style.cursor=\"default\",A||n(),!0)},n=function(){try{var e=_.getZoomHandleStatus_();if(_.isChangingRange_=!0,e.isZoomed){var a=t(e);_.dygraph_.doZoomXDates_(a[0],a[1])}else _.dygraph_.resetZoom()}finally{_.isChangingRange_=!1}},o=function(t){var e=_.leftZoomHandle_.getBoundingClientRect(),a=e.left+e.width/2;e=_.rightZoomHandle_.getBoundingClientRect();var i=e.left+e.width/2;return t.clientX>a&&t.clientX<i},l=function(t){return!(w||!o(t)||!_.getZoomHandleStatus_().isZoomed)&&(r.cancelEvent(t),w=!0,x=t.clientX,\"mousedown\"===t.type&&(r.addEvent(y,\"mousemove\",u),r.addEvent(y,\"mouseup\",d)),!0)},u=function(t){if(!w)return!1;r.cancelEvent(t);var e=t.clientX-x;if(Math.abs(e)<4)return!0;x=t.clientX;var a=_.getZoomHandleStatus_(),i=a.leftHandlePos,n=a.rightHandlePos,o=n-i;i+e<=_.canvasRect_.x?(i=_.canvasRect_.x,n=i+o):n+e>=_.canvasRect_.x+_.canvasRect_.w?(n=_.canvasRect_.x+_.canvasRect_.w,i=n-o):(i+=e,n+=e);var s=_.leftZoomHandle_.width/2;return _.leftZoomHandle_.style.left=i-s+\"px\",_.rightZoomHandle_.style.left=n-s+\"px\",_.drawInteractiveLayer_(),A&&c(),!0},d=function(t){return!!w&&(w=!1,r.removeEvent(y,\"mousemove\",u),r.removeEvent(y,\"mouseup\",d),A||c(),!0)},c=function(){try{_.isChangingRange_=!0,_.dygraph_.dateWindow_=t(_.getZoomHandleStatus_()),_.dygraph_.drawGraph_(!1)}finally{_.isChangingRange_=!1}},p=function(t){if(!b&&!w){var e=o(t)?\"move\":\"default\";e!=_.fgcanvas_.style.cursor&&(_.fgcanvas_.style.cursor=e)}},g=function(t){\"touchstart\"==t.type&&1==t.targetTouches.length?e(t.targetTouches[0])&&r.cancelEvent(t):\"touchmove\"==t.type&&1==t.targetTouches.length?a(t.targetTouches[0])&&r.cancelEvent(t):i(t)},f=function(t){\"touchstart\"==t.type&&1==t.targetTouches.length?l(t.targetTouches[0])&&r.cancelEvent(t):\"touchmove\"==t.type&&1==t.targetTouches.length?u(t.targetTouches[0])&&r.cancelEvent(t):d(t)},v=function(t,e){for(var a=[\"touchstart\",\"touchend\",\"touchmove\",\"touchcancel\"],i=0;i<a.length;i++)_.dygraph_.addAndTrackEvent(t,a[i],e)},this.setDefaultOption_(\"interactionModel\",s.default.dragIsPanInteractionModel),this.setDefaultOption_(\"panEdgeFraction\",1e-4);var D=window.opera?\"mousedown\":\"dragstart\";this.dygraph_.addAndTrackEvent(this.leftZoomHandle_,D,e),this.dygraph_.addAndTrackEvent(this.rightZoomHandle_,D,e),this.dygraph_.addAndTrackEvent(this.fgcanvas_,\"mousedown\",l),this.dygraph_.addAndTrackEvent(this.fgcanvas_,\"mousemove\",p),this.hasTouchInterface_&&(v(this.leftZoomHandle_,g),v(this.rightZoomHandle_,g),v(this.fgcanvas_,f))},u.prototype.drawStaticLayer_=function(){var t=this.bgcanvas_ctx_;t.clearRect(0,0,this.canvasRect_.w,this.canvasRect_.h);try{this.drawMiniPlot_()}catch(t){console.warn(t)}this.bgcanvas_ctx_.lineWidth=this.getOption_(\"rangeSelectorBackgroundLineWidth\"),t.strokeStyle=this.getOption_(\"rangeSelectorBackgroundStrokeColor\"),t.beginPath(),t.moveTo(.5,.5),t.lineTo(.5,this.canvasRect_.h-.5),t.lineTo(this.canvasRect_.w-.5,this.canvasRect_.h-.5),t.lineTo(this.canvasRect_.w-.5,.5),t.stroke()},u.prototype.drawMiniPlot_=function(){var t=this.getOption_(\"rangeSelectorPlotFillColor\"),e=this.getOption_(\"rangeSelectorPlotFillGradientColor\"),a=this.getOption_(\"rangeSelectorPlotStrokeColor\");if(t||a){var i=this.getOption_(\"stepPlot\"),n=this.computeCombinedSeriesAndLimits_(),r=n.yMax-n.yMin,o=this.bgcanvas_ctx_,s=this.dygraph_.xAxisExtremes(),l=Math.max(s[1]-s[0],1e-30),h=(this.canvasRect_.w-.5)/l,u=(this.canvasRect_.h-.5)/r,d=this.canvasRect_.w-.5,c=this.canvasRect_.h-.5,p=null,g=null;o.beginPath(),o.moveTo(.5,c);for(var f=0;f<n.data.length;f++){var v=n.data[f],_=null!==v[0]?(v[0]-s[0])*h:NaN,y=null!==v[1]?c-(v[1]-n.yMin)*u:NaN;(i||null===p||Math.round(_)!=Math.round(p))&&(isFinite(_)&&isFinite(y)?(null===p?o.lineTo(_,c):i&&o.lineTo(_,g),o.lineTo(_,y),p=_,g=y):(null!==p&&(i?(o.lineTo(_,g),o.lineTo(_,c)):o.lineTo(p,c)),p=g=null))}if(o.lineTo(d,c),o.closePath(),t){var x=this.bgcanvas_ctx_.createLinearGradient(0,0,0,c);e&&x.addColorStop(0,e),x.addColorStop(1,t),this.bgcanvas_ctx_.fillStyle=x,o.fill()}a&&(this.bgcanvas_ctx_.strokeStyle=a,this.bgcanvas_ctx_.lineWidth=this.getOption_(\"rangeSelectorPlotLineWidth\"),o.stroke())}},u.prototype.computeCombinedSeriesAndLimits_=function(){var t,e=this.dygraph_,a=this.getOption_(\"logscale\"),i=e.numColumns(),n=e.getLabels(),o=new Array(i),s=!1,l=e.visibility(),h=[];for(t=1;t<i;t++){var u=this.getOption_(\"showInRangeSelector\",n[t]);h.push(u),null!==u&&(s=!0)}if(s)for(t=1;t<i;t++)o[t]=h[t-1];else for(t=1;t<i;t++)o[t]=l[t-1];var d=[],c=e.dataHandler_,p=e.attributes_;for(t=1;t<e.numColumns();t++)if(o[t]){var g=c.extractSeries(e.rawData_,t,p);e.rollPeriod()>1&&(g=c.rollingAverage(g,e.rollPeriod(),p)),d.push(g)}var f=[];for(t=0;t<d[0].length;t++){for(var v=0,_=0,y=0;y<d.length;y++){var x=d[y][t][1];null===x||isNaN(x)||(_++,v+=x)}f.push([d[0][t][0],v/_])}var m=Number.MAX_VALUE,b=-Number.MAX_VALUE;for(t=0;t<f.length;t++){var w=f[t][1];null!==w&&isFinite(w)&&(!a||w>0)&&(m=Math.min(m,w),b=Math.max(b,w))}if(a)for(b=r.log10(b),b+=.25*b,m=r.log10(m),t=0;t<f.length;t++)f[t][1]=r.log10(f[t][1]);else{var A,O=b-m;A=O<=Number.MIN_VALUE?.25*b:.25*O,b+=A,m-=A}return{data:f,yMin:m,yMax:b}},u.prototype.placeZoomHandles_=function(){var t=this.dygraph_.xAxisExtremes(),e=this.dygraph_.xAxisRange(),a=t[1]-t[0],i=Math.max(0,(e[0]-t[0])/a),n=Math.max(0,(t[1]-e[1])/a),r=this.canvasRect_.x+this.canvasRect_.w*i,o=this.canvasRect_.x+this.canvasRect_.w*(1-n),s=Math.max(this.canvasRect_.y,this.canvasRect_.y+(this.canvasRect_.h-this.leftZoomHandle_.height)/2),l=this.leftZoomHandle_.width/2;this.leftZoomHandle_.style.left=r-l+\"px\",this.leftZoomHandle_.style.top=s+\"px\",this.rightZoomHandle_.style.left=o-l+\"px\",this.rightZoomHandle_.style.top=this.leftZoomHandle_.style.top,this.leftZoomHandle_.style.visibility=\"visible\",this.rightZoomHandle_.style.visibility=\"visible\"},u.prototype.drawInteractiveLayer_=function(){var t=this.fgcanvas_ctx_;t.clearRect(0,0,this.canvasRect_.w,this.canvasRect_.h);var e=this.canvasRect_.w-1,a=this.canvasRect_.h-1,i=this.getZoomHandleStatus_();if(t.strokeStyle=this.getOption_(\"rangeSelectorForegroundStrokeColor\"),t.lineWidth=this.getOption_(\"rangeSelectorForegroundLineWidth\"),i.isZoomed){var n=Math.max(1,i.leftHandlePos-this.canvasRect_.x),r=Math.min(e,i.rightHandlePos-this.canvasRect_.x);t.fillStyle=\"rgba(240, 240, 240, \"+this.getOption_(\"rangeSelectorAlpha\").toString()+\")\",t.fillRect(0,0,n,this.canvasRect_.h),t.fillRect(r,0,this.canvasRect_.w-r,this.canvasRect_.h),t.beginPath(),t.moveTo(1,1),t.lineTo(n,1),t.lineTo(n,a),t.lineTo(r,a),t.lineTo(r,1),t.lineTo(e,1),t.stroke()}else t.beginPath(),t.moveTo(1,1),t.lineTo(1,a),t.lineTo(e,a),t.lineTo(e,1),t.stroke()},u.prototype.getZoomHandleStatus_=function(){var t=this.leftZoomHandle_.width/2,e=parseFloat(this.leftZoomHandle_.style.left)+t,a=parseFloat(this.rightZoomHandle_.style.left)+t;return{leftHandlePos:e,rightHandlePos:a,isZoomed:e-1>this.canvasRect_.x||a+1<this.canvasRect_.x+this.canvasRect_.w}},a.default=u,e.exports=a.default},{\"../dygraph-interaction-model\":12,\"../dygraph-utils\":17,\"../iframe-tarp\":19}]},{},[18])(18)});\n//# sourceMappingURL=dist/dygraph.min.js.map\n","import { createReducer } from \"redux-act\"\n\nimport { ChartsMetadata } from \"domains/global/types\"\n\nimport { startSnapshotModeAction, stopSnapshotModeAction, isSignedInAction, setOfflineAction } from \"./actions\"\n\nexport type StateT = {\n isSnapshotMode: boolean\n snapshotCharts: ChartsMetadata | null\n snapshotDataPoints: number | null\n isSignedIn: boolean\n offline: boolean\n}\n\nexport const initialState: StateT = {\n isSnapshotMode: false,\n snapshotCharts: null,\n snapshotDataPoints: null,\n isSignedIn: false,\n offline: false\n}\n\nexport const dashboardReducer = createReducer<StateT>({}, initialState)\n\ndashboardReducer.on(startSnapshotModeAction, (state, { charts, dataPoints }) => ({\n ...state,\n snapshotCharts: charts, // todo integrate with /charts result\n snapshotDataPoints: dataPoints,\n isSnapshotMode: true,\n}))\n\ndashboardReducer.on(stopSnapshotModeAction, (state) => ({\n ...state,\n isSnapshotMode: initialState.isSnapshotMode,\n snapshotCharts: initialState.snapshotCharts,\n snapshotDataPoints: initialState.snapshotDataPoints,\n}))\n\ndashboardReducer.on(isSignedInAction, (state, { isSignedIn }) => ({\n ...state,\n isSignedIn\n}))\n\ndashboardReducer.on(setOfflineAction, (state, { offline }) => ({\n ...state,\n offline\n}))\n","import { combineReducers } from \"redux\"\n\nimport { globalReducer } from \"domains/global/reducer\"\nimport { storeKey as globalKey } from \"domains/global/constants\"\n\nimport { chartReducer } from \"domains/chart/reducer\"\nimport { storeKey as chartKey } from \"domains/chart/constants\"\n\nimport { dashboardReducer } from \"domains/dashboard/reducer\"\nimport { storeKey as dashboardKey } from \"domains/dashboard/constants\"\n\nexport default combineReducers({\n [globalKey]: globalReducer,\n [chartKey]: chartReducer,\n\n // todo lazy-load and inject those reducers, when they are not needed (dashboard.js, cloud)\n [dashboardKey]: dashboardReducer,\n})\n","import axios from \"axios\"\n\nexport const axiosInstance = axios.create({\n headers: {\n \"Cache-Control\": \"no-cache, no-store\",\n Pragma: \"no-cache\",\n },\n withCredentials: true,\n})\n","import axios from \"axios\"\n\nexport const axiosInstance = axios.create({\n // timeout: 30 * 1000, // todo\n headers: {\n \"Cache-Control\": \"no-cache, no-store\",\n Pragma: \"no-cache\",\n },\n withCredentials: true,\n})\n","import {\n Subject, from, empty,\n} from \"rxjs\"\nimport {\n mergeMap, tap, catchError, startWith, switchMap,\n} from \"rxjs/operators\"\nimport { CancelTokenSource, Method } from \"axios\"\n\nimport { UnknownStringKeyT } from \"types/common\"\n\nimport { axiosInstance } from \"./axios-instance\"\n\nexport const CHART_UNMOUNTED = \"Chart scrolled out of view\"\n\ninterface FetchInputEvent {\n url: string\n method?: Method\n params?: UnknownStringKeyT\n data?: UnknownStringKeyT\n onErrorCallback: (error: Error) => void\n onSuccessCallback: (data: { [key: string]: unknown }) => void\n cancelTokenSource?: CancelTokenSource\n}\n\nconst METRICS_TIMEOUT = 15_000\n\nexport const getFetchStream = (concurrentCallsLimit: number) => {\n const fetch$ = new Subject<FetchInputEvent>()\n const resetFetch$ = new Subject()\n\n const handler = mergeMap(({\n url, method = \"GET\", params = {}, data, onErrorCallback, onSuccessCallback, cancelTokenSource,\n }: FetchInputEvent) => (\n from(axiosInstance.request({\n url,\n method,\n params,\n data,\n timeout: METRICS_TIMEOUT,\n cancelToken: cancelTokenSource?.token,\n })).pipe(\n tap(({ data: responseData }) => { onSuccessCallback(responseData) }),\n catchError((error: Error) => {\n // todo implement error handling to support NETDATA.options.current.retries_on_data_failures\n if (error?.message !== CHART_UNMOUNTED) {\n console.warn(\"fetch error\", url) // eslint-disable-line no-console\n }\n onErrorCallback(error)\n return empty()\n }),\n )\n ), concurrentCallsLimit)\n\n const output = resetFetch$.pipe(\n startWith(null),\n switchMap(() => fetch$.pipe(handler)),\n )\n\n output.subscribe()\n return [fetch$, resetFetch$]\n}\n","import { tail, sum, reverse } from \"ramda\"\nimport { ChartData, DygraphData } from \"domains/chart/chart-types\"\n\n/*\nwhen requesting for bigger time interval than available history in the agent,\nwe get only the available range. Dashboard was first designed to not allow zooming-out too much.\nBut we want to show the requested time-range, so to do it consistently, we return nr of points\nwhen making the request, and after getting result, we add `null`s at the beginning\n */\n\ninterface GetCorrectedPointsArg {\n after: number\n before: number\n firstEntry: number\n points: number\n}\nexport const getCorrectedPoints = ({\n after,\n before,\n firstEntry,\n points,\n}: GetCorrectedPointsArg) => {\n const nowInSeconds = Math.round(new Date().valueOf() / 1000)\n const afterAbsolute = after > 0 ? after : nowInSeconds + after\n const beforeAbsolute = before > 0 ? before : nowInSeconds + before\n\n if (afterAbsolute < firstEntry) {\n // take into account first_entry\n const realAfter = Math.max(afterAbsolute, firstEntry)\n const requestedRange = beforeAbsolute - afterAbsolute\n const availableRange = beforeAbsolute - realAfter\n\n return Math.round((points * availableRange) / requestedRange)\n }\n return null\n}\n\nexport const addPointsDygraph = (data: DygraphData, nrOfPointsToFill: number) => {\n const viewUpdateEvery = data.view_update_every\n if (!data.result.data.length) {\n return data\n }\n const firstAddedTimestamp = data.result.data[0][0] - nrOfPointsToFill * viewUpdateEvery\n const emptyPoint = tail(data.result.labels).map(() => null)\n const nulls = new Array(nrOfPointsToFill)\n .fill(null)\n .map((_, i) => [firstAddedTimestamp + i * viewUpdateEvery, ...emptyPoint])\n return {\n ...data,\n after: data.after - viewUpdateEvery * nrOfPointsToFill,\n result: {\n ...data.result,\n data: nulls.concat(data.result.data),\n },\n }\n}\n\nexport const fillMissingData = (data: ChartData, nrOfPointsToFill: number) => {\n if (data.format === \"json\") {\n return addPointsDygraph(data as DygraphData, nrOfPointsToFill)\n }\n return data\n}\n\nconst emptyArray: number[] = []\nexport const transformResults = (data: ChartData, format: string, shouldRevertFlip: boolean) => {\n if (format === \"array\" && data.format === \"json\") {\n if (Array.isArray(data.result)) return data\n\n const dataResult = shouldRevertFlip\n ? reverse((data as DygraphData).result.data)\n : (data as DygraphData).result.data\n return {\n ...data,\n // set proper output type so other functions like fillMissingData work properly\n format: \"array\",\n result: dataResult.reduce((acc: number[], pointData: number[]) => {\n pointData.shift()\n return [...acc, sum(pointData)]\n }, emptyArray),\n }\n }\n return data\n}\n\nexport const mapDefaultAggrMethod = (unit: string): string => {\n if (unit.length === 0) {\n return \"sum\"\n }\n const avgUnits: any = {\n percentage: true,\n percent: true,\n \"rotations/min\": true,\n ratio: true,\n seconds: true,\n \"seconds ago\": true,\n milliseconds: true,\n millisec: true,\n ms: true,\n \"log2 s\": true,\n minutes: true,\n hours: true,\n interval: true,\n ticks: true,\n celsius: true,\n c: true,\n mhz: true,\n hz: true,\n volts: true,\n kwh: true,\n ampere: true,\n amps: true,\n dbm: true,\n value: true,\n stratum: true,\n units: true,\n watt: true,\n temperature: true,\n \"random number\": true,\n rpm: true,\n quadro: true,\n \"adv/item\": true,\n multiplier: true,\n geforce: true,\n }\n if (avgUnits[unit.toLowerCase()]) {\n return \"avg\"\n }\n const avgUnitsRegExes: any = [\".*%.*\", \".*/operation\", \".*/run\", \".*/ run\", \".*/request\"]\n if (\n avgUnitsRegExes.some((regEx: string) => {\n const regExpression = RegExp(regEx, \"i\")\n return regExpression.test(unit.toLowerCase())\n })\n ) {\n return \"avg\"\n }\n return \"sum\"\n}\n","import styled from \"styled-components\"\nimport {\n getSizeBy, Text, TextSmall, getColor,\n} from \"@netdata/netdata-ui\"\n\nexport const Container = styled.div`\n width: 100%;\n height: 100%;\n min-height: ${getSizeBy(10)};\n display: flex;\n flex-flow: row nowrap;\n padding: ${getSizeBy(2)} ${getSizeBy(2)} ${getSizeBy(2)} ${getSizeBy(2)};\n`\n\nexport const SideContent = styled.div<{ right?: boolean }>`\n flex-grow: 0;\n flex-shrink: 0;\n height: 100%;\n align-self: stretch;\n`\n\nexport const ContentContainer = styled.div``\n\nexport const HeaderText = styled(Text)<{ error?: boolean; success?: boolean }>`\n color: ${({ error, success }) => (success && getColor(\"success\"))\n || (error && getColor(\"error\"))};\n font-weight: bold;\n display: block;\n margin-bottom: ${getSizeBy()};\n`\n\nexport const ContentText = styled(TextSmall)<{ error?: boolean; success?: boolean }>`\n display: block;\n color: ${({ error }) => (error && getColor(\"error\")) || getColor(\"text\")};\n font-weight: ${({ error }) => error && \"bold\"};\n`\n","import React from \"react\"\nimport {\n Container, SideContent, ContentContainer, HeaderText, ContentText,\n} from \"./styled\"\n\ninterface NotificationProps {\n header?: string\n leftContent?: React.ReactNode\n rightContent?: React.ReactNode\n text?: React.ReactNode\n className?: string\n renderContent?: (props: NotificationProps) => React.ReactNode | React.ReactNodeArray | null\n success?: boolean\n error?: boolean\n}\n\nexport const UINotification = (props: NotificationProps) => {\n const {\n header, text, leftContent, rightContent, renderContent, success, error,\n } = props\n return (\n <Container>\n {leftContent && <SideContent>{leftContent}</SideContent>}\n <ContentContainer>\n {header && (\n <HeaderText success={success} error={error}>\n {header}\n </HeaderText>\n )}\n {text && (\n <ContentText success={success} error={error}>\n {text}\n </ContentText>\n )}\n {renderContent && renderContent(props)}\n </ContentContainer>\n {rightContent && <SideContent right>{rightContent}</SideContent>}\n </Container>\n )\n}\n\n// for usage in non-jsx contexts\n// eslint-disable-next-line react/jsx-props-no-spreading\nexport const createUINotification = (props: NotificationProps) => <UINotification {...props} />\n","import styled from \"styled-components\"\nimport { getColor, getSizeBy } from \"@netdata/netdata-ui\"\n\nexport const NodeIconContainer = styled.div`\n width: ${getSizeBy(5)};\n height: ${getSizeBy(5)};\n margin-right: ${getSizeBy(2)};\n display: flex;\n justify-content: center;\n align-items: center;\n & > svg use {\n fill: ${getColor([\"gray\", \"limedSpruce\"])};\n }\n`\n\nexport const NotificationLink = styled.a`\n &, &:hover {\n text-decoration: underline;\n color: inherit;\n }\n`\n","import React from \"react\"\nimport { Icon } from \"@netdata/netdata-ui\"\nimport { toast } from \"react-toastify\"\n\nimport { createUINotification } from \"components/ui-notification\"\n\nimport * as S from \"./styled\"\n\nexport const toastOptions = {\n position: toast.POSITION.BOTTOM_RIGHT,\n autoClose: 10000,\n pauseOnFocusLoss: false,\n}\n\nexport const showCloudInstallationProblemNotification = () => {\n const uiNotification = {\n header: \"Installation error\",\n text: \"The installer could not prepare the required dependencies to enable Netdata Cloud\"\n + \" functionality\",\n }\n const notificationComponent = createUINotification({\n ...uiNotification,\n success: false,\n leftContent: (\n <S.NodeIconContainer>\n <Icon name=\"gear\" size=\"large\" />\n </S.NodeIconContainer>\n ),\n })\n toast.error(notificationComponent, toastOptions)\n}\n\nexport const showCloudConnectionProblemNotification = () => {\n const uiNotification = {\n header: \"Connection Problem\",\n text: (\n <S.NotificationLink\n href=\"https://learn.netdata.cloud/docs/agent/packaging/installer#automatic-one-line-installation-script\"\n target=\"_blank\"\n >\n To access Cloud install again your agent via the kickstart script\n </S.NotificationLink>\n ),\n }\n const notificationComponent = createUINotification({\n ...uiNotification,\n success: false,\n leftContent: (\n <S.NodeIconContainer>\n <Icon name=\"gear\" size=\"large\" />\n </S.NodeIconContainer>\n ),\n })\n toast.error(notificationComponent, toastOptions)\n}\n","import {\n mergeAll, pipe, split, mergeRight,\n} from \"ramda\"\nimport { mapIndexed } from \"ramda-adjunct\"\n\nconst defaultUrlOptions = {\n hash: \"#\",\n theme: null,\n help: null,\n mode: \"live\", // 'live', 'print'\n update_always: false,\n pan_and_zoom: false,\n server: null,\n after: 0,\n before: 0,\n highlight: false,\n highlight_after: 0,\n highlight_before: 0,\n nowelcome: false,\n show_alarms: false,\n chart: null,\n family: null,\n alarm: null,\n alarm_unique_id: 0,\n alarm_id: 0,\n alarm_event_id: 0,\n alarm_when: 0,\n} as {[key: string]: unknown}\n\nconst isInvalidPair = ([key, value]: [string, string]) => (\n defaultUrlOptions[key] === undefined || value === undefined\n)\n\nconst parseQueryPair = ([key, value]: [string, string]): {[key: string] : unknown} => {\n if (isInvalidPair([key, value])) {\n return {}\n }\n return {\n [key]: decodeURIComponent(value),\n }\n}\n\nexport const parseUrl = pipe(\n split(\";\"),\n mapIndexed((value, index) => (\n (index === 0) ? { hash: value } : parseQueryPair((value.split(\"=\") as [string, string]))\n )),\n mergeAll,\n mergeRight(defaultUrlOptions),\n)\n\nconst urlParsed = parseUrl(document.location.hash)\n\nexport const isPrintMode = urlParsed.mode === \"print\"\n","import {\n call,\n put,\n takeEvery,\n select,\n spawn,\n take,\n delay,\n} from \"redux-saga/effects\"\nimport { channel } from \"redux-saga\"\nimport { Action } from \"redux-act\"\n\nimport { axiosInstance } from \"utils/api\"\nimport { alwaysEndWithSlash, serverDefault } from \"utils/server-detection\"\nimport { getFetchStream } from \"utils/netdata-sdk\"\nimport { isMainJs } from \"utils/env\"\nimport { fillMissingData, transformResults } from \"utils/fill-missing-data\"\nimport {\n showCloudInstallationProblemNotification, showCloudConnectionProblemNotification,\n} from \"components/notifications\"\nimport { selectGlobalPanAndZoom, selectSnapshot, selectRegistry } from \"domains/global/selectors\"\nimport { StateT as GlobalStateT } from \"domains/global/reducer\"\nimport { stopSnapshotModeAction } from \"domains/dashboard/actions\"\nimport { isPrintMode } from \"domains/dashboard/utils/parse-url\"\nimport { INFO_POLLING_FREQUENCY } from \"domains/global/constants\"\n\nimport {\n fetchDataAction,\n FetchDataPayload,\n fetchChartAction,\n FetchChartPayload,\n fetchDataForSnapshotAction,\n FetchDataForSnapshotPayload,\n fetchInfoAction,\n FetchInfoPayload,\n fetchDataCancelAction,\n} from \"./actions\"\nimport { ChartData } from \"./chart-types\"\n\nconst CONCURRENT_CALLS_LIMIT_METRICS = isMainJs ? 30 : 60\nconst CONCURRENT_CALLS_LIMIT_PRINT = 2\nconst CONCURRENT_CALLS_LIMIT_SNAPSHOTS = 1\n\nconst fetchDataResponseChannel = channel()\n\nexport function* watchFetchDataResponseChannel() {\n while (true) {\n const action = (yield take(fetchDataResponseChannel))\n\n // special case - if requested relative timeRange, and during request the mode has been changed\n // to absolute global-pan-and-zoom, cancel the store update\n // todo do xss check of data\n if (action.type === fetchDataAction.success.toString()) {\n const payload = (action.payload as FetchDataPayload)\n const { viewRange } = payload.fetchDataParams\n const [start, end] = viewRange\n const globalPanAndZoom = (yield select(\n selectGlobalPanAndZoom,\n )) as GlobalStateT[\"globalPanAndZoom\"]\n\n if (globalPanAndZoom\n && (start <= 0 || end <= 0) // check if they are not timestamps\n ) {\n yield put(fetchDataCancelAction({\n id: payload.id,\n }))\n // eslint-disable-next-line no-continue\n continue\n }\n }\n\n yield put(action)\n }\n}\n\n// todo construct a new version of key that will be safer to be used in future\n// (while keeping old key supported for some time)\n// perhaps the key could be passed as attribute to the chart, to avoid matching\nconst constructCompatibleKey = (dimensions: undefined | string, options: string) => (\n // strange transformations for backwards compatibility. old snapshot keys were encoded this way\n // that empty dimensions were actually \"null\" string\n `${dimensions === undefined\n ? \"null\"\n : encodeURIComponent(dimensions)\n },${encodeURIComponent(options)}`\n)\n\n// currently BE always transforms data as if `flip` was there\nconst IS_FLIP_RESPECTED_IN_COMPOSITE_CHARTS = false\n\nconst getGroupByValues = (groupBy) => {\n if (groupBy === \"chart\") return \"node\"\n if (groupBy === \"node\" || groupBy === \"dimension\") return groupBy\n return `label=${groupBy}`\n}\n\nconst [fetchMetrics$] = getFetchStream(\n isPrintMode ? CONCURRENT_CALLS_LIMIT_PRINT : CONCURRENT_CALLS_LIMIT_METRICS,\n)\nfunction* fetchDataSaga({ payload }: Action<FetchDataPayload>) {\n const {\n // props for api\n host, context, chart, format, points, group, gtime, options,\n after, before, dimensions, labels, postGroupBy, postAggregationMethod,\n aggrMethod, dimensionsAggrMethod, nodeIDs, httpMethod,\n groupBy = \"dimension\", // group by node, dimension, or label keys\n aggrGroups = [],\n // props for the store\n fetchDataParams, id, cancelTokenSource,\n } = payload\n\n const snapshot = yield select(selectSnapshot)\n if (snapshot) {\n // if reading snapshot\n const dimensionsWithUrlOptions = constructCompatibleKey(dimensions, options)\n const matchingKey = Object.keys(snapshot.data).find((snapshotKey) => (\n snapshotKey.startsWith(chart) && snapshotKey.includes(dimensionsWithUrlOptions)\n ))\n if (!matchingKey) {\n // eslint-disable-next-line no-console\n console.warn(`Could not find snapshot key for chart: ${chart} and id ${id}`)\n return\n }\n const data = snapshot.data[matchingKey]\n yield put(fetchDataAction.success({\n chartData: data,\n fetchDataParams,\n id,\n }))\n return\n }\n\n const url = isMainJs\n ? `${alwaysEndWithSlash(host)}api/v1/data`\n : host\n\n const agentOptionsOriginal = options.split(\"|\")\n const hasFlip = agentOptionsOriginal.includes(\"flip\")\n const shouldAddFakeFlip = !IS_FLIP_RESPECTED_IN_COMPOSITE_CHARTS && !hasFlip\n // if flip is not respected in composite-charts, send it always (like dygraph charts normally do)\n const agentOptions = shouldAddFakeFlip\n ? agentOptionsOriginal.concat(\"flip\") : agentOptionsOriginal\n\n const groupValues = [\n getGroupByValues(groupBy),\n postGroupBy && `label=${postGroupBy}`,\n ].filter(Boolean)\n\n const axiosOptions = httpMethod === \"POST\" ? {\n // used by cloud's room-overview\n data: {\n filter: {\n nodeIDs,\n context,\n dimensions: dimensions ? dimensions.split(/['|]/) : undefined,\n labels,\n },\n after,\n before,\n points,\n group,\n gtime,\n agent_options: agentOptions,\n ...(postAggregationMethod && { post_aggregation_methods: [postAggregationMethod] }),\n aggregations: [groupBy !== \"dimension\" && {\n method: dimensionsAggrMethod || \"sum\",\n groupBy: [\"chart\", ...groupValues],\n },\n groupBy !== \"chart\" && {\n method: aggrMethod,\n groupBy: groupValues,\n ...(aggrGroups.length && { labels: aggrGroups }),\n }].filter(Boolean),\n },\n } : {\n params: {\n chart,\n _: new Date().valueOf(),\n format,\n points,\n group,\n gtime,\n options,\n after,\n before,\n dimensions,\n },\n }\n\n const onSuccessCallback = (data: { [id: string]: unknown}) => {\n if (!data?.result) {\n fetchDataResponseChannel.put(fetchDataAction.failure({ id }))\n } else {\n const { fillMissingPoints } = fetchDataParams\n\n const transformedResults = transformResults(\n (data as unknown) as ChartData,\n format,\n shouldAddFakeFlip,\n )\n\n const chartData = {\n ...transformedResults,\n // @ts-ignore\n ...((\"post_aggregated_data\" in data.result) && {\n postAggregationMethod,\n groupBy,\n postGroupBy,\n aggrGroups,\n // @ts-ignore\n postAggregated: data.result.post_aggregated_data[postAggregationMethod],\n }),\n }\n\n fetchDataResponseChannel.put(fetchDataAction.success({\n chartData: fillMissingPoints\n ? fillMissingData(chartData as ChartData, fillMissingPoints)\n : chartData,\n fetchDataParams,\n id,\n }))\n }\n }\n\n const onErrorCallback = (error: Error) => {\n console.warn(\"fetch chart data failure\", error) // eslint-disable-line no-console\n fetchDataResponseChannel.put(fetchDataAction.failure({ id }))\n }\n\n fetchMetrics$.next({\n ...axiosOptions,\n method: httpMethod || \"GET\",\n url,\n onErrorCallback,\n onSuccessCallback,\n cancelTokenSource,\n })\n}\n\nconst [fetchForSnapshot$, resetFetchForSnapshot$] = getFetchStream(CONCURRENT_CALLS_LIMIT_SNAPSHOTS)\nfunction fetchDataForSnapshotSaga({ payload }: Action<FetchDataForSnapshotPayload>) {\n const {\n host, chart, format, points, group, gtime, options,\n after, before, dimensions, aggrMethod,\n groupBy,\n nodeIDs,\n chartLibrary, id,\n } = payload\n\n // backwards-compatibility, the keys look like this:\n // net_errors.stf0,dygraph,null,ms%7Cflip%7Cjsonwrap%7Cnonzero\n const chartDataUniqueID = `${chart},${chartLibrary},${constructCompatibleKey(\n dimensions,\n options,\n )}`\n\n const url = `${alwaysEndWithSlash(host)}api/v1/data`\n const params = {\n chart,\n _: new Date().valueOf(),\n format,\n points,\n group,\n gtime,\n options,\n after,\n before,\n dimensions,\n ...(aggrMethod && { aggr_method: aggrMethod }),\n ...(nodeIDs && { node_ids: nodeIDs.join(\",\") }),\n ...(groupBy && { groupBy }),\n }\n\n const onSuccessCallback = (data: unknown) => {\n fetchDataResponseChannel.put(fetchDataForSnapshotAction.success({\n snapshotData: data,\n id,\n }))\n // temporarly, until main.js finished rewrite\n // @ts-ignore\n window.chartUpdated({\n chartDataUniqueID,\n data,\n })\n }\n\n const onErrorCallback = () => {\n fetchDataResponseChannel.put(fetchDataForSnapshotAction.failure({ id }))\n // @ts-ignore\n window.chartUpdated({\n chartDataUniqueID,\n chart,\n data: null,\n })\n }\n\n fetchForSnapshot$.next({\n url,\n params,\n onErrorCallback,\n onSuccessCallback,\n })\n}\n\nfunction stopSnapshotModeSaga() {\n // any calls in the queue should stop when save-snapshot modal is closed\n resetFetchForSnapshot$.next()\n}\n\nfunction* fetchChartSaga({ payload }: Action<FetchChartPayload>) {\n const { chart, id, host } = payload\n\n const snapshot = yield select(selectSnapshot)\n if (snapshot) {\n yield put(fetchChartAction.success({\n chartMetadata: snapshot.charts.charts[chart],\n id,\n }))\n return\n }\n\n let response\n const url = isMainJs\n ? `${alwaysEndWithSlash(host)}api/v1/chart`\n : host.replace(\"/data\", \"/chart\")\n try {\n response = yield call(axiosInstance.get, url, {\n params: {\n chart,\n },\n })\n } catch (e) {\n console.warn(\"fetch chart details failure\") // eslint-disable-line no-console\n yield put(fetchChartAction.failure({ id }))\n return\n }\n yield put(fetchChartAction.success({\n chartMetadata: response.data,\n id,\n }))\n}\n\nfunction* fetchInfoSaga({ payload }: Action<FetchInfoPayload>) {\n const { poll } = payload\n let isCloudEnabled = false\n let isAgentClaimed = false\n let isCloudAvailable = false\n let isACLKAvailable = false\n\n try {\n const registry: GlobalStateT[\"registry\"] = yield select(selectRegistry)\n const wasCloudAvailable = registry?.isCloudAvailable\n const wasACLKAvailable = registry?.isACLKAvailable\n\n const { data } = yield call(axiosInstance.get, `${serverDefault}/api/v1/info`)\n isCloudAvailable = data?.[\"cloud-available\"] || false\n isCloudEnabled = data?.[\"cloud-enabled\"] || false\n isAgentClaimed = data?.[\"agent-claimed\"] || false\n isACLKAvailable = data?.[\"aclk-available\"] || false\n\n yield put(fetchInfoAction.success({\n isCloudAvailable, isCloudEnabled, isAgentClaimed, isACLKAvailable, fullInfoPayload: data,\n }))\n\n if (isCloudEnabled && (wasCloudAvailable === null) && !isCloudAvailable) {\n // show only once per session\n showCloudInstallationProblemNotification()\n }\n if (isCloudAvailable && isAgentClaimed && (wasACLKAvailable !== false) && !isACLKAvailable) {\n // show at session-init and if we see a change of isACLKAvailable from true to false\n showCloudConnectionProblemNotification()\n }\n // TODO: No success notification spec`ed?\n // else if (!wasACLKAvailable && isACLKAvailable) {\n // toast.success(\"Connected to the Cloud!\", {\n // position: \"bottom-right\",\n // type: toast.TYPE.SUCCESS,\n // autoClose: NOTIFICATIONS_TIMEOUT,\n // })\n // }\n } catch (e) {\n console.warn(\"fetch agent info failure\") // eslint-disable-line no-console\n yield put(fetchInfoAction.failure())\n }\n\n if (poll && isCloudEnabled && isAgentClaimed) {\n yield delay(INFO_POLLING_FREQUENCY)\n yield put(fetchInfoAction({ poll: true }))\n }\n}\n\n\nexport function* chartSagas() {\n yield takeEvery(fetchDataAction.request, fetchDataSaga)\n yield takeEvery(fetchChartAction.request, fetchChartSaga)\n yield takeEvery(fetchDataForSnapshotAction.request, fetchDataForSnapshotSaga)\n yield takeEvery(stopSnapshotModeAction, stopSnapshotModeSaga)\n yield takeEvery(fetchInfoAction.request, fetchInfoSaga)\n yield spawn(watchFetchDataResponseChannel)\n}\n","export const sidePanelTransitionTimeInSeconds = 0.2\n","import { sortBy, prop, last } from \"ramda\"\nimport { Action } from \"redux-act\"\nimport {\n call, delay, spawn, take, takeEvery, put,\n} from \"redux-saga/effects\"\n\nimport { axiosInstance } from \"utils/api\"\nimport { serverStatic } from \"utils/server-detection\"\nimport { name2id } from \"utils/name-2-id\"\n\nimport {\n startAlarmsAction, StartAlarmsPayload, fetchAllAlarmsAction, updateActiveAlarmsAction,\n} from \"./actions\"\nimport { AlarmLogs, AlarmLog, ActiveAlarms } from \"./types\"\n\nconst ALARMS_INITIALIZATION_DELAY = 1000\nconst ALARMS_UPDATE_EVERY = 10000 // the time in ms between alarm checks\nconst CHART_DIV_OFFSET = -50\n\n// firefox moves the alarms off-screen (above, outside the top of the screen)\n// if alarms are shown faster than: one per 500ms\nconst ALARMS_MS_BETWEEN_NOTIFICATIONS = 500\n\n// equal to old NETDATA.alarms.notifications\nconst areNotificationsAvailable = \"Notification\" in window\n\nconst notificationCallback = window.netdataAlarmsNotifCallback\n\n\n// todo this doesnt change in the session, but should be moved to the redux state anyway\nlet firstNotificationId = 0\nlet lastNotificationId = 0\n\n\nconst scrollToChart = (chartID: unknown): boolean => {\n if (typeof chartID === \"string\") {\n const chartElement = document.querySelector(`#chart_${name2id(chartID)}`)\n if (chartElement) {\n const offset = (chartElement as HTMLDivElement).offsetTop + CHART_DIV_OFFSET;\n (document.querySelector(\"html\") as HTMLElement).scrollTop = offset\n return true\n }\n }\n return false\n}\n\n// perhaps sagas are not the best place for this\nconst scrollToAlarm = (alarm: AlarmLog) => {\n if (typeof alarm === \"object\") {\n const hasFoundChart = scrollToChart(alarm.chart)\n if (hasFoundChart) {\n window.focus()\n }\n }\n}\n\nconst requestPermissions = () => {\n if (areNotificationsAvailable) {\n if (Notification.permission === \"default\") {\n Notification.requestPermission()\n }\n }\n}\n\nconst hasGivenNotificationPermissions = () => (areNotificationsAvailable\n && Notification.permission === \"granted\"\n)\n\nfunction* getLog(lastNotificationIdArg: number, serverDefault: string) {\n try {\n const { data } = yield call(\n axiosInstance.get,\n `${serverDefault}/api/v1/alarm_log?after=${lastNotificationIdArg}`,\n )\n // todo xss check\n return data\n } catch (error) {\n console.warn(\"Error fetching alarms log\", error) // eslint-disable-line no-console\n return null\n }\n}\n\ninterface NotificationConfig {\n notificationTitle: string\n notificationOptions: NotificationOptions\n notificationHandler: (event: Event) => void\n}\n// called \"notify\" in old codebase\nconst getNotification = (\n entry: AlarmLog, activeAlarms: ActiveAlarms, firstNotificationIdArg: number,\n): NotificationConfig | undefined => {\n if (entry.updated) {\n // has been updated by another alarm\n return\n }\n\n let valueString = entry.value_string\n const t = activeAlarms.alarms[`${entry.chart}.${entry.name}`]\n if (typeof t !== \"undefined\"\n && entry.status === t.status\n && typeof t.value_string !== \"undefined\"\n ) {\n valueString = t.value_string\n }\n\n const name = entry.name.replace(/_/g, \" \")\n let status = entry.status.toLowerCase()\n let title = `${name} = ${valueString}`\n const tag = entry.alarm_id\n let icon = \"images/banner-icon-144x144.png\"\n let interaction = false\n let show = true\n\n // switch/case left here to simplify refractor (it's very similar to old code)\n switch (entry.status) {\n case \"REMOVED\":\n show = false\n break\n\n case \"UNDEFINED\":\n return\n\n case \"UNINITIALIZED\":\n return\n\n case \"CLEAR\":\n if (entry.unique_id < firstNotificationIdArg) {\n // alarm is not current\n return\n }\n if (entry.old_status === \"UNINITIALIZED\" || entry.old_status === \"UNDEFINED\") {\n // alarm switch to CLEAR from old_status\n return\n }\n if (entry.no_clear_notification) {\n // alarm is CLEAR but has no_clear_notification flag\n return\n }\n title = `${name} back to normal (${valueString})`\n icon = \"images/check-mark-2-128-green.png\"\n interaction = false\n break\n\n case \"WARNING\":\n if (entry.old_status === \"CRITICAL\") {\n status = `demoted to ${entry.status.toLowerCase()}`\n }\n\n icon = \"images/alert-128-orange.png\"\n interaction = false\n break\n\n case \"CRITICAL\":\n if (entry.old_status === \"WARNING\") {\n status = `escalated to ${entry.status.toLowerCase()}`\n }\n\n icon = \"images/alert-128-red.png\"\n interaction = true\n break\n\n default:\n console.warn(`invalid alarm status ${entry.status}`) // eslint-disable-line no-console\n return\n }\n\n // filter recipients\n // if (show) {\n // show = NETDATA.alarms.recipientMatches(entry.recipient, NETDATA.alarms.recipients)\n // }\n\n\n if (show) {\n if (typeof notificationCallback === \"function\") {\n show = notificationCallback(entry)\n }\n\n if (show) {\n // show this notification\n // eslint-disable-next-line consistent-return\n return {\n notificationTitle: title,\n notificationOptions: {\n body: `${entry.hostname} - ${entry.chart} (${entry.family}) - ${status}: ${entry.info}`,\n tag: `${tag}`,\n requireInteraction: interaction,\n icon: serverStatic + icon,\n data: entry,\n },\n notificationHandler: (event: Event) => {\n event.preventDefault()\n if (event.target) {\n const { data } = event.target as Notification\n scrollToAlarm(data)\n }\n },\n }\n }\n }\n}\n\nfunction* notifyAll(serverDefault: string, activeAlarms: ActiveAlarms) {\n const alarmLogs: AlarmLogs = yield call(getLog, lastNotificationId, serverDefault)\n if (alarmLogs === null || typeof alarmLogs !== \"object\") {\n console.warn(\"invalid alarms log response\") // eslint-disable-line no-console\n return\n }\n\n if (alarmLogs.length === 0) {\n console.log(\"received empty alarm log\") // eslint-disable-line no-console\n return\n }\n\n const logsSorted = sortBy(prop(\"unique_id\"), alarmLogs)\n\n // eslint-disable-next-line camelcase\n const newLogs = logsSorted.filter(({ unique_id }) => unique_id > lastNotificationId)\n const notifications = newLogs\n .map((entry) => (getNotification(entry, activeAlarms, firstNotificationId)))\n .filter((x) => x !== undefined) as NotificationConfig[]\n\n for (let i = 0; i < notifications.length; i += 1) {\n const {\n notificationTitle, notificationOptions, notificationHandler,\n } = notifications[i]\n const notification = new Notification(\n notificationTitle,\n notificationOptions,\n )\n notification.onclick = notificationHandler\n\n yield delay(ALARMS_MS_BETWEEN_NOTIFICATIONS)\n }\n\n // todo put to redux store\n lastNotificationId = (last(logsSorted) as AlarmLog).unique_id\n\n if (typeof window.netdataAlarmsRemember === \"undefined\" || window.netdataAlarmsRemember) {\n localStorage.setItem(\"last_notification_id\", `${lastNotificationId}`)\n }\n}\n\n\nfunction* get(what: string, serverDefault: string) {\n const { data } = yield call(axiosInstance.get, `${serverDefault}/api/v1/alarms?${what}`)\n if (firstNotificationId === 0 && typeof data.latest_alarm_log_unique_id === \"number\") {\n firstNotificationId = data.latest_alarm_log_unique_id\n }\n return data\n}\n\nfunction* alarmsLoop(serverDefault: string) {\n while (true) {\n const activeAlarms = (yield call(get, \"active\", serverDefault)) as ActiveAlarms\n if (activeAlarms) {\n yield put(updateActiveAlarmsAction({ activeAlarms }))\n if (\n hasGivenNotificationPermissions()\n // timestamps in seconds\n && (activeAlarms.latest_alarm_log_unique_id > lastNotificationId)\n ) {\n yield call(notifyAll, serverDefault, activeAlarms)\n\n if (activeAlarms.status === false) {\n // Health monitoring is disabled on this netdata\n break\n }\n }\n }\n yield delay(ALARMS_UPDATE_EVERY)\n }\n}\n\nfunction* startAlarms() {\n // make sure we handle that action only once, we don't want multiple intervals/loops\n const { payload }: { payload: StartAlarmsPayload } = yield take(startAlarmsAction)\n const { serverDefault } = payload\n\n yield delay(ALARMS_INITIALIZATION_DELAY)\n\n lastNotificationId = +(localStorage.getItem(\"last_notification_id\") || lastNotificationId)\n requestPermissions()\n yield call(alarmsLoop, serverDefault)\n}\n\ntype FetchAllAlarmsPayload = {\n callback: (x: unknown) => void,\n serverDefault: string,\n}\nfunction* fetchAllAlarmsSaga({ payload }: Action<FetchAllAlarmsPayload>) {\n const { callback, serverDefault } = payload\n const allAlarms = yield call(get, \"all\", serverDefault)\n callback(allAlarms)\n}\n\nexport function* alarmsSagas() {\n yield spawn(startAlarms)\n yield takeEvery(fetchAllAlarmsAction.request, fetchAllAlarmsSaga)\n}\n","const allowedReferrerDomains = [\n \"\",\n \"https://www.google.com/\",\n \"https://duckduckgo.com/\",\n \"https://www.reddit.com/\",\n]\n\nexport const isAllowedReferrer = (referrer: string) => allowedReferrerDomains.includes(referrer)\n || referrer.endsWith(\".my-netdata.io/\")\n || referrer.startsWith(\"https://github.com/\")\n || referrer.endsWith(\"netdata.cloud/\")\n || referrer.startsWith(\"https://app.netdata.cloud/\")\n","import { uniq, filter } from \"ramda\"\nimport {\n spawn, take, put, takeEvery, call, delay, select,\n} from \"redux-saga/effects\"\nimport { channel } from \"redux-saga\"\nimport { AxiosResponse } from \"axios\"\nimport { Action } from \"redux-act\"\n\nimport { NETDATA_REGISTRY_SERVER } from \"utils/utils\"\nimport { axiosInstance } from \"utils/api\"\nimport { isDemo } from \"utils/is-demo\"\nimport { sidePanelTransitionTimeInSeconds } from \"components/space-panel/settings\"\nimport { fetchInfoAction } from \"domains/chart/actions\"\n\nimport {\n fetchHelloAction,\n FetchHelloPayload,\n windowFocusChangeAction,\n updatePersonUrlsAction,\n SetOptionAction,\n setOptionAction,\n setSpacePanelStatusAction,\n SetSpacePanelStatusActionPayload,\n setSpacePanelTransitionEndAction,\n HelloResponse,\n accessRegistrySuccessAction,\n} from \"./actions\"\nimport { alarmsSagas } from \"./alarms-sagas\"\nimport { MASKED_DATA } from \"./constants\"\nimport { selectFullInfoPayload } from \"./selectors\"\nimport { isAllowedReferrer } from \"./utils\"\nimport { InfoPayload } from \"./__mocks__/info-mock\"\n\nconst windowFocusChannel = channel()\n\nexport function listenToWindowFocus() {\n window.addEventListener(\"focus\", () => {\n windowFocusChannel.put(windowFocusChangeAction({ hasWindowFocus: true }))\n })\n window.addEventListener(\"blur\", () => {\n windowFocusChannel.put(windowFocusChangeAction({ hasWindowFocus: false }))\n })\n}\n\nexport function* watchWindowFocusChannel() {\n while (true) {\n const action = yield take(windowFocusChannel)\n yield put(action)\n }\n}\n\nfunction* waitForFullInfoPayload() {\n return (yield take(fetchInfoAction.success)).payload.fullInfoPayload\n}\n\nfunction* injectPosthog(machineGuid: string, personGuid?: string) {\n if (window.posthog) {\n return\n }\n const info: InfoPayload = (yield select(selectFullInfoPayload))\n || (yield call(waitForFullInfoPayload))\n || {}\n\n /* eslint-disable */\n // @ts-ignore\n !function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(\".\");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement(\"script\")).type=\"text/javascript\",p.async=!0,p.src=s.api_host+\"/static/array.js\",(r=t.getElementsByTagName(\"script\")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a=\"posthog\",u.people=u.people||[],u.toString=function(t){var e=\"posthog\";return\"posthog\"!==a&&(e+=\".\"+a),t||(e+=\" (stub)\"),e},u.people.toString=function(){return u.toString(1)+\".people (stub)\"},o=\"capture identify alias people.set people.set_once set_config register register_once unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled onFeatureFlags\".split(\" \"),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[]);\n /* eslint-enable */\n window.posthog.init(\"mqkwGT0JNFqO-zX2t0mW6Tec9yooaVu7xCBlXtHnt5Y\", {\n api_host: \"https://posthog.netdata.cloud\",\n loaded: (posthog: any) => {\n if (personGuid) {\n posthog.identify(personGuid)\n }\n },\n })\n const shouldMaskReferrer = !isDemo && !isAllowedReferrer(document.referrer)\n const MASKED = \"masked\"\n window.posthog.register(\n // remove properties with unavailable values\n filter((value) => value !== undefined && value !== null,\n {\n $ip: \"127.0.0.1\",\n $current_url: isDemo ? null : \"agent dashboard\",\n $pathname: isDemo ? null : \"netdata-dashboard\",\n $host: isDemo ? null : \"dashboard.netdata.io\",\n\n $initial_referring_domain: shouldMaskReferrer ? MASKED : null,\n $initial_referrer: shouldMaskReferrer ? MASKED : null,\n $referring_domain: shouldMaskReferrer ? MASKED : null,\n $referrer: shouldMaskReferrer ? MASKED : null,\n\n event_source: \"agent dashboard\",\n\n netdata_version: info.version,\n netdata_machine_guid: machineGuid,\n netdata_person_id: personGuid || \"Unavailable\",\n netdata_buildinfo: info[\"buildinfo\"],\n netdata_release_channel: info[\"release-channel\"],\n mirrored_host_count: info.mirrored_hosts?.length,\n alarms_normal: info.alarms?.normal,\n alarms_warning: info.alarms?.warning,\n alarms_critical: info.alarms.critical,\n host_os_name: info.os_name,\n host_os_id: info.os_id,\n host_os_id_like: info.os_id_like,\n host_os_version: info.os_version,\n host_os_version_id: info.os_version_id,\n host_os_detection: info.os_detection,\n system_cores_total: info.cores_total,\n system_total_disk_space: info.total_disk_space,\n system_cpu_freq: info.cpu_freq,\n system_ram_total: info.ram_total,\n system_kernel_name: info.kernel_name,\n system_kernel_version: info.kernel_version,\n system_architecture: info.architecture,\n system_virtualization: info.virtualization,\n system_virt_detection: info.virt_detection,\n system_container: info.container,\n system_container_detection: info.container_detection,\n container_os_name: info.container_os_name,\n container_os_id: info.container_os_id,\n container_os_id_like: info.container_os_id_like,\n container_os_version: info.container_os_version,\n container_os_version_id: info.container_os_version_id,\n host_collectors_count: info.collectors.length,\n host_cloud_enabled: info[\"cloud-enabled\"],\n host_cloud_available: info[\"cloud-available\"],\n host_agent_claimed: info[\"agent-claimed\"],\n host_aclk_available: info[\"aclk-available\"],\n host_aclk_implementation: info[\"aclk-implementation\"],\n host_allmetrics_json_used: info[\"allmetrics-json-used\"],\n host_allmetrics_prometheus_used: info[\"allmetrics-prometheus-used\"],\n host_allmetrics_shell_used: info[\"allmetrics-shell-used\"],\n host_charts_count: info[\"charts-count\"],\n host_dashboard_used: info[\"dashboard-used\"],\n host_metrics_count: info[\"metrics-count\"],\n host_notification_methods: info[\"notification-methods\"],\n config_memory_mode: info[\"memory-mode\"],\n config_exporting_enabled: info[\"exporting-enabled\"],\n config_exporting_connectors: info[\"exporting-connectors\"],\n config_hosts_available: info[\"hosts-available\"],\n config_https_enabled: info[\"https-enabled\"],\n config_multidb_disk_quota: info[\"multidb-disk-quota\"],\n config_page_cache_size: info[\"page-cache-size\"],\n config_stream_enabled: info[\"stream-enabled\"],\n config_web_enabled: info[\"web-enabled\"],\n // eslint-disable-next-line camelcase\n host_is_parent: info.host_labels?._is_parent,\n mirrored_hosts_reachable: info.mirrored_hosts_status\n .filter(({ reachable }) => reachable).length,\n mirrored_hosts_unreachable: info.mirrored_hosts_status\n .filter(({ reachable }) => !reachable).length,\n host_collectors: info.collectors,\n host_is_k8s_node: info.is_k8s_node,\n }),\n )\n}\n\nexport type PersonUrl = [\n string, // guid\n string, // url\n number, // last timestamp (ms)\n number, // accesses\n string // name\n]\n\ntype AccessRegistryResponse = null | {\n personGuid?: string\n registryServer: string\n urls?: PersonUrl[]\n}\n\ntype AccessRegistry = (args: {\n machineGuid: string\n maxRedirects: number\n name: string\n registryServer: string\n url: string\n}) => Promise<AccessRegistryResponse>\nconst accessRegistry: AccessRegistry = ({\n machineGuid, maxRedirects, name, registryServer, url,\n}) => axiosInstance.get(`${registryServer}/api/v1/registry`, {\n headers: {\n \"Cache-Control\": \"no-cache, no-store\",\n Pragma: \"no-cache\",\n },\n params: {\n action: \"access\",\n machine: machineGuid,\n name,\n url,\n },\n withCredentials: true, // required for the cookie\n}).then(({ data }) => {\n // todo xss check\n const isRedirect = typeof data.registry === \"string\"\n\n let returnData = data\n if (typeof data.status !== \"string\" || data.status !== \"ok\") {\n // todo throw error (409 in old dashboard)\n returnData = null\n }\n\n if (returnData === null) {\n if (isRedirect && maxRedirects > 0) {\n return accessRegistry({\n maxRedirects: maxRedirects - 1,\n machineGuid,\n name,\n registryServer: data.registry,\n url,\n })\n }\n return { registryServer }\n }\n const urls = data.urls.filter((u: [string, string]) => u[1] !== MASKED_DATA)\n return {\n personGuid: data.person_guid || null,\n registryServer,\n urls,\n }\n}).catch(() => {\n // todo handle error in better way (410 in old dashboard)\n console.warn(\"error calling registry:\", registryServer) // eslint-disable-line no-console\n return null\n})\n\nexport interface RegistryMachine {\n guid: string\n url: string\n lastTimestamp: number\n accesses: number\n name: string\n alternateUrls: string[]\n}\n\ntype ParsePersonUrls = (\n personUrls: PersonUrl[]\n) => {\n registryMachines: { [key: string]: RegistryMachine }\n registryMachinesArray: RegistryMachine[]\n}\nexport const parsePersonUrls: ParsePersonUrls = (personUrls) => {\n // todo main.js is using registryMachines, but should use only the array\n const registryMachines: { [key: string]: RegistryMachine } = {}\n\n personUrls\n .slice()\n .reverse()\n .forEach(([guid, url, lastTimestamp, accesses, name]: PersonUrl) => {\n const existingObj = registryMachines[guid] || {\n lastTimestamp: 0,\n accesses: 0,\n alternateUrls: [],\n guid: \"\",\n url: \"\",\n name: \"\"\n }\n const isNewer = existingObj.lastTimestamp < lastTimestamp\n const extended: RegistryMachine = {\n guid: existingObj.guid || guid,\n url: isNewer ? url : existingObj.url,\n lastTimestamp: isNewer ? lastTimestamp : existingObj.lastTimestamp,\n accesses: existingObj.accesses + accesses,\n name: isNewer ? name : existingObj.name,\n alternateUrls: existingObj.alternateUrls.concat(url),\n }\n registryMachines[guid] = extended\n })\n\n const registryMachinesArray = uniq(\n // not sure if reverse is needed, but it was in old dashboard\n personUrls\n .slice()\n .reverse()\n .map(([guid]: PersonUrl) => guid),\n ).map((guid) => registryMachines[guid])\n return {\n registryMachines,\n registryMachinesArray,\n }\n}\n\nfunction* fetchHelloSaga({ payload }: Action<FetchHelloPayload>) {\n const { serverDefault } = payload\n const helloCallUrl = `${serverDefault}api/v1/registry?action=hello`\n let response: AxiosResponse<HelloResponse>\n try {\n response = yield call(axiosInstance.get, helloCallUrl, {\n headers: {\n \"Cache-Control\": \"no-cache, no-store\",\n Pragma: \"no-cache\",\n },\n withCredentials: true,\n })\n } catch (error) {\n console.warn(\"error accessing registry or Do-Not-Track is enabled\") // eslint-disable-line\n yield put(fetchHelloAction.failure())\n return\n }\n const cloudBaseURL = response.data.cloud_base_url\n const { hostname } = response.data\n const machineGuid = response.data.machine_guid\n const registryServer = response.data.registry\n const isUsingGlobalRegistry = registryServer === NETDATA_REGISTRY_SERVER\n\n yield put(fetchHelloAction.success({\n cloudBaseURL,\n hostname,\n isUsingGlobalRegistry,\n machineGuid,\n }))\n\n const name = isUsingGlobalRegistry ? MASKED_DATA : hostname\n const url = isUsingGlobalRegistry ? MASKED_DATA : serverDefault\n\n // now make access call - max_redirects, callback, etc...\n const accessRegistryResponse: AccessRegistryResponse = yield call(accessRegistry, {\n machineGuid,\n maxRedirects: 2,\n name,\n registryServer,\n url,\n })\n\n if (response.data.anonymous_statistics) {\n yield spawn(injectPosthog, response.data.machine_guid, accessRegistryResponse?.personGuid)\n }\n\n if (accessRegistryResponse?.urls && accessRegistryResponse?.personGuid) {\n const personUrls = parsePersonUrls(accessRegistryResponse.urls)\n const { registryMachines, registryMachinesArray } = personUrls\n yield put(updatePersonUrlsAction({\n personGuid: accessRegistryResponse.personGuid,\n registryMachines,\n registryMachinesArray,\n }))\n }\n\n yield put(accessRegistrySuccessAction({\n registryServer: accessRegistryResponse?.registryServer || registryServer,\n }))\n}\n\nconst constructOptionStorageKey = (key: string) => `options.${key}`\nfunction setOptonSaga({ payload }: Action<SetOptionAction>) {\n const { key, value } = payload\n if (key === \"stop_updates_when_focus_is_lost\") {\n // old dashboard was saving that property to localStorage, but was always ommiting it when\n // reading. it was only possible to persist this setting via url (update_always hash param)\n return\n }\n localStorage.setItem(constructOptionStorageKey(key), JSON.stringify(value))\n}\n\nfunction* spacePanelSaga({ payload }: Action<SetSpacePanelStatusActionPayload>) {\n if (payload.isActive) {\n document.body.className = \"with-panel\"\n } else {\n document.body.className = \"\"\n }\n yield delay(sidePanelTransitionTimeInSeconds * 1000)\n yield put(setSpacePanelTransitionEndAction({ isActive: payload.isActive }))\n}\n\nexport function* globalSagas() {\n yield spawn(listenToWindowFocus)\n yield spawn(watchWindowFocusChannel)\n yield takeEvery(fetchHelloAction.request, fetchHelloSaga)\n yield spawn(alarmsSagas)\n yield takeEvery(setOptionAction, setOptonSaga)\n yield takeEvery(setSpacePanelStatusAction, spacePanelSaga)\n}\n","/* eslint-disable comma-dangle */\n/* eslint-disable implicit-arrow-linebreak */\nimport { omit, pipe, mergeDeepLeft } from \"ramda\"\n\ntype HashParams = { [param: string]: string }\nconst fragmentParamsSeparatorRegEx = /[&;]/\nconst fragmentParamsSeparator = \";\"\n\nexport const getHashParams = (\n hash = decodeURIComponent(window.location.hash.substr(1))\n): HashParams => {\n if (hash.length === 0) {\n return {}\n }\n const params = hash.split(fragmentParamsSeparatorRegEx)\n const response = params.reduce((acc: HashParams, current) => {\n const parts = current.split(\"=\")\n const [param, value] = parts\n acc[param] = value\n return acc\n }, {})\n return response\n}\n\nexport const makeHashFromObject = (params: { [paramKey: string]: string }) => {\n const entries = Object.entries(params)\n if (entries.length === 0) {\n return \"\"\n }\n return entries.map(\n ([key, value]) => `${key}=${encodeURIComponent(value)}`\n ).join(fragmentParamsSeparator)\n}\n\nexport const getFilteredHash = (\n excludedParams: string[],\n hash = decodeURIComponent(window.location.hash.substr(1))\n) => {\n const filteredParams = omit(excludedParams, getHashParams(hash))\n return makeHashFromObject(filteredParams)\n}\n\nexport const getUniqueParamsHash = pipe(getHashParams, makeHashFromObject)\n\nexport const setHashParams = (params: { [paramKey: string]: string }) => {\n const allParams = getHashParams()\n const allParamsResult = mergeDeepLeft(params, allParams)\n // window.history.replaceState(null, \"\", `#${makeHashFromObject(allParams)}`)\n window.location.hash = `${makeHashFromObject(allParamsResult)}`\n}\n\nexport const getHashParam = (\n param: string,\n hash = decodeURIComponent(window.location.hash.substr(1))\n): string => getHashParams(hash)[param]\n\nexport const hasHashParam = (\n param: string,\n hash = decodeURIComponent(window.location.hash.substr(1))\n): boolean => getHashParams(hash)[param] !== undefined\n\nexport const removeHashParams = (params: string[]) => {\n window.location.hash = `${getFilteredHash(params)}`\n}\n","/* eslint-disable camelcase */\n/* eslint-disable operator-linebreak */\nimport { take, takeEvery } from \"redux-saga/effects\"\nimport { Action } from \"redux-act\"\n\nimport {\n clearHighlightAction,\n SetGlobalChartUnderlayAction,\n setGlobalChartUnderlayAction,\n} from \"domains/global/actions\"\nimport {\n explicitlySignInAction,\n showSignInModalAction,\n ShowSignInModalAction,\n} from \"domains/dashboard/actions\"\nimport { setHashParams, getHashParams, removeHashParams } from \"utils/hash-utils\"\n\nexport const LOCAL_STORAGE_NEEDS_SYNC = \"LOCAL-STORAGE-NEEDS-SYNC\"\n\nfunction setGlobalChartUnderlaySaga({ payload }: Action<SetGlobalChartUnderlayAction>) {\n const { after, before } = payload\n if (window.urlOptions) {\n // additional check to prevent loop, after setting initial state from url\n if (window.urlOptions.after !== after || window.urlOptions.before !== before) {\n window.urlOptions.netdataHighlightCallback(true, after, before)\n }\n } else {\n // TODO: Consider a setting to control wether the component sets these hash params\n const hashParams = getHashParams()\n const highlight_after = Math.round(after).toString()\n const highlight_before = Math.round(before).toString()\n if (\n hashParams.highlight_after !== highlight_after ||\n hashParams.highlight_before !== highlight_before\n ) {\n setHashParams({ highlight_after, highlight_before })\n }\n }\n}\n\nfunction clearHighlightSaga() {\n if (window.urlOptions) {\n window.urlOptions.netdataHighlightCallback(false, 0, 0)\n } else {\n removeHashParams([\"highlight_after\", \"highlight_before\"])\n }\n}\n\nfunction* showSignInSaga({ payload }: Action<ShowSignInModalAction>) {\n if (window.showSignInModal) {\n window.showSignInModal()\n\n yield take(explicitlySignInAction)\n const { signInLinkHref } = payload\n window.localStorage.setItem(LOCAL_STORAGE_NEEDS_SYNC, \"true\")\n window.location.href = signInLinkHref\n }\n}\n\nexport function* mainJsSagas() {\n yield takeEvery(setGlobalChartUnderlayAction, setGlobalChartUnderlaySaga)\n yield takeEvery(clearHighlightAction, clearHighlightSaga)\n yield takeEvery(showSignInModalAction, showSignInSaga)\n}\n","import { spawn } from \"redux-saga/effects\"\n\nimport { chartSagas } from \"domains/chart/sagas\"\nimport { globalSagas } from \"domains/global/sagas\"\nimport { mainJsSagas } from \"domains/dashboard/sagas\"\n\nexport function* rootSaga() {\n yield spawn(globalSagas)\n yield spawn(chartSagas)\n yield spawn(mainJsSagas)\n}\n","import { compose, applyMiddleware, createStore } from \"redux\"\nimport createSagaMiddleware from \"redux-saga\"\nimport rootReducer from \"./root-reducer\"\nimport { rootSaga } from \"./root-saga\"\n\nconst sagaMiddleware = createSagaMiddleware()\n\nconst reduxDevTools = process.env.NODE_ENV === \"development\"\n && window.__REDUX_DEVTOOLS_EXTENSION__\n // @ts-ignore\n && window.__REDUX_DEVTOOLS_EXTENSION__({ name: \"Dashboard Charts\" })\n\nconst composeMiddlewaresWithDevTools = () => (reduxDevTools\n ? compose(applyMiddleware(sagaMiddleware), reduxDevTools)\n : compose(applyMiddleware(sagaMiddleware)))\n\nexport const configureStore = () => {\n const store = createStore(\n rootReducer,\n composeMiddlewaresWithDevTools(),\n )\n sagaMiddleware.run(rootSaga)\n return store\n}\n\nexport const store = configureStore()\n","import $ from \"jquery\"\n\nwindow.$ = $\nwindow.jQuery = $\n","let loadCssPromise: Promise<void>\n\ntype LoadCss = (href: string) => Promise<void>\nexport const loadCss: LoadCss = (href) => {\n if (loadCssPromise) {\n return loadCssPromise\n }\n return new Promise((resolve, reject) => {\n const fileRef = document.createElement(\"link\")\n fileRef.setAttribute(\"rel\", \"stylesheet\")\n fileRef.setAttribute(\"type\", \"text/css\")\n fileRef.setAttribute(\"href\", href)\n\n fileRef.onload = () => {\n resolve()\n }\n\n fileRef.onerror = () => {\n reject(Error(`Error loading css: ${href}`))\n }\n\n document.getElementsByTagName(\"head\")[0].appendChild(fileRef)\n })\n}\n","import classNames from \"classnames\"\nimport { Attributes } from \"./transformDataAttributes\"\n\nexport type ChartLibraryName =\n | \"dygraph\"\n | \"sparkline\"\n | \"peity\"\n | \"google\"\n // | \"d3\"\n | \"d3pie\"\n | \"easypiechart\"\n | \"gauge\"\n | \"textonly\"\n | \"groupbox\"\nexport interface ChartLibraryConfig {\n aspectRatio?: number\n format: string\n hasLegend: (attributes: Attributes) => boolean\n hasToolboxPanAndZoom?: boolean\n isLogScale?: (attributes: Attributes) => boolean\n options: (attributes: Attributes) => string\n trackColors: boolean\n pixelsPerPoint: (attributes: Attributes) => number\n xssRegexIgnore: RegExp\n containerClass: (attributes: Attributes) => string\n}\nexport type ChartLibrariesSettings = {\n [key in ChartLibraryName]: ChartLibraryConfig\n}\n\ntype IsDygraphSparkline = (attributes: Attributes) => boolean\nconst isDygraphSparkline: IsDygraphSparkline = (attributes) => (\n attributes.dygraphTheme === \"sparkline\"\n)\n\nexport const chartLibrariesSettings: ChartLibrariesSettings = {\n dygraph: {\n // initialize: window.NETDATA.dygraphInitialize,\n // create: window.NETDATA.dygraphChartCreate,\n // update: window.NETDATA.dygraphChartUpdate,\n // resize(state) {\n // if (typeof state.tmp.dygraph_instance !== \"undefined\"\n // && typeof state.tmp.dygraph_instance.resize === \"function\") {\n // state.tmp.dygraph_instance.resize()\n // }\n // },\n // setSelection: window.NETDATA.dygraphSetSelection,\n // clearSelection: window.NETDATA.dygraphClearSelection,\n hasToolboxPanAndZoom: true,\n // initialized: false,\n // enabled: true,\n xssRegexIgnore: new RegExp(\"^/api/v1/data.result.data$\"),\n format: \"json\",\n options(attributes: Attributes) {\n if (typeof this.isLogScale === \"function\") {\n // flip - in proper order (from oldest to newest)\n return `ms|flip${this.isLogScale(attributes) ? \"|abs\" : \"\"}`\n }\n return \"\"\n },\n hasLegend(attributes: Attributes) {\n // not using __hasLegendCache__ as in old-dashboard, because performance tweaks like this\n // probably won't be needed in react app\n const { legend = true } = attributes\n return !isDygraphSparkline(attributes) && Boolean(legend)\n },\n // autoresize(state) {\n // void (state)\n // return true\n // },\n // max_updates_to_recreate(state) {\n // void (state)\n // return 5000\n // },\n trackColors: true,\n pixelsPerPoint: ((attributes: Attributes) => (isDygraphSparkline(attributes) ? 2 : 3)),\n // pixels_per_point(state) {\n // return (this.isSparkline(state) === false) ? 3 : 2\n // },\n isLogScale(attributes: Attributes) {\n return attributes.dygraphTheme === \"logscale\"\n },\n containerClass(attributes: Attributes) {\n return this.hasLegend(attributes)\n ? classNames(\n \"netdata-container-with-legend\",\n attributes.legendPosition === \"bottom\" && \"netdata-container-with-legend--bottom\",\n )\n : \"netdata-container\"\n },\n // container_class(state) {\n // if (this.legend(state) !== null) {\n // return \"netdata-container-with-legend\"\n // }\n // return \"netdata-container\"\n // },\n },\n sparkline: {\n // initialize: window.NETDATA.sparklineInitialize,\n // create: window.NETDATA.sparklineChartCreate,\n // update: window.NETDATA.sparklineChartUpdate,\n // resize: null,\n // setSelection: undefined, // function(state, t) { void(state); return true; },\n // clearSelection: undefined, // function(state) { void(state); return true; },\n hasToolboxPanAndZoom: false,\n // initialized: false,\n // enabled: true,\n xssRegexIgnore: new RegExp(\"^/api/v1/data.result$\"),\n format: \"array\",\n options: () => \"flip|abs\",\n hasLegend: () => false,\n // autoresize(state) {\n // void (state)\n // return false\n // },\n // max_updates_to_recreate(state) {\n // void (state)\n // return 5000\n // },\n trackColors: false,\n pixelsPerPoint: () => 3,\n containerClass: () => \"netdata-container\",\n },\n peity: {\n // initialize: window.NETDATA.peityInitialize,\n // create: window.NETDATA.peityChartCreate,\n // update: window.NETDATA.peityChartUpdate,\n // resize: null,\n // setSelection: undefined, // function(state, t) { void(state); return true; },\n // clearSelection: undefined, // function(state) { void(state); return true; },\n hasToolboxPanAndZoom: false,\n // initialized: false,\n // enabled: true,\n xssRegexIgnore: new RegExp(\"^/api/v1/data.result$\"),\n format: \"ssvcomma\",\n options: () => \"null2zero|flip|abs\",\n hasLegend: () => false,\n // autoresize(state) {\n // void (state)\n // return false\n // },\n // max_updates_to_recreate(state) {\n // void (state)\n // return 5000\n // },\n trackColors: false,\n pixelsPerPoint: () => 3,\n containerClass: () => \"netdata-container\",\n },\n google: {\n // initialize: window.NETDATA.googleInitialize,\n // create: window.NETDATA.googleChartCreate,\n // update: window.NETDATA.googleChartUpdate,\n // resize: null,\n // setSelection: undefined, // function(state, t) { void(state); return true; },\n // clearSelection: undefined, // function(state) { void(state); return true; },\n hasToolboxPanAndZoom: false,\n // initialized: false,\n // enabled: true,\n xssRegexIgnore: new RegExp(\"^/api/v1/data.result.rows$\"),\n format: \"datatable\",\n options: () => \"\",\n hasLegend: () => false,\n // autoresize(state) {\n // void (state)\n // return false\n // },\n // max_updates_to_recreate(state) {\n // void (state)\n // return 300\n // },\n trackColors: false,\n pixelsPerPoint: () => 4,\n containerClass: () => \"netdata-container\",\n },\n d3pie: {\n // initialize: window.NETDATA.d3pieInitialize,\n // create: window.NETDATA.d3pieChartCreate,\n // update: window.NETDATA.d3pieChartUpdate,\n // resize: null,\n // setSelection: window.NETDATA.d3pieSetSelection,\n // clearSelection: window.NETDATA.d3pieClearSelection,\n hasToolboxPanAndZoom: false,\n xssRegexIgnore: new RegExp(\"^/api/v1/data.result.data$\"),\n format: \"json\",\n hasLegend: () => false,\n options: () => \"objectrows|ms\",\n // autoresize(state) {\n // void (state)\n // return false\n // },\n // max_updates_to_recreate(state) {\n // void (state)\n // return 5000\n // },\n trackColors: false,\n pixelsPerPoint: () => 15,\n containerClass: () => \"netdata-container\",\n },\n // d3: {\n // initialize: window.NETDATA.d3Initialize,\n // create: window.NETDATA.d3ChartCreate,\n // update: window.NETDATA.d3ChartUpdate,\n // resize: null,\n // setSelection: undefined, // function(state, t) { void(state); return true; },\n // clearSelection: undefined, // function(state) { void(state); return true; },\n // toolboxPanAndZoom: null,\n // initialized: false,\n // enabled: true,\n // xssRegexIgnore: new RegExp(\"^/api/v1/data\\.result.data$\"),\n // format(state) {\n // void (state)\n // return \"json\"\n // },\n // options(state) {\n // void (state)\n // return \"\"\n // },\n // legend(state) {\n // void (state)\n // return null\n // },\n // autoresize(state) {\n // void (state)\n // return false\n // },\n // max_updates_to_recreate(state) {\n // void (state)\n // return 5000\n // },\n // track_colors(state) {\n // void (state)\n // return false\n // },\n // pixels_per_point(state) {\n // void (state)\n // return 3\n // },\n // container_class(state) {\n // void (state)\n // return \"netdata-container\"\n // },\n // },\n easypiechart: {\n // initialize: window.NETDATA.easypiechartInitialize,\n // create: window.NETDATA.easypiechartChartCreate,\n // update: window.NETDATA.easypiechartChartUpdate,\n // resize: null,\n // setSelection: window.NETDATA.easypiechartSetSelection,\n // clearSelection: window.NETDATA.easypiechartClearSelection,\n hasToolboxPanAndZoom: false,\n // initialized: false,\n // enabled: true,\n xssRegexIgnore: new RegExp(\"^/api/v1/data.result$\"),\n format: \"array\",\n options() {\n return \"absolute\"\n },\n hasLegend() {\n return false\n },\n // autoresize(state) {\n // void (state)\n // return false\n // },\n // max_updates_to_recreate(state) {\n // void (state)\n // return 5000\n // },\n trackColors: true,\n pixelsPerPoint: () => 3,\n aspectRatio: 100,\n containerClass: () => \"netdata-container-easypiechart\",\n },\n gauge: {\n // initialize: window.NETDATA.gaugeInitialize,\n // create: window.NETDATA.gaugeChartCreate,\n // update: window.NETDATA.gaugeChartUpdate,\n // resize: null,\n // setSelection: window.NETDATA.gaugeSetSelection,\n // clearSelection: window.NETDATA.gaugeClearSelection,\n hasToolboxPanAndZoom: false,\n // initialized: false,\n // enabled: true,\n xssRegexIgnore: new RegExp(\"^/api/v1/data.result$\"),\n format: \"array\",\n options: () => \"absolute\",\n hasLegend: () => false,\n // autoresize(state) {\n // void (state)\n // return false\n // },\n // max_updates_to_recreate(state) {\n // void (state)\n // return 5000\n // },\n trackColors: true,\n pixelsPerPoint: () => 3,\n aspectRatio: 60,\n containerClass: () => \"netdata-container-gauge\",\n },\n textonly: {\n // autoresize(state) {\n // void (state)\n // return false\n // },\n containerClass: () => \"netdata-container\",\n // create: window.NETDATA.textOnlyCreate,\n // enabled: true,\n format: \"array\",\n // initialized: true,\n // initialize(callback) {\n // callback()\n // },\n hasLegend: () => false,\n // max_updates_to_recreate(state) {\n // void (state)\n // return 5000\n // },\n options: () => \"absolute\",\n pixelsPerPoint: () => 3,\n trackColors: false,\n // update: window.NETDATA.textOnlyUpdate,\n xssRegexIgnore: new RegExp(\"^/api/v1/data.result$\"),\n },\n groupbox: {\n containerClass: () => \"netdata-container\",\n hasLegend: () => false,\n options: () => \"absolute\",\n format: \"json\",\n trackColors: false,\n pixelsPerPoint: () => 3,\n xssRegexIgnore: new RegExp(\"^/api/v1/data.result$\"),\n },\n}\n","import { Attributes } from \"domains/chart/utils/transformDataAttributes\"\nimport { chartLibrariesSettings } from \"domains/chart/utils/chartLibrariesSettings\"\n\nexport const getChartURLOptions = (\n attributes: Attributes, shouldEliminateZeroDimensions: boolean,\n) => {\n const {\n appendOptions,\n overrideOptions,\n } = attributes\n let ret = \"\"\n\n ret += overrideOptions\n ? overrideOptions.toString()\n : chartLibrariesSettings[attributes.chartLibrary].options(attributes)\n\n if (typeof appendOptions === \"string\") {\n ret += `|${encodeURIComponent(appendOptions)}`\n }\n\n ret += \"|jsonwrap\"\n\n if (shouldEliminateZeroDimensions) {\n ret += \"|nonzero\"\n }\n\n if (attributes.dimensionsAggrMethod === \"sum-of-abs\"\n || (!attributes.dimensionsAggrMethod && attributes.groupBy && attributes.groupBy !== \"dimension\")\n ) {\n ret += \"|absolute\"\n }\n\n return ret\n}\n","export const BIGGEST_INTERVAL_NUMBER = 2 ** 31 - 1\n","import React from \"react\"\n\nimport { Icon } from \"components/icon\"\n\ninterface Props {\n containerNode: HTMLElement\n hasEmptyData: boolean\n}\n\nexport const Loader = ({\n containerNode,\n hasEmptyData,\n}: Props) => {\n // below is 90% of original logic.\n // since it rerenders when IntersectionObserver turns the chart back on,\n // it's not that important to detect screen height and container sizes changes\n const screenHeight = window.screen.height\n\n // normally we want a font size, as tall as the element\n let h = containerNode.clientHeight\n\n // but give it some air, 20% let's say, or 5 pixels min\n const lost = Math.max(h * 0.2, 5)\n h -= lost\n\n // center the text, vertically\n let paddingTop = (lost - 5) / 2\n\n // but check the width too\n // it should fit 10 characters in it\n const w = containerNode.clientWidth / 10\n if (h > w) {\n paddingTop += (h - w) / 2\n h = w\n }\n\n // and don't make it too huge\n // 5% of the screen size is good\n if (h > screenHeight / 20) {\n paddingTop += (h - (screenHeight / 20)) / 2\n h = screenHeight / 20\n }\n\n const label = hasEmptyData ? \" empty\" : \" netdata\"\n const iconType = hasEmptyData ? \"noData\" : \"loading\"\n\n return (\n <div\n className=\"netdata-message icon\"\n style={{\n fontSize: h,\n paddingTop,\n }}\n >\n <Icon iconType={iconType} />\n {label}\n </div>\n )\n}\n","type GetPanAndZoomStep = (event: React.MouseEvent) => number\nexport const getPanAndZoomStep: GetPanAndZoomStep = (event) => {\n if (event.ctrlKey) {\n return window.NETDATA.options.current.pan_and_zoom_factor\n * window.NETDATA.options.current.pan_and_zoom_factor_multiplier_control\n } if (event.shiftKey) {\n return window.NETDATA.options.current.pan_and_zoom_factor\n * window.NETDATA.options.current.pan_and_zoom_factor_multiplier_shift\n } if (event.altKey) {\n return window.NETDATA.options.current.pan_and_zoom_factor\n * window.NETDATA.options.current.pan_and_zoom_factor_multiplier_alt\n }\n return window.NETDATA.options.current.pan_and_zoom_factor\n}\n","export const safeEqualCheck = (a: unknown, b: unknown) => {\n if (a === b) {\n return true\n }\n return Number.isNaN(a as number) && Number.isNaN(b as number)\n}\n","import { identity } from \"ramda\"\nimport {\n useCallback, useState, useMemo, useRef,\n} from \"react\"\n\nimport { useSelector } from \"store/redux-separate-context\"\nimport { selectTemperatureSetting, selectSecondsAsTimeSetting } from \"domains/global/selectors\"\nimport { unitsConversionCreator } from \"utils/units-conversion\"\nimport { safeEqualCheck } from \"utils/safe-equal-check\"\n\nimport { ChartData } from \"../chart-types\"\nimport { Attributes } from \"./transformDataAttributes\"\n\ntype Converter = (v: number) => number | string\n// only time units are converted into strings, the rest are numbers\n\n// todo - memoization similar to the one as in old dashboard, but probably not needed\nconst formattersFixed: any[] = []\nconst formattersZeroBased: any[] = []\nconst fastNumberFormat = (min: number, max: number) => {\n const key = max\n if (min === max) {\n if (typeof formattersFixed[key] === \"undefined\") {\n formattersFixed[key] = new Intl.NumberFormat(undefined, {\n useGrouping: true,\n minimumFractionDigits: min,\n maximumFractionDigits: max,\n })\n }\n\n return formattersFixed[key]\n } if (min === 0) {\n if (typeof formattersZeroBased[key] === \"undefined\") {\n formattersZeroBased[key] = new Intl.NumberFormat(undefined, {\n useGrouping: true,\n minimumFractionDigits: min,\n maximumFractionDigits: max,\n })\n }\n\n return formattersZeroBased[key]\n }\n // (old dashboard comment)\n // this is never used\n // it is added just for completeness\n return new Intl.NumberFormat(undefined, {\n useGrouping: true,\n minimumFractionDigits: min,\n maximumFractionDigits: max,\n })\n}\n\nconst getLegendFormatValue = (\n convertUnits: Converter, intlNumberFormat: Intl.NumberFormat | null, valueDecimalDetail: number,\n) => (value: number | string | null) => {\n if (typeof value !== \"number\") {\n return \"-\"\n }\n\n const convertedValue = convertUnits(value)\n if (typeof convertedValue !== \"number\") {\n return convertedValue\n }\n\n if (intlNumberFormat !== null) {\n return intlNumberFormat.format(convertedValue)\n }\n\n let dmin\n let dmax\n if (valueDecimalDetail !== -1) {\n dmin = valueDecimalDetail\n dmax = valueDecimalDetail\n } else {\n dmin = 0\n const abs = (convertedValue < 0) ? -convertedValue : convertedValue\n if (abs > 1000) {\n dmax = 0\n } else if (abs > 10) {\n dmax = 1\n } else if (abs > 1) {\n dmax = 2\n } else if (abs > 0.1) {\n dmax = 2\n } else if (abs > 0.01) {\n dmax = 4\n } else if (abs > 0.001) {\n dmax = 5\n } else if (abs > 0.0001) {\n dmax = 6\n } else {\n dmax = 7\n }\n }\n\n return fastNumberFormat(dmin, dmax).format(convertedValue)\n}\n\ntype LegendFormatValue = (value: string | number | null) => string | number\n\ninterface Arguments {\n attributes: Attributes,\n data: ChartData,\n units: string,\n unitsCommon: string | undefined,\n unitsDesired: string,\n uuid: string,\n}\nexport const useFormatters = ({\n attributes,\n data,\n units,\n unitsCommon,\n unitsDesired,\n uuid,\n}: Arguments) => {\n const temperatureSetting = useSelector(selectTemperatureSetting)\n const secondsAsTimeSetting = useSelector(selectSecondsAsTimeSetting)\n\n // previously _unitsConversion\n const [convertUnits, setConvertUnits] = useState<Converter>(() => identity)\n\n // probably can also be removed\n const [min, setMin] = useState<number>()\n const [max, setMax] = useState<number>()\n\n // todo most of this state is not needed, that hook can be refractored\n const [unitsCurrent, setUnitsCurrent] = useState<string>(units)\n\n const [decimals, setDecimals] = useState<number>(-1)\n const [intlNumberFormat, setIntlNumberFormat] = useState<Intl.NumberFormat | null>(null)\n\n const {\n // \"valueDecimalDetail\" in old app\n decimalDigits = -1,\n } = attributes\n\n\n const legendFormatValue: LegendFormatValue = useMemo(() => (\n getLegendFormatValue(\n convertUnits, intlNumberFormat, decimalDigits,\n )\n ), [convertUnits, decimalDigits, intlNumberFormat])\n\n\n const legendFormatValueRef = useRef(legendFormatValue)\n const updateLegendFormatValueRef = (\n newConvertUnits: Converter, newIntlNumberFormat: any, newDecimalDigits: any,\n ) => {\n legendFormatValueRef.current = getLegendFormatValue(\n newConvertUnits, newIntlNumberFormat, newDecimalDigits,\n )\n }\n\n const legendFormatValueDecimalsFromMinMax = useCallback((newMin: number, newMax: number) => {\n if (safeEqualCheck(min, newMin) && safeEqualCheck(max, newMax)) {\n return legendFormatValueRef.current\n }\n // we should call the convertUnits-creation only when original app was doing this\n // so we don't get new updates in improper places\n setMin(newMin)\n setMax(newMax)\n\n const newConvertUnits = unitsConversionCreator.get(\n uuid, newMin, newMax, units, unitsDesired, unitsCommon,\n (switchedUnits) => {\n setUnitsCurrent(switchedUnits)\n // that.legendSetUnitsString(that.units_current);\n // that.legendSetUnitsString just populates some DOM with unitsCurrent\n // on all occurences just take the unitsCurrent from this state\n }, temperatureSetting, secondsAsTimeSetting,\n )\n\n // as function, so useState() interpretes it properly\n setConvertUnits(() => newConvertUnits)\n\n const convertedMin = newConvertUnits(newMin)\n const convertedMax = newConvertUnits(newMax)\n\n if (typeof convertedMin !== \"number\" || typeof convertedMax !== \"number\") {\n updateLegendFormatValueRef(newConvertUnits, intlNumberFormat, decimalDigits)\n return legendFormatValueRef.current\n }\n\n let newDecimals\n\n if (data.min === data.max) {\n // it is a fixed number, let the visualizer decide based on the value\n newDecimals = -1\n } else if (decimalDigits !== -1) {\n // there is an override\n newDecimals = decimalDigits\n } else {\n // ok, let's calculate the proper number of decimal points\n let delta\n\n if (convertedMin === convertedMax) {\n delta = Math.abs(convertedMin)\n } else {\n delta = Math.abs(convertedMax - convertedMin)\n }\n\n if (delta > 1000) {\n newDecimals = 0\n } else if (delta > 10) {\n newDecimals = (1)\n } else if (delta > 1) {\n newDecimals = 2\n } else if (delta > 0.1) {\n newDecimals = 2\n } else if (delta > 0.01) {\n newDecimals = 4\n } else if (delta > 0.001) {\n newDecimals = 5\n } else if (delta > 0.0001) {\n newDecimals = 6\n } else {\n newDecimals = 7\n }\n }\n\n\n let newIntlNumberFormat = intlNumberFormat\n\n if (newDecimals !== decimals) {\n if (newDecimals < 0) {\n newIntlNumberFormat = null\n } else {\n newIntlNumberFormat = fastNumberFormat(\n newDecimals,\n newDecimals,\n )\n }\n setIntlNumberFormat(() => newIntlNumberFormat)\n setDecimals(newDecimals)\n }\n updateLegendFormatValueRef(newConvertUnits, newIntlNumberFormat, newDecimals)\n return legendFormatValueRef.current\n }, [\n decimals, decimalDigits, min, max, uuid, temperatureSetting,\n units, unitsDesired, unitsCommon, secondsAsTimeSetting,\n data.min, data.max, intlNumberFormat,\n ])\n\n\n return {\n legendFormatValue,\n legendFormatValueDecimalsFromMinMax,\n unitsCurrent,\n }\n}\n","const defaultColor = {\n r: 255,\n g: 0,\n b: 0,\n}\n\ntype ColorHex2Rgb = (hex: string) => {\n r: number,\n g: number,\n b: number\n}\nexport const colorHex2Rgb: ColorHex2Rgb = (hex) => {\n // Expand shorthand form (e.g. \"03F\") to full form (e.g. \"0033FF\")\n const shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i\n if (!hex) {\n return defaultColor\n }\n const hexFull = hex.replace(shorthandRegex, (m, r, g, b) => r + r + g + g + b + b)\n\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hexFull)\n if (!result) {\n console.warn(\"wrong color format:\", hex) // eslint-disable-line no-console\n }\n return result\n ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16),\n } : defaultColor\n}\n","import styled from \"styled-components\"\nimport { getSizeBy } from \"@netdata/netdata-ui\"\n\nexport const LegendContainer = styled.div`\n margin-bottom: ${getSizeBy(3)};\n padding-left: 35px;\n`\n\nexport const LegendFirstRow = styled.div`\n margin-top: 4px;\n display: flex;\n justify-content: space-between;\n`\n\nexport const LegendSecondRow = styled.div`\n margin-top: 4px;\n display: flex;\n justify-content: space-between;\n`\n\nexport const LegendUnit = styled.div`\n`\n\nexport const DateTimeSeparator = styled.span`\n margin: 0 3px;\n`\n\nexport const LegendItems = styled.div`\n display: flex;\n flex-wrap: wrap;\n overflow: auto;\n max-height: 80px;\n`\n\nexport const DimensionItem = styled.div<{ color: string, isDisabled: boolean }>`\n display: flex;\n align-items: center;\n color: ${({ color }) => color};\n margin-right: 12px;\n cursor: pointer;\n opacity: ${({ isDisabled }) => (isDisabled ? 0.3 : null)};\n user-select: none;\n font-size: 11px;\n &:focus {\n outline: none;\n }\n`\n\n// toolbox is based on \"absolute\", so to make sure it's not put on top of dimension-item\n// let's put a transparent block as last in dimension-items container. Toolbox will soon be moved\n// to other place so it's temporary\nexport const DimensionItemToolboxPlaceholder = styled.div`\n width: 140px;\n height: 20px;\n`\n\nexport const DimensionIcon = styled.div<{ color: string }>`\n width: 14px;\n height: 7px;\n border-radius: 4px;\n overflow: hidden;\n background-color: ${({ color }) => color};\n`\n\nexport const DimensionLabel = styled.span`\n margin-left: 3px;\n`\n\nexport const DimensionValue = styled.span`\n margin-left: 5px;\n min-width: 30px;\n`\n\nexport const ToolboxContainer = styled.div`\n position: relative;\n touch-action: none;\n`\n","import React, { useCallback } from \"react\"\nimport { createSelector } from \"reselect\"\nimport { useSelector } from \"store/redux-separate-context\"\nimport { selectChartData } from \"domains/chart/selectors\"\nimport { DimensionLabel } from \"./chart-legend-bottom.styled\"\n\nconst emptyObject = {}\n\nconst selector = createSelector(\n selectChartData,\n ({ dimension_names: dimensionNames, keys = emptyObject }) => ({\n dimensionNames,\n keys,\n })\n)\n\nconst LegendText = ({ id, index }) => {\n const { dimensionNames, keys } = useSelector(useCallback(state => selector(state, { id }), [id]))\n const { chart, node } = keys\n\n if (chart && node && Object.keys(keys).length === 2) {\n return (\n <DimensionLabel>\n {chart[index]}@{node[index]}\n </DimensionLabel>\n )\n }\n\n const name = dimensionNames[index]\n\n return <DimensionLabel>{name}</DimensionLabel>\n}\n\nexport default LegendText\n","import React, { Fragment, useRef, useEffect, useCallback } from \"react\"\nimport classNames from \"classnames\"\nimport { useSelector } from \"store/redux-separate-context\"\nimport { selectChartData } from \"domains/chart/selectors\"\n\nimport { colorHex2Rgb } from \"utils/color-hex-2-rgb\"\nimport { useDateTime } from \"utils/date-time\"\n\nimport { legendResolutionTooltip, legendPluginModuleString } from \"../utils/legend-utils\"\n\nimport { ChartMetadata } from \"../chart-types\"\nimport LegendText from \"./legendText\"\n\ninterface Props {\n chartUuid: string\n chartMetadata: ChartMetadata\n chartLibrary: string\n colors: {\n [key: string]: string\n }\n hoveredRow: number\n hoveredX: number | null\n legendFormatValue: (value: number | string | null) => (number | string)\n onDimensionClick: (clickedDimensionName: string, event: React.MouseEvent) => void\n selectedDimensions: string[]\n showLatestOnBlur: boolean\n unitsCurrent: string\n viewBefore: number\n}\n\nexport const ChartLegendRight = ({\n chartUuid,\n chartMetadata,\n chartLibrary,\n colors,\n hoveredRow,\n hoveredX,\n legendFormatValue,\n onDimensionClick,\n selectedDimensions,\n showLatestOnBlur,\n unitsCurrent,\n viewBefore,\n}: Props) => {\n const chartData = useSelector(\n useCallback((state: any) => selectChartData(state, { id: chartUuid }), [chartUuid])\n )\n const { dimension_names: dimensionNames, dimension_ids: dimensionIds } = chartData\n\n // todo handle also this case:\n // const netdataLast = chartData.last_entry * 1000\n // const dataUpdateEvery = chartData.view_update_every * 1000\n // showUndefined = Math.abs(netdataLast - viewBefore) > dataUpdateEvery\n // (showUndefined also when difference between last and before is bigger than granularity)\n const showUndefined = hoveredRow === -1 && !showLatestOnBlur\n\n // todo support timezone\n const legendDate = new Date(hoveredX || viewBefore)\n\n // todo make a possibility to add chartLegened when there's not chartData\n // (if this situation is possible)\n\n // @ts-ignore ignoring because options.current has inconsistent structure\n const colorFillOpacity = window.NETDATA.options.current[\n `color_fill_opacity_${chartMetadata.chart_type}`\n ]\n\n const { localeDateString, localeTimeString } = useDateTime()\n\n const scrollbarRef = useRef(null)\n useEffect(() => {\n if (scrollbarRef.current) {\n window.Ps.initialize(scrollbarRef.current, {\n wheelSpeed: 0.2,\n wheelPropagation: true,\n swipePropagation: true,\n minScrollbarLength: null,\n maxScrollbarLength: null,\n useBothWheelAxes: false,\n suppressScrollX: true,\n suppressScrollY: false,\n scrollXMarginOffset: 0,\n scrollYMarginOffset: 0,\n theme: \"default\",\n })\n }\n }, [scrollbarRef])\n\n return (\n <div className={classNames(\n \"netdata-chart-legend\",\n `netdata-${chartLibrary}-legend`,\n )}\n >\n <span\n className=\"netdata-legend-title-date\"\n title={legendPluginModuleString(true, chartMetadata)}\n >\n {showUndefined\n ? legendPluginModuleString(false, chartMetadata)\n : localeDateString(legendDate)}\n </span>\n <br />\n <span\n className=\"netdata-legend-title-time\"\n title={legendResolutionTooltip(chartData, chartMetadata)}\n >\n {showUndefined\n ? chartMetadata.context.toString()\n : localeTimeString(legendDate)}\n </span>\n <br />\n <span className=\"netdata-legend-title-units\">{unitsCurrent}</span>\n <br />\n <div className=\"netdata-legend-series\" ref={scrollbarRef}>\n <div className=\"netdata-legend-series-content\">\n {dimensionIds.map((dimensionId, i) => {\n const dimensionName = dimensionNames[i]\n // todo dimension could be a separate component\n const color = colors[dimensionName]\n const rgb = colorHex2Rgb(color)\n\n const isSelected = selectedDimensions.length === 0\n || selectedDimensions.includes(dimensionName)\n\n let value\n if (showUndefined) {\n value = null\n } else if (hoveredRow !== -1) {\n const hoveredValueArray = chartData.result.data[hoveredRow]\n // [timestamp, valueDim1, valueDim2, ...]\n value = hoveredValueArray ? hoveredValueArray[i + 1] : null\n } else {\n value = chartData.view_latest_values[i]\n }\n\n return (\n <Fragment key={dimensionId}>\n {i !== 0 && <br />}\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\n <span\n title={dimensionName}\n className={classNames(\n \"netdata-legend-name\",\n isSelected ? \"selected\" : \"not-selected\",\n )}\n onClick={(event) => {\n onDimensionClick(dimensionName, event)\n }}\n role=\"button\"\n style={{ color }}\n tabIndex={0}\n >\n <table\n className={`netdata-legend-name-table-${chartMetadata.chart_type}`}\n style={{\n backgroundColor: `rgba(${rgb.r},${rgb.g},${rgb.b},${colorFillOpacity})`,\n }}\n >\n <tbody>\n <tr className=\"netdata-legend-name-tr\">\n <td className=\"netdata-legend-name-td\" />\n </tr>\n </tbody>\n </table>\n {\" \"}\n <LegendText id={chartUuid} index={i} />\n </span>\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\n <span\n title={dimensionName}\n className={classNames(\n \"netdata-legend-value\",\n !isSelected && \"hidden\",\n )}\n onClick={(event) => {\n onDimensionClick(dimensionName, event)\n }}\n role=\"button\"\n style={{ color }} // omitted !important during refractor, react doesn't support it\n tabIndex={0}\n >\n {legendFormatValue(\n value,\n )}\n </span>\n </Fragment>\n )\n })}\n </div>\n </div>\n </div>\n )\n}\n","import React, { useCallback } from \"react\"\nimport { useDateTime } from \"utils/date-time\"\nimport { useSelector } from \"store/redux-separate-context\"\nimport { selectChartData } from \"domains/chart/selectors\"\nimport { legendPluginModuleString, legendResolutionTooltip } from \"domains/chart/utils/legend-utils\"\nimport { ChartMetadata } from \"../chart-types\"\nimport LegendText from \"./legendText\"\nimport * as S from \"./chart-legend-bottom.styled\"\ninterface Props {\n chartUuid: string\n chartMetadata: ChartMetadata\n chartLibrary: string\n colors: {\n [key: string]: string\n }\n hoveredRow: number\n hoveredX: number | null\n legendFormatValue: (value: number | string | null) => number | string\n onDimensionClick: (clickedDimensionName: string, event: React.MouseEvent) => void\n selectedDimensions: string[]\n showLatestOnBlur: boolean\n unitsCurrent: string\n viewBefore: number\n legendToolbox: JSX.Element\n resizeHandler: React.ReactNode\n}\n\nexport const ChartTimeframe = ({\n chartMetadata,\n showUndefined,\n hoveredX,\n viewBefore,\n chartData,\n}: any) => {\n const { localeDateString, localeTimeString } = useDateTime()\n\n const legendDate = new Date(hoveredX || viewBefore)\n\n return (\n <div>\n <span title={legendPluginModuleString(true, chartMetadata)}>\n {showUndefined\n ? legendPluginModuleString(false, chartMetadata)\n : localeDateString(legendDate)}\n </span>\n <S.DateTimeSeparator>|</S.DateTimeSeparator>\n <span title={legendResolutionTooltip(chartData, chartMetadata)}>\n {showUndefined ? chartMetadata.context.toString() : localeTimeString(legendDate)}\n </span>\n </div>\n )\n}\n\nexport const ChartLegendBottom = ({\n chartUuid,\n chartMetadata,\n colors,\n hoveredRow,\n hoveredX,\n legendFormatValue,\n onDimensionClick,\n selectedDimensions,\n showLatestOnBlur,\n unitsCurrent,\n viewBefore,\n legendToolbox,\n resizeHandler,\n}: Props) => {\n const showUndefined = hoveredRow === -1 && !showLatestOnBlur\n const chartData = useSelector(\n useCallback((state: any) => selectChartData(state, { id: chartUuid }), [chartUuid])\n )\n const { dimension_names: dimensionNames, dimension_ids: dimensionIds } = chartData\n\n return (\n <S.LegendContainer>\n <S.LegendFirstRow>\n <S.LegendUnit>{unitsCurrent}</S.LegendUnit>\n <ChartTimeframe\n chartMetadata={chartMetadata}\n showUndefined={showUndefined}\n hoveredX={hoveredX}\n viewBefore={viewBefore}\n chartData={chartData}\n />\n </S.LegendFirstRow>\n <S.LegendSecondRow>\n <S.LegendItems>\n {dimensionIds.map((dimensionId, i) => {\n const dimensionName = dimensionNames[i]\n const color = colors[dimensionName]\n\n const isSelected =\n selectedDimensions.length === 0 || selectedDimensions.includes(dimensionName)\n\n let value\n if (showUndefined) {\n value = null\n } else if (hoveredRow !== -1) {\n const hoveredValueArray = chartData.result.data[hoveredRow]\n // [timestamp, valueDim1, valueDim2, ...]\n value = hoveredValueArray ? hoveredValueArray[i + 1] : null\n } else {\n value = chartData.view_latest_values[i]\n }\n return (\n <S.DimensionItem\n color={color}\n onClick={event => {\n onDimensionClick(dimensionName, event)\n }}\n role=\"button\"\n tabIndex={0}\n isDisabled={!isSelected}\n key={dimensionId}\n >\n <S.DimensionIcon title={dimensionName} color={color} />\n <LegendText id={chartUuid} index={i} />\n <S.DimensionValue>{isSelected && legendFormatValue(value)}</S.DimensionValue>\n </S.DimensionItem>\n )\n })}\n <S.DimensionItemToolboxPlaceholder />\n </S.LegendItems>\n <S.ToolboxContainer>\n {legendToolbox}\n {resizeHandler}\n </S.ToolboxContainer>\n </S.LegendSecondRow>\n </S.LegendContainer>\n )\n}\n","import React, { useCallback } from \"react\"\n\nimport { useSelector } from \"store/redux-separate-context\"\nimport { selectChartData } from \"domains/chart/selectors\"\nimport { getNewSelectedDimensions } from \"domains/chart/utils/legend-utils\"\nimport { Attributes } from \"../utils/transformDataAttributes\"\nimport { ChartMetadata } from \"../chart-types\"\n\nimport { ChartLegendRight } from \"./chart-legend-right\"\nimport { ChartLegendBottom } from \"./chart-legend-bottom\"\n\ninterface Props {\n attributes: Attributes\n chartUuid: string\n chartMetadata: ChartMetadata\n chartLibrary: string\n colors: {\n [key: string]: string\n }\n hoveredRow: number\n hoveredX: number | null\n legendFormatValue: (value: number | string | null) => number | string\n selectedDimensions: string[]\n setSelectedDimensions: (selectedDimensions: string[]) => void\n showLatestOnBlur: boolean\n unitsCurrent: string\n viewBefore: number\n legendToolbox: JSX.Element\n resizeHandler: React.ReactNode\n}\n\nexport const ChartLegend = ({\n attributes,\n chartUuid,\n chartMetadata,\n chartLibrary,\n colors,\n hoveredRow,\n hoveredX,\n legendFormatValue,\n selectedDimensions,\n setSelectedDimensions,\n showLatestOnBlur,\n unitsCurrent,\n viewBefore,\n legendToolbox,\n resizeHandler,\n}: Props) => {\n const dimension_names = useSelector(\n useCallback((state: any) => selectChartData(state, { id: chartUuid }).dimension_names, [\n chartUuid,\n ])\n )\n\n const onDimensionClick = (clickedDimensionName: string, event: React.MouseEvent) => {\n event.preventDefault()\n const isModifierKeyPressed = event.shiftKey || event.ctrlKey\n const newSelectedDimensions = getNewSelectedDimensions({\n allDimensions: dimension_names,\n selectedDimensions,\n clickedDimensionName,\n isModifierKeyPressed,\n })\n setSelectedDimensions(newSelectedDimensions)\n }\n\n if (attributes.legendPosition === \"bottom\") {\n return (\n <ChartLegendBottom\n chartUuid={chartUuid}\n chartLibrary={chartLibrary}\n chartMetadata={chartMetadata}\n colors={colors}\n hoveredRow={hoveredRow}\n hoveredX={hoveredX}\n legendFormatValue={legendFormatValue}\n onDimensionClick={onDimensionClick}\n selectedDimensions={selectedDimensions}\n showLatestOnBlur={showLatestOnBlur}\n unitsCurrent={unitsCurrent}\n viewBefore={viewBefore}\n legendToolbox={legendToolbox}\n resizeHandler={resizeHandler}\n />\n )\n }\n\n return (\n <ChartLegendRight\n chartUuid={chartUuid}\n chartLibrary={chartLibrary}\n chartMetadata={chartMetadata}\n colors={colors}\n hoveredRow={hoveredRow}\n hoveredX={hoveredX}\n legendFormatValue={legendFormatValue}\n onDimensionClick={onDimensionClick}\n selectedDimensions={selectedDimensions}\n showLatestOnBlur={showLatestOnBlur}\n unitsCurrent={unitsCurrent}\n viewBefore={viewBefore}\n />\n )\n}\n","import React from \"react\"\n\nimport { ToolboxButton } from \"./toolbox-button\"\n\ntype ClickCallback = (event: React.MouseEvent) => void\ninterface Props {\n onToolboxLeftClick: ClickCallback\n onToolboxResetClick: ClickCallback\n onToolboxRightClick: ClickCallback\n onToolboxZoomInClick: ClickCallback\n onToolboxZoomOutClick: ClickCallback\n}\nexport const LegendToolbox = ({\n onToolboxLeftClick,\n onToolboxResetClick,\n onToolboxRightClick,\n onToolboxZoomInClick,\n onToolboxZoomOutClick,\n}: Props) => (\n <div className=\"netdata-legend-toolbox\">\n <ToolboxButton\n className=\"netdata-legend-toolbox-button\"\n onClick={onToolboxLeftClick}\n iconType=\"left\"\n popoverTitle=\"Pan Left\"\n popoverContent=\"Pan the chart to the left. You can also <b>drag it</b> with your mouse or your\n finger (on touch devices).<br/><small>Help can be disabled from the settings.</small>\"\n />\n <ToolboxButton\n className=\"netdata-legend-toolbox-button\"\n onClick={onToolboxResetClick}\n iconType=\"reset\"\n popoverTitle=\"Chart Reset\"\n popoverContent=\"Reset all the charts to their default auto-refreshing state. You can also\n <b>double click</b> the chart contents with your mouse or your finger (on touch devices).\n <br/><small>Help can be disabled from the settings.</small>\"\n />\n <ToolboxButton\n className=\"netdata-legend-toolbox-button\"\n onClick={onToolboxRightClick}\n iconType=\"right\"\n popoverTitle=\"Pan Right\"\n popoverContent=\"Pan the chart to the right. You can also <b>drag it</b> with your mouse or\n your finger (on touch devices).<br/><small>Help can be disabled from the settings.</small>\"\n />\n <ToolboxButton\n className=\"netdata-legend-toolbox-button\"\n onClick={onToolboxZoomInClick}\n iconType=\"zoomIn\"\n popoverTitle=\"Chart Zoom In\"\n popoverContent=\"Zoom in the chart. You can also press SHIFT and select an area of the chart,\n or press SHIFT or ALT and use the mouse wheel or 2-finger touchpad scroll to zoom in or out.\n <br/><small>Help can be disabled from the settings.</small>\"\n />\n <ToolboxButton\n className=\"netdata-legend-toolbox-button\"\n onClick={onToolboxZoomOutClick}\n iconType=\"zoomOut\"\n popoverTitle=\"Chart Zoom Out\"\n popoverContent=\"Zoom out the chart. You can also press SHIFT or ALT and use the mouse wheel,\n or 2-finger touchpad scroll to zoom in or out.<br/><small>Help can be disabled from the\n settings.</small>\"\n />\n </div>\n)\n","/* eslint-disable no-nested-ternary */\nimport { always, memoizeWith } from \"ramda\"\nimport Color from \"color\"\n\nimport { ChartMetadata, DygraphData } from \"domains/chart/chart-types\"\nimport { Attributes } from \"domains/chart/utils/transformDataAttributes\"\nimport { ChartLibraryConfig } from \"domains/chart/utils/chartLibrariesSettings\"\n\nexport const getDataForFakeStacked = (\n data: number[][],\n dimensionsVisibility: boolean[],\n): number[][] => data.map((point) => {\n const [timestamp, ...values] = point\n const rest: number[] = []\n let currentMin = 0\n let currentMax = 0\n values\n .map((value, i) => ({ isVisible: dimensionsVisibility[i], value }))\n // reverse because first dimensions should be \"on top\" (at least positive ones)\n .slice().reverse()\n .forEach(({ isVisible, value }) => {\n if (!isVisible) {\n rest.push(0) // push with value '0'. it won't be visible but needs to be present in array\n return\n }\n if (value >= 0) {\n currentMax += value\n rest.push(currentMax)\n } else {\n currentMin += value\n rest.push(currentMin)\n }\n })\n return [\n timestamp,\n ...rest,\n ]\n})\n\nconst isPercentage = (unit: string) => unit === \"percentage\"\n || unit === \"percent\"\n || unit.indexOf(\"%\") !== -1\n\nexport const getDygraphChartType = (\n attributes: Attributes, chartData: DygraphData, chartMetadata: ChartMetadata,\n chartSettings: ChartLibraryConfig,\n) => {\n const isLogScale = (chartSettings.isLogScale as ((a: Attributes) => boolean))(attributes)\n const {\n dygraphType: dygraphRequestedType = chartMetadata.chart_type,\n groupBy,\n } = attributes\n\n if (groupBy && groupBy !== \"dimension\" && isPercentage(chartMetadata.units)) {\n return \"line\"\n }\n\n // corresponds to state.tmp.dygraph_chart_type in old app\n let dygraphChartType = dygraphRequestedType\n if (dygraphChartType === \"stacked\" && chartData.dimensions === 1) {\n dygraphChartType = \"area\"\n }\n if (dygraphChartType === \"stacked\" && isLogScale) {\n dygraphChartType = \"area\"\n }\n return dygraphChartType\n}\n\nconst getBackgroundColor = memoizeWith(\n always(\"true\"),\n () => Color(window.NETDATA.themes.current.background),\n)\n// when in \"fakeStacked\" mode, we cannot use opacity for fill in charts, because the areas would\n// be visible under each other. So the darkening / whitening needs to be added directly to colors\n// (the colors are too saturated for areas and in stacked mode they were with 0.8 opacity)\nexport const transformColors = (colors: string[]) => (\n colors.map((color) => Color(color).mix(getBackgroundColor(), 0.2).hex())\n)\n\nexport const getDygraphFillAlpha = (\n isFakeStacked: boolean, dygraphChartType: string,\n) => (isFakeStacked\n ? window.NETDATA.options.current.color_fill_opacity_fake_stacked\n : dygraphChartType === \"stacked\"\n ? window.NETDATA.options.current.color_fill_opacity_stacked\n : window.NETDATA.options.current.color_fill_opacity_area)\n\n\n// https://github.com/danvk/dygraphs/blob/master/src/iframe-tarp.js#L1-L23\n// On mouseUp dygraphs put rectangles above all iframes so mouseUp can be properly intercepted.\n// this causes a problem with some analytics iframes that place themselves in regions where they\n// aren't visible anyway (for example hubspot iframe on Cloud), and this creates a problematic\n// horizontal scrollbar to appear. This function filters those \"rectangles\" (tarps) to omit\n// elements with unreachable \"left\" styles\nexport const hackDygraphIFrameTarps = (tarps: HTMLDivElement[]): HTMLDivElement[] => (\n tarps.filter((element: HTMLDivElement) => {\n const isOutsideReasonableViewport = Number(element.style.left.replace(\"px\", \"\")) > 10000\n if (isOutsideReasonableViewport) {\n element.parentNode!.removeChild(element)\n }\n return !isOutsideReasonableViewport\n })\n)\n","/* eslint-disable react-hooks/exhaustive-deps */\n/* eslint-disable function-paren-newline */\n/* eslint-disable comma-dangle */\nimport React, { useRef, useCallback } from \"react\"\nimport { useToggle } from \"react-use\"\n\nconst useProceededChart = (\n chartRef: any,\n propsRef: any\n): [boolean, React.Ref<HTMLElement>, (g: Dygraph) => void] => {\n const [proceeded, toggleProceeded] = useToggle(false)\n\n const ref = useRef<HTMLElement>(null)\n\n const updatePosition = useCallback((g: Dygraph) => {\n const { x } = g.getArea()\n const distance = g.toDomXCoord(propsRef.current.chartData.first_entry * 1000)\n const hasProceeded = distance > x\n toggleProceeded(hasProceeded)\n\n if (hasProceeded && ref.current) {\n const { height } = chartRef.current.getBoundingClientRect()\n ref.current.style.left = `${x}px`\n ref.current.style.right = `calc(100% - ${distance}px)`\n ref.current.style.top = `${height / 2}px`\n }\n }, [])\n\n return [proceeded, ref, updatePosition]\n}\n\nexport default useProceededChart\n","import React, { forwardRef } from \"react\"\nimport styled from \"styled-components\"\n\nconst Container = styled.div`\n display: block;\n`\n\nconst ProceededChartDisclaimer = forwardRef((\n props: React.HTMLAttributes<HTMLElement>,\n ref: React.Ref<HTMLDivElement>,\n) => (\n <Container ref={ref} className=\"dygraph__history-tip\" data-testid=\"proceededChartDisclaimer\">\n <span className=\"dygraph__history-tip-content\">\n Want to extend your history of real-time metrics?\n <br />\n <a href=\"https://learn.netdata.cloud/guides/longer-metrics-storage/\" target=\"_blank\" rel=\"noopener noreferrer\" data-testid=\"proceededChartDisclaimer-configure\">\n Configure Netdata&apos;s&nbsp;\n <b>history</b>\n </a>\n &nbsp;or use the&nbsp;\n <a href=\"https://learn.netdata.cloud/docs/agent/database/engine/\" target=\"_blank\" rel=\"noopener noreferrer\" data-testid=\"proceededChartDisclaimer-engine\">DB engine</a>\n .\n </span>\n </Container>\n))\n\nexport default ProceededChartDisclaimer\n","import React, { forwardRef } from \"react\"\nimport styled from \"styled-components\"\n\nconst backgroundColorMap = {\n WARNING: \"#FFF8E1\",\n CRITICAL: \"#FFEBEF\",\n CLEAR: \"#E5F5E8\",\n}\nexport const getBackgroundColor = (status) => backgroundColorMap[status] || null\n\nconst borderColorMap = {\n WARNING: \"#FFC300\",\n CRITICAL: \"#F59B9B\",\n CLEAR: \"#68C47D\",\n}\nexport const getBorderColor = (status) => borderColorMap[status] || null\n\nconst textColorMap = {\n WARNING: \"#536775\",\n CRITICAL: \"#FF4136\",\n CLEAR: \"#00AB44\",\n}\nexport const getColor = (status) => textColorMap[status] || null\n\nconst Container = styled.div`\n position: absolute;\n margin-right: 10px;\n overflow: hidden;\n pointer-events: none;\n direction: rtl;\n z-index: 10; // higher than chart\n`\n\nconst Badge = styled.div`\n display: inline-block;\n border-radius: 36px;\n padding: 2px 12px;\n background: ${({ background }) => background};\n border: 1px solid ${({ border }) => border};\n color: ${({ color }) => color};\n font-size: 12px;\n font-weight: 700;\n direction: ltr;\n white-space: nowrap;\n`\n\nexport default forwardRef((\n { isVisible, status, label },\n ref,\n) => (\n <Container ref={ref}>\n {isVisible && (\n <Badge\n background={getBackgroundColor(status)}\n border={getBorderColor(status)}\n color={getColor(status)}\n >\n {label}\n </Badge>\n )}\n </Container>\n))\n","import { sortBy, reverse } from \"ramda\"\nimport React, {\n useLayoutEffect, useRef, useCallback,\n} from \"react\"\nimport classNames from \"classnames\"\nimport { useUpdateEffect, useUnmount, useMount } from \"react-use\"\n// this version is needed because it contains a fix for handling constant value in the chart\n// ie. https://github.com/danvk/dygraphs/pull/909\nimport Dygraph from \"vendor/dygraph-c91c859.min\"\nimport \"dygraphs/src-es5/extras/smooth-plotter\"\nimport ResizeObserver from \"resize-observer-polyfill\"\n\nimport { useDispatch, useSelector } from \"store/redux-separate-context\"\nimport { AppStateT } from \"store/app-state\"\nimport { DygraphArea, NetdataDygraph } from \"types/vendor-overrides\"\nimport { TimeRange } from \"types/common\"\nimport { useDateTime } from \"utils/date-time\"\nimport { debounce } from \"utils/debounce\"\n\nimport {\n selectCommonMin,\n selectCommonMax,\n selectGlobalChartUnderlay,\n selectGlobalSelectionMaster,\n selectSmoothPlot,\n selectSyncPanAndZoom,\n selectSpacePanelTransitionEndIsActive,\n selectAlarm,\n} from \"domains/global/selectors\"\nimport {\n resetGlobalPanAndZoomAction, setCommonMaxAction, setCommonMinAction,\n} from \"domains/global/actions\"\nimport { resetChartPanAndZoomAction } from \"domains/chart/actions\"\n\nimport { Attributes } from \"../../utils/transformDataAttributes\"\nimport {\n chartLibrariesSettings,\n ChartLibraryConfig,\n ChartLibraryName,\n} from \"../../utils/chartLibrariesSettings\"\nimport { ChartMetadata, DygraphData } from \"../../chart-types\"\nimport { selectResizeHeight } from \"../../selectors\"\n\nimport {\n getDygraphChartType, getDataForFakeStacked, transformColors, getDygraphFillAlpha,\n hackDygraphIFrameTarps,\n} from \"./dygraph/utils\"\nimport \"./dygraph-chart.css\"\n\nimport useProceededChart from \"../../hooks/use-proceeded-chart\"\nimport useDygraphBadge from \"../../hooks/useDygraphBadge\"\nimport ProceededChartDisclaimer from \"./proceeded-chart-disclaimer\"\nimport AlarmBadge, { getBorderColor } from \"./alarmBadge\"\n\n// This is the threshold above which we assume chart shown duration has changed\nconst timeframeThreshold = 5000\nconst dygraphResizeDebounceTime = 500\n\ntype IsInRangeOfAvailableData = (props: {\n after: number, before: number, chartData: DygraphData,\n}) => boolean\nconst isInRangeOfAvailableData: IsInRangeOfAvailableData = ({ after, before, chartData }) => (\n after >= (chartData.first_entry * 1000) && before <= (chartData.last_entry * 1000)\n)\n\ninterface GetInitialDygraphOptions {\n attributes: Attributes,\n chartData: DygraphData,\n chartMetadata: ChartMetadata,\n chartSettings: ChartLibraryConfig,\n dimensionsVisibility: boolean[]\n hiddenLabelsElementId: string,\n isFakeStacked: boolean,\n orderedColors: string[],\n setMinMax: (minMax: TimeRange) => void\n shouldSmoothPlot: boolean,\n unitsCurrent: string,\n xAxisDateString: (d: Date) => string,\n xAxisTimeString: (d: Date) => string,\n}\nconst getInitialDygraphOptions = ({\n attributes,\n chartData,\n chartMetadata,\n chartSettings,\n dimensionsVisibility,\n hiddenLabelsElementId,\n isFakeStacked,\n orderedColors,\n setMinMax,\n shouldSmoothPlot,\n unitsCurrent,\n xAxisDateString,\n xAxisTimeString,\n}: GetInitialDygraphOptions) => {\n const isSparkline = attributes.dygraphTheme === \"sparkline\"\n const highlightCircleSize = isSparkline ? 3 : 4\n\n const isLogScale = (chartSettings.isLogScale as ((a: Attributes) => boolean))(attributes)\n const dygraphChartType = getDygraphChartType(attributes, chartData, chartMetadata, chartSettings)\n const {\n dygraphSmooth = dygraphChartType === \"line\"\n && !isSparkline,\n dygraphDrawAxis = true,\n legendPosition,\n } = attributes\n const isLegendOnBottom = legendPosition === \"bottom\"\n const {\n // destructuring with default values\n dygraphColors = orderedColors,\n dygraphRightGap = 5,\n dygraphShowRangeSelector = false,\n dygraphShowRoller = false,\n dygraphTitle = attributes.title || chartMetadata.title,\n dygraphTitleHeight = 19,\n dygraphLegend = \"always\",\n dygraphLabelsDiv = hiddenLabelsElementId,\n dygraphLabelsSeparateLine = true,\n dygraphIncludeZero = dygraphChartType === \"stacked\",\n dygraphShowZeroValues = true,\n dygraphShowLabelsOnHighLight = true,\n dygraphHideOverlayOnMouseOut = true,\n dygraphXRangePad = 0,\n dygraphYRangePad = 1,\n dygraphValueRange = [null, null],\n dygraphYLabelWidth = 12,\n // eslint-disable-next-line no-nested-ternary\n dygraphStrokeWidth = dygraphChartType === \"stacked\"\n ? 0.1\n : (dygraphSmooth === true\n ? 1.5\n : 0.7),\n\n dygraphStrokePattern,\n dygraphDrawPoints = false,\n dygraphDrawGapEdgePoints = true,\n dygraphConnectSeparatedPoints = false,\n dygraphPointSize = 1,\n dygraphStepPlot = false,\n dygraphStrokeBorderColor = window.NETDATA.themes.current.background,\n dygraphStrokeBorderWidth = 0,\n dygraphFillGraph = (dygraphChartType === \"area\" || dygraphChartType === \"stacked\"),\n dygraphFillAlpha = getDygraphFillAlpha(isFakeStacked, dygraphChartType),\n dygraphStackedGraph = dygraphChartType === \"stacked\" && !isFakeStacked,\n dygraphStackedGraphNanFill = \"none\",\n dygraphAxisLabelFontSize = 10,\n dygraphAxisLineColor = window.NETDATA.themes.current.axis,\n dygraphAxisLineWidth = 1.0,\n dygraphDrawGrid = true,\n dygraphGridLinePattern,\n dygraphGridLineWidth = 1.0,\n dygraphGridLineColor = window.NETDATA.themes.current.grid,\n dygraphMaxNumberWidth = 8,\n dygraphSigFigs,\n dygraphDigitsAfterDecimal = 2,\n dygraphHighlighCircleSize = highlightCircleSize,\n dygraphHighlightSeriesOpts,\n dygraphHighlightSeriesBackgroundAlpha,\n\n dygraphXPixelsPerLabel = 50,\n dygraphXAxisLabelWidth = 60,\n dygraphDrawXAxis = dygraphDrawAxis,\n dygraphYPixelsPerLabel = 15,\n dygraphYAxisLabelWidth = isLegendOnBottom ? 30 : 50,\n dygraphDrawYAxis = dygraphDrawAxis,\n } = attributes\n return {\n colors: isFakeStacked ? transformColors(reverse(dygraphColors)) : dygraphColors,\n\n // leave a few pixels empty on the right of the chart\n rightGap: isSparkline ? 0 : dygraphRightGap,\n showRangeSelector: dygraphShowRangeSelector,\n showRoller: dygraphShowRoller,\n title: isSparkline ? undefined : dygraphTitle,\n titleHeight: dygraphTitleHeight,\n legend: dygraphLegend, // we need this to get selection events\n labels: chartData.result.labels,\n labelsDiv: dygraphLabelsDiv,\n\n labelsSeparateLines: isSparkline ? true : dygraphLabelsSeparateLine,\n labelsShowZeroValues: isLogScale ? false : dygraphShowZeroValues,\n labelsKMB: false,\n labelsKMG2: false,\n showLabelsOnHighlight: dygraphShowLabelsOnHighLight,\n hideOverlayOnMouseOut: dygraphHideOverlayOnMouseOut,\n includeZero: dygraphIncludeZero,\n xRangePad: dygraphXRangePad,\n yRangePad: isSparkline ? 1 : dygraphYRangePad,\n valueRange: dygraphValueRange,\n ylabel: (isSparkline || isLegendOnBottom) ? undefined : unitsCurrent,\n yLabelWidth: (isSparkline || isLegendOnBottom) ? 0 : dygraphYLabelWidth,\n\n // the function to plot the chart\n plotter: (dygraphSmooth && shouldSmoothPlot) ? window.smoothPlotter : null,\n\n // The width of the lines connecting data points.\n // This can be used to increase the contrast or some graphs.\n strokeWidth: dygraphStrokeWidth,\n strokePattern: dygraphStrokePattern,\n\n // The size of the dot to draw on each point in pixels (see drawPoints).\n // A dot is always drawn when a point is \"isolated\",\n // i.e. there is a missing point on either side of it.\n // This also controls the size of those dots.\n drawPoints: dygraphDrawPoints,\n\n // Draw points at the edges of gaps in the data.\n // This improves visibility of small data segments or other data irregularities.\n drawGapEdgePoints: dygraphDrawGapEdgePoints,\n connectSeparatedPoints: isLogScale ? false : dygraphConnectSeparatedPoints,\n pointSize: dygraphPointSize,\n\n // enabling this makes the chart with little square lines\n stepPlot: dygraphStepPlot,\n\n // Draw a border around graph lines to make crossing lines more easily\n // distinguishable. Useful for graphs with many lines.\n strokeBorderColor: dygraphStrokeBorderColor,\n strokeBorderWidth: dygraphStrokeBorderWidth,\n fillGraph: dygraphFillGraph,\n fillAlpha: dygraphFillAlpha,\n stackedGraph: dygraphStackedGraph,\n stackedGraphNaNFill: dygraphStackedGraphNanFill,\n drawAxis: isSparkline ? false : dygraphDrawAxis,\n axisLabelFontSize: dygraphAxisLabelFontSize,\n axisLineColor: dygraphAxisLineColor,\n axisLineWidth: dygraphAxisLineWidth,\n drawGrid: isSparkline ? false : dygraphDrawGrid,\n gridLinePattern: dygraphGridLinePattern,\n gridLineWidth: dygraphGridLineWidth,\n gridLineColor: dygraphGridLineColor,\n maxNumberWidth: dygraphMaxNumberWidth,\n sigFigs: dygraphSigFigs,\n digitsAfterDecimal: dygraphDigitsAfterDecimal,\n highlightCircleSize: dygraphHighlighCircleSize,\n highlightSeriesOpts: dygraphHighlightSeriesOpts, // TOO SLOW: { strokeWidth: 1.5 },\n // TOO SLOW: (state.tmp.dygraph_chart_type === 'stacked')?0.7:0.5,\n highlightSeriesBackgroundAlpha: dygraphHighlightSeriesBackgroundAlpha,\n visibility: dimensionsVisibility,\n logscale: isLogScale,\n\n axes: {\n x: {\n pixelsPerLabel: dygraphXPixelsPerLabel,\n // unsufficient typings for Dygraph\n // @ts-ignore\n ticker: Dygraph.dateTicker,\n axisLabelWidth: dygraphXAxisLabelWidth,\n drawAxis: isSparkline ? false : dygraphDrawXAxis,\n axisLabelFormatter: (d: Date | number) => ((d as Date).toTimeString().startsWith(\"00:00:00\")\n ? xAxisDateString(d as Date)\n : xAxisTimeString(d as Date)\n ),\n },\n y: {\n logscale: isLogScale,\n pixelsPerLabel: dygraphYPixelsPerLabel,\n axisLabelWidth: dygraphYAxisLabelWidth,\n drawAxis: isSparkline ? false : dygraphDrawYAxis,\n // axisLabelFormatter is added on the updates\n axisLabelFormatter(y: Date | number) {\n const formatter = setMinMax([\n // @ts-ignore\n // eslint-disable-next-line no-underscore-dangle\n this.axes_[0].extremeRange[0],\n // @ts-ignore\n // eslint-disable-next-line no-underscore-dangle\n this.axes_[0].extremeRange[1],\n ]) as unknown as ((value: Date | number) => string)\n return formatter(y as number)\n },\n },\n },\n }\n}\n\ninterface Props {\n attributes: Attributes\n chartData: DygraphData\n chartMetadata: ChartMetadata\n chartElementClassName: string\n chartElementId: string\n chartLibrary: ChartLibraryName\n chartUuid: string\n colors: {\n [key: string]: string\n }\n dimensionsVisibility: boolean[]\n hasEmptyData: boolean\n hasLegend: boolean\n isRemotelyControlled: boolean\n onUpdateChartPanAndZoom: (arg: {\n after: number, before: number,\n callback: (after: number, before: number) => void,\n masterID: string,\n shouldNotExceedAvailableRange: boolean,\n }) => void\n orderedColors: string[]\n immediatelyDispatchPanAndZoom: () => void\n\n hoveredRow: number\n hoveredX: number | null\n setGlobalChartUnderlay: (arg: { after: number, before: number, masterID: string }) => void\n setHoveredX: (hoveredX: number | null, noMaster?: boolean) => void\n setMinMax: (minMax: TimeRange) => void\n unitsCurrent: string\n viewAfter: number\n viewBefore: number\n}\nexport const DygraphChart = ({\n attributes,\n chartData,\n chartMetadata,\n chartElementClassName,\n chartElementId,\n chartLibrary,\n // colors,\n chartUuid,\n dimensionsVisibility,\n hasEmptyData,\n hasLegend,\n isRemotelyControlled,\n onUpdateChartPanAndZoom,\n orderedColors,\n immediatelyDispatchPanAndZoom,\n\n hoveredRow,\n hoveredX,\n setGlobalChartUnderlay,\n setHoveredX,\n setMinMax,\n unitsCurrent,\n viewAfter,\n viewBefore,\n}: Props) => {\n const globalChartUnderlay = useSelector(selectGlobalChartUnderlay)\n const selectedAlarm = useSelector(selectAlarm)\n const alarm = selectedAlarm?.chartId === chartData.id ? selectedAlarm : null\n\n const { xAxisDateString, xAxisTimeString } = useDateTime()\n const chartSettings = chartLibrariesSettings[chartLibrary]\n const hiddenLabelsElementId = `${chartUuid}-hidden-labels-id`\n\n const dygraphChartType = getDygraphChartType(attributes, chartData, chartMetadata, chartSettings)\n // isFakeStacked - is a special mode for displaying stacked charts with both positive and negative\n // values. Dygraph.js doesn't support it so in this case we need to sum the values manually\n // and display the chart as \"area\" type, but with keeping all styling (fill etc.) properties\n // as in \"stacked\" type\n // because first values need to be \"on top\" (at least for positive values), the dimension order\n // needs to be reversed (in getDataForFakeStacked function and when assigning dimension colors)\n const isFakeStacked = chartData.min < 0 && dygraphChartType === \"stacked\"\n const dygraphFillAlpha = getDygraphFillAlpha(isFakeStacked, dygraphChartType)\n\n const chartElement = useRef<HTMLDivElement>(null)\n\n const updateChartPanOrZoom = useCallback(({\n after, before,\n callback,\n shouldNotExceedAvailableRange,\n }) => {\n onUpdateChartPanAndZoom({\n after,\n before,\n callback,\n masterID: chartUuid,\n shouldNotExceedAvailableRange,\n })\n }, [chartUuid, onUpdateChartPanAndZoom])\n\n // keep in ref to prevent additional updates\n const dygraphInstance = useRef<Dygraph | null>()\n // state.tmp.dygraph_user_action in old dashboard\n const latestIsUserAction = useRef(false)\n // state.tmp.dygraph_mouse_down in old dashboard\n const isMouseDown = useRef(false)\n // state.tmp.dygraph_highlight_after in old dashboard\n const dygraphHighlightAfter = useRef<null | number>(null)\n // state.dygraph_last_touch_move in old dashboard\n const dygraphLastTouchMove = useRef(0)\n // state.dygraph_last_touch_page_x in old dashboard\n const dygraphLastTouchPageX = useRef(0)\n // state.dygraph_last_touch_end in old dashboard\n const dygraphLastTouchEnd = useRef<undefined | number>()\n\n const dispatch = useDispatch()\n const isSyncPanAndZoom = useSelector(selectSyncPanAndZoom)\n\n const resetGlobalPanAndZoom = useCallback(() => {\n latestIsUserAction.current = false // prevent starting panAndZoom\n if (dygraphInstance.current) {\n // todo on toolbox reset click, do updateOptions({ dateWindow: null })\n // (issue existed also before rewrite)\n dygraphInstance.current.updateOptions({\n // reset dateWindow to the current\n // @ts-ignore external typings dont support null\n dateWindow: null,\n })\n }\n\n if (isSyncPanAndZoom) {\n dispatch(resetGlobalPanAndZoomAction())\n } else {\n dispatch(resetChartPanAndZoomAction({ id: chartUuid }))\n }\n }, [chartUuid, dispatch, isSyncPanAndZoom])\n\n const [isBadgeVisible, alarmBadgeRef, updateAlarmBadge] = useDygraphBadge() as any\n\n // setGlobalChartUnderlay is using state from closure (chartData.after), so we need to have always\n // the newest callback. Unfortunately we cannot use Dygraph.updateOptions() (library restriction)\n // for interactionModel callbacks so we need to keep the callback in mutable ref\n const propsRef = useRef({\n alarm,\n chartData,\n globalChartUnderlay,\n hoveredX,\n immediatelyDispatchPanAndZoom,\n // put it to ref to prevent additional updateOptions() after creating dygraph\n resetGlobalPanAndZoom,\n setGlobalChartUnderlay,\n updateAlarmBadge,\n updateChartPanOrZoom,\n viewAfter,\n viewBefore,\n })\n\n const [\n isProceeded, precededChartRef, updatePrecededPosition,\n ] = useProceededChart(chartElement, propsRef)\n\n useLayoutEffect(() => {\n propsRef.current.alarm = alarm\n propsRef.current.chartData = chartData\n propsRef.current.hoveredX = hoveredX\n propsRef.current.immediatelyDispatchPanAndZoom = immediatelyDispatchPanAndZoom\n propsRef.current.globalChartUnderlay = globalChartUnderlay\n propsRef.current.resetGlobalPanAndZoom = resetGlobalPanAndZoom\n propsRef.current.setGlobalChartUnderlay = setGlobalChartUnderlay\n propsRef.current.updateAlarmBadge = updateAlarmBadge\n propsRef.current.updateChartPanOrZoom = updateChartPanOrZoom\n propsRef.current.viewAfter = viewAfter\n propsRef.current.viewBefore = viewBefore\n }, [alarm, chartData, globalChartUnderlay, hoveredX, immediatelyDispatchPanAndZoom,\n resetGlobalPanAndZoom, setGlobalChartUnderlay, updateAlarmBadge, updateChartPanOrZoom, viewAfter, viewBefore])\n\n const shouldSmoothPlot = useSelector(selectSmoothPlot)\n useLayoutEffect(() => {\n if (chartElement && chartElement.current && !dygraphInstance.current && !hasEmptyData) {\n const dygraphOptionsStatic = getInitialDygraphOptions({\n attributes,\n chartData,\n chartMetadata,\n chartSettings,\n dimensionsVisibility,\n hiddenLabelsElementId,\n isFakeStacked,\n orderedColors,\n setMinMax,\n shouldSmoothPlot,\n unitsCurrent,\n xAxisDateString,\n xAxisTimeString,\n })\n\n latestIsUserAction.current = false\n\n const dygraphOptions = {\n ...dygraphOptionsStatic,\n // set dateWindow on init - this is needed when chart is globalPanAndZoom-master\n // and user scrolls down/up so the chart hides and then unhides. This causes the chart\n // to re-create, but the data has additional padding which should be outside of\n // visible range\n dateWindow: [propsRef.current.viewAfter, propsRef.current.viewBefore],\n\n highlightCallback(\n event: MouseEvent, xval: number,\n ) {\n // todo\n // state.pauseChart()\n\n const newHoveredX = isMouseDown.current\n ? null\n : xval\n\n const currentHoveredX = propsRef.current.hoveredX\n if (newHoveredX !== currentHoveredX) {\n setHoveredX(newHoveredX)\n }\n },\n\n unhighlightCallback() {\n // todo\n // state.unpauseChart();\n if (propsRef.current.hoveredX !== null) {\n setHoveredX(null)\n }\n },\n drawCallback(dygraph: Dygraph) {\n // the user has panned the chart and this is called to re-draw the chart\n // 1. refresh this chart by adding data to it\n // 2. notify all the other charts about the update they need\n\n // to prevent an infinite loop (feedback), we use\n // state.tmp.dygraph_user_action\n // - when true, this is initiated by a user\n // - when false, this is feedback\n\n if (latestIsUserAction.current) {\n latestIsUserAction.current = false\n const xRange = dygraph.xAxisRange()\n const after = Math.round(xRange[0])\n const before = Math.round(xRange[1])\n\n if (isInRangeOfAvailableData({\n after, before, chartData: propsRef.current.chartData,\n })) {\n propsRef.current.updateChartPanOrZoom({ after, before })\n }\n }\n },\n zoomCallback: (minDate: number, maxDate: number) => {\n latestIsUserAction.current = true\n propsRef.current.updateChartPanOrZoom({ after: minDate, before: maxDate })\n },\n\n underlayCallback(canvas: CanvasRenderingContext2D, area: DygraphArea, g: Dygraph) {\n updatePrecededPosition(g)\n\n if (propsRef.current.alarm) {\n const { alarm: currentAlarm } = propsRef.current\n\n const alarmPosition = g.toDomXCoord(currentAlarm.when * 1000)\n const fillColor = getBorderColor(currentAlarm.status)\n const horizontalPadding = 3\n // use RAF, because dygraph doesn't provide any callback called after drawing the chart\n requestAnimationFrame(() => {\n canvas.fillStyle = fillColor\n const globalAlphaCache = canvas.globalAlpha\n canvas.globalAlpha = 0.7\n canvas.fillRect(alarmPosition - horizontalPadding, area.y, 2 * horizontalPadding, area.h)\n canvas.globalAlpha = globalAlphaCache\n })\n\n propsRef.current.updateAlarmBadge(\n propsRef.current.alarm,\n g,\n alarmPosition - horizontalPadding,\n )\n }\n\n // the chart is about to be drawn\n // this function renders global highlighted time-frame\n\n if (propsRef.current.globalChartUnderlay) {\n const { after, before } = propsRef.current.globalChartUnderlay\n\n if (after < before) {\n const HIGHLIGHT_HORIZONTAL_PADDING = 20\n const bottomLeft = g.toDomCoords(after, -HIGHLIGHT_HORIZONTAL_PADDING)\n const topRight = g.toDomCoords(before, HIGHLIGHT_HORIZONTAL_PADDING)\n\n const left = bottomLeft[0]\n const right = topRight[0]\n\n // eslint-disable-next-line no-param-reassign\n canvas.fillStyle = window.NETDATA.themes.current.highlight\n canvas.fillRect(left, area.y, right - left, area.h)\n }\n }\n },\n\n // interactionModel cannot be replaced with updateOptions(). we need to keep all changing\n // values and callbacks in mutable ref,\n interactionModel: {\n mousedown(event: MouseEvent, dygraph: Dygraph, context: any) {\n // Right-click should not initiate anything.\n if (event.button && event.button === 2) {\n return\n }\n\n latestIsUserAction.current = true\n isMouseDown.current = true\n context.initializeMouseDown(event, dygraph, context)\n\n // limit problematic dygraph's feature, more info above the function\n // eslint-disable-next-line no-param-reassign\n context.tarp.tarps = hackDygraphIFrameTarps(context.tarp.tarps)\n\n if (event.button && event.button === 1) {\n // middle mouse button\n\n if (event.shiftKey) {\n // panning\n dygraphHighlightAfter.current = null\n // @ts-ignore\n Dygraph.startPan(event, dygraph, context)\n } else if (event.altKey || event.ctrlKey || event.metaKey) {\n // middle mouse button highlight\n dygraphHighlightAfter.current = dygraph.toDataXCoord(event.offsetX)\n // @ts-ignore\n Dygraph.startZoom(event, dygraph, context)\n } else {\n // middle mouse button selection for zoom\n dygraphHighlightAfter.current = null\n // @ts-ignore\n Dygraph.startZoom(event, dygraph, context)\n }\n } else if (event.shiftKey) {\n // left mouse button selection for zoom (ZOOM)\n dygraphHighlightAfter.current = null\n // @ts-ignore\n Dygraph.startZoom(event, dygraph, context)\n } else if (event.altKey || event.ctrlKey || event.metaKey) {\n // left mouse button highlight\n dygraphHighlightAfter.current = dygraph.toDataXCoord(event.offsetX)\n // @ts-ignore\n Dygraph.startZoom(event, dygraph, context)\n } else {\n // left mouse button dragging (PAN)\n dygraphHighlightAfter.current = null\n // @ts-ignore\n Dygraph.startPan(event, dygraph, context)\n }\n },\n\n mousemove(event: MouseEvent, dygraph: Dygraph, context: any) {\n // if (state.tmp.dygraph_highlight_after !== null) {\n // else if (\n if (dygraphHighlightAfter.current !== null) {\n // highlight selection\n latestIsUserAction.current = true\n // @ts-ignore\n Dygraph.moveZoom(event, dygraph, context)\n event.preventDefault()\n } else if (context.isPanning) {\n latestIsUserAction.current = true\n // eslint-disable-next-line no-param-reassign\n context.is2DPan = false\n // @ts-ignore\n Dygraph.movePan(event, dygraph, context)\n } else if (context.isZooming) {\n // @ts-ignore\n Dygraph.moveZoom(event, dygraph, context)\n }\n },\n\n mouseup(event: MouseEvent, dygraph: Dygraph, context: any) {\n isMouseDown.current = false\n if (dygraphHighlightAfter.current !== null) {\n const sortedRange = sortBy((x) => +x, [\n dygraphHighlightAfter.current,\n dygraph.toDataXCoord(event.offsetX),\n ])\n\n propsRef.current.setGlobalChartUnderlay({\n after: sortedRange[0],\n before: sortedRange[1],\n masterID: chartUuid,\n })\n dygraphHighlightAfter.current = null\n // eslint-disable-next-line no-param-reassign\n context.isZooming = false\n\n // old dashboard code\n // @ts-ignore\n // eslint-disable-next-line no-underscore-dangle\n dygraph.clearZoomRect_()\n // this call probably fixes the broken selection circle during highlighting\n // and forces underlayCallback to fire (and draw highlight-rect\n // @ts-ignore\n // eslint-disable-next-line no-underscore-dangle\n dygraph.drawGraph_(false)\n } else if (context.isPanning) {\n latestIsUserAction.current = true\n // @ts-ignore\n Dygraph.endPan(event, dygraph, context)\n propsRef.current.immediatelyDispatchPanAndZoom()\n } else if (context.isZooming) {\n latestIsUserAction.current = true\n // @ts-ignore\n Dygraph.endZoom(event, dygraph, context)\n propsRef.current.immediatelyDispatchPanAndZoom()\n }\n },\n\n wheel(event: WheelEvent, dygraph: Dygraph) {\n // Take the offset of a mouse event on the dygraph canvas and\n // convert it to a pair of percentages from the bottom left.\n // (Not top left, bottom is where the lower value is.)\n function offsetToPercentage(g: Dygraph, offsetX: number, offsetY: number) {\n // This is calculating the pixel offset of the leftmost date.\n const xOffset = g.toDomXCoord(g.xAxisRange()[0])\n const yar0 = g.yAxisRange(0)\n\n // This is calculating the pixel of the highest value. (Top pixel)\n const yOffset = g.toDomYCoord(yar0[1])\n\n // x y w and h are relative to the corner of the drawing area,\n // so that the upper corner of the drawing area is (0, 0).\n const x = offsetX - xOffset\n const y = offsetY - yOffset\n\n // This is computing the rightmost pixel, effectively defining the\n // width.\n // const w = g.toDomCoords(g.xAxisRange()[1], null)[0] - xOffset\n const w = g.toDomXCoord(g.xAxisRange()[1]) - xOffset\n\n // This is computing the lowest pixel, effectively defining the height.\n // const h = g.toDomCoords(null, yar0[0])[1] - yOffset\n const h = g.toDomYCoord(yar0[0]) - yOffset\n\n // Percentage from the left.\n const xPct = w === 0 ? 0 : (x / w)\n // Percentage from the top.\n const yPct = h === 0 ? 0 : (y / h)\n\n // The (1-) part below changes it from \"% distance down from the top\"\n // to \"% distance up from the bottom\".\n return [xPct, (1 - yPct)]\n }\n\n function adjustAxis(axis: [number, number], zoomInPercentage: number, bias: number) {\n const delta = axis[1] - axis[0]\n const increment = delta * zoomInPercentage\n const foo = [increment * bias, increment * (1 - bias)]\n\n return [axis[0] + foo[0], axis[1] - foo[1]]\n }\n\n // Adjusts [x, y] toward each other by zoomInPercentage%\n // Split it so the left/bottom axis gets xBias/yBias of that change and\n // tight/top gets (1-xBias)/(1-yBias) of that change.\n //\n // If a bias is missing it splits it down the middle.\n function zoomRange(g: Dygraph, zoomInPercentage: number, xBias: number, yBias: number) {\n const yAxes = g.yAxisRanges()\n const newYAxes = []\n for (let i = 0; i < yAxes.length; i += 1) {\n newYAxes[i] = adjustAxis(yAxes[i], zoomInPercentage, (yBias || 0.5))\n }\n\n return adjustAxis(g.xAxisRange(), zoomInPercentage, (xBias || 0.5))\n }\n\n if (event.altKey || event.shiftKey) {\n latestIsUserAction.current = true\n\n // http://dygraphs.com/gallery/interaction-api.js\n let normalDef\n // @ts-ignore\n if (typeof event.wheelDelta === \"number\" && !Number.isNaN(event.wheelDelta)) {\n // chrome\n // @ts-ignore\n normalDef = event.wheelDelta / 40\n } else {\n // firefox\n normalDef = event.deltaY * -1.2\n }\n\n const normal = (event.detail) ? event.detail * -1 : normalDef\n const percentage = normal / 50\n\n const percentages = offsetToPercentage(dygraph, event.offsetX, event.offsetY)\n const xPct = percentages[0]\n const yPct = percentages[1]\n\n const [after, before] = zoomRange(dygraph, percentage, xPct, yPct)\n\n propsRef.current.updateChartPanOrZoom({\n after,\n before,\n shouldNotExceedAvailableRange: true,\n callback: (updatedAfter: number, updatedBefore: number) => {\n dygraph.updateOptions({\n dateWindow: [updatedAfter, updatedBefore],\n })\n },\n })\n\n event.preventDefault()\n }\n },\n\n click(event: MouseEvent) {\n event.preventDefault()\n },\n\n dblclick() {\n propsRef.current.resetGlobalPanAndZoom()\n },\n\n touchstart(event: TouchEvent, dygraph: Dygraph, context: any) {\n isMouseDown.current = true\n latestIsUserAction.current = true\n\n // todo\n // state.pauseChart()\n\n Dygraph.defaultInteractionModel.touchstart(event, dygraph, context)\n\n // we overwrite the touch directions at the end, to overwrite\n // the internal default of dygraph\n // eslint-disable-next-line no-param-reassign\n context.touchDirections = { x: true, y: false }\n\n dygraphLastTouchMove.current = 0\n\n if (typeof event.touches[0].pageX === \"number\") {\n dygraphLastTouchPageX.current = event.touches[0].pageX\n } else {\n dygraphLastTouchPageX.current = 0\n }\n },\n touchmove(event: TouchEvent, dygraph: Dygraph, context: any) {\n latestIsUserAction.current = true\n Dygraph.defaultInteractionModel.touchmove(event, dygraph, context)\n\n dygraphLastTouchMove.current = Date.now()\n },\n\n touchend(event: TouchEvent, dygraph: Dygraph, context: any) {\n isMouseDown.current = false\n latestIsUserAction.current = true\n Dygraph.defaultInteractionModel.touchend(event, dygraph, context)\n\n // if it didn't move, it is a selection\n if (dygraphLastTouchMove.current === 0 && dygraphLastTouchPageX.current !== 0\n && chartElement.current // this is just for TS\n ) {\n latestIsUserAction.current = false // prevent updating pan-and-zoom\n // internal api of dygraph\n // @ts-ignore\n // eslint-disable-next-line no-underscore-dangle\n const dygraphPlotter = dygraph.plotter_\n const pct = (dygraphLastTouchPageX.current - (\n dygraphPlotter.area.x + chartElement.current.getBoundingClientRect().left\n )) / dygraphPlotter.area.w\n\n const { current } = propsRef\n const t = Math.round(current.viewAfter\n + (current.viewBefore - current.viewAfter) * pct)\n // dont set \"master\" so the highlight is recalculated (to match existing row)\n setHoveredX(t, true)\n }\n\n // if it was double tap within double click time, reset the charts\n const now = Date.now()\n if (typeof dygraphLastTouchEnd.current !== \"undefined\") {\n if (dygraphLastTouchMove.current === 0) {\n const dt = now - dygraphLastTouchEnd.current\n if (dt <= window.NETDATA.options.current.double_click_speed) {\n propsRef.current.resetGlobalPanAndZoom()\n }\n }\n }\n\n // remember the timestamp of the last touch end\n dygraphLastTouchEnd.current = now\n propsRef.current.immediatelyDispatchPanAndZoom()\n },\n },\n }\n\n const data = isFakeStacked\n ? getDataForFakeStacked(chartData.result.data, dimensionsVisibility)\n : chartData.result.data\n const instance = new Dygraph((chartElement.current), data, dygraphOptions)\n dygraphInstance.current = instance\n }\n }, [attributes, chartData, chartMetadata, chartSettings, chartUuid, dimensionsVisibility,\n hasEmptyData, hiddenLabelsElementId, isFakeStacked,\n orderedColors, setHoveredX, setMinMax, shouldSmoothPlot, unitsCurrent,\n xAxisDateString, xAxisTimeString, updatePrecededPosition])\n\n useUpdateEffect(() => {\n if (dygraphInstance.current) {\n const isSparkline = attributes.dygraphTheme === \"sparkline\"\n const isLegendOnBottom = attributes.legendPosition === \"bottom\"\n dygraphInstance.current.updateOptions({\n ylabel: (isSparkline || isLegendOnBottom) ? undefined : unitsCurrent,\n })\n }\n }, [attributes, unitsCurrent])\n\n\n // immediately update when changing global chart underlay or currently showed alarm\n useUpdateEffect(() => {\n if (dygraphInstance.current) {\n dygraphInstance.current.updateOptions({})\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [alarm, globalChartUnderlay])\n\n const spacePanelTransitionEndIsActive = useSelector(selectSpacePanelTransitionEndIsActive)\n useUpdateEffect(() => {\n if (dygraphInstance.current) {\n // dygraph always resizes on browser width change, but doesn't resize when the container\n // has different width.\n window.requestAnimationFrame(() => {\n if (dygraphInstance.current) {\n (dygraphInstance.current as NetdataDygraph).resize()\n }\n })\n }\n }, [spacePanelTransitionEndIsActive])\n\n // update data of the chart\n // first effect should only be made by new DygraphInstance()\n useUpdateEffect(() => {\n // dont update when there is no data - in this case we should still show old chart\n if (dygraphInstance.current && !hasEmptyData) {\n // todo support state.tmp.dygraph_force_zoom\n const forceDateWindow = [viewAfter, viewBefore]\n\n // in old dashboard, when chart needed to reset internal dateWindow state,\n // dateWindow was set to null, and new dygraph got the new dateWindow from results.\n // this caused small unsync between dateWindow of parent (master) and child charts\n // i also detected that forceDateWindow timestamps have slightly better performance (10%)\n // so if the chart needs to change local dateWindow, we'll always use timestamps instead of\n // null.\n\n const xAxisRange = dygraphInstance.current.xAxisRange()\n // eslint-disable-next-line max-len\n const hasChangedDuration = Math.abs((viewBefore - viewAfter) - (xAxisRange[1] - xAxisRange[0])) > timeframeThreshold\n\n // check if the time is relative\n const hasScrolledToTheFutureDuringPlayMode = viewBefore <= 0\n && (xAxisRange[1] > viewBefore)\n // if viewAfter is bigger than current dateWindow start, just reset dateWindow\n && (xAxisRange[0] > viewAfter)\n && !hasChangedDuration\n\n const optionsDateWindow = (isRemotelyControlled && !hasScrolledToTheFutureDuringPlayMode)\n ? { dateWindow: forceDateWindow }\n : {}\n\n const { dygraphColors = orderedColors } = attributes\n const file = isFakeStacked\n ? getDataForFakeStacked(chartData.result.data, dimensionsVisibility)\n : chartData.result.data\n\n dygraphInstance.current.updateOptions({\n ...optionsDateWindow,\n colors: isFakeStacked ? transformColors(reverse(dygraphColors)) : dygraphColors,\n file,\n labels: chartData.result.labels,\n fillAlpha: dygraphFillAlpha,\n stackedGraph: dygraphChartType === \"stacked\" && !isFakeStacked,\n // see explanation about reversing before isFakeStacked assignment\n visibility: isFakeStacked ? reverse(dimensionsVisibility) : dimensionsVisibility,\n })\n }\n }, [attributes, chartData.result, chartUuid, dimensionsVisibility, dygraphChartType,\n dygraphFillAlpha, hasEmptyData, isFakeStacked, isRemotelyControlled, orderedColors,\n viewAfter, viewBefore])\n\n useUpdateEffect(() => {\n if (!dygraphInstance.current) {\n return\n }\n\n const dygraphOptionsStatic = getInitialDygraphOptions({\n attributes,\n chartData,\n chartMetadata,\n chartSettings,\n dimensionsVisibility,\n hiddenLabelsElementId,\n isFakeStacked,\n orderedColors,\n setMinMax,\n shouldSmoothPlot,\n unitsCurrent,\n xAxisDateString,\n xAxisTimeString,\n })\n dygraphInstance.current.updateOptions(dygraphOptionsStatic)\n }, [dygraphChartType])\n\n // set selection\n const currentSelectionMasterId = useSelector(selectGlobalSelectionMaster)\n useLayoutEffect(() => {\n if (dygraphInstance.current && currentSelectionMasterId !== chartUuid) {\n if (hoveredRow === -1) {\n // getSelection is 100 times faster that clearSelection\n if (dygraphInstance.current.getSelection() !== -1) {\n dygraphInstance.current.clearSelection()\n }\n return\n }\n dygraphInstance.current.setSelection(hoveredRow)\n }\n }, [chartData, chartUuid, currentSelectionMasterId, hoveredRow,\n viewAfter, viewBefore])\n\n\n // handle resizeHeight change\n const resizeHeight = useSelector(\n (state: AppStateT) => selectResizeHeight(state, { id: chartUuid }),\n )\n useLayoutEffect(() => {\n if (dygraphInstance.current) {\n (dygraphInstance.current as NetdataDygraph).resize()\n }\n }, [resizeHeight, chartData.dimension_names.length])\n\n\n const commonMinState = useSelector((state: AppStateT) => (\n attributes.commonMin\n ? selectCommonMin(state, attributes.commonMin)\n : undefined\n ))\n const commonMaxState = useSelector((state: AppStateT) => (\n attributes.commonMax\n ? selectCommonMax(state, attributes.commonMax)\n : undefined\n ))\n\n useLayoutEffect(() => {\n const { commonMin: commonMinKey, commonMax: commonMaxKey } = attributes\n\n if (\n dygraphInstance.current\n && (commonMinKey || commonMaxKey)\n ) {\n const extremes = (dygraphInstance.current as NetdataDygraph).yAxisExtremes()[0]\n const [currentMin, currentMax] = extremes\n\n const {\n dygraphValueRange = [null, null],\n } = attributes\n // if the user gave a valueRange, respect it\n const shouldUseCommonMin = dygraphValueRange[0] === null\n const shouldUseCommonMax = dygraphValueRange[1] === null\n\n\n let shouldUpdate = false\n let valueRange: number[] = [...extremes]\n\n // check if current extreme (painted by dygraph) is not more extreme than commonMin/Max\n // if yes - update the chart\n if (commonMinKey && shouldUseCommonMin) {\n if (commonMinState && commonMinState.currentExtreme < currentMin) {\n valueRange[0] = commonMinState.currentExtreme\n shouldUpdate = true\n }\n }\n if (commonMaxKey && shouldUseCommonMax) {\n if (commonMaxState && commonMaxState.currentExtreme > currentMax) {\n valueRange[1] = commonMaxState.currentExtreme\n shouldUpdate = true\n }\n }\n\n if (shouldUpdate) {\n dygraphInstance.current.updateOptions({ valueRange })\n const newExtremes = (dygraphInstance.current as NetdataDygraph).yAxisExtremes()[0]\n // get updated valueRange (rounded by dygraph)\n valueRange = [...newExtremes]\n }\n\n // if the value is different than the one stored in state, update redux state\n if (commonMinKey && shouldUseCommonMin\n && (valueRange[0] !== commonMinState?.charts[chartUuid])\n ) {\n dispatch(setCommonMinAction({ chartUuid, commonMinKey, value: valueRange[0] }))\n }\n if (commonMaxKey && shouldUseCommonMax\n && (valueRange[1] !== commonMaxState?.charts[chartUuid])\n ) {\n dispatch(setCommonMaxAction({ chartUuid, commonMaxKey, value: valueRange[1] }))\n }\n }\n }, [attributes, chartData.result, chartUuid, commonMinState, commonMaxState, dispatch])\n\n useLayoutEffect(() => {\n if (isProceeded && dygraphInstance.current) {\n updatePrecededPosition(dygraphInstance.current)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isProceeded])\n\n useUnmount(() => {\n if (dygraphInstance.current) {\n dygraphInstance.current.destroy()\n }\n })\n\n /**\n * resize with ResizeObserver\n */\n const resizeObserver = useRef<ResizeObserver>()\n useMount(() => {\n if (!attributes.detectResize) {\n return\n }\n // flag used to prevent first callback (and resize) on dygraph initial draw\n let hasOmitedFirstCallback = false\n const callbackDebounced = debounce(() => {\n if (!hasOmitedFirstCallback) {\n hasOmitedFirstCallback = true\n return\n }\n\n if (dygraphInstance.current) {\n (dygraphInstance.current as NetdataDygraph).resize()\n }\n }, dygraphResizeDebounceTime)\n\n resizeObserver.current = new ResizeObserver(() => {\n callbackDebounced()\n })\n resizeObserver.current.observe(chartElement.current as HTMLDivElement)\n })\n\n useUnmount(() => {\n dygraphInstance.current = null // clear it for debounce purposes\n if (resizeObserver.current) {\n resizeObserver.current.disconnect()\n }\n })\n\n const isLegendOnBottom = attributes.legendPosition === \"bottom\"\n\n return (\n <>\n <div\n ref={chartElement}\n id={chartElementId}\n className={classNames(\n chartElementClassName,\n { \"dygraph-chart--legend-bottom\": isLegendOnBottom },\n )}\n />\n {isProceeded && hasLegend && (\n <ProceededChartDisclaimer ref={precededChartRef as React.Ref<HTMLDivElement>} />\n )}\n {alarm && hasLegend && (\n // @ts-ignore\n <AlarmBadge isVisible={isBadgeVisible} ref={alarmBadgeRef} status={alarm.status} label={alarm.value} />\n )}\n <div className=\"dygraph-chart__labels-hidden\" id={hiddenLabelsElementId} />\n </>\n )\n}\n","import { useRef } from \"react\"\nimport { useToggle } from \"react-use\"\n\nconst badgeTopMargin = \"40px\"\n\nexport default () => {\n const [isRendered, toggleIsRendered] = useToggle(false)\n\n const ref = useRef(null)\n\n const updatePosition = (isVisible, g, position) => {\n if (!isVisible) {\n toggleIsRendered(false)\n return\n }\n\n if (ref.current) {\n toggleIsRendered(true)\n const { x } = g.getArea()\n\n ref.current.style.left = `${x}px`\n ref.current.style.right = `calc(100% - ${position}px)`\n ref.current.style.top = badgeTopMargin\n }\n }\n\n return [isRendered, ref, updatePosition]\n}\n","// https://gist.github.com/ca0v/73a31f57b397606c9813472f7493a940\n\nexport const debounce = <F extends (...args: any[]) => any>(func: F, waitFor: number) => {\n let timeout: ReturnType<typeof setTimeout> | null = null\n\n const debounced = (...args: Parameters<F>) => {\n if (timeout !== null) {\n clearTimeout(timeout)\n timeout = null\n }\n timeout = setTimeout(() => func(...args), waitFor)\n }\n\n return debounced as (...args: Parameters<F>) => ReturnType<F>\n}\n","import React, { useRef, useEffect, useState } from \"react\"\n// @ts-ignore \"declare module\" doesn't work properly when importing dashboard in cloud\nimport EasyPie from \"easy-pie-chart\"\n\nimport { Attributes } from \"domains/chart/utils/transformDataAttributes\"\nimport { ChartMetadata, EasyPieChartData } from \"domains/chart/chart-types\"\nimport { ChartLibraryName } from \"domains/chart/utils/chartLibrariesSettings\"\nimport {\n always, cond, identity, T, sortBy, map, pipe,\n} from \"ramda\"\n\ntype GetPercentFromValueMinMax = (arg: {\n value: number | undefined\n min: number | undefined\n max: number | undefined\n isMinOverride: boolean\n isMaxOverride: boolean\n}) => number\nconst getPercentFromValueMinMax: GetPercentFromValueMinMax = ({\n value = 0, min = 0, max = 0,\n isMinOverride,\n isMaxOverride,\n}) => {\n /* eslint-disable no-param-reassign */\n // todo refractor old logic to readable functions\n // if no easyPiechart-min-value attribute\n if (!isMinOverride && min > 0) {\n min = 0\n }\n if (!isMaxOverride && max < 0) {\n max = 0\n }\n\n let pcent\n\n if (min < 0 && max > 0) {\n // it is both positive and negative\n // zero at the top center of the chart\n max = (-min > max) ? -min : max\n pcent = Math.round((value * 100) / max)\n } else if (value >= 0 && min >= 0 && max >= 0) {\n // clockwise\n pcent = Math.round(((value - min) * 100) / (max - min))\n if (pcent === 0) {\n pcent = 0.1\n }\n } else {\n // counter clockwise\n pcent = Math.round(((value - max) * 100) / (max - min))\n if (pcent === 0) {\n pcent = -0.1\n }\n }\n /* eslint-enable no-param-reassign */\n return pcent\n}\n\ninterface Props {\n attributes: Attributes\n chartData: EasyPieChartData\n chartMetadata: ChartMetadata\n chartElementClassName: string\n chartElementId: string\n chartLibrary: ChartLibraryName\n chartUuid: string\n colors: {\n [key: string]: string\n }\n chartWidth: number\n dimensionsVisibility: boolean[]\n isRemotelyControlled: boolean\n legendFormatValue: ((v: number | string | null) => number | string)\n onUpdateChartPanAndZoom: (arg: {\n after: number, before: number,\n callback: (after: number, before: number) => void,\n masterID: string,\n shouldNotExceedAvailableRange: boolean,\n }) => void\n orderedColors: string[]\n\n hoveredRow: number\n setGlobalChartUnderlay: (arg: { after: number, before: number, masterID: string }) => void\n setMinMax: (minMax: [number, number]) => void\n showUndefined: boolean\n unitsCurrent: string\n viewAfter: number\n viewBefore: number\n}\nexport const EasyPieChart = ({\n attributes,\n chartData,\n chartMetadata,\n chartElementClassName,\n chartElementId,\n chartWidth,\n hoveredRow,\n legendFormatValue,\n orderedColors,\n setMinMax,\n showUndefined,\n unitsCurrent,\n}: Props) => {\n const chartElement = useRef<HTMLDivElement>(null)\n const [chartInstance, setChartInstance] = useState()\n\n const valueIndex = hoveredRow === -1\n ? 0\n : (chartData.result.length - 1 - hoveredRow) // because data for easy-pie-chart are flipped\n const value = showUndefined ? null : chartData.result[valueIndex]\n\n const {\n // if this is set, then we're overriding commonMin\n easyPieChartMinValue: min = chartData.min, // todo replace with commonMin\n easyPieChartMaxValue: max = chartData.max, // todo replace with commonMax\n } = attributes\n\n // make sure the order is correct and that value is not outside those boundaries\n // (this check was present in old dashboard but perhaps it's not needed)\n const safeMinMax = pipe(\n map((x: number) => +x),\n sortBy(identity),\n ([_min, _max]: number[]) => [Math.min(_min, value || 0), Math.max(_max, value || 0)],\n )([min, max])\n setMinMax(safeMinMax as [number, number])\n const pcent = getPercentFromValueMinMax({\n value: showUndefined ? 0 : (value as number),\n min: safeMinMax[0],\n max: safeMinMax[1],\n isMinOverride: attributes.easyPieChartMinValue !== undefined,\n isMaxOverride: attributes.easyPieChartMaxValue !== undefined,\n })\n\n useEffect(() => {\n if (chartElement.current && !chartInstance) {\n const stroke = cond([\n [(v) => v < 3, always(2)],\n [T, identity],\n ])(Math.floor(chartWidth / 22))\n\n const {\n easyPieChartTrackColor = window.NETDATA.themes.current.easypiechart_track,\n easyPieChartScaleColor = window.NETDATA.themes.current.easypiechart_scale,\n easyPieChartScaleLength = 5,\n easyPieChartLineCap = \"round\",\n easyPieChartLineWidth = stroke,\n easyPieChartTrackWidth,\n easyPieChartSize = chartWidth,\n easyPieChartRotate = 0,\n easyPieChartAnimate = { duration: 500, enabled: true },\n easyPieChartEasing,\n } = attributes\n\n const newChartInstance = new EasyPie(chartElement.current, {\n barColor: orderedColors[0],\n trackColor: easyPieChartTrackColor,\n scaleColor: easyPieChartScaleColor,\n scaleLength: easyPieChartScaleLength,\n lineCap: easyPieChartLineCap,\n lineWidth: easyPieChartLineWidth,\n trackWidth: easyPieChartTrackWidth,\n size: easyPieChartSize,\n rotate: easyPieChartRotate,\n animate: easyPieChartAnimate,\n easing: easyPieChartEasing,\n })\n setChartInstance(newChartInstance)\n }\n }, [attributes, chartData, chartInstance, chartWidth, orderedColors])\n\n // update with value\n useEffect(() => {\n if (chartInstance) {\n const shouldUseAnimation = hoveredRow === -1 && !showUndefined\n\n if (shouldUseAnimation && !chartInstance.options.animate.enabled) {\n chartInstance.enableAnimation()\n } else if (!shouldUseAnimation && chartInstance.options.animate.enabled) {\n chartInstance.disableAnimation()\n }\n\n setTimeout(() => {\n // need to be in timeout to trigger animation properly\n chartInstance.update(pcent)\n }, 0)\n }\n }, [chartInstance, hoveredRow, pcent, showUndefined])\n\n const valueFontSize = (chartWidth * 2) / 3 / 5\n const valuetop = Math.round((chartWidth - valueFontSize - (chartWidth / 40)) / 2)\n\n const titleFontSize = Math.round((valueFontSize * 1.6) / 3)\n const titletop = Math.round(valuetop - (titleFontSize * 2) - (chartWidth / 40))\n\n const unitFontSize = Math.round(titleFontSize * 0.9)\n const unitTop = Math.round(valuetop + (valueFontSize + unitFontSize) + (chartWidth / 40))\n // to update, just label innerText and pcent are changed\n\n return (\n <div ref={chartElement} id={chartElementId} className={chartElementClassName}>\n <span\n className=\"easyPieChartLabel\"\n style={{\n fontSize: valueFontSize,\n top: valuetop,\n }}\n >\n {legendFormatValue(value)}\n </span>\n <span\n className=\"easyPieChartTitle\"\n style={{\n fontSize: titleFontSize,\n top: titletop,\n }}\n >\n {attributes.title || chartMetadata.title}\n </span>\n <span\n className=\"easyPieChartUnits\"\n style={{\n fontSize: unitFontSize,\n top: unitTop,\n }}\n >\n {unitsCurrent}\n </span>\n\n </div>\n )\n}\n","import React, {\n useRef, useEffect, useState,\n} from \"react\"\n// @ts-ignore \"declare module\" doesn't work properly when importing dashboard in cloud\nimport { Gauge } from \"gaugeJS\"\n\nimport { Attributes } from \"domains/chart/utils/transformDataAttributes\"\nimport { ChartMetadata, EasyPieChartData } from \"domains/chart/chart-types\"\nimport { ChartLibraryName } from \"domains/chart/utils/chartLibrariesSettings\"\nimport {\n identity, sortBy, map, pipe, always,\n} from \"ramda\"\n\nconst isSetByUser = (x: undefined | number): x is number => (\n typeof x === \"number\"\n)\n\ninterface Props {\n attributes: Attributes\n chartData: EasyPieChartData\n chartMetadata: ChartMetadata\n chartElementClassName: string\n chartElementId: string\n chartLibrary: ChartLibraryName\n chartUuid: string\n colors: {\n [key: string]: string\n }\n chartHeight: number\n chartWidth: number\n dimensionsVisibility: boolean[]\n isRemotelyControlled: boolean\n legendFormatValue: ((v: number | string | null) => number | string)\n onUpdateChartPanAndZoom: (arg: {\n after: number, before: number,\n callback: (after: number, before: number) => void,\n masterID: string,\n shouldNotExceedAvailableRange: boolean,\n }) => void\n orderedColors: string[]\n\n hoveredRow: number\n hoveredX: number | null\n setGlobalChartUnderlay: (arg: { after: number, before: number, masterID: string }) => void\n setHoveredX: (hoveredX: number | null, noMaster?: boolean) => void\n setMinMax: (minMax: [number, number]) => void\n showUndefined: boolean\n unitsCurrent: string\n viewAfter: number\n viewBefore: number\n}\nexport const GaugeChart = ({\n attributes,\n chartData,\n chartMetadata,\n chartElementClassName,\n chartElementId,\n chartUuid,\n chartHeight,\n chartWidth,\n hoveredRow,\n legendFormatValue,\n orderedColors,\n setMinMax,\n showUndefined,\n unitsCurrent,\n}: Props) => {\n const chartCanvasElement = useRef<HTMLCanvasElement>(null)\n const [chartInstance, setChartInstance] = useState()\n\n const valueIndex = hoveredRow === -1\n ? 0\n : (chartData.result.length - 1 - hoveredRow) // because data for easy-pie-chart are flipped\n const value = chartData.result[valueIndex]\n\n const {\n // if this is set, then we're overriding commonMin\n gaugeMinValue: minAttribute,\n gaugeMaxValue: maxAttribute,\n } = attributes\n\n const min = isSetByUser(minAttribute) ? minAttribute : chartData.min\n const max = isSetByUser(maxAttribute) ? maxAttribute : chartData.max\n // we should use minAttribute if it's existing\n // old app was using commonMin\n\n // make sure the order is correct and that value is not outside those boundaries\n // (this check was present in old dashboard but perhaps it's not needed)\n const [safeMin, safeMax] = pipe(\n // if they are attributes, make sure they're converted to numbers\n map((x: number) => +x),\n // make sure it is zero based\n // but only if it has not been set by the user\n ([_min, _max]: number[]) => [\n (!isSetByUser(minAttribute) && _min > 0) ? 0 : _min,\n (!isSetByUser(maxAttribute) && _max < 0) ? 0 : _max,\n ],\n // make sure min <= max\n sortBy(identity),\n ([_min, _max]: number[]) => [Math.min(_min, value), Math.max(_max, value)],\n )([min, max])\n // calling outside \"useEffect\" intentionally,\n // because it should update the values first, and only then render the chart in useEffect()\n setMinMax([safeMin, safeMax])\n\n const pcent = pipe(\n always(((value - safeMin) * 100) / (safeMax - safeMin)),\n // bug fix for gauge.js 1.3.1\n // if the value is the absolute min or max, the chart is broken\n (_pcent: number) => Math.max(0.001, _pcent),\n (_pcent: number) => Math.min(99.999, _pcent),\n )()\n\n useEffect(() => {\n if (chartCanvasElement.current && !chartInstance) {\n const {\n gaugePointerColor = window.NETDATA.themes.current.gauge_pointer,\n gaugeStrokeColor = window.NETDATA.themes.current.gauge_stroke,\n gaugeStartColor = orderedColors[0],\n gaugeStopColor,\n gaugeGenerateGradient = false,\n } = attributes\n\n const options = {\n lines: 12, // The number of lines to draw\n angle: 0.14, // The span of the gauge arc\n lineWidth: 0.57, // The line thickness\n radiusScale: 1.0, // Relative radius\n pointer: {\n length: 0.85, // 0.9 The radius of the inner circle\n strokeWidth: 0.045, // The rotation offset\n color: gaugePointerColor, // Fill color\n },\n\n // If false, the max value of the gauge will be updated if value surpass max\n // If true, the min value of the gauge will be fixed unless you set it manually\n limitMax: true,\n limitMin: true,\n colorStart: gaugeStartColor,\n colorStop: gaugeStopColor,\n strokeColor: gaugeStrokeColor,\n generateGradient: (gaugeGenerateGradient === true), // gmosx:\n gradientType: 0,\n highDpiSupport: true, // High resolution support\n }\n\n const newChartInstance = new Gauge(chartCanvasElement.current).setOptions(options)\n\n // we will always feed a percentage (copied from old dashboard)\n newChartInstance.minValue = 0\n newChartInstance.maxValue = 100\n\n setChartInstance(newChartInstance)\n }\n }, [attributes, chartData, chartInstance, chartWidth, orderedColors])\n\n // update with value\n useEffect(() => {\n if (chartInstance) {\n // gauge animation\n const shouldUseAnimation = hoveredRow === -1 && !showUndefined\n // animation doesn't work in newest, 1.3.7 version!\n const speed = shouldUseAnimation ? 32 : 1000000000\n chartInstance.animationSpeed = speed\n setTimeout(() => {\n chartInstance.set(showUndefined ? 0 : pcent)\n }, 0)\n }\n }, [chartInstance, chartHeight, chartWidth, hoveredRow, pcent, showUndefined])\n\n const valueFontSize = Math.floor(chartHeight / 5)\n const valueTop = Math.round((chartHeight - valueFontSize) / 3.2)\n\n const titleFontSize = Math.round(valueFontSize / 2.1)\n const titleTop = 0\n\n const unitFontSize = Math.round(titleFontSize * 0.9)\n\n const minMaxFontSize = Math.round(valueFontSize * 0.75)\n return (\n <div\n id={chartElementId}\n className={chartElementClassName}\n >\n <canvas\n ref={chartCanvasElement}\n className=\"gaugeChart\"\n id={`gauge-${chartUuid}-canvas`}\n style={{\n width: chartWidth,\n height: chartHeight,\n }}\n />\n <span\n className=\"gaugeChartLabel\"\n style={{\n fontSize: valueFontSize,\n top: valueTop,\n }}\n >\n {legendFormatValue(showUndefined ? null : value)}\n </span>\n <span\n className=\"gaugeChartTitle\"\n style={{\n fontSize: titleFontSize,\n top: titleTop,\n }}\n >\n {attributes.title || chartMetadata.title}\n </span>\n <span\n className=\"gaugeChartUnits\"\n style={{\n fontSize: unitFontSize,\n }}\n >\n {unitsCurrent}\n </span>\n <span className=\"gaugeChartMin\" style={{ fontSize: minMaxFontSize }}>\n {legendFormatValue(showUndefined ? null : safeMin)}\n </span>\n <span className=\"gaugeChartMax\" style={{ fontSize: minMaxFontSize }}>\n {legendFormatValue(showUndefined ? null : safeMax)}\n </span>\n </div>\n )\n}\n","import {\n cond, identity, map, pipe, replace, splitEvery, T, toString,\n} from \"ramda\"\n\ntype NormalizeHex = (hex: string) => string\nexport const normalizeHex: NormalizeHex = pipe(\n toString,\n replace(/[^0-9a-f]/gi, \"\"),\n cond([\n [(str) => str.length < 6, (str) => str[0] + str[0] + str[1] + str[1] + str[2] + str[2]],\n [T, identity],\n ]),\n)\n\nexport const colorLuminance = (hex: string, lum: number = 0) => {\n const hexNormalized = normalizeHex(hex)\n\n // convert to decimal and change luminosity\n const rgb = pipe(\n // point-free version generates ts error\n (str: string) => splitEvery(2, str),\n map(\n pipe(\n (str: string) => parseInt(str, 16),\n (nr) => Math.round(\n Math.min(\n Math.max(0, nr + (nr * lum)),\n 255,\n ),\n ).toString(16),\n (str) => `00${str}`.substr(str.length),\n ),\n ),\n (x) => x.join(\"\"),\n )(hexNormalized)\n return `#${rgb}`\n}\n","/* eslint-disable indent */\n/* eslint-disable operator-linebreak */\n/* eslint-disable comma-dangle */\n/* eslint-disable react-hooks/exhaustive-deps */\n/* eslint-disable consistent-return */\nimport \"jquery-sparkline\"\nimport React, { useRef, useEffect, useState } from \"react\"\n\nimport { Attributes } from \"domains/chart/utils/transformDataAttributes\"\nimport { ChartMetadata, EasyPieChartData } from \"domains/chart/chart-types\"\nimport { colorLuminance } from \"domains/chart/utils/color-luminance\"\nimport { MS_IN_SECOND } from \"utils/utils\"\nimport { TimeRange } from \"types/common\"\n\nconst convertToTimestamp = (number: number) => {\n if (number > 0) {\n return number\n }\n return new Date().valueOf() + number // number is negative or zero\n}\n\ninterface TimeWindowCorrection {\n paddingLeftPercentage?: string\n widthRatio?: number\n}\nconst getForceTimeWindowCorrection = (\n chartData: EasyPieChartData,\n viewRange: TimeRange\n): TimeWindowCorrection => {\n const requestedAfter = convertToTimestamp(viewRange[0])\n const requestedBefore = convertToTimestamp(viewRange[1])\n const after = chartData.after * MS_IN_SECOND\n const before = chartData.before * MS_IN_SECOND\n\n const currentDuration = before - after\n const requestedDuration = requestedBefore - requestedAfter\n // don't do overrides when current (available) duration is bigger or only slightly lower\n // than requested duration\n const DURATION_CHANGE_TOLERANCE = 1.03\n if (currentDuration > requestedDuration / DURATION_CHANGE_TOLERANCE) {\n return {}\n }\n\n const widthRatio = currentDuration / requestedDuration\n\n const visibleDuration = requestedBefore - requestedAfter\n const paddingLeftPercentage = `${100 * ((after - requestedAfter) / visibleDuration)}%`\n\n return {\n paddingLeftPercentage,\n widthRatio,\n }\n}\n\ninterface Props {\n attributes: Attributes\n chartContainerElement: HTMLElement\n chartData: EasyPieChartData\n chartMetadata: ChartMetadata\n chartElementClassName: string\n chartElementId: string\n dimensionsVisibility: boolean[]\n isRemotelyControlled: boolean\n orderedColors: string[]\n unitsCurrent: string\n viewAfterForCurrentData: number\n viewBeforeForCurrentData: number\n}\nexport const SparklineChart = ({\n attributes,\n chartContainerElement,\n chartData,\n chartMetadata,\n chartElementClassName,\n chartElementId,\n orderedColors,\n unitsCurrent,\n viewAfterForCurrentData,\n viewBeforeForCurrentData,\n}: Props) => {\n const chartElement = useRef<HTMLDivElement>(null)\n\n // update width, height automatically each time\n const [$chartElement, set$chartElement] = useState()\n const sparklineOptions = useRef<{ [key: string]: any }>()\n\n const { paddingLeftPercentage = undefined, widthRatio = 1 } = attributes.forceTimeWindow\n ? getForceTimeWindowCorrection(chartData, [viewAfterForCurrentData, viewBeforeForCurrentData])\n : {}\n\n const updateSparklineValues = () => {\n if (!$chartElement) return\n\n const { width, height } = chartContainerElement.getBoundingClientRect()\n // @ts-ignore\n $chartElement.sparkline(chartData.result, {\n ...sparklineOptions.current,\n width: Math.floor(width * widthRatio),\n height: Math.floor(height),\n })\n }\n\n // create chart\n useEffect(() => {\n const { sparklineLineColor = orderedColors[0] } = attributes\n const defaultFillColor =\n chartMetadata.chart_type === \"line\"\n ? window.NETDATA.themes.current.background\n : colorLuminance(sparklineLineColor, window.NETDATA.chartDefaults.fill_luminance)\n const chartTitle = attributes.title || chartMetadata.title\n\n const emptyStringIfDisable = (x: string | undefined) => (x === \"disable\" ? \"\" : x)\n\n const {\n sparklineType = \"line\",\n sparklineFillColor = defaultFillColor,\n sparklineDisableInteraction = false,\n sparklineDisableTooltips = false,\n sparklineDisableHighlight = false,\n sparklineHighlightLighten = 1.4,\n sparklineTooltipSuffix = ` ${unitsCurrent}`,\n sparklineNumberFormatter = (n: number) => n.toFixed(2),\n } = attributes\n\n const sparklineInitOptions = {\n type: sparklineType,\n lineColor: sparklineLineColor,\n fillColor: sparklineFillColor,\n chartRangeMin: attributes.sparklineChartRangeMin,\n chartRangeMax: attributes.sparklineChartRangeMax,\n composite: attributes.sparklineComposite,\n enableTagOptions: attributes.sparklineEnableTagOptions,\n tagOptionPrefix: attributes.sparklineTagOptionPrefix,\n tagValuesAttribute: attributes.sparklineTagValuesAttribute,\n\n disableHiddenCheck: attributes.sparklineDisableHiddenCheck,\n defaultPixelsPerValue: attributes.sparklineDefaultPixelsPerValue,\n spotColor: emptyStringIfDisable(attributes.sparklineSpotColor),\n minSpotColor: emptyStringIfDisable(attributes.sparklineMinSpotColor),\n maxSpotColor: emptyStringIfDisable(attributes.sparklineMaxSpotColor),\n spotRadius: attributes.sparklineSpotRadius,\n valueSpots: attributes.sparklineValueSpots,\n highlightSpotColor: attributes.sparklineHighlightSpotColor,\n highlightLineColor: attributes.sparklineHighlightLineColor,\n lineWidth: attributes.sparklineLineWidth,\n normalRangeMin: attributes.sparklineNormalRangeMin,\n normalRangeMax: attributes.sparklineNormalRangeMax,\n drawNormalOnTop: attributes.sparklineDrawNormalOnTop,\n xvalues: attributes.sparklineXvalues,\n chartRangeClip: attributes.sparklineChartRangeClip,\n chartRangeMinX: attributes.sparklineChartRangeMinX,\n chartRangeMaxX: attributes.sparklineChartRangeMaxX,\n disableInteraction: sparklineDisableInteraction,\n disableTooltips: sparklineDisableTooltips,\n disableHighlight: sparklineDisableHighlight,\n highlightLighten: sparklineHighlightLighten,\n highlightColor: attributes.sparklineHighlightColor,\n tooltipContainer: attributes.sparklineTooltipContainer,\n tooltipClassname: attributes.sparklineTooltipClassname,\n tooltipChartTitle: chartTitle,\n tooltipFormat: attributes.sparklineTooltipFormat,\n tooltipPrefix: attributes.sparklineTooltipPrefix,\n tooltipSuffix: sparklineTooltipSuffix,\n tooltipSkipNull: attributes.sparklineTooltipSkipNull,\n tooltipValueLookups: attributes.sparklineTooltipValueLookups,\n tooltipFormatFieldlist: attributes.sparklineTooltipFormatFieldlist,\n tooltipFormatFieldlistKey: attributes.sparklineTooltipFormatFieldlistKey,\n numberFormatter: sparklineNumberFormatter,\n numberDigitGroupSep: attributes.sparklineNumberDigitGroupSep,\n numberDecimalMark: attributes.sparklineNumberDecimalMark,\n numberDigitGroupCount: attributes.sparklineNumberDigitGroupCount,\n animatedZooms: attributes.sparklineAnimatedZooms,\n }\n sparklineOptions.current = sparklineInitOptions\n\n if (!chartElement.current || $chartElement) return\n\n set$chartElement(() => window.$(chartElement.current))\n }, [\n $chartElement,\n attributes,\n chartContainerElement,\n chartData.result,\n chartMetadata,\n orderedColors,\n unitsCurrent,\n widthRatio,\n ])\n\n const { sparklineOnHover } = attributes\n useEffect(() => {\n if (!$chartElement || !sparklineOnHover) return\n\n const onLeave = () => sparklineOnHover(null)\n const onChange = ({ sparklines: [sparkline] }: any) => {\n const { x, y } = sparkline.getCurrentRegionFields()\n sparklineOnHover({ x, y })\n }\n\n // @ts-ignore\n $chartElement.bind(\"sparklineRegionChange\", onChange).bind(\"mouseleave\", onLeave)\n return () => {\n // @ts-ignore\n $chartElement.unbind(\"sparklineRegionChange\", onChange).unbind(\"mouseleave\", onLeave)\n }\n }, [$chartElement, sparklineOnHover])\n\n // update chart\n useEffect(updateSparklineValues, [$chartElement, chartData.result])\n\n const style = paddingLeftPercentage\n ? {\n textAlign: \"initial\" as \"initial\", // :) typescript\n paddingLeft: paddingLeftPercentage,\n }\n : undefined\n\n return (\n <div ref={chartElement} id={chartElementId} className={chartElementClassName} style={style} />\n )\n}\n","import * as d3 from \"d3\"\n\nwindow.d3 = d3\n","let fetchPromise: Promise<string>\n\nconst GOOGLE_JS_API_SRC = \"https://www.google.com/jsapi\"\n\nexport const loadGoogleVisualizationApi = () => {\n if (fetchPromise) {\n return fetchPromise\n }\n fetchPromise = new Promise((resolve, reject) => {\n setTimeout(() => {\n const script = document.createElement(\"script\")\n script.type = \"text/javascript\"\n script.async = true\n script.src = GOOGLE_JS_API_SRC\n\n script.onerror = () => {\n reject(Error(\"error loading google.js api\"))\n }\n script.onload = () => {\n resolve(\"ok\")\n }\n\n const firstScript = document.getElementsByTagName(\"script\")[0] as HTMLScriptElement\n (firstScript.parentNode as Node).insertBefore(script, firstScript)\n }, 1000)\n }).then(() => new Promise((resolve) => {\n window.google.load(\"visualization\", \"1.1\", {\n packages: [\"corechart\", \"controls\"],\n callback: resolve,\n })\n }))\n return fetchPromise\n}\n","// @ts-ignore \"declare module\" doesn't work properly when importing dashboard in cloud\nimport \"jquery-sparkline\"\nimport React, {\n useRef, useEffect, useState,\n} from \"react\"\n\nimport \"../../utils/d3-loader\"\n// @ts-ignore \"declare module\" doesn't work properly when importing dashboard in cloud\nimport d3pie from \"vendor/d3pie-0.2.1-netdata-3\"\n\nimport { Attributes } from \"domains/chart/utils/transformDataAttributes\"\nimport {\n ChartMetadata,\n D3pieChartData,\n} from \"domains/chart/chart-types\"\nimport { seconds4human } from \"domains/chart/utils/seconds4human\"\nimport { useDateTime } from \"utils/date-time\"\nimport { tail } from \"ramda\"\n\nconst emptyContent = {\n label: \"no data\",\n value: 100,\n color: \"#666666\",\n}\n\ntype GetDateRange = (arg: {\n chartData: D3pieChartData,\n index: number,\n localeDateString: (date: number | Date) => string,\n localeTimeString: (time: number | Date) => string,\n}) => string\nconst getDateRange: GetDateRange = ({\n chartData, index,\n localeDateString, localeTimeString,\n}) => {\n const dt = Math.round((chartData.before - chartData.after + 1) / chartData.points)\n const dtString = seconds4human(dt)\n\n const before = chartData.result.data[index].time\n const after = before - (dt * 1000)\n\n const d1 = localeDateString(after)\n const t1 = localeTimeString(after)\n const d2 = localeDateString(before)\n const t2 = localeTimeString(before)\n\n if (d1 === d2) {\n return `${d1} ${t1} to ${t2}, ${dtString}`\n }\n\n return `${d1} ${t1} to ${d2} ${t2}, ${dtString}`\n}\n\ninterface Props {\n attributes: Attributes\n chartContainerElement: HTMLElement\n chartData: D3pieChartData\n chartMetadata: ChartMetadata\n chartElementClassName: string\n chartElementId: string\n dimensionsVisibility: boolean[]\n hoveredRow: number\n hoveredX: number | null\n isRemotelyControlled: boolean\n legendFormatValue: ((v: number | string | null) => number | string)\n orderedColors: string[]\n setMinMax: (minMax: [number, number]) => void\n showUndefined: boolean\n unitsCurrent: string\n}\nexport const D3pieChart = ({\n attributes,\n chartContainerElement,\n chartData,\n chartMetadata,\n chartElementClassName,\n chartElementId,\n hoveredRow,\n hoveredX,\n legendFormatValue,\n orderedColors,\n setMinMax,\n unitsCurrent,\n}: Props) => {\n const chartElement = useRef<HTMLDivElement>(null)\n\n const legendFormatValueRef = useRef(legendFormatValue)\n legendFormatValueRef.current = legendFormatValue\n\n const [d3pieInstance, setD3pieInstance] = useState()\n const d3pieOptions = useRef<{[key: string]: any}>()\n\n const { localeDateString, localeTimeString } = useDateTime()\n\n // create chart\n useEffect(() => {\n if (chartElement.current && !d3pieInstance) {\n // d3pieSetContent\n // todo this should be set in chart.tsx, when creating hook\n setMinMax([chartData.min, chartData.max])\n // index is ROW! it's !== 0 only when selection is made\n const index = 0\n const content = tail(chartData.result.labels).map((label, i) => {\n const value = chartData.result.data[index][label]\n const color = orderedColors[i]\n return {\n label,\n value,\n color,\n }\n }).filter((x) => x.value !== null && x.value > 0)\n const safeContent = content.length > 0 ? content : emptyContent\n\n const defaultTitle = attributes.title || chartMetadata.title\n const dateRange = getDateRange({\n chartData,\n index: 0,\n localeDateString,\n localeTimeString,\n })\n const {\n d3pieTitle = defaultTitle,\n d3pieSubtitle = unitsCurrent,\n d3pieFooter = dateRange,\n d3pieTitleColor = window.NETDATA.themes.current.d3pie.title,\n d3pieTitleFontsize = 12,\n d3pieTitleFontweight = \"bold\",\n d3pieTitleFont = \"arial\",\n d3PieSubtitleColor = window.NETDATA.themes.current.d3pie.subtitle,\n d3PieSubtitleFontsize = 10,\n d3PieSubtitleFontweight = \"normal\",\n d3PieSubtitleFont = \"arial\",\n d3PieFooterColor = window.NETDATA.themes.current.d3pie.footer,\n d3PieFooterFontsize = 9,\n d3PieFooterFontweight = \"bold\",\n d3PieFooterFont = \"arial\",\n d3PieFooterLocation = \"bottom-center\",\n\n d3PiePieinnerradius = \"45%\",\n d3PiePieouterradius = \"80%\",\n d3PieSortorder = \"value-desc\",\n d3PieSmallsegmentgroupingEnabled = false,\n d3PieSmallsegmentgroupingValue = 1,\n d3PieSmallsegmentgroupingValuetype = \"percentage\",\n d3PieSmallsegmentgroupingLabel = \"other\",\n d3PieSmallsegmentgroupingColor = window.NETDATA.themes.current.d3pie.other,\n\n d3PieLabelsOuterFormat = \"label-value1\",\n d3PieLabelsOuterHidewhenlessthanpercentage = null,\n d3PieLabelsOuterPiedistance = 15,\n d3PieLabelsInnerFormat = \"percentage\",\n d3PieLabelsInnerHidewhenlessthanpercentage = 2,\n\n d3PieLabelsMainLabelColor = window.NETDATA.themes.current.d3pie.mainlabel,\n d3PieLabelsMainLabelFont = \"arial\",\n d3PieLabelsMainLabelFontsize = 10,\n d3PieLabelsMainLabelFontweight = \"normal\",\n\n d3PieLabelsPercentageColor = window.NETDATA.themes.current.d3pie.percentage,\n d3PieLabelsPercentageFont = \"arial\",\n d3PieLabelsPercentageFontsize = 10,\n d3PieLabelsPercentageFontweight = \"bold\",\n\n d3PieLabelsValueColor = window.NETDATA.themes.current.d3pie.value,\n d3PieLabelsValueFont = \"arial\",\n d3PieLabelsValueFontsize = 10,\n d3PieLabelsValueFontweight = \"bold\",\n\n d3PieLabelsLinesEnabled = true,\n d3PieLabelsLinesStyle = \"curved\",\n d3PieLabelsLinesColor = \"segment\", // \"segment\" or a hex color\n\n d3PieLabelsTruncationEnabled = false,\n d3PieLabelsTruncationTruncatelength = 30,\n\n d3PieMiscColorsSegmentstroke = window.NETDATA.themes.current.d3pie.segment_stroke,\n d3PieMiscGradientEnabled = false,\n d3PieMiscColorsPercentage = 95,\n d3PieMiscGradientColor = window.NETDATA.themes.current.d3pie.gradient_color,\n\n d3PieCssprefix = null,\n } = attributes\n\n const { width, height } = chartContainerElement.getBoundingClientRect()\n\n const initialD3pieOptions = {\n header: {\n title: {\n text: d3pieTitle,\n color: d3pieTitleColor,\n fontSize: d3pieTitleFontsize,\n fontWeight: d3pieTitleFontweight,\n font: d3pieTitleFont,\n },\n subtitle: {\n text: d3pieSubtitle,\n color: d3PieSubtitleColor,\n fontSize: d3PieSubtitleFontsize,\n fontWeight: d3PieSubtitleFontweight,\n font: d3PieSubtitleFont,\n },\n titleSubtitlePadding: 1,\n },\n footer: {\n text: d3pieFooter,\n color: d3PieFooterColor,\n fontSize: d3PieFooterFontsize,\n fontWeight: d3PieFooterFontweight,\n font: d3PieFooterFont,\n location: d3PieFooterLocation,\n },\n size: {\n canvasHeight: Math.floor(height),\n canvasWidth: Math.floor(width),\n pieInnerRadius: d3PiePieinnerradius,\n pieOuterRadius: d3PiePieouterradius,\n },\n data: {\n // none, random, value-asc, value-desc, label-asc, label-desc\n sortOrder: d3PieSortorder,\n smallSegmentGrouping: {\n enabled: d3PieSmallsegmentgroupingEnabled,\n value: d3PieSmallsegmentgroupingValue,\n // percentage, value\n valueType: d3PieSmallsegmentgroupingValuetype,\n label: d3PieSmallsegmentgroupingLabel,\n color: d3PieSmallsegmentgroupingColor,\n },\n\n // REQUIRED! This is where you enter your pie data; it needs to be an array of objects\n // of this form: { label: \"label\", value: 1.5, color: \"#000000\" } - color is optional\n content: safeContent,\n },\n\n\n labels: {\n outer: {\n // label, value, percentage, label-value1, label-value2, label-percentage1,\n // label-percentage2\n format: d3PieLabelsOuterFormat,\n hideWhenLessThanPercentage: d3PieLabelsOuterHidewhenlessthanpercentage,\n pieDistance: d3PieLabelsOuterPiedistance,\n },\n inner: {\n // label, value, percentage, label-value1, label-value2, label-percentage1,\n // label-percentage2\n format: d3PieLabelsInnerFormat,\n hideWhenLessThanPercentage: d3PieLabelsInnerHidewhenlessthanpercentage,\n },\n mainLabel: {\n color: d3PieLabelsMainLabelColor, // or 'segment' for dynamic color\n font: d3PieLabelsMainLabelFont,\n fontSize: d3PieLabelsMainLabelFontsize,\n fontWeight: d3PieLabelsMainLabelFontweight,\n },\n percentage: {\n color: d3PieLabelsPercentageColor,\n font: d3PieLabelsPercentageFont,\n fontSize: d3PieLabelsPercentageFontsize,\n fontWeight: d3PieLabelsPercentageFontweight,\n decimalPlaces: 0,\n },\n value: {\n color: d3PieLabelsValueColor,\n font: d3PieLabelsValueFont,\n fontSize: d3PieLabelsValueFontsize,\n fontWeight: d3PieLabelsValueFontweight,\n },\n lines: {\n enabled: d3PieLabelsLinesEnabled,\n style: d3PieLabelsLinesStyle,\n color: d3PieLabelsLinesColor,\n },\n truncation: {\n enabled: d3PieLabelsTruncationEnabled,\n truncateLength: d3PieLabelsTruncationTruncatelength,\n },\n formatter(context: any) {\n if (context.part === \"value\") {\n return legendFormatValueRef.current(context.value)\n }\n if (context.part === \"percentage\") {\n return `${context.label}%`\n }\n\n return context.label\n },\n },\n effects: {\n load: {\n effect: \"none\", // none / default\n speed: 0, // commented in the d3pie code to speed it up\n },\n pullOutSegmentOnClick: {\n effect: \"bounce\", // none / linear / bounce / elastic / back\n speed: 400,\n size: 5,\n },\n highlightSegmentOnMouseover: true,\n highlightLuminosity: -0.2,\n },\n tooltips: {\n enabled: false,\n type: \"placeholder\", // caption|placeholder\n string: \"\",\n placeholderParser: null, // function\n styles: {\n fadeInSpeed: 250,\n backgroundColor: window.NETDATA.themes.current.d3pie.tooltip_bg,\n backgroundOpacity: 0.5,\n color: window.NETDATA.themes.current.d3pie.tooltip_fg,\n borderRadius: 2,\n font: \"arial\",\n fontSize: 12,\n padding: 4,\n },\n },\n misc: {\n colors: {\n background: \"transparent\", // transparent or color #\n // segments: state.chartColors(),\n segmentStroke: d3PieMiscColorsSegmentstroke,\n },\n gradient: {\n enabled: d3PieMiscGradientEnabled,\n percentage: d3PieMiscColorsPercentage,\n color: d3PieMiscGradientColor,\n },\n canvasPadding: {\n top: 5,\n right: 5,\n bottom: 5,\n left: 5,\n },\n pieCenterOffset: {\n x: 0,\n y: 0,\n },\n cssPrefix: d3PieCssprefix,\n },\n callbacks: {\n onload: null,\n onMouseoverSegment: null,\n onMouseoutSegment: null,\n onClickSegment: null,\n },\n }\n // eslint-disable-next-line new-cap\n const newD3pieInstance = new d3pie(chartElement.current, initialD3pieOptions)\n d3pieOptions.current = initialD3pieOptions\n setD3pieInstance(() => newD3pieInstance)\n }\n }, [attributes, chartContainerElement, chartData, chartMetadata, d3pieInstance, legendFormatValue,\n localeDateString, localeTimeString, orderedColors, setMinMax, unitsCurrent])\n\n // update chart\n useEffect(() => {\n if (d3pieInstance && d3pieOptions.current) {\n const dateRange = getDateRange({\n chartData,\n index: 0,\n localeDateString,\n localeTimeString,\n })\n const {\n d3pieSubtitle = unitsCurrent,\n d3pieFooter = dateRange,\n } = attributes\n\n\n const isHoveredButNoData = !!hoveredX && (hoveredRow === -1)\n const slot = chartData.result.data.length - hoveredRow - 1\n\n const index = (slot < 0 || slot >= chartData.result.data.length)\n ? 0\n : slot\n\n const content = tail(chartData.result.labels).map((label, i) => {\n const value = chartData.result.data[index][label]\n const color = orderedColors[i]\n return {\n label,\n value,\n color,\n }\n }).filter((x) => x.value !== null && x.value > 0)\n const safeContent = (content.length > 0 && !isHoveredButNoData)\n ? content\n : [emptyContent]\n\n d3pieInstance.options.header.subtitle.text = d3pieSubtitle\n d3pieInstance.options.footer.text = d3pieFooter\n\n d3pieInstance.options.data.content = safeContent\n d3pieInstance.destroy()\n d3pieInstance.recreate()\n }\n }, [attributes, chartData, d3pieInstance, hoveredRow, hoveredX, localeDateString,\n localeTimeString, orderedColors, unitsCurrent])\n\n return (\n <div ref={chartElement} id={chartElementId} className={chartElementClassName} />\n )\n}\n","// @ts-ignore \"declare module\" doesn't work properly when importing dashboard in cloud\nimport \"peity\"\nimport React, {\n useRef, useState, useLayoutEffect,\n} from \"react\"\n\nimport { Attributes } from \"domains/chart/utils/transformDataAttributes\"\nimport { ChartMetadata, EasyPieChartData } from \"domains/chart/chart-types\"\nimport { colorLuminance } from \"domains/chart/utils/color-luminance\"\n\ninterface Props {\n attributes: Attributes\n chartContainerElement: HTMLElement\n chartData: EasyPieChartData\n chartMetadata: ChartMetadata\n chartElementClassName: string\n chartElementId: string\n orderedColors: string[]\n}\nexport const PeityChart = ({\n attributes,\n chartContainerElement,\n chartData,\n chartMetadata,\n chartElementClassName,\n chartElementId,\n orderedColors,\n}: Props) => {\n const chartElement = useRef<HTMLDivElement>(null)\n\n // update width, height automatically each time\n const [$chartElement, set$chartElement] = useState()\n const peityOptions = useRef<{\n stroke: string,\n fill: string,\n strokeWidth: number,\n width: number,\n height: number,\n }>()\n\n\n // create chart\n useLayoutEffect(() => {\n if (chartElement.current && !$chartElement) {\n const $element = window.$(chartElement.current)\n\n const { width, height } = chartContainerElement.getBoundingClientRect()\n\n const {\n peityStrokeWidth = 1,\n } = attributes\n const peityInitOptions = {\n stroke: window.NETDATA.themes.current.foreground,\n strokeWidth: peityStrokeWidth,\n width: Math.floor(width),\n height: Math.floor(height),\n fill: window.NETDATA.themes.current.foreground,\n }\n\n set$chartElement(() => $element)\n peityOptions.current = peityInitOptions\n }\n }, [attributes, $chartElement, chartContainerElement])\n\n // update chart\n useLayoutEffect(() => {\n if ($chartElement && peityOptions.current) {\n const getFillOverride = () => (\n chartMetadata.chart_type === \"line\"\n ? window.NETDATA.themes.current.background\n : colorLuminance(orderedColors[0], window.NETDATA.chartDefaults.fill_luminance)\n )\n const updatedOptions = {\n ...peityOptions.current,\n stroke: orderedColors[0],\n // optimizatino from old dashboard, perhaps could be transformed to useMemo()\n fill: (orderedColors[0] === peityOptions.current.stroke)\n ? peityOptions.current.fill\n : getFillOverride(),\n }\n $chartElement.peity(\"line\", updatedOptions)\n peityOptions.current = updatedOptions\n }\n }, [$chartElement, chartData, chartMetadata, orderedColors])\n\n return (\n <div\n ref={chartElement}\n id={chartElementId}\n className={chartElementClassName}\n >\n {chartData.result}\n </div>\n )\n}\n","import React, {\n useRef, useState, useLayoutEffect,\n} from \"react\"\n\nimport { Attributes } from \"domains/chart/utils/transformDataAttributes\"\nimport { ChartMetadata, EasyPieChartData } from \"domains/chart/chart-types\"\nimport { loadGoogleVisualizationApi } from \"domains/chart/utils/google-visualization-loader\"\n\ninterface Props {\n attributes: Attributes\n chartData: EasyPieChartData\n chartMetadata: ChartMetadata\n chartElementClassName: string\n chartElementId: string\n orderedColors: string[]\n unitsCurrent: string\n}\nexport const GoogleChart = ({\n attributes,\n chartData,\n chartMetadata,\n chartElementClassName,\n chartElementId,\n orderedColors,\n unitsCurrent,\n}: Props) => {\n const chartElement = useRef<HTMLDivElement>(null)\n const googleChartInstance = useRef<\n google.visualization.AreaChart |\n google.visualization.LineChart>()\n\n const [hasApiBeenLoaded, setHasApiBeenLoaded] = useState(false)\n loadGoogleVisualizationApi()\n .then(() => {\n setHasApiBeenLoaded(true)\n })\n\n const googleOptions = useRef<{[key: string]: unknown}>()\n\n // update chart\n useLayoutEffect(() => {\n if (googleChartInstance.current && googleOptions.current) {\n const dataTable = new window.google.visualization.DataTable(chartData.result)\n googleChartInstance.current.draw(dataTable, googleOptions.current)\n }\n }, [chartData])\n\n // create chart\n useLayoutEffect(() => {\n if (chartElement.current && !googleOptions.current && hasApiBeenLoaded) {\n const dataTable = new window.google.visualization.DataTable(chartData.result)\n\n const {\n title = chartMetadata.title,\n } = attributes\n const chartType = chartMetadata.chart_type\n const areaOpacity = new Map([\n [\"area\", window.NETDATA.options.current.color_fill_opacity_area],\n [\"stacked\", window.NETDATA.options.current.color_fill_opacity_stacked],\n ]).get(chartType) || 0.3\n const initialGoogleOptions = {\n colors: orderedColors,\n\n // do not set width, height - the chart resizes itself\n // width: state.chartWidth(),\n // height: state.chartHeight(),\n lineWidth: chartType === \"line\" ? 2 : 1,\n title,\n fontSize: 11,\n hAxis: {\n // title: \"Time of Day\",\n // format:'HH:mm:ss',\n viewWindowMode: \"maximized\",\n slantedText: false,\n format: \"HH:mm:ss\",\n textStyle: {\n fontSize: 9,\n },\n gridlines: {\n color: \"#EEE\",\n },\n },\n vAxis: {\n title: unitsCurrent,\n viewWindowMode: (chartType === \"area\" || chartType === \"stacked\")\n ? \"maximized\"\n : \"pretty\",\n minValue: chartType === \"stacked\" ? undefined : -0.1,\n maxValue: chartType === \"stacked\" ? undefined : 0.1,\n direction: 1,\n textStyle: {\n fontSize: 9,\n },\n gridlines: {\n color: \"#EEE\",\n },\n },\n chartArea: {\n width: \"65%\",\n height: \"80%\",\n },\n focusTarget: \"category\",\n annotation: {\n 1: {\n style: \"line\",\n },\n },\n pointsVisible: false,\n titlePosition: \"out\",\n titleTextStyle: {\n fontSize: 11,\n },\n tooltip: {\n isHtml: false,\n ignoreBounds: true,\n textStyle: {\n fontSize: 9,\n },\n },\n curveType: \"function\" as \"function\",\n areaOpacity,\n isStacked: chartType === \"stacked\",\n }\n\n const googleInstance = [\"area\", \"stacked\"].includes(chartMetadata.chart_type)\n ? new window.google.visualization.AreaChart(chartElement.current)\n : new window.google.visualization.LineChart(chartElement.current)\n\n googleInstance.draw(dataTable, initialGoogleOptions)\n\n googleOptions.current = initialGoogleOptions\n googleChartInstance.current = googleInstance\n }\n }, [attributes, chartData.result, chartMetadata, chartElement, hasApiBeenLoaded, orderedColors,\n unitsCurrent])\n\n\n return (\n <div\n ref={chartElement}\n id={chartElementId}\n className={chartElementClassName}\n />\n )\n}\n","import React from \"react\"\n\nimport { Attributes } from \"domains/chart/utils/transformDataAttributes\"\nimport { EasyPieChartData } from \"domains/chart/chart-types\"\n\ninterface Props {\n attributes: Attributes\n chartData: EasyPieChartData\n chartElementClassName: string\n chartElementId: string\n}\nexport const TextOnly = ({\n attributes,\n chartData,\n chartElementClassName,\n chartElementId,\n}: Props) => {\n const { textOnlyDecimalPlaces = 1, textOnlyPrefix = \"\", textOnlySuffix = \"\" } = attributes\n\n // Round based on number of decimal places to show\n const precision = 10 ** textOnlyDecimalPlaces\n const value = Math.round(chartData.result[0] * precision) / precision\n\n const textContent = chartData.result.length === 0 ? \"\" : textOnlyPrefix + value + textOnlySuffix\n\n return (\n <div id={chartElementId} className={chartElementClassName}>\n {textContent}\n </div>\n )\n}\n","/* eslint-disable no-param-reassign */\n// @ts-nocheck\n\nexport const cellSize = 11\nexport const padding = 1\nexport const cellBoxSize = cellSize - padding\n\nexport const aspectRatio = Math.round(16 / 9)\n\nexport const getRows = (data) => Math.sqrt(data.length / aspectRatio)\nexport const getColumns = (rows) => rows * aspectRatio\n\nexport const getXPosition = (columns, index) => Math.floor(index % columns) * cellSize\nexport const getYPosition = (columns, index) => Math.floor(index / columns) * cellSize\n","/* eslint-disable object-curly-newline */\n/* eslint-disable comma-dangle */\n/* eslint-disable implicit-arrow-linebreak */\n/* eslint-disable no-param-reassign */\n// @ts-nocheck\nimport { scaleLinear, extent } from \"d3\"\nimport { cellSize, cellBoxSize, getRows, getColumns, getXPosition, getYPosition } from \"./utilities\"\nimport registerEvents from \"./events\"\n\nexport const getWidth = (data) => {\n const rows = getRows(data)\n const columns = getColumns(rows)\n return Math.ceil(columns) * cellSize\n}\n\nconst getCanvasAttributes = (data) => {\n const rows = getRows(data)\n const columns = getColumns(rows)\n const width = Math.ceil(columns) * cellSize\n const height = Math.ceil(rows) * cellSize + cellSize\n return { width, height, columns: Math.ceil(columns) }\n}\n\nconst makeGetColor = (values) =>\n scaleLinear()\n .domain(extent(values, (value) => value))\n .range([\"rgba(198, 227, 246, 0.9)\", \"rgba(14, 154, 255, 0.9)\"])\n\nexport default (el, { onMouseenter, onMouseout }) => {\n const canvas = el.getContext(\"2d\")\n\n let activeBox = -1\n let deactivateBox = () => {}\n let activateBox = {}\n let clearEvents = () => {}\n\n const clear = () => {\n deactivateBox()\n clearEvents()\n canvas.clearRect(0, 0, el.width, el.height)\n canvas.beginPath()\n }\n\n const update = ({ data }) => {\n const { width, height, columns } = getCanvasAttributes(data)\n el.width = width\n el.height = height\n clear()\n clearEvents()\n const getColor = makeGetColor(data)\n\n const drawBox = (value, index) => {\n canvas.fillStyle = getColor(value)\n canvas.fillRect(\n getXPosition(columns, index),\n getYPosition(columns, index),\n cellBoxSize,\n cellBoxSize\n )\n }\n\n data.forEach(drawBox)\n\n clearEvents = registerEvents(el, columns, data.length, { onMouseenter, onMouseout })\n\n deactivateBox = () => {\n if (activeBox !== -1) drawBox(data[activeBox], activeBox)\n }\n\n activateBox = (index) => {\n deactivateBox()\n activeBox = index\n\n const offsetX = getXPosition(columns, index)\n const offsetY = getYPosition(columns, index)\n\n canvas.lineWidth = 1\n canvas.strokeStyle = \"#fff\"\n canvas.strokeRect(offsetX + 1, offsetY + 1, cellBoxSize - 2, cellBoxSize - 2)\n }\n }\n\n return {\n clear,\n update,\n activateBox: (index) => activateBox(index),\n deactivateBox: () => deactivateBox(),\n }\n}\n","/* eslint-disable object-curly-newline */\n/* eslint-disable no-param-reassign */\n// @ts-nocheck\nimport { cellSize, cellBoxSize, getXPosition, getYPosition } from \"./utilities\"\n\nexport default (el, columns, total, { onMouseenter, onMouseout }) => {\n let hoveredIndex = -1\n\n const getEvent = (index) => {\n const rect = el.getBoundingClientRect()\n const offsetX = getXPosition(columns, index)\n const offsetY = getYPosition(columns, index)\n const left = rect.left + offsetX\n const top = rect.top + offsetY\n\n return {\n index,\n left,\n top,\n right: left + cellBoxSize,\n bottom: top + cellBoxSize,\n width: cellBoxSize,\n height: cellBoxSize,\n offsetX,\n offsetY,\n }\n }\n\n const mouseout = () => {\n onMouseout(getEvent(hoveredIndex))\n hoveredIndex = -1\n }\n\n const mousemove = (e) => {\n const { offsetX, offsetY } = e\n const x = Math.floor(offsetX / cellSize)\n const y = Math.floor(offsetY / cellSize)\n const nextHoveredIndex = y * columns + x\n\n if (nextHoveredIndex === hoveredIndex) return\n\n if (hoveredIndex !== -1) mouseout()\n\n if (nextHoveredIndex >= total) return\n\n onMouseenter(getEvent(nextHoveredIndex))\n hoveredIndex = nextHoveredIndex\n }\n\n el.addEventListener(\"mousemove\", mousemove)\n el.addEventListener(\"mouseout\", mouseout)\n return () => {\n el.removeEventListener(\"mousemove\", mousemove)\n el.removeEventListener(\"mouseout\", mouseout)\n }\n}\n","/* eslint-disable arrow-body-style */\n// @ts-nocheck\n\nexport default (el) => {\n return el.getBoundingClientRect().top / window.innerHeight > 0.5 ? \"top\" : \"bottom\"\n}\n","/* eslint-disable operator-linebreak */\n/* eslint-disable implicit-arrow-linebreak */\n/* eslint-disable object-curly-newline */\n/* eslint-disable react-hooks/exhaustive-deps */\n/* eslint-disable react/jsx-fragments */\n// @ts-nocheck\nimport React, { useRef, useLayoutEffect, Fragment, useState, useCallback } from \"react\"\nimport { Drop } from \"@netdata/netdata-ui\"\nimport drawBoxes from \"./drawBoxes\"\nimport getAlign from \"./getAlign\"\n\ninterface GroupboxData {\n data: number[]\n labels: string[]\n}\n\ninterface GroupBoxProps {\n data: GroupboxData[]\n}\n\nconst aligns = {\n top: { bottom: \"top\" },\n bottom: { top: \"bottom\" },\n}\n\nconst GroupBox = ({ data, renderTooltip }: GroupBoxProps) => {\n const dataRef = useRef()\n const canvasRef = useRef()\n const boxesRef = useRef()\n\n const [hover, setHover] = useState(null)\n const dropHoverRef = useRef(false)\n const boxHoverRef = useRef(-1)\n const timeoutId = useRef()\n\n const close = () => {\n boxesRef.current.deactivateBox()\n setHover(null)\n dropHoverRef.current = false\n boxHoverRef.current = -1\n }\n\n const closeDrop = () =>\n requestAnimationFrame(() => {\n setHover((currentHover) => {\n if (\n !dropHoverRef.current &&\n (boxHoverRef.current === -1 || boxHoverRef.current !== currentHover?.index)\n ) {\n close()\n }\n return currentHover\n })\n })\n\n useLayoutEffect(() => {\n boxesRef.current = drawBoxes(canvasRef.current, {\n onMouseenter: ({ index, ...rect }) => {\n boxHoverRef.current = index\n boxesRef.current.activateBox(index)\n timeoutId.current = setTimeout(() => {\n setHover({\n target: { getBoundingClientRect: () => rect },\n index,\n rect,\n })\n }, 600)\n },\n onMouseout: () => {\n boxHoverRef.current = -1\n clearTimeout(timeoutId.current)\n closeDrop()\n },\n })\n return () => boxesRef.current.clear()\n }, [])\n\n useLayoutEffect(() => {\n if (\n hover &&\n dataRef.current &&\n dataRef.current.labels[hover.index] !== data.labels[hover.index]\n ) {\n close()\n }\n dataRef.current = data\n boxesRef.current.update(data)\n }, [data])\n\n const onMouseEnter = useCallback(() => {\n dropHoverRef.current = true\n }, [])\n\n const onMouseLeave = useCallback(() => {\n dropHoverRef.current = false\n closeDrop()\n }, [])\n\n const align = hover && getAlign(hover.target)\n\n return (\n <Fragment>\n <canvas data-testid=\"groupBox\" ref={canvasRef} />\n {hover && renderTooltip && (\n <Drop\n align={aligns[align]}\n target={hover.target}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n {renderTooltip(hover.index, align)}\n </Drop>\n )}\n </Fragment>\n )\n}\n\nexport default GroupBox\n","/* eslint-disable operator-linebreak */\n/* eslint-disable object-curly-newline */\n/* eslint-disable arrow-body-style */\n/* eslint-disable react/jsx-props-no-spreading */\n/* eslint-disable react/jsx-one-expression-per-line */\n// @ts-nocheck\nimport React, { useRef, useMemo } from \"react\"\nimport styled from \"styled-components\"\nimport { Flex, TextMicro, Popover } from \"@netdata/netdata-ui\"\nimport GroupBox from \"./groupBox\"\nimport { getWidth } from \"./drawBoxes\"\nimport getAlign from \"./getAlign\"\n\ninterface GroupBoxWrapperProps {\n data: any\n title: string\n}\n\nconst Title = styled.span`\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow-x: hidden;\n`\n\nconst Label = styled(Flex).attrs({\n as: TextMicro,\n gap: 1,\n})`\n cursor: default;\n &:hover {\n font-weight: bold;\n }\n`\n\nconst GroupBoxWrapper = ({\n data,\n label,\n groupIndex,\n renderGroupPopover,\n renderBoxPopover,\n}: GroupBoxWrapperProps) => {\n const ref = useRef()\n const align = ref.current && getAlign(ref.current)\n\n const style = useMemo(() => ({ maxWidth: `${getWidth(data.data)}px` }), [data])\n\n const boxPopover =\n renderBoxPopover &&\n ((index, boxAlign) => renderBoxPopover({ group: label, groupIndex, align: boxAlign, index }))\n\n const groupPopover =\n renderGroupPopover && (() => renderGroupPopover({ group: label, groupIndex, align }))\n\n return (\n <Flex data-testid=\"groupBoxWrapper\" column alignItems=\"start\" gap={1} margin={[0, 4, 0, 0]}>\n <Popover content={groupPopover} align={align} plain>\n {({ isOpen, ref: popoverRef, ...rest }) => (\n <Label\n data-testid=\"groupBoxWrapper-title\"\n ref={(el) => {\n ref.current = el\n popoverRef(el)\n }}\n strong={isOpen}\n style={style}\n {...rest}\n >\n <Title>{label}</Title>\n {data.data.length > 3 && <span>({data.data.length})</span>}\n </Label>\n )}\n </Popover>\n <GroupBox data={data} renderTooltip={boxPopover} />\n </Flex>\n )\n}\n\nconst GroupBoxes = ({ data, labels, renderBoxPopover, renderGroupPopover }: any) => (\n <Flex data-testid=\"groupBoxes\" flexWrap overflow={{ vertical: \"auto\" }} flex>\n {labels.map((label, index) => {\n return data[index].data.length ? (\n <GroupBoxWrapper\n key={label}\n label={label}\n groupIndex={index}\n data={data[index]}\n renderGroupPopover={renderGroupPopover}\n renderBoxPopover={renderBoxPopover}\n />\n ) : null\n })}\n </Flex>\n)\n\nexport default GroupBoxes\n","import React from \"react\"\nimport styled from \"styled-components\"\nimport { Flex, TextNano } from \"@netdata/netdata-ui\"\n\ninterface LegendProps {\n children?: React.ReactNode\n}\n\nconst LinearColorScaleBar = styled(Flex).attrs({ width: \"120px\", height: \"12px\", round: true })`\n background: linear-gradient(to right, #c6e3f6, #0e9aff);\n`\n\nconst Legend = ({ children }: LegendProps) => (\n <Flex data-testid=\"groupBox-legend\" gap={4} alignItems=\"center\">\n <TextNano strong>{children}</TextNano>\n <Flex gap={2} alignItems=\"center\">\n <TextNano>0%</TextNano>\n <LinearColorScaleBar />\n <TextNano>100%</TextNano>\n </Flex>\n {/* <Flex gap={2} alignItems=\"center\">\n <TextNano strong>Alarms</TextNano>\n <Flex width=\"12px\" height=\"12px\" background=\"error\" round />\n </Flex>\n <Flex gap={2} alignItems=\"center\">\n <TextNano strong>Warnings</TextNano>\n <Flex width=\"12px\" height=\"12px\" background=\"warning\" round />\n </Flex> */}\n </Flex>\n)\n\nexport default Legend\n","// @ts-nocheck\n\nconst labels = {\n k8s_cluster_id: { icon: \"cluster\", title: \"Cluster Id\" },\n k8s_node_name: { icon: \"nodes_hollow\", title: \"Node\" },\n k8s_namespace: { icon: \"cluster_spaces\", title: \"Namespace\" },\n k8s_controller_kind: { icon: \"controller_kind\", title: \"Controller Kind\" },\n k8s_controller_name: { icon: \"controller_name\", title: \"Controller Name\" },\n k8s_pod_name: { icon: \"pod\", title: \"Pod Name\" },\n k8s_container_name: { icon: \"container\", title: \"Container\" },\n}\n\nexport const labelIds = Object.keys(labels)\n\nexport default (id) => {\n if (id in labels) return labels[id]\n // k8s_custom_label -> Custom Label\n const title = id.replace(/_./g, (word) => ` ${word[1].toUpperCase()}`).replace(/^k8s /, \"\")\n return { title, icon: \"node\" }\n}\n","/* eslint-disable react/jsx-props-no-spreading */\n/* eslint-disable react/prop-types */\n// @ts-nocheck\nimport React from \"react\"\nimport { Flex } from \"@netdata/netdata-ui\"\n\nconst Separator = () => <Flex height=\"1px\" width=\"100%\" background={[\"gray\", \"shuttleGray\"]} />\n\nexport default Separator\n","/* eslint-disable react/jsx-props-no-spreading */\n/* eslint-disable react/prop-types */\n// @ts-nocheck\nimport React from \"react\"\nimport { H5 } from \"@netdata/netdata-ui\"\n\nconst Header = (props) => (\n <H5 color={[\"white\", \"pure\"]} wordBreak=\"break-all\" data-testid=\"k8sPopover-header\" {...props} />\n)\n\nexport default Header\n","/* eslint-disable indent */\n/* eslint-disable implicit-arrow-linebreak */\n/* eslint-disable react/jsx-props-no-spreading */\n/* eslint-disable react/prop-types */\n// @ts-nocheck\nimport React from \"react\"\nimport { Flex, Button, getColor } from \"@netdata/netdata-ui\"\nimport styled from \"styled-components\"\n\nexport const TabButton = styled(Button).attrs(({ active }) => ({\n flavour: \"borderless\",\n neutral: true,\n themeType: \"dark\",\n className: \"btn\",\n disabled: active,\n \"data-testid\": \"k8sPopoverChart-tab\",\n}))`\n &&& {\n height: initial;\n width: initial;\n padding: 2px 20px;\n ${({ active, theme }) =>\n active && `border-bottom: 3px solid ${getColor([\"white\", \"almost\"])({ theme })};`}\n color: ${({ active, theme }) =>\n getColor(active ? [\"white\", \"almost\"] : [\"gray\", \"nepal\"])({ theme })}\n }\n`\n\nconst Tabs = ({ value, onChange, ...rest }) => (\n <Flex data-testid=\"k8sPopoverChart-tabs\" {...rest}>\n <TabButton label=\"Context\" active={value === \"context\"} onClick={() => onChange(\"context\")} />\n <TabButton label=\"Metrics\" active={value === \"metrics\"} onClick={() => onChange(\"metrics\")} />\n </Flex>\n)\n\nexport default Tabs\n","/* eslint-disable object-curly-newline */\n/* eslint-disable react/prop-types */\n// @ts-nocheck\nimport React from \"react\"\nimport { Flex, Button, H6, makeFlex } from \"@netdata/netdata-ui\"\nimport styled from \"styled-components\"\n\nconst ExpandButton = styled(makeFlex(Button)).attrs({\n icon: \"chevron_right_s\",\n label: \"More\",\n flavour: \"borderless\",\n neutral: true,\n themeType: \"dark\",\n className: \"btn\",\n alignItems: \"baseline\",\n gap: 1,\n direction: \"rowReverse\",\n})`\n &&& {\n padding: 0;\n margin: 0;\n font-weight: normal;\n height: initial;\n width: initial;\n\n svg {\n height: 6px;\n width: 6px;\n position: initial;\n }\n }\n`\n\nconst Section = ({ title, onExpand, children, noBorder }) => (\n <Flex\n gap={3}\n padding={[0, 0, 3]}\n border={!noBorder && { side: \"bottom\", color: [\"gray\", \"shuttleGray\"] }}\n column\n data-testid=\"k8sPopoverSection\"\n >\n <Flex justifyContent=\"between\" data-testid=\"k8sPopoverSection-header\">\n <H6 color={[\"gray\", \"aluminium\"]} wordBreak=\"break-all\">\n {title}\n </H6>\n {onExpand && <ExpandButton onClick={onExpand} />}\n </Flex>\n <Flex gap={4} column data-testid=\"k8sPopoverSection-content\">\n {children}\n </Flex>\n </Flex>\n)\n\nexport default Section\n","import {\n LOCALSTORAGE_HEIGHT_KEY_PREFIX,\n LOCALSTORAGE_HEIGHT_KEY_PREFIX_OLD,\n} from \"domains/chart/components/resize-handler\"\n\nimport { LEGEND_BOTTOM_SINGLE_LINE_HEIGHT } from \"domains/chart/utils/legend-utils\"\nimport { Attributes } from \"./transformDataAttributes\"\nimport { ChartLibraryConfig } from \"./chartLibrariesSettings\"\n\ntype GetPortalNodeStyles = (\n attributes: Attributes,\n chartSettings: ChartLibraryConfig,\n shouldAddSpecialHeight: boolean,\n) => {\n height: string | undefined,\n width: string | undefined,\n minWidth: string | undefined\n}\n\nconst oldDefaultHeights = [\"180px\", \"90px\"]\n\nconst getHeightFromLocalStorage = (heightID: string, isLegendOnBottom: boolean) => {\n const persitedHeight = localStorage.getItem(`${LOCALSTORAGE_HEIGHT_KEY_PREFIX}${heightID}`)\n if (persitedHeight) {\n if (Number.isNaN(Number(persitedHeight))) {\n return null\n }\n return `${isLegendOnBottom\n ? Number(persitedHeight) + LEGEND_BOTTOM_SINGLE_LINE_HEIGHT\n : persitedHeight\n }px`\n }\n\n // We'll support the old key for few months, so that user's custom heights will be working,\n // but we'll save any changes only to the new key.\n const persistedHeightOld = localStorage.getItem(\n `${LOCALSTORAGE_HEIGHT_KEY_PREFIX_OLD}${heightID}`,\n )\n if (persistedHeightOld) {\n if (oldDefaultHeights.includes(persistedHeightOld)) {\n // If saved value looks like `oldDefaultHeights`, then it is most likely an automatic value\n // from old dashboard. Don't import it anymore. On next resize the height will be persisted\n // to the new key.\n return null\n }\n return persistedHeightOld\n }\n return null\n}\n\nexport const getPortalNodeStyles: GetPortalNodeStyles = (\n attributes,\n chartSettings,\n shouldAddSpecialHeight,\n) => {\n let width\n if (typeof attributes.width === \"string\") {\n // eslint-disable-next-line prefer-destructuring\n width = attributes.width\n } else if (typeof attributes.width === \"number\") {\n width = `${attributes.width.toString()}px`\n }\n let height\n if (chartSettings.aspectRatio === undefined) {\n if (typeof attributes.height === \"string\") {\n // eslint-disable-next-line prefer-destructuring\n height = attributes.height\n } else if (typeof attributes.height === \"number\") {\n height = `${attributes.height.toString()}px`\n }\n }\n const isLegendOnBottom = attributes.legendPosition === \"bottom\"\n\n const heightFromLocalStorage = attributes.heightId\n ? getHeightFromLocalStorage(attributes.heightId, isLegendOnBottom)\n : null\n\n if (heightFromLocalStorage) {\n // .replace() is for backwards compatibility - old dashboard was always doing\n // JSON.stringify when setting localStorage so many users have '\"180px\"' values set.\n // We can remove .replace() after some time\n height = heightFromLocalStorage.replace(/\"/g, \"\")\n }\n\n if (shouldAddSpecialHeight) {\n const heightOverriden = isLegendOnBottom\n ? window.innerHeight * 0.5\n : window.innerHeight * 0.4\n height = `${heightOverriden}px`\n }\n\n const chartDefaultsMinWidth = window.NETDATA.chartDefaults.min_width\n const minWidth = chartDefaultsMinWidth === null\n ? undefined\n : chartDefaultsMinWidth\n return {\n height,\n width,\n minWidth,\n }\n}\n","import {\n useEffect, useRef, useState, MutableRefObject,\n} from \"react\"\n\nconst globalIntersectionOptions = {\n root: null,\n rootMargin: \"0px\",\n threshold: undefined,\n}\n\ntype IntersectionCallback = (isVisible: boolean) => void\ntype Listener = {\n element: HTMLElement,\n callback: IntersectionCallback,\n}\nconst createGlobalIntersectionObserver = () => {\n let listeners: Listener[] = []\n const globalHandler = (entries: IntersectionObserverEntry[]) => {\n entries.forEach(({ isIntersecting, target }) => {\n const callback = listeners.find(({ element }) => element === target)?.callback\n if (callback) {\n callback(isIntersecting)\n }\n })\n }\n const globalObserver = new IntersectionObserver(globalHandler, globalIntersectionOptions)\n\n return {\n subscribe: (element: HTMLElement, callback: IntersectionCallback) => {\n globalObserver.observe(element)\n listeners = listeners.concat({ element, callback })\n },\n unsubscribe: (elementToUnsubscribe: HTMLElement) => {\n listeners = listeners.filter(({ element }) => element !== elementToUnsubscribe)\n },\n }\n}\nconst globalIntersectionObserver = createGlobalIntersectionObserver()\n\n\n// this hook is created for 2 reasons:\n// 1) to use the same IntersectionObserver for all charts (contrary to use-intersection from\n// react-use, which creates new observer for every hook)\n// 2) to update the isVisible state only when necessary (contrary to what \"use-in-view\" hook from\n// https://github.com/thebuilder/react-intersection-observer does)\nexport const useCommonIntersection = (\n element: HTMLElement,\n clonedChildrenRef: MutableRefObject<HTMLElement | undefined>,\n) => {\n const [isVisible, setIsVisible] = useState(false)\n const isVisibleRef = useRef(isVisible)\n // the ref is just to prevent most updates on init - charts are not visible on first intersection\n // observer callback, but it still tries to set the state. UseState does not bail out when\n // state doesn't change\n\n useEffect(() => {\n if (typeof IntersectionObserver === \"function\") {\n globalIntersectionObserver.subscribe(\n element,\n (newIsVisible) => {\n if (isVisibleRef.current !== newIsVisible) {\n if (clonedChildrenRef.current) {\n // eslint-disable-next-line no-param-reassign\n clonedChildrenRef.current.style.visibility = newIsVisible ? \"visible\" : \"hidden\"\n }\n\n isVisibleRef.current = newIsVisible\n // we need to mirror it in `use-state` to cause react update\n setIsVisible(newIsVisible)\n }\n },\n )\n }\n return () => {\n globalIntersectionObserver.unsubscribe(element)\n }\n }, [clonedChildrenRef, element])\n\n return isVisible\n}\n","import React from \"react\"\n\nimport { Attributes } from \"domains/chart/utils/transformDataAttributes\"\n\ninterface Props {\n attributes: Attributes\n}\n\n// rendered on init (for example when chart is not visible)\n// and when it's rendering after being hidden previously\nexport const InvisibleSearchableText = ({\n attributes,\n}: Props) => (\n <span style={{ position: \"absolute\", opacity: 0, width: 0 }}>\n {attributes.id}\n </span>\n)\n","import React, {\n useEffect, useLayoutEffect, useState, useRef,\n} from \"react\"\nimport { useDebounce } from \"react-use\"\nimport { forEachObjIndexed } from \"ramda\"\n\nimport { useDispatch, useSelector } from \"store/redux-separate-context\"\nimport { isPrintMode } from \"domains/dashboard/utils/parse-url\"\nimport { selectDestroyOnHide, selectIsAsyncOnScroll, selectAlarm } from \"domains/global/selectors\"\nimport { getPortalNodeStyles } from \"domains/chart/utils/get-portal-node-styles\"\nimport { Attributes } from \"domains/chart/utils/transformDataAttributes\"\nimport { chartLibrariesSettings } from \"domains/chart/utils/chartLibrariesSettings\"\nimport { useCommonIntersection } from \"hooks/use-common-intersection\"\n\nimport { clearChartStateAction } from \"../actions\"\n\nimport { InvisibleSearchableText } from \"./invisible-searchable-text\"\n\nconst SCROLL_DEBOUNCE_ASYNC = 750\nconst SCROLL_DEBOUNCE_SYNC = 100\n\nconst cloneWithCanvas = (element: HTMLElement) => {\n const cloned = element.cloneNode(true) as HTMLElement\n const clonedCanvases = cloned.querySelectorAll(\"canvas\")\n\n element.querySelectorAll(\"canvas\")\n .forEach((oldCanvas, index) => {\n const newCanvas = clonedCanvases[index]\n const context = newCanvas.getContext(\"2d\")\n\n newCanvas.width = oldCanvas.width\n newCanvas.height = oldCanvas.height\n\n if (context) {\n context.drawImage(oldCanvas, 0, 0)\n }\n })\n return cloned\n}\n\nconst shouldCleanChartStateAlways = localStorage.getItem(\"wipe-chart-state\")\n\ninterface Props {\n attributes: Attributes\n chartUuid: string\n children: any\n portalNode: HTMLElement\n}\nexport const DisableOutOfView = ({\n attributes,\n chartUuid,\n children,\n portalNode,\n}: Props) => {\n /* when unmounting, clear redux state for this chart */\n const dispatch = useDispatch()\n useEffect(() => { // eslint-disable-line arrow-body-style\n return () => {\n dispatch(clearChartStateAction({ id: chartUuid }))\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n\n /* separate functionality - adding custom styles to portalNode */\n const chartSettings = chartLibrariesSettings[attributes.chartLibrary]\n const [hasPortalNodeBeenStyled, setHasPortalNodeBeenStyled] = useState<boolean>(false)\n const isShowingAlarmOnChart = useSelector(selectAlarm)?.chartId === attributes.id\n useLayoutEffect(() => {\n if (hasPortalNodeBeenStyled) {\n return\n }\n const shouldAddSpecialHeight = isShowingAlarmOnChart\n && attributes.chartLibrary === \"dygraph\"\n && chartSettings.hasLegend(attributes)\n const styles = getPortalNodeStyles(attributes, chartSettings, shouldAddSpecialHeight)\n forEachObjIndexed((value, styleName) => {\n if (value) {\n portalNode.style.setProperty(styleName, value)\n }\n }, styles)\n // eslint-disable-next-line no-param-reassign\n portalNode.className = chartSettings.containerClass(attributes)\n setHasPortalNodeBeenStyled(true)\n }, [attributes, chartSettings, hasPortalNodeBeenStyled, isShowingAlarmOnChart, portalNode,\n setHasPortalNodeBeenStyled ])\n /* end of \"adding custom styles to portalNode\" */\n\n\n const destroyOnHide = useSelector(selectDestroyOnHide)\n\n const clonedChildrenRef = useRef<HTMLElement>()\n const isVisibleIntersection = useCommonIntersection(portalNode, clonedChildrenRef)\n\n // todo hook to scroll (observe on visible items) instead of changes in intersectionRatio\n // because intersectinnRatio maxes out on 1.0 when element is fully visible\n const isAsyncOnScroll = useSelector(selectIsAsyncOnScroll)\n const debounceTime = isAsyncOnScroll ? SCROLL_DEBOUNCE_ASYNC : SCROLL_DEBOUNCE_SYNC\n\n // \"should hide because of debounced scroll handler\"\n const [shouldHideDebounced, setShouldHideDebounced] = useState(!isVisibleIntersection)\n useDebounce(\n () => {\n // start rendering, when intersectionRatio is not 0 and it hasn't changed for 1500 ms\n setShouldHideDebounced(!isVisibleIntersection)\n },\n debounceTime,\n [isVisibleIntersection],\n )\n const shouldHide = isVisibleIntersection ? shouldHideDebounced : true\n\n const previousIsVisibleIntersection = useRef(isVisibleIntersection)\n if (clonedChildrenRef.current\n && previousIsVisibleIntersection.current !== isVisibleIntersection\n ) {\n previousIsVisibleIntersection.current = isVisibleIntersection\n }\n\n useEffect(() => {\n if (!isPrintMode && shouldHide && shouldCleanChartStateAlways) {\n dispatch(clearChartStateAction({ id: chartUuid }))\n }\n }, [chartUuid, dispatch, shouldHide])\n\n\n if (isPrintMode) {\n // we should show everything in this case\n return children\n }\n\n if (shouldHide) {\n // todo perhaps loader should be added here to both scenarios\n if (destroyOnHide) {\n return (\n <InvisibleSearchableText attributes={attributes} />\n )\n }\n\n if (!clonedChildrenRef.current) {\n const newClonedChildren = Array.from(portalNode.children)\n .map((child) => cloneWithCanvas(child as HTMLElement))\n\n const clonedChildrenContainer = document.createElement(\"div\")\n clonedChildrenContainer.style.visibility = \"hidden\"\n\n newClonedChildren.forEach((child) => {\n clonedChildrenContainer.appendChild(child)\n })\n\n clonedChildrenRef.current = clonedChildrenContainer\n }\n\n return (\n <>\n <InvisibleSearchableText attributes={attributes} />\n <div\n ref={(nodeElement) => {\n if (nodeElement && clonedChildrenRef.current) {\n nodeElement.appendChild(clonedChildrenRef.current)\n }\n }}\n />\n </>\n )\n }\n\n if (!destroyOnHide && clonedChildrenRef.current) {\n clonedChildrenRef.current = undefined\n }\n\n return children\n}\n","import React from \"react\"\n\nimport { Attributes } from \"../../utils/transformDataAttributes\"\nimport { ChartMetadata } from \"../../chart-types\"\nimport { ChartWithLoader, RenderCustomElementForDygraph } from \"../chart-with-loader\"\nimport { DisableOutOfView } from \"../disable-out-of-view\"\nimport { DropdownMenu } from \"../chart-dropdown\"\n\nexport type Props = {\n attributes: Attributes\n // warning! this is not the same as chartId in old dashboard\n // here, the chartID must be unique across all agents\n chartUuid: string\n uuid?: string\n portalNode: HTMLElement\n chartMetadata?: ChartMetadata | undefined\n dropdownMenu?: DropdownMenu\n renderCustomElementForDygraph?: RenderCustomElementForDygraph\n onAttributesChange?: any\n}\n\nexport const ChartContainer = ({\n attributes,\n chartMetadata,\n chartUuid,\n dropdownMenu,\n portalNode,\n renderCustomElementForDygraph,\n onAttributesChange,\n uuid,\n}: Props) => (\n <DisableOutOfView attributes={attributes} portalNode={portalNode} chartUuid={chartUuid}>\n <ChartWithLoader\n attributes={attributes}\n chartUuid={chartUuid}\n renderCustomElementForDygraph={renderCustomElementForDygraph}\n onAttributesChange={onAttributesChange}\n dropdownMenu={dropdownMenu}\n externalChartMetadata={chartMetadata}\n portalNode={portalNode}\n uuid={uuid}\n />\n </DisableOutOfView>\n)\n","/* eslint-disable max-len */\nimport { ChartsMetadata } from \"domains/global/types\"\nimport { AnyStringKeyT } from \"types/common\"\nimport { ChartEnriched } from \"domains/chart/chart-types\"\n\nexport interface Submenus {\n [submenus: string]: {\n charts: ChartEnriched[]\n height: number\n info: string | null\n priority: number\n title: string | null\n }\n}\n\nexport interface CorrelationMetadata {\n scoredCount?: number\n totalCount?: number\n averageScore?: number\n}\n\nexport interface Menu {\n // eslint-disable-next-line camelcase\n menu_pattern: string\n priority: number\n submenus: Submenus\n title: string\n icon: string\n info: string\n height: number\n correlationsMetadata?: CorrelationMetadata\n}\n\nexport interface Menus {\n [menu: string]: Menu\n}\n\nexport const options = {\n menus: {} as Menus,\n submenu_names: {} as {[family: string]: string},\n data: null as (ChartsMetadata | null),\n hostname: \"netdata_server\", // will be overwritten by the netdata server\n version: \"unknown\",\n release_channel: \"unknown\",\n hosts: [],\n\n duration: 0, // the default duration of the charts\n update_every: 1,\n\n chartsPerRow: 0,\n // chartsMinWidth: 1450,\n chartsHeight: 180,\n}\n\n\n// netdata standard information\nexport const netdataDashboard = {\n sparklines_registry: {} as {[key: string]: { count: number }},\n os: \"unknown\",\n\n menu: {},\n submenu: {} as {\n [family: string]: {\n info?: string | ((os: string) => string)\n title?: string\n }\n },\n context: {} as {\n [id: string]: {\n valueRange: string // examples: \"[0, 100]\", \"[null, null]\"\n height: number\n decimalDigits: number\n }},\n\n // generate a sparkline\n // used in the documentation\n sparkline(\n prefix: string, chart: string, dimension: string, units: string = \"\", suffix: string,\n ) {\n if (options.data === null || typeof options.data.charts === \"undefined\") {\n return \"\"\n }\n\n if (typeof options.data.charts[chart] === \"undefined\") {\n return \"\"\n }\n\n if (typeof options.data.charts[chart].dimensions === \"undefined\") {\n return \"\"\n }\n\n if (typeof options.data.charts[chart].dimensions[dimension] === \"undefined\") {\n return \"\"\n }\n\n let key = `${chart}.${dimension}`\n\n if (typeof this.sparklines_registry[key] === \"undefined\") {\n this.sparklines_registry[key] = { count: 1 }\n } else {\n this.sparklines_registry[key].count += 1\n }\n\n key = `${key}.${this.sparklines_registry[key].count}`\n\n return `${prefix}<div class=\"netdata-container\" data-netdata=\"${chart}\" data-after=\"-120\"\n data-width=\"25%\" data-height=\"15px\" data-chart-library=\"dygraph\"\n data-dygraph-theme=\"sparkline\" data-dimensions=\"${dimension}\"\n data-show-value-of-${dimension}-at=\"${key}\"></div>\n (<span id=\"${key}\" style=\"display: inline-block; min-width: 50px; text-align: right;\">\n X</span>${units})${suffix}`\n },\n\n gaugeChart(\n title: string, width: string, dimensions: string = \"\", colors: string = \"\",\n ) {\n return `${\"<div class=\\\"netdata-container\\\" data-netdata=\\\"CHART_UNIQUE_ID\\\"\"\n + \" data-dimensions=\\\"\"}${dimensions}\"`\n + \" data-chart-library=\\\"gauge\\\"\"\n + \" data-gauge-adjust=\\\"width\\\"\"\n + ` data-title=\"${title}\"`\n + ` data-width=\"${width}\"`\n + \" data-before=\\\"0\\\"\"\n + \" data-after=\\\"-CHART_DURATION\\\"\"\n + \" data-points=\\\"CHART_DURATION\\\"\"\n + ` data-colors=\"${colors}\"`\n + \" role=\\\"application\\\"></div>\"\n },\n\n anyAttribute(obj: AnyStringKeyT, attr: string, key: string, def: unknown) {\n if (typeof (obj[key]) !== \"undefined\") {\n const x = obj[key][attr]\n\n if (typeof (x) === \"undefined\") {\n return def\n }\n\n if (typeof (x) === \"function\") {\n return x(netdataDashboard.os)\n }\n\n return x\n }\n\n return def\n },\n\n menuTitle(chart: ChartEnriched) {\n if (chart.sectionTitle) {\n return chart.sectionTitle\n }\n if (typeof chart.menu_pattern !== \"undefined\") {\n const type = chart.type || chart.id.split(\".\")[0]\n return (`${this.anyAttribute(this.menu, \"title\", chart.menu_pattern, chart.menu_pattern)\n .toString()\n } ${type.slice(-(type.length - chart.menu_pattern.length - 1)).toString()}`)\n .replace(/_/g, \" \")\n }\n\n return (this.anyAttribute(this.menu, \"title\", chart.menu, chart.menu)).toString()\n .replace(/_/g, \" \")\n },\n\n menuIcon(chart: ChartEnriched) {\n if (typeof chart.menu_pattern !== \"undefined\") {\n return this.anyAttribute(this.menu, \"icon\", chart.menu_pattern,\n \"<i class=\\\"fas fa-puzzle-piece\\\"></i>\").toString()\n }\n\n return this.anyAttribute(this.menu, \"icon\", chart.menu, \"<i class=\\\"fas fa-puzzle-piece\\\"></i>\")\n },\n\n menuInfo(chart: ChartEnriched) {\n if (typeof chart.menu_pattern !== \"undefined\") {\n return this.anyAttribute(this.menu, \"info\", chart.menu_pattern, null)\n }\n\n return this.anyAttribute(this.menu, \"info\", chart.menu, null)\n },\n\n menuHeight(chart: ChartEnriched) {\n if (typeof chart.menu_pattern !== \"undefined\") {\n return this.anyAttribute(this.menu, \"height\", chart.menu_pattern, 1.0)\n }\n\n return this.anyAttribute(this.menu, \"height\", chart.menu, 1.0)\n },\n\n submenuTitle(menu: string, submenu: string) {\n const key = `${menu}.${submenu}`\n // console.log(key);\n const title = this.anyAttribute(this.submenu, \"title\", key, submenu)\n .toString().replace(/_/g, \" \") as string\n if (title.length > 28) {\n const a = title.substring(0, 13)\n const b = title.substring(title.length - 12, title.length)\n return `${a}...${b}`\n }\n return title\n },\n\n submenuInfo(menu: string, submenu: string) {\n const key = `${menu}.${submenu}`\n return this.anyAttribute(this.submenu, \"info\", key, null) as (string | null)\n },\n\n submenuHeight(menu: string, submenu: string, relative: number) {\n const key = `${menu}.${submenu}`\n return this.anyAttribute(this.submenu, \"height\", key, 1.0) * relative\n },\n\n contextInfo(id: string) {\n const x = this.anyAttribute(this.context, \"info\", id, null)\n\n if (x !== null) {\n return `<div class=\"shorten dashboard-context-info\"\n role=\"document\">${x}</div>`\n }\n return \"\"\n },\n\n contextValueRange(id: string) {\n if (typeof this.context[id] !== \"undefined\"\n && typeof this.context[id].valueRange !== \"undefined\"\n ) {\n try {\n return JSON.parse(this.context[id].valueRange)\n } catch (e) {\n return [null, null]\n }\n }\n return [null, null]\n },\n\n contextHeight(id: string, def: number) {\n if (typeof this.context[id] !== \"undefined\" && typeof this.context[id].height !== \"undefined\") {\n return def * this.context[id].height\n }\n return def\n },\n\n contextDecimalDigits(id: string, def: number) {\n if (typeof this.context[id] !== \"undefined\"\n && typeof this.context[id].decimalDigits !== \"undefined\"\n ) {\n return this.context[id].decimalDigits\n }\n return def\n },\n}\n\n// @ts-ignore\nwindow.netdataDashboard = netdataDashboard\n","/* eslint-disable object-curly-newline */\n/* eslint-disable react/jsx-props-no-spreading */\n/* eslint-disable react/destructuring-assignment */\n/* eslint-disable operator-linebreak */\n/* eslint-disable arrow-body-style */\n/* eslint-disable react/prop-types */\n// @ts-nocheck\nimport React, { memo } from \"react\"\nimport styled from \"styled-components\"\nimport { Flex, Text } from \"@netdata/netdata-ui\"\nimport { useSelector } from \"store/redux-separate-context\"\nimport { useFormatters } from \"domains/chart/utils/formatters\"\nimport { netdataDashboard } from \"domains/dashboard/utils/netdata-dashboard\"\nimport { selectChartData } from \"domains/chart/selectors\"\n\nconst Title = styled(Text)`\n text-overflow: ellipsis;\n max-width: 120px;\n overflow-x: hidden;\n`\n\nconst getUnitSign = (unit) => {\n return unit === \"percentage\" ? \"%\" : ` ${unit.replace(/milliseconds/, \"ms\")}`\n}\n\nconst aggrMethods = {\n avg: \"Average\",\n sum: \"Sum\",\n min: \"Min\",\n max: \"Max\",\n}\nconst getAggregation = (value) => `${aggrMethods[value]}` || \"\"\n\nconst ChartValueContainer = memo(({ id, units, aggrMethod, displayedIndex }) => {\n const chartData = useSelector((state: AppStateT) => selectChartData(state, { id }))\n\n const value =\n typeof displayedIndex === \"number\"\n ? chartData.result[displayedIndex]\n : chartData.view_latest_values[0]\n\n const { legendFormatValue, unitsCurrent } = useFormatters({\n attributes: {},\n data: chartData,\n units,\n unitsCommon: null,\n unitsDesired: null,\n uuid: id,\n })\n\n const aggregation = getAggregation(aggrMethod)\n\n return (\n <Text\n wordBreak=\"keep-all\"\n color={[\"white\", \"pure\"]}\n margin={[0, 0, 0, \"auto\"]}\n data-testid=\"k8sPopoverChart-chartValue\"\n >\n {aggregation && (\n <Text\n margin={[0, 1, 0, 0]}\n color={[\"gray\", \"nepal\"]}\n data-testid=\"k8sPopoverChart-chartValue-aggr\"\n >\n {aggregation}\n </Text>\n )}\n {legendFormatValue(value)}\n {getUnitSign(unitsCurrent)}\n </Text>\n )\n})\n\nconst ChartValue = ({ id, ...rest }) => {\n const chartData = useSelector((state: AppStateT) => selectChartData(state, { id }))\n\n if (!chartData || chartData.result.length === 0) return null\n return <ChartValueContainer id={id} {...rest} />\n}\n\nconst ChartOverview = ({ id, chartMetadata, aggrMethod, displayedIndex }) => {\n const { units, context } = chartMetadata\n const title = context.replace(/cgroup\\./, \"\")\n const icon = netdataDashboard.menuIcon(chartMetadata)\n\n return (\n <Flex gap={2} data-testid=\"k8sPopoverChart-overview\">\n <Text color={[\"white\", \"pure\"]} dangerouslySetInnerHTML={{ __html: icon }} />\n <Title color={[\"white\", \"pure\"]} data-testid=\"k8sPopoverChart-title\">\n {title}\n </Title>\n <ChartValue id={id} units={units} aggrMethod={aggrMethod} displayedIndex={displayedIndex} />\n </Flex>\n )\n}\n\nexport default memo(ChartOverview)\n","/* eslint-disable comma-dangle */\n/* eslint-disable react-hooks/exhaustive-deps */\n/* eslint-disable object-curly-newline */\n/* eslint-disable react/prop-types */\n// @ts-nocheck\nimport React, { useRef, useContext, useLayoutEffect, useState, memo, useMemo } from \"react\"\nimport { throttle } from \"throttle-debounce\"\nimport { ChartContainer } from \"domains/chart/components/chart-container\"\nimport { ThemeContext } from \"styled-components\"\nimport { Flex, getColor } from \"@netdata/netdata-ui\"\nimport ChartOverview from \"./chartOverview\"\n\nconst Chart = ({ groupLabel, postGroupLabel, id, attributes, relatedIndex }) => {\n const theme = useContext(ThemeContext)\n const chartContainerRef = useRef()\n const [displayedIndex, setDisplayedIndex] = useState()\n const setDisplayedIndexThrottled = useMemo(() => throttle(400, setDisplayedIndex), [])\n const [, repaint] = useState()\n\n useLayoutEffect(() => {\n repaint(true)\n }, [])\n\n const { chartMetadata, attributes: relatedChartAttributes } = attributes.relatedCharts[\n relatedIndex\n ]\n\n const chartAttributes = useMemo(\n () => ({\n id: chartMetadata.id,\n\n width: \"100%\",\n height: \"60px\",\n\n chartLibrary: \"sparkline\",\n sparklineLineWidth: \"2px\",\n sparklineLineColor: getColor(\"border\")({ theme }),\n sparklineFillColor: getColor(\"disabled\")({ theme }),\n sparklineSpotRadius: 0,\n sparklineDisableTooltips: true,\n sparklineOnHover: (event) => setDisplayedIndexThrottled(event?.x),\n\n httpMethod: \"POST\",\n host: attributes.host,\n nodeIDs: attributes.nodeIDs,\n dimensions: relatedChartAttributes.dimensions,\n aggrMethod: relatedChartAttributes.aggrMethod,\n\n labels: {\n k8s_cluster_id: [chartMetadata.chartLabels.k8s_cluster_id[0]],\n [attributes.groupBy]: [groupLabel],\n ...(postGroupLabel && { [attributes.postGroupBy]: [postGroupLabel] }),\n },\n }),\n [chartMetadata, attributes]\n )\n\n return (\n <Flex gap={2} column data-testid=\"k8sPopoverChart\">\n <div\n ref={chartContainerRef}\n style={{ height: \"60px\", width: \"100%\" }}\n data-testid=\"k8sPopoverChart-container\"\n >\n {chartContainerRef.current && (\n <ChartContainer\n chartUuid={id}\n attributes={chartAttributes}\n chartMetadata={chartMetadata}\n portalNode={chartContainerRef.current}\n />\n )}\n </div>\n <ChartOverview\n id={id}\n aggrMethod={chartAttributes.aggrMethod}\n chartMetadata={chartMetadata}\n displayedIndex={displayedIndex}\n />\n </Flex>\n )\n}\n\nexport default memo(Chart)\n","/* eslint-disable object-curly-newline */\n/* eslint-disable react/prop-types */\n// @ts-nocheck\nimport React from \"react\"\nimport styled from \"styled-components\"\nimport { Text, Flex, Icon } from \"@netdata/netdata-ui\"\n\nconst ExternalButton = styled(Icon).attrs({\n margin: [0, 0, 0, \"auto\"],\n color: [\"white\", \"pure\"],\n width: \"10px\",\n height: \"10px\",\n alignSelf: \"center\",\n name: \"nav_arrow_goto\",\n role: \"button\",\n title: \"Go to node\",\n \"data-testid\": \"k8sPopoverItem-externalButton\",\n})`\n cursor: pointer;\n`\n\nconst Item = ({ icon, title, secondary, onClick }) => (\n <Flex gap={1} alignItems=\"start\" data-testid=\"k8sPopoverItem\">\n <Flex width=\"22px\" height=\"22px\" data-testid=\"k8sPopoverItem-icon\">\n <Icon\n name={icon}\n color={[\"white\", \"pure\"]}\n margin={[0, 1, 0, 0]}\n width=\"22px\"\n height=\"22px\"\n />\n </Flex>\n <Text color={[\"white\", \"pure\"]} data-testid=\"k8sPopoverItem-title\">\n {title}\n </Text>\n {secondary && (\n <Text color=\"border\" wordBreak=\"break-all\" data-testid=\"k8sPopoverItem-detail\">\n {secondary}\n </Text>\n )}\n {onClick && <ExternalButton onClick={onClick} />}\n </Flex>\n)\n\nexport default Item\n","/* eslint-disable react/prop-types */\n// @ts-nocheck\nimport React from \"react\"\nimport { useDateTime } from \"utils/date-time\"\nimport Item from \"./item\"\nimport Section from \"./section\"\n\nconst DateItem = ({ date, title }) => {\n const { localeDateString, localeTimeString } = useDateTime()\n\n return (\n <Item\n icon=\"around_clock\"\n title={title}\n secondary={`${localeDateString(date)} | ${localeTimeString(date)}`}\n />\n )\n}\n\nconst DateSection = ({ before, after }) => (\n <Section title=\"Time\">\n <DateItem title=\"From\" date={after} />\n <DateItem title=\"To\" date={before} />\n </Section>\n)\n\nexport default DateSection\n","/* eslint-disable object-curly-newline */\n/* eslint-disable react/prop-types */\n// @ts-nocheck\nimport React from \"react\"\nimport { Flex } from \"@netdata/netdata-ui\"\nimport Section from \"./section\"\nimport Chart from \"./chart\"\nimport DateSection from \"./dateSection\"\n\nconst Metrics = ({ groupLabel, postGroupLabel, attributes, viewAfter, viewBefore }) => (\n <Flex gap={3} column width=\"100%\" data-testid=\"k8sPopoverMetrics\">\n <DateSection after={viewAfter} before={viewBefore} />\n <Section title=\"Metrics\" noBorder>\n <Flex gap={3} column data-testid=\"k8sPopoverMetrics-container\">\n {attributes.relatedCharts.map(({ chartMetadata }, index) => (\n <Chart\n key={chartMetadata.id}\n id={[groupLabel, postGroupLabel, attributes.id, chartMetadata.id].join(\"|\")}\n attributes={attributes}\n relatedIndex={index}\n groupLabel={groupLabel}\n postGroupLabel={postGroupLabel}\n />\n ))}\n </Flex>\n </Section>\n </Flex>\n)\n\nexport default Metrics\n","/* eslint-disable no-param-reassign */\n/* eslint-disable comma-dangle */\n/* eslint-disable object-curly-newline */\n/* eslint-disable react/jsx-props-no-spreading */\n/* eslint-disable react/prop-types */\n// @ts-nocheck\nimport React, { memo } from \"react\"\nimport { Flex } from \"@netdata/netdata-ui\"\nimport Item from \"./item\"\nimport Section from \"./section\"\nimport getLabel, { labelIds } from \"./getLabel\"\n\nconst LabelsSection = ({ labelId, items, onExpand, onItemClick, ...rest }) => {\n const { title, icon } = getLabel(labelId)\n const sliced = items.slice(0, 3)\n const expandable = items.length > 3\n\n const text = expandable ? `${title} (${items.length})` : title\n return (\n <Section title={text} onExpand={expandable && onExpand} {...rest}>\n {sliced.map((item) => (\n <Item\n key={item}\n icon={icon}\n title={item}\n onClick={onItemClick && (() => onItemClick(item))}\n />\n ))}\n </Section>\n )\n}\n\nconst getLabelIds = (chartLabels) => {\n chartLabels = { ...chartLabels }\n const predefinedLabelIds = labelIds.reduce((acc, labelId) => {\n if (!(labelId in chartLabels)) return acc\n\n delete chartLabels[labelId]\n return [...acc, labelId]\n }, [])\n\n return [...predefinedLabelIds, ...Object.keys(chartLabels)]\n}\n\nconst Context = ({ chartLabels, onExpand, onNodeClick }) => {\n const ids = getLabelIds(chartLabels)\n\n return (\n <Flex gap={3} column width=\"100%\" data-testid=\"k8sPopoverContext\">\n {ids.map((id, index) => (\n <LabelsSection\n key={id}\n labelId={id}\n items={chartLabels[id]}\n onExpand={() => onExpand(id)}\n noBorder={index === ids.length - 1}\n onItemClick={id === \"k8s_node_name\" && onNodeClick}\n />\n ))}\n </Flex>\n )\n}\n\nexport default memo(Context)\n","/* eslint-disable object-curly-newline */\n/* eslint-disable react/prop-types */\n// @ts-nocheck\nimport React from \"react\"\nimport { Flex, Button, makeFlex } from \"@netdata/netdata-ui\"\nimport styled from \"styled-components\"\nimport Separator from \"./separator\"\nimport Header from \"./header\"\nimport Item from \"./item\"\nimport getLabel from \"./getLabel\"\n\nconst StyledButton = styled(makeFlex(Button)).attrs({\n flavour: \"borderless\",\n neutral: true,\n themeType: \"dark\",\n className: \"btn\",\n alignItems: \"start\",\n gap: 1,\n})`\n &&& {\n padding: 0;\n margin: 0;\n height: initial;\n width: initial;\n\n svg {\n height: 18px;\n width: 18px;\n position: initial;\n }\n }\n`\n\nconst List = ({ labelId, items, onBack, onItemClick }) => {\n const { title, icon } = getLabel(labelId)\n\n return (\n <Flex height=\"100%\" gap={3} data-testid=\"k8sPopoverList\" column>\n <Header>\n <StyledButton\n label={`${title} (${items.length})`}\n icon=\"chevron_left\"\n onClick={onBack}\n data-testid=\"k8sPopoverList-back\"\n />\n </Header>\n <Separator />\n <Flex\n gap={3}\n overflow={{ vertical: \"auto\", horizontal: \"hidden\" }}\n column\n data-testid=\"k8sPopoverList-container\"\n >\n {items.map((item) => (\n <Item\n key={item}\n icon={icon}\n title={item}\n onClick={onItemClick && (() => onItemClick(item))}\n />\n ))}\n </Flex>\n </Flex>\n )\n}\n\nexport default List\n","/* eslint-disable object-curly-newline */\n/* eslint-disable react/jsx-props-no-spreading */\n/* eslint-disable react/prop-types */\n// @ts-nocheck\nimport React, { useState } from \"react\"\nimport { Flex, DropContainer } from \"@netdata/netdata-ui\"\nimport Separator from \"./separator\"\nimport Header from \"./header\"\nimport Tabs from \"./tabs\"\nimport Metrics from \"./metrics\"\nimport Context from \"./context\"\nimport List from \"./list\"\n\nconst Container = (props) => (\n <DropContainer\n background={[\"transparent\", \"popover\"]}\n padding={[2, 4]}\n width=\"322px\"\n height=\"422px\"\n {...props}\n />\n)\n\nconst TabsContainer = ({ label, value, onChange, children }) => (\n <Flex height=\"100%\" column>\n <Header>{label}</Header>\n <Tabs value={value} onChange={onChange} margin={[4, 0, 0, 0]} />\n <Separator />\n <Flex gap={3} overflow={{ vertical: \"auto\", horizontal: \"hidden\" }} margin={[4, 0, 0, 0]}>\n {children}\n </Flex>\n </Flex>\n)\n\nconst Popover = ({\n title,\n groupLabel,\n postGroupLabel,\n chartLabels,\n attributes,\n viewBefore,\n viewAfter,\n ...rest\n}) => {\n const [view, setView] = useState(\"context\")\n\n const isLabelView = view !== \"context\" && view !== \"metrics\"\n\n const { onNodeClick } = attributes\n\n return (\n <Container data-testid=\"k8sPopover\" {...rest}>\n {isLabelView && (\n <List\n labelId={view}\n items={chartLabels[view]}\n attributes={attributes}\n onBack={() => setView(\"context\")}\n onItemClick={view === \"k8s_node_name\" && onNodeClick}\n />\n )}\n {!isLabelView && (\n <TabsContainer label={title} value={view} onChange={setView}>\n {view === \"context\" && (\n <Context chartLabels={chartLabels} onExpand={setView} onNodeClick={onNodeClick} />\n )}\n {view === \"metrics\" && (\n <Metrics\n groupLabel={groupLabel}\n postGroupLabel={postGroupLabel}\n attributes={attributes}\n viewAfter={viewAfter}\n viewBefore={viewBefore}\n />\n )}\n </TabsContainer>\n )}\n </Container>\n )\n}\n\nexport default Popover\n","/* eslint-disable arrow-body-style */\n/* eslint-disable react-hooks/exhaustive-deps */\n/* eslint-disable comma-dangle */\n/* eslint-disable react/prop-types */\n// @ts-nocheck\nimport React, { useMemo } from \"react\"\nimport { Flex } from \"@netdata/netdata-ui\"\nimport { ChartMetadata } from \"domains/chart/chart-types\"\nimport { Attributes } from \"domains/chart/utils/transformDataAttributes.ts\"\nimport { ChartTimeframe } from \"domains/chart/components/chart-legend-bottom\"\nimport GroupBoxes from \"domains/chart/components/lib-charts/group-box-chart/groupBoxes\"\nimport Legend from \"domains/chart/components/lib-charts/group-box-chart/legend\"\nimport getLabel from \"./getLabel\"\nimport transform from \"./transform\"\nimport Popover from \"./popover\"\n\ninterface Props {\n chartData: any\n chartMetadata: ChartMetadata\n attributes: Attributes\n viewAfter: number\n viewBefore: number\n hoveredRow: number\n hoveredX: number | null\n showUndefined: boolean\n}\n\nconst Kubernetes = ({\n chartData,\n chartMetadata,\n attributes,\n viewAfter,\n viewBefore,\n hoveredRow,\n hoveredX,\n showUndefined,\n}: Props) => {\n const { filteredRows } = attributes\n const { data: groupBoxData, labels, chartLabels } = useMemo(\n () => transform(chartData, filteredRows),\n [filteredRows, chartData]\n )\n\n const {\n id,\n result: { data },\n groupBy,\n postGroupBy,\n } = chartData\n\n const renderBoxPopover = ({ groupIndex, index, align }) => {\n const label = groupBoxData[groupIndex].labels[index]\n const { title } = getLabel(postGroupBy)\n\n return (\n <Popover\n align={align}\n title={`${title}: ${label}`}\n groupLabel={labels[groupIndex]}\n postGroupLabel={label}\n chartLabels={groupBoxData[groupIndex].chartLabels[index]}\n attributes={attributes}\n viewBefore={viewBefore}\n viewAfter={viewAfter}\n />\n )\n }\n\n const renderGroupPopover = ({ groupIndex, align }) => {\n const label = labels[groupIndex]\n const { title } = getLabel(groupBy)\n\n return (\n <Popover\n align={align}\n title={`${title}: ${label}`}\n groupLabel={label}\n chartLabels={chartLabels[groupIndex]}\n attributes={attributes}\n viewBefore={viewBefore}\n viewAfter={viewAfter}\n />\n )\n }\n\n const groupedBoxesData = useMemo(() => {\n return groupBoxData.map((groupedBox) => {\n return {\n labels: groupedBox.labels,\n data:\n hoveredRow === -1 || hoveredRow > data.length || !(hoveredRow in data)\n ? groupedBox.postAggregated\n : groupedBox.indexes.map((index) => data[hoveredRow][index + 1]) || [],\n }\n })\n }, [data, groupBoxData, hoveredRow])\n\n return (\n <Flex column width=\"100%\" height=\"100%\" gap={4} padding={[4, 2]}>\n <GroupBoxes\n data={groupedBoxesData}\n labels={labels}\n renderBoxPopover={renderBoxPopover}\n renderGroupPopover={renderGroupPopover}\n />\n <Flex data-testid=\"legend-container\" justifyContent=\"between\">\n <Legend>{id}</Legend>\n <ChartTimeframe\n chartMetadata={chartMetadata}\n showUndefined={showUndefined}\n hoveredX={hoveredX}\n viewBefore={viewBefore}\n chartData={chartData}\n />\n </Flex>\n </Flex>\n )\n}\n\nexport default Kubernetes\n","/* eslint-disable arrow-body-style */\n/* eslint-disable object-curly-newline */\n/* eslint-disable react-hooks/exhaustive-deps */\n/* eslint-disable comma-dangle */\n/* eslint-disable react/prop-types */\n// @ts-nocheck\n\nexport default (chartData, filteredRows) => {\n const { keys, labels: labelValues, groupBy, postGroupBy, aggrGroups, postAggregated } = chartData\n const groupValues = keys[groupBy]\n const postGroupValues = keys[postGroupBy]\n const indexes = filteredRows || [...Array(groupValues.length)].map((v, index) => index)\n\n const postGroupData = indexes.reduce((acc: any, index: number) => {\n const groupValue = groupValues[index]\n if (!(groupValue in acc)) {\n acc[groupValue] = {\n labels: [],\n indexes: [],\n chartLabels: [],\n postAggregated: [],\n }\n }\n const boxes = acc[groupValue]\n boxes.indexes.push(index)\n boxes.labels.push(postGroupValues[index])\n boxes.postAggregated.push(postAggregated[index])\n\n const chartLabels = aggrGroups.reduce((labelsAcc, label) => {\n return labelValues[label][index]\n ? { ...labelsAcc, [label]: labelValues[label][index] }\n : labelsAcc\n }, {})\n boxes.chartLabels.push(chartLabels)\n return acc\n }, {})\n\n const labels = Object.keys(postGroupData).sort(\n (a, b) => postGroupData[b].indexes.length - postGroupData[a].indexes.length\n )\n\n const groupData = labels.map((label) => postGroupData[label])\n\n const groupChartLabels = groupData.map((boxes) => {\n return aggrGroups.reduce((acc, label) => {\n const groupLabels = new Set(\n boxes.chartLabels.reduce((accChartLabels, chartLabels) => {\n return chartLabels[label] ? [...accChartLabels, ...chartLabels[label]] : accChartLabels\n }, [])\n )\n return groupLabels.size === 0 ? acc : { ...acc, [label]: Array.from(groupLabels) }\n }, {})\n })\n\n return { labels, data: groupData, chartLabels: groupChartLabels }\n}\n","import React, { useCallback } from \"react\"\nimport classNames from \"classnames\"\n\nimport { useDispatch, useSelector } from \"store/redux-separate-context\"\nimport { setGlobalChartUnderlayAction, setGlobalPanAndZoomAction } from \"domains/global/actions\"\nimport { selectSyncPanAndZoom } from \"domains/global/selectors\"\nimport { setChartPanAndZoomAction } from \"domains/chart/actions\"\nimport { useShowValueOutside } from \"hooks/use-show-value-outside\"\n\nimport { Attributes } from \"../utils/transformDataAttributes\"\nimport {\n ChartData, ChartMetadata, DygraphData, EasyPieChartData, D3pieChartData,\n} from \"../chart-types\"\nimport { chartLibrariesSettings, ChartLibraryName } from \"../utils/chartLibrariesSettings\"\n\nimport { DygraphChart } from \"./lib-charts/dygraph-chart\"\nimport { EasyPieChart } from \"./lib-charts/easy-pie-chart\"\nimport { GaugeChart } from \"./lib-charts/gauge-chart\"\nimport { SparklineChart } from \"./lib-charts/sparkline-chart\"\nimport { D3pieChart } from \"./lib-charts/d3pie-chart\"\nimport { PeityChart } from \"./lib-charts/peity-chart\"\nimport { GoogleChart } from \"./lib-charts/google-chart\"\nimport { TextOnly } from \"./lib-charts/text-only\"\nimport { KubernetesGroupBoxes } from \"./lib-charts/group-box-chart\"\n\ninterface Props {\n attributes: Attributes\n chartContainerElement: HTMLElement\n chartData: ChartData\n chartMetadata: ChartMetadata\n chartLibrary: ChartLibraryName\n colors: {\n [key: string]: string\n }\n chartUuid: string\n chartHeight: number\n chartWidth: number\n dimensionsVisibility: boolean[]\n hasEmptyData: boolean\n isRemotelyControlled: boolean\n legendFormatValue: ((v: number | string | null) => number | string)\n orderedColors: string[]\n hoveredX: number | null\n onUpdateChartPanAndZoom: (arg: { after: number, before: number, masterID: string }) => void\n immediatelyDispatchPanAndZoom: () => void\n\n hoveredRow: number\n setHoveredX: (hoveredX: number | null, noMaster?: boolean) => void\n setMinMax: (minMax: [number, number]) => void\n showLatestOnBlur: boolean\n unitsCurrent: string\n viewAfterForCurrentData: number,\n viewBeforeForCurrentData: number,\n}\n\nexport const AbstractChart = ({\n attributes,\n chartContainerElement,\n chartData,\n chartMetadata,\n chartLibrary,\n colors,\n chartUuid,\n chartHeight,\n chartWidth,\n dimensionsVisibility,\n hasEmptyData,\n isRemotelyControlled,\n legendFormatValue,\n orderedColors,\n hoveredRow,\n hoveredX,\n onUpdateChartPanAndZoom,\n immediatelyDispatchPanAndZoom,\n setHoveredX,\n setMinMax,\n showLatestOnBlur,\n unitsCurrent,\n viewAfterForCurrentData,\n viewBeforeForCurrentData,\n}: Props) => {\n const dispatch = useDispatch()\n\n const isSyncPanAndZoom = useSelector(selectSyncPanAndZoom)\n const setGlobalChartUnderlay = useCallback(({ after, before, masterID }) => {\n dispatch(setGlobalChartUnderlayAction({ after, before, masterID }))\n\n // freeze charts\n // don't send masterID, so no padding is applied\n if (isSyncPanAndZoom) {\n dispatch(setGlobalPanAndZoomAction({\n after: viewAfterForCurrentData,\n before: viewBeforeForCurrentData,\n }))\n } else {\n dispatch(setChartPanAndZoomAction({\n after: viewAfterForCurrentData,\n before: viewBeforeForCurrentData,\n id: chartUuid,\n }))\n }\n }, [chartUuid, dispatch, isSyncPanAndZoom, viewAfterForCurrentData, viewBeforeForCurrentData])\n\n const chartSettings = chartLibrariesSettings[chartLibrary]\n const { hasLegend } = chartSettings\n const chartElementClassName = hasLegend(attributes)\n ? classNames(\n `netdata-chart-with-legend-${attributes.legendPosition || \"right\"}`,\n `netdata-${chartLibrary}-chart-with-legend-right`,\n )\n : classNames(\n \"netdata-chart\",\n `netdata-${chartLibrary}-chart`,\n )\n const chartElementId = `${chartLibrary}-${chartUuid}-chart`\n const showUndefined = hoveredRow === -1 && !showLatestOnBlur\n\n useShowValueOutside({\n attributes, chartData, chartSettings, hoveredRow, legendFormatValue, showUndefined,\n })\n\n if (chartLibrary === \"easypiechart\") {\n return (\n <EasyPieChart\n attributes={attributes}\n chartData={chartData as EasyPieChartData}\n chartMetadata={chartMetadata}\n chartElementClassName={chartElementClassName}\n chartElementId={chartElementId}\n chartLibrary={chartLibrary}\n chartWidth={chartWidth}\n colors={colors}\n chartUuid={chartUuid}\n dimensionsVisibility={dimensionsVisibility}\n isRemotelyControlled={isRemotelyControlled}\n // easyPieChart doesnt support resizing, so lets just create new one when\n // container size changes\n key={chartWidth}\n legendFormatValue={legendFormatValue}\n orderedColors={orderedColors}\n hoveredRow={hoveredRow}\n onUpdateChartPanAndZoom={onUpdateChartPanAndZoom}\n setGlobalChartUnderlay={setGlobalChartUnderlay}\n setMinMax={setMinMax}\n showUndefined={showUndefined}\n unitsCurrent={unitsCurrent}\n viewAfter={viewAfterForCurrentData}\n viewBefore={viewBeforeForCurrentData}\n />\n )\n }\n\n if (chartLibrary === \"gauge\") {\n return (\n <GaugeChart\n attributes={attributes}\n chartData={chartData as EasyPieChartData}\n chartMetadata={chartMetadata}\n chartElementClassName={chartElementClassName}\n chartElementId={chartElementId}\n chartLibrary={chartLibrary}\n chartHeight={chartHeight}\n chartWidth={chartWidth}\n colors={colors}\n chartUuid={chartUuid}\n dimensionsVisibility={dimensionsVisibility}\n isRemotelyControlled={isRemotelyControlled}\n legendFormatValue={legendFormatValue}\n orderedColors={orderedColors}\n hoveredRow={hoveredRow}\n hoveredX={hoveredX}\n onUpdateChartPanAndZoom={onUpdateChartPanAndZoom}\n setGlobalChartUnderlay={setGlobalChartUnderlay}\n setHoveredX={setHoveredX}\n setMinMax={setMinMax}\n showUndefined={showUndefined}\n unitsCurrent={unitsCurrent}\n viewAfter={viewAfterForCurrentData}\n viewBefore={viewBeforeForCurrentData}\n />\n )\n }\n\n if (chartLibrary === \"sparkline\") {\n return (\n <SparklineChart\n attributes={attributes}\n chartContainerElement={chartContainerElement}\n chartData={chartData as EasyPieChartData}\n chartMetadata={chartMetadata}\n chartElementClassName={chartElementClassName}\n chartElementId={chartElementId}\n dimensionsVisibility={dimensionsVisibility}\n isRemotelyControlled={isRemotelyControlled}\n orderedColors={orderedColors}\n unitsCurrent={unitsCurrent}\n viewAfterForCurrentData={viewAfterForCurrentData}\n viewBeforeForCurrentData={viewBeforeForCurrentData}\n />\n )\n }\n\n if (chartLibrary === \"d3pie\") {\n return (\n <D3pieChart\n attributes={attributes}\n chartContainerElement={chartContainerElement}\n chartData={chartData as D3pieChartData}\n chartMetadata={chartMetadata}\n chartElementClassName={chartElementClassName}\n chartElementId={chartElementId}\n dimensionsVisibility={dimensionsVisibility}\n hoveredRow={hoveredRow}\n hoveredX={hoveredX}\n isRemotelyControlled={isRemotelyControlled}\n legendFormatValue={legendFormatValue}\n orderedColors={orderedColors}\n setMinMax={setMinMax}\n showUndefined={showUndefined}\n unitsCurrent={unitsCurrent}\n />\n )\n }\n\n if (chartLibrary === \"peity\") {\n return (\n <PeityChart\n attributes={attributes}\n chartContainerElement={chartContainerElement}\n chartData={chartData as EasyPieChartData}\n chartMetadata={chartMetadata}\n chartElementClassName={chartElementClassName}\n chartElementId={chartElementId}\n orderedColors={orderedColors}\n />\n )\n }\n\n if (chartLibrary === \"google\") {\n return (\n <GoogleChart\n attributes={attributes}\n chartData={chartData as EasyPieChartData}\n chartMetadata={chartMetadata}\n chartElementClassName={chartElementClassName}\n chartElementId={chartElementId}\n orderedColors={orderedColors}\n unitsCurrent={unitsCurrent}\n />\n )\n }\n\n if (chartLibrary === \"textonly\") {\n return (\n <TextOnly\n attributes={attributes}\n chartData={chartData as EasyPieChartData}\n chartElementClassName={chartElementClassName}\n chartElementId={chartElementId}\n />\n )\n }\n\n if (chartLibrary === \"groupbox\") {\n return (\n <KubernetesGroupBoxes\n chartData={chartData}\n chartMetadata={chartMetadata}\n attributes={attributes}\n viewAfter={viewAfterForCurrentData}\n viewBefore={viewBeforeForCurrentData}\n hoveredRow={hoveredRow}\n hoveredX={hoveredX}\n showUndefined={showUndefined}\n />\n )\n }\n\n return (\n <DygraphChart\n attributes={attributes}\n chartData={chartData as DygraphData}\n chartMetadata={chartMetadata}\n chartElementClassName={chartElementClassName}\n chartElementId={chartElementId}\n chartLibrary={chartLibrary}\n colors={colors}\n chartUuid={chartUuid}\n dimensionsVisibility={dimensionsVisibility}\n hasEmptyData={hasEmptyData}\n hasLegend={hasLegend(attributes)}\n isRemotelyControlled={isRemotelyControlled}\n orderedColors={orderedColors}\n immediatelyDispatchPanAndZoom={immediatelyDispatchPanAndZoom}\n hoveredRow={hoveredRow}\n hoveredX={hoveredX}\n onUpdateChartPanAndZoom={onUpdateChartPanAndZoom}\n setGlobalChartUnderlay={setGlobalChartUnderlay}\n setHoveredX={setHoveredX}\n setMinMax={setMinMax}\n unitsCurrent={unitsCurrent}\n viewAfter={viewAfterForCurrentData}\n viewBefore={viewBeforeForCurrentData}\n />\n )\n}\n","import { useEffect, useRef } from \"react\"\nimport { isEmpty } from \"ramda\"\nimport { useMount } from \"react-use\"\n\nimport { ChartData, DygraphData } from \"domains/chart/chart-types\"\nimport { Attributes } from \"domains/chart/utils/transformDataAttributes\"\nimport { ChartLibraryConfig } from \"domains/chart/utils/chartLibrariesSettings\"\n\n\ninterface UseShowValueOutsideArgument {\n attributes: Attributes\n chartData: ChartData\n chartSettings: ChartLibraryConfig\n hoveredRow: number\n legendFormatValue: ((v: number | string | null) => number | string)\n showUndefined: boolean\n}\n\n// example of the attribute:\n// show-value-of-iowait-at: \"system.cpu.iowait.1\"\n\nexport const useShowValueOutside = ({\n attributes,\n chartData,\n chartSettings,\n hoveredRow,\n legendFormatValue,\n showUndefined,\n}: UseShowValueOutsideArgument) => {\n // a ref to store found elements, just once per lifetime of component\n const showValueAttributesNodes = useRef<(HTMLElement | null)[]>([])\n\n // find the nodes that will have populated values\n useMount(() => {\n const { showValueOf } = attributes\n // showValueOf will be undefined if not used, but additional isEmpty check can prevent\n // regression performance issue in the future\n if (!showValueOf || isEmpty(showValueOf)) {\n return\n }\n const dimensionNames = chartData.dimension_names\n const dimensionIds = chartData.dimension_ids\n dimensionNames.forEach((dimensionName, i) => {\n const userElementId = showValueOf[`show-value-of-${dimensionName.toLowerCase()}`]\n || showValueOf[`show-value-of-${dimensionIds[i].toLowerCase()}-at`]\n\n // if element is not found, just add null\n showValueAttributesNodes.current = showValueAttributesNodes.current.concat(\n document.getElementById(userElementId),\n )\n })\n })\n\n useEffect(() => {\n if (showValueAttributesNodes.current.length) {\n const chartSettingCallOptions = chartSettings.options(attributes)\n const isFlipped = chartSettingCallOptions.includes(\"flip\")\n\n // \"objectrows\" is for d3pie, which has different data format\n if (chartData.format === \"json\" && !chartSettingCallOptions.includes(\"objectrows\")) {\n const { data } = (chartData as DygraphData).result\n const valueIndex = hoveredRow === -1\n ? (data.length - 1)\n : (hoveredRow) // because data for easy-pie-chart are flipped\n\n // yes, \"flipped\" value means chronological order (from oldest to newest) :)\n const rowIndex = isFlipped ? valueIndex : (data.length - valueIndex - 1)\n const row = data[rowIndex]\n\n chartData.dimension_names.forEach((dimensionName, dimensionIndex) => {\n const value = (showUndefined || !row)\n ? \"\"\n : legendFormatValue(row[dimensionIndex + 1])\n const element = showValueAttributesNodes.current[dimensionIndex]\n if (element) {\n element.innerText = `${value}`\n }\n })\n }\n }\n }, [attributes, chartData, chartSettings, hoveredRow, legendFormatValue, showUndefined])\n}\n","import { __, prop } from \"ramda\"\nimport React, {\n useEffect, useState, useCallback, useMemo, memo, useContext,\n} from \"react\"\nimport { ThemeContext } from \"styled-components\"\nimport { useDebouncedCallback } from \"use-debounce\"\n\nimport {\n requestCommonColorsAction,\n resetGlobalPanAndZoomAction,\n setDefaultAfterAction,\n resetDefaultAfterAction,\n setGlobalPanAndZoomAction,\n setGlobalSelectionAction,\n} from \"domains/global/actions\"\nimport {\n createSelectAssignedColors,\n selectGlobalSelection,\n selectSyncPanAndZoom,\n selectSyncSelection,\n selectUnitsScalingMethod,\n} from \"domains/global/selectors\"\nimport { useDispatch, useSelector } from \"store/redux-separate-context\"\nimport { TimeRange } from \"types/common\"\nimport { MS_IN_SECOND, isTimestamp } from \"utils/utils\"\n\nimport { resetChartPanAndZoomAction, setChartPanAndZoomAction } from \"domains/chart/actions\"\n\nimport { getPanAndZoomStep } from \"../utils/get-pan-and-zoom-step\"\nimport { Attributes } from \"../utils/transformDataAttributes\"\nimport { chartLibrariesSettings } from \"../utils/chartLibrariesSettings\"\nimport { useFormatters } from \"../utils/formatters\"\nimport { ChartData, ChartMetadata } from \"../chart-types\"\n\nimport { ChartLegend } from \"./chart-legend\"\nimport { LegendToolbox } from \"./legend-toolbox\"\nimport { ResizeHandler } from \"./resize-handler\"\nimport { AbstractChart } from \"./abstract-chart\"\n\ninterface GlobalPanAndZoomState {\n after: number // timestamp in ms\n before: number // timestamp in ms\n masterID?: string\n shouldForceTimeRange?: boolean\n}\n\ninterface Props {\n attributes: Attributes\n chartContainerElement: HTMLElement\n chartData: ChartData\n chartMetadata: ChartMetadata\n chartHeight: number\n chartUuid: string\n chartWidth: number\n defaultAfter: number\n globalPanAndZoom: null | GlobalPanAndZoomState\n hasEmptyData: boolean\n isRemotelyControlled: boolean\n viewRangeForCurrentData: TimeRange\n viewRange: TimeRange\n selectedDimensions: string[]\n setSelectedDimensions: (newState: string[]) => void\n showLatestOnBlur: boolean\n}\n\nexport const Chart = memo(({\n attributes,\n attributes: {\n chartLibrary,\n },\n chartContainerElement,\n chartData,\n chartMetadata,\n chartHeight,\n chartUuid,\n chartWidth,\n defaultAfter,\n globalPanAndZoom,\n hasEmptyData,\n isRemotelyControlled,\n viewRangeForCurrentData,\n viewRange,\n selectedDimensions,\n setSelectedDimensions,\n showLatestOnBlur,\n}: Props) => {\n const themeContext = useContext(ThemeContext)\n const unitsScalingMethod = useSelector(selectUnitsScalingMethod)\n const chartSettings = chartLibrariesSettings[chartLibrary]\n const { hasLegend } = chartSettings\n const {\n units = chartMetadata.units,\n unitsCommon,\n unitsDesired = unitsScalingMethod,\n } = attributes\n\n // we need to have empty selectedDimensions work as {all enabled}, in case\n // new dimensions show up (when all are enabled, the new dimensions should also auto-enable)\n const dimensionsVisibility = useMemo(() => chartData.dimension_names.map(\n (dimensionName) => (selectedDimensions.length === 0\n ? true\n : selectedDimensions.includes(dimensionName)),\n ),\n [chartData.dimension_names, selectedDimensions])\n\n\n const shouldDisplayToolbox = hasLegend(attributes)\n && window.NETDATA.options.current.legend_toolbox\n\n const shouldDisplayResizeHandler = shouldDisplayToolbox\n && window.NETDATA.options.current.resize_charts // legacy way of turning off for print mode\n && !attributes.hideResizeHandler\n\n const dispatch = useDispatch()\n const allDimensionNames = useMemo(\n () => {\n // metadata and chartData dimensions match each other, but we need to first parse\n // dimensions from metadata, to keep the same order (when browser parsers dimensions object,\n // it sorts them in *some* way which is hard to reproduce). And people can get used to colors\n // so let's keep them as they were before\n const dimensionNamesFromMetadata = Object.values(chartMetadata.dimensions).map((x) => x.name)\n const additionalDimensionNamesFromData = chartData.dimension_names.filter(\n (x) => !dimensionNamesFromMetadata.includes(x),\n )\n return dimensionNamesFromMetadata.concat(additionalDimensionNamesFromData)\n },\n [chartData.dimension_names, chartMetadata.dimensions],\n )\n useEffect(() => {\n dispatch(requestCommonColorsAction({\n chartContext: chartMetadata.context,\n chartUuid,\n colorsAttribute: attributes.colors,\n commonColorsAttribute: attributes.commonColors,\n dimensionNames: allDimensionNames,\n }))\n }, [allDimensionNames, attributes.colors, attributes.commonColors, chartMetadata.context,\n chartUuid, dispatch])\n\n const {\n legendFormatValue,\n legendFormatValueDecimalsFromMinMax,\n unitsCurrent,\n } = useFormatters({\n attributes,\n data: chartData,\n units,\n unitsCommon,\n unitsDesired,\n uuid: chartUuid,\n })\n\n const [localHoveredX, setLocalHoveredX] = useState<number | null>(null)\n\n const isSyncSelection = useSelector(selectSyncSelection)\n const handleSetHoveredX = useCallback((newHoveredX, noMaster) => {\n if (isSyncSelection) {\n const action = noMaster\n ? { chartUuid: null, hoveredX: newHoveredX }\n : { chartUuid, hoveredX: newHoveredX }\n dispatch(setGlobalSelectionAction(action))\n } else {\n setLocalHoveredX(newHoveredX)\n }\n }, [chartUuid, dispatch, isSyncSelection])\n const globalHoveredX = useSelector(selectGlobalSelection)\n const hoveredX = isSyncSelection\n ? globalHoveredX\n : localHoveredX\n\n // time-frames for requested data (even when request is pending)\n const viewAfter = isTimestamp(viewRange[0]) ? viewRange[0] : chartData.after * MS_IN_SECOND\n const viewBefore = isTimestamp(viewRange[1]) ? viewRange[1] : chartData.before * MS_IN_SECOND\n\n const viewAfterForCurrentData = isTimestamp(viewRangeForCurrentData[0])\n ? viewRangeForCurrentData[0]\n : chartData.after * MS_IN_SECOND\n const viewBeforeForCurrentData = isTimestamp(viewRangeForCurrentData[1])\n ? viewRangeForCurrentData[1]\n : chartData.before * MS_IN_SECOND // when 'before' is 0 or negative\n\n const netdataFirst = chartData.first_entry * MS_IN_SECOND\n const netdataLast = chartData.last_entry * MS_IN_SECOND\n\n // old dashboard persists min duration based on first chartWidth, i assume it's a bug\n // and will update fixedMinDuration when width changes\n const fixedMinDuration = useMemo(() => (\n Math.round((chartWidth / 30) * chartMetadata.update_every * MS_IN_SECOND)\n ), [chartMetadata.update_every, chartWidth])\n\n const isSyncPanAndZoom = useSelector(selectSyncPanAndZoom)\n\n const setGlobalPanAndZoomDebounced = useDebouncedCallback(\n (newGlobalPanAndZoom) => {\n dispatch(setGlobalPanAndZoomAction(newGlobalPanAndZoom))\n },\n 400, // corresponds to global_pan_sync_time in old dashboard\n )\n\n const immediatelyDispatchPanAndZoom = useCallback(() => {\n setGlobalPanAndZoomDebounced.flush()\n }, [setGlobalPanAndZoomDebounced])\n\n /**\n * pan-and-zoom handler (both for toolbox and mouse events)\n */\n const handleUpdateChartPanAndZoom = useCallback(({\n after,\n before,\n callback,\n shouldFlushImmediately = false,\n shouldForceTimeRange,\n shouldNotExceedAvailableRange,\n }) => {\n if (before < after) {\n return\n }\n let minDuration = fixedMinDuration\n\n const currentDuraton = Math.round(viewBefore - viewAfter)\n\n let afterForced = Math.round(after)\n let beforeForced = Math.round(before)\n const viewUpdateEvery = chartData.view_update_every * MS_IN_SECOND\n\n if (shouldNotExceedAvailableRange) {\n const first = netdataFirst + viewUpdateEvery\n const last = netdataLast + viewUpdateEvery\n // first check \"before\"\n if (beforeForced > last) {\n afterForced -= (before - last)\n beforeForced = last\n }\n\n if (afterForced < first) {\n afterForced = first\n }\n }\n\n\n // align them to update_every\n // stretching them further away\n afterForced -= afterForced % (viewUpdateEvery)\n beforeForced += viewUpdateEvery - (beforeForced % viewUpdateEvery)\n\n // the final wanted duration\n let wantedDuration = beforeForced - afterForced\n\n // to allow panning, accept just a point below our minimum\n if ((currentDuraton - viewUpdateEvery) < minDuration) {\n minDuration = currentDuraton - viewUpdateEvery\n }\n\n // we do it, but we adjust to minimum size and return false\n // when the wanted size is below the current and the minimum\n // and we zoom\n let doCallback = true\n if (wantedDuration < currentDuraton && wantedDuration < minDuration) {\n minDuration = fixedMinDuration\n\n const dt = (minDuration - wantedDuration) / 2\n beforeForced += dt\n afterForced -= dt\n wantedDuration = beforeForced - afterForced\n doCallback = false\n }\n\n const tolerance = viewUpdateEvery * 2\n const movement = Math.abs(beforeForced - viewBefore)\n\n if (\n Math.abs(currentDuraton - wantedDuration) <= tolerance && movement <= tolerance && doCallback\n ) {\n return\n }\n\n if (isSyncPanAndZoom) {\n setGlobalPanAndZoomDebounced.callback({\n after: afterForced,\n before: beforeForced,\n masterID: chartUuid,\n shouldForceTimeRange,\n })\n if (shouldFlushImmediately) {\n setGlobalPanAndZoomDebounced.flush()\n }\n } else {\n dispatch(setChartPanAndZoomAction({\n after: afterForced,\n before: beforeForced,\n id: chartUuid,\n shouldForceTimeRange,\n }))\n }\n\n if (doCallback && typeof callback === \"function\") {\n callback(afterForced, beforeForced)\n }\n }, [chartData.view_update_every, chartUuid, dispatch, fixedMinDuration, isSyncPanAndZoom,\n netdataFirst, netdataLast, setGlobalPanAndZoomDebounced, viewAfter, viewBefore])\n\n /**\n * toolbox handlers\n */\n const handleToolBoxPanAndZoom = useCallback((after: number, before: number) => {\n const newAfter = Math.max(after, netdataFirst)\n const newBefore = Math.min(before, netdataLast)\n handleUpdateChartPanAndZoom({\n after: newAfter,\n before: newBefore,\n shouldForceTimeRange: true,\n shouldFlushImmediately: true,\n })\n }, [handleUpdateChartPanAndZoom, netdataFirst, netdataLast])\n\n const handleToolboxLeftClick = useCallback((event: React.MouseEvent) => {\n const step = (viewBefore - viewAfter) * getPanAndZoomStep(event)\n const newBefore = viewBefore - step\n const newAfter = viewAfter - step\n if (newAfter >= netdataFirst) {\n handleToolBoxPanAndZoom(newAfter, newBefore)\n }\n }, [handleToolBoxPanAndZoom, netdataFirst, viewAfter, viewBefore])\n\n const handleToolboxRightClick = useCallback((event: React.MouseEvent) => {\n const timeWindow = viewBefore - viewAfter\n const step = timeWindow * getPanAndZoomStep(event)\n const newBefore = Math.min(viewBefore + step, netdataLast)\n const newAfter = newBefore - timeWindow\n handleToolBoxPanAndZoom(newAfter, newBefore)\n }, [handleToolBoxPanAndZoom, netdataLast, viewAfter, viewBefore])\n\n const handleToolboxZoomInClick = useCallback((event: React.MouseEvent) => {\n const panAndZoomStep = getPanAndZoomStep(event) * 0.8\n if (!globalPanAndZoom) {\n dispatch(setDefaultAfterAction({\n after: Math.round(defaultAfter / (panAndZoomStep + 1)),\n }))\n return\n }\n // if visible time range is much bigger than available time range in history, first zoom-in\n // should just fit to available range\n if ((viewBefore - viewAfter) > (netdataLast - netdataFirst) * 1.2) {\n handleToolBoxPanAndZoom(netdataFirst, netdataLast)\n return\n }\n const dt = ((viewBefore - viewAfter) * panAndZoomStep) / 2\n const newAfter = viewAfter + dt\n const newBefore = viewBefore - dt\n handleToolBoxPanAndZoom(newAfter, newBefore)\n }, [defaultAfter, dispatch, globalPanAndZoom, handleToolBoxPanAndZoom, netdataFirst, netdataLast,\n viewAfter, viewBefore])\n\n const handleToolboxZoomOutClick = useCallback((event: React.MouseEvent) => {\n const panAndZoomStep = getPanAndZoomStep(event) * 0.8\n if (!globalPanAndZoom) {\n dispatch(setDefaultAfterAction({\n after: Math.round(defaultAfter * (panAndZoomStep + 1)),\n }))\n return\n }\n const dt = ((viewBefore - viewAfter) / (1.0 - (panAndZoomStep * 0.8))\n - (viewBefore - viewAfter)) / 2\n const newAfter = viewAfter - dt\n const newBefore = viewBefore + dt\n handleToolBoxPanAndZoom(newAfter, newBefore)\n }, [defaultAfter, dispatch, globalPanAndZoom, handleToolBoxPanAndZoom, viewAfter, viewBefore])\n\n const handleToolboxResetClick = useCallback(() => {\n if (isSyncPanAndZoom) {\n if (globalPanAndZoom) {\n dispatch(resetGlobalPanAndZoomAction())\n } else {\n dispatch(resetDefaultAfterAction())\n }\n } else {\n dispatch(resetChartPanAndZoomAction({ id: chartUuid }))\n }\n }, [chartUuid, dispatch, globalPanAndZoom, isSyncPanAndZoom])\n\n /**\n * assign colors\n */\n const selectAssignedColors = useMemo(() => createSelectAssignedColors({\n chartContext: chartMetadata.context,\n chartUuid,\n colorsAttribute: attributes.colors,\n commonColorsAttribute: attributes.commonColors,\n }), [attributes.colors, attributes.commonColors, chartMetadata, chartUuid])\n const colors = useSelector(selectAssignedColors)\n const orderedColors = useMemo(\n () => chartData.dimension_names.map(prop(__, colors)),\n [chartData, colors],\n )\n\n if (!colors) {\n return <span /> // wait for createSelectAssignedColors reducer result to come back\n }\n\n const isTimeVisible = hoveredX && hoveredX >= viewAfter && hoveredX <= viewBefore\n const viewUpdateEvery = chartData.view_update_every * MS_IN_SECOND\n const hoveredRow = isTimeVisible\n ? Math.floor(((hoveredX as number) - chartData.after * MS_IN_SECOND) / viewUpdateEvery)\n : -1\n\n const isLegendOnBottom = attributes.legendPosition === \"bottom\"\n\n const legendToolbox = (\n <LegendToolbox\n onToolboxLeftClick={handleToolboxLeftClick}\n onToolboxResetClick={handleToolboxResetClick}\n onToolboxRightClick={handleToolboxRightClick}\n onToolboxZoomInClick={handleToolboxZoomInClick}\n onToolboxZoomOutClick={handleToolboxZoomOutClick}\n />\n )\n\n const resizeHandler = shouldDisplayResizeHandler && (\n <ResizeHandler\n chartContainerElement={chartContainerElement}\n chartUuid={chartUuid}\n heightId={attributes.heightId}\n isLegendOnBottom={isLegendOnBottom}\n />\n )\n\n return (\n <>\n <AbstractChart\n // remount on theme change\n key={themeContext.name}\n attributes={attributes}\n chartContainerElement={chartContainerElement}\n chartData={chartData}\n chartMetadata={chartMetadata}\n chartLibrary={chartLibrary}\n colors={colors}\n chartUuid={chartUuid}\n chartHeight={chartHeight}\n chartWidth={chartWidth}\n dimensionsVisibility={dimensionsVisibility}\n hasEmptyData={hasEmptyData}\n onUpdateChartPanAndZoom={handleUpdateChartPanAndZoom}\n immediatelyDispatchPanAndZoom={immediatelyDispatchPanAndZoom}\n isRemotelyControlled={isRemotelyControlled}\n legendFormatValue={legendFormatValue}\n orderedColors={orderedColors}\n hoveredX={hoveredX}\n hoveredRow={hoveredRow}\n setHoveredX={handleSetHoveredX}\n setMinMax={([min, max]) => legendFormatValueDecimalsFromMinMax(min, max)}\n showLatestOnBlur={showLatestOnBlur}\n unitsCurrent={unitsCurrent}\n viewAfterForCurrentData={viewAfterForCurrentData}\n viewBeforeForCurrentData={viewBeforeForCurrentData}\n />\n {hasLegend(attributes) && (\n <ChartLegend\n attributes={attributes}\n chartUuid={chartUuid}\n chartMetadata={chartMetadata}\n chartLibrary={chartLibrary}\n colors={colors}\n hoveredX={hoveredX}\n hoveredRow={hoveredRow}\n legendFormatValue={legendFormatValue}\n selectedDimensions={selectedDimensions}\n setSelectedDimensions={setSelectedDimensions}\n showLatestOnBlur={showLatestOnBlur}\n unitsCurrent={unitsCurrent}\n viewBefore={viewBefore}\n legendToolbox={legendToolbox}\n resizeHandler={resizeHandler}\n />\n )}\n {shouldDisplayToolbox && !isLegendOnBottom && (\n legendToolbox\n )}\n {!isLegendOnBottom && (\n resizeHandler\n )}\n </>\n )\n})\n","export const appHeaderHeight = \"56px\"\n\nexport const whitePure = [\"white\", \"pure\"]\n\nexport const redOrange = [\"red\", \"redOrange\"]\nexport const redOutrageousOrange = [\"red\", \"outrageousOrange\"]\nexport const redRoseWhite = [\"red\", \"roseWhite\"]\n\nexport const yellowSafron = [\"yellow\", \"safron\"]\nexport const yellowSafronMango = [\"yellow\", \"safronMango\"]\n\nexport const greenHaze = [\"green\", \"greenHaze\"]\nexport const greenMalachite = [\"green\", \"malachite\"]\nexport const greenClearDay = [\"green\", \"clearDay\"]\n\nexport const grayBombay = [\"gray\", \"bombay\"]\nexport const grayLimedSpruce = [\"gray\", \"limedSpruce\"]\nexport const graySilverSand = [\"gray\", \"silverSand\"]\nexport const grayGallery = [\"gray\", \"gallery\"]\n\nexport const dangerColor = [\"danger\"]\nexport const borderColor = [\"borderColor\"]\nexport const textColor = [\"text\"]\nexport const errorColor = [\"error\"]\nexport const successColor = [\"success\"]\nexport const warningColor = [\"warning\"]\n","import styled from \"styled-components\"\nimport {\n getColor, Icon,\n} from \"@netdata/netdata-ui\"\n\nimport { grayLimedSpruce, graySilverSand } from \"styles/layout-constants\"\n\nexport const DropdownItem = styled.div`\n display: flex;\n flex-direction: start;\n align-items: center;\n color: ${getColor(grayLimedSpruce)};\n white-space: nowrap;\n & > svg use {\n fill: ${getColor(grayLimedSpruce)};\n }\n`\n\nexport const DropdownItemLabel = styled.span`\n margin-left: 12px;\n`\n\nexport const DotsBtn = styled(Icon)`\n width: 6px;\n height: 10px;\n cursor: pointer;\n & use {\n fill: ${getColor(grayLimedSpruce)};\n & :hover {\n fill: ${getColor(graySilverSand)};\n }\n }\n`\n","import React, { useState, ReactNode } from \"react\"\n\nimport { Attributes } from \"domains/chart/utils/transformDataAttributes\"\nimport { ChartMetadata } from \"domains/chart/chart-types\"\n\nimport { List, SimpleListItem } from \"@rmwc/list\"\nimport { MenuSurface, MenuSurfaceAnchor } from \"@rmwc/menu\"\n\nimport * as S from \"./styled\"\n\ninterface DropdownMenuCallbackProps {\n attributes: Attributes,\n chartMetadata: ChartMetadata,\n chartID: string,\n}\n\nexport type DropdownMenu = {\n icon: ReactNode,\n label: string,\n onClick: (dropdownMenuCallbackProps: DropdownMenuCallbackProps) => void,\n}[]\n\ninterface Props {\n attributes: Attributes\n chartID: string\n chartMetadata: ChartMetadata\n dropdownMenu: DropdownMenu\n}\n\nexport const ChartDropdown = ({\n attributes,\n chartID,\n chartMetadata,\n dropdownMenu,\n}: Props) => {\n const [isOpen, setIsOpen] = useState(false)\n\n const handleClose = () => {\n setIsOpen(false)\n }\n\n return (\n <>\n <S.DotsBtn\n name=\"dots_2x3\"\n onClick={() => {\n setIsOpen(true)\n }}\n />\n <MenuSurfaceAnchor>\n <MenuSurface open={isOpen} onClose={handleClose}>\n <List>\n {dropdownMenu.map(({ icon, label, onClick }) => (\n <SimpleListItem\n key={label}\n text={(\n <S.DropdownItem>\n {icon}\n <S.DropdownItemLabel>\n {label}\n </S.DropdownItemLabel>\n </S.DropdownItem>\n )}\n onClick={() => {\n onClick({ attributes, chartMetadata, chartID })\n handleClose()\n }}\n />\n ))}\n </List>\n </MenuSurface>\n </MenuSurfaceAnchor>\n </>\n )\n}\n","import { prop } from \"ramda\"\nimport styled, { keyframes } from \"styled-components\"\n\nimport { getColor } from \"@netdata/netdata-ui\"\n\nconst circleAnimation = keyframes`\n 0% {\n opacity: .1;\n }\n 50% {\n opacity: .5;\n }\n 100% {\n opacity: .1;\n }\n`\n\n\nexport const SpinnerContainer = styled.div<{ top: number, right: number }>`\n position: absolute;\n top: ${prop(\"top\")}px;\n right: ${prop(\"right\")}px;\n display: flex;\n`\n\nexport const Circle = styled.div<{ size: number }>`\n width: ${prop(\"size\")}px;\n height: ${prop(\"size\")}px;\n background: ${getColor(\"border\")};\n border-radius: 50%;\n animation: 1s linear infinite both ${circleAnimation};\n`\n\nexport const Circle2 = styled(Circle)<{ spaceBetween: number }>`\n animation-delay: .3s; \n margin-left: ${prop(\"spaceBetween\")}px;\n`\n\nexport const Circle3 = styled(Circle)<{ spaceBetween: number }>`\n animation-delay: .6s; \n margin-left: ${prop(\"spaceBetween\")}px;\n`\n","import React from \"react\"\n\nimport * as S from \"./styled\"\n\ninterface Props {\n chartLibrary: string\n}\nexport const ChartSpinner = ({\n chartLibrary,\n}: Props) => {\n const top = chartLibrary === \"dygraph\" ? 33 : 0\n const right = chartLibrary === \"dygraph\" ? 8 : 0\n const size = chartLibrary === \"dygraph\" ? 10 : 7\n const spaceBetween = chartLibrary === \"dygraph\" ? 4 : 2\n return (\n <S.SpinnerContainer top={top} right={right}>\n <S.Circle size={size} />\n <S.Circle2 size={size} spaceBetween={spaceBetween} />\n <S.Circle3 size={size} spaceBetween={spaceBetween} />\n </S.SpinnerContainer>\n )\n}\n","import styled from \"styled-components\"\n\nimport { chartDropdownZIndex } from \"styles/z-index\"\n\nexport const ChartDropdownContainer = styled.div`\n position: absolute;\n top: 0;\n left: 40px;\n width: 20px;\n height: 20px;\n z-index: ${chartDropdownZIndex};\n`\n","export const notificationsZIndex = \"z-index: 50;\"\n\nexport const chartDropdownZIndex = 10\n\nexport const spacesBarZIndex = 8\n\nexport const spacePanelZIndex = 6\n\nexport const appHeaderZIndex = 5\n\n// the same as in cloud\nexport const portalSidebarZIndex = \"z-index: 35;\"\nexport const customDropdownZIndex = \"z-index: 45;\"\nexport const dialogsZIndex = 60\n","import { cond, always, T } from \"ramda\"\nimport axios from \"axios\"\nimport React, { useEffect, useState, useMemo, useLayoutEffect } from \"react\"\nimport { useThrottle, useUpdateEffect, useUnmount, useDebounce } from \"react-use\"\n\nimport { AppStateT } from \"store/app-state\"\nimport { useSelector, useDispatch } from \"store/redux-separate-context\"\n\nimport {\n selectGlobalPanAndZoom,\n selectGlobalSelection,\n selectShouldEliminateZeroDimensions,\n selectPanAndZoomDataPadding,\n selectSnapshot,\n selectSpacePanelTransitionEndIsActive,\n selectDefaultAfter,\n} from \"domains/global/selectors\"\nimport { serverDefault } from \"utils/server-detection\"\nimport { CHART_UNMOUNTED } from \"utils/netdata-sdk\"\nimport { getCorrectedPoints } from \"utils/fill-missing-data\"\n\nimport { fallbackUpdateTimeInterval, panAndZoomDelay } from \"../../constants\"\nimport { getChartURLOptions } from \"../../utils/get-chart-url-options\"\nimport { chartLibrariesSettings } from \"../../utils/chartLibrariesSettings\"\nimport { Attributes } from \"../../utils/transformDataAttributes\"\nimport { getChartPixelsPerPoint } from \"../../utils/get-chart-pixels-per-point\"\nimport { useFetchNewDataClock } from \"../../hooks/use-fetch-new-data-clock\"\n\nimport { fetchChartAction, fetchDataAction } from \"../../actions\"\nimport {\n selectChartData,\n selectChartFetchDataParams,\n makeSelectChartMetadataRequest,\n selectChartPanAndZoom,\n selectChartIsFetchingData,\n selectChartViewRange,\n} from \"../../selectors\"\nimport {\n ChartData,\n ChartMetadata,\n D3pieChartData,\n DygraphData,\n EasyPieChartData,\n} from \"../../chart-types\"\n\nimport { Loader } from \"../loader\"\nimport { Chart } from \"../chart\"\nimport { ChartDropdown, DropdownMenu } from \"../chart-dropdown\"\nimport { ChartSpinner } from \"../chart-spinner/chart-spinner\"\n\nimport * as S from \"./styled\"\nimport \"./chart-with-loader.css\"\n\nexport type RenderCustomElementForDygraph = (selectedChartConfiguration: {\n attributes: Attributes\n onAttributesChange: any\n chartMetadata: ChartMetadata\n chartID: string\n chartData: ChartData | null\n}) => JSX.Element\n\nconst dimensionsAggrMethodMap = {\n \"sum-of-abs\": \"sum\",\n}\n\nconst emptyArray = [] as any\n\nexport type Props = {\n attributes: Attributes\n chartUuid: string\n uuid?: string\n dropdownMenu?: DropdownMenu\n externalChartMetadata?: ChartMetadata\n portalNode: HTMLElement\n renderCustomElementForDygraph?: RenderCustomElementForDygraph\n onAttributesChange?: any\n}\n\nexport const ChartWithLoader = ({\n attributes,\n chartUuid,\n uuid,\n dropdownMenu,\n externalChartMetadata,\n portalNode,\n renderCustomElementForDygraph,\n onAttributesChange,\n}: Props) => {\n /**\n * fetch chart details\n */\n const { host = serverDefault, id, nodeIDs } = attributes\n const dispatch = useDispatch()\n const selectChartMetadataRequest = useMemo(makeSelectChartMetadataRequest, [])\n const { chartMetadata, isFetchingDetails } = useSelector((state: AppStateT) =>\n selectChartMetadataRequest(state, { chartId: id, id: chartUuid })\n )\n const actualChartMetadata = externalChartMetadata || chartMetadata\n useEffect(() => {\n if (!chartMetadata && !isFetchingDetails && !externalChartMetadata) {\n dispatch(\n fetchChartAction.request({\n chart: id,\n id: chartUuid,\n host,\n nodeIDs,\n })\n )\n }\n }, [\n id,\n chartUuid,\n dispatch,\n host,\n isFetchingDetails,\n chartMetadata,\n externalChartMetadata,\n nodeIDs,\n uuid,\n ])\n\n // todo local state option\n const globalPanAndZoom = useSelector(selectGlobalPanAndZoom)\n const chartPanAndZoom = useSelector((state: AppStateT) =>\n selectChartPanAndZoom(state, { id: chartUuid })\n )\n const panAndZoom = chartPanAndZoom || globalPanAndZoom\n\n const isPanAndZoomMaster =\n (!!globalPanAndZoom && globalPanAndZoom.masterID === chartUuid) || Boolean(chartPanAndZoom)\n const shouldForceTimeRange = panAndZoom?.shouldForceTimeRange || false\n\n // (isRemotelyControlled === false) only during globalPanAndZoom, when chart is panAndZoomMaster\n // and when no toolbox is used at that time\n const isRemotelyControlled = !panAndZoom || !isPanAndZoomMaster || shouldForceTimeRange // used when zooming/shifting in toolbox\n\n const fetchDataParams = useSelector((state: AppStateT) =>\n selectChartFetchDataParams(state, { id: chartUuid })\n )\n const viewRange = useSelector((state: AppStateT) =>\n selectChartViewRange(state, { id: chartUuid })\n )\n const chartData = useSelector((state: AppStateT) => selectChartData(state, { id: chartUuid }))\n const isFetchingData = useSelector((state: AppStateT) =>\n selectChartIsFetchingData(state, { id: chartUuid })\n )\n\n const hoveredX = useSelector(selectGlobalSelection)\n\n // periodical update of newest data\n // default to 2000ms. When chartMetadata has been fetched, use chartMetadata.update_every\n // if chartData has been fetched, use chartData.view_update_every instead\n // todo add support to \"data-update-every\" attribute\n const viewUpdateEvery = cond([\n [always(!!chartData), () => (chartData as ChartData).view_update_every * 1000],\n [\n always(!!actualChartMetadata),\n () => (actualChartMetadata as ChartMetadata).update_every * 1000,\n ],\n [T, always(fallbackUpdateTimeInterval)],\n ])()\n const [shouldFetch, setShouldFetch] = useFetchNewDataClock({\n areCriteriaMet: !panAndZoom && !hoveredX,\n preferedIntervalTime: viewUpdateEvery,\n })\n\n const panAndZoomThrottled = useThrottle(panAndZoom, panAndZoomDelay)\n useEffect(() => {\n setShouldFetch(true)\n }, [panAndZoomThrottled, setShouldFetch])\n\n const defaultAfter = useSelector(selectDefaultAfter)\n // when after/before changes, don't wait for next interval, just fetch immediately\n useUpdateEffect(() => {\n setShouldFetch(true)\n }, [\n attributes.after,\n attributes.before,\n defaultAfter,\n attributes.dimensions,\n attributes.aggrMethod,\n attributes.groupBy,\n ])\n\n const { before: initialBefore = window.NETDATA.chartDefaults.before } = attributes\n\n // attributes.after should be now used only for old custom dashboard\n // and in the future for setting timeframe per-chart\n const liveModeAfter = attributes.after || defaultAfter\n\n const chartSettings = chartLibrariesSettings[attributes.chartLibrary]\n const { hasLegend } = chartSettings\n\n // todo optimize by using resizeObserver (optionally)\n const boundingClientRect = portalNode.getBoundingClientRect()\n\n // from old dashboard\n const chartWidth = boundingClientRect.width - (hasLegend(attributes) ? 140 : 0)\n const chartHeight = boundingClientRect.height\n\n const isShowingSnapshot = Boolean(useSelector(selectSnapshot))\n const shouldEliminateZeroDimensions =\n useSelector(selectShouldEliminateZeroDimensions) || isShowingSnapshot\n const shouldUsePanAndZoomPadding = useSelector(selectPanAndZoomDataPadding)\n\n const { CancelToken } = axios\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const cancelTokenSource = useMemo(() => CancelToken.source(), [])\n useUnmount(() => {\n cancelTokenSource.cancel(CHART_UNMOUNTED)\n })\n\n /**\n * spinner state\n * show spinner when it's fetching for more than 2 seconds\n * hide spinner immediately when it's not fetching\n */\n const [shouldShowSpinnerDebounced, setShouldShowSpinnerDebounced] = useState(false)\n const shouldShowSpinner = shouldShowSpinnerDebounced && isFetchingData\n useDebounce(\n () => {\n if (isFetchingData) {\n setShouldShowSpinnerDebounced(true)\n }\n },\n 2000,\n [isFetchingData]\n )\n useEffect(() => {\n if (!isFetchingData && shouldShowSpinnerDebounced) {\n setShouldShowSpinnerDebounced(false)\n }\n }, [isFetchingData, shouldShowSpinnerDebounced])\n\n /**\n * fetch data\n */\n useEffect(() => {\n if (shouldFetch && actualChartMetadata && !isFetchingData) {\n // todo can be overriden by main.js\n const forceDataPoints = window.NETDATA.options.force_data_points\n\n let after\n let before\n let newViewRange\n let pointsMultiplier = 1\n\n if (panAndZoom) {\n if (isPanAndZoomMaster) {\n after = Math.round(panAndZoom.after / 1000)\n before = Math.round(panAndZoom.before / 1000)\n\n newViewRange = [after, before]\n\n if (shouldUsePanAndZoomPadding) {\n const requestedPadding = Math.round((before - after) / 2)\n after -= requestedPadding\n before += requestedPadding\n pointsMultiplier = 2\n }\n } else {\n after = Math.round(panAndZoom.after / 1000)\n before = Math.round(panAndZoom.before / 1000)\n pointsMultiplier = 1\n }\n } else {\n // no panAndZoom\n before = initialBefore\n after = liveModeAfter\n pointsMultiplier = 1\n }\n\n newViewRange = (newViewRange || [after, before]).map(x => x * 1000) as [number, number]\n\n const dataPoints =\n attributes.points ||\n Math.round(chartWidth / getChartPixelsPerPoint({ attributes, chartSettings }))\n const points = forceDataPoints || dataPoints * pointsMultiplier\n\n const shouldForceTimeWindow = attributes.forceTimeWindow || Boolean(defaultAfter)\n // if we want to add fake points, we need first need to request less\n // to have the desired frequency\n // this will be removed when Agents will support forcing time-window between points\n const correctedPoints = shouldForceTimeWindow\n ? getCorrectedPoints({\n after,\n before,\n firstEntry: actualChartMetadata.first_entry,\n points,\n })\n : null\n\n const group = attributes.method || window.NETDATA.chartDefaults.method\n setShouldFetch(false)\n dispatch(\n fetchDataAction.request({\n // properties to be passed to API\n host,\n context: actualChartMetadata.context,\n chart: actualChartMetadata.id,\n format: chartSettings.format,\n points: correctedPoints || points,\n group,\n gtime: attributes.gtime || 0,\n options: getChartURLOptions(attributes, shouldEliminateZeroDimensions),\n after: after || null,\n before: before || null,\n dimensions: attributes.dimensions,\n labels: attributes.labels,\n postGroupBy: attributes.postGroupBy,\n postAggregationMethod: attributes.postAggregationMethod,\n aggrMethod: attributes.aggrMethod,\n aggrGroups: attributes.aggrGroups,\n // @ts-ignore\n dimensionsAggrMethod:\n dimensionsAggrMethodMap[attributes.dimensionsAggrMethod] ||\n attributes.dimensionsAggrMethod,\n nodeIDs,\n httpMethod: attributes.httpMethod,\n groupBy: attributes.groupBy,\n\n // properties for the reducer\n fetchDataParams: {\n // we store it here so it is only available when data is fetched\n // those params should be synced with data\n fillMissingPoints: correctedPoints ? points - correctedPoints : undefined,\n isRemotelyControlled,\n viewRange: newViewRange,\n },\n id: chartUuid,\n cancelTokenSource,\n })\n )\n }\n }, [\n attributes,\n actualChartMetadata,\n chartSettings,\n chartUuid,\n chartWidth,\n defaultAfter,\n dispatch,\n hasLegend,\n host,\n initialBefore,\n isFetchingData,\n isPanAndZoomMaster,\n isRemotelyControlled,\n liveModeAfter,\n panAndZoom,\n portalNode,\n setShouldFetch,\n shouldEliminateZeroDimensions,\n shouldUsePanAndZoomPadding,\n shouldFetch,\n cancelTokenSource,\n nodeIDs,\n uuid,\n ])\n\n useSelector(selectSpacePanelTransitionEndIsActive)\n\n const externalSelectedDimensions = attributes?.selectedDimensions\n const [selectedDimensions, setSelectedDimensions] = useState<string[]>(\n externalSelectedDimensions || emptyArray\n )\n\n useLayoutEffect(() => {\n if (externalSelectedDimensions) {\n setSelectedDimensions(externalSelectedDimensions)\n }\n }, [externalSelectedDimensions])\n\n useLayoutEffect(() => {\n setSelectedDimensions(externalSelectedDimensions || emptyArray)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [attributes?.groupBy])\n\n const customElementForDygraph = useMemo(\n () =>\n renderCustomElementForDygraph &&\n renderCustomElementForDygraph({\n onAttributesChange,\n attributes,\n chartMetadata: actualChartMetadata as ChartMetadata,\n chartData,\n chartID: id,\n }),\n [\n onAttributesChange,\n renderCustomElementForDygraph,\n attributes,\n id,\n actualChartMetadata,\n chartData,\n ]\n )\n\n // eslint-disable-next-line max-len\n const hasEmptyData =\n (chartData as DygraphData | D3pieChartData | null)?.result?.data?.length === 0 ||\n (chartData as EasyPieChartData | null)?.result?.length === 0\n\n if (!chartData || !actualChartMetadata) {\n return (\n <>\n <Loader\n // Loader should remount when that flag is changed, because inside\n // there's an oldschool bootstrap icon which doesn't handle updates well\n key={`${hasEmptyData}`}\n hasEmptyData={hasEmptyData}\n containerNode={portalNode}\n />\n {shouldShowSpinner && <ChartSpinner chartLibrary={attributes.chartLibrary} />}\n </>\n )\n }\n\n return (\n <>\n {hasEmptyData && (\n <Loader key={`${hasEmptyData}`} hasEmptyData={hasEmptyData} containerNode={portalNode} />\n )}\n <Chart\n attributes={attributes}\n chartContainerElement={portalNode}\n chartData={chartData}\n chartMetadata={actualChartMetadata}\n chartUuid={chartUuid}\n chartHeight={chartHeight}\n chartWidth={chartWidth}\n defaultAfter={defaultAfter}\n globalPanAndZoom={globalPanAndZoom}\n hasEmptyData={hasEmptyData}\n isRemotelyControlled={fetchDataParams.isRemotelyControlled}\n // view range that updates only when data is fetched\n viewRangeForCurrentData={fetchDataParams.viewRange}\n // view range that updates when requesting and fetching of data\n viewRange={viewRange!}\n selectedDimensions={selectedDimensions}\n setSelectedDimensions={setSelectedDimensions}\n showLatestOnBlur={!panAndZoom}\n />\n {shouldShowSpinner && <ChartSpinner chartLibrary={attributes.chartLibrary} />}\n {dropdownMenu && dropdownMenu.length > 0 && (\n <S.ChartDropdownContainer>\n <ChartDropdown\n dropdownMenu={dropdownMenu}\n chartID={id}\n attributes={attributes}\n chartMetadata={actualChartMetadata}\n />\n </S.ChartDropdownContainer>\n )}\n {customElementForDygraph}\n </>\n )\n}\n","import { useEffect, useState } from \"react\"\nimport { useInterval } from \"react-use\"\n\nimport { useSelector } from \"store/redux-separate-context\"\nimport { selectHasWindowFocus, selectStopUpdatesWhenFocusIsLost } from \"domains/global/selectors\"\nimport { BIGGEST_INTERVAL_NUMBER } from \"utils/biggest-interval-number\"\nimport { isPrintMode } from \"domains/dashboard/utils/parse-url\"\n\n\ntype UseFetchNewDataClock = (arg: {\n areCriteriaMet: boolean\n preferedIntervalTime: number\n}) => [boolean, (shouldFetch: boolean) => void]\nexport const useFetchNewDataClock: UseFetchNewDataClock = ({\n areCriteriaMet,\n preferedIntervalTime,\n}) => {\n const hasWindowFocus = useSelector(selectHasWindowFocus)\n const stopUpdatesWhenFocusIsLost = useSelector(selectStopUpdatesWhenFocusIsLost)\n const shouldBeUpdating = !(!hasWindowFocus && stopUpdatesWhenFocusIsLost)\n\n const [shouldFetch, setShouldFetch] = useState<boolean>(true)\n const [shouldFetchImmediatelyAfterFocus, setShouldFetchImmediatelyAfterFocus] = useState(false)\n\n useEffect(() => {\n if (shouldFetchImmediatelyAfterFocus && shouldBeUpdating) {\n setShouldFetchImmediatelyAfterFocus(false)\n setShouldFetch(true)\n }\n }, [shouldFetchImmediatelyAfterFocus, setShouldFetchImmediatelyAfterFocus, shouldBeUpdating])\n\n // don't use setInterval when we loose focus\n const intervalTime = ((shouldBeUpdating || !shouldFetchImmediatelyAfterFocus) && !isPrintMode)\n ? preferedIntervalTime\n : BIGGEST_INTERVAL_NUMBER\n useInterval(() => {\n if (areCriteriaMet) {\n if (!shouldBeUpdating) {\n setShouldFetchImmediatelyAfterFocus(true)\n return\n }\n setShouldFetch(true)\n }\n // when there's no focus, don't ask for updated data\n }, intervalTime)\n return [shouldFetch, setShouldFetch]\n}\n","import { Attributes } from \"./transformDataAttributes\"\nimport { ChartLibraryConfig } from \"./chartLibrariesSettings\"\n\ntype GetChartPixelsPerPoint = (arg: {\n attributes: Attributes,\n chartSettings: ChartLibraryConfig,\n}) => number\n\nexport const getChartPixelsPerPoint: GetChartPixelsPerPoint = ({\n attributes, chartSettings,\n}) => {\n const {\n pixelsPerPoint: pixelsPerPointAttribute,\n } = attributes\n if (typeof pixelsPerPointAttribute === \"number\") {\n return pixelsPerPointAttribute\n }\n const pixelsPerPointSetting = chartSettings.pixelsPerPoint(attributes)\n\n return Math.max(...[\n pixelsPerPointSetting,\n window.NETDATA.options.current.pixels_per_point,\n ].filter((px) => typeof px === \"number\"))\n}\n","import { prop, pick } from \"ramda\"\nimport { createSelector } from \"reselect\"\n\nimport { AppStateT } from \"store/app-state\"\n\nimport { storeKey } from \"./constants\"\n\nconst selectDashboardDomain = (state: AppStateT) => state[storeKey]\n\nexport const selectIsSnapshotMode = createSelector(\n selectDashboardDomain,\n prop(\"isSnapshotMode\"),\n)\n\nexport const selectSnapshotOptions = createSelector(\n selectDashboardDomain,\n pick([\"snapshotCharts\", \"snapshotDataPoints\"]),\n)\n","import React, { useEffect } from \"react\"\n\nimport { MS_IN_SECOND } from \"utils/utils\"\nimport { serverDefault } from \"utils/server-detection\"\nimport { selectIsSnapshotMode, selectSnapshotOptions } from \"domains/dashboard/selectors\"\nimport { selectGlobalPanAndZoom } from \"domains/global/selectors\"\nimport { useDispatch, useSelector } from \"store/redux-separate-context\"\nimport { TimeRangeObjT } from \"types/common\"\n\nimport { Attributes } from \"../utils/transformDataAttributes\"\nimport { fetchDataForSnapshotAction } from \"../actions\"\nimport { chartLibrariesSettings } from \"../utils/chartLibrariesSettings\"\nimport { getChartURLOptions } from \"../utils/get-chart-url-options\"\n\ninterface SnapshotLoaderProps {\n attributes: Attributes\n chartUuid: string\n}\nconst SnapshotLoader = ({\n attributes,\n chartUuid,\n}: SnapshotLoaderProps) => {\n const host = attributes.host || serverDefault\n const { snapshotDataPoints } = useSelector(selectSnapshotOptions)\n const group = attributes.method || window.NETDATA.chartDefaults.method\n const { chartLibrary } = attributes\n const chartSettings = chartLibrariesSettings[chartLibrary]\n\n const globalPanAndZoom = useSelector(selectGlobalPanAndZoom)\n const after = (globalPanAndZoom as TimeRangeObjT).after / MS_IN_SECOND\n const before = (globalPanAndZoom as TimeRangeObjT).before / MS_IN_SECOND\n\n const dispatch = useDispatch()\n useEffect(() => {\n dispatch(fetchDataForSnapshotAction.request({\n // properties to be passed to API\n host,\n context: attributes.id,\n chart: attributes.id,\n format: chartSettings.format,\n points: snapshotDataPoints as number,\n group,\n gtime: attributes.gtime || 0,\n // for snapshots, always eliminate zero dimensions\n options: getChartURLOptions(attributes, true),\n after: after || null,\n before: before || null,\n dimensions: attributes.dimensions,\n aggrMethod: attributes.aggrMethod,\n nodeIDs: attributes.nodeIDs,\n chartLibrary,\n id: chartUuid,\n groupBy: attributes.groupBy,\n }))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }) // todo fetch based on state\n return null\n}\n\n\ninterface SnapshotLoaderContainerProps {\n attributes: Attributes\n chartUuid: string\n}\nexport const SnapshotLoaderContainer = ({\n attributes,\n chartUuid,\n}: SnapshotLoaderContainerProps) => {\n const isSnapshotMode = useSelector(selectIsSnapshotMode)\n if (!isSnapshotMode) {\n return null\n }\n return <SnapshotLoader attributes={attributes} chartUuid={chartUuid} />\n}\n","import React, { memo } from \"react\"\nimport { createPortal } from \"react-dom\"\n\nimport { getAttributes } from \"../utils/transformDataAttributes\"\nimport { ChartWithLoader } from \"./chart-with-loader\"\nimport { DisableOutOfView } from \"./disable-out-of-view\"\nimport { SnapshotLoaderContainer } from \"./snapshot-loader\"\n\nconst getNodesArray = () => Array.from(document.querySelectorAll(\"[data-netdata]\"))\n\nexport const Portals = memo(() => {\n const nodes = getNodesArray()\n return (\n <>\n {nodes.map((node, index) => {\n const attributesMapped = getAttributes(node)\n const chartId = `${attributesMapped.id}-${index}`\n return (\n createPortal(\n <>\n <DisableOutOfView\n attributes={attributesMapped}\n chartUuid={chartId}\n portalNode={(node as HTMLElement)}\n >\n <ChartWithLoader\n attributes={attributesMapped}\n // todo change to uuid generator (when we disconnect dashboard.js)\n chartUuid={chartId}\n portalNode={(node as HTMLElement)}\n />\n </DisableOutOfView>\n <SnapshotLoaderContainer\n attributes={attributesMapped}\n chartUuid={chartId}\n />\n </>,\n node,\n )\n )\n })}\n </>\n )\n})\n","import { useEffect, useState } from \"react\"\n\nimport { axiosInstance } from \"utils/api\"\n\nexport const useHttp = <T = unknown>(\n url: string | undefined,\n shouldMakeCall : boolean = true,\n isExternal?: boolean,\n) => {\n const [isFetching, setIsFetching] = useState(false)\n const [isError, setIsError] = useState(false)\n const [data, setData] = useState<T | null>(null)\n useEffect(() => {\n if (shouldMakeCall && url) {\n const options = isExternal\n ? { headers: null, withCredentials: false }\n : {}\n\n setIsFetching(true)\n axiosInstance.get(url, options)\n .then((r) => {\n if (r.data) {\n setData(r.data)\n setIsError(false)\n setIsFetching(false)\n }\n })\n .catch((error) => {\n // eslint-disable-next-line no-console\n console.warn(`error fetching ${url}`, error)\n setIsError(true)\n setIsFetching(false)\n })\n }\n }, [isExternal, shouldMakeCall, url])\n // force triple instead of array\n return [data, isFetching, isError] as [T | null, boolean, boolean]\n}\n","import { ReactNode, useEffect, useRef } from \"react\"\nimport { createPortal } from \"react-dom\"\n\nconst modalRoot = document.getElementById(\"modal-root\") as HTMLElement\n\ntype Props = {\n children: ReactNode\n}\nexport const ModalPortal = ({ children }: Props) => {\n const element = useRef(document.createElement(\"div\"))\n useEffect(() => {\n modalRoot.appendChild(element.current)\n return () => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n modalRoot.removeChild(element.current)\n }\n }, [])\n\n return createPortal(children, element.current)\n}\n","import React, { useRef, useEffect } from \"react\"\nimport classNames from \"classnames\"\n\nimport { useSelector } from \"store/redux-separate-context\"\nimport { ModalPortal } from \"domains/dashboard/components/modal-portal\"\nimport {\n selectAmountOfCharts, selectAmountOfFetchedCharts, selectNameOfAnyFetchingChart,\n} from \"domains/chart/selectors\"\n\nimport \"./print-modal.scss\"\n\nconst TIMEOUT_DURATION_TO_MAKE_SURE_ALL_CHARTS_HAVE_BEEN_RENDERED = 1000\n\nexport const PrintModal = () => {\n const printModalElement = useRef<HTMLDivElement>(null)\n const isFetchingMetrics = true\n\n useEffect(() => {\n // todo replace bootstrap with newer solution (custom or react-compatible library)\n if (printModalElement.current) {\n const $element = window.$(printModalElement.current)\n $element.modal(\"show\")\n }\n }) // render just once\n\n const amountOfCharts = useSelector(selectAmountOfCharts)\n const amountOfFetchedCharts = useSelector(selectAmountOfFetchedCharts)\n const nameOfAnyFetchingChart = useSelector(selectNameOfAnyFetchingChart)\n\n const percentage = amountOfCharts === 0\n ? 0\n : (amountOfFetchedCharts / amountOfCharts) * 100\n\n useEffect(() => {\n if (percentage === 100) {\n setTimeout(() => {\n // in case browser will not be able to close the window\n window.$(printModalElement.current).modal(\"hide\")\n window.print()\n window.close()\n }, TIMEOUT_DURATION_TO_MAKE_SURE_ALL_CHARTS_HAVE_BEEN_RENDERED)\n }\n }, [percentage])\n\n\n const progressBarText = nameOfAnyFetchingChart\n && `${Math.round(percentage)}%, ${nameOfAnyFetchingChart}`\n\n\n return (\n <ModalPortal>\n <div\n ref={printModalElement}\n className=\"modal fade\"\n id=\"printModal\"\n tabIndex={-1}\n role=\"dialog\"\n aria-labelledby=\"printModalLabel\"\n data-keyboard=\"false\"\n data-backdrop=\"static\"\n >\n <div className=\"modal-dialog modal-lg\" role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n type=\"button\"\n className={classNames(\n \"close\",\n { \"print-modal__close-button--disabled\": isFetchingMetrics },\n )}\n data-dismiss=\"modal\"\n aria-label=\"Close\"\n >\n <span aria-hidden=\"true\">&times;</span>\n </button>\n <h4 className=\"modal-title\" id=\"printModalLabel\">\n Preparing dashboard for printing...\n </h4>\n </div>\n <div className=\"modal-body\">\n Please wait while we initialize and render all the charts on the dashboard.\n <div\n className=\"progress progress-striped active\"\n style={{ height: \"2em\" }}\n >\n <div\n id=\"printModalProgressBar\"\n className=\"progress-bar progress-bar-info\"\n role=\"progressbar\"\n aria-valuenow={percentage}\n aria-valuemin={0}\n aria-valuemax={100}\n style={{\n minWidth: \"2em\",\n width: `${percentage}%`,\n }}\n >\n <span\n id=\"printModalProgressBarText\"\n style={{\n paddingLeft: 10,\n paddingTop: 4,\n fontSize: \"1.2em\",\n textAlign: \"left\",\n width: \"100%\",\n position: \"absolute\",\n display: \"block\",\n color: \"black\",\n }}\n >\n {progressBarText}\n </span>\n </div>\n </div>\n The print dialog will appear as soon as we finish rendering the page.\n </div>\n <div className=\"modal-footer\" />\n </div>\n </div>\n </div>\n </ModalPortal>\n )\n}\n","import styled from \"styled-components\"\nimport { getSizeBy, getColor } from \"@netdata/netdata-ui\"\n\nexport const SocialMediaContainer = styled.div`\n width: 185px;\n padding: ${getSizeBy(2)};\n background: ${getColor(\"borderSecondary\")};\n\n font-size: 12px;\n margin-bottom: ${getSizeBy(3)};\n`\n\nexport const FirstRow = styled.div`\n display: flex;\n justify-content: space-between;\n`\n\nexport const GithubCopy = styled.div`\n\n`\n\nexport const GithubCopyLine = styled.div`\n\n`\n\nexport const SocialMediaLink = styled.a`\n &, &:hover {\n color: ${getColor(\"main\")};\n }\n`\n\nexport const GithubStarQuestion = styled(SocialMediaLink)``\n\nexport const GithubIcon = styled(SocialMediaLink)`\n font-size: 24px;\n`\n\nexport const TwitterIcon = styled(SocialMediaLink)`\n font-size: 17px;\n`\n\nexport const FacebookIcon = styled(SocialMediaLink)`\n font-size: 23px;\n`\n\nexport const Separator = styled.div`\n margin-top: ${getSizeBy(2)};\n border-top: 1px solid ${getColor(\"separator\")};\n\n`\nexport const SecondRow = styled.div`\n margin-top: ${getSizeBy(2)};\n display: flex;\n align-items: center;\n justify-content: space-between;\n`\n\nexport const SecondRowText = styled.span`\n font-size: 10px;\n`\n","import React from \"react\"\n\nimport * as S from \"./styled\"\n\nexport const SidebarSocialMedia = () => (\n <S.SocialMediaContainer>\n <S.FirstRow>\n <S.GithubCopy>\n <S.GithubCopyLine>\n Do you like Netdata?\n </S.GithubCopyLine>\n <S.GithubStarQuestion href=\"https://github.com/netdata/netdata/\" target=\"_blank\">\n Give us a star!\n </S.GithubStarQuestion>\n </S.GithubCopy>\n <S.GithubIcon href=\"https://github.com/netdata/netdata/\" target=\"_blank\">\n <i className=\"fab fa-github\" />\n </S.GithubIcon>\n </S.FirstRow>\n <S.Separator />\n <S.SecondRow>\n <S.SecondRowText>\n And share the word!\n </S.SecondRowText>\n <S.TwitterIcon href=\"https://twitter.com/linuxnetdata/\" target=\"_blank\">\n <i className=\"fab fa-twitter\" />\n </S.TwitterIcon>\n <S.FacebookIcon href=\"https://www.facebook.com/linuxnetdata/\" target=\"_blank\">\n <i className=\"fab fa-facebook\" />\n </S.FacebookIcon>\n </S.SecondRow>\n </S.SocialMediaContainer>\n)\n","import React, { useRef } from \"react\"\nimport { createPortal } from \"react-dom\"\n\ninterface Props {\n children: React.ReactNode\n}\nexport const SidebarSocialMediaPortal = ({\n children,\n}: Props) => {\n const element = useRef(document.querySelector(\"#sidebar-end-portal-container\"))\n return createPortal(children, element.current!)\n}\n","import React from \"react\"\nimport styled from \"styled-components\"\nimport { ToastContainer, ToastContainerProps } from \"react-toastify\"\nimport \"react-toastify/dist/ReactToastify.min.css\"\n\nimport { getColor } from \"@netdata/netdata-ui\"\n\nimport { notificationsZIndex } from \"styles/z-index\"\n\nconst WrappedToastContainer = ({\n className,\n ...rest\n}: ToastContainerProps & { className?: string }) => (\n <div className={className}>\n {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n <ToastContainer {...rest} closeButton={false} />\n </div>\n)\n\nexport const NotificationsContainer = styled(WrappedToastContainer)<ToastContainerProps>`\n .Toastify__toast-container {\n position: fixed;\n width: unset;\n min-width: 400px;\n max-width: 500px;\n ${notificationsZIndex};\n color: ${getColor(\"text\")};\n }\n .Toastify__toast {\n padding: 0;\n padding-top: 5px;\n }\n .Toastify__toast--error {\n background: ${getColor([\"red\", \"roseWhite\"])};\n border: 1px solid ${getColor(\"error\")};\n }\n .Toastify__toast--warning {\n }\n .Toastify__toast--success {\n background: ${getColor([\"green\", \"clearDay\"])};\n border: 1px solid ${getColor(\"success\")};\n }\n .Toastify__toast-body {\n }\n .Toastify__progress-bar {\n bottom: unset;\n top: 0;\n }\n .Toastify__progress-bar--success {\n background-color: ${getColor(\"success\")};\n }\n .Toastify__progress-bar--error {\n background-color: ${getColor(\"error\")};\n }\n`\n","import React from \"react\"\nimport { Icon, Flex } from \"@netdata/netdata-ui\"\n\nconst Item = ({ icon, children, hasBorder }) => (\n <Flex\n gap={2}\n border={hasBorder && { side: \"right\", color: \"separator\" }}\n alignItems=\"center\"\n padding={[0, 3, 0, 0]}\n height=\"100%\"\n >\n {!!icon && <Icon name={icon} color=\"bright\" height=\"15px\" />}\n {children}\n </Flex>\n)\n\nexport default Item\n","import React from \"react\"\nimport { Text } from \"@netdata/netdata-ui\"\nimport Item from \"../item\"\nimport { useSelector } from \"@/src/store/redux-separate-context\"\n\nconst hostNameSelector = state => {\n const snapshot = state.global.snapshot\n const data = state.global.chartsMetadata.data\n\n if (!snapshot && !data) return \"\"\n return snapshot ? snapshot.hostname : data.hostname\n}\n\nconst Node = () => {\n const hostname = useSelector(hostNameSelector)\n\n return (\n <Item icon=\"node_hollow\">\n <Text color=\"bright\" strong truncate>\n {hostname}\n </Text>\n </Item>\n )\n}\n\nexport default Node\n","import React from \"react\"\nimport { Flex, Button } from \"@netdata/netdata-ui\"\n\nconst Options = () => {\n return (\n <Flex gap={2}>\n <Button\n flavour=\"borderless\"\n neutral\n themeType=\"dark\"\n data-toggle=\"modal\"\n data-target=\"#loadSnapshotModal\"\n icon=\"download\"\n title=\"Import a snapshot\"\n />\n <Button\n flavour=\"borderless\"\n neutral\n themeType=\"dark\"\n data-toggle=\"modal\"\n data-target=\"#saveSnapshotModal\"\n icon=\"upload\"\n title=\"Export a snapshot\"\n />\n <Button\n flavour=\"borderless\"\n neutral\n themeType=\"dark\"\n data-toggle=\"modal\"\n data-target=\"#printPreflightModal\"\n icon=\"print\"\n title=\"Print dashboard\"\n />\n </Flex>\n )\n}\n\nexport default Options\n","import React from \"react\"\nimport { Button } from \"@netdata/netdata-ui\"\n\nimport { useHttp } from \"hooks/use-http\"\n\nconst NETDATA_LATEST_VERSION_URL = \"https://api.github.com/repos/netdata/netdata/releases/latest\"\nconst NETDATA_LATEST_GCS_VERSION_URL =\n \"https://www.googleapis.com/storage/v1/b/netdata-nightlies/o/latest-version.txt\"\n\nconst transformGcsVersionResponse = (data: string) => data.replace(/(\\r\\n|\\n|\\r| |\\t)/gm, \"\")\n\n// eslint-disable-next-line camelcase\ninterface GithubResponse {\n tag_name: string\n}\nconst transformGithubResponse = (data: null | GithubResponse) =>\n // eslint-disable-next-line camelcase\n data?.tag_name.replace(/(\\r\\n|\\n|\\r| |\\t)/gm, \"\")\n\n// original function from main.js\nconst versionsMatch = (v1: string, v2: string) => {\n if (v1 === v2) {\n return true\n }\n let s1 = v1.split(\".\")\n let s2 = v2.split(\".\")\n // Check major version\n let n1 = parseInt(s1[0].substring(1, 2), 10)\n let n2 = parseInt(s2[0].substring(1, 2), 10)\n if (n1 < n2) return false\n if (n1 > n2) return true\n\n // Check minor version\n n1 = parseInt(s1[1], 10)\n n2 = parseInt(s2[1], 10)\n if (n1 < n2) return false\n if (n1 > n2) return true\n\n // Split patch: format could be e.g. 0-22-nightly\n s1 = s1[2].split(\"-\")\n s2 = s2[2].split(\"-\")\n\n n1 = parseInt(s1[0], 10)\n n2 = parseInt(s2[0], 10)\n if (n1 < n2) return false\n if (n1 > n2) return true\n\n n1 = s1.length > 1 ? parseInt(s1[1], 10) : 0\n n2 = s2.length > 1 ? parseInt(s2[1], 10) : 0\n if (n1 < n2) return false\n return true\n}\n\ninterface Props {\n currentVersion: string\n releaseChannel: string\n}\nexport const VersionControl = ({ currentVersion, releaseChannel }: Props) => {\n const isStableReleaseChannel = releaseChannel === \"stable\"\n const [githubVersion] = useHttp<GithubResponse>(\n NETDATA_LATEST_VERSION_URL,\n isStableReleaseChannel,\n true\n )\n\n const [gcsVersionResponse] = useHttp<{ mediaLink: string }>(\n NETDATA_LATEST_GCS_VERSION_URL,\n !isStableReleaseChannel\n )\n const [mediaLinkResponse] = useHttp<string>(\n gcsVersionResponse?.mediaLink,\n Boolean(gcsVersionResponse)\n )\n\n // eslint-disable-next-line no-nested-ternary\n const latestVersion = isStableReleaseChannel\n ? transformGithubResponse(githubVersion)\n : mediaLinkResponse\n ? transformGcsVersionResponse(mediaLinkResponse)\n : null\n\n if (!latestVersion) {\n return null\n }\n const isNewVersionAvailable = !versionsMatch(currentVersion, latestVersion)\n\n return (\n <Button\n flavour=\"borderless\"\n themeType=\"dark\"\n small\n neutral={!isNewVersionAvailable}\n warning={isNewVersionAvailable}\n name={isNewVersionAvailable ? \"update_pending\" : \"update\"}\n title={isNewVersionAvailable ? \"Need help?\" : \"Check Version\"}\n icon={isNewVersionAvailable ? \"update_pending\" : \"update\"}\n data-toggle=\"modal\"\n data-target=\"#updateModal\"\n />\n )\n}\n","import React from \"react\"\nimport { VersionControl } from \"components/app-header/components/version-control\"\nimport { useSelector } from \"@/src/store/redux-separate-context\"\n\nconst versionSelector = state => {\n const { data } = state.global.chartsMetadata\n\n if (!data) return null\n\n const { version, release_channel: releaseChannel } = data\n return {\n version,\n releaseChannel,\n }\n}\n\nconst Version = () => {\n const data = useSelector(versionSelector)\n return (\n data && <VersionControl currentVersion={data.version} releaseChannel={data.releaseChannel} />\n )\n}\n\nexport default Version\n","import styled from \"styled-components\"\nimport { getColor, getSizeBy, Icon } from \"@netdata/netdata-ui\"\nimport { Menu } from \"@rmwc/menu\"\n\nexport const RootContainer = styled.div`\n width: 100%;\n height: 100%;\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n`\n\nexport const StyledMenu = styled(Menu)``\n\nexport const DropdownContainer = styled.div`\n cursor: pointer;\n color: ${getColor(\"bright\")};\n .mdc-menu-surface {\n border-radius: 0;\n .mdc-list {\n padding: 0;\n }\n .mdc-list-item {\n padding: 0 ${getSizeBy(5)} 0 ${getSizeBy(5)};\n font-size: 14px;\n height: ${getSizeBy(6)};\n }\n }\n`\n\nexport const ListContainer = styled.div`\n padding: ${getSizeBy(3)} 0;\n`\n\nexport const OpenerIcon = styled(Icon)<{ noMargin: boolean }>`\n flex-shrink: 0;\n flex-grow: 0;\n margin-left: ${({ noMargin }) => (noMargin ? \"unset\" : \"16px\")};\n fill: ${getColor(\"bright\")};\n width: 10px;\n height: 5px;\n`\n","import { DefaultTheme, DarkTheme } from \"@netdata/netdata-ui\"\n\nimport { DashboardTheme } from \"utils/map-theme\"\n\ninterface ThemeOptions {\n [index: string]: string\n}\n\nexport const themeOptions: { [index in DashboardTheme]: ThemeOptions } = {\n white: {\n background: DefaultTheme.colors.mainBackground,\n surface: DefaultTheme.colors.mainBackground,\n primary: DefaultTheme.colors.primary,\n secondary: DefaultTheme.colors.accent,\n error: DefaultTheme.colors.error,\n onPrimary: DefaultTheme.colors.bright,\n onSecondary: DefaultTheme.colors.bright,\n onSurface: DefaultTheme.colors.text,\n onError: DefaultTheme.colors.bright,\n dupaDupa: \"#ff00ff\",\n textPrimaryOnBackground: DefaultTheme.colors.text,\n textSecondaryOnBackground: DefaultTheme.colors.textFocus,\n textHintOnBackground: DefaultTheme.colors.text,\n textDisabledOnBackground: DefaultTheme.colors.disabled,\n textIconOnBackground: DefaultTheme.colors.text,\n textPrimaryOnLight: DarkTheme.colors.text,\n textSecondaryOnLight: DarkTheme.colors.textFocus,\n textHintOnLight: DarkTheme.colors.text,\n textDisabledOnLight: DarkTheme.colors.disabled,\n textIconOnLight: DarkTheme.colors.text,\n textPrimaryOnDark: DefaultTheme.colors.text,\n textSecondaryOnDark: DefaultTheme.colors.textFocus,\n textHintOnDark: DefaultTheme.colors.text,\n textDisabledOnDark: DefaultTheme.colors.disabled,\n textIconOnDark: DefaultTheme.colors.text,\n },\n slate: {\n background: DarkTheme.colors.mainBackground,\n surface: DarkTheme.colors.mainBackground,\n primary: DarkTheme.colors.primary,\n secondary: DarkTheme.colors.accent,\n error: DarkTheme.colors.error,\n onPrimary: DarkTheme.colors.bright,\n onSecondary: DarkTheme.colors.bright,\n onSurface: DarkTheme.colors.text,\n onError: DarkTheme.colors.bright,\n textPrimaryOnBackground: DarkTheme.colors.text,\n textSecondaryOnBackground: DarkTheme.colors.textFocus,\n textHintOnBackground: DarkTheme.colors.text,\n textDisabledOnBackground: DarkTheme.colors.disabled,\n textIconOnBackground: DarkTheme.colors.text,\n textPrimaryOnLight: DefaultTheme.colors.text,\n textSecondaryOnLight: DefaultTheme.colors.textFocus,\n textHintOnLight: DefaultTheme.colors.text,\n textDisabledOnLight: DefaultTheme.colors.disabled,\n textIconOnLight: DefaultTheme.colors.text,\n textPrimaryOnDark: DarkTheme.colors.text,\n textSecondaryOnDark: DarkTheme.colors.textFocus,\n textHintOnDark: DarkTheme.colors.text,\n textDisabledOnDark: DarkTheme.colors.disabled,\n textIconOnDark: DarkTheme.colors.text,\n },\n}\n","import { ThemeProvider } from \"@rmwc/theme\"\nimport React from \"react\"\nimport { themeOptions } from \"services/ui-service/ui-theming\"\nimport { useSelector } from \"store/redux-separate-context\"\nimport { selectTheme } from \"domains/global/selectors\"\n\ninterface Props {\n children: React.ReactNode | React.ReactNode[]\n}\n\nexport const RMWCThemeProvider = ({ children }: Props) => {\n const theme = useSelector(selectTheme)\n return <ThemeProvider options={themeOptions[theme]}>{children}</ThemeProvider>\n}\n\nexport const withRMWCThemeProvider = (Component: any) => (props: any) => (\n <RMWCThemeProvider>\n {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n <Component {...props} />\n </RMWCThemeProvider>\n)\n","import styled from \"styled-components\"\n\nimport {\n getColor, getSizeBy, Text, Icon, PortalSidebar,\n} from \"@netdata/netdata-ui\"\n\nimport { dialogsZIndex, customDropdownZIndex, portalSidebarZIndex } from \"styles/z-index\"\n// todo move those components to netdata-ui to reuse them with the cloud\nimport { Dropdown } from \"components/mdx-components/dropdown\"\nimport { RMWCThemeProvider } from \"@/src/rmwc-theme-provider\"\n\n// todo fix \"any\"\nexport const StyledSidebar = (styled(PortalSidebar) as any).attrs(() => ({\n Wrapper: RMWCThemeProvider,\n}))`\n width: ${getSizeBy(83)};\n height: ${getSizeBy(51)};\n overflow: visible;\n top: ${getSizeBy(7)};\n ${portalSidebarZIndex}\n`\nexport const PickerBox = styled.div`\n display: flex;\n position: relative;\n min-width: ${getSizeBy(83)};\n min-height: ${getSizeBy(43)};\n flex-direction: column;\n align-items: flex-end;\n background-color: ${getColor(\"mainBackground\")};\n color: ${getColor(\"text\")};\n z-index: ${dialogsZIndex};\n`\nexport const HeaderSvg = styled.svg`\n fill: ${getColor(\"text\")};\n height: 14px;\n width: 14px;\n`\nexport const IconSpacer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n padding-right: ${getSizeBy()};\n`\n\nexport const PickerActionArea = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n justify-content: flex-end;\n`\nexport const PickerBtnArea = styled.div`\n bottom: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: ${getSizeBy(2)};\n width: 100%;\n`\n\nexport const ShortPickHeader = styled.div`\n display: flex;\n justify-content: flex-start;\n align-items: center;\n width: 100%;\n height: ${getSizeBy(2)};\n padding: ${getSizeBy(2)};\n color: ${getColor(\"text\")};\n font-weight: 700;\n line-height: 156px;\n height: 24px;\n margin-top: ${getSizeBy()};\n margin-bottom: ${getSizeBy()};\n margin-left: ${getSizeBy(2)};\n`\n\nexport const ShortPick = styled.div`\n display: flex;\n height: 100%;\n flex-direction: column;\n justify-content: center;\n align-items: flex-start;\n`\nexport const ShortPickElement = styled.div<{ isSelected?: boolean }>`\n display: flex;\n justify-content: flex-start;\n align-items: center;\n color: ${({ isSelected, theme }) => getColor(isSelected ? \"primary\" : \"text\")({ theme })};\n margin-left: ${getSizeBy(2)};\n margin-top: ${getSizeBy(2)};\n width: 187px;\n height: ${getSizeBy(2)};\n padding: ${getSizeBy(2)};\n cursor: pointer;\n &:hover {\n color: ${getColor(\"primary\")};\n }\n`\nexport const AccessorBox = styled.div`\n width: 100%;\n display: flex;\n justify-content: start;\n color: ${getColor(\"text\")};\n align-items: center;\n height: 40px;\n padding: 0 10px;\n box-sizing: border-box;\n white-space: nowrap;\n font-size: 12px;\n cursor: pointer;\n`\n\nexport const DropdownBox = styled.div`\n position: absolute;\n left: 32px;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: flex-start;\n padding: 0px;\n position: absolute;\n height: 32px;\n`\n\nexport const StyledDropdown = (styled(Dropdown) as any)`\n width: 88px;\n height: 32px;\n padding-top: 8px;\n padding-bottom: 8px;\n padding-left: 8px;\n padding-right: 7px;\n border: 1px solid ${getColor(\"border\")};\n box-sizing: border-box;\n border-radius: 4px;\n display: flex;\n justify-content: center;\n align-items: center;\n color: ${getColor(\"text\")};\n .mdc-menu-surface--anchor {\n .mdc-menu-surface--open {\n margin-left: -16px;\n margin-top: ${getSizeBy(2)};\n width: ${getSizeBy(35)};\n background: ${getColor(\"mainBackground\")};\n ${customDropdownZIndex}\n }\n }\n`\nexport const TypeViewBox = styled.div`\n width: 100%;\n display: flex;\n flex-direction: row nowrap;\n align-items: center;\n`\nexport const DropdownIcon = styled(Icon)`\n fill: ${getColor(\"text\")};\n width: 12px;\n height: 12px;\n`\nexport const TextBox = styled(Text)`\n flex: 1;\n padding-right: 15px;\n`\nexport const LastText = styled.div`\n font-weight: 700;\n font-size: 14px;\n line-height: 14px;\n`\nexport const CustomInput = styled.input`\n border: 1px solid ${getColor(\"border\")};\n background: ${getColor(\"mainBackground\")};\n box-sizing: border-box;\n border-radius: 4px;\n padding: 4px;\n width: 32px;\n height: 32px;\n margin-left: 10px;\n margin-right: 10px;\n outline: none;\n color: inherit; // needed for dashboard, in cloud it's default value\n &:focus {\n border: 1px solid ${getColor(\"primary\")};\n }\n`","import React, { ReactNode, ReactElement } from \"react\"\nimport { List } from \"@rmwc/list\"\nimport { MenuSurfaceAnchor, MenuSurface } from \"@rmwc/menu\"\nimport {\n RootContainer, ListContainer, DropdownContainer, OpenerIcon,\n} from \"./styled\"\n\ninterface Props {\n isOpen: boolean\n onMenuToggle: (isOpen: boolean) => void\n title?: string\n renderTitle?: () => ReactElement\n renderOpener?: () => ReactElement | null\n children: ReactNode\n className?: string\n anchorCorner?: any\n}\n\nexport const Dropdown = ({\n title,\n children,\n className,\n renderTitle,\n isOpen = false,\n onMenuToggle,\n anchorCorner = \"bottomStart\",\n renderOpener,\n}: Props) => {\n const handleOpenState = () => {\n onMenuToggle(!isOpen)\n }\n\n const handleClose = () => {\n onMenuToggle(false)\n }\n\n return (\n <DropdownContainer className={className}>\n <MenuSurfaceAnchor>\n <MenuSurface open={isOpen} onClose={handleClose} anchorCorner={anchorCorner}>\n <ListContainer>\n <List>{children}</List>\n </ListContainer>\n </MenuSurface>\n <RootContainer onClick={handleOpenState}>\n {title || (renderTitle && renderTitle())}\n {renderOpener ? (\n renderOpener()\n ) : (\n <OpenerIcon name=\"triangle_down\" noMargin={Boolean(renderTitle)} />\n )}\n </RootContainer>\n </MenuSurfaceAnchor>\n </DropdownContainer>\n )\n}\n","import SpriteSymbol from \"../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"header-clock\",\n \"use\": \"header-clock-usage\",\n \"viewBox\": \"0 0 14 14\",\n \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 14 14\\\" id=\\\"header-clock\\\"><path d=\\\"M7 1.667c-3.307 0-6 2.693-6 6a5.98 5.98 0 001.26 3.666L1.167 12.56a.665.665 0 00.493 1.107.652.652 0 00.5-.227l1.02-1.147A5.977 5.977 0 007 13.667c3.307 0 6-2.694 6-6 0-3.307-2.693-6-6-6zm0 10.666a4.672 4.672 0 01-4.667-4.666A4.672 4.672 0 017 3a4.672 4.672 0 014.667 4.667A4.672 4.672 0 017 12.333zM1.78 3.527A1.266 1.266 0 011.667 3c0-.733.6-1.333 1.333-1.333.26 0 .5.08.707.206.42-.24.86-.433 1.326-.58A2.652 2.652 0 003 .333 2.666 2.666 0 00.333 3c0 .673.26 1.287.674 1.753.213-.433.473-.846.773-1.226zM11 1.667c.733 0 1.333.6 1.333 1.333 0 .187-.04.367-.113.527.3.38.553.786.767 1.226.42-.466.68-1.08.68-1.753A2.666 2.666 0 0011 .333c-.82 0-1.547.38-2.033.96.466.147.906.34 1.326.58.207-.126.447-.206.707-.206zM7 4.333v3.334l2.007-2.66a3.227 3.227 0 00-.947-.5c-.34-.114-.7-.174-1.06-.174zm5.193 7.507c-.28.347-.593.667-.933.953l.573.647a.674.674 0 00.5.227.665.665 0 00.493-1.107l-.633-.72z\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React from \"react\"\nimport {\n ShortPick, ShortPickElement, HeaderSvg, ShortPickHeader,\n} from \"./styled\"\n// @ts-ignore\nimport Clock from \"./assets/header-clock.svg\"\n\ntype ShortPickerPropsT = {\n handleDatesChange: any\n selectedStart: number\n tagging: string\n}\nconst AlarmClock = () => (\n <HeaderSvg>\n <use xlinkHref={`#${Clock.id}`} />\n </HeaderSvg>\n)\nconst MINUTE = 60\nconst HOUR = MINUTE * 60\nconst PRESET_RANGES: [string, number][] = [\n [\"Last 5 minutes\", -5 * MINUTE],\n [\"Last 15 minutes\", -15 * MINUTE],\n [\"Last 30 minutes\", -30 * MINUTE],\n [\"Last 2 hours\", -2 * HOUR],\n [\"Last 6 hours\", -6 * HOUR],\n [\"Last 12 hours\", -12 * HOUR],\n]\n\nexport const ShortPickArea = (props: ShortPickerPropsT) => {\n const { handleDatesChange, selectedStart, tagging } = props\n\n function applyChanges(alias: string, timeCorrection: number) {\n return () => {\n handleDatesChange({\n startDate: timeCorrection,\n endDate: 0,\n })\n }\n }\n return (\n <ShortPick>\n <ShortPickHeader>\n <AlarmClock />\n &nbsp; Quick Selector\n </ShortPickHeader>\n {PRESET_RANGES.map(([text, time]) => (\n <ShortPickElement\n key={time}\n onClick={applyChanges(text, time)}\n isSelected={time === selectedStart}\n data-testid={`date-picker::click-quick-selector::${tagging}::${-time}`}\n >\n {text}\n </ShortPickElement>\n ))}\n </ShortPick>\n )\n}\n","import { DateResolution } from \"./types\"\n\nexport const MINUTE = 60\nexport const HOUR = MINUTE * 60\nexport const DAY = HOUR * 24\nexport const MONTH = DAY * 30\n\ntype GuessResolutionAndValue = (after: number) => { resolution: DateResolution; value: number }\n\nexport const guessResolutionAndValue: GuessResolutionAndValue = (after: number) => {\n let resolution: DateResolution\n let value: number\n if (after >= MONTH) {\n resolution = \"month\"\n value = Math.round(after / MONTH)\n } else if (after >= DAY) {\n resolution = \"day\"\n value = Math.round(after / DAY)\n } else if (after >= HOUR) {\n resolution = \"hour\"\n value = Math.round(after / HOUR)\n } else {\n resolution = \"minute\"\n value = Math.round(after / MINUTE)\n }\n return {\n resolution,\n value,\n }\n}\n\nexport const getShortHandTimeAlias = (after: number) => {\n const { value, resolution } = guessResolutionAndValue(after)\n if (value > 1) {\n return `Last ${value} ${resolution}s`\n }\n return `Last ${resolution}`\n}\n","import SpriteSymbol from \"../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"arrow\",\n \"use\": \"arrow-usage\",\n \"viewBox\": \"0 0 13 9\",\n \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 13 9\\\" id=\\\"arrow\\\"><path d=\\\"M8.4.6c-.2-.2-.5-.2-.7 0-.2.2-.2.5 0 .7L10.3 4H.5c-.3 0-.5.2-.5.5s.2.5.5.5h9.8L7.7 7.6c-.2.2-.2.5 0 .7.1.1.2.1.4.1s.3 0 .4-.1l3.9-3.9-4-3.8z\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"calendar\",\n \"use\": \"calendar-usage\",\n \"viewBox\": \"0 0 20 20\",\n \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 20 20\\\" id=\\\"calendar\\\"><path d=\\\"M17.1 2H17V1c0-.6-.4-1-1-1s-1 .4-1 1v1h-4V1c0-.6-.4-1-1-1S9 .4 9 1v1H5V1c0-.6-.4-1-1-1S3 .4 3 1v1h-.1C1.3 2 0 3.3 0 4.9v12.2C0 18.7 1.3 20 2.9 20h14.2c1.6 0 2.9-1.3 2.9-2.9V4.9C20 3.3 18.7 2 17.1 2zm.9 15.1c0 .5-.4.9-.9.9H2.9c-.5 0-.9-.4-.9-.9V8h16v9.1zM18 6H2V4.9c0-.5.4-.9.9-.9h14.2c.5 0 .9.4.9.9V6z\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React from \"react\"\nimport moment from \"moment\"\n\nimport { AccessorBox, HeaderSvg, IconSpacer } from \"./styled\"\nimport { PickedValues } from \"./types\"\nimport { getShortHandTimeAlias, MINUTE } from \"./utils\"\n// @ts-ignore\nimport ArrowSvg from \"./assets/arrow.svg\"\n// @ts-ignore\nimport CalendarSvg from \"./assets/calendar.svg\"\n\nconst Arrow = () => (\n <HeaderSvg>\n <use xlinkHref={`#${ArrowSvg.id}`} />\n </HeaderSvg>\n)\n\nconst Calendar = () => (\n <IconSpacer>\n <HeaderSvg>\n <use xlinkHref={`#${CalendarSvg.id}`} />\n </HeaderSvg>\n </IconSpacer>\n)\n\ntype PickerAccessorPropsT = {\n onClick: () => void\n} & PickedValues\n\nexport const PickerAccessorElement = (props: PickerAccessorPropsT) => {\n const { onClick, start = 15 * MINUTE, end } = props\n if (start < 0) {\n return (\n <AccessorBox onClick={onClick}>\n <Calendar />\n <>{getShortHandTimeAlias(-start)}</>\n </AccessorBox>\n )\n }\n const startAlias = moment(start).format(\"DD/MM/YYYY HH:mm\")\n const endAlias = moment(end).format(\"DD/MM/YYYY HH:mm\")\n return (\n <AccessorBox onClick={onClick}>\n <Calendar />\n {startAlias}\n &nbsp;\n <Arrow />\n &nbsp;\n {endAlias}\n </AccessorBox>\n )\n}\n","import React, { useState, ChangeEvent } from \"react\"\nimport moment from \"moment\"\nimport { guessResolutionAndValue } from \"./utils\"\nimport {\n StyledDropdown,\n TextBox,\n DropdownIcon,\n TypeViewBox,\n DropdownBox,\n LastText,\n CustomInput,\n ShortPickElement,\n} from \"./styled\"\nimport { DateResolution, PickedValues } from \"./types\"\n\ntype ShortPickerPropsT = {\n setRangeValues: (params: PickedValues) => void\n handleDatesChange: any\n selectedStart: number\n tagging: string\n}\n\nconst dateResolutions: DateResolution[] = [\"minute\", \"hour\", \"day\", \"month\"]\n\nconst pluralize = (resolution: DateResolution, value: number) => (value === 1\n ? resolution : `${resolution}s`\n)\n\nconst getNewStart = (timeCorrection: number, resolution: DateResolution) => (\n -moment.duration(timeCorrection, resolution).as(\"seconds\")\n)\n\nexport function CustomShortPicker(props: ShortPickerPropsT) {\n const {\n setRangeValues, handleDatesChange, selectedStart, tagging,\n } = props\n const { resolution, value: timeCorrection } = selectedStart <= 0\n ? guessResolutionAndValue(-selectedStart)\n : { resolution: \"hour\" as DateResolution, value: 0 }\n const [isDropdownOpen, toggleDropdown] = useState(false)\n\n const handleStartChange = (newStart: number) => {\n handleDatesChange({\n startDate: newStart,\n endDate: 0,\n })\n setRangeValues({\n start: newStart,\n end: 0,\n })\n }\n\n const applyChanges = (newResolution: DateResolution) => () => {\n handleStartChange(getNewStart(timeCorrection, newResolution))\n toggleDropdown(false)\n }\n\n function handleChange(e: ChangeEvent<HTMLInputElement>) {\n const newTimeCorrection = Number(e.currentTarget.value)\n if (!Number.isNaN(newTimeCorrection)) {\n handleStartChange(getNewStart(newTimeCorrection, resolution))\n }\n }\n\n const renderTitle = () => (\n <TypeViewBox>\n <TextBox>{pluralize(resolution, Number(timeCorrection))}</TextBox>\n <DropdownIcon name=\"triangle_down\" />\n </TypeViewBox>\n )\n\n return (\n <DropdownBox data-testid={`date-picker::click-last-integer::${tagging}`}>\n <LastText>Last</LastText>\n <CustomInput\n value={timeCorrection}\n onChange={handleChange}\n data-testid={`date-picker::click-last-integer::${tagging}::${timeCorrection}`}\n />\n <StyledDropdown\n isOpen={isDropdownOpen}\n onMenuToggle={toggleDropdown}\n renderTitle={renderTitle}\n renderOpener={() => null}\n >\n {dateResolutions.map((dateResolution) => (\n <ShortPickElement\n key={dateResolution}\n onClick={applyChanges(dateResolution)}\n data-testid={`date-picker::click-last-time-${dateResolution}::${tagging}`}\n >\n {pluralize(dateResolution, Number(timeCorrection))}\n </ShortPickElement>\n ))}\n </StyledDropdown>\n </DropdownBox>\n )\n}\n","import SpriteSymbol from \"../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"month_arrow_l\",\n \"use\": \"month_arrow_l-usage\",\n \"viewBox\": \"0 0 8 12\",\n \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 8 12\\\" id=\\\"month_arrow_l\\\"><path d=\\\"M7.41 1.41L6 0 0 6l6 6 1.41-1.41L2.83 6l4.58-4.59z\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"month_arrow_r\",\n \"use\": \"month_arrow_r-usage\",\n \"viewBox\": \"0 0 8 12\",\n \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 8 12\\\" id=\\\"month_arrow_r\\\"><path d=\\\"M.59 10.59L2 12l6-6-6-6L.59 1.41 5.17 6 .59 10.59z\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React, { useState, useMemo, useEffect } from \"react\"\nimport \"react-dates/initialize\"\nimport \"./custom-picker-styles.scss\"\nimport { DateRangePicker } from \"react-dates\"\nimport moment, { Moment } from \"moment\"\nimport { Button } from \"@netdata/netdata-ui\"\n\nimport { useCloseOnOutsideClick } from \"hooks/use-click-outside\"\n\nimport {\n PickerActionArea, PickerBox, PickerBtnArea, HeaderSvg, StyledSidebar,\n} from \"./styled\"\nimport { ShortPickArea } from \"./short-pick\"\nimport { PickerAccessorElement } from \"./accessor-element\"\nimport { CustomShortPicker } from \"./custom-short-pick\"\nimport { PickedValues } from \"./types\"\n// @ts-ignore\nimport MonthLeftSvg from \"./assets/month_arrow_l.svg\"\n// @ts-ignore\nimport MonthRightSvg from \"./assets/month_arrow_r.svg\"\n\nfunction pickerFormat() {\n return \"DD/MM/YYYY HH:mm\"\n}\n\nfunction disabledDates(day: Moment): boolean {\n return day.diff(moment(), \"seconds\") > 0\n}\n\nconst MonthLeft = () => (\n <HeaderSvg id=\"month_left\">\n <use xlinkHref={`#${MonthLeftSvg.id}`} />\n </HeaderSvg>\n)\nconst MonthRight = () => (\n <HeaderSvg id=\"month_right\">\n <use xlinkHref={`#${MonthRightSvg.id}`} />\n </HeaderSvg>\n)\n\ntype PickerPropsT = {\n isOpen: boolean\n pickedValues: PickedValues\n handleOpenState: (state: boolean) => void\n setRangeValues: (params: PickedValues) => void\n tagging?: string\n}\n\ntype HandleRangeChangeT = {\n startDate: number | Moment | null\n endDate: number | Moment | null\n}\n\nfunction handleChangeDateByManualInput(\n dateToBeSet: Moment | number,\n setterFn: (date: number) => void,\n): void {\n if (typeof dateToBeSet === \"number\") {\n setterFn(dateToBeSet)\n } else if (dateToBeSet) {\n const { input } = dateToBeSet.creationData()\n if (input && typeof input !== \"number\") {\n setterFn(moment(input, \"DD/MM/YYYY HH:mm\").valueOf())\n } else {\n setterFn(dateToBeSet.valueOf())\n }\n }\n}\n\nconst convertToMoment = (time: number) => {\n if (time > 0) {\n return moment(time)\n }\n return moment(new Date().valueOf() + time * 1000)\n}\n\nconst focusTaggingMap: { [key: string]: string } = {\n startDate: \"start\",\n endDate: \"finish\",\n}\n\nexport const Picker = (props: PickerPropsT) => {\n const {\n isOpen, handleOpenState, setRangeValues, pickedValues, tagging = \"\",\n } = props\n\n const [startDateState, setStartDate] = useState<number>(pickedValues.start)\n const [endDateState, setEndDate] = useState<number>(pickedValues.end)\n\n const startDateMoment = useMemo(() => convertToMoment(startDateState), [startDateState])\n const endDateMoment = useMemo(() => convertToMoment(endDateState), [endDateState])\n\n useEffect(() => {\n setStartDate(pickedValues.start)\n }, [pickedValues.start])\n\n useEffect(() => {\n setEndDate(pickedValues.end)\n }, [pickedValues.end])\n\n const [focusedInput, setFocusedInput] = useState<any>(\"startDate\")\n\n function handleDatesChange({ startDate, endDate }: HandleRangeChangeT) {\n if (startDate === null || endDate === null) {\n // nulls can happen when date is not properly entered in input field\n return\n }\n handleChangeDateByManualInput(endDate, setEndDate)\n handleChangeDateByManualInput(startDate, setStartDate)\n }\n function clear() {\n setEndDate(0)\n setStartDate(-60 * 15)\n setRangeValues({\n start: -60 * 15,\n end: 0,\n })\n }\n\n function close() {\n handleOpenState(false)\n }\n const ref = useCloseOnOutsideClick(close)\n\n function keepFocus(fi: any) {\n if (!fi) return\n setFocusedInput(fi)\n }\n function clickApply() {\n setRangeValues({\n start: startDateState,\n end: endDateState,\n })\n close()\n }\n\n\n const focusTagging = focusTaggingMap[focusedInput]\n\n const pickerModal = (\n <StyledSidebar right closeOnEsc closeOnOverlayClick>\n <PickerBox ref={ref}>\n <PickerActionArea>\n <ShortPickArea\n handleDatesChange={handleDatesChange}\n selectedStart={startDateState}\n tagging={tagging}\n />\n <DateRangePicker\n onDatesChange={handleDatesChange}\n daySize={30}\n focusedInput={focusedInput}\n onFocusChange={keepFocus}\n hideKeyboardShortcutsPanel\n enableOutsideDays\n isOutsideRange={disabledDates}\n firstDayOfWeek={1}\n verticalSpacing={0}\n displayFormat={pickerFormat}\n endDate={endDateMoment}\n startDate={startDateMoment}\n startDateId=\"dpStartDateInput\"\n openDirection=\"up\"\n endDateId=\"dpEndDateInput\"\n navNext={<MonthRight />}\n navPrev={<MonthLeft />}\n />\n </PickerActionArea>\n <PickerBtnArea>\n <CustomShortPicker\n setRangeValues={setRangeValues}\n handleDatesChange={handleDatesChange}\n selectedStart={startDateState}\n tagging={tagging}\n />\n <Button\n label=\"CLEAR\"\n flavour=\"borderless\"\n onClick={clear}\n data-testid={`date-picker::click-clear::${tagging}-${focusTagging}`}\n />\n <Button\n label=\"APPLY\"\n onClick={clickApply}\n data-testid={`date-picker::click-apply::${tagging}-${focusTagging}`}\n />\n </PickerBtnArea>\n </PickerBox>\n </StyledSidebar>\n )\n\n return (\n <>\n {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n <PickerAccessorElement onClick={() => handleOpenState(true)} {...pickedValues} />\n {isOpen && pickerModal}\n </>\n )\n}\n","import { useCallback, useEffect, useRef } from \"react\"\n\nexport const useCloseOnOutsideClick = (onClose: () => void) => {\n const ref = useRef(null)\n const escapeListener = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n onClose()\n }\n },\n [onClose],\n )\n const clickListener = useCallback(\n (e: MouseEvent) => {\n if (ref.current && !(ref.current! as any).contains(e.target)) {\n if (onClose && typeof onClose === \"function\") {\n onClose()\n }\n }\n },\n [onClose],\n )\n useEffect(() => {\n document.addEventListener(\"click\", clickListener)\n document.addEventListener(\"keyup\", escapeListener)\n return () => {\n document.removeEventListener(\"click\", clickListener)\n document.removeEventListener(\"keyup\", escapeListener)\n }\n }, [clickListener, escapeListener])\n return ref\n}\n","import React, { useState, useEffect } from \"react\"\n\nimport { useDispatch, useSelector } from \"store/redux-separate-context\"\nimport { selectGlobalPanAndZoom, selectDefaultAfter } from \"domains/global/selectors\"\nimport {\n resetGlobalPanAndZoomAction,\n setDefaultAfterAction,\n setGlobalPanAndZoomAction,\n} from \"domains/global/actions\"\n\nimport { Picker } from \"./picker\"\nimport { PickedValues } from \"./types\"\n\ninterface Props {\n tagging?: string\n}\nexport const ReduxWrappedPicker = ({ tagging }: Props) => {\n const dispatch = useDispatch()\n\n const [isOpen, setOpenState] = useState<boolean>(false)\n\n const globalPanAndZoom = useSelector(selectGlobalPanAndZoom)\n const isGlobalPanAndZoom = Boolean(globalPanAndZoom)\n\n const defaultAfter = useSelector(selectDefaultAfter)\n const pickedValues = {\n start: isGlobalPanAndZoom ? globalPanAndZoom!.after : defaultAfter,\n end: isGlobalPanAndZoom ? globalPanAndZoom!.before : 0,\n }\n function controlOpenState(state: boolean) {\n setOpenState(state)\n }\n\n function handlePickedValuesChange(params: PickedValues) {\n const { start, end } = params\n if (start < 0) {\n // live mode\n dispatch(\n setDefaultAfterAction({\n after: start,\n }),\n )\n if (isGlobalPanAndZoom) {\n dispatch(resetGlobalPanAndZoomAction())\n }\n } else {\n // global-pan-and-zoom mode\n dispatch(\n setGlobalPanAndZoomAction({\n after: start,\n before: end,\n }),\n )\n }\n }\n\n useEffect(() => {\n const { start, end } = pickedValues\n if (window.urlOptions) {\n if (window.urlOptions.after !== start || window.urlOptions.before !== end) {\n const isPanAndZoom = start > 0\n window.urlOptions.netdataPanAndZoomCallback(isPanAndZoom, start, end)\n }\n }\n }, [pickedValues])\n\n return (\n <Picker\n isOpen={isOpen}\n pickedValues={pickedValues}\n handleOpenState={controlOpenState}\n setRangeValues={handlePickedValuesChange}\n tagging={tagging}\n />\n )\n}\n","import React from \"react\"\nimport { ThemeProvider } from \"styled-components\"\nimport { ReduxWrappedPicker } from \"components/date-picker\"\nimport { DarkTheme } from \"@netdata/netdata-ui\"\nimport Item from \"./item\"\n\nconst DateTimePicker = () => (\n <ThemeProvider theme={DarkTheme}>\n <Item hasBorder>\n <ReduxWrappedPicker />\n </Item>\n </ThemeProvider>\n)\n\nexport default DateTimePicker\n","import styled from \"styled-components\"\nimport { Flex } from \"@netdata/netdata-ui\"\n\nconst hollowColors = {\n warning: \"#FFF8E1\",\n error: \"#FFEBEF\",\n}\n\nconst StyledPill = styled(Flex).attrs(({ round = 999, hollow, background }) => ({\n padding: [0.5, 2],\n round,\n border: hollow ? { side: \"all\", color: background, size: \"1px\" } : false,\n}))`\n background: ${({ background, hollow }) => (hollow ? hollowColors[background] : background)};\n cursor: pointer;\n`\n\nexport default StyledPill\n","import React, { forwardRef } from \"react\"\nimport { TextMicro } from \"@netdata/netdata-ui\"\nimport StyledPill from \"./styled\"\n\nconst Pill = forwardRef(({ children, background, color, hollow, ...rest }, ref) => (\n <StyledPill background={background} hollow={hollow} ref={ref} {...rest}>\n <TextMicro color={hollow ? background : color} strong>\n {children}\n </TextMicro>\n </StyledPill>\n))\n\nexport default Pill\n","import React, { useMemo } from \"react\"\nimport { useSelector } from \"store/redux-separate-context\"\nimport { selectActiveAlarms } from \"domains/global/selectors\"\nimport Item from \"./item\"\nimport Pill from \"./pill\"\n\nconst pillProps = {\n \"data-toggle\": \"modal\",\n \"data-target\": \"#alarmsModal\",\n}\n\nconst Alarms = () => {\n const activeAlarms = useSelector(selectActiveAlarms)\n\n const alarms = useMemo(() => (activeAlarms ? Object.values(activeAlarms.alarms) : []), [\n activeAlarms,\n ])\n\n const { critical, warning } = useMemo(\n () =>\n alarms.reduce(\n (acc, { status }) => {\n if (status === \"CRITICAL\") acc.critical = acc.critical + 1\n if (status === \"WARNING\") acc.warning = acc.warning + 1\n return acc\n },\n { critical: 0, warning: 0 }\n ),\n [alarms]\n )\n\n return (\n <Item icon=\"alarm\">\n <Pill background=\"error\" hollow {...pillProps}>\n {critical}\n </Pill>\n <Pill background=\"warning\" hollow {...pillProps}>\n {warning}\n </Pill>\n </Item>\n )\n}\n\nexport default Alarms\n","import React from \"react\"\nimport { Flex, Icon, TextBig, Button } from \"@netdata/netdata-ui\"\n\nconst Header = ({ onClose }) => {\n return (\n <Flex\n border={{ side: \"bottom\", color: \"selected\" }}\n justifyContent=\"between\"\n alignItems=\"center\"\n padding={[0, 0, 4, 0]}\n >\n <Flex gap={2}>\n <Icon color=\"text\" name=\"insights\" />\n <TextBig strong>Netdata News</TextBig>\n </Flex>\n <Button flavour=\"borderless\" neutral icon=\"x\" title=\"close news\" onClick={onClose} />\n </Flex>\n )\n}\n\nexport default Header\n","import styled from \"styled-components\"\nimport { Flex } from \"@netdata/netdata-ui\"\n\nconst Image = styled(Flex).attrs({ as: \"img\" })`\n object-fit: cover;\n`\nexport default Image\n","import styled from \"styled-components\"\nimport { Flex } from \"@netdata/netdata-ui\"\n\nconst Anchor = styled(Flex).attrs({ as: \"a\" })`\n text-decoration: none;\n & :hover {\n text-decoration: none;\n }\n`\nexport default Anchor\n","import React from \"react\"\nimport { Flex, Icon, Text, TextSmall } from \"@netdata/netdata-ui\"\nimport Image from \"./image\"\nimport Anchor from \"./anchor\"\n\nconst Item = ({ item }) => {\n const { last_publication_date: publishedAt, data } = item\n const { title, description, url, image, label } = data\n\n const imageSrc = image && image.url\n const dateFormated = new Date(publishedAt)\n\n return (\n <Flex column gap={2}>\n <Flex gap={4}>\n {imageSrc && <Image src={imageSrc} width=\"160px\" />}\n <Flex column gap={2}>\n <Text strong>{title}</Text>\n <Text>{description}</Text>\n </Flex>\n </Flex>\n <Flex justifyContent=\"between\" alignItems=\"center\">\n <TextSmall>{dateFormated.toLocaleDateString()}</TextSmall>\n <Anchor href={url} target=\"_blank\" rel=\"noopener noreferrer\" gap={1} alignItems=\"center\">\n <Text color=\"success\" strong>\n {label}\n </Text>\n <Icon color=\"success\" rotate={2} name=\"arrow_left\" />\n </Anchor>\n </Flex>\n </Flex>\n )\n}\n\nexport default Item\n","import styled from \"styled-components\"\nimport { Flex, webkitVisibleScrollbar } from \"@netdata/netdata-ui\"\n\nexport const Container = styled(Flex).attrs({\n overflow: { vertical: \"auto\" },\n padding: [0, 4, 0, 0],\n})`\n ${webkitVisibleScrollbar}\n`\n","import React, { Fragment, useCallback } from \"react\"\nimport { useToggle } from \"react-use\"\nimport { Layer, Flex } from \"@netdata/netdata-ui\"\nimport Header from \"./header\"\nimport Item from \"./item\"\nimport { Container } from \"./container\"\n\nconst News = ({ children, items = [], onCloseClick }) => {\n const [isOpen, toggle] = useToggle()\n\n const onClose = useCallback(() => {\n toggle()\n if (onCloseClick) onCloseClick()\n }, [toggle, onCloseClick])\n\n return (\n <Fragment>\n {children(toggle, isOpen)}\n {isOpen && (\n <Layer backdrop onClickOutside={onClose} onEsc={onClose}>\n <Flex\n background=\"mainBackground\"\n round\n padding={[6]}\n width=\"640px\"\n height={{ max: \"640px\" }}\n gap={4}\n column\n >\n <Header onClose={onClose} />\n <Container column gap={6}>\n {items.map(item => (\n <Item key={item.id} item={item} />\n ))}\n </Container>\n </Flex>\n </Layer>\n )}\n </Fragment>\n )\n}\n\nexport default News\n","import Prismic from \"@prismicio/client\"\n\nconst apiEndpoint = \"https://netdata-news.cdn.prismic.io/api/v2\"\nconst client = Prismic.client(apiEndpoint)\n\nexport const fetchNews = async onSuccess => {\n const response = await client.query(\n Prismic.Predicates.at(\"document.type\", \"news__announcements\"),\n { pageSize: 100, orderings: \"[document.last_publication_date desc]\" }\n )\n if (!response) return\n if (onSuccess) onSuccess(response)\n}\n","import React, { useCallback, useMemo, useEffect, useState } from \"react\"\nimport { useLocalStorage } from \"react-use\"\nimport { Button } from \"@netdata/netdata-ui\"\nimport News from \"components/news\"\nimport { fetchNews } from \"./dataSource\"\n\nconst AgentNews = () => {\n const [value, setValue] = useLocalStorage(\"news_last_seen\")\n const [news, setNews] = useState([])\n\n useEffect(() => {\n fetchNews(({ results }) => setNews(results))\n }, [])\n\n const upToDate = useMemo(() => {\n if (!news.length) return true\n\n const [firstItem] = news\n const { last_publication_date: publishedAt } = firstItem\n\n const latestEntry = new Date(publishedAt)\n const lastSeen = new Date(value)\n return lastSeen >= latestEntry\n }, [value, news])\n\n const onClose = useCallback(() => {\n const now = new Date()\n setValue(now)\n }, [setValue])\n\n return (\n <News items={news} onCloseClick={onClose}>\n {toggle => (\n <Button\n themeType=\"dark\"\n name=\"news\"\n title=\"News & Features\"\n icon=\"insights\"\n flavour=\"borderless\"\n neutral={upToDate}\n warning={!upToDate}\n onClick={toggle}\n />\n )}\n </News>\n )\n}\nexport default AgentNews\n","import { useCallback, useMemo } from \"react\"\nimport { useDispatch, useSelector } from \"react-redux\"\nimport { createSelector } from \"reselect\"\nimport { useLocalStorage } from \"react-use\"\nimport { showSignInModalAction } from \"domains/dashboard/actions\"\nimport { selectSignInUrl, selectRegistry } from \"domains/global/selectors\"\nimport { NETDATA_REGISTRY_SERVER } from \"utils/utils\"\n\nconst isRegistrySelector = createSelector(\n selectRegistry,\n ({ registryServer }) => registryServer === NETDATA_REGISTRY_SERVER\n)\n\nconst offlineSelector = createSelector(\n ({ dashboard }) => dashboard,\n ({ offline }) => offline\n)\n\nconst SignIn = ({ children }) => {\n const [hasSignedInBefore] = useLocalStorage(\"has-sign-in-history\")\n const signInUrl = useSelector(state => selectSignInUrl(hasSignedInBefore)(state))\n const isRegistry = useSelector(isRegistrySelector)\n const offline = useSelector(offlineSelector)\n\n const dispatch = useDispatch()\n\n const link = useMemo(() => {\n const { href } = window.location\n const redirectURI = encodeURIComponent(href)\n return `${signInUrl}&redirect_uri=${redirectURI}`\n }, [signInUrl])\n\n const onSignIn = useCallback(\n () =>\n dispatch(\n showSignInModalAction({\n signInLinkHref: link,\n })\n ),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [link]\n )\n\n return useMemo(\n () =>\n typeof children === \"function\"\n ? children({ isRegistry, link, onSignIn, offline, hasSignedInBefore })\n : children,\n [children, isRegistry, link, onSignIn, offline, hasSignedInBefore]\n )\n}\n\nexport default SignIn\n","import { useEffect, useCallback, useState } from \"react\"\n\ntype IframesMessageType = \"spaces\" | \"workspaces\"\n | \"hello-from-spaces-bar\" | \"hello-from-space-panel\" | \"hello-from-sign-in\"\n | \"is-signed-in\" | \"streamed-hosts-data\" | \"has-focus\" | \"iframe-focus-change\"\n | \"synced-private-registry\" | \"set-is-logout-dropdown-opened\"\n\ninterface IframesMessage<T = unknown> {\n type: IframesMessageType\n payload: T\n}\n\n\nexport const sendToChildIframe = (\n htmlIframeElement: HTMLIFrameElement, message: IframesMessage,\n) => {\n if (htmlIframeElement.contentWindow) {\n htmlIframeElement.contentWindow.postMessage(message, \"*\")\n }\n}\n\nexport const useListenToPostMessage = <T>(\n messageType: IframesMessageType,\n callback?: (newMessage: T) => void,\n defaultState?: T | (() => T),\n): [T | undefined, () => void] => {\n const [lastMessage, setLastMessage] = useState<T | undefined>(defaultState)\n const handleMessage = useCallback((message) => {\n const data = message.data as IframesMessage<T>\n if (data.type === messageType) {\n setLastMessage(data.payload)\n if (callback) {\n callback(data.payload)\n }\n }\n }, [callback, messageType])\n const resetMesssage = useCallback(() => {\n setLastMessage(defaultState as T)\n }, [defaultState])\n useEffect(() => {\n window.addEventListener(\"message\", handleMessage)\n return () => {\n window.removeEventListener(\"message\", handleMessage)\n }\n }, [handleMessage, messageType])\n return [lastMessage, resetMesssage]\n}\n","import React, { useCallback, useEffect, useState, useRef } from \"react\"\nimport styled from \"styled-components\"\nimport { useSelector, useDispatch } from \"store/redux-separate-context\"\nimport { useLocalStorage } from \"react-use\"\nimport { Flex } from \"@netdata/netdata-ui\"\nimport { sendToChildIframe, useListenToPostMessage } from \"utils/post-message\"\nimport { getIframeSrc, NETDATA_REGISTRY_SERVER } from \"utils/utils\"\nimport { selectRegistry, selectCloudBaseUrl } from \"domains/global/selectors\"\nimport { LOCAL_STORAGE_NEEDS_SYNC } from \"domains/dashboard/sagas\"\nimport { setOfflineAction } from \"@/src/domains/dashboard/actions\"\n\nconst IframeContainer = styled(Flex).attrs({ position: \"absolute\" })`\n display: none;\n`\nconst Iframe = ({ signedIn }) => {\n const [rendered, setRendered] = useState(false)\n const signInMsg = useRef()\n const ref = useRef()\n\n const [lsValue, , removeLsValue] = useLocalStorage(LOCAL_STORAGE_NEEDS_SYNC)\n const cloudBaseURL = useSelector(selectCloudBaseUrl)\n const registry = useSelector(selectRegistry)\n\n const dispatch = useDispatch()\n\n const { origin, pathname } = window.location\n const nameParam = encodeURIComponent(registry.hostname)\n const originParam = encodeURIComponent(origin + pathname)\n\n const signInIframeUrl = getIframeSrc(\n cloudBaseURL,\n `sign-in?id=${registry.machineGuid}&name=${nameParam}&origin=${originParam}`\n )\n\n useListenToPostMessage(\"hello-from-sign-in\", msg => {\n signInMsg.current = msg\n })\n\n const onLoad = useCallback(() => {\n setRendered(true)\n setTimeout(() => dispatch(setOfflineAction({ offline: signInMsg.current === undefined })), 500)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n useEffect(() => {\n const handler = e => {\n if (!e?.target) return\n if (e.target.src === signInIframeUrl && !rendered) onLoad()\n }\n\n window.addEventListener(\"DOMFrameContentLoaded\", handler)\n return () => window.removeEventListener(\"DOMFrameContentLoaded\", handler)\n }, [signInIframeUrl, rendered, onLoad])\n\n useEffect(() => {\n if (!signedIn || !ref.current) return\n if (!registry.registryServer || registry.registryServer === NETDATA_REGISTRY_SERVER) return\n if (!lsValue) return\n\n removeLsValue()\n\n const { registryMachinesArray } = registry\n if (registryMachinesArray && registryMachinesArray.length > 0) {\n sendToChildIframe(ref.current, {\n type: \"synced-private-registry\",\n payload: registryMachinesArray,\n })\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [signedIn, registry, lsValue])\n\n return <IframeContainer as=\"iframe\" src={signInIframeUrl} onLoad={onLoad} />\n}\n\nexport default Iframe\n","import { useCallback, useState } from \"react\"\nimport { useLocalStorage } from \"react-use\"\nimport { useDispatch } from \"react-redux\"\nimport { useListenToPostMessage } from \"@/src/utils/post-message\"\nimport { isSignedInAction } from \"@/src/domains/dashboard/actions\"\n\nconst useCheckSignInStatus = () => {\n const dispatch = useDispatch()\n const [value, setValue] = useLocalStorage(\"has-sign-in-history\")\n const [hasSignedInBefore, setHasSignedInBefore] = useState(value)\n\n const onMessage = useCallback(isNew => {\n if (isNew) {\n setHasSignedInBefore(isNew)\n setValue(isNew)\n }\n dispatch(isSignedInAction({ isSignedIn: isNew }))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const [signedIn] = useListenToPostMessage(\"is-signed-in\", onMessage)\n\n return [signedIn, hasSignedInBefore]\n}\n\nexport default useCheckSignInStatus\n","import React from \"react\"\nimport { useSelector } from \"react-redux\"\nimport { Button } from \"@netdata/netdata-ui\"\nimport SignInButton from \"components/auth/signIn\"\nimport SignInIframe from \"components/auth/signIn/iframe\"\nimport useCheckSignInStatus from \"components/auth/signIn/useCheckSignInStatus\"\nimport { selectIsCloudEnabled } from \"domains/global/selectors\"\n\nconst SignIn = () => {\n const [signedIn] = useCheckSignInStatus()\n const cloudEnabled = useSelector(selectIsCloudEnabled)\n\n return (\n cloudEnabled && (\n <React.Fragment>\n <SignInIframe signedIn={signedIn} />\n {!signedIn && (\n <SignInButton>\n {({ isRegistry, link, hasSignedInBefore, offline, onSignIn }) => (\n <Button\n label={hasSignedInBefore ? \"SIGN IN TO CLOUD\" : \"SIGN UP TO CLOUD\"}\n disabled={offline}\n {...(isRegistry ? { as: \"a\", href: link } : { onClick: onSignIn })}\n />\n )}\n </SignInButton>\n )}\n </React.Fragment>\n )\n )\n}\n\nexport default SignIn\n","import React from \"react\"\nimport styled from \"styled-components\"\nimport { Flex } from \"@netdata/netdata-ui\"\nimport Item from \"./item\"\nimport Node from \"./node\"\nimport Options from \"./options\"\nimport Version from \"./version\"\nimport DateTimePicker from \"./dateTimePicker\"\nimport Alarms from \"./alarms\"\nimport AgentNews from \"./news\"\nimport SignIn from \"./signIn\"\n\nconst Wrapper = styled(Flex).attrs({\n as: \"header\",\n position: \"relative\",\n justifyContent: \"between\",\n background: \"panel\",\n zIndex: 20,\n width: \"100%\",\n padding: [2, 4, 2, 4],\n})`\n pointer-events: all;\n`\n\nconst Header = () => (\n <Wrapper>\n <Flex alignItems=\"center\" gap={3}>\n <Node />\n </Flex>\n <Flex justifyContent=\"end\" alignItems=\"center\" gap={3}>\n <Item hasBorder>\n <Version />\n <AgentNews />\n <Options />\n </Item>\n <DateTimePicker />\n <Alarms />\n <SignIn />\n </Flex>\n </Wrapper>\n)\n\nexport default Header\n","import styled from \"styled-components\"\nimport { Button } from \"@netdata/netdata-ui\"\n\nconst ExpandButton = styled(Button)`\n&& {\n > .button-icon {\n width: 6px;\n height: 9px;\n }\n`\nexport default ExpandButton\n","import React, { useCallback, forwardRef } from \"react\"\nimport styled from \"styled-components\"\nimport { getColor, Flex, Icon, Text } from \"@netdata/netdata-ui\"\n\nexport const PanelRowContainer = styled(Flex)`\n cursor: pointer;\n\n &:hover {\n background: ${getColor(\"selected\")};\n }\n\n ${props => props.selected && `background: ${getColor(\"selected\")(props)};`}\n`\n\nconst MenuItem = forwardRef(\n (\n {\n disabled,\n children,\n Wrapper = Text,\n onClick,\n testid,\n icon,\n padding = [2, 3],\n margin = [0],\n round = 0,\n actions,\n selected,\n width = \"100%\",\n },\n ref\n ) => {\n const click = useCallback(() => {\n if (disabled) return\n if (onClick) onClick()\n }, [onClick, disabled])\n\n return (\n <PanelRowContainer\n ref={ref}\n flexWrap={false}\n justifyContent=\"between\"\n alignItems=\"center\"\n padding={padding}\n margin={margin}\n round={round}\n onClick={click}\n data-testid={testid}\n width={width}\n selected={selected}\n disabled={disabled}\n >\n <Flex alignItems=\"center\" gap={3} flex basis=\"\">\n {typeof icon === \"string\" ? (\n <Icon name={icon} disabled={disabled} color=\"text\" height=\"16px\" width=\"16px\" />\n ) : (\n icon\n )}\n <Wrapper opacity={disabled ? \"medium\" : undefined} width=\"150px\">\n {children}\n </Wrapper>\n </Flex>\n {actions}\n </PanelRowContainer>\n )\n }\n)\n\nexport default MenuItem\n","import React from \"react\"\nimport styled from \"styled-components\"\nimport { Flex, H4, Collapsible } from \"@netdata/netdata-ui\"\n\nexport const DefaultListHeader = styled(H4).attrs({ padding: [0], margin: [0] })`\n cursor: pointer;\n`\n\nconst SectionHandle = ({ toggleOpen, label, testid, Header = DefaultListHeader }) => (\n <Header data-testid={testid} onClick={toggleOpen}>\n {label}\n </Header>\n)\n\nconst ItemsList = ({ isOpen = false, toggleOpen, label, children, testid, Header }) => (\n <Flex column>\n <SectionHandle Header={Header} toggleOpen={toggleOpen} label={label} testid={testid} />\n <Collapsible open={isOpen}>{children}</Collapsible>\n </Flex>\n)\n\nexport default ItemsList\n","import styled from \"styled-components\"\nimport { Flex } from \"@netdata/netdata-ui\"\n\nexport const Divider = styled(Flex).attrs({\n bacgkround: \"disabled\",\n height: \"1px\",\n margin: [2, 6],\n})``\n","import React from \"react\"\nimport { useSelector } from \"react-redux\"\nimport { Flex } from \"@netdata/netdata-ui\"\nimport { selectCloudBaseUrl } from \"domains/global/selectors\"\nimport { getIframeSrc } from \"@/src/utils\"\n\n\nconst SignOut = ({ flavour = \"default\", ...rest }) => {\n const cloudBaseURL = useSelector(selectCloudBaseUrl)\n\n return (\n <Flex\n alignItems=\"center\"\n as=\"iframe\"\n src={`${getIframeSrc(cloudBaseURL, \"sign-out\")}?type=${flavour}`}\n border={{ side: \"all\", size: \"0px\" }}\n width={{ max: \"128px\" }}\n height={{ max: \"40px\" }}\n {...rest}\n />\n )\n}\n\nexport default SignOut\n","import React, { useMemo } from \"react\"\nimport { ThemeProvider } from \"styled-components\"\nimport { createSelector } from \"reselect\"\nimport { useToggle } from \"react-use\"\nimport { Flex, Button, DarkTheme, Text, Layer } from \"@netdata/netdata-ui\"\nimport { useSelector } from \"store/redux-separate-context\"\nimport { MenuItem } from \"components/menus\"\nimport SignOut from \"components/auth/signOut\"\nimport SignIn from \"components/auth/signIn\"\n\nconst SignInItem = () => {\n const onClick = (e, link) => {\n e.stopPropagation()\n window.open(link, \"_blank\", \"noopener,noreferrer\")\n }\n return (\n <SignIn>\n {({ isRegistry, link, hasSignedInBefore, onSignIn }) => (\n <Text onClick={isRegistry ? e => onClick(e, link) : onSignIn}>\n {hasSignedInBefore ? \"Sign in\" : \"Sign up\"}\n </Text>\n )}\n </SignIn>\n )\n}\n\nconst isSignedInSelector = createSelector(\n ({ dashboard }) => dashboard,\n ({ isSignedIn }) => isSignedIn\n)\n\nconst UserSettings = () => {\n const [isOpen, toggle] = useToggle()\n const signedIn = useSelector(isSignedInSelector)\n\n const menuItems = useMemo(\n () => [\n ...(signedIn\n ? [\n {\n children: \"Operational Status\",\n onClick: () =>\n window.open(\"https://status.netdata.cloud\", \"_blank\", \"noopener,noreferrer\"),\n },\n ]\n : []),\n ...(signedIn ? [{ separator: true }] : []),\n ...(signedIn\n ? [\n {\n children: <SignOut flavour=\"borderless\" height={{ max: \"18px\" }} />,\n },\n ]\n : [{ children: <SignInItem /> }]),\n ],\n [signedIn]\n )\n\n return (\n <ThemeProvider theme={DarkTheme}>\n <Button\n flavour=\"borderless\"\n neutral\n icon=\"user\"\n title=\"User settings\"\n name=\"userSettings\"\n onClick={toggle}\n />\n {isOpen && (\n <Layer\n position=\"bottom-left\"\n onClickOutside={toggle}\n onEsc={toggle}\n backdrop={false}\n margin={[5, 18]}\n >\n <Flex column width={52} background=\"mainBackground\" padding={[3]} round>\n {menuItems.map((item, i) => {\n if (item.separator) return <Flex height=\"1px\" background=\"disabled\" key={i} />\n return (\n <MenuItem\n key={i}\n padding={[2, 4]}\n round={1}\n {...(item.onClick && { onClick: item.onClick })}\n >\n {item.children}\n </MenuItem>\n )\n })}\n </Flex>\n </Layer>\n )}\n </ThemeProvider>\n )\n}\n\nexport default UserSettings\n","import React from \"react\"\nimport { Flex, Button } from \"@netdata/netdata-ui\"\n\nconst SpacesSkeleton = () => (\n <React.Fragment>\n <Flex\n width=\"40px\"\n height=\"40px\"\n round={2}\n border={{ side: \"all\", color: \"border\", size: \"2px\", type: \"dotted\" }}\n />\n <Flex height=\"1px\" background=\"separator\" width=\"20px\" />\n <Button icon=\"plus\" disabled />\n </React.Fragment>\n)\n\nexport default SpacesSkeleton\n","import React from \"react\"\nimport { Flex } from \"@netdata/netdata-ui\"\nimport { useSelector } from \"store/redux-separate-context\"\nimport { selectCloudBaseUrl } from \"domains/global/selectors\"\nimport { getIframeSrc } from \"utils/utils\"\n\nconst SpacesIframe = () => {\n const cloudBaseURL = useSelector(selectCloudBaseUrl)\n return (\n <Flex\n as=\"iframe\"\n src={getIframeSrc(cloudBaseURL, \"space-bar\")}\n title=\"Space Bar\"\n height=\"100%\"\n width=\"100%\"\n border={{ side: \"all\", size: \"0px\" }}\n overflow=\"hidden\"\n />\n )\n}\n\nexport default SpacesIframe\n","import React from \"react\"\n\nconst NetdataLogo = ({ width, height, fill = \"#FDFDFD\" }) => (\n <svg {...{ width, height }} viewBox=\"0 0 31 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M19.0002 0H0.630188L8.27019 24H19.0002C25.6202 24 31.0002 18.62 31.0002 12C31.0002 5.38 25.6202 0 19.0002 0Z\"\n fill={fill}\n />\n </svg>\n)\n\nexport default NetdataLogo\n","import React from \"react\"\nimport { useSelector } from \"react-redux\"\nimport { Flex, Button, Documentation } from \"@netdata/netdata-ui\"\nimport { selectIsCloudEnabled } from \"domains/global/selectors\"\nimport ExpandButton from \"./expandButton\"\nimport UserSettings from \"./userSettings\"\nimport SpacesSkeleton from \"./spacesSkeleton\"\nimport SpacesIframe from \"./spacesIframe\"\nimport NetdataLogo from \"../netdataLogo\"\n\nconst Spaces = ({ isOpen, toggle, isSignedIn }) => {\n const cloudEnabled = useSelector(selectIsCloudEnabled)\n\n return (\n <Flex\n column\n justifyContent=\"between\"\n background=\"panel\"\n padding={[3, 0]}\n width=\"64px\"\n alignItems=\"center\"\n gap={6}\n position=\"relative\"\n overflow=\"hidden\"\n >\n <Flex column gap={4} alignItems=\"center\" height=\"100%\" overflow=\"hidden\">\n <NetdataLogo width={32} height={32} />\n {!isOpen && (\n <ExpandButton\n icon=\"chevron_right_s\"\n onClick={toggle}\n small\n neutral\n flavour=\"borderless\"\n themeType=\"dark\"\n />\n )}\n {cloudEnabled && isSignedIn && <SpacesIframe />}\n {cloudEnabled && !isSignedIn && <SpacesSkeleton />}\n </Flex>\n <Flex column gap={4} alignItems=\"center\">\n <Documentation app=\"agent\">\n {toggle => (\n <Button\n flavour=\"borderless\"\n neutral\n themeType=\"dark\"\n className=\"btn\"\n icon=\"question\"\n onClick={toggle}\n title=\"Need help?\"\n />\n )}\n </Documentation>\n <Button\n flavour=\"borderless\"\n neutral\n themeType=\"dark\"\n className=\"btn\"\n data-toggle=\"modal\"\n data-target=\"#optionsModal\"\n icon=\"gear\"\n title=\"Settings\"\n />\n {cloudEnabled && <UserSettings />}\n </Flex>\n </Flex>\n )\n}\n\nexport default Spaces\n","// some old functions here, i don't have time to comprehend them now\n\n// --------------------------------------------------------------------\n// natural sorting\n// http://www.davekoelle.com/files/alphanum.js - LGPL\n\nconst naturalSortChunkify = (t: string) => {\n const tz = []\n let x = 0\n let y = -1; let n = 0 as boolean | number; let i; let j\n\n // eslint-disable-next-line no-cond-assign,no-plusplus\n while (i = (j = t.charAt(x++)).charCodeAt(0)) {\n const m = (i >= 48 && i <= 57)\n if (m !== n) {\n // eslint-disable-next-line no-plusplus\n tz[++y] = \"\"\n n = m\n }\n tz[y] += j\n }\n\n return tz\n}\n\n\nexport const naturalSortCompare = (a: string, b: string) => {\n const aa = naturalSortChunkify(a.toLowerCase())\n const bb = naturalSortChunkify(b.toLowerCase())\n\n // eslint-disable-next-line no-plusplus\n for (let x = 0; aa[x] && bb[x]; x++) {\n if (aa[x] !== bb[x]) {\n const c = Number(aa[x]); const\n d = Number(bb[x])\n if (c.toString() === aa[x] && d.toString() === bb[x]) {\n return c - d\n }\n return (aa[x] > bb[x]) ? 1 : -1\n }\n }\n return aa.length - bb.length\n}\n\n\ninterface ObjectsWithPriority {\n [key: string]: {\n priority: number\n }\n}\nexport const sortObjectByPriority = <T extends ObjectsWithPriority>(object: T) => {\n const sorted = Object.keys(object)\n\n sorted.sort((a, b) => {\n if (object[a].priority < object[b].priority) {\n return -1\n }\n if (object[a].priority > object[b].priority) {\n return 1\n }\n return naturalSortCompare(a, b)\n })\n\n return sorted\n}\n\n\ninterface PrioritySortObject {\n name: string\n priority: number\n}\nexport const prioritySort = <T extends PrioritySortObject>(a: T, b: T) => {\n if (a.priority < b.priority) {\n return -1\n }\n if (a.priority > b.priority) {\n return 1\n }\n return naturalSortCompare(a.name, b.name)\n}\n","import { naturalSortCompare } from \"domains/dashboard/utils/sorting\"\n\nconst getBaseUrl = hostname => {\n let base = document.location.origin.toString() + decodeURI(document.location.pathname.toString())\n if (base.endsWith(`/host/${hostname}/`)) {\n base = base.substring(0, base.length - `/host/${hostname}/`.toString().length)\n }\n\n if (base.endsWith(\"/\")) {\n base = base.substring(0, base.length - 1)\n }\n\n return base\n}\n\nconst getNodeUrl = (baseUrl, hostname) => `${baseUrl}/host/${hostname}/`\n\nconst getNodes = (hosts, hostname, hostsStatus) => {\n if (!hosts || !hostname) return {}\n\n // decodeURI, because pathname (which is hostname) can contain white-spaces\n // or other characters which are URIencoded when user clicks the link\n // and we need to match it with `chartsMetadata.hostname`\n const baseUrl = getBaseUrl(hostname)\n\n const [{ hostname: parentNodeHostname }] = hosts\n\n const parentNode = {\n hostname: parentNodeHostname,\n url: `${baseUrl}/`,\n }\n\n const replicatedNodes = hosts\n .slice(1)\n .map(({ hostname }, index) => ({\n hostname,\n url: getNodeUrl(baseUrl, hostname),\n status: hostsStatus[index + 1].reachable,\n }))\n .sort((a, b) => naturalSortCompare(a.hostname, b.hostname))\n\n return {\n parentNode,\n replicatedNodes,\n }\n}\n\nexport default getNodes\n","import styled from \"styled-components\"\nimport { Flex } from \"@netdata/netdata-ui\"\n\nconst Anchor = styled(Flex).attrs({\n as: \"a\",\n gap: 2,\n alignItems: \"center\",\n})`\n & :hover {\n text-decoration: none;\n }\n`\n\nexport default Anchor\n","import React from \"react\"\nimport { Flex, Text, Icon } from \"@netdata/netdata-ui\"\nimport Pill from \"components/header/pill\"\nimport Anchor from \"./anchor\"\n\nconst Node = ({ hostname, url, status }) => {\n return (\n <Anchor href={url} justifyContent=\"between\" padding={[0, 0, 0, 2]}>\n <Flex alignItems=\"center\" gap={2}>\n <Icon name=\"node\" color=\"bright\" />\n <Text color=\"bright\" truncate>\n {hostname}\n </Text>\n </Flex>\n <Pill background={status ? \"success\" : \"border\"} color=\"bright\" round={10}>\n {status ? \"Live\" : \"Off\"}\n </Pill>\n </Anchor>\n )\n}\n\nexport default Node\n","import React, { useState, useCallback, useMemo } from \"react\"\nimport styled from \"styled-components\"\nimport { Flex, Text, Icon, TextInput } from \"@netdata/netdata-ui\"\nimport { MenuList } from \"components/menus\"\nimport Anchor from \"./anchor\"\nimport Node from \"./node\"\n\nconst Search = styled(TextInput)`\n & > label {\n margin-bottom: 0;\n }\n`\n\nconst StyledIcon = styled(Icon)`\n transform: ${({ right }) => (right ? \"rotate(270deg)\" : \"none\")};\n`\n\nconst ReplicatedNodes = ({ parentNode, replicatedNodes }) => {\n const [listOpen, setListOpen] = useState(true)\n const [value, setValue] = useState(\"\")\n\n const toggleListOpen = useCallback(() => setListOpen(o => !o), [])\n const onChange = useCallback(e => setValue(e.target.value), [])\n\n const nodes = useMemo(() => {\n if (!value) return replicatedNodes\n return replicatedNodes.filter(({ hostname }) =>\n hostname.toLowerCase().includes(value.toLowerCase())\n )\n }, [replicatedNodes, value])\n\n return (\n <MenuList\n isOpen={listOpen}\n toggleOpen={toggleListOpen}\n label={\n <Flex alignItems=\"center\" justifyContent=\"between\">\n <Text strong color=\"border\">\n Replicated nodes\n </Text>\n <StyledIcon right={!listOpen} name=\"chevron_down\" size=\"small\" color=\"text\" />\n </Flex>\n }\n >\n <Flex column gap={4} padding={[4, 0, 0]}>\n <Anchor as=\"a\" href={parentNode.url} justifyContent=\"start\">\n <Icon name=\"nodes\" size=\"small\" color=\"bright\" />\n <Text color=\"bright\">{parentNode.hostname}</Text>\n </Anchor>\n {nodes.length >= 5 && (\n <Flex padding={[0, 0, 0, 2]}>\n <Search\n value={value}\n onChange={onChange}\n iconLeft={<Icon name=\"search_s\" size=\"small\" color=\"text\" />}\n metaShrinked\n />\n </Flex>\n )}\n <Flex column gap={2}>\n {nodes.map(({ hostname, url, status }) => (\n <Node key={hostname} hostname={hostname} url={url} status={status} />\n ))}\n </Flex>\n </Flex>\n </MenuList>\n )\n}\n\nexport default ReplicatedNodes\n","import React, { useRef, useEffect } from \"react\"\nimport { Flex } from \"@netdata/netdata-ui\"\nimport { useSelector } from \"store/redux-separate-context\"\nimport { sendToChildIframe, useListenToPostMessage } from \"@/src/utils/post-message\"\nimport { getIframeSrc } from \"@/src/utils\"\nimport { selectCloudBaseUrl } from \"domains/global/selectors\"\n\nconst SpacePanelIframe = ({ parentNode, replicatedNodes }) => {\n const cloudBaseURL = useSelector(selectCloudBaseUrl)\n\n const ref = useRef()\n\n const [spacePanelMessage] = useListenToPostMessage(\"hello-from-space-panel\")\n\n useEffect(() => {\n if (!spacePanelMessage || !ref.current) return\n sendToChildIframe(ref.current, {\n type: \"streamed-hosts-data\",\n payload: { parentNode, replicatedNodes },\n })\n }, [replicatedNodes, parentNode, spacePanelMessage])\n\n return (\n <Flex\n ref={ref}\n as=\"iframe\"\n src={getIframeSrc(cloudBaseURL, \"space-panel\")}\n title=\"space panel\"\n width=\"100%\"\n height=\"100%\"\n border={{ side: \"all\", size: \"0px\" }}\n />\n )\n}\n\nexport default SpacePanelIframe\n","import React from \"react\"\nimport { TextSmall } from \"@netdata/netdata-ui\"\n\nconst promptContent = {\n signIn: {\n title: \"Welcome back!\",\n content: [\n <TextSmall key=\"1\" color=\"bright\">\n Sign in again to enjoy the benefits of Netdata Cloud{\" \"}\n </TextSmall>,\n ],\n },\n signUp: {\n title: \"Welcome to Netdata Cloud!\",\n content: [\n <TextSmall key=\"1\" color=\"bright\">\n <TextSmall strong color=\"bright\">\n A single place\n </TextSmall>{\" \"}\n for all your nodes.\n </TextSmall>,\n <TextSmall key=\"2\" color=\"bright\">\n <TextSmall strong color=\"bright\">\n Multi-node dashboards\n </TextSmall>{\" \"}\n out of the box.\n </TextSmall>,\n <TextSmall key=\"3\" color=\"bright\">\n <TextSmall strong color=\"bright\">\n Custom dashboards\n </TextSmall>{\" \"}\n for you to create, edit and share online.\n </TextSmall>,\n <TextSmall key=\"4\" color=\"bright\">\n <TextSmall strong color=\"bright\">\n Metric Correlations\n </TextSmall>{\" \"}\n to find the root cause of anything.\n </TextSmall>,\n <TextSmall key=\"5\" color=\"bright\">\n <TextSmall strong color=\"bright\">\n Centrally dispatched notifications\n </TextSmall>{\" \"}\n for all alarms of all your nodes.\n </TextSmall>,\n <TextSmall key=\"6\" color=\"bright\">\n And... It is{\" \"}\n <TextSmall\n as=\"a\"\n href=\"https://www.netdata.cloud/get-netdata/\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n strong\n color=\"bright\"\n >\n free, forever!\n </TextSmall>\n </TextSmall>,\n ],\n },\n}\n\nexport default promptContent\n","import React from \"react\"\nimport { Flex, Text, Button } from \"@netdata/netdata-ui\"\nimport SignIn from \"@/src/components/auth/signIn\"\nimport promptContent from \"./promptContent\"\n\nconst SignInPrompt = () => {\n return (\n <SignIn>\n {({ isRegistry, link, hasSignedInBefore, onSignIn, offline }) => {\n const { title, content } = promptContent[hasSignedInBefore ? \"signIn\" : \"signUp\"]\n return (\n <Flex\n background={['gray', 'trout']}\n column\n gap={4}\n padding={[10]}\n border={{ side: \"right\", color: \"panel\" }}\n >\n <Text color=\"bright\" strong>\n {title}\n </Text>\n {content.map(el => el)}\n <Button\n width=\"100%\"\n label={hasSignedInBefore ? \"SIGN IN TO CLOUD\" : \"SIGN UP TO CLOUD\"}\n disabled={offline}\n {...(isRegistry ? { as: \"a\", href: link } : { onClick: onSignIn })}\n />\n </Flex>\n )\n }}\n </SignIn>\n )\n}\n\nexport default SignInPrompt\n","import React from \"react\"\n\nconst NoNetwork = () => (\n <svg width=\"68\" height=\"68\" viewBox=\"0 0 68 68\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M48.875 6.375H19.125C16.7778 6.375 14.875 8.27779 14.875 10.625V40.375C14.875 42.7222 16.7778 44.625 19.125 44.625H48.875C51.2222 44.625 53.125 42.7222 53.125 40.375V10.625C53.125 8.27779 51.2222 6.375 48.875 6.375Z\"\n fill=\"white\"\n stroke=\"#AEB3B7\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M41.0834 38.25C41.8658 38.25 42.5 38.8843 42.5 39.6667V41.0833C44.0648 41.0833 45.3334 42.3519 45.3334 43.9167V58.0833C45.3334 59.6481 44.0648 60.9167 42.5 60.9167H38.25V65.1667H31.8278V60.9167H26.9167C25.3519 60.9167 24.0834 59.6481 24.0834 58.0833V43.9167C24.0834 42.3519 25.3519 41.0833 26.9167 41.0833V39.6667C26.9167 38.8843 27.551 38.25 28.3334 38.25H41.0834Z\"\n fill=\"#35414A\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M39.7954 12.75C40.5778 12.75 41.2121 13.3843 41.2121 14.1667L41.2108 16.7294L43.9166 16.7296C44.699 16.7296 45.3333 17.3639 45.3333 18.1463V34C45.3333 34.7824 44.699 35.4167 43.9166 35.4167L43.272 35.4152L43.2727 33.3403H41.2121L41.2108 35.4152H39.151L39.1515 33.3403H37.0909L37.0897 35.4152H35.0299L35.0303 33.3403H32.9697L32.9686 35.4152H30.9088L30.909 33.3403H28.8484L28.8475 35.4152H26.7877L26.7878 33.3403H24.7272L24.7265 35.4152L24.0833 35.4167C23.3009 35.4167 22.6666 34.7824 22.6666 34V18.1463C22.6666 17.3639 23.3009 16.7296 24.0833 16.7296L26.7877 16.7294L26.7878 14.1667C26.7878 13.3843 27.4221 12.75 28.2045 12.75H39.7954Z\"\n fill=\"#35414A\"\n />\n </svg>\n)\n\nexport default NoNetwork\n","import React from \"react\"\nimport { Flex, TextNano, TextSmall } from \"@netdata/netdata-ui\"\nimport NoNetwork from \"./noNetwork\"\n\nconst OfflinePrompt = () => (\n <Flex alignItems=\"center\" background={[\"gray\", \"trout\"]} column gap={1} padding={[10]}>\n <TextSmall color=\"bright\" strong textAlign=\"center\">\n Can't connect to Netdata Cloud\n </TextSmall>\n <NoNetwork />\n <TextNano color=\"bright\" textAlign=\"center\" margin={[2, 0, 0]}>\n Maybe you are behind a firewall or you don’t have connection to the internet\n </TextNano>\n </Flex>\n)\n\nexport default OfflinePrompt\n","import React, { useCallback } from \"react\"\nimport { useSelector } from \"react-redux\"\nimport { createSelector } from \"reselect\"\nimport { Flex, Text, TextSmall, Collapsible, Button } from \"@netdata/netdata-ui\"\nimport { selectIsUsingGlobalRegistry, selectIsCloudEnabled } from \"domains/global/selectors\"\nimport getNodes from \"./nodes\"\nimport ReplicatedNodes from \"./replicatedNodes\"\nimport SpacePanelIframe from \"./spacePanelIframe\"\nimport SignInPrompt from \"./prompts/signIn\"\nimport OfflinePrompt from \"./prompts/offline\"\n\nconst replicatedNodesSelector = createSelector(\n state => state.global.chartsMetadata.data || {},\n state => state.global.registry.fullInfoPayload.mirrored_hosts_status || {},\n ({ hosts, hostname }, hostsStatus) => getNodes(hosts, hostname, hostsStatus)\n)\n\nconst visitedNodesSelector = createSelector(\n state => state.global.registry,\n registry => registry.registryMachinesArray || []\n)\n\nconst isSignedInSelector = createSelector(\n ({ dashboard }) => dashboard,\n ({ isSignedIn, offline }) => ({ isSignedIn, offline })\n)\n\nconst Space = ({ isOpen, toggle }) => {\n const { parentNode = {}, replicatedNodes = [] } = useSelector(replicatedNodesSelector)\n const visitedNodes = useSelector(visitedNodesSelector)\n const globalRegistry = useSelector(selectIsUsingGlobalRegistry)\n const { isSignedIn, offline } = useSelector(isSignedInSelector)\n const cloudEnabled = useSelector(selectIsCloudEnabled)\n\n const switchIdentity = useCallback(() => window.switchRegistryModalHandler(), [])\n\n return (\n <Collapsible width={74} background=\"panel\" open={isOpen} direction=\"horizontal\" persist>\n <Flex\n flex\n column\n overflow={{ vertical: \"hidden\" }}\n margin={[3, 0, 0]}\n border={{ side: \"left\", color: \"separator\" }}\n style={{ pointerEvents: \"all\" }}\n >\n <Flex overflow={{ vertical: \"auto\" }} flex column gap={4} padding={[4]}>\n <Flex alignSelf=\"end\">\n <Button\n neutral\n flavour=\"borderless\"\n themeType=\"dark\"\n small\n icon=\"chevron_left\"\n onClick={toggle}\n />\n </Flex>\n {!isSignedIn && (\n <>\n {!!replicatedNodes.length && (\n <ReplicatedNodes parentNode={parentNode} replicatedNodes={replicatedNodes} />\n )}\n {!!visitedNodes.length && (\n <Text strong color=\"border\">\n VisitedNodes\n </Text>\n )}\n </>\n )}\n {isSignedIn && (\n <SpacePanelIframe parentNode={parentNode} replicatedNodes={replicatedNodes} />\n )}\n </Flex>\n {globalRegistry && (\n <Flex border={{ side: \"top\" }} justifyContent=\"center\" alignItems=\"center\" padding={[6]}>\n <TextSmall onClick={switchIdentity}>Switch Identity</TextSmall>\n </Flex>\n )}\n {!isSignedIn && cloudEnabled && <SignInPrompt />}\n {offline && cloudEnabled && <OfflinePrompt />}\n </Flex>\n </Collapsible>\n )\n}\n\nexport default React.memo(Space)\n","import React, { useCallback, useEffect } from \"react\"\nimport styled from \"styled-components\"\nimport { createSelector } from \"reselect\"\nimport { Flex } from \"@netdata/netdata-ui\"\nimport { useDispatch, useSelector } from \"react-redux\"\nimport { useLocalStorage } from \"react-use\"\nimport { selectSpacePanelIsActive } from \"@/src/domains/global/selectors\"\nimport { setSpacePanelStatusAction } from \"@/src/domains/global/actions\"\nimport Spaces from \"./spaces\"\nimport Space from \"./space\"\n\nconst Wrapper = styled(Flex).attrs({ height: \"100vh\", zIndex: 10 })`\n pointer-events: all;\n`\n\nconst isSignedInSelector = createSelector(\n ({ dashboard }) => dashboard,\n ({ isSignedIn }) => isSignedIn\n)\n\nconst Sidebar = () => {\n const [lsValue, setLsValue] = useLocalStorage(\"space-panel-state\")\n const isOpen = useSelector(selectSpacePanelIsActive)\n const signedIn = useSelector(isSignedInSelector)\n\n const dispatch = useDispatch()\n\n const toggle = useCallback(() => {\n dispatch(setSpacePanelStatusAction({ isActive: !isOpen }))\n setLsValue(!isOpen)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOpen])\n\n useEffect(() => {\n dispatch(setSpacePanelStatusAction({ isActive: lsValue ? signedIn : false }))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [signedIn])\n\n return (\n <Wrapper>\n <Spaces isOpen={isOpen} toggle={toggle} isSignedIn={signedIn} />\n <Space isOpen={isOpen} toggle={toggle} offline={true} />\n </Wrapper>\n )\n}\n\nexport default React.memo(Sidebar)\n","import React from \"react\"\nimport styled from \"styled-components\"\nimport { Flex } from \"@netdata/netdata-ui\"\nimport Header from \"components/header\"\nimport Sidebar from \"components/sidebar\"\n\nconst Wrapper = styled(Flex).attrs({\n position: \"fixed\",\n justifyContent: \"start\",\n alignItems: \"start\",\n width: \"100%\",\n zIndex: 10,\n})`\n top: 0;\n left: 0;\n pointer-events: none;\n`\n\nconst Layout = ({ children, printMode }) => {\n\n if (printMode) return children\n\n return (\n <Wrapper>\n <Sidebar />\n <Header />\n {children}\n </Wrapper>\n )\n}\n\nexport default Layout\n","import { DefaultTheme, DarkTheme } from \"@netdata/netdata-ui\"\n\nexport type DashboardTheme = \"white\" | \"slate\"\n\nexport const mapTheme = (theme: DashboardTheme) => ({\n slate: DarkTheme,\n white: DefaultTheme,\n})[theme] || DarkTheme\n","import React, { useEffect, useLayoutEffect, useRef, useState } from \"react\"\nimport Ps from \"perfect-scrollbar\"\nimport { ThemeProvider } from \"styled-components\"\n\nimport \"@material/menu-surface/dist/mdc.menu-surface.css\"\n\n// intentionally loading before bootstrap styles\nimport \"./styles/main.css\"\n\n// needs to be included before bootstrap\nimport \"domains/chart/utils/jquery-loader\"\nimport \"bootstrap\"\nimport \"bootstrap-toggle\"\nimport \"bootstrap-toggle/css/bootstrap-toggle.min.css\"\n\nimport { useStore } from \"react-redux\"\nimport \"typeface-ibm-plex-sans\"\nimport \"@fortawesome/fontawesome-free/js/all\"\n\nimport \"styles/fonts.css\"\nimport { loadCss } from \"utils/css-loader\"\nimport { useDateTime } from \"utils/date-time\"\nimport { useSelector } from \"store/redux-separate-context\"\nimport {\n selectCloudBaseUrl,\n selectHasFetchedInfo,\n selectTheme,\n} from \"domains/global/selectors\"\nimport { Portals } from \"domains/chart/components/portals\"\nimport { useChartsMetadata } from \"domains/dashboard/hooks/use-charts-metadata\"\nimport { PrintModal } from \"domains/dashboard/components/print-modal\"\nimport { SidebarSocialMedia } from \"domains/dashboard/components/sidebar-social-media\"\nimport { SidebarSocialMediaPortal } from \"domains/dashboard/components/sidebar-social-media-portal\"\nimport { isPrintMode } from \"domains/dashboard/utils/parse-url\"\nimport useAlarmFromUrl from \"domains/dashboard/hooks/useAlarmFromUrl\"\nimport { useRegistry } from \"hooks/use-registry\"\nimport { useAlarms } from \"hooks/use-alarms\"\nimport { NotificationsContainer } from \"components/notifications-container\"\n\nimport Layout from \"components/layout\"\n\nimport \"./types/global\"\n\nimport { useInfo } from \"hooks/use-info\"\nimport { serverStatic } from \"utils/server-detection\"\nimport { mapTheme } from \"utils/map-theme\"\nimport { netdataCallback, updateLocaleFunctions } from \"./main\"\n\n// support legacy code\nwindow.Ps = Ps\n\n\nconst App: React.FC = () => {\n const store = useStore()\n useEffect(() => {\n // todo\n // @ts-ignore\n window.NETDATA.alarms = {}\n // @ts-ignore\n window.NETDATA.pause = callback => {\n callback()\n }\n netdataCallback(store)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n const [refreshHelper, setRefreshHelper] = useState<number>()\n // this is temporary, we will not need it when main.js will be fully refactored\n const haveDOMReadyForParsing = refreshHelper !== undefined\n // a workaround - each time parseDom is run, the portals are rerendered\n const parseDom = useRef(() => {\n setRefreshHelper(Math.random())\n })\n\n useEffect(() => {\n if (haveDOMReadyForParsing) {\n const loadOverlay = document.getElementById(\"loadOverlay\")\n if (loadOverlay) {\n loadOverlay.style.display = \"none\"\n }\n }\n }, [haveDOMReadyForParsing])\n\n const { localeDateString, localeTimeString } = useDateTime()\n useEffect(() => {\n updateLocaleFunctions({\n localeDateString,\n localeTimeString,\n })\n }, [localeDateString, localeTimeString])\n\n useRegistry(true)\n useAlarms(true)\n useInfo(true)\n\n const [hasFetchDependencies, setHasFetchDependencies] = useState(false)\n useLayoutEffect(() => {\n Promise.all([\n loadCss(serverStatic + window.NETDATA.themes.current.bootstrap_css),\n loadCss(serverStatic + window.NETDATA.themes.current.dashboard_css),\n ]).then(() => {\n setHasFetchDependencies(true)\n })\n }, [])\n\n const chartsMetadata = useChartsMetadata()\n const cloudBaseURL = useSelector(selectCloudBaseUrl)\n\n // @ts-ignore\n window.NETDATA.parseDom = parseDom.current\n\n const hasFetchedInfo = useSelector(selectHasFetchedInfo)\n const theme = useSelector(selectTheme)\n useAlarmFromUrl()\n\n\n return (\n <ThemeProvider theme={mapTheme(theme)}>\n {hasFetchDependencies && (\n // this needs to render after dynamic css files are loaded, otherwise netdata-ui\n // styling will have smaller priority than bootstrap css\n <NotificationsContainer />\n )}\n {chartsMetadata && cloudBaseURL && hasFetchedInfo && haveDOMReadyForParsing && (\n <Layout printMode={isPrintMode}>\n {hasFetchDependencies && (\n <>\n <Portals key={refreshHelper} />\n <SidebarSocialMediaPortal>\n <SidebarSocialMedia />\n </SidebarSocialMediaPortal>\n {isPrintMode && <PrintModal />}\n </>\n )}\n </Layout>\n )}\n </ThemeProvider>\n )\n}\n\nexport default App\n","import { useEffect } from \"react\"\n\nimport { useDispatch, useSelector } from \"store/redux-separate-context\"\nimport { serverDefault } from \"utils/server-detection\"\nimport { fetchHelloAction } from \"domains/global/actions\"\nimport { selectRegistry } from \"domains/global/selectors\"\n\nexport const useRegistry = (shouldUseRegistry: boolean) => {\n const registry = useSelector(selectRegistry)\n\n const dispatch = useDispatch()\n useEffect(() => {\n if (shouldUseRegistry && !registry.isFetchingHello && !registry.hasFetchedHello\n && !registry.isHelloCallError\n ) {\n dispatch(fetchHelloAction.request({\n serverDefault,\n }))\n }\n }, [dispatch, registry, shouldUseRegistry])\n}\n","import { useEffect } from \"react\"\n\nimport { useDispatch, useSelector } from \"store/redux-separate-context\"\nimport { startAlarmsAction } from \"domains/global/actions\"\nimport { selectHasStartedAlarms } from \"domains/global/selectors\"\nimport { serverDefault } from \"utils/server-detection\"\n\nexport const useAlarms = (shouldUseAlarms: boolean) => {\n const hasStartedAlarms = useSelector(selectHasStartedAlarms)\n\n const dispatch = useDispatch()\n useEffect(() => {\n if (shouldUseAlarms && !hasStartedAlarms) {\n dispatch(startAlarmsAction({\n serverDefault,\n }))\n }\n }, [dispatch, hasStartedAlarms, shouldUseAlarms])\n}\n","import { useEffect } from \"react\"\nimport { useDispatch, useSelector } from \"store/redux-separate-context\"\nimport { fetchInfoAction } from \"domains/chart/actions\"\nimport { selectRegistry } from \"domains/global/selectors\"\n\nexport const useInfo = (shouldUseInfo: boolean) => {\n const registry = useSelector(selectRegistry)\n const hasStartedInfo = registry?.hasStartedInfo || false\n const dispatch = useDispatch()\n useEffect(() => {\n if (shouldUseInfo && !hasStartedInfo) {\n dispatch(fetchInfoAction.request({\n poll: false,\n }))\n }\n }, [dispatch, hasStartedInfo, shouldUseInfo])\n}\n","import { useHttp } from \"hooks/use-http\"\nimport { serverDefault } from \"utils/server-detection\"\nimport { ChartsMetadata } from \"domains/global/types\"\n\nexport const useChartsMetadata = () => {\n const [chartsMetadata] = useHttp<ChartsMetadata>(`${serverDefault}api/v1/charts`)\n return chartsMetadata\n}\n","import { useMount } from \"react-use\"\n\nimport { useDispatch } from \"store/redux-separate-context\"\nimport { getHashParams } from \"utils/hash-utils\"\nimport { setAlarmAction, setGlobalPanAndZoomAction } from \"domains/global/actions\"\nimport { alarmStatuses } from \"domains/global/constants\"\n\nexport default () => {\n const dispatch = useDispatch()\n useMount(() => {\n const params = getHashParams()\n const alarmWhen = params[\"alarm_when\"]\n if (alarmWhen) {\n const alarmTime = Number(alarmWhen)\n\n const alarmStatus = params[\"alarm_status\"]\n const alarmChart = params[\"alarm_chart\"]\n const alarmValue = params[\"alarm_value\"]\n if (!alarmStatuses.includes(alarmStatus) || !alarmChart || !alarmValue) {\n return\n }\n\n dispatch(setAlarmAction({\n alarm: {\n chartId: alarmChart,\n status: alarmStatus,\n value: alarmValue,\n when: alarmTime,\n },\n }))\n const PADDING = 1000 * 60 * 5\n dispatch(setGlobalPanAndZoomAction({\n after: alarmTime * 1000 - PADDING,\n before: alarmTime * 1000 + PADDING,\n }))\n }\n })\n}\n","import React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport { Provider } from \"react-redux\"\n\nimport { store } from \"store\"\n\n// resolved in craco.config\n// @ts-ignore\nimport App from \"App\"\n\nimport \"./index.css\"\n\n// todo for static-dashboard:\n// 1) wait for the whole page to load, then render\n// 2) when the whole page is loaded, check window.NETDATA.options set by user and override initial\n// options settings\n\nReactDOM.render(\n <Provider store={store}>\n <App />\n </Provider>,\n document.getElementById(\"root\")\n)\n","import { ChartData, ChartMetadata } from \"../chart-types\"\nimport { seconds4human } from \"./seconds4human\"\n\nexport const LEGEND_BOTTOM_SINGLE_LINE_HEIGHT = 80\n\nexport const legendPluginModuleString = (withContext: boolean, chartMetadata: ChartMetadata) => {\n let str = \" \"\n let context = \"\"\n\n if (withContext && typeof chartMetadata.context === \"string\") {\n // eslint-disable-next-line prefer-destructuring\n context = chartMetadata.context\n }\n\n if (typeof chartMetadata.plugin === \"string\" && chartMetadata.plugin !== \"\") {\n str = chartMetadata.plugin\n\n if (str.endsWith(\".plugin\")) {\n str = str.substring(0, str.length - 7)\n }\n\n if (typeof chartMetadata.module === \"string\" && chartMetadata.module !== \"\") {\n str += `:${chartMetadata.module}`\n }\n\n if (withContext && context !== \"\") {\n str += `, ${context}`\n }\n } else if (withContext && context !== \"\") {\n str = context\n }\n return str\n}\n\nexport const legendResolutionTooltip = (chartData: ChartData, chartMetadata: ChartMetadata) => {\n const collected = chartMetadata.update_every\n // todo if there's no data (but maybe there wont be situation like this), then use \"collected\"\n const viewed = chartData.view_update_every\n if (collected === viewed) {\n return `resolution ${seconds4human(collected)}`\n }\n\n return `resolution ${seconds4human(viewed)}, collected every ${seconds4human(collected)}`\n}\n\ntype GetNewSelectedDimensions = (arg: {\n allDimensions: string[],\n selectedDimensions: string[],\n clickedDimensionName: string,\n isModifierKeyPressed: boolean,\n}) => string[]\n\nexport const getNewSelectedDimensions: GetNewSelectedDimensions = ({\n allDimensions,\n selectedDimensions,\n clickedDimensionName,\n isModifierKeyPressed,\n}) => {\n // when selectedDimensions is empty, then all dimensions should be enabled\n // let's narrow this case now\n const enabledDimensions = selectedDimensions.length === 0 ? allDimensions : selectedDimensions\n const isCurrentlySelected = enabledDimensions.includes(clickedDimensionName)\n\n let newSelectedDimensions: string[]\n if (!isModifierKeyPressed\n && ((isCurrentlySelected && enabledDimensions.length > 1) || !isCurrentlySelected)\n ) {\n newSelectedDimensions = [clickedDimensionName]\n } else if (isCurrentlySelected) { // modifier key pressed\n newSelectedDimensions = enabledDimensions.filter(\n (dimension) => dimension !== clickedDimensionName,\n )\n } else { // modifier key pressed\n newSelectedDimensions = enabledDimensions.concat(clickedDimensionName)\n }\n\n if (newSelectedDimensions.length === allDimensions.length) {\n return []\n }\n return newSelectedDimensions\n}\n","import { useMemo } from \"react\"\n\nimport { useSelector } from \"store/redux-separate-context\"\nimport { selectTimezoneSetting } from \"domains/global/selectors\"\n\nconst zeropad = (x: number) => {\n if (x > -10 && x < 10) {\n return `0${x.toString()}`\n }\n return x.toString()\n}\n\nexport const isSupportingDateTimeFormat = !!(Intl && Intl.DateTimeFormat && navigator.language)\n\nconst narrowToDate = (d: Date | number) => (typeof d === \"number\"\n ? new Date(d)\n : d\n)\n// these are the old netdata functions\n// we fallback to these, if the new ones fail\nexport const localeDateStringNative = (d: Date | number) => narrowToDate(d).toLocaleDateString()\nexport const localeTimeStringNative = (d: Date | number) => narrowToDate(d).toLocaleTimeString()\nexport const xAxisTimeStringNative = (d: Date | number) => {\n const date = narrowToDate(d)\n return `${zeropad(date.getHours())}:${\n zeropad(date.getMinutes())}:${\n zeropad(date.getSeconds())}`\n}\n\n\nexport const isProperTimezone = (timeZone: string): boolean => {\n try {\n Intl.DateTimeFormat(navigator.language, {\n localeMatcher: \"best fit\",\n formatMatcher: \"best fit\",\n weekday: \"short\",\n year: \"numeric\",\n month: \"short\",\n day: \"2-digit\",\n timeZone,\n })\n } catch (e) {\n return false\n }\n return true\n}\n\nexport const useDateTime = () => {\n const timezone = useSelector(selectTimezoneSetting)\n const isUsingTimezone = timezone !== \"\" && timezone !== \"default\"\n\n const localeDateString = useMemo(() => {\n const dateOptions = {\n localeMatcher: \"best fit\",\n formatMatcher: \"best fit\",\n weekday: \"short\",\n year: \"numeric\",\n month: \"short\",\n day: \"2-digit\",\n timeZone: isUsingTimezone ? timezone : undefined,\n }\n const dateFormat = () => new Intl.DateTimeFormat(navigator.language, dateOptions)\n return isSupportingDateTimeFormat\n ? (d: Date | number) => dateFormat().format(d)\n : localeDateStringNative\n }, [timezone, isUsingTimezone])\n\n\n const localeTimeString = useMemo(() => {\n const timeOptions = {\n localeMatcher: \"best fit\",\n hour12: false,\n formatMatcher: \"best fit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n timeZone: isUsingTimezone ? timezone : undefined,\n timeZoneName: isUsingTimezone ? \"short\" : undefined,\n }\n const timeFormat = () => new Intl.DateTimeFormat(navigator.language, timeOptions)\n return isSupportingDateTimeFormat\n ? (d: Date | number) => timeFormat().format(d)\n : localeTimeStringNative\n }, [timezone, isUsingTimezone])\n\n\n const xAxisTimeString = useMemo(() => {\n const xAxisOptions = {\n localeMatcher: \"best fit\",\n hour12: false,\n formatMatcher: \"best fit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n timeZone: isUsingTimezone ? timezone : undefined,\n }\n const xAxisFormat = () => new Intl.DateTimeFormat(navigator.language, xAxisOptions)\n return isSupportingDateTimeFormat\n ? (d: Date | number) => xAxisFormat().format(d)\n : xAxisTimeStringNative\n }, [timezone, isUsingTimezone])\n\n\n const xAxisDateString = useMemo(() => {\n const xAxisOptions = {\n localeMatcher: \"best fit\",\n hour12: false,\n formatMatcher: \"best fit\",\n day: \"2-digit\",\n month: \"2-digit\",\n timeZone: isUsingTimezone ? timezone : undefined,\n }\n const xAxisFormat = () => new Intl.DateTimeFormat(navigator.language, xAxisOptions)\n return isSupportingDateTimeFormat\n ? (d: Date | number) => xAxisFormat().format(d)\n : xAxisTimeStringNative\n }, [timezone, isUsingTimezone])\n\n return {\n localeDateString,\n localeTimeString,\n xAxisDateString,\n xAxisTimeString,\n }\n}\n","export const isMainJs = process.env.REACT_APP_IS_MAIN_DASHBOARD\nexport const isTestingEnv = process.env.NODE_ENV === \"test\"\nexport const isDevelopmentEnv = process.env.NODE_ENV === \"development\"\n","export const storeKey = \"dashboard\"\n","import { createContext } from \"react\"\nimport {\n createDispatchHook, createSelectorHook, ReactReduxContextValue,\n useSelector as useSelectorOriginal,\n useDispatch as useDispatchOriginal,\n} from \"react-redux\"\n\nconst shouldUseDefaultContext = process.env.REACT_APP_SHOULD_USE_DEFAULT_CONTEXT\n\nexport const dashboardReduxContext = shouldUseDefaultContext\n ? undefined\n : createContext<ReactReduxContextValue>(undefined as any)\n\nexport const useSelector = dashboardReduxContext\n ? createSelectorHook(dashboardReduxContext)\n : useSelectorOriginal\nexport const useDispatch = dashboardReduxContext\n ? createDispatchHook(dashboardReduxContext)\n : useDispatchOriginal\n","import { createAction } from \"redux-act\"\n\n// slightly simplified version of the creator used in the cloud\n// we will unify it when some typing issues will be fixed (cloud version didn't warn on bad payload)\nexport const createRequestAction = <RequestT, SuccessT = any, FailureT = any>(name: string) => {\n const action = createAction<RequestT>(name.toUpperCase())\n\n return Object.assign(action, {\n request: action,\n success: createAction<SuccessT>(\n `${name.toUpperCase()}_SUCCESS`,\n (payload) => payload,\n (meta) => meta,\n ),\n failure: createAction<FailureT>(\n `${name.toUpperCase()}_FAILURE`,\n (payload) => payload,\n (meta) => ({\n ...meta,\n error: true,\n }),\n ),\n })\n}\n"],"sourceRoot":""} \ No newline at end of file