{"version":3,"sources":["utils/units-conversion.ts","components/button/button.tsx","domains/chart/components/toolbox-button.tsx","domains/chart/components/resize-handler.tsx","domains/global/actions.ts","hooks/use-user-node-access.ts","utils/index.ts","utils/name-2-id.ts","domains/global/reducer.ts","components/icon.tsx","domains/chart/reducer.ts","domains/chart/utils/transformDataAttributes.ts","domains/chart/actions.ts","components/header/constants.js","main.js","components/header/ACLK/use-cloud-connection-status.tsx","components/header/ACLK/cloud-connection-status-modal.tsx","components/header/ACLK/cloud-connection-status.tsx","domains/global/constants.ts","utils/utils.ts","vendor/d3pie-0.2.1-netdata-3.js","components/header/ACLK/index.ts","utils/server-detection.ts","domains/chart/selectors.ts","utils/date-time.js","domains/dashboard/actions.ts","domains/chart/constants.ts","domains/chart/utils/seconds4human.ts","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","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/hooks/useDygraphBadge.js","domains/chart/components/lib-charts/proceeded-chart-disclaimer.tsx","domains/chart/components/lib-charts/alarmBadge.js","domains/chart/components/lib-charts/dygraph-chart.tsx","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/events.ts","domains/chart/components/lib-charts/group-box-chart/drawBoxes.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/dashboard/components/migration-modal/use-migration-modal.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","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.js","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/tooltips/customTooltip.js","components/tooltips/getContent.js","components/tooltips/index.js","components/header/options/index.js","components/header/protoBuf/dropdown.js","components/header/protoBuf/index.js","components/app-header/components/versionControl/index.js","components/header/version.js","hooks/useToggle/index.js","hooks/useLocalStorage/index.js","components/mdx-components/dropdown/styled.js","components/date-picker/styled.js","components/mdx-components/dropdown/dropdown.js","components/date-picker/timePeriod.js","components/date-picker/utils.js","components/date-picker/timePeriods.js","components/date-picker/customTimePeriod.js","components/datePicker/datePickerLib.js","components/datePicker/styled.js","components/date-picker/datePickerInput.js","components/date-picker/useLocaleDate.js","components/date-picker/useConvertedDate.js","components/date-picker/datePickerWrapper.js","components/date-picker/periodIndication.js","components/date-picker/accessorElement/utils.js","components/date-picker/accessorElement/container.js","components/date-picker/accessorElement/dateBox.js","components/date-picker/accessorElement/durationBox.js","components/date-picker/accessorElement/index.js","components/date-picker/datePickerDrop.js","components/date-picker/reduxDatePickerContainer.js","components/header/globalControls/container.js","components/header/globalControls/playPausePill/styledPill.js","components/header/globalControls/playPausePill/index.js","components/menus/item.js","components/menus/list.js","components/header/globalControls/playOptions/playOptionsTooltip.js","components/menus/styled.js","components/header/globalControls/playOptions/index.js","components/header/globalControls/index.js","components/header/pill/styled.js","components/header/pill/index.js","components/header/alarms.js","components/header/news/index.js","components/header/timezone/dropdown.js","components/header/timezone/search/searchInput.js","components/header/timezone/search/index.js","components/header/timezone/container.js","components/header/timezone/wrapper.js","components/header/timezone/offsetItem.js","components/header/timezone/timezones.js","components/header/timezone/utils.js","components/header/timezone/index.js","components/auth/signIn/iframe.js","components/auth/signIn/useCheckSignInStatus.js","components/header/signIn/index.js","components/discover-cloud/cloudTab.js","components/discover-cloud/discoverCloudModal.js","components/discover-cloud/contants.js","components/discover-cloud/discoverCloudDrop.js","components/discover-cloud/discoverCloud.js","components/header/index.js","components/sidebar/spaces/expandButton.js","components/auth/signOut/index.js","components/sidebar/spaces/userSettings.js","components/sidebar/spaces/spacesSkeleton.js","components/sidebar/spaces/spacesIframe.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","domains/dashboard/components/migration-modal/migration-modal.js","domains/dashboard/components/migration-manager/migration-manager.tsx","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","../public/lib/dygraph-c91c859.min.js","domains/chart/utils/legend-utils.ts","components/auth/signIn/index.js","utils/hash-utils.ts","utils/post-message.ts","utils/env.ts","domains/dashboard/constants.ts","store/redux-separate-context.ts","utils/is-demo.ts","components/anchor/index.tsx","domains/global/selectors.ts","utils/createRequestAction.ts","domains/global/options.ts"],"names":["currentTemperatureSetting","currentSecondsAsTimeSetting","zeropad","x","seconds2time","seconds","maxTimeUnit","secondsReturn","Math","abs","days","floor","hours","minutes","daysString","hoursString","minutesString","secondsString","toFixed","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","twoFixed","multiplier","value","convertibleUnits","Celsius","Fahrenheit","check","convert","celsius","fahrenheit","milliseconds","microseconds","max","identity","unitsConversionCreator","keys","latest","globalReset","this","get","uuid","min","units","desiredUnits","commonUnitsName","switchUnitsCallback","temperatureSetting","secondsAsTimeSetting","undefined","newConvertFunction","tunits","tdivider","scalableUnitsGroup","Object","forEach","unit","unitDivider","commonUnitsKey","t","divider","commonUnits","console","log","toString","Button","React","ref","children","className","rest","type","classNames","ToolboxButton","iconType","onClick","onDoubleClick","onMouseDown","onTouchStart","popoverContent","popoverTitle","buttonRef","useRef","showHelp","useSelector","selectShowHelp","useEffect","current","window","$","popover","container","animation","html","trigger","placement","delay","show","NETDATA","options","show_help_delay_show_ms","hide","show_help_delay_hide_ms","title","content","LOCALSTORAGE_HEIGHT_KEY_PREFIX","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","localStorage","setItem","onMouseMove","e","onTouchMove","document","addEventListener","onTouchEnd","removeEventListener","onMouseEnd","stopPropagation","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","setGlobalPauseAction","resetGlobalPauseAction","setUTCOffset","setUserNodeAccess","useRequestRefreshOfAccessMessage","sendToChildIframe","SIGN_IN_IFRAME_ID","payload","useUserNodeAccessMessage","useListenToPostMessage","message","name2id","s","replace","initialState","commonColorsKeys","commonMin","commonMax","currentSelectionMasterId","globalPanAndZoom","defaultAfter","isMainJs","getInitialAfterFromWindow","globalChartUnderlay","hoveredX","hasWindowFocus","hasFocus","globalPause","spacePanelIsActive","spacePanelTransitionEndIsActive","registry","cloudBaseURL","hasFetchedInfo","hasFetchedHello","isHelloCallError","hostname","isCloudEnabled","isCloudAvailable","isAgentClaimed","isACLKAvailable","hasStartedInfo","isFetchingHello","fullInfoPayload","machineGuid","personGuid","registryMachines","registryMachinesArray","registryServer","snapshot","alarms","activeAlarms","hasStartedAlarms","alarm","chartsMetadata","isFetching","isFetchingError","data","optionsMergedWithLocalStorage","userNodeAccess","globalReducer","createReducer","getKeyForCommonColorsState","colorsAttribute","commonColorsAttribute","chartContext","hasCustomColors","length","hasLastOnly","array","last","createCommonColorsKeysSubstate","custom","split","init","shouldCopyTheme","assigned","available","themes","colors","on","state","dimensionNames","keyName","subState","currentlyAssignedNr","requestedDimensionsAssigned","mergeAll","filter","dimensionName","map","i","commonMinKey","charts","currentExtreme","values","commonMaxKey","isActive","after","before","masterID","warn","highlightMargin","resetPanAndZoom","hasFocusNow","forcePlay","stop_updates_when_focus_is_lost","utcOffset","request","success","failure","CLOUD_BASE_URL_DISABLED","fetchInfoAction","key","clearLocalStorage","getOptionsMergedWithLocalStorage","parsedData","dataKey","uncompressed","uncompress","JSON","parse","reduce","acc","obj","typeToClassName","left","reset","right","zoomIn","zoomOut","resize","lineChart","areaChart","noChart","loading","noData","Icon","initialSingleState","chartData","chartId","chartMetadata","chartPanAndZoom","fetchDataParams","isRemotelyControlled","viewRange","isFetchingData","isFetchDataFailure","isFetchDetailsFailure","isFetchingDetails","snapshotDataIsFetching","snapshotDataIsError","snapshotData","chartReducer","getSubstate","fetchDataAction","chart","fetchDataCancelAction","substate","useNewKeysOnlyIfDifferent","fetchDataForSnapshotAction","snapshotExportResetAction","pick","fetchChartAction","setChartPanAndZoomAction","shouldForceTimeRange","resetChartPanAndZoomAction","SYNC_PAN_AND_ZOOM","assoc","clearChartStateAction","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","name","startsWith","merged","isEmpty","getAttributesDynamic","defaultAttributes","initialLegendRight","localeDateString","localeTimeString","updateLocaleFunctions","newLocaleDateString","newLocaleTimeString","netdataShowAlarms","netdataRegistry","netdataServer","netdataServerStatic","netdataCheckXSS","reduxStore","escapeUserInputHTML","setOption","getFromRegistry","prop","selectRegistry","getState","verifyURL","urlOptions","hash","theme","help","mode","update_always","pan_and_zoom","server","getHashParam","highlight","highlight_after","highlight_before","nowelcome","show_alarms","family","utc","hasProperty","property","genHash","forReload","parseHash","variables","location","len","p","decodeURIComponent","booleans","numeric","parseInt","origin","pathname","welcome","Date","now","hashUpdate","history","replaceState","netdataPanAndZoomCallback","status","netdataSnapshotData","updateUtcParam","netdataHighlightCallback","round","d1","d2","getElementById","innerHTML","seconds4human","tooltip","clearHighlight","showHighlight","localStorageTested","localStorageTest","Storage","removeItem","loadLocalStorage","ret","getItem","error","saveLocalStorage","getTheme","def","setTheme","netdataTheme","updateTheme","netdataShowHelp","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","encodeURIComponent","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","endsWith","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","reduxState","selectDefaultAfter","start_ms","selectGlobalPanAndZoom","Boolean","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","createSelectOption","dashboardSettingsSetup","update_options_modal","sync_option","self","bootstrapToggle","units_sync_option","temp_sync_option","change","CHART_DIV_ID_PREFIX","CHART_DIV_OFFSET","scrollDashboardTo","chartElement","offsetTop","querySelector","modalHiddenCallback","animated","alarmDate","alarmStatus","includes","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","isDemo","retries_on_data_failures","o","q","arguments","l","getElementsByTagName","src","parentNode","insertBefore","ga","onresizeCallback","update","resetDashboardOptions","selected_server_timezone","isProperTimezone","userSetServerTimezone","timezoneOption","netdataCallback","showSignInModal","explicitlySignIn","explicitlySignInAction","useCloudConnectionStatus","userStatus","nodeStatus","date","useMemo","header","strong","bullets","rel","href","CTA1","makeCloudConnectionStatusInfo","CloudConnectionStatusModal","closeModal","onRefresh","isCTA1Disabled","handleClickedCTA1","background","margin","onClose","padding","column","gap","as","bullet","data-testid","utmParameters","campaign","data-ga","disabled","textTransform","label","Text","sx","fontWeight","lineHeight","CloudConnectionStatus","selectUserNodeAccess","cloudEnabled","selectIsCloudEnabled","isModalOpen","setModalOpen","cloudConnectionStatusInfo","nodeLiveness","documentElement","openModal","flavour","MASKED_DATA","INFO_POLLING_FREQUENCY","alarmStatuses","isTimestamp","NETDATA_REGISTRY_SERVER","MS_IN_SECOND","getIframeSrc","path","utmUrlSuffix","getBoundingClientRect","obj1","obj2","equals","callAll","fns","arg","define","_uniqueIDCounter","defaultSettings","color","fontSize","font","subtitle","titleSubtitlePadding","canvasHeight","canvasWidth","pieInnerRadius","pieOuterRadius","sortOrder","ignoreSmallSegments","valueType","smallSegmentGrouping","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","misc","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","relativeAmount","currentScript","isTestingEnv","getDefaultServer","isDevelopmentEnv","RegExp","getPathFromScriptSource","cond","T","alwaysEndWithSlash","pipe","concat","serverStatic","selectChartsState","selectSingleChartState","createSelector","_","chartsState","selectChartData","chartState","selectChartMetadataFromExplicitCall","selectChartMetadata","selectChartMetadataFromChartsCall","metadataFromAll","metadataFromSingleCall","selectIsFetchingDetails","makeSelectChartMetadataRequest","selectChartViewRange","selectChartIsFetchingData","selectChartFetchDataParams","selectResizeHeight","selectChartPanAndZoom","selectAmountOfFetchedCharts","some","hasCompletedFetching","selectNameOfAnyFetchingChart","isSupportingDateTimeFormat","navigator","language","narrowToDate","localeDateStringNative","localeTimeStringNative","xAxisTimeStringNative","localeMatcher","formatMatcher","weekday","year","month","day","dateFormat","locale","long","isTime","secs","hourCycle","dateStyle","timeStyle","getOptions","getTimezone","useDateTime","selectTimezoneSetting","selectUTCOffsetSetting","xAxisTimeString","xAxisDateString","showSignInModalAction","isSignedInAction","setOfflineAction","fallbackUpdateTimeInterval","panAndZoomDelay","totalSeconds","defaultOptions","hour","minute","second","and","strings","pop","join","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","empty","startWith","switchMap","subscribe","fillMissingData","nrOfPointsToFill","viewUpdateEvery","view_update_every","firstAddedTimestamp","emptyPoint","tail","nulls","fill","addPointsDygraph","emptyArray","transformResults","shouldRevertFlip","dataResult","reverse","pointData","sum","Container","styled","getSizeBy","SideContent","ContentContainer","HeaderText","getColor","ContentText","TextSmall","UINotification","props","leftContent","rightContent","renderContent","createUINotification","NodeIconContainer","NotificationLink","toastOptions","toast","POSITION","BOTTOM_RIGHT","autoClose","pauseOnFocusLoss","showCloudInstallationProblemNotification","notificationComponent","showCloudConnectionProblemNotification","uiNotification","defaultUrlOptions","alarm_unique_id","alarm_id","alarm_event_id","alarm_when","parseQueryPair","isInvalidPair","isPrintMode","mapIndexed","mergeRight","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","selectSnapshot","dimensionsWithUrlOptions","matchingKey","snapshotKey","agentOptionsOriginal","hasFlip","agentOptions","shouldAddFakeFlip","groupValues","axiosOptions","agent_options","post_aggregation_methods","aggregations","valueOf","fillMissingPoints","transformedResults","postAggregated","post_aggregated_data","next","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","selectFullInfoPayload","__SV","_i","g","api_host","u","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","setOptionSaga","showSignInSaga","mainJsSagas","LOCAL_STORAGE_NEEDS_SYNC","setGlobalChartUnderlaySaga","hashParams","getHashParams","setHashParams","clearHighlightSaga","removeHashParams","signInLinkHref","rootSaga","sagaMiddleware","createSagaMiddleware","store","createStore","rootReducer","compose","applyMiddleware","run","configureStore","loadCss","resolve","reject","fileRef","onerror","Error","isDygraphSparkline","chartLibrariesSettings","dygraph","hasToolboxPanAndZoom","xssRegexIgnore","isLogScale","hasLegend","trackColors","containerClass","peity","google","easypiechart","aspectRatio","gauge","textonly","groupbox","getChartURLOptions","shouldEliminateZeroDimensions","BIGGEST_INTERVAL_NUMBER","Loader","containerNode","hasEmptyData","screenHeight","lost","paddingTop","clientWidth","getPanAndZoomStep","ctrlKey","pan_and_zoom_factor","pan_and_zoom_factor_multiplier_control","shiftKey","pan_and_zoom_factor_multiplier_shift","altKey","pan_and_zoom_factor_multiplier_alt","safeEqualCheck","formattersFixed","formattersZeroBased","fastNumberFormat","NumberFormat","useGrouping","minimumFractionDigits","maximumFractionDigits","getLegendFormatValue","convertUnits","intlNumberFormat","valueDecimalDetail","dmin","dmax","convertedValue","useFormatters","selectTemperatureSetting","selectSecondsAsTimeSetting","setConvertUnits","setMin","setMax","unitsCurrent","setUnitsCurrent","decimals","setDecimals","setIntlNumberFormat","legendFormatValue","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","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","onToolboxRightClick","onToolboxZoomInClick","onToolboxZoomOutClick","getDataForFakeStacked","dimensionsVisibility","point","currentMin","currentMax","isVisible","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","getArea","distance","toDomXCoord","first_entry","hasProceeded","defaultPositionTo","topMargin","ProceededChartDisclaimer","forwardRef","backgroundColorMap","WARNING","CRITICAL","CLEAR","borderColorMap","getBorderColor","textColorMap","Badge","border","getInitialDygraphOptions","hiddenLabelsElementId","orderedColors","setMinMax","shouldSmoothPlot","isSparkline","highlightCircleSize","axis","grid","rightGap","showRangeSelector","showRoller","titleHeight","labelsDiv","labelsSeparateLines","labelsShowZeroValues","labelsKMB","labelsKMG2","showLabelsOnHighlight","hideOverlayOnMouseOut","includeZero","xRangePad","yRangePad","ylabel","yLabelWidth","plotter","smoothPlotter","strokeWidth","strokePattern","drawPoints","drawGapEdgePoints","connectSeparatedPoints","pointSize","stepPlot","strokeBorderColor","strokeBorderWidth","fillGraph","fillAlpha","stackedGraph","stackedGraphNaNFill","drawAxis","axisLabelFontSize","axisLineColor","axisLineWidth","drawGrid","gridLinePattern","gridLineWidth","gridLineColor","maxNumberWidth","sigFigs","digitsAfterDecimal","highlightSeriesOpts","highlightSeriesBackgroundAlpha","visibility","logscale","axes","pixelsPerLabel","ticker","Dygraph","dateTicker","axisLabelWidth","axisLabelFormatter","toTimeString","axes_","extremeRange","DygraphChart","chartElementClassName","chartElementId","onUpdateChartPanAndZoom","immediatelyDispatchPanAndZoom","setGlobalChartUnderlay","setHoveredX","viewAfter","selectGlobalChartUnderlay","selectedAlarm","selectAlarm","updateChartPanOrZoom","shouldNotExceedAvailableRange","dygraphInstance","latestIsUserAction","isMouseDown","dygraphHighlightAfter","dygraphLastTouchMove","dygraphLastTouchPageX","dygraphLastTouchEnd","isSyncPanAndZoom","selectSyncPanAndZoom","resetGlobalPanAndZoom","updateOptions","dateWindow","isRendered","toggleIsRendered","positionTo","useDygraphBadge","isAlarmBadgeVisible","alarmBadgeRef","updateAlarmBadge","isProceeded","precededChartRef","updatePrecededPosition","useLayoutEffect","selectSmoothPlot","dygraphOptionsStatic","dygraphOptions","highlightCallback","xval","newHoveredX","unhighlightCallback","drawCallback","xRange","xAxisRange","last_entry","isInRangeOfAvailableData","zoomCallback","minDate","maxDate","underlayCallback","canvas","area","currentAlarm","alarmPosition","fillColor","requestAnimationFrame","fillStyle","globalAlphaCache","globalAlpha","fillRect","bottomLeft","toDomCoords","topRight","interactionModel","mousedown","button","initializeMouseDown","tarp","tarps","isOutsideReasonableViewport","startPan","metaKey","toDataXCoord","offsetX","startZoom","mousemove","moveZoom","isPanning","is2DPan","movePan","isZooming","mouseup","sortedRange","clearZoomRect_","drawGraph_","endPan","endZoom","wheel","adjustAxis","zoomInPercentage","bias","increment","foo","normalDef","wheelDelta","deltaY","detail","percentages","offsetY","yar0","yAxisRange","toDomYCoord","offsetToPercentage","xPct","yPct","xBias","yBias","yAxes","yAxisRanges","newYAxes","zoomRange","updatedAfter","updatedBefore","dblclick","touchstart","defaultInteractionModel","touchDirections","pageX","touchmove","touchend","dygraphPlotter","plotter_","pct","double_click_speed","instance","useUpdateEffect","selectSpacePanelTransitionEndIsActive","forceDateWindow","hasChangedDuration","hasScrolledToTheFutureDuringPlayMode","optionsDateWindow","selectGlobalSelectionMaster","getSelection","clearSelection","setSelection","commonMinState","selectCommonMin","commonMaxState","selectCommonMax","extremes","yAxisExtremes","shouldUseCommonMin","shouldUseCommonMax","shouldUpdate","newExtremes","useUnmount","resizeObserver","useMount","hasOmitedFirstCallback","callbackDebounced","waitFor","args","clearTimeout","debounce","ResizeObserver","observe","disconnect","EasyPieChart","chartWidth","chartInstance","setChartInstance","valueIndex","safeMinMax","_min","_max","isMinOverride","isMaxOverride","getPercentFromValueMinMax","stroke","v","easypiechart_track","easypiechart_scale","newChartInstance","EasyPie","barColor","trackColor","scaleColor","scaleLength","lineCap","lineWidth","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","animatedZooms","onLeave","onChange","sparklines","getCurrentRegionFields","bind","unbind","textAlign","paddingLeft","fetchPromise","emptyContent","getDateRange","dt","dtString","time","t1","t2","D3pieChart","d3pieInstance","setD3pieInstance","d3pieOptions","safeContent","defaultTitle","dateRange","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","draw","chartType","areaOpacity","Map","initialGoogleOptions","hAxis","viewWindowMode","slantedText","textStyle","gridlines","vAxis","chartArea","focusTarget","annotation","1","pointsVisible","titlePosition","titleTextStyle","isHtml","ignoreBounds","curveType","isStacked","googleInstance","AreaChart","LineChart","TextOnly","precision","textContent","defaultAspectRatio","getCellBoxSize","cellSize","getRows","getColumns","rows","getXPosition","getYPosition","getFullWidth","ceil","getFullHeight","getOffsetPosition","onMouseenter","onMouseout","cellPadding","hoveredIndex","getEvent","rect","cellBoxSize","mouseout","nextHoveredIndex","getWidth","getCanvasAttributes","defaultColorRange","makeGetColor","colorRange","scaleLinear","domain","extent","range","innerHeight","aligns","GroupBox","renderTooltip","dataRef","canvasRef","boxesRef","hover","setHover","dropHoverRef","boxHoverRef","timeoutId","close","deactivateBox","closeDrop","currentHover","cellStroke","getContext","activeBox","activateBox","clearEvents","clear","clearRect","beginPath","drawBox","registerEvents","strokeStyle","strokeRect","drawBoxes","onMouseEnter","onMouseLeave","getAlign","Title","Label","Flex","attrs","TextMicro","GroupBoxWrapper","groupIndex","renderGroupPopover","renderBoxPopover","maxWidth","boxPopover","boxAlign","groupPopover","alignItems","plain","isOpen","popoverRef","GroupBoxes","flexWrap","vertical","flex","LinearColorScaleBar","Legend","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","neutral","themeType","Tabs","ExpandButton","makeFlex","Section","onExpand","noBorder","side","justifyContent","getPortalNodeStyles","shouldAddSpecialHeight","heightFromLocalStorage","heightID","persitedHeight","getHeightFromLocalStorage","heightOverriden","chartDefaultsMinWidth","min_width","minWidth","globalIntersectionOptions","root","rootMargin","threshold","globalIntersectionObserver","listeners","globalObserver","IntersectionObserver","entries","isIntersecting","unsubscribe","elementToUnsubscribe","createGlobalIntersectionObserver","InvisibleSearchableText","opacity","shouldCleanChartStateAlways","DisableOutOfView","portalNode","hasPortalNodeBeenStyled","setHasPortalNodeBeenStyled","isShowingAlarmOnChart","forEachObjIndexed","styleName","setProperty","destroyOnHide","selectDestroyOnHide","clonedChildrenRef","isVisibleIntersection","setIsVisible","isVisibleRef","newIsVisible","useCommonIntersection","debounceTime","selectIsAsyncOnScroll","shouldHideDebounced","setShouldHideDebounced","useDebounce","shouldHide","previousIsVisibleIntersection","newClonedChildren","child","cloned","cloneNode","clonedCanvases","querySelectorAll","oldCanvas","newCanvas","drawImage","cloneWithCanvas","clonedChildrenContainer","nodeElement","ChartContainer","dropdownMenu","renderCustomElementForDygraph","onAttributesChange","externalChartMetadata","sectionTitle","MigrationModalPromos","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","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","selectUnitsScalingMethod","shouldDisplayToolbox","legend_toolbox","shouldDisplayResizeHandler","resize_charts","allDimensionNames","dimensionNamesFromMetadata","additionalDimensionNamesFromData","localHoveredX","setLocalHoveredX","isSyncSelection","selectSyncSelection","handleSetHoveredX","noMaster","globalHoveredX","selectGlobalSelection","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","selectAssignedColors","createSelectAssignedColors","__","isTimeVisible","DropdownItem","DropdownItemLabel","DotsBtn","ChartDropdown","setIsOpen","handleClose","circleAnimation","keyframes","SpinnerContainer","Circle","Circle2","Circle3","ChartSpinner","spaceBetween","ChartDropdownContainer","dimensionsAggrMethodMap","ChartWithLoader","selectChartMetadataRequest","actualChartMetadata","panAndZoom","isPanAndZoomMaster","areCriteriaMet","preferedIntervalTime","selectHasWindowFocus","stopUpdatesWhenFocusIsLost","selectStopUpdatesWhenFocusIsLost","selectGlobalPause","shouldBeUpdating","shouldFetch","setShouldFetch","shouldFetchImmediatelyAfterFocus","setShouldFetchImmediatelyAfterFocus","intervalTime","useInterval","useFetchNewDataClock","panAndZoomThrottled","useThrottle","initialBefore","liveModeAfter","boundingClientRect","isShowingSnapshot","selectShouldEliminateZeroDimensions","shouldUsePanAndZoomPadding","selectPanAndZoomDataPadding","CancelToken","cancel","shouldShowSpinnerDebounced","setShouldShowSpinnerDebounced","shouldShowSpinner","newViewRange","forceDataPoints","force_data_points","pointsMultiplier","requestedPadding","pixelsPerPointAttribute","pixelsPerPointSetting","pixels_per_point","px","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","global","Node","truncate","tooltipBackground","CustomTooltip","isBasic","getContent","contentNode","Tooltip","getTooltipContent","Options","data-toggle","data-target","Dropdown","PillContainer","Link","ProtoBuf","toggle","lacksProtoBufSupport","selectLacksProtoBufSupport","isLargeEnough","useMedia","onEsc","onClickOutside","VersionControl","currentVersion","isStableReleaseChannel","releaseChannel","githubVersion","gcsVersionResponse","mediaLinkResponse","latestVersion","transformGcsVersionResponse","isNewVersionAvailable","small","versionSelector","Version","initialValue","setToggle","toggleOn","toggleOff","getValueFromStorage","useLocalStorage","setValue","RootContainer","DropdownContainer","Menu","ListContainer","OpenerIcon","noMargin","PickerBox","StyledTimePeriod","StyledCustomTimePeriod","StyledDropdown","renderTitle","onMenuToggle","anchorCorner","renderOpener","maxHeight","DropdownIcon","CustomInput","input","StyledDrop","Drop","StyledHR","hr","period","resolution","setTimeRange","tagging","dateResolutions","resolutionsMapping","MINUTE","HOUR","months","getCustomTimePeriod","parseInputPeriod","timeCorrection","customRange","getUnixTime","focusTaggingMap","startDate","endDate","timePeriods","getDateWithOffset","formattedDate","isMatch","splitOffset","mathSign","absoluteNumber","firstPart","padStart","padEnd","formatOffset","TimePeriods","handleTimePeriodChange","selectedDate","CustomTimePeriod","getInputValue","inputValue","setInputValue","isDropdownOpen","toggleDropdown","onBlur","currentValue","currentTarget","isValidInput","isInteger","timePeriod","isValid","onChangeResolution","newResolution","dateResolution","DatePicker","selected","selectsStart","selectsEnd","startOpen","inline","selectsRange","monthsShown","showPopperArrow","calendarContainer","StyledDateInput","StyledCalendar","getRgbColor","DatePickerInput","onDatesChange","onFocus","placeholderText","setFormattedValue","parsedDate","getTime","useLocaleDate","convertTimestampToDate","getLocaleDate","toDate","useConvertedDates","DatePickerWrapper","setStartDate","setEndDate","onInputFocus","convertedStartDate","convertedEndDate","setValidStartDate","setPreviousValue","isBefore","setValidEndDate","dates","startDateWithOffset","endDateWithOffset","startDateTimestamp","endDateTimestamp","grow","PeriodIndication","convertedStart","convertedEnd","formattedStartDate","formattedEndDate","formatDates","formatDistanceStrict","getTimePeriod","whiteSpace","resolutionMap","SECONDS","getDuration","moment","diff","getGranularDuration","showSeconds","getResolution","DateBox","isPlaying","isSameDate","DurationBox","PickerAccessorElement","isPickerOpen","setRangeValues","timeframe","setTimeframe","getStartDate","getEndDate","useDashboardSelector","isSame","getIsSameDate","DatePickerDrop","initialStartDate","initialEndDate","setResolution","focusedInput","setFocusedInput","setDates","clearChanges","togglePicker","focusTagging","getFocusTagging","isValidTimePeriod","isApplyDisabled","consistentDefaultValue","isClearDisabled","pickerDrop","canHideTarget","eventCategory","eventAction","eventLabel","eventValue","dataLayer","eventData","reportEvent","ReduxDatePickerContainer","dashboardDispatch","useDashboardDispatch","isGlobalPanAndZoom","pickedValues","getHoverColor","StyledPill","Pill","PlayPausePill","isForcePlaying","getIcon","PanelRowContainer","MenuItem","Wrapper","testid","actions","basis","DefaultListHeader","H4","SectionHandle","toggleOpen","ItemsList","PlayOptionsTooltip","bacgkround","MenuButton","MemoizedPlayOptions","GlobalControls","hollowColors","hollow","pillProps","Alarms","selectActiveAlarms","News","app","upToDate","SearchInput","TextInput","Search","inputRef","metaShrinked","OffsetItem","onSelect","timezones","abbr","getDefaultTimezone","memoized","timeZoneName","normalizedOffset","parsedOffset","normalizeOffset","digitizedOffset","digitizeOffset","timezoneList","byId","Timezone","selectedTimezone","selectedOffset","timezoneHash","zones","IframeContainer","Iframe","signedIn","rendered","setRendered","signInMsg","lsValue","removeLsValue","selectCloudBaseUrl","nameParam","originParam","signInIframeUrl","onLoad","useCheckSignInStatus","hasSignedInBefore","setHasSignedInBefore","onMessage","isNew","SignIn","isRegistry","onSignIn","CloudTab","showBorderLeft","onActivate","fixed","closable","TITLE","TabsContentText","TabsContent","Home","image","nodeView","Overview","Nodes","Dashboards","Alerts","Anomalies","video","Pricing","Privacy","DiscoverCloudDrop","parentRef","closeDropdown","handleGoToCloud","backdrop","marginLeft","frameBorder","allow","allowFullScreen","InnerPostioner","DiscoverCloud","setIsModalOpen","seletedModalContent","setSelectedModalContent","dropDownParentRef","handleOpenModal","slectedContentId","zIndex","SignOut","SignInItem","isSignedInSelector","dashboard","UserSettings","menuItems","separator","DarkTheme","SpacesSkeleton","Fragment","SpacesIframe","Spaces","getNodeUrl","baseUrl","getNodes","hostsStatus","base","decodeURI","getBaseUrl","replicatedNodes","Anchor","StyledIcon","ReplicatedNodes","listOpen","setListOpen","toggleListOpen","iconLeft","SpacePanelIframe","spacePanelMessage","promptContent","signIn","signUp","SignInPrompt","NoNetwork","viewBox","xmlns","fillRule","clipRule","OfflinePrompt","replicatedNodesSelector","visitedNodesSelector","visitedNodes","globalRegistry","selectIsUsingGlobalRegistry","switchIdentity","persist","pointerEvents","setLsValue","selectSpacePanelIsActive","Layout","printMode","mapTheme","slate","white","DefaultTheme","MigrationModal","migrationModalPromoInfo","setUserPrefrence","savePromoRemindMeSelection","migrationModalPromo","requestRefreshOfAccess","isRememberChoiceChecked","setIsRememberChoiceChecked","toPath","userPreference","handleClickedCTA2","CTA2","tickBoxOption","makeUTMParameters","modalPromo","utmParametersToString","migrationmodalInfo","PROMO_SIGN_UP_CLOUD","preferenceID","PROMO_SIGN_IN_CLOUD","PROMO_IVNITED_TO_SPACE","PROMO_CLAIM_NODE","PROMO_TO_USE_NEW_DASHBAORD","FALLBACK_TO_AGENT","NO_INFO_FALLBACK_TO_AGENT","modalStatusWithPromoFunctions","userSavedPreference","nodeClaimedStatus","useMigrationModal","modalStatus","MigrationManager","cloudUrl","selectSignInUrl","term","linkToCoud","redirectURI","hasPromoSelectionSaved","isPromoEligibleForShow","showModalTimer","goToCloud","FakeMargin","Box","App","useStore","refreshHelper","setRefreshHelper","haveDOMReadyForParsing","loadOverlay","shouldUseRegistry","useRegistry","shouldUseAlarms","selectHasStartedAlarms","useAlarms","shouldUseInfo","useInfo","hasFetchDependencies","setHasFetchDependencies","bootstrap_css","dashboard_css","useChartsMetadata","selectHasFetchedInfo","selectTheme","alarmWhen","alarmTime","alarmChart","alarmValue","useAlarmFromUrl","ReactDOM","render","module","exports","require","code","f","fun","nextTick","apply","browser","env","argv","versions","addListener","once","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","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","yval","canvasx","canvasy","7","8","9","dygraph_","layout","elementContext","height_","width_","isCanvasSupported","getPlotArea","canvas_ctx_","clip","hidden_ctx_","_updatePoints","_renderLineChart","_getIteratorPredicate","_predicateThatSkipsEmptyPoints","_drawStyledLine","getBooleanOption","setName","isArrayLike","createIterator","drawingContext","setLineDash","_drawSeries","_drawPointsOnLine","restore","array_","end_","predicate_","start_","moveTo","lineTo","nextIdx_","hasNext","peek","setNames","colorsMap_","axisPropertiesForSeries","plotArea","seriesIndex","seriesCount","singleSeriesName","allSeriesPoints","_Plotters","linePlotter","_linePlotter","fillPlotter","_fillPlotter","errorPlotter","_errorPlotter","getNumericOption","Circles","DEFAULT","toRGB_","closePath","_fastCanvasProxy","splice","_count","getLabels","getColors","A","minyval","yscale","O","D","E","L","S","P","C","M","FORCE_FAST_PROXY","N","F","isOK","k","y_stacked","10","highlightSeriesBackgroundColor","axisTickSize","xValueParser","delimiter","sigma","errorBars","fractions","wilsonInterval","customBars","drawAxesAtZero","xLabelHeight","defaultModel","rangeSelectorHeight","rangeSelectorPlotStrokeColor","rangeSelectorPlotFillGradientColor","rangeSelectorPlotFillColor","rangeSelectorBackgroundStrokeColor","rangeSelectorBackgroundLineWidth","rangeSelectorPlotLineWidth","rangeSelectorForegroundStrokeColor","rangeSelectorForegroundLineWidth","rangeSelectorAlpha","showInRangeSelector","plugins","dateAxisLabelFormatter","valueFormatter","dateValueFormatter","independentTicks","numberValueFormatter","numberAxisLabelFormatter","numericTicks","11","date_graph","layout_","12","dragEndX","dragGetX_","dragEndY","dragGetY_","dragStartX","dragStartY","lastx_","treatMouseOpAsClick","regionWidth","regionHeight","getOptionForAxis","initialLeftmostDate","log10","xUnitsPerPixel","xAxisExtremes","boundedDates","toDataYCoord","boundedValues","attributes_","getForAxis","initialTopValue","dragValueRange","unitsPerPixel","dateWindow_","LOG_SCALE","maybeTreatMouseOpAsClick","zoomMoved","dragDirection","VERTICAL","HORIZONTAL","drawZoomRect_","prevDragDirection","prevEndX","prevEndY","getFunctionOption","MAX_VALUE","selPoints_","cancelable","cascadeEvents_","pts","doZoomX_","cancelNextDblclick","doZoomY_","startTouch","startTimeForDoubleTapMs","pageY","dataX","dataY","initialTouches","initialPinchCenter","initialRange","moveTouch","endTouch","changedTouches","doubleTapX","screenX","doubleTapY","screenY","resetZoom","findPos","canvas_","offsetWidth","offsetHeight","addAndTrackEvent","removeEvent","willDestroyContextMyself","nonInteractiveModel_","dragIsPanInteractionModel","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","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","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","returnValue","hsvToRGB","pageXOffset","scrollLeft","pageYOffset","py","isValidPoint","floatFormat","hmsString_","dateString_","round_","dateParser","dateStrToMillis","updateDeep","nodeName","isDateLike","createCanvas","getContextPixelRatio","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","Iterator","repeatAndCleanup","et","isPixelChangingOptionList","at","detectLineDelimiter","isNodeContainedBy","getComputedStyle","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","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","requestAnimFrame","annotationClickHandler","annotationDblClickHandler","annotationMouseOutHandler","annotationMouseOverHandler","clickCallback","drawHighlightPointCallback","drawPointCallback","panEdgeFraction","pixelsPerYLabel","pointClickCallback","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_","annotations_","boundaryIds_","setIndexByName_","datasetIndex_","registeredEvents_","eventListeners_","createInterface_","plugins_","PLUGINS","plugin","activate","events","pluginOptions","createDragInterface_","defaultPrevented","propagationStopped","getPluginInstance_","isZoomed","attr_","getStringOption","optionsViewForAxis_","numRows","rawData_","gatherDatasets_","rolledSeries_","computeYAxisRanges_","toDataCoords","numColumns","getValue","hidden_","createPlotKitCanvas_","resizeElements_","mouseEventElement_","createMouseEventElement_","mouseMoveHandler_","mouseMove_","mouseOutHandler_","fromElement","relatedTarget","toElement","mouseOut_","resizeHandler_","removeTrackedEvents_","hasChildNodes","firstChild","setColors_","colors_","getPropertiesForSeries","createRollInterface_","roller_","onchange","adjustRoll","cover","draggingDate","draggingValue","uncover","currentZoomRectArgs_","doZoomXDates_","doAnimatedZoom","zoomAnimationFunction","eventToDomCoords","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_","readyFired_","detectTypeFromString_","setXAxisOptions_","parseArray_","parseDataTable_","getNumberOfColumns","getNumberOfRows","getColumnType","getColumnLabel","shortText","fromCharCode","getColumnRange","XMLHttpRequest","ActiveXObject","onreadystatechange","readyState","responseText","send","resize_lock","setVisibility","indexFromSetName","getRowForX","ready","elem","GVizChart","nonInteractiveModel","Plugins","Axes","Annotations","ChartLabels","Grid","RangeSelector","DataHandlers","DefaultHandler","BarsHandler","CustomBarsHandler","DefaultFractionHandler","ErrorBarsHandler","FractionsBarsHandler","19","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","xHTML","yHTML","isHighlighted","defaultFormatter","25","hasTouchInterface_","TouchEvent","isMobileDevice_","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","leftHandlePos","rightHandlePos","clientX","srcElement","getZoomHandleStatus_","targetTouches","opera","drawMiniPlot_","computeCombinedSeriesAndLimits_","yMax","yMin","createLinearGradient","addColorStop","MIN_VALUE","withContext","collected","viewed","enabledDimensions","isCurrentlySelected","isRegistrySelector","offlineSelector","signInUrl","fragmentParamsSeparatorRegEx","param","makeHashFromObject","allParams","allParamsResult","mergeDeepLeft","excludedParams","filteredParams","getFilteredHash","htmlIframeElement","iframeElement","contentWindow","postMessage","messageType","defaultState","lastMessage","setLastMessage","handleMessage","resetMesssage","process","useSelectorOriginal","useDispatchOriginal","getIsDemo","BaseAnchor","Component","selectGlobal","globalState","selectOptions","optionName","selectChartsMetadata","allMetadata","assign","meta","INITIAL_OPTIONS","netdataNoBootstrap","optionsFromLocalStorage","localStorageKeyToOption","parsed","getItemFromLocalStorage","overridenOptions"],"mappings":"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MAAO,yBACPksG,KAAM,MACN3yE,KAAM,SACN7U,IAAK,CACH,aACA,mBACA,mBACA,oBACA,mBAGJ,CACE1kB,MAAO,wBACPksG,KAAM,OACN3yE,KAAM,SACN7U,IAAK,CACH,oBACA,iBACA,eACA,gBACA,oBAGJ,CACE1kB,MAAO,iCACPksG,KAAM,MACN3yE,KAAM,kBACN7U,IAAK,CAAC,yBAER,CACE1kB,MAAO,wBACPksG,KAAM,MACN3yE,KAAM,6BACN7U,IAAK,CACH,iBACA,sBACA,kBACA,oBACA,qBACA,YAGJ,CACE1kB,MAAO,4BACPksG,KAAM,OACN3yE,KAAM,UACN7U,IAAK,CACH,kBACA,uBACA,qBACA,kBACA,cAGJ,CACE1kB,MAAO,kCACPksG,KAAM,MACN3yE,KAAM,8BACN7U,IAAK,CAAC,oBAAqB,qBAE7B,CACE1kB,MAAO,yBACPksG,KAAM,MACN3yE,KAAM,8BACN7U,IAAK,CACH,gBACA,wBACA,iBACA,mBACA,iBACA,kBACA,sBACA,YAGJ,CACE1kB,MAAO,gCACPksG,KAAM,OACN3yE,KAAM,kBACN7U,IAAK,CACH,iBACA,qBACA,sBACA,oBACA,kBACA,sBACA,YACA,sBAGJ,CACE1kB,MAAO,wBACPksG,KAAM,MACN3yE,KAAM,6BACN7U,IAAK,CACH,kBACA,uBACA,4BACA,oBACA,oBACA,8BACA,8BACA,iCACA,sBACA,uBACA,mBACA,mBACA,YAGJ,CACE1kB,MAAO,iCACPksG,KAAM,MACN3yE,KAAM,sCACN7U,IAAK,CACH,yBACA,iBACA,iBACA,sBACA,sBAGJ,CACE1kB,MAAO,+BACPksG,KAAM,OACN3yE,KAAM,eACN7U,IAAK,CAAC,iBAAkB,0BAE1B,CACE1kB,MAAO,2BACPksG,KAAM,OACN3yE,KAAM,sBACN7U,IAAK,CACH,iBACA,iBACA,wBACA,mBACA,oBACA,kBACA,eACA,iBACA,qBACA,cAGJ,CACE1kB,MAAO,wBACPksG,KAAM,MACN3yE,KAAM,6BACN7U,IAAK,CACH,kBACA,iBACA,6BACA,4BACA,0BACA,kBACA,8BACA,qBACA,mBACA,iBACA,mBACA,kBACA,sBACA,yBACA,sBACA,kBACA,YAGJ,CACE1kB,MAAO,2BACPksG,KAAM,OACN3yE,KAAM,iBACN7U,IAAK,CAAC,0BAA2B,wBAAyB,yBAE5D,CACE1kB,MAAO,0BACPksG,KAAM,MACN3yE,KAAM,UACN7U,IAAK,CAAC,oBAER,CACE1kB,MAAO,yBACPksG,KAAM,MACN3yE,KAAM,WACN7U,IAAK,CAAC,qBAER,CACE1kB,MAAO,yBACPksG,KAAM,MACN3yE,KAAM,yBACN7U,IAAK,CACH,oBACA,oBACA,kBACA,kBACA,gBACA,qBAGJ,CACE1kB,MAAO,kCACPksG,KAAM,OACN3yE,KAAM,SACN7U,IAAK,CAAC,uBAAwB,mBAEhC,CACE1kB,MAAO,2BACPksG,KAAM,OACN3yE,KAAM,uCACN7U,IAAK,CACH,mBACA,kBACA,gBACA,mBACA,uBACA,oBACA,kBACA,mBACA,qBACA,kBACA,qBACA,iBACA,qBACA,iBACA,wBACA,iBACA,kBACA,qBACA,qBACA,wBACA,sBACA,sBACA,wBACA,wBACA,mBACA,mBACA,oBACA,qBACA,kBACA,cAGJ,CACE1kB,MAAO,2BACPksG,KAAM,OACN3yE,KAAM,WACN7U,IAAK,CAAC,mBAAoB,sBAE5B,CACE1kB,MAAO,6BACPksG,KAAM,MACN3yE,KAAM,eACN7U,IAAK,CAAC,qBAER,CACE1kB,MAAO,iCACPksG,KAAM,QACN3yE,KAAM,WACN7U,IAAK,CAAC,sBAER,CACE1kB,MAAO,0BACPksG,KAAM,MACN3yE,KAAM,eACN7U,IAAK,CACH,6BACA,iCACA,0BACA,6BACA,6BACA,4BACA,4BACA,uBACA,oBACA,kBACA,gBACA,oBAGJ,CACE1kB,MAAO,2BACPksG,KAAM,OACN3yE,KAAM,qBACN7U,IAAK,CACH,oBACA,gBACA,kBACA,oBACA,iBACA,qBACA,iBACA,mBACA,qBACA,mBACA,cAGJ,CACE1kB,MAAO,0BACPksG,KAAM,MACN3yE,KAAM,YACN7U,IAAK,CAAC,oBAER,CACE1kB,MAAO,2BACPksG,KAAM,MACN3yE,KAAM,aACN7U,IAAK,CAAC,uBAER,CACE1kB,MAAO,sBACPksG,KAAM,MACN3yE,KAAM,WACN7U,IAAK,CAAC,kBAER,CACE1kB,MAAO,SACPksG,KAAM,IACN3yE,KAAM,gCACN7U,IAAK,CAAC,kBAAmB,yBAA0B,cAErD,CACE1kB,MAAO,6BACPksG,KAAM,MACN3yE,KAAM,qBACN7U,IAAK,IAEP,CACE1kB,MAAO,uBACPksG,KAAM,MACN3yE,KAAM,SACN7U,IAAK,CAAC,uBAAwB,oBAEhC,CACE1kB,MAAO,2BACPksG,KAAM,OACN3yE,KAAM,iBACN7U,IAAK,CAAC,sBAAuB,cAE/B,CACE1kB,MAAO,wBACPksG,KAAM,MACN3yE,KAAM,aACN7U,IAAK,CAAC,oBAAqB,oBAE7B,CACE1kB,MAAO,MACPksG,KAAM,MACN3yE,KAAM,6BACN7U,IAAK,CAAC,uBAAwB,YAEhC,CACE1kB,MAAO,oBACPksG,KAAM,MACN3yE,KAAM,oBACN7U,IAAK,CAAC,qBAAsB,kBAAmB,gBAAiB,kBAElE,CACE1kB,MAAO,oBACPksG,KAAM,MACN3yE,KAAM,iBACN7U,IAAK,CACH,kBACA,kBACA,mBACA,gBACA,kBAGJ,CACE1kB,MAAO,0BACPksG,KAAM,MACN3yE,KAAM,sBACN7U,IAAK,CACH,iBACA,eACA,gBACA,gBACA,gBACA,iBACA,eACA,kBACA,cACA,kBACA,oBACA,qBACA,kBACA,qBACA,uBAGJ,CACE1kB,MAAO,0BACPksG,KAAM,OACN3yE,KAAM,mDACN7U,IAAK,CACH,sBACA,mBACA,iBACA,gBACA,kBACA,mBACA,oBACA,eACA,gBACA,cACA,cACA,oBACA,mBACA,eACA,iBACA,gBACA,kBAGJ,CACE1kB,MAAO,+BACPksG,KAAM,OACN3yE,KAAM,oDACN7U,IAAK,CACH,kBACA,oBACA,kBACA,mBACA,mBACA,gBACA,kBAGJ,CACE1kB,MAAO,wBACPksG,KAAM,MACN3yE,KAAM,sCACN7U,IAAK,CAAC,eAAgB,kBAAmB,oBAAqB,gBAAiB,iBAEjF,CACE1kB,MAAO,iCACPksG,KAAM,OACN3yE,KAAM,mCACN7U,IAAK,CAAC,kBAAmB,gBAAiB,gBAAiB,kBAE7D,CACE1kB,MAAO,kCACPksG,KAAM,QACN3yE,KAAM,sBACN7U,IAAK,CACH,iBACA,gBACA,qBACA,gBACA,kBACA,eACA,oBACA,gBACA,gBACA,kBACA,gBACA,oBACA,eACA,cAGJ,CACE1kB,MAAO,wBACPksG,KAAM,MACN3yE,KAAM,WACN7U,IAAK,CAAC,oBAER,CACE1kB,MAAO,oBACPksG,KAAM,MACN3yE,KAAM,oBACN7U,IAAK,CAAC,eAAgB,gBAAiB,mBAAoB,oBAE7D,CACE1kB,MAAO,4BACPksG,KAAM,OACN3yE,KAAM,SACN7U,IAAK,CAAC,gBAER,CACE1kB,MAAO,sBACPksG,KAAM,MACN3yE,KAAM,QACN7U,IAAK,CAAC,iBAER,CACE1kB,MAAO,sBACPksG,KAAM,MACN3yE,KAAM,WACN7U,IAAK,CAAC,kBAER,CACE1kB,MAAO,0BACPksG,KAAM,OACN3yE,KAAM,YACN7U,IAAK,CACH,eACA,gBACA,mBACA,kBACA,kBACA,cACA,mBACA,iBACA,cACA,eACA,iBACA,kBACA,iBACA,sBAGJ,CACE1kB,MAAO,6BACPksG,KAAM,OACN3yE,KAAM,mBACN7U,IAAK,CACH,kBACA,mBACA,kBACA,gBACA,sBACA,gBACA,oBACA,gBACA,gBACA,gBACA,iBACA,cAGJ,CACE1kB,MAAO,oBACPksG,KAAM,MACN3yE,KAAM,gDACN7U,IAAK,CACH,kBACA,cACA,mBACA,cACA,eACA,iBACA,kBACA,iBACA,sBAGJ,CACE1kB,MAAO,uBACPksG,KAAM,MACN3yE,KAAM,WACN7U,IAAK,CAAC,oBAER,CACE1kB,MAAO,uBACPksG,KAAM,MACN3yE,KAAM,YACN7U,IAAK,CAAC,mBAER,CACE1kB,MAAO,sBACPksG,KAAM,MACN3yE,KAAM,UACN7U,IAAK,CAAC,mBAER,CACE1kB,MAAO,uBACPksG,KAAM,MACN3yE,KAAM,QACN7U,IAAK,CAAC,eAER,CACE1kB,MAAO,uBACPksG,KAAM,MACN3yE,KAAM,UACN7U,IAAK,CAAC,iBAER,CACE1kB,MAAO,4BACPksG,KAAM,MACN3yE,KAAM,cACN7U,IAAK,CAAC,uBAER,CACE1kB,MAAO,qBACPksG,KAAM,MACN3yE,KAAM,iBACN7U,IAAK,CAAC,YAAa,eAAgB,cAAe,aAAc,gBAElE,CACE1kB,MAAO,0BACPksG,KAAM,OACN3yE,KAAM,UACN7U,IAAK,CACH,qBACA,gBACA,uBACA,kBACA,cACA,iBACA,kBACA,mBACA,iBACA,mBACA,YACA,sBACA,gBACA,mBAGJ,CACE1kB,MAAO,uBACPksG,KAAM,MACN3yE,KAAM,2CACN7U,IAAK,CAAC,eAAgB,gBAAiB,oBAAqB,mBAAoB,iBAElF,CACE1kB,MAAO,cACPksG,KAAM,OACN3yE,KAAM,6BACN7U,IAAK,CAAC,mBAAoB,gBAAiB,qBAE7C,CACE1kB,MAAO,qBACPksG,KAAM,MACN3yE,KAAM,SACN7U,IAAK,CAAC,gBAER,CACE1kB,MAAO,wBACPksG,KAAM,MACN3yE,KAAM,oBACN7U,IAAK,CAAC,aAAc,cAAe,cAErC,CACE1kB,MAAO,2BACPksG,KAAM,MACN3yE,KAAM,OACN7U,IAAK,CAAC,cAER,CACE1kB,MAAO,0BACPksG,KAAM,MACN3yE,KAAM,aACN7U,IAAK,CAAC,cAAe,mBAAoB,mBAE3C,CACE1kB,MAAO,yBACPksG,KAAM,MACN3yE,KAAM,UACN7U,IAAK,CAAC,iBAER,CACE1kB,MAAO,yBACPksG,KAAM,MACN3yE,KAAM,UACN7U,IAAK,CAAC,iBAER,CACE1kB,MAAO,4BACPksG,KAAM,MACN3yE,KAAM,QACN7U,IAAK,CAAC,eAER,CACE1kB,MAAO,0BACPksG,KAAM,OACN3yE,KAAM,qBACN7U,IAAK,CACH,oBACA,aACA,cACA,gBACA,gBACA,YACA,iBACA,gBACA,YACA,mBACA,oBAGJ,CACE1kB,MAAO,qBACPksG,KAAM,OACN3yE,KAAM,gBACN7U,IAAK,CAAC,uBAER,CACE1kB,MAAO,yBACPksG,KAAM,MACN3yE,KAAM,qBACN7U,IAAK,CAAC,iBAER,CACE1kB,MAAO,sBACPksG,KAAM,MACN3yE,KAAM,sCACN7U,IAAK,CAAC,iBAER,CACE1kB,MAAO,0BACPksG,KAAM,OACN3yE,KAAM,sBACN7U,IAAK,CAAC,iBAER,CACE1kB,MAAO,sBACPksG,KAAM,MACN3yE,KAAM,YACN7U,IAAK,CAAC,mBAER,CACE1kB,MAAO,6BACPksG,KAAM,OACN3yE,KAAM,sBACN7U,IAAK,CACH,oBACA,cACA,eACA,iBACA,cACA,YACA,kBAGJ,CACE1kB,MAAO,2BACPksG,KAAM,MACN3yE,KAAM,QACN7U,IAAK,CAAC,aAAc,iBAEtB,CACE1kB,MAAO,wBACPksG,KAAM,MACN3yE,KAAM,mBACN7U,IAAK,CAAC,eAAgB,iBAExB,CACE1kB,MAAO,wBACPksG,KAAM,OACN3yE,KAAM,0BACN7U,IAAK,CACH,mBACA,eACA,YACA,eACA,kBACA,iBACA,cACA,iBACA,YACA,qBAGJ,CACE1kB,MAAO,gCACPksG,KAAM,QACN3yE,KAAM,cACN7U,IAAK,CAAC,oBAAqB,mBAAoB,cAEjD,CACE1kB,MAAO,sBACPksG,KAAM,MACN3yE,KAAM,wCACN7U,IAAK,CAAC,iBAAkB,aAAc,kBAExC,CACE1kB,MAAO,2BACPksG,KAAM,OACN3yE,KAAM,cACN7U,IAAK,CAAC,qBAER,CACE1kB,MAAO,0BACPksG,KAAM,OACN3yE,KAAM,0BACN7U,IAAK,CACH,cACA,oBACA,eACA,gBACA,cACA,iBACA,cAGJ,CACE1kB,MAAO,6BACPksG,KAAM,OACN3yE,KAAM,QACN7U,IAAK,CAAC,mBAAoB,oBAE5B,CACE1kB,MAAO,uBACPksG,KAAM,MACN3yE,KAAM,SACN7U,IAAK,CAAC,gBAER,CACE1kB,MAAO,4BACPksG,KAAM,MACN3yE,KAAM,cACN7U,IAAK,CAAC,kBAAmB,qBAE3B,CACE1kB,MAAO,gCACPksG,KAAM,QACN3yE,KAAM,UACN7U,IAAK,CAAC,iBAER,CACE1kB,MAAO,sBACPksG,KAAM,MACN3yE,KAAM,wBACN7U,IAAK,CAAC,YAAa,gBAAiB,a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","file":"static/js/main.cc0e57d1.chunk.js","sourcesContent":["export const zeropad = (x: string | number) => {\n if (x > -10 && x < 10) {\n return `0${x}`\n }\n return `${x}`\n}\n\ninterface ScalableUnits {\n [unitGroupName: string]: {\n [unitName: string]: number\n }\n}\n\nexport const leaveAtLeast1Decimal = (number: number) => {\n const decimalPortion = `${number}`.split(\".\")[1]\n if (decimalPortion && decimalPortion.length > 1) {\n return `${number}`\n }\n\n let tms = number * 10\n const integer = Math.floor(tms / 10)\n\n tms -= integer * 10\n return `${integer}.${tms}`\n}\n\ntype TimeUnit = \"MINUTES\" | \"HOURS\" | \"DAYS\"\nconst seconds2time = (seconds: number, maxTimeUnit: TimeUnit) => {\n let secondsReturn = Math.abs(seconds)\n\n const days = maxTimeUnit === \"DAYS\" ? Math.floor(secondsReturn / 86400) : 0\n secondsReturn -= days * 86400\n\n const hours =\n maxTimeUnit === \"DAYS\" || maxTimeUnit === \"HOURS\" ? Math.floor(secondsReturn / 3600) : 0\n secondsReturn -= hours * 3600\n\n const minutes = Math.floor(secondsReturn / 60)\n secondsReturn -= minutes * 60\n\n const daysString = maxTimeUnit === \"DAYS\" ? `${days}d:` : \"\"\n const hoursString = maxTimeUnit === \"DAYS\" || maxTimeUnit === \"HOURS\" ? `${zeropad(hours)}:` : \"\"\n const minutesString = `${zeropad(minutes)}:`\n let secondsString = zeropad(secondsReturn.toFixed(2))\n\n return `${daysString}${hoursString}${minutesString}${secondsString}`\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}\n\nconst twoFixed =\n (multiplier: number = 1) =>\n (value: number) =>\n (value * multiplier).toFixed(2)\n\nconst convertibleUnits: ConvertibleUnits = {\n Celsius: {\n Fahrenheit: {\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() {\n return currentTemperatureSetting === \"fahrenheit\"\n },\n convert(value: number) {\n return (value * 9) / 5 + 32\n },\n },\n },\n milliseconds: {\n microseconds: {\n check: (max: number) => max < 1,\n convert: twoFixed(1000),\n },\n milliseconds: {\n check: (max: number) => max >= 1 && max < 1000,\n convert: twoFixed(),\n },\n seconds: {\n check: (max: number) => max >= 1000 && max < 60000,\n convert: twoFixed(0.001),\n },\n \"MM:SS.ms\": {\n check: (max: number) => currentSecondsAsTimeSetting && max >= 60000 && max < 3600_000,\n convert: (value: number) => seconds2time(value / 1000, \"MINUTES\"),\n },\n \"HH:MM:SS.ms\": {\n check: (max: number) => currentSecondsAsTimeSetting && max >= 3600_000 && max < 86_400_000,\n convert: (value: number) => seconds2time(value / 1000, \"HOURS\"),\n },\n \"dHH:MM:SS.ms\": {\n check: (max: number) => currentSecondsAsTimeSetting && max >= 86_400_000,\n convert: (value: number) => seconds2time(value / 1000, \"DAYS\"),\n },\n },\n\n seconds: {\n microseconds: {\n check: (max: number) => max < 0.001,\n convert: twoFixed(1000_000),\n },\n milliseconds: {\n check: (max: number) => max >= 0.001 && max < 1,\n convert: twoFixed(1000),\n },\n seconds: {\n check: (max: number) => max >= 1 && max < 60,\n convert: twoFixed(1),\n },\n \"MM:SS.ms\": {\n check: (max: number) => currentSecondsAsTimeSetting && max >= 60 && max < 3600,\n convert: (value: number) => seconds2time(value, \"MINUTES\"),\n },\n \"HH:MM:SS.ms\": {\n check: (max: number) => currentSecondsAsTimeSetting && max >= 3600 && max < 86_400,\n convert: (value: number) => seconds2time(value, \"HOURS\"),\n },\n \"dHH:MM:SS.ms\": {\n check: (max: number) => currentSecondsAsTimeSetting && max >= 86_400,\n convert: (value: number) => seconds2time(value, \"DAYS\"),\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 // get a function that converts the units\n // + every time units are switched call the callback\n get(\n uuid: string,\n min: number,\n max: number,\n units: string | undefined,\n desiredUnits: undefined | null | string,\n commonUnitsName: string | null | undefined,\n switchUnitsCallback: (units: string) => void,\n 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\nexport const Button = React.forwardRef(({\n children,\n className,\n ...rest\n}: Props, ref: React.Ref) => (\n \n {children}\n \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 \n \n \n )\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 = \"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 {\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 double click it or double tap it to reset\n between 2 states: the default and the one that fits all the values.
Help\n can be disabled from the settings.\"\n />\n )\n}\n","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, UserNodeAccessMessage } 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(\n `${storeKey}/globalRequestCommonColors`\n)\n\ninterface SetCommonMinAction {\n chartUuid: string\n commonMinKey: string\n value: number\n}\nexport const setCommonMinAction = createAction(`${storeKey}/setCommonMin`)\n\ninterface SetCommonMaxAction {\n chartUuid: string\n commonMaxKey: string\n value: number\n}\nexport const setCommonMaxAction = createAction(`${storeKey}/setCommonMax`)\n\ninterface SetGlobalSelectionAction {\n chartUuid: string | null\n hoveredX: number\n}\nexport const setGlobalSelectionAction = createAction(\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(\n `${storeKey}/setGlobalPanAndZoom`\n)\n\nexport const resetGlobalPanAndZoomAction = createAction(`${storeKey}/resetGlobalPanAndZoomAction`)\n\nexport interface SetDefaultAfterAction {\n after: number\n}\nexport const setDefaultAfterAction = createAction(\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(\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(\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\ninterface UpdatePersonUrlsAction {\n personGuid: string\n registryMachines: { [key: string]: RegistryMachine }\n registryMachinesArray: RegistryMachine[]\n}\nexport const updatePersonUrlsAction = createAction(\n `${storeKey}/updatePersonUrlsAction`\n)\n\nexport interface AccessRegistrySuccessAction {\n registryServer: string\n}\nexport const accessRegistrySuccessAction = createAction(\n `${storeKey}/accessRegistrySuccessAction`\n)\n\nexport interface StartAlarmsPayload {\n serverDefault: string\n}\nexport const startAlarmsAction = createAction(`${storeKey}/startAlarmsAction`)\n\nexport const fetchAllAlarmsAction = createRequestAction(`${storeKey}/fetchAllAlarmsAction`)\n\nexport interface UpdateActiveAlarmAction {\n activeAlarms: ActiveAlarms\n}\nexport const updateActiveAlarmsAction = createAction(\n `${storeKey}/updateActiveAlarmsAction`\n)\n\nexport interface SetOptionAction {\n key: string\n value: unknown\n}\nexport const setOptionAction = createAction(`${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(\n `${storeKey}/setSpacePanelStatusAction`\n)\n\nexport interface SetSpacePanelTransitionEndPayload {\n isActive: boolean\n}\nexport const setSpacePanelTransitionEndAction = createAction(\n `${storeKey}/setSpacePanelStatusAction`\n)\n\nexport const setAlarmAction = createAction<{ alarm: Alarm }>(`${storeKey}/setAlarmAction`)\n\nexport const resetRegistry = createAction(`${storeKey}/resetRegistry`)\n\nexport const setGlobalPauseAction = createAction(`${storeKey}/setGlobalPauseAction`)\nexport const resetGlobalPauseAction = createAction<{ forcePlay?: boolean }>(\n `${storeKey}/resetGlobalPauseAction`\n)\nexport const setUTCOffset = createAction<{ utcOffset?: number | string }>(\n `${storeKey}/setUTCOffset`\n)\n\nexport const setUserNodeAccess = createAction<{ message: UserNodeAccessMessage }>(\n `${storeKey}/setUserNodeAccess`\n)\n","import { useCallback } from \"react\"\nimport { useDispatch } from \"react-redux\"\nimport { sendToChildIframe, useListenToPostMessage } from \"utils/post-message\"\nimport { setUserNodeAccess } from \"domains/global/actions\"\nimport { UserNodeAccessMessage } from \"domains/global/types\"\nimport { SIGN_IN_IFRAME_ID } from \"components/header/constants\"\n\nconst useUserNodeAccessMessage = () => {\n const dispatch = useDispatch()\n useListenToPostMessage(\"user-node-access\", message => {\n dispatch(setUserNodeAccess({ message }))\n })\n}\n\nexport const useRequestRefreshOfAccessMessage = () => {\n return useCallback(() => {\n sendToChildIframe(SIGN_IN_IFRAME_ID, { type: \"request-refresh-access\", payload: true })\n }, [])\n}\n\nexport default useUserNodeAccessMessage\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 { 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 setGlobalPauseAction,\n resetGlobalPauseAction,\n setUTCOffset,\n setUserNodeAccess,\n} from \"./actions\"\nimport {\n Options,\n optionsMergedWithLocalStorage,\n getOptionsMergedWithLocalStorage,\n clearLocalStorage,\n} from \"./options\"\nimport { CLOUD_BASE_URL_DISABLED } from \"./constants\"\nimport { UserNodeAccessMessage } from \"./types\"\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 globalPause: 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 userNodeAccess: UserNodeAccessMessage\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 globalPause: false,\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 userNodeAccess: null,\n}\n\nexport const globalReducer = createReducer({}, 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, { chartContext, chartUuid, colorsAttribute, commonColorsAttribute, dimensionNames }) => {\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 =\n 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\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(setGlobalPanAndZoomAction, (state, payload) => ({\n ...state,\n globalPanAndZoom: payload,\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\nglobalReducer.on(\n clearHighlightAction,\n (state, { resetPanAndZoom = true }: { resetPanAndZoom?: boolean } = {}) => ({\n ...state,\n globalChartUnderlay: initialState.globalChartUnderlay,\n ...(resetPanAndZoom ? { globalPanAndZoom: initialState.globalPanAndZoom } : {}),\n })\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(setGlobalPauseAction, state => ({ ...state, globalPause: true }))\nglobalReducer.on(resetGlobalPauseAction, (state, { forcePlay }) => ({\n ...state,\n globalPause: initialState.globalPause,\n globalPanAndZoom: initialState.globalPanAndZoom,\n hoveredX: initialState.hoveredX,\n options: { ...state.options, stop_updates_when_focus_is_lost: !forcePlay },\n}))\n\nglobalReducer.on(setUTCOffset, (state, { utcOffset }) => ({\n ...state,\n options: { ...state.options, utcOffset },\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, { cloudBaseURL, hostname, machineGuid }) => ({\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(\n fetchInfoAction.success,\n (\n 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)\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(\n updatePersonUrlsAction,\n (state, { personGuid, registryMachines, registryMachinesArray }) => ({\n ...state,\n registry: {\n ...state.registry,\n personGuid,\n registryMachines,\n registryMachinesArray,\n },\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\nglobalReducer.on(setUserNodeAccess, (state, { message }) => ({ ...state, userNodeAccess: message }))\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 \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(\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 = {\n legendPosition: initialLegendRight ? \"right\" : \"bottom\",\n}\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(\n `${storeKey}/updateChartData`,\n)\n\nexport interface UpdateChartMetadataAction {\n chartMetadata: ChartMetadata\n id: string\n}\nexport const updateChartMetadataAction = createAction(\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(\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(\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(\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","export const SIGN_IN_IFRAME_ID = \"sign_in_iframe\"\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 selectDefaultAfter,\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 { getHashParam } from 'utils/hash-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, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/#/g, '#')\n .replace(/'/g, ''')\n .replace(/\\(/g, '(')\n .replace(/\\)/g, ')')\n .replace(/\\//g, '/');\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: getHashParam('after') ?? 0,\n before: getHashParam('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 utc: 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 if (urlOptions.utc !== null) {\n hash += ';utc=' + urlOptions.utc;\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 updateUtcParam: function (utc) {\n if (!utc) return\n urlOptions.utc = utc\n urlOptions.hashUpdate();\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 ''\n + 'highlighted time-frame'\n + ' ' + d1 + ' ' + localeTimeString(after) + ' to '\n + ' ' + d2 + ' ' + localeTimeString(before) + ', '\n + 'duration ' + seconds4human(Math.round((before - after) / 1000)) + ''\n + ''\n + '';\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 += '' + escapeUserInputHTML(url) + 'checking...';\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 = 'Opening new window to ' + registryMachines[guid].name + '
' + escapeUserInputHTML(url) + '

(check your pop-up blocker if it fails)';\n } else {\n document.getElementById('gotoServerResponse').innerHTML += 'found it! It is at:
' + escapeUserInputHTML(url) + '';\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 = 'Sorry! I cannot find any operational URL for this server';\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 = 'Added all the known URLs for this machine.';\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 = \"Sorry! The registry rejected your request.\";\n });\n } else {\n document.getElementById('switchRegistryResponse').innerHTML = \"The ID you have entered is not a GUID.\";\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 = \"Sorry, this command was rejected by the registry server!\";\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 + '
(X' + 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 '
';\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 + ' ' + 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, '').toString();\n }\n\n return this.anyAttribute(this.menu, 'icon', chart.menu, '');\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 '
' + x + '
';\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 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 'anomaly':\n if (parts.length >= 2 && parts[1].startsWith('detection')) {\n chart.menu = tmp + '_detection';\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 += '
';\n }\n\n if (typeof charts['system.io'] !== 'undefined') {\n head += '
';\n\n head += '
';\n }\n else if (typeof charts['system.pgpgio'] !== 'undefined') {\n head += '
';\n\n head += '
';\n }\n\n if (typeof charts['system.cpu'] !== 'undefined') {\n head += '
';\n }\n\n if (typeof charts['system.net'] !== 'undefined') {\n head += '
';\n\n head += '
';\n }\n else if (typeof charts['system.ip'] !== 'undefined') {\n head += '
';\n\n head += '
';\n }\n else if (typeof charts['system.ipv4'] !== 'undefined') {\n head += '
';\n\n head += '
';\n }\n else if (typeof charts['system.ipv6'] !== 'undefined') {\n head += '
';\n\n head += '
';\n }\n\n if (typeof charts['system.ram'] !== 'undefined') {\n head += '
';\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; // probably obsolete/not needed\n options.update_every = data.update_every;\n\n var html = '';\n var sidebar = '
    ';\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 += '
  • ' + menus[menu].icon + ' ' + menus[menu].title + '
      ';\n html += '

      ' + menus[menu].icon + ' ' + menus[menu].title + '

      ';\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 = '
      ' + 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 += '
    • ' + menus[menu].submenus[submenu].title + '
    • ';\n shtml += '

      ' + menus[menu].submenus[submenu].title + '

      ';\n\n if (menus[menu].submenus[submenu].info !== null) {\n shtml += '
      ' + menus[menu].submenus[submenu].info + '
      ';\n }\n\n var head = '
      ';\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 += '
      ';\n }\n\n const chartHeight = netdataDashboard.contextHeight(chart.context, options.chartsHeight)\n + chartAdditionalHeight;\n\n chtml += '
      ' + netdataDashboard.contextInfo(chart.context) + '
      ';\n\n if (urlOptions.mode === 'print') {\n chtml += '
      ';\n }\n }\n\n head += '
      ';\n shtml += head + chtml + '
      ';\n }\n\n mhead += '
      ';\n sidebar += '
  • ';\n html += mhead + shtml + '
    ';\n }\n\n const isMemoryModeDbEngine = data.memory_mode === \"dbengine\";\n\n sidebar += '
  • Add more charts
  • ';\n sidebar += '
  • Add more alarms
  • ';\n sidebar += '
  • Every ' +\n ((data.update_every === 1) ? 'second' : data.update_every.toString() + ' seconds') + ', ' +\n 'Netdata collects ' + data.dimensions_count.toLocaleString() + ' metrics on ' +\n data.hostname.toString() + ', presents them in ' +\n data.charts_count.toLocaleString() + ' charts' +\n (isMemoryModeDbEngine ? '' : ',') + // oxford comma\n ' and monitors them with ' +\n data.alarms_count.toLocaleString() + ' alarms.';\n\n if (!isMemoryModeDbEngine) {\n sidebar += '
     
    Get more history by ' +\n 'configuring Netdata\\'s history or switching to the database engine.';\n }\n\n sidebar += '
     
    netdata
    ' + data.version.toString() + '
    ';\n\n sidebar += '
  • '\n\n sidebar += '
  • '\n\n\n sidebar += '
';\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('');\n};\n\n// ----------------------------------------------------------------------------\n\nfunction alarmsUpdateModal() {\n var active = '

Raised Alarms

';\n var all = '

All Running Alarms

';\n var footer = '
netdata badges refresh automatically. Their color indicates the state of the alarm:  red  is critical,  orange  is warning,  bright green  is ok,  light grey  is undefined (i.e. no data or no status),  black  is not initialized. You can copy and paste their URLs to embed them in any web page.
netdata can send notifications for these alarms. Check this configuration file 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 = ' ';\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 ' + alarm.lookup_dimensions + ' ';\n } else {\n dimensions = 'of all values of dimension ' + alarm.lookup_dimensions + ' ';\n }\n }\n\n return '' + alarm.lookup_method + ' '\n + dimensions + ', of chart ' + alarm.chart + ''\n + ', starting ' + seconds4human(alarm.lookup_after + alarm.lookup_before, { space: ' ' }) + ' and up to ' + seconds4human(alarm.lookup_before, { space: ' ' }) + ''\n + ((alarm.lookup_options) ? (', with options ' + alarm.lookup_options.replace(/ /g, ', ') + '') : '')\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 = '
 
role: ' + alarm.recipient + '
 
'\n + '
'\n + '
'\n + '
embed html element for this badge\" data-toggle=\"tooltip\" data-placement=\"bottom\" onClick=\"clipboardCopyBadgeEmbed(\\'' + badge_url + '\\'); return false;\">
';\n\n var html = '
'\n + '';\n\n return html;\n }\n\n function alarm_family_show(id) {\n var html = '
' + alarm.chart + '
 

 
' + alarm.info + '' + action_buttons + '
'\n + ((typeof alarm.warn !== 'undefined') ? ('') : '')\n + ((typeof alarm.crit !== 'undefined') ? ('') : '');\n\n if (full === true) {\n var units = chart.units;\n if (units === '%') {\n units = '%';\n }\n\n html += ((typeof alarm.lookup_after !== 'undefined') ? ('') : '')\n + ((typeof alarm.calc !== 'undefined') ? ('') : '')\n + ((chart.green !== null) ? ('') : '')\n + ((chart.red !== null) ? ('') : '');\n }\n\n if (alarm.warn_repeat_every > 0) {\n html += '';\n }\n\n if (alarm.crit_repeat_every > 0) {\n html += '';\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 += '
hysteresis ' + seconds4human(alarm.delay_up_duration, {\n space: ' ',\n negative_suffix: ''\n });\n } else {\n delay = '
hysteresis ';\n if (alarm.delay_up_duration > 0) {\n delay += 'on escalation ' + seconds4human(alarm.delay_up_duration, {\n space: ' ',\n negative_suffix: ''\n }) + ', ';\n }\n if (alarm.delay_down_duration > 0) {\n delay += 'on recovery ' + seconds4human(alarm.delay_down_duration, {\n space: ' ',\n negative_suffix: ''\n }) + ', ';\n }\n }\n if (alarm.delay_multiplier !== 1.0) {\n delay += 'multiplied by ' + alarm.delay_multiplier.toString() + '';\n delay += ', up to ' + seconds4human(alarm.delay_max_duration, {\n space: ' ',\n negative_suffix: ''\n }) + '';\n }\n delay += '
';\n }\n\n html += '
'\n + ((has_alarm === true) ? ('') : '')\n + ''\n + '
warning when' + alarm.warn + '
critical when' + alarm.crit + '
db lookup' + alarm_lookup_explain(alarm, chart) + '
calculation' + alarm.calc + '
green threshold' + chart.green + ' ' + units + '
red threshold' + chart.red + ' ' + units + '
repeat warning' + seconds4human(alarm.warn_repeat_every) + '
repeat critical' + seconds4human(alarm.crit_repeat_every) + '
check every' + seconds4human(alarm.update_every, {\n space: ' ',\n negative_suffix: ''\n }) + '
execute' + alarm.exec + '' + delay + '
source' + alarm.source + '
';\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 += '
';\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 += \"\";\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 += '
';\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 += '

' + family + '

';\n }\n count_active++;\n active += alarm_to_html(alarm, true);\n }\n\n count_all++;\n }\n }\n active += \"\";\n if (families_sorted.length > 0) {\n all += \"
\";\n }\n all += \"\";\n\n if (!count_active) {\n active += '

Everything is normal. No raised alarms.
';\n } else {\n active += footer;\n }\n\n if (!count_all) {\n all += \"

No alarms are running in this system.

\";\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 = '

Alarm Log

';\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 initialization 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('

checking for updates...

');\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('

Failed to get your netdata version!

You can always get the latest netdata from its github page.

');\n } else if (sha2 === null) {\n save = false;\n versionLog('

Failed to get the latest netdata version.

You can always get the latest netdata from its github page.

');\n } else if (versionsMatch(sha1, sha2)) {\n save = true;\n versionLog('

You already have the latest netdata!

No update yet?
We probably need some motivation to keep going on!

If you haven\\'t already, give netdata a at its github page.

');\n } else {\n save = true;\n var compare = 'https://learn.netdata.cloud/docs/agent/changelog/';\n versionLog('

New version of netdata available!

Latest version: ' + sha2 + '

Click here for the changes log and
click here for directions on updating your netdata installation.

We suggest to review the changes log for new features you may be interested, or important bug fixes you may need.
Keeping your netdata updated is generally a good idea.

');\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 = '' + filename + '';\n document.getElementById('loadSnapshotHostname').innerHTML = '' + result.hostname + ', netdata version: ' + result.netdata_version.toString() + '';\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: ' + result.snapshot_version.toString() + ', includes ' + result.charts_ok.toString() + ' unique chart data queries ' + ((result.charts_failed > 0) ? ('' + result.charts_failed.toString() + ' failed') : '').toString() + ', compressed with ' + result.compression.toString() + ', data size ' + (Math.round(result.data_size * 100 / 1024 / 1024) / 100).toString() + ' MB';\n document.getElementById('loadSnapshotTimeRange').innerHTML = '' + localeDateString(date_after) + ' ' + localeTimeString(date_after) + ' to ' + localeDateString(date_before) + ' ' + localeTimeString(date_before) + '';\n document.getElementById('loadSnapshotComments').innerHTML = ((result.comments) ? result.comments : '').toString();\n loadSnapshotModalLog('success', 'File loaded, click Import 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 Import 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.
' + 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 Save');\n $('#saveSnapshotExport').removeClass('disabled');\n\n loadBootstrapSlider(function () {\n const reduxState = reduxStore.getState()\n saveSnapshotViewDuration = - selectDefaultAfter(reduxState)\n var start_ms = Math.round(Date.now() - saveSnapshotViewDuration * 1000);\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 ' + filename.toString() + '');\n\n\n var el = document.getElementById('saveSnapshotModalProgressBar');\n var eltxt = document.getElementById('saveSnapshotModalProgressBarText');\n\n options.data.charts_by_name = null;\n const reduxState = reduxStore.getState()\n const defaultAfter = selectDefaultAfter(reduxState)\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() + defaultAfter * 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 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: ' + saveSnapshotSelectedSecondsPerPoint.toString() + ((saveSnapshotSelectedSecondsPerPoint === 1) ? ' second ' : ' seconds ').toString() + 'per point.';\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 ' + (Math.round(size * 100 / 1024 / 1024) / 100).toString() + ' MB. ' + ((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 ' + (Math.round(size * 100 / 1024 / 1024) / 100).toString() + ' MB. ' + ((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\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\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\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 $('#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\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 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: ' show more information',\n lessText: ' 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
\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 += ''; // 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 = $('
').html(bag + '' + config.ellipsesText + '').html();\n } else {\n c += config.ellipsesText;\n }\n\n var html = '
' + c +\n '
' + content +\n '
' + config.moreText + '';\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 omit 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 React, { useMemo } from \"react\"\nimport { CloudConnectionProps, ConnectionModalStatusContent } from \"./types\"\nimport Anchor from \"@/src/components/anchor\"\n\nimport { Text } from \"@netdata/netdata-ui\"\n\nexport const makeCloudConnectionStatusInfo = ({\n nodeStatus,\n userStatus,\n date,\n}: CloudConnectionProps): ConnectionModalStatusContent => ({\n title: \"Netdata Cloud connection status\",\n text: {\n header: () => {\n return (\n \n This node is currently{\" \"}\n {nodeStatus === \"LIVE\" ? \"Connected\" : \"Not Connected\"} to Netdata\n Cloud\n \n )\n },\n bullets:\n nodeStatus === \"NOT_LIVE\"\n ? [\n // `The node lost its Netdata Cloud connection at ${date}`,\n () => (\n \n To troubleshoot Netdata Cloud connection issues, please follow{\" \"}\n \n this guide\n \n .\n \n ),\n ]\n : [],\n footer: () => (\n \n You are{\" \"}\n \n {userStatus === \"LOGGED_IN\"\n ? \"Logged In\"\n : userStatus === \"EXPIRED_LOGIN\"\n ? \"Logged out\"\n : \"Not signed-up\"}\n {\" \"}\n to Netdata Cloud\n \n ),\n },\n CTA1: {\n text: \"Take me to Netdata Cloud\",\n },\n})\n\nconst useCloudConnectionStatus = ({ userStatus, nodeStatus, date }: CloudConnectionProps) => {\n const cloudConnectionStatusInfo = useMemo(() => {\n return makeCloudConnectionStatusInfo({ userStatus, nodeStatus, date })\n }, [userStatus, nodeStatus, date])\n\n return cloudConnectionStatusInfo\n}\n\nexport default useCloudConnectionStatus\n","import React, { useCallback } from \"react\"\nimport GoToCloud from \"components/auth/signIn\"\n\nimport {\n Modal,\n ModalContent,\n ModalBody,\n ModalFooter,\n ModalHeader,\n Text,\n Flex,\n H3,\n Button,\n Box,\n ModalCloseButton,\n} from \"@netdata/netdata-ui\"\n\nimport { ConnectionModalStatusContent } from \"./types\"\n\nconst campaign = \"agent_nudge_to_cloud\"\n\nexport type CloudConnectionStatusModalProps = ConnectionModalStatusContent & {\n closeModal: () => void\n onRefresh?: () => void\n isCTA1Disabled: boolean\n}\n\nconst CloudConnectionStatusModal = ({\n title,\n text,\n CTA1,\n closeModal,\n onRefresh,\n isCTA1Disabled,\n}: CloudConnectionStatusModalProps) => {\n const handleClickedCTA1 = useCallback(\n ({ link }: { link: string }) => {\n closeModal()\n window.location.href = link\n },\n [closeModal]\n )\n\n return (\n \n \n \n

{title}

\n \n
\n \n \n {text.header({})}\n {text.bullets.length > 0 && (\n \n \n {text.bullets.map((bullet, index) => {\n if (typeof bullet === \"function\") {\n return
  • {bullet()}
  • \n }\n return (\n
  • \n {bullet}\n
  • \n )\n })}\n
    \n
    \n )}\n {text.footer()}\n
    \n
    \n \n \n \n {({ link }) => (\n handleClickedCTA1({ link })}\n width=\"100%\"\n label={CTA1.text}\n />\n )}\n \n \n \n \n Check Now\n \n \n \n
    \n
    \n )\n}\n\nexport default CloudConnectionStatusModal\n","import React, { useState, useCallback, useEffect } from \"react\"\nimport useCloudConnectionStatus from \"./use-cloud-connection-status\"\nimport CloudConnectionStatusModal from \"./cloud-connection-status-modal\"\n\nimport { Pill, Flex } from \"@netdata/netdata-ui\"\nimport { useSelector } from \"react-redux\"\nimport { useRequestRefreshOfAccessMessage } from \"hooks/use-user-node-access\"\nimport { selectUserNodeAccess } from \"domains/global/selectors\"\nimport { PromoProps } from \"@/src/domains/dashboard/components/migration-modal\"\nimport { selectIsCloudEnabled } from \"domains/global/selectors\"\n\nconst CloudConnectionStatus = () => {\n const userNodeAccess = useSelector(selectUserNodeAccess) as PromoProps\n const cloudEnabled = useSelector(selectIsCloudEnabled)\n\n const [isModalOpen, setModalOpen] = useState(false)\n const cloudConnectionStatusInfo = useCloudConnectionStatus({\n userStatus: userNodeAccess?.userStatus || \"UNKNOWN\",\n nodeStatus: userNodeAccess?.nodeLiveness || \"NOT_LIVE\",\n date: \"\",\n })\n\n useEffect(() => {\n if (isModalOpen) {\n document.documentElement.style.overflow = \"hidden\"\n } else {\n document.documentElement.style.overflow = \"auto\"\n }\n }, [isModalOpen])\n\n const openModal = useCallback(() => {\n setModalOpen(true)\n }, [])\n\n const closeModal = useCallback(() => {\n setModalOpen(false)\n }, [])\n\n const onRefresh = useRequestRefreshOfAccessMessage()\n\n if (!cloudEnabled) return null\n\n return (\n \n \n Connection to Cloud\n \n {isModalOpen && (\n \n )}\n \n )\n}\n\nexport default CloudConnectionStatus\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 = (\n keys: (keyof T)[],\n obj1: T | null,\n obj2: T\n): T => {\n if (!obj1) {\n return obj2\n }\n return keys.reduce(\n (acc, key) => ({\n ...acc,\n [key]: equals(obj1[key], obj2![key]) ? obj1[key] : obj2[key],\n }),\n obj2\n )\n}\n\nexport type AnyFunction = (...args: T[]) => any\n\nexport type FunctionArguments = T extends (...args: infer R) => any ? R : never\n\nexport function callAll(...fns: (T | undefined)[]) {\n return function mergedFn(arg: FunctionArguments[0]) {\n fns.forEach(fn => {\n fn?.(arg)\n })\n }\n}\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 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 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 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 {\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","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 selectChartsAreFetching = createSelector(selectChartsState, chartsState =>\n Object.values(chartsState).some(({ isFetchingData }) => isFetchingData)\n)\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 { useMemo } from \"react\"\nimport moment from \"moment\"\nimport { useSelector } from \"store/redux-separate-context\"\nimport { selectTimezoneSetting, selectUTCOffsetSetting } from \"domains/global/selectors\"\n\nconst zeropad = x => {\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 => (typeof d === \"number\" ? new Date(d) : d)\n// these are the old netdata functions\n// we fallback to these, if the new ones fail\nexport const localeDateStringNative = d => narrowToDate(d).toLocaleDateString()\nexport const localeTimeStringNative = d => narrowToDate(d).toLocaleTimeString()\nexport const xAxisTimeStringNative = d => {\n const date = narrowToDate(d)\n return `${zeropad(date.getHours())}:${zeropad(date.getMinutes())}:${zeropad(date.getSeconds())}`\n}\n\nexport const isProperTimezone = timeZone => {\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 getDateWithOffset = (date, offset) => moment(date).utcOffset(offset)\n\nconst getOptions = ({ long, isTime, secs, timezone }) => ({\n hourCycle: \"h23\",\n ...(isTime\n ? {}\n : long\n ? { weekday: \"short\", year: \"numeric\", month: \"short\", day: \"2-digit\" }\n : { dateStyle: \"short\" }),\n ...(isTime && {\n timeStyle: secs ? \"medium\" : \"short\",\n }),\n timeZone: timezone,\n})\n\nconst dateFormat = (date, { locale, ...options }) =>\n new Intl.DateTimeFormat(locale ?? navigator.language, getOptions(options)).format(date)\n\nconst getTimezone = timezone => (timezone !== \"\" && timezone !== \"default\" ? timezone : undefined)\n\nexport const useDateTime = () => {\n const timezone = useSelector(selectTimezoneSetting)\n const utcOffset = useSelector(selectUTCOffsetSetting)\n\n const localeDateString = useMemo(() => {\n return isSupportingDateTimeFormat\n ? (date, options) =>\n dateFormat(date, { long: true, timezone: getTimezone(timezone), ...options })\n : localeDateStringNative\n }, [timezone])\n\n const localeTimeString = useMemo(() => {\n return isSupportingDateTimeFormat\n ? (date, options) =>\n dateFormat(date, {\n secs: true,\n isTime: true,\n timezone: getTimezone(timezone),\n ...options,\n })\n : localeTimeStringNative\n }, [timezone])\n\n const xAxisTimeString = useMemo(() => {\n return isSupportingDateTimeFormat\n ? date => dateFormat(date, { secs: true, isTime: true, timezone: getTimezone(timezone) })\n : xAxisTimeStringNative\n }, [timezone])\n\n const xAxisDateString = useMemo(() => {\n return isSupportingDateTimeFormat\n ? date => dateFormat(date, { long: true, timezone: getTimezone(timezone) })\n : xAxisTimeStringNative\n }, [timezone])\n\n return {\n localeDateString,\n localeTimeString,\n xAxisDateString,\n xAxisTimeString,\n utcOffset,\n }\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(\n `${storeKey}/isSnapshotModeAction`,\n)\n\nexport const stopSnapshotModeAction = createAction(`${storeKey}/stopSnapshotModeAction`)\n\nexport interface ShowSignInModalAction { signInLinkHref: string }\nexport const showSignInModalAction = createAction(\n `${storeKey}/showSignInModal`,\n)\n\nexport const explicitlySignInAction = createAction(`${storeKey}/explicitlySignIn`)\n\nexport interface IsSignedInAction { isSignedIn: boolean }\nexport const isSignedInAction = createAction(`${storeKey}/isSignedInAction`)\n\nexport interface SetOfflineAction { offline: boolean }\nexport const setOfflineAction = createAction(`${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","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({}, 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()\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(\"border\")};\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 \n {leftContent && {leftContent}}\n \n {header && (\n \n {header}\n \n )}\n {text && (\n \n {text}\n \n )}\n {renderContent && renderContent(props)}\n \n {rightContent && {rightContent}}\n \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) => \n","import styled from \"styled-components\"\nimport { 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`\n\nexport const NotificationLink = styled.a`\n &,\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 error: true,\n leftContent: (\n \n \n \n ),\n })\n toast.error(notificationComponent, toastOptions)\n}\n\nexport const showCloudConnectionProblemNotification = () => {\n const uiNotification = {\n header: \"Connection Problem\",\n text: (\n \n To access Cloud install again your agent via the kickstart script\n \n ),\n }\n const notificationComponent = createUINotification({\n ...uiNotification,\n error: true,\n leftContent: (\n \n \n \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) {\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) {\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 // temporarily, 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) {\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) {\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 doesn't 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) {\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 {\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\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) {\n const { serverDefault } = payload\n const helloCallUrl = `${serverDefault}api/v1/registry?action=hello`\n let response: AxiosResponse\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 setOptionSaga({ payload }: Action) {\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 omitting 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) {\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, setOptionSaga)\n yield takeEvery(setSpacePanelStatusAction, spacePanelSaga)\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) {\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 whether 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) {\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\n\ntype LoadCss = (href: string) => Promise\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 \n \n {label}\n
    \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 { useCallback, useState, useMemo, useRef } 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 }\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 (\n convertUnits: Converter,\n intlNumberFormat: Intl.NumberFormat | null,\n valueDecimalDetail: number\n ) =>\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(() => identity)\n\n // probably can also be removed\n const [min, setMin] = useState()\n const [max, setMax] = useState()\n\n // todo most of this state is not needed, that hook can be refactored\n const [unitsCurrent, setUnitsCurrent] = useState(units)\n\n const [decimals, setDecimals] = useState(-1)\n const [intlNumberFormat, setIntlNumberFormat] = useState(null)\n\n const {\n // \"valueDecimalDetail\" in old app\n decimalDigits = -1,\n } = attributes\n\n const legendFormatValue: LegendFormatValue = useMemo(\n () => getLegendFormatValue(convertUnits, intlNumberFormat, decimalDigits),\n [convertUnits, decimalDigits, intlNumberFormat]\n )\n\n const legendFormatValueRef = useRef(legendFormatValue)\n const updateLegendFormatValueRef = (\n newConvertUnits: Converter,\n newIntlNumberFormat: any,\n newDecimalDigits: any\n ) => {\n legendFormatValueRef.current = getLegendFormatValue(\n newConvertUnits,\n newIntlNumberFormat,\n newDecimalDigits\n )\n }\n\n const legendFormatValueDecimalsFromMinMax = useCallback(\n (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,\n newMin,\n newMax,\n units,\n unitsDesired,\n unitsCommon,\n switchedUnits => {\n setUnitsCurrent(switchedUnits)\n // that.legendSetUnitsString(that.units_current);\n // that.legendSetUnitsString just populates some DOM with unitsCurrent\n // on all occurrences just take the unitsCurrent from this state\n },\n temperatureSetting,\n secondsAsTimeSetting\n )\n\n // as function, so useState() interprets it properly\n setConvertUnits(() => newConvertUnits)\n\n const convertedMin = newConvertUnits(newMin)\n const convertedMax = newConvertUnits(newMax)\n\n // if number is returned, we format it!!!!\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 let newIntlNumberFormat = intlNumberFormat\n\n if (newDecimals !== decimals) {\n if (newDecimals < 0) {\n newIntlNumberFormat = null\n } else {\n newIntlNumberFormat = fastNumberFormat(newDecimals, newDecimals)\n }\n setIntlNumberFormat(() => newIntlNumberFormat)\n setDecimals(newDecimals)\n }\n updateLegendFormatValueRef(newConvertUnits, newIntlNumberFormat, newDecimals)\n return legendFormatValueRef.current\n },\n [\n decimals,\n decimalDigits,\n min,\n max,\n uuid,\n temperatureSetting,\n units,\n unitsDesired,\n unitsCommon,\n secondsAsTimeSetting,\n data.min,\n data.max,\n 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 \n {chart[index]}@{node[index]}\n \n )\n }\n\n const name = dimensionNames[index]\n\n return {name}\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
    \n \n {showUndefined\n ? legendPluginModuleString(false, chartMetadata)\n : localeDateString(legendDate)}\n \n
    \n \n {showUndefined\n ? chartMetadata.context.toString()\n : localeTimeString(legendDate)}\n \n
    \n {unitsCurrent}\n
    \n
    \n
    \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 \n {i !== 0 &&
    }\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\n {\n onDimensionClick(dimensionName, event)\n }}\n role=\"button\"\n style={{ color }}\n tabIndex={0}\n >\n \n \n \n \n \n \n \n {\" \"}\n \n \n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\n {\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 \n
    \n )\n })}\n
    \n
    \n
    \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
    \n \n {showUndefined\n ? legendPluginModuleString(false, chartMetadata)\n : localeDateString(legendDate)}\n \n |\n \n {showUndefined ? chartMetadata.context.toString() : localeTimeString(legendDate)}\n \n
    \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 \n \n {unitsCurrent}\n \n \n \n \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 {\n onDimensionClick(dimensionName, event)\n }}\n role=\"button\"\n tabIndex={0}\n isDisabled={!isSelected}\n key={dimensionId}\n >\n \n \n {isSelected && legendFormatValue(value)}\n \n )\n })}\n \n \n \n {legendToolbox}\n {resizeHandler}\n \n \n \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 \n )\n }\n\n return (\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 onToolboxRightClick: ClickCallback\n onToolboxZoomInClick: ClickCallback\n onToolboxZoomOutClick: ClickCallback\n}\nexport const LegendToolbox = ({\n onToolboxLeftClick,\n onToolboxRightClick,\n onToolboxZoomInClick,\n onToolboxZoomOutClick,\n}: Props) => (\n
    \n drag it with your mouse or your\n finger (on touch devices).
    Help can be disabled from the settings.\"\n />\n drag it with your mouse or\n your finger (on touch devices).
    Help can be disabled from the settings.\"\n />\n Help can be disabled from the settings.\"\n />\n Help can be disabled from the\n settings.\"\n />\n
    \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, (g: Dygraph) => void] => {\n const [proceeded, toggleProceeded] = useToggle(false)\n\n const ref = useRef(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 { useRef } from \"react\"\nimport { useToggle } from \"react-use\"\n\nconst badgeTopMargin = \"40px\"\n\nconst defaultPositionTo = (ref, x, position, topMargin) => {\n ref.current.style.left = `${x}px`\n ref.current.style.right = `calc(100% - ${position}px)`\n ref.current.style.top = topMargin\n}\n\nexport default () => {\n const [isRendered, toggleIsRendered] = useToggle(false)\n\n const ref = useRef(null)\n\n const updatePosition = (isVisible, g, position, positionTo = defaultPositionTo) => {\n if (!isVisible) {\n toggleIsRendered(false)\n return\n }\n\n if (ref.current) {\n toggleIsRendered(true)\n const { x } = g.getArea()\n\n positionTo(ref, x, position, badgeTopMargin)\n }\n }\n\n return [isRendered, ref, updatePosition]\n}\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,\n ref: React.Ref,\n) => (\n \n \n Want to extend your history of real-time metrics?\n
    \n \n Configure Netdata's \n history\n \n  or use the \n DB engine\n .\n
    \n
    \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 \n {isVisible && (\n \n {label}\n \n )}\n \n))\n","//@ts-nocheck\nimport { sortBy, reverse } from \"ramda\"\nimport React, { useLayoutEffect, useRef, useCallback } 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 selectTimezoneSetting,\n} from \"domains/global/selectors\"\nimport {\n resetGlobalPanAndZoomAction,\n setCommonMaxAction,\n setCommonMinAction,\n setGlobalPauseAction,\n resetGlobalPauseAction,\n} from \"domains/global/actions\"\n\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,\n getDataForFakeStacked,\n transformColors,\n 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 // insufficient 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 timezone = useSelector(selectTimezoneSetting)\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(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()\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)\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()\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 [isAlarmBadgeVisible, 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 }, [\n alarm,\n chartData,\n globalChartUnderlay,\n hoveredX,\n immediatelyDispatchPanAndZoom,\n resetGlobalPanAndZoom,\n setGlobalChartUnderlay,\n updateAlarmBadge,\n updateChartPanOrZoom,\n viewAfter,\n viewBefore,\n ])\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 dispatch(setGlobalPauseAction())\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: chartData.id,\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 dispatch(resetGlobalPauseAction({ forcePlay: false }))\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, dispatch])\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 const includeZero = dimensionsVisibility.length === 1 ||\n dimensionsVisibility.filter(x => x === true).length > 1\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 ...(dygraphChartType === \"stacked\" ? { includeZero } : {}),\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 if (!hasEmptyData) dygraphInstance.current.updateOptions(dygraphOptionsStatic)\n }, [dygraphChartType, timezone])\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()\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 \n {isProceeded && hasLegend && (\n } />\n )}\n {alarm?.value && hasLegend && (\n // @ts-ignore\n \n )}\n
    \n \n )\n}\n","// https://gist.github.com/ca0v/73a31f57b397606c9813472f7493a940\n\nexport const debounce = any>(func: F, waitFor: number) => {\n let timeout: ReturnType | null = null\n\n const debounced = (...args: Parameters) => {\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) => ReturnType\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(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\n useEffect(() => {\n setMinMax(safeMinMax as [number, number])\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [safeMinMax])\n\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
    \n \n {legendFormatValue(value)}\n \n \n {attributes.title || chartMetadata.title}\n \n \n {unitsCurrent}\n \n\n
    \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(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 useEffect(() => {\n setMinMax([safeMin, safeMax])\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [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 \n \n \n {legendFormatValue(showUndefined ? null : value)}\n \n \n {attributes.title || chartMetadata.title}\n \n \n {unitsCurrent}\n \n \n {legendFormatValue(showUndefined ? null : safeMin)}\n \n \n {legendFormatValue(showUndefined ? null : safeMax)}\n \n
    \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(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
    \n )\n}\n","import * as d3 from \"d3\"\n\nwindow.d3 = d3\n","let fetchPromise: Promise\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(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
    \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(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 \n {chartData.result}\n
    \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(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 \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
    \n {textContent}\n
    \n )\n}\n","/* eslint-disable no-param-reassign */\n// @ts-nocheck\n\nexport const defaultCellSize = 11\nexport const defaultPadding = 1\nexport const defaultAspectRatio = Math.round(16 / 9)\n\nexport const getCellBoxSize = (cellSize = defaultCellSize, padding = defaultPadding) =>\n cellSize - padding\nexport const getRows = (data, aspectRatio = defaultAspectRatio) =>\n Math.sqrt(data.length / aspectRatio)\nexport const getColumns = (rows, aspectRatio = defaultAspectRatio) => rows * aspectRatio\n\nexport const getXPosition = (columns, index, cellSize = defaultCellSize) =>\n Math.floor(index % columns) * cellSize\nexport const getYPosition = (columns, index, cellSize = defaultCellSize) =>\n Math.floor(index / columns) * cellSize\n\nexport const getFullWidth = (columns, cellSize = defaultCellSize) => Math.ceil(columns) * cellSize\nexport const getFullHeight = (rows, cellSize = defaultCellSize, padding = defaultCellSize) =>\n Math.ceil(rows) * cellSize + padding\n\nexport const getOffsetPosition = (offset, cellSize = defaultCellSize) =>\n Math.floor(offset / cellSize)\n","/* eslint-disable object-curly-newline */\n/* eslint-disable no-param-reassign */\n// @ts-nocheck\nimport { getCellBoxSize, getXPosition, getYPosition, getOffsetPosition } from \"./utilities\"\n\nexport default (\n el,\n columns,\n total,\n { onMouseenter, onMouseout },\n { cellSize, cellPadding } = {}\n) => {\n let hoveredIndex = -1\n\n const getEvent = index => {\n const rect = el.getBoundingClientRect()\n const offsetX = getXPosition(columns, index, cellSize)\n const offsetY = getYPosition(columns, index, cellSize)\n const left = rect.left + offsetX\n const top = rect.top + offsetY\n const cellBoxSize = getCellBoxSize(cellSize, cellPadding)\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 = getOffsetPosition(offsetX, cellSize)\n const y = getOffsetPosition(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 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 {\n getCellBoxSize,\n getRows,\n getColumns,\n getXPosition,\n getYPosition,\n getFullWidth,\n getFullHeight,\n} from \"./utilities\"\nimport registerEvents from \"./events\"\n\nexport const getWidth = (data, { aspectRatio, cellSize } = {}) => {\n const rows = getRows(data, aspectRatio)\n const columns = getColumns(rows, aspectRatio)\n return getFullWidth(columns, cellSize)\n}\n\nconst getCanvasAttributes = (data, { aspectRatio, cellSize, padding } = {}) => {\n const rows = getRows(data, aspectRatio)\n const columns = getColumns(rows, aspectRatio)\n const width = getFullWidth(columns, cellSize)\n const height = getFullHeight(rows, cellSize, padding)\n\n return { width, height, columns: Math.ceil(columns) }\n}\n\nconst defaultColorRange = [\"rgba(198, 227, 246, 0.9)\", \"rgba(14, 154, 255, 0.9)\"]\n\nconst makeGetColor = (values, colorRange = defaultColorRange) =>\n scaleLinear()\n .domain(extent(values, value => value))\n .range(colorRange)\n\nexport default (el, { onMouseenter, onMouseout }, options = {}) => {\n const { cellSize, cellPadding, cellStroke = 2, lineWidth = 1, colorRange } = options\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, options)\n el.width = parseInt(width)\n el.height = parseInt(height)\n clear()\n clearEvents()\n const getColor = makeGetColor(data, colorRange)\n\n const drawBox = (value, index) => {\n canvas.fillStyle = getColor(value)\n\n const offsetX = getXPosition(columns, index, cellSize)\n const offsetY = getYPosition(columns, index, cellSize)\n\n if (lineWidth && cellStroke) {\n canvas.clearRect(\n offsetX - lineWidth,\n offsetY - lineWidth,\n getCellBoxSize(cellSize, cellPadding) + cellStroke,\n getCellBoxSize(cellSize, cellPadding) + cellStroke\n )\n }\n\n canvas.fillRect(\n offsetX,\n offsetY,\n getCellBoxSize(cellSize, cellPadding),\n getCellBoxSize(cellSize, cellPadding)\n )\n }\n\n data.forEach(drawBox)\n\n clearEvents = registerEvents(\n el,\n columns,\n data.length,\n {\n onMouseenter,\n onMouseout,\n },\n options\n )\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, cellSize)\n const offsetY = getYPosition(columns, index, cellSize)\n\n if (lineWidth && cellStroke) {\n canvas.lineWidth = lineWidth\n canvas.strokeStyle = \"#fff\"\n canvas.strokeRect(\n offsetX + lineWidth,\n offsetY + lineWidth,\n getCellBoxSize(cellSize, cellPadding) - cellStroke,\n getCellBoxSize(cellSize, cellPadding) - cellStroke\n )\n }\n }\n }\n\n return {\n clear,\n update,\n activateBox: index => activateBox(index),\n deactivateBox: () => deactivateBox(),\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, ...options }: 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(\n canvasRef.current,\n {\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 options\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 \n \n {hover && renderTooltip && (\n \n {renderTooltip(hover.index, align)}\n \n )}\n \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 \n \n {({ isOpen, ref: popoverRef, ...rest }) => (\n {\n ref.current = el\n popoverRef(el)\n }}\n strong={isOpen}\n style={style}\n {...rest}\n >\n {label}\n {data.data.length > 3 && ({data.data.length})}\n \n )}\n \n \n \n )\n}\n\nconst GroupBoxes = ({ data, labels, renderBoxPopover, renderGroupPopover }: any) => (\n \n {labels.map((label, index) => {\n return data[index].data.length ? (\n \n ) : null\n })}\n \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 \n {children}\n \n 0%\n \n 100%\n \n {/* \n Alarms\n \n \n \n Warnings\n \n */}\n \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 = () => \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
    \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 }) => active && `border-bottom: 3px solid ${getColor(\"bright\")({ theme })};`}\n color: ${({ active, theme }) => getColor(active ? \"bright\" : \"separator\")({ theme })}\n }\n`\n\nconst Tabs = ({ value, onChange, ...rest }) => (\n \n onChange(\"context\")} />\n onChange(\"metrics\")} />\n \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 \n \n
    \n {title}\n
    \n {onExpand && }\n
    \n \n {children}\n \n \n)\n\nexport default Section\n","import { LOCALSTORAGE_HEIGHT_KEY_PREFIX } 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 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 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,\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 \n {attributes.id}\n \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(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()\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 \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 \n {\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 \n \n \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}
    \n (\n X${units})${suffix}`\n },\n\n gaugeChart(\n title: string, width: string, dimensions: string = \"\", colors: string = \"\",\n ) {\n return `${\"
    \"\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 \"\").toString()\n }\n\n return this.anyAttribute(this.menu, \"icon\", chart.menu, \"\")\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 `
    ${x}
    `\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 \n {aggregation && (\n \n {aggregation}\n \n )}\n {legendFormatValue(value)}\n {getUnitSign(unitsCurrent)}\n \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 \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 \n \n \n {title}\n \n \n \n )\n}\n\nexport default memo(ChartOverview)\n","import React, { useMemo } from \"react\"\nimport Anchor from \"@/src/components/anchor\"\nimport { Text } from \"@netdata/netdata-ui\"\nimport { useLocalStorage } from \"react-use\"\nimport { utmUrlSuffix } from \"utils/utils\"\nimport { utmParametersToString } from \"domains/global/selectors\"\n\nexport type UserStatus = \"LOGGED_IN\" | \"EXPIRED_LOGIN\" | \"UNKNOWN\"\nexport type NodeClaimedStatus = \"NOT_CLAIMED\" | \"CLAIMED\"\nexport type UserNodeAccess = \"NO_ACCESS\" | \"ACCESS_OK\"\ntype UserPreference = \"AGENT\" | \"CLOUD\" | \"UNDEFINED\"\nexport type NodeLiveness = \"LIVE\" | \"NOT_LIVE\"\ntype CTATYPE = \"NAVIGATE\" | \"REFRESH\"\n\nexport enum MigrationModalPromos {\n PROMO_SIGN_IN_CLOUD = \"PROMO_SIGN_IN_CLOUD\",\n PROMO_SIGN_UP_CLOUD = \"PROMO_SIGN_UP_CLOUD\",\n PROMO_IVNITED_TO_SPACE = \"PROMO_IVNITED_TO_SPACE\",\n PROMO_CLAIM_NODE = \"PROMO_CLAIM_NODE\",\n PROMO_TO_USE_NEW_DASHBAORD = \"PROMO_TO_USE_NEW_DASHBAORD\",\n FALLBACK_TO_AGENT = \"FALLBACK_TO_AGENT\",\n NO_INFO_FALLBACK_TO_AGENT = \"NO_INFO_FALLBACK_TO_AGENT\",\n}\n\ntype MigrationModalActions = {\n text: string\n action: CTATYPE\n toPath?: string\n userPreference?: UserPreference | \"DONT_SHOW\"\n}\n\ntype MigrationModalContent = {\n title: string\n text: {\n header: ((props: any) => React.ReactNode) | string\n bullets?: Array React.ReactNode)>\n footer?: ((props: any) => React.ReactNode) | string\n }\n tickBoxOption: { text: string; preferenceID: MigrationModalPromos }\n CTA1: MigrationModalActions\n CTA2?: MigrationModalActions\n}\n\ntype MigrationModalInfo = {\n [key in MigrationModalPromos]: MigrationModalContent\n}\n\nconst campaign = \"agent_nudge_to_cloud\"\n\nconst makeUTMParameters = (modalPromo: MigrationModalPromos) =>\n `${utmUrlSuffix}${utmParametersToString({\n content: modalPromo,\n campaign,\n })}`\n\nexport const migrationmodalInfo: MigrationModalInfo = {\n [MigrationModalPromos.PROMO_SIGN_UP_CLOUD]: {\n title: \"Learn about Netdata Cloud!\",\n text: {\n header: () => (\n \n Netdata Cloud is a FREE service that complements the Netdata Agent, to provide:\n \n ),\n bullets: [\n \"Infrastructure level dashboards (each chart aggregates data from multiple nodes)\",\n \"Central dispatch of alert notifications\",\n \"Custom dashboards editor\",\n \"Intelligence assisted troubleshooting, to help surface the root cause of issues\",\n ],\n footer: \"Have a look, you will be surprised!\",\n },\n tickBoxOption: {\n text: \"Remember my choice\",\n preferenceID: MigrationModalPromos.PROMO_SIGN_UP_CLOUD,\n },\n CTA1: {\n text: \"Wow! Let’s go to Netdata Cloud\",\n toPath: \"path/signup/cloud\",\n action: \"NAVIGATE\",\n userPreference: \"CLOUD\",\n },\n CTA2: {\n text: \"Later, stay at the agent dashboard\",\n action: \"NAVIGATE\",\n toPath: \"path/agent-dashboard\",\n userPreference: \"AGENT\",\n },\n },\n [MigrationModalPromos.PROMO_SIGN_IN_CLOUD]: {\n title: \"Sign-in to Netdata Cloud or get an invitation!\",\n text: {\n header: () => (\n <>\n \n This node is connected to Netdata Cloud but you are not. If you have a Netdata Cloud\n account sign-in, if not ask for an invitation to it.\n \n\n \n Netdata Cloud is a FREE service that complements the Netdata Agent, to provide:\n \n \n ),\n bullets: [\n \"Infrastructure level dashboards (each chart aggregates data from multiple nodes)\",\n \"Central dispatch of alert notifications\",\n \"Custom dashboards editor\",\n \"Intelligence assisted troubleshooting, to help surface the root cause of issues\",\n ],\n footer: \"Have a look, you will be surprised!\",\n },\n tickBoxOption: {\n text: \"Remember my choice\",\n preferenceID: MigrationModalPromos.PROMO_SIGN_IN_CLOUD,\n },\n CTA1: {\n text: \"Sign-in or get a Netdata Cloud account\",\n action: \"NAVIGATE\",\n toPath: \"path/signin/cloud\",\n userPreference: \"CLOUD\",\n },\n CTA2: {\n text: \"Later, stay at the Agent dashboard\",\n toPath: \"path/agent-dashboard\",\n action: \"NAVIGATE\",\n userPreference: \"AGENT\",\n },\n },\n [MigrationModalPromos.PROMO_IVNITED_TO_SPACE]: {\n title: \"Get an invitation to this Node’s Space!\",\n text: {\n header: () => (\n \n This node is connected to Netdata Cloud but it isnt available on one of your Spaces.\n \n ),\n bullets: [],\n footer: \"Ask for an invitation to this Space!\",\n },\n tickBoxOption: {\n text: \"Don't remind me of this again\",\n preferenceID: MigrationModalPromos.PROMO_IVNITED_TO_SPACE,\n },\n CTA1: {\n text: \"Thanks, stay at Agent dashboard for now\",\n toPath: \"agent\",\n action: \"NAVIGATE\",\n userPreference: \"AGENT\",\n },\n },\n [MigrationModalPromos.PROMO_CLAIM_NODE]: {\n title: \"This node isn’t connected to Netdata Cloud\",\n text: {\n header: () => (\n \n For you to be able to see this node on Netdata Cloud you will either need to:\n \n ),\n footer: \"Have a look, you will be surprised!\",\n bullets: [\n () => {\n return (\n \n {\" \"}\n Connect this node directly (documentation on{\" \"}\n \n how to connect a node\n \n ) , or\n \n )\n },\n () => {\n return (\n \n Αctivate streaming to a parent node that is already connected (documentation on{\" \"}\n \n how to configure streaming\n \n )\n \n )\n },\n ],\n },\n tickBoxOption: {\n text: \"Remember my choice.\",\n preferenceID: MigrationModalPromos.PROMO_CLAIM_NODE,\n },\n CTA1: {\n text: \"Wow! Let’s go to Netdata Cloud\",\n action: \"NAVIGATE\",\n toPath: \"path/node/cloud\",\n userPreference: \"CLOUD\",\n },\n CTA2: {\n text: \"Later, stay at the Agent dashboard\",\n action: \"NAVIGATE\",\n toPath: \"path/agent-dashboard\",\n userPreference: \"AGENT\",\n },\n },\n [MigrationModalPromos.PROMO_TO_USE_NEW_DASHBAORD]: {\n title: \"Use the Old or the New dashboard?\",\n text: {\n header: () => (\n \n This node is available in your Netdata Cloud account. So, you have full access to the NEW\n dashboards, charts, intelligence-assisted troubleshooting and many more!\n \n ),\n bullets: [],\n },\n tickBoxOption: {\n text: \"Remember my choice\",\n preferenceID: MigrationModalPromos.PROMO_TO_USE_NEW_DASHBAORD,\n },\n CTA1: {\n text: \"Wow! Let’s go to Netdata Cloud \",\n action: \"NAVIGATE\",\n toPath: \"path/dashboard/cloud\",\n userPreference: \"CLOUD\",\n },\n CTA2: {\n text: \"Later, stay at the Agent dashboard\",\n action: \"NAVIGATE\",\n toPath: \"path/agent-dashboard\",\n userPreference: \"AGENT\",\n },\n },\n [MigrationModalPromos.FALLBACK_TO_AGENT]: {\n title: \"Oops! This node has lost connection to Netdata Cloud!\",\n text: {\n header: ({ date = \"\" }) => {\n return (\n <>\n \n Unfortunately, it seems that this node is not currently connected to Netdata Cloud.\n So, the old agent dashboard is the only option available.\n \n {/* \n The node lost its Netdata Cloud connection at {date}.\n */}\n \n To troubleshoot Netdata Cloud connection issues, please follow this{\" \"}\n \n this guide.\n \n \n \n )\n },\n bullets: [],\n },\n tickBoxOption: {\n text: \"Don't show this again\",\n preferenceID: MigrationModalPromos.FALLBACK_TO_AGENT,\n },\n CTA1: {\n text: \"Check again please\",\n action: \"REFRESH\",\n userPreference: undefined,\n },\n CTA2: {\n text: \"Thanks, stay at Agent dashboard\",\n toPath: \"path/agent\",\n action: \"NAVIGATE\",\n userPreference: \"AGENT\",\n },\n },\n [MigrationModalPromos.NO_INFO_FALLBACK_TO_AGENT]: {\n title: \"Oops! We aren't able to get information of this node in regards to Netdata Cloud!\",\n text: {\n header: () => {\n return (\n <>\n \n Unfortunately, it seems we aren't able to get information on this node in regards to\n Netdata Cloud.\n \n \n This could be from internet connectivity issues from your end or some temporary issue\n with our services. So, the old agent dashboard is the only option available.\n \n \n )\n },\n bullets: [],\n },\n tickBoxOption: {\n text: \"Don't show this again\",\n preferenceID: MigrationModalPromos.NO_INFO_FALLBACK_TO_AGENT,\n },\n CTA1: {\n text: \"Check again please\",\n action: \"REFRESH\",\n userPreference: undefined,\n },\n CTA2: {\n text: \"Thanks, stay at Agent dashboard\",\n toPath: \"path/agent-dashboard\",\n action: \"NAVIGATE\",\n userPreference: \"AGENT\",\n },\n },\n}\n\nexport type PromoProps = {\n userSavedPreference?: UserPreference\n userStatus?: UserStatus\n nodeClaimedStatus?: NodeClaimedStatus\n userNodeAccess?: UserNodeAccess\n nodeLiveness?: NodeLiveness\n}\n\nconst isPromoSignUp = ({\n userSavedPreference,\n userStatus,\n nodeClaimedStatus,\n}: PromoProps): boolean =>\n userSavedPreference !== \"AGENT\" && userStatus === \"UNKNOWN\" && nodeClaimedStatus === \"NOT_CLAIMED\"\n\nconst isPromoSignIn = ({\n userSavedPreference,\n userStatus,\n nodeClaimedStatus,\n}: PromoProps): boolean =>\n userSavedPreference !== \"AGENT\" && userStatus === \"UNKNOWN\" && nodeClaimedStatus === \"CLAIMED\"\n\nconst isPromoInvitedToSpace = ({\n userSavedPreference,\n userStatus,\n nodeClaimedStatus,\n userNodeAccess,\n}: PromoProps): boolean =>\n userSavedPreference !== \"AGENT\" &&\n (userStatus === \"LOGGED_IN\" || userStatus === \"EXPIRED_LOGIN\") &&\n nodeClaimedStatus === \"CLAIMED\" &&\n userNodeAccess === \"NO_ACCESS\"\n\nconst isPromoToClaimThisNode = ({\n userSavedPreference,\n userStatus,\n nodeClaimedStatus,\n}: PromoProps): boolean =>\n userSavedPreference !== \"AGENT\" &&\n (userStatus === \"LOGGED_IN\" || userStatus === \"EXPIRED_LOGIN\") &&\n nodeClaimedStatus === \"NOT_CLAIMED\"\n\nconst isPromoToNewDasboardOnCloud = ({\n userSavedPreference,\n userStatus,\n nodeLiveness,\n userNodeAccess,\n}: PromoProps): boolean =>\n !userSavedPreference &&\n (userStatus === \"LOGGED_IN\" || userStatus === \"EXPIRED_LOGIN\") &&\n nodeLiveness === \"LIVE\" &&\n userNodeAccess === \"ACCESS_OK\"\n\nconst isNoInfoFallbackToAgent = ({\n userSavedPreference,\n userStatus,\n nodeClaimedStatus,\n nodeLiveness,\n userNodeAccess,\n}: PromoProps): boolean =>\n userSavedPreference === \"CLOUD\" &&\n !userStatus &&\n !nodeClaimedStatus &&\n !nodeLiveness &&\n !userNodeAccess\n\nconst isFallbackToAgent = ({\n userSavedPreference,\n userStatus,\n nodeClaimedStatus,\n nodeLiveness,\n userNodeAccess,\n}: PromoProps): boolean =>\n userSavedPreference !== \"AGENT\" &&\n (userStatus === \"LOGGED_IN\" || userStatus === \"EXPIRED_LOGIN\") &&\n nodeClaimedStatus === \"CLAIMED\" &&\n nodeLiveness === \"NOT_LIVE\" &&\n userNodeAccess === \"ACCESS_OK\"\n\nexport const goToAgentDashboard = ({ userSavedPreference }: PromoProps) =>\n userSavedPreference === \"AGENT\"\n\nexport const goToCloud = ({\n userSavedPreference,\n userStatus,\n nodeLiveness,\n userNodeAccess,\n}: PromoProps) =>\n userSavedPreference === \"CLOUD\" &&\n (userStatus === \"LOGGED_IN\" || userStatus === \"EXPIRED_LOGIN\") &&\n nodeLiveness === \"LIVE\" &&\n userNodeAccess === \"ACCESS_OK\"\n\nconst modalStatusWithPromoFunctions: Record<\n MigrationModalPromos,\n (props: PromoProps) => boolean\n> = {\n [MigrationModalPromos.FALLBACK_TO_AGENT]: isFallbackToAgent,\n [MigrationModalPromos.NO_INFO_FALLBACK_TO_AGENT]: isNoInfoFallbackToAgent,\n [MigrationModalPromos.PROMO_TO_USE_NEW_DASHBAORD]: isPromoToNewDasboardOnCloud,\n [MigrationModalPromos.PROMO_CLAIM_NODE]: isPromoToClaimThisNode,\n [MigrationModalPromos.PROMO_IVNITED_TO_SPACE]: isPromoInvitedToSpace,\n [MigrationModalPromos.PROMO_SIGN_IN_CLOUD]: isPromoSignIn,\n [MigrationModalPromos.PROMO_SIGN_UP_CLOUD]: isPromoSignUp,\n}\n\nconst useMigrationModal = ({\n userStatus,\n nodeClaimedStatus,\n userNodeAccess,\n nodeLiveness,\n}: PromoProps) => {\n const [userSavedPreference, setUserPrefrence] = useLocalStorage(\n \"USER_SAVED_PREFERENCE\"\n )\n\n const migrationModalPromo = useMemo(() => {\n return Object.keys(modalStatusWithPromoFunctions).find(modalStatus => {\n return modalStatusWithPromoFunctions[modalStatus]({\n userStatus,\n nodeClaimedStatus,\n userNodeAccess,\n userSavedPreference,\n nodeLiveness,\n })\n }) as MigrationModalPromos\n }, [userStatus, nodeClaimedStatus, userNodeAccess, nodeLiveness, userSavedPreference])\n\n return {\n migrationModalPromoInfo: migrationmodalInfo[migrationModalPromo],\n migrationModalPromo,\n setUserPrefrence,\n userSavedPreference,\n }\n}\n\nexport default useMigrationModal\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 \n \n {chartContainerRef.current && (\n \n )}\n
    \n \n \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: \"bright\",\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 \n \n \n \n \n {title}\n \n {secondary && (\n \n {secondary}\n \n )}\n {onClick && }\n \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 \n )\n}\n\nconst DateSection = ({ before, after }) => (\n
    \n \n \n
    \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 \n \n
    \n \n {attributes.relatedCharts.map(({ chartMetadata }, index) => (\n \n ))}\n \n
    \n
    \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
    \n {sliced.map((item) => (\n onItemClick(item))}\n />\n ))}\n
    \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 \n {ids.map((id, index) => (\n onExpand(id)}\n noBorder={index === ids.length - 1}\n onItemClick={id === \"k8s_node_name\" && onNodeClick}\n />\n ))}\n \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 \n
    \n \n
    \n \n \n {items.map((item) => (\n onItemClick(item))}\n />\n ))}\n
    \n \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 \n)\n\nconst TabsContainer = ({ label, value, onChange, children }) => (\n \n
    {label}
    \n \n \n \n {children}\n \n
    \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 \n {isLabelView && (\n setView(\"context\")}\n onItemClick={view === \"k8s_node_name\" && onNodeClick}\n />\n )}\n {!isLabelView && (\n \n {view === \"context\" && (\n \n )}\n {view === \"metrics\" && (\n \n )}\n \n )}\n \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 \n )\n }\n\n const renderGroupPopover = ({ groupIndex, align }) => {\n const label = labels[groupIndex]\n const { title } = getLabel(groupBy)\n\n return (\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 \n \n \n {id}\n \n \n \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 \n )\n }\n\n if (chartLibrary === \"gauge\") {\n return (\n \n )\n }\n\n if (chartLibrary === \"sparkline\") {\n return (\n \n )\n }\n\n if (chartLibrary === \"d3pie\") {\n return (\n \n )\n }\n\n if (chartLibrary === \"peity\") {\n return (\n \n )\n }\n\n if (chartLibrary === \"google\") {\n return (\n \n )\n }\n\n if (chartLibrary === \"textonly\") {\n return (\n \n )\n }\n\n if (chartLibrary === \"groupbox\") {\n return (\n \n )\n }\n\n return (\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, { useEffect, useState, useCallback, useMemo, memo, useContext } from \"react\"\nimport { ThemeContext } from \"styled-components\"\nimport { useDebouncedCallback } from \"use-debounce\"\n\nimport {\n requestCommonColorsAction,\n setDefaultAfterAction,\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 { 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 ({\n attributes,\n attributes: { chartLibrary },\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(\n () =>\n chartData.dimension_names.map(dimensionName =>\n selectedDimensions.length === 0 ? true : selectedDimensions.includes(dimensionName)\n ),\n [chartData.dimension_names, selectedDimensions]\n )\n\n const shouldDisplayToolbox =\n hasLegend(attributes) && window.NETDATA.options.current.legend_toolbox\n\n const shouldDisplayResizeHandler =\n 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 // 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 }, [chartData.dimension_names, chartMetadata.dimensions])\n useEffect(() => {\n dispatch(\n requestCommonColorsAction({\n chartContext: chartMetadata.context,\n chartUuid,\n colorsAttribute: attributes.colors,\n commonColorsAttribute: attributes.commonColors,\n dimensionNames: allDimensionNames,\n })\n )\n }, [\n allDimensionNames,\n attributes.colors,\n attributes.commonColors,\n chartMetadata.context,\n chartUuid,\n dispatch,\n ])\n\n const { legendFormatValue, legendFormatValueDecimalsFromMinMax, unitsCurrent } = useFormatters({\n attributes,\n data: chartData,\n units,\n unitsCommon,\n unitsDesired,\n uuid: chartUuid,\n })\n\n const [localHoveredX, setLocalHoveredX] = useState(null)\n\n const isSyncSelection = useSelector(selectSyncSelection)\n const handleSetHoveredX = useCallback(\n (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 },\n [chartUuid, dispatch, isSyncSelection]\n )\n const globalHoveredX = useSelector(selectGlobalSelection)\n const hoveredX = isSyncSelection ? globalHoveredX : 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\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 ({\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 // 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 &&\n movement <= tolerance &&\n 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(\n setChartPanAndZoomAction({\n after: afterForced,\n before: beforeForced,\n id: chartUuid,\n shouldForceTimeRange,\n })\n )\n }\n\n if (doCallback && typeof callback === \"function\") {\n callback(afterForced, beforeForced)\n }\n },\n [\n chartData.view_update_every,\n chartUuid,\n dispatch,\n fixedMinDuration,\n isSyncPanAndZoom,\n netdataFirst,\n netdataLast,\n setGlobalPanAndZoomDebounced,\n viewAfter,\n viewBefore,\n ]\n )\n\n /**\n * toolbox handlers\n */\n const handleToolBoxPanAndZoom = useCallback(\n (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 },\n [handleUpdateChartPanAndZoom, netdataFirst, netdataLast]\n )\n\n const handleToolboxLeftClick = useCallback(\n (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 },\n [handleToolBoxPanAndZoom, netdataFirst, viewAfter, viewBefore]\n )\n\n const handleToolboxRightClick = useCallback(\n (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 },\n [handleToolBoxPanAndZoom, netdataLast, viewAfter, viewBefore]\n )\n\n const handleToolboxZoomInClick = useCallback(\n (event: React.MouseEvent) => {\n const panAndZoomStep = getPanAndZoomStep(event) * 0.8\n if (!globalPanAndZoom) {\n dispatch(\n setDefaultAfterAction({\n after: Math.round(defaultAfter / (panAndZoomStep + 1)),\n })\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 },\n [\n defaultAfter,\n dispatch,\n globalPanAndZoom,\n handleToolBoxPanAndZoom,\n netdataFirst,\n netdataLast,\n viewAfter,\n viewBefore,\n ]\n )\n\n const handleToolboxZoomOutClick = useCallback(\n (event: React.MouseEvent) => {\n const panAndZoomStep = getPanAndZoomStep(event) * 0.8\n if (!globalPanAndZoom) {\n dispatch(\n setDefaultAfterAction({\n after: Math.round(defaultAfter * (panAndZoomStep + 1)),\n })\n )\n return\n }\n const dt =\n ((viewBefore - viewAfter) / (1.0 - panAndZoomStep * 0.8) - (viewBefore - viewAfter)) / 2\n const newAfter = viewAfter - dt\n const newBefore = viewBefore + dt\n handleToolBoxPanAndZoom(newAfter, newBefore)\n },\n [defaultAfter, dispatch, globalPanAndZoom, handleToolBoxPanAndZoom, viewAfter, viewBefore]\n )\n\n /**\n * assign colors\n */\n const selectAssignedColors = useMemo(\n () =>\n createSelectAssignedColors({\n chartContext: chartMetadata.context,\n chartUuid,\n colorsAttribute: attributes.colors,\n commonColorsAttribute: attributes.commonColors,\n }),\n [attributes.colors, attributes.commonColors, chartMetadata, chartUuid]\n )\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 // 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 \n )\n\n const resizeHandler = shouldDisplayResizeHandler && (\n \n )\n\n return (\n <>\n legendFormatValueDecimalsFromMinMax(min, max)}\n showLatestOnBlur={showLatestOnBlur}\n unitsCurrent={unitsCurrent}\n viewAfterForCurrentData={viewAfterForCurrentData}\n viewBeforeForCurrentData={viewBeforeForCurrentData}\n />\n {hasLegend(attributes) && (\n \n )}\n {shouldDisplayToolbox && !isLegendOnBottom && legendToolbox}\n {!isLegendOnBottom && resizeHandler}\n \n )\n }\n)\n","import styled from \"styled-components\"\nimport { getColor, Icon } from \"@netdata/netdata-ui\"\n\nexport const DropdownItem = styled.div`\n display: flex;\n flex-direction: start;\n align-items: center;\n color: ${getColor([\"neutral\", \"limedSpruce\"])};\n white-space: nowrap;\n & > svg use {\n fill: ${getColor([\"neutral\", \"limedSpruce\"])};\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([\"neutral\", \"limedSpruce\"])};\n & :hover {\n fill: ${getColor([\"neutral\", \"regentgrey\"])};\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 {\n setIsOpen(true)\n }}\n />\n \n \n \n {dropdownMenu.map(({ icon, label, onClick }) => (\n \n {icon}\n \n {label}\n \n \n )}\n onClick={() => {\n onClick({ attributes, chartMetadata, chartID })\n handleClose()\n }}\n />\n ))}\n \n \n \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 \n \n \n \n \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 overridden 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(\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 \n {shouldShowSpinner && }\n \n )\n }\n\n return (\n <>\n {hasEmptyData && (\n \n )}\n \n {shouldShowSpinner && }\n {dropdownMenu && dropdownMenu.length > 0 && (\n \n \n \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 {\n selectHasWindowFocus,\n selectStopUpdatesWhenFocusIsLost,\n selectGlobalPause,\n} from \"domains/global/selectors\"\nimport { BIGGEST_INTERVAL_NUMBER } from \"utils/biggest-interval-number\"\nimport { isPrintMode } from \"domains/dashboard/utils/parse-url\"\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 globalPause = useSelector(selectGlobalPause)\n\n const shouldBeUpdating = !(!hasWindowFocus && stopUpdatesWhenFocusIsLost) && !globalPause\n\n const [shouldFetch, setShouldFetch] = useState(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 =\n (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 \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 \n \n \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 = (\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(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(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 \n \n
    \n
    \n
    \n \n ×\n \n

    \n Preparing dashboard for printing...\n

    \n
    \n
    \n Please wait while we initialize and render all the charts on the dashboard.\n \n \n \n {progressBarText}\n \n
    \n
    \n The print dialog will appear as soon as we finish rendering the page.\n
    \n
    \n
    \n \n \n
    \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 \n \n \n \n Do you like Netdata?\n \n \n Give us a star!\n \n \n \n \n \n \n \n \n \n And share the word!\n \n \n \n \n \n \n \n \n \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
    \n {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n \n
    \n)\n\nexport const NotificationsContainer = styled(WrappedToastContainer)`\n .Toastify__toast-container {\n position: fixed;\n width: unset;\n min-width: 400px;\n max-width: 500px;\n ${notificationsZIndex};\n color: ${getColor([\"neutral\", \"limedSpruce\"])};\n }\n .Toastify__toast {\n padding: 0;\n padding-top: 5px;\n }\n .Toastify__toast--error {\n background: ${getColor([\"red\", \"lavender\"])};\n border: 1px solid ${getColor(\"error\")};\n }\n .Toastify__toast--warning {\n }\n .Toastify__toast--success {\n background: ${getColor([\"green\", \"frostee\"])};\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 \n {!!icon && }\n {children}\n \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 \n \n {hostname}\n \n \n )\n}\n\nexport default Node\n","import React from \"react\"\nimport { Flex, TextSmall } from \"@netdata/netdata-ui\"\n\nconst tooltipBackground = [\"neutral\", \"black\"]\n\nconst CustomTooltip = ({ children, isBasic }) => (\n \n {children}\n \n)\n\nexport default CustomTooltip\n","import React from \"react\"\nimport CustomTooltip from \"@/src/components/tooltips/customTooltip\"\n\nconst getContent = (content, { isBasic }) => {\n const contentNode = typeof content === \"function\" ? content() : content\n if (typeof content === \"string\" || isBasic) {\n return {contentNode}\n }\n return contentNode\n}\n\nexport default getContent\n","import React, { useCallback } from \"react\"\nimport { Tooltip as BaseTooltip } from \"@netdata/netdata-ui\"\nimport getContent from \"./getContent\"\n\nconst Tooltip = ({ children, content, isBasic, ...rest }) => {\n const getTooltipContent = useCallback(() => getContent(content, { isBasic }), [content, isBasic])\n return (\n \n {children}\n \n )\n}\n\nexport default Tooltip\n","import React, { useCallback } from \"react\"\nimport { Flex, Button } from \"@netdata/netdata-ui\"\nimport Tooltip from \"@/src/components/tooltips\"\nimport { setGlobalPauseAction } from \"domains/global/actions\"\nimport { useDispatch } from \"store/redux-separate-context\"\n\nconst Options = () => {\n const dispatch = useDispatch()\n const onClick = useCallback(() => dispatch(setGlobalPauseAction()), [dispatch])\n return (\n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default Options\n","import styled from \"styled-components\"\nimport { Flex } from \"@netdata/netdata-ui\"\n\nconst Dropdown = styled(Flex).attrs({\n padding: [4],\n background: \"dropdown\",\n round: 1,\n overflow: { vertical: \"auto\" },\n margin: [4, 0, 0],\n width: 110,\n})`\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\n`\n\nexport default Dropdown\n","import styled from \"styled-components\"\nimport React, { useRef } from \"react\"\nimport { useMedia, useToggle } from \"react-use\"\nimport { Drop, Flex, Icon, Pill, Text } from \"@netdata/netdata-ui\"\nimport { useSelector } from \"store/redux-separate-context\"\nimport { selectLacksProtoBufSupport } from \"domains/global/selectors\"\n\nimport Dropdown from \"./dropdown\"\n\nconst PillContainer = styled(Flex)`\n white-space: nowrap;\n`\n\nconst Link = styled(Text).attrs({ as: \"a\", color: \"success\", target: \"_blank\" })``\n\nconst breakpoint = \"(min-width: 1400px)\"\n\nconst ProtoBuf = () => {\n const [isOpen, toggle] = useToggle()\n const lacksProtoBufSupport = useSelector(selectLacksProtoBufSupport)\n\n const ref = useRef()\n\n const isLargeEnough = useMedia(breakpoint)\n\n const close = () => {\n toggle(false)\n }\n if (!lacksProtoBufSupport) return null\n\n return (\n \n \n \n {isLargeEnough ? \"NOT MONITORED IN CLOUD\" : \"\"}\n \n \n {ref.current && isOpen && (\n \n \n \n \n \n \n \n \n \n \n It will not be possible to monitor this node from Netdata Cloud after 1st of\n March.

    \n This node does not have proto-buf support. In order to learn how to apply\n proto-buf support to your nodes{\" \"}\n \n read our documentation.\n \n
    \n
    If you are not interested in monitoring this node from Netdata Cloud, you\n can{\" \"}\n \n unclaim it.\n \n
    \n
    \n
    \n
    \n \n )}\n
    \n )\n}\n\nexport default ProtoBuf\n","import React from \"react\"\nimport { Button } from \"@netdata/netdata-ui\"\nimport Tooltip from \"@/src/components/tooltips\"\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 => data.replace(/(\\r\\n|\\n|\\r| |\\t)/gm, \"\")\n\nconst transformGithubResponse = data => data?.tag_name.replace(/(\\r\\n|\\n|\\r| |\\t)/gm, \"\")\n\nconst versionsMatch = (v1, v2) => {\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\nconst VersionControl = ({ currentVersion, releaseChannel }) => {\n const isStableReleaseChannel = releaseChannel === \"stable\"\n const [githubVersion] = useHttp(NETDATA_LATEST_VERSION_URL, isStableReleaseChannel, true)\n\n const [gcsVersionResponse] = useHttp(NETDATA_LATEST_GCS_VERSION_URL, !isStableReleaseChannel)\n const [mediaLinkResponse] = useHttp(gcsVersionResponse?.mediaLink, Boolean(gcsVersionResponse))\n\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 \n \n \n )\n}\n\nexport default VersionControl\n","import React from \"react\"\nimport VersionControl from \"components/app-header/components/versionControl\"\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 && \n )\n}\n\nexport default Version\n","import { useState, useCallback } from \"react\"\n\n/**\n * @example\n * const [value, toggle, toggleOn, toggleOff] = useToggle(false);\n *\n * @param {Boolean} initialValue\n */\n\nconst useToggle = (initialValue = false) => {\n const [value, setToggle] = useState(!!initialValue)\n const toggle = useCallback(() => setToggle(oldValue => !oldValue), [])\n const toggleOn = useCallback(() => setToggle(true), [])\n const toggleOff = useCallback(() => setToggle(false), [])\n\n return [value, toggle, toggleOn, toggleOff]\n}\n\nexport default useToggle\n","import { useEffect, useState } from \"react\"\n\nconst useLocalStorage = (key, defaultValue) => {\n const [value, setValue] = useState(() => getValueFromStorage(key, defaultValue))\n\n useEffect(() => localStorage.setItem(key, JSON.stringify(value)), [key, value])\n\n return [value, setValue]\n}\n\nconst getValueFromStorage = (key, defaultValue = \"\") =>\n JSON.parse(localStorage.getItem(key)) ?? defaultValue\n\nexport default useLocalStorage\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)`\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 styled from \"styled-components\"\nimport { getColor, getSizeBy, Icon, Drop } from \"@netdata/netdata-ui\"\nimport { Dropdown } from \"@/src/components/mdx-components/dropdown\"\nimport { dialogsZIndex, customDropdownZIndex } from \"@/src/styles/z-index\"\n\nexport const PickerBox = styled.div`\n display: flex;\n position: relative;\n min-width: ${getSizeBy(102)};\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 border-radius: 8px;\n`\n\nexport const StyledTimePeriod = styled.span`\n margin-top: ${getSizeBy(3)};\n cursor: pointer;\n width: 187px;\n height: ${getSizeBy(2)};\n &:first-of-type {\n margin-top: ${getSizeBy(1)};\n }\n &:last-of-type {\n margin-bottom: ${getSizeBy(1)};\n }\n & > span:hover {\n color: ${getColor(\"textLite\")};\n }\n`\nexport const StyledCustomTimePeriod = styled.span`\n margin: ${getSizeBy(1)} ${getSizeBy(3)} 0;\n color: ${({ isSelected, theme }) => getColor(isSelected ? \"primary\" : \"text\")({ theme })};\n cursor: pointer;\n &:first-of-type {\n margin-top: 0;\n }\n &:hover {\n color: ${getColor(\"textLite\")};\n }\n`\n\nexport const StyledDropdown = styled(Dropdown)`\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 ${customDropdownZIndex}\n margin-top: ${getSizeBy(2)};\n background: ${getColor(\"mainBackground\")};\n border-radius: 4px;\n }\n }\n .mdc-list {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n }\n`\nexport const DropdownIcon = styled(Icon)`\n fill: ${getColor(\"text\")};\n width: 12px;\n height: 12px;\n`\n\nexport const CustomInput = styled.input`\n border: 1px solid ${getColor(\"border\")};\n color: inherit;\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 &:focus {\n border: 1px solid ${getColor(\"primary\")};\n }\n`\nexport const StyledDrop = styled(Drop).attrs({\n background: \"mainBackground\",\n round: 2,\n margin: [4, 0, 0],\n border: { side: \"all\", color: \"elementBackground\" },\n animation: true,\n})`\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\n`\nexport const StyledHR = styled.hr`\n border: none;\n margin: 0;\n border-left: 1px solid ${getColor(\"borderSecondary\")};\n height: 284px;\n`\n","import React, { useRef } from \"react\"\nimport { List } from \"@rmwc/list\"\nimport { MenuSurfaceAnchor, MenuSurface } from \"@rmwc/menu\"\nimport { RootContainer, ListContainer, DropdownContainer, OpenerIcon } from \"./styled\"\n\nexport const Dropdown = ({\n title,\n children,\n className,\n renderTitle,\n isOpen = false,\n onMenuToggle,\n anchorCorner = \"bottomStart\",\n renderOpener,\n}) => {\n const ref = useRef()\n\n const handleOpenState = () => {\n onMenuToggle(!isOpen)\n }\n\n const handleClose = () => {\n onMenuToggle(false)\n }\n\n return (\n \n \n \n {typeof children === \"function\" ? (\n isOpen && (\n \n {children({ maxHeight: ref.current?.root.ref.style.maxHeight })}\n \n )\n ) : (\n \n {children}\n \n )}\n \n \n {title || (renderTitle && renderTitle())}\n {renderOpener ? (\n renderOpener()\n ) : (\n \n )}\n \n \n \n )\n}\n","import React, { memo, useCallback } from \"react\"\nimport { Text } from \"@netdata/netdata-ui\"\nimport { StyledTimePeriod } from \"./styled\"\n\nconst TimePeriod = ({ value, period, resolution, isSelected, setTimeRange, tagging }) => {\n const onClick = useCallback(\n () => setTimeRange(value, resolution),\n [value, resolution, setTimeRange]\n )\n return (\n \n {period}\n \n )\n}\n\nexport default memo(TimePeriod)\n","import { format, formatDistanceStrict, parse, getTime, getUnixTime, add, isMatch } from \"date-fns\"\n\nconst MINUTE = 60\nconst HOUR = MINUTE * 60\nconst DAY = HOUR * 24\nconst MONTH = 30 * DAY\n\nexport const maxTimePeriodInUnix = 94694400\nexport const dateResolutions = [\"minutes\", \"hours\", \"days\", \"months\"]\n\nconst resolutionsMapping = {\n minutes: MINUTE,\n hours: HOUR,\n days: DAY,\n months: MONTH,\n}\n\nexport const getCustomTimePeriod = (after, resolution) =>\n Math.round(after / resolutionsMapping[resolution])\n\nexport const parseInputPeriod = (timeCorrection, resolution) => {\n const customRange = add(new Date(0), {\n [resolution]: timeCorrection,\n })\n return -getUnixTime(customRange)\n}\n\nconst focusTaggingMap = {\n startDate: \"start\",\n endDate: \"finish\",\n}\n\nexport const getFocusTagging = focusedInput => focusTaggingMap[focusedInput]\n\nexport const timePeriods = [\n { period: \"Last 5 minutes\", value: -5 * MINUTE, resolution: \"minutes\" },\n { period: \"Last 15 minutes\", value: -15 * MINUTE, resolution: \"minutes\" },\n { period: \"Last 30 minutes\", value: -30 * MINUTE, resolution: \"minutes\" },\n { period: \"Last 2 hours\", value: -2 * HOUR, resolution: \"hours\" },\n { period: \"Last 6 hours\", value: -6 * HOUR, resolution: \"hours\" },\n { period: \"Last 12 hours\", value: -12 * HOUR, resolution: \"hours\" },\n { period: \"Last Day\", value: -DAY, resolution: \"days\" },\n { period: \"Last 2 Days\", value: -2 * DAY, resolution: \"days\" },\n { period: \"Last 7 Days\", value: -7 * DAY, resolution: \"days\" },\n]\n\nexport const formatDates = (startDate, endDate) => {\n const formattedStartDate = format(startDate, \"MMMM d yyyy, H:mm:ss\")\n const formattedEndDate = format(endDate, \"MMMM d yyyy, H:mm:ss\")\n return {\n formattedStartDate,\n formattedEndDate,\n }\n}\n\nexport const formatOffset = offset => {\n if (!offset) return \"+00:00\"\n const splitOffset = offset.toString().split(\".\")\n const mathSign = splitOffset[0] > 0 ? \"+\" : \"-\"\n const absoluteNumber = Math.abs(splitOffset[0]).toString()\n const firstPart = `${mathSign}${absoluteNumber.padStart(2, 0)}`\n return splitOffset.length > 1\n ? `${firstPart}:${String(splitOffset[1] * 0.6).padEnd(2, 0)}`\n : `${firstPart}:00`\n}\n\nexport const getDateWithOffset = (date, utcOffset) => {\n const formattedDate = isMatch(date, \"MMMM d yyyy, H:mm\")\n ? date\n : parse(date, \"MMMM d yyyy, H:mm\", Date.now())\n return parse(`${formattedDate} ${formatOffset(utcOffset)}`, \"MMMM d yyyy, H:mm xxx\", Date.now())\n}\n\nexport const getTimePeriod = (startDate, endDate) =>\n formatDistanceStrict(getTime(startDate), getTime(endDate))\n","import React from \"react\"\nimport { Flex } from \"@netdata/netdata-ui\"\nimport TimePeriod from \"./timePeriod\"\nimport { timePeriods } from \"./utils\"\n\nconst TimePeriods = ({ handleTimePeriodChange, selectedDate, tagging }) => (\n \n {timePeriods.map(({ period, value, resolution }) => (\n \n ))}\n \n)\n\nexport default TimePeriods\n","import React, { useCallback, useEffect, useState } from \"react\"\nimport { isValid, add, getUnixTime } from \"date-fns\"\nimport { Flex, Text } from \"@netdata/netdata-ui\"\nimport {\n getCustomTimePeriod,\n parseInputPeriod,\n dateResolutions,\n maxTimePeriodInUnix,\n} from \"./utils\"\nimport { StyledDropdown, DropdownIcon, CustomInput, StyledCustomTimePeriod } from \"./styled\"\n\nconst CustomTimePeriod = ({ handleTimePeriodChange, value, resolution, tagging }) => {\n const getInputValue = () => (value <= 0 ? getCustomTimePeriod(-value, resolution) : 0)\n const [inputValue, setInputValue] = useState(getInputValue)\n const [isDropdownOpen, toggleDropdown] = useState(false)\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => setInputValue(getInputValue()), [value])\n\n const onChange = useCallback(e => setInputValue(e.target.value), [])\n\n const onBlur = useCallback(\n e => {\n const currentValue = Number(e.currentTarget.value)\n const isValidInput =\n !Number.isNaN(currentValue) && Number.isInteger(currentValue) && currentValue > 0\n const timePeriod = add(new Date(0), {\n [resolution]: currentValue,\n })\n const isValidTimePeriod =\n isValidInput && isValid(timePeriod) && getUnixTime(timePeriod) <= maxTimePeriodInUnix\n if (isValidTimePeriod)\n return handleTimePeriodChange(parseInputPeriod(currentValue, resolution), resolution)\n return value <= 0 ? setInputValue(getCustomTimePeriod(-value, resolution)) : setInputValue(0)\n },\n [resolution, value, handleTimePeriodChange]\n )\n\n const onChangeResolution = useCallback(\n newResolution => {\n return () => {\n handleTimePeriodChange(parseInputPeriod(inputValue, newResolution), newResolution)\n toggleDropdown(false)\n }\n },\n [inputValue, handleTimePeriodChange]\n )\n\n const renderTitle = () => (\n \n {resolution}\n \n \n )\n return (\n \n Last\n \n null}\n >\n {() =>\n dateResolutions.map(dateResolution => (\n \n {dateResolution}\n \n ))\n }\n \n \n )\n}\n\nexport default CustomTimePeriod\n","import React from \"react\"\nimport DatePickerLib from \"react-datepicker\"\nimport \"react-datepicker/dist/react-datepicker.css\"\n\nconst DatePicker = ({\n selected,\n selectsStart = false,\n selectsEnd = false,\n startDate,\n endDate,\n onChange,\n minDate,\n maxDate,\n dateFormat = \"MM/dd/yyyy\",\n open = false,\n startOpen = false,\n inline = false,\n selectsRange = false,\n monthsShown = 1,\n showPopperArrow = true,\n calendarContainer = null,\n}) => (\n \n)\n\nexport default DatePicker\n","import { getColor, getRgbColor } from \"@netdata/netdata-ui\"\nimport styled from \"styled-components\"\n\nexport const StyledDateInput = styled.input`\n width: 100%;\n text-align: center;\n border: 1px solid ${getColor(\"border\")};\n color: inherit;\n background: ${getColor(\"mainBackground\")};\n box-sizing: border-box;\n border-radius: 4px;\n padding: 4px;\n height: 32px;\n margin-left: 20px;\n margin-right: 20px;\n outline: none;\n &:focus {\n border: 1px solid ${getColor(\"primary\")};\n }\n`\nexport const StyledCalendar = styled.div`\n background: ${getColor(\"mainBackground\")};\n border: 0;\n .react-datepicker {\n &__navigation {\n top: 8px;\n &-icon::before {\n border-color: ${getColor(\"text\")};\n }\n }\n &__header {\n background: ${getColor(\"mainBackground\")};\n border: 0;\n .react-datepicker__current-month {\n color: ${getColor(\"main\")};\n font-weight: normal;\n }\n .react-datepicker__day-name {\n color: ${getColor(\"textLite\")};\n }\n }\n &__day {\n color: ${getColor(\"main\")};\n &:hover {\n background: ${getColor(\"elementBackground\")};\n }\n &--disabled {\n color: ${getColor(\"textLite\")};\n &:hover {\n background: inherit;\n }\n }\n &--keyboard-selected,\n &--keyboard-selected:hover {\n color: ${getColor(\"main\")};\n background: inherit;\n border-radius: inherit;\n }\n &--selected,\n &--selected:hover {\n color: ${getColor(\"bright\")};\n background: ${getColor(\"primary\")};\n border-radius: 8px;\n }\n &--in-selecting-range,\n &--in-range {\n color: ${getColor(\"primary\")};\n background: ${getColor(\"elementBackground\")};\n border-radius: 0;\n }\n &--selecting-range-start,\n &--range-start {\n color: ${getColor(\"bright\")};\n background: ${getColor(\"primary\")};\n border-top-left-radius: 8px;\n border-bottom-left-radius: 8px;\n &:hover {\n color: ${getColor(\"bright\")};\n background: ${getRgbColor([\"green\", \"netdata\"], 0.8)};\n border-radius: 0;\n border-top-left-radius: 8px;\n border-bottom-left-radius: 8px;\n }\n }\n &--selecting-range-end,\n &--range-end {\n color: ${getColor(\"bright\")};\n background: ${getColor(\"primary\")};\n border-top-right-radius: 8px;\n border-bottom-right-radius: 8px;\n &:hover {\n color: ${getColor(\"bright\")};\n background: ${getRgbColor([\"green\", \"netdata\"], 0.8)};\n border-top-right-radius: 8px;\n border-bottom-right-radius: 8px;\n }\n }\n }\n }\n`\n","import React, { useState, useEffect, useCallback } from \"react\"\nimport { format, isValid, getTime } from \"date-fns\"\nimport { getDateWithOffset } from \"./utils\"\nimport { StyledDateInput } from \"../datePicker/styled\"\nimport { useDateTime } from \"@/src/utils/date-time\"\n\nconst DatePickerInput = ({\n name = \"\",\n value = \"\",\n onDatesChange,\n onFocus,\n placeholderText = \"\",\n}) => {\n const { utcOffset } = useDateTime()\n const [inputValue, setInputValue] = useState(\"\")\n const onChange = useCallback(e => {\n const date = e.target.value\n setInputValue(date)\n }, [])\n const setFormattedValue = useCallback(value => {\n if (isValid(value)) {\n const formattedDate = format(value, \"MMMM d yyyy, H:mm\")\n setInputValue(formattedDate)\n }\n }, [])\n const onBlur = useCallback(\n e => {\n const parsedDate = getDateWithOffset(e.target.value, utcOffset)\n const isValidDate = isValid(parsedDate) && getTime(parsedDate) > 0\n if (isValidDate) {\n const timestamp = getTime(parsedDate)\n onDatesChange(timestamp, () => setFormattedValue(value))\n } else setFormattedValue(value)\n },\n [value, utcOffset, onDatesChange, setFormattedValue]\n )\n\n useEffect(() => setFormattedValue(value), [value, setFormattedValue])\n\n return (\n \n )\n}\n\nexport default DatePickerInput\n","import { useDateTime } from \"@/src/utils/date-time\"\nimport { useCallback } from \"react\"\n\nconst useLocaleDate = () => {\n const { localeTimeString, localeDateString } = useDateTime()\n return useCallback(\n date => {\n return `${localeDateString(date, { locale: \"en-us\", long: false })} ${localeTimeString(date, {\n secs: false,\n })}`\n },\n [localeTimeString, localeDateString]\n )\n}\n\nexport default useLocaleDate\n","import { useMemo } from \"react\"\nimport { toDate } from \"date-fns\"\nimport useLocaleDate from \"./useLocaleDate\"\n\nexport const convertTimestampToDate = (timestamp, getLocaleDate) => {\n if (timestamp > 0) {\n return toDate(new Date(getLocaleDate(timestamp)))\n } else if (timestamp || timestamp === 0)\n return toDate(new Date(getLocaleDate(new Date().valueOf() + timestamp * 1000)))\n return null\n}\n\nconst useConvertedDates = (startDate, endDate) => {\n const getLocaleDate = useLocaleDate()\n return useMemo(\n () => [\n convertTimestampToDate(startDate, getLocaleDate),\n convertTimestampToDate(endDate, getLocaleDate),\n ],\n [startDate, endDate, getLocaleDate]\n )\n}\n\nexport default useConvertedDates\n","import { Flex } from \"@netdata/netdata-ui\"\nimport React, { useCallback } from \"react\"\nimport { getTime, isBefore, format } from \"date-fns\"\nimport { useDateTime } from \"@/src/utils/date-time\"\nimport DatePicker from \"../datePicker/datePickerLib\"\nimport DatePickerInput from \"./datePickerInput\"\nimport useConvertedDates, { convertTimestampToDate } from \"./useConvertedDate\"\nimport useLocaleDate from \"./useLocaleDate\"\nimport { getDateWithOffset } from \"./utils\"\nimport { StyledCalendar } from \"../datePicker/styled\"\n\nconst DatePickerWrapper = ({\n startDate,\n setStartDate,\n endDate,\n setEndDate,\n onDatesChange,\n onInputFocus,\n}) => {\n const getLocaleDate = useLocaleDate()\n const [convertedStartDate, convertedEndDate] = useConvertedDates(startDate, endDate)\n const { utcOffset } = useDateTime()\n const setValidStartDate = useCallback(\n (startDate, setPreviousValue) =>\n isBefore(convertTimestampToDate(startDate, getLocaleDate), convertedEndDate)\n ? setStartDate(startDate)\n : setPreviousValue(),\n [convertedEndDate, getLocaleDate, setStartDate]\n )\n\n const setValidEndDate = useCallback(\n (endDate, setPreviousValue) =>\n isBefore(convertedStartDate, convertTimestampToDate(endDate, getLocaleDate))\n ? setEndDate(endDate)\n : setPreviousValue(),\n [convertedStartDate, getLocaleDate, setEndDate]\n )\n\n const onChange = useCallback(\n dates => {\n const [startDate, endDate] = dates\n\n const startDateWithOffset = startDate\n ? getDateWithOffset(format(startDate, \"MMMM d yyyy, H:mm\"), utcOffset)\n : startDate\n const endDateWithOffset = endDate\n ? getDateWithOffset(format(endDate, \"MMMM d yyyy, H:mm\"), utcOffset)\n : endDate\n\n const startDateTimestamp = getTime(startDateWithOffset) || null\n const endDateTimestamp = getTime(endDateWithOffset) || null\n\n onDatesChange(startDateTimestamp, endDateTimestamp)\n },\n [utcOffset, onDatesChange]\n )\n\n return (\n \n \n \n \n \n \n \n )\n}\n\nexport default DatePickerWrapper\n","import React, { useMemo } from \"react\"\nimport { Flex, Icon, TextSmall } from \"@netdata/netdata-ui\"\nimport { formatDates, getTimePeriod } from \"./utils\"\nimport useConvertedDates from \"./useConvertedDate\"\n\nconst PeriodIndication = ({ startDate, endDate }) => {\n const [convertedStart, convertedEnd] = useConvertedDates(startDate, endDate)\n\n const { formattedStartDate, formattedEndDate } = useMemo(\n () => formatDates(convertedStart, convertedEnd),\n [convertedStart, convertedEnd]\n )\n const timePeriod = useMemo(\n () => getTimePeriod(convertedStart, convertedEnd),\n [convertedStart, convertedEnd]\n )\n\n return (\n \n \n \n From\n \n \n {formattedStartDate}\n \n \n \n \n \n To\n \n \n {formattedEndDate}\n \n \n \n /\n \n {timePeriod}\n \n \n \n )\n}\n\nexport default PeriodIndication\n","import moment from \"moment\"\n\nexport const SECONDS = 1000\nexport const MINUTE = SECONDS * 60\nexport const HOUR = MINUTE * 60\nexport const DAY = HOUR * 24\nexport const MONTH = DAY * 30\n\nconst resolutionMap = [\n { value: DAY, unit: \"d\" },\n { value: HOUR, unit: \"h\" },\n { value: MINUTE, unit: \"min\" },\n { value: MINUTE, unit: \"min\" },\n { value: SECONDS, unit: \"s\" },\n]\n\nexport const getStartDate = start =>\n start < 0 ? moment(new Date()).add(start, \"seconds\") : moment(start)\nexport const getEndDate = end => (!end ? moment(new Date()) : moment(end))\nexport const getIsSameDate = (startDate, endDate) => startDate.isSame(endDate, \"day\")\nexport const getDuration = (startDate, endDate) => moment.duration(startDate.diff(endDate))\n\nconst getResolution = (value, resolution) => (value > 1 ? `${Math.floor(value)}${resolution}` : \"\")\n\nexport const getGranularDuration = duration => {\n let seconds = Math.abs(duration)\n const showSeconds = seconds < MINUTE\n return resolutionMap.reduce((acc, { value, unit }) => {\n if (value === SECONDS && !showSeconds) return acc\n acc = acc + getResolution(seconds / value, unit)\n seconds = seconds % value\n return acc\n }, \"\")\n}","import styled from \"styled-components\"\nimport { Flex, getColor } from \"@netdata/netdata-ui\"\n\nconst Container = styled(Flex)`\n cursor: pointer;\n\n &:hover * {\n color: ${getColor(\"textLite\")};\n fill: ${getColor(\"textLite\")};\n }\n`\n\nexport default Container\n","import React from \"react\"\nimport { Flex, TextSmall, Icon } from \"@netdata/netdata-ui\"\nimport { useDateTime } from \"utils/date-time\"\n\nconst DateBox = ({ isPlaying, startDate, endDate, isSameDate }) => {\n const { localeTimeString, localeDateString } = useDateTime()\n return (\n \n \n {localeDateString(startDate, { long: false })} •{\" \"}\n \n {localeTimeString(startDate, { secs: false })}\n \n \n \n \n {!isSameDate && `${localeDateString(endDate, { long: false })} • `}\n \n {localeTimeString(endDate, { secs: false })}\n \n \n \n )\n}\n\nexport default DateBox\n","import React from \"react\"\nimport { Flex, TextSmall } from \"@netdata/netdata-ui\"\n\nconst DurationBox = ({ isPlaying, duration }) => {\n return (\n \n \n {isPlaying && (\n \n • last\n \n )}\n \n \n {duration}\n \n \n )\n}\n\nexport default DurationBox\n","import React, { useState, useMemo, useEffect, forwardRef } from \"react\"\nimport Tooltip from \"@/src/components/tooltips\"\nimport { useSelector as useDashboardSelector } from \"store/redux-separate-context\"\nimport { selectGlobalPanAndZoom } from \"domains/global/selectors\"\nimport {\n getStartDate,\n getEndDate,\n getIsSameDate,\n getDuration,\n MINUTE,\n getGranularDuration,\n} from \"./utils\"\nimport Container from \"./container\"\nimport DateBox from \"./dateBox\"\nimport DurationBox from \"./durationBox\"\n\nconst PickerAccessorElement = forwardRef(\n (\n { onClick, start = 15 * MINUTE, end, isPlaying, isPickerOpen, setRangeValues, tagging },\n ref\n ) => {\n const [timeframe, setTimeframe] = useState()\n const startDate = getStartDate(start)\n const endDate = getEndDate(end)\n const globalPanAndZoom = useDashboardSelector(selectGlobalPanAndZoom)\n useEffect(() => {\n const after = getDuration(startDate, endDate).as(\"seconds\")\n if (!isPlaying && timeframe !== after) setTimeframe(Math.round(after))\n if (isPlaying && timeframe && !!globalPanAndZoom) {\n setRangeValues({ start: Math.round(timeframe) })\n setTimeframe(null)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [startDate, endDate, timeframe, isPlaying])\n\n const isSameDate = useMemo(() => getIsSameDate(startDate, endDate), [startDate, endDate])\n const duration = useMemo(\n () => getGranularDuration(getDuration(startDate, endDate).as(\"milliseconds\")),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [isPlaying, startDate, endDate]\n )\n\n return (\n {} : \"Select a predefined or a custom timeframe\"}\n align=\"bottom\"\n plain\n >\n \n \n \n \n \n )\n }\n)\n\nexport default PickerAccessorElement\n","import React, { useState, useEffect, useMemo, useRef, useCallback } from \"react\"\nimport { Button, Flex } from \"@netdata/netdata-ui\"\nimport useToggle from \"hooks/useToggle\"\nimport useLocalStorage from \"hooks/useLocalStorage\"\nimport TimePeriods from \"./timePeriods\"\nimport CustomTimePeriod from \"./customTimePeriod\"\nimport DatePickerWrapper from \"./datePickerWrapper\"\nimport { getFocusTagging } from \"./utils\"\nimport PeriodIndication from \"./periodIndication\"\nimport AccessorElement from \"./accessorElement\"\nimport { PickerBox, StyledDrop, StyledHR } from \"./styled\"\n\nexport const reportEvent = (\n eventCategory,\n eventAction,\n eventLabel,\n eventValue,\n event = \"gaCustomEvent\"\n) => {\n if (window.dataLayer) {\n const eventData = { event, eventCategory, eventAction, eventLabel, eventValue }\n window.dataLayer.push(eventData)\n }\n}\n\nconst DatePickerDrop = ({\n onChange,\n values: { start: initialStartDate, end: initialEndDate } = {},\n defaultValue = -60 * 15,\n tagging = \"\",\n isPlaying,\n}) => {\n const [startDate, setStartDate] = useState(initialStartDate)\n const [endDate, setEndDate] = useState(initialStartDate)\n const [resolution, setResolution] = useLocalStorage(\"resolution\", \"minutes\")\n const [focusedInput, setFocusedInput] = useState(\"startDate\")\n const [isOpen, toggle, , close] = useToggle()\n const ref = useRef()\n\n const setDates = useCallback(({ startDate, endDate }) => {\n setStartDate(startDate)\n setEndDate(endDate)\n }, [])\n\n useEffect(() => {\n setDates({\n startDate: initialStartDate,\n endDate: initialEndDate,\n })\n }, [initialStartDate, initialEndDate, setDates])\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const clearChanges = useCallback(() => setDates({ startDate: defaultValue, endDate: 0 }), [])\n\n const onInputFocus = useCallback(e => {\n if (!e.target.name) return\n setFocusedInput(e.target.name)\n }, [])\n\n const togglePicker = useCallback(\n e => {\n e.stopPropagation()\n toggle()\n },\n [toggle]\n )\n\n const applyChanges = () => {\n onChange({\n start: startDate,\n end: endDate,\n })\n close()\n }\n\n const focusTagging = useMemo(() => getFocusTagging(focusedInput), [focusedInput])\n\n const isValidTimePeriod = startDate !== null && endDate !== null && startDate !== endDate\n const isApplyDisabled = startDate === initialStartDate && endDate === initialEndDate\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const consistentDefaultValue = useMemo(() => defaultValue, [])\n const isClearDisabled = startDate === consistentDefaultValue\n\n const handleTimePeriodChange = useCallback(\n (time, resolution) => {\n setResolution(resolution)\n setDates({\n startDate: time,\n endDate: 0,\n })\n },\n [setDates, setResolution]\n )\n const onDatepickerChange = (startDate, endDate) => {\n setDates({ startDate, endDate })\n const date = focusTagging === \"finish\" ? endDate || startDate : startDate || endDate\n reportEvent(\"date-picker\", \"click-date-picker\", tagging, String(date))\n }\n\n const pickerDrop =\n ref.current && isOpen ? (\n \n \n \n \n \n \n \n \n \n \n \n {isValidTimePeriod && }\n \n \n \n \n \n \n \n ) : null\n\n return (\n <>\n \n {pickerDrop}\n \n )\n}\n\nexport default DatePickerDrop\n","import React, { memo, useEffect, useMemo } from \"react\"\nimport {\n useDispatch as useDashboardDispatch,\n useSelector as useDashboardSelector,\n} from \"store/redux-separate-context\"\nimport {\n resetGlobalPanAndZoomAction,\n setGlobalPanAndZoomAction,\n setDefaultAfterAction,\n} from \"domains/global/actions\"\nimport { selectDefaultAfter, selectGlobalPanAndZoom } from \"domains/global/selectors\"\nimport { setHashParams } from \"utils/hash-utils\"\nimport DatePickerDrop from \"./datePickerDrop\"\n\nconst ReduxDatePickerContainer = memo(({ tagging, isPlaying }) => {\n const dashboardDispatch = useDashboardDispatch()\n\n const globalPanAndZoom = useDashboardSelector(selectGlobalPanAndZoom)\n const isGlobalPanAndZoom = Boolean(globalPanAndZoom)\n\n const defaultAfter = useDashboardSelector(selectDefaultAfter)\n const pickedValues = useMemo(\n () =>\n isGlobalPanAndZoom\n ? { start: globalPanAndZoom.after, end: globalPanAndZoom.before }\n : {\n start: defaultAfter,\n end: 0,\n },\n [isGlobalPanAndZoom, globalPanAndZoom, defaultAfter]\n )\n\n function handlePickedValuesChange(params) {\n const { start, end } = params\n if (start < 0) {\n // live mode\n dashboardDispatch(\n // changes the default value, so it becomes inconsistent\n setDefaultAfterAction({\n after: start,\n })\n )\n if (isGlobalPanAndZoom) {\n dashboardDispatch(resetGlobalPanAndZoomAction())\n }\n } else {\n // global-pan-and-zoom mode\n dashboardDispatch(\n setGlobalPanAndZoomAction({\n after: start,\n before: end,\n })\n )\n }\n }\n\n useEffect(() => {\n const { start, end } = pickedValues\n setHashParams({ after: start.toString(), before: end.toString() })\n }, [pickedValues])\n return (\n \n )\n})\n\nexport default ReduxDatePickerContainer\n","import styled from \"styled-components\"\nimport { Flex, getRgbColor } from \"@netdata/netdata-ui\"\n\nconst getBackground = ({ theme, isPlaying }) => {\n const { name } = theme\n\n const background =\n name === \"Dark\"\n ? getRgbColor(isPlaying ? [\"green\", \"netdata\"] : [\"neutral\", \"tuna\"], isPlaying ? 0.3 : 1)\n : getRgbColor(isPlaying ? [\"green\", \"frostee\"] : [\"neutral\", \"blackhaze\"])\n\n return background({ theme })\n}\n\nconst Container = styled(Flex)`\n background: ${getBackground};\n`\n\nexport default Container\n","import styled from \"styled-components\"\nimport { Pill, getColor } from \"@netdata/netdata-ui\"\n\nconst getHoverColor = ({ isPlaying }) =>\n getColor(isPlaying ? [\"green\", \"chateau\"] : [\"neutral\", \"iron\"])\n\nconst StyledPill = styled(Pill).attrs(({ isPlaying }) => ({\n flavour: isPlaying ? \"success\" : \"neutral\",\n}))`\n &:hover {\n background: ${getHoverColor};\n border-color: ${getHoverColor};\n }\n`\n\nexport default StyledPill\n","import React, { useMemo } from \"react\"\nimport { useDispatch } from \"store/redux-separate-context\"\nimport { resetGlobalPauseAction, setGlobalPauseAction } from \"domains/global/actions\"\nimport Tooltip from \"@/src/components/tooltips\"\nimport StyledPill from \"./styledPill\"\n\nconst getIcon = (isPlaying, isForcePlaying) => {\n if (!isPlaying) return \"pauseSolid\"\n return isForcePlaying ? \"forcePlay\" : \"playSolid\"\n}\n\nconst PlayPausePill = ({ isPlaying, isForcePlaying }) => {\n const dispatch = useDispatch()\n\n const onPlay = () => dispatch(resetGlobalPauseAction({ forcePlay: false }))\n const onPause = () => dispatch(setGlobalPauseAction())\n const icon = useMemo(() => getIcon(isPlaying, isForcePlaying), [isPlaying, isForcePlaying])\n\n return (\n \n \n {isPlaying ? \"Playing\" : \"Paused\"}\n \n \n )\n}\n\nexport default PlayPausePill\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 \n \n {typeof icon === \"string\" ? (\n \n ) : (\n icon\n )}\n \n {children}\n \n \n {actions}\n \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
    \n {label}\n
    \n)\n\nconst ItemsList = ({ isOpen = false, toggleOpen, label, children, testid, Header }) => (\n \n \n {children}\n \n)\n\nexport default ItemsList\n","import React from \"react\"\nimport { Flex, TextSmall } from \"@netdata/netdata-ui\"\n\nconst PlayOptionsTooltip = () => (\n \n \n Play to refresh and have live content, pause to see historical, or force play to keep\n refreshing even when the tab loses focus at the expense of some system performance.\n \n \n)\n\nexport default PlayOptionsTooltip\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, { memo, Fragment } from \"react\"\nimport styled from \"styled-components\"\nimport { useToggle } from \"react-use\"\nimport { Flex, Icon, Drop } from \"@netdata/netdata-ui\"\nimport { MenuItem } from \"@/src/components/menus\"\nimport { useDispatch } from \"store/redux-separate-context\"\nimport { resetGlobalPauseAction, setGlobalPauseAction } from \"domains/global/actions\"\nimport Tooltip from \"@/src/components/tooltips\"\nimport PlayOptionsTooltip from \"./playOptionsTooltip\"\n\nconst MenuButton = styled(Flex).attrs({ padding: [1], role: \"button\" })`\n cursor: pointer;\n`\n\nconst Dropdown = styled(Flex).attrs({\n column: true,\n padding: [2],\n background: \"dropdown\",\n round: 1,\n overflow: { vertical: \"auto\" },\n margin: [2, 0, 0],\n width: 40,\n})`\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\n`\n\nconst PlayOptions = ({ target }) => {\n const dispatch = useDispatch()\n const [isOpen, toggle] = useToggle()\n\n const close = () => toggle(false)\n\n const onPlay = () => {\n dispatch(resetGlobalPauseAction({ forcePlay: false }))\n close()\n }\n\n const onPause = () => {\n dispatch(setGlobalPauseAction())\n close()\n }\n\n const onForcePlay = () => {\n dispatch(resetGlobalPauseAction({ forcePlay: true }))\n close()\n }\n\n return (\n \n {!isOpen ? (\n } align=\"bottom\" plain>\n \n \n \n \n ) : (\n \n \n \n )}\n {target.current && isOpen && (\n \n \n \n Play\n \n \n Pause\n \n \n Force Play\n \n \n \n )}\n \n )\n}\n\nconst MemoizedPlayOptions = memo(PlayOptions)\n\nexport default MemoizedPlayOptions\n","import React, { useMemo, useRef } from \"react\"\nimport { useSelector } from \"store/redux-separate-context\"\nimport {\n selectHasWindowFocus,\n selectStopUpdatesWhenFocusIsLost,\n selectGlobalPanAndZoom,\n selectGlobalPause,\n selectGlobalSelection,\n} from \"domains/global/selectors\"\nimport { ReduxDatePickerContainer } from \"components/date-picker\"\nimport Item from \"../item\"\nimport Container from \"./container\"\nimport PlayPausePill from \"./playPausePill\"\nimport PlayOptions from \"./playOptions\"\n\nconst tagging = \"global-view\"\n\nconst GlobalControls = () => {\n const ref = useRef()\n const hasWindowFocus = useSelector(selectHasWindowFocus)\n const stopUpdatesWhenFocusIsLost = useSelector(selectStopUpdatesWhenFocusIsLost)\n const globalPanAndZoom = useSelector(selectGlobalPanAndZoom)\n const hoveredX = useSelector(selectGlobalSelection)\n const globalPause = useSelector(selectGlobalPause)\n\n const isPlaying = useMemo(\n () =>\n Boolean(\n (hasWindowFocus || !stopUpdatesWhenFocusIsLost) &&\n !globalPanAndZoom &&\n !hoveredX &&\n !globalPause\n ),\n [hasWindowFocus, stopUpdatesWhenFocusIsLost, globalPanAndZoom, hoveredX, globalPause]\n )\n\n return (\n \n \n \n \n \n \n \n )\n}\n\nexport default GlobalControls\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 \n \n {children}\n \n \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\"\nimport Tooltip from \"@/src/components/tooltips\"\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 \n 1 ? \"s\" : \"\"}`\n : \"No critical alerts\"\n }\n align=\"bottom\"\n plain\n >\n \n {critical}\n \n \n 1 ? \"s\" : \"\"}` : \"No warning alerts\"\n }\n align=\"bottom\"\n plain\n >\n \n {warning}\n \n \n \n )\n}\n\nexport default Alarms\n","import React from \"react\"\nimport { Button, News as AgentNews } from \"@netdata/netdata-ui\"\nimport Tooltip from \"@/src/components/tooltips\"\n\nconst News = () => {\n return (\n \n {({ toggle, upToDate }) => (\n \n \n \n )}\n \n )\n}\n\nexport default News\n","import styled from \"styled-components\"\nimport { Flex } from \"@netdata/netdata-ui\"\n\nconst Dropdown = styled(Flex).attrs({\n column: true,\n padding: [2],\n background: \"dropdown\",\n round: 1,\n overflow: { vertical: \"auto\" },\n margin: [2, 0, 0],\n width: 80,\n})`\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\n`\n\nexport default Dropdown\n","import styled from \"styled-components\"\nimport { TextInput } from \"@netdata/netdata-ui\"\n\nconst SearchInput = styled(TextInput)`\n & input {\n background: transparent;\n }\n\n & > label {\n margin-bottom: 0;\n }\n`\nexport default SearchInput\n","import React, { forwardRef } from \"react\"\nimport SearchInput from \"./searchInput\"\n\nconst Search = forwardRef(({ value, onChange }, ref) => (\n \n))\n\nexport default Search\n","import styled from \"styled-components\"\nimport { Flex } from \"@netdata/netdata-ui\"\n\nconst Container = styled(Flex).attrs({\n column: true,\n padding: [2, 0, 0],\n overflow: { vertical: \"auto\" },\n height: { max: \"320px\" },\n})``\n\nexport default Container\n","import styled from \"styled-components\"\nimport { Flex } from \"@netdata/netdata-ui\"\n\nconst Wrapper = styled(Flex).attrs({\n justifyContent: \"between\",\n alignItems: \"center\",\n width: \"100%\",\n gap: 2,\n})``\n\nexport default Wrapper\n","import React, { useCallback } from \"react\"\nimport { Text } from \"@netdata/netdata-ui\"\nimport { MenuItem } from \"@/src/components/menus\"\nimport Wrapper from \"./wrapper\"\n\nconst OffsetItem = ({ name, offset, utc, onSelect }) => {\n const onClick = useCallback(() => onSelect(utc), [utc, onSelect])\n\n return (\n \n {name}\n \n UTC {offset}\n \n \n )\n}\n\nexport default OffsetItem\n","export const timezones = [\n {\n value: \"Dateline Standard Time\",\n abbr: \"DST\",\n text: \"International Date Line West\",\n utc: [\"Etc/GMT+12\"],\n },\n {\n value: \"UTC-11\",\n abbr: \"U\",\n text: \"Coordinated Universal Time-11\",\n utc: [\"Etc/GMT+11\", \"Pacific/Midway\", \"Pacific/Niue\", \"Pacific/Pago_Pago\"],\n },\n {\n value: \"Hawaiian Standard Time\",\n abbr: \"HST\",\n text: \"Hawaii\",\n utc: [\n \"Etc/GMT+10\",\n \"Pacific/Honolulu\",\n \"Pacific/Johnston\",\n \"Pacific/Rarotonga\",\n \"Pacific/Tahiti\",\n ],\n },\n {\n value: \"Alaskan Standard Time\",\n abbr: \"AKDT\",\n text: \"Alaska\",\n utc: [\n \"America/Anchorage\",\n \"America/Juneau\",\n \"America/Nome\",\n \"America/Sitka\",\n \"America/Yakutat\",\n ],\n },\n {\n value: \"Pacific Standard Time (Mexico)\",\n abbr: \"PDT\",\n text: \"Baja California\",\n utc: [\"America/Santa_Isabel\"],\n },\n {\n value: \"Pacific Standard Time\",\n abbr: \"PST\",\n text: \"Pacific Time (US & Canada)\",\n utc: [\n \"America/Dawson\",\n \"America/Los_Angeles\",\n \"America/Tijuana\",\n \"America/Vancouver\",\n \"America/Whitehorse\",\n \"PST8PDT\",\n ],\n },\n {\n value: \"US Mountain Standard Time\",\n abbr: \"UMST\",\n text: \"Arizona\",\n utc: [\n \"America/Creston\",\n \"America/Dawson_Creek\",\n \"America/Hermosillo\",\n \"America/Phoenix\",\n \"Etc/GMT+7\",\n ],\n },\n {\n value: \"Mountain Standard Time (Mexico)\",\n abbr: \"MDT\",\n text: \"Chihuahua, La Paz, Mazatlan\",\n utc: [\"America/Chihuahua\", \"America/Mazatlan\"],\n },\n {\n value: \"Mountain Standard Time\",\n abbr: \"MDT\",\n text: \"Mountain Time (US & Canada)\",\n utc: [\n \"America/Boise\",\n \"America/Cambridge_Bay\",\n \"America/Denver\",\n \"America/Edmonton\",\n \"America/Inuvik\",\n \"America/Ojinaga\",\n \"America/Yellowknife\",\n \"MST7MDT\",\n ],\n },\n {\n value: \"Central America Standard Time\",\n abbr: \"CAST\",\n text: \"Central America\",\n utc: [\n \"America/Belize\",\n \"America/Costa_Rica\",\n \"America/El_Salvador\",\n \"America/Guatemala\",\n \"America/Managua\",\n \"America/Tegucigalpa\",\n \"Etc/GMT+6\",\n \"Pacific/Galapagos\",\n ],\n },\n {\n value: \"Central Standard Time\",\n abbr: \"CDT\",\n text: \"Central Time (US & Canada)\",\n utc: [\n \"America/Chicago\",\n \"America/Indiana/Knox\",\n \"America/Indiana/Tell_City\",\n \"America/Matamoros\",\n \"America/Menominee\",\n \"America/North_Dakota/Beulah\",\n \"America/North_Dakota/Center\",\n \"America/North_Dakota/New_Salem\",\n \"America/Rainy_River\",\n \"America/Rankin_Inlet\",\n \"America/Resolute\",\n \"America/Winnipeg\",\n \"CST6CDT\",\n ],\n },\n {\n value: \"Central Standard Time (Mexico)\",\n abbr: \"CDT\",\n text: \"Guadalajara, Mexico City, Monterrey\",\n utc: [\n \"America/Bahia_Banderas\",\n \"America/Cancun\",\n \"America/Merida\",\n \"America/Mexico_City\",\n \"America/Monterrey\",\n ],\n },\n {\n value: \"Canada Central Standard Time\",\n abbr: \"CCST\",\n text: \"Saskatchewan\",\n utc: [\"America/Regina\", \"America/Swift_Current\"],\n },\n {\n value: \"SA Pacific Standard Time\",\n abbr: \"SPST\",\n text: \"Bogota, Lima, Quito\",\n utc: [\n \"America/Bogota\",\n \"America/Cayman\",\n \"America/Coral_Harbour\",\n \"America/Eirunepe\",\n \"America/Guayaquil\",\n \"America/Jamaica\",\n \"America/Lima\",\n \"America/Panama\",\n \"America/Rio_Branco\",\n \"Etc/GMT+5\",\n ],\n },\n {\n value: \"Eastern Standard Time\",\n abbr: \"EDT\",\n text: \"Eastern Time (US & Canada)\",\n utc: [\n \"America/Detroit\",\n \"America/Havana\",\n \"America/Indiana/Petersburg\",\n \"America/Indiana/Vincennes\",\n \"America/Indiana/Winamac\",\n \"America/Iqaluit\",\n \"America/Kentucky/Monticello\",\n \"America/Louisville\",\n \"America/Montreal\",\n \"America/Nassau\",\n \"America/New_York\",\n \"America/Nipigon\",\n \"America/Pangnirtung\",\n \"America/Port-au-Prince\",\n \"America/Thunder_Bay\",\n \"America/Toronto\",\n \"EST5EDT\",\n ],\n },\n {\n value: \"US Eastern Standard Time\",\n abbr: \"UEDT\",\n text: \"Indiana (East)\",\n utc: [\"America/Indiana/Marengo\", \"America/Indiana/Vevay\", \"America/Indianapolis\"],\n },\n {\n value: \"Venezuela Standard Time\",\n abbr: \"VST\",\n text: \"Caracas\",\n utc: [\"America/Caracas\"],\n },\n {\n value: \"Paraguay Standard Time\",\n abbr: \"PYT\",\n text: \"Asuncion\",\n utc: [\"America/Asuncion\"],\n },\n {\n value: \"Atlantic Standard Time\",\n abbr: \"ADT\",\n text: \"Atlantic Time (Canada)\",\n utc: [\n \"America/Glace_Bay\",\n \"America/Goose_Bay\",\n \"America/Halifax\",\n \"America/Moncton\",\n \"America/Thule\",\n \"Atlantic/Bermuda\",\n ],\n },\n {\n value: \"Central Brazilian Standard Time\",\n abbr: \"CBST\",\n text: \"Cuiaba\",\n utc: [\"America/Campo_Grande\", \"America/Cuiaba\"],\n },\n {\n value: \"SA Western Standard Time\",\n abbr: \"SWST\",\n text: \"Georgetown, La Paz, Manaus, San Juan\",\n utc: [\n \"America/Anguilla\",\n \"America/Antigua\",\n \"America/Aruba\",\n \"America/Barbados\",\n \"America/Blanc-Sablon\",\n \"America/Boa_Vista\",\n \"America/Curacao\",\n \"America/Dominica\",\n \"America/Grand_Turk\",\n \"America/Grenada\",\n \"America/Guadeloupe\",\n \"America/Guyana\",\n \"America/Kralendijk\",\n \"America/La_Paz\",\n \"America/Lower_Princes\",\n \"America/Manaus\",\n \"America/Marigot\",\n \"America/Martinique\",\n \"America/Montserrat\",\n \"America/Port_of_Spain\",\n \"America/Porto_Velho\",\n \"America/Puerto_Rico\",\n \"America/Santo_Domingo\",\n \"America/St_Barthelemy\",\n \"America/St_Kitts\",\n \"America/St_Lucia\",\n \"America/St_Thomas\",\n \"America/St_Vincent\",\n \"America/Tortola\",\n \"Etc/GMT+4\",\n ],\n },\n {\n value: \"Pacific SA Standard Time\",\n abbr: \"PSST\",\n text: \"Santiago\",\n utc: [\"America/Santiago\", \"Antarctica/Palmer\"],\n },\n {\n value: \"Newfoundland Standard Time\",\n abbr: \"NDT\",\n text: \"Newfoundland\",\n utc: [\"America/St_Johns\"],\n },\n {\n value: \"E. South America Standard Time\",\n abbr: \"ESAST\",\n text: \"Brasilia\",\n utc: [\"America/Sao_Paulo\"],\n },\n {\n value: \"Argentina Standard Time\",\n abbr: \"AST\",\n text: \"Buenos Aires\",\n utc: [\n \"America/Argentina/La_Rioja\",\n \"America/Argentina/Rio_Gallegos\",\n \"America/Argentina/Salta\",\n \"America/Argentina/San_Juan\",\n \"America/Argentina/San_Luis\",\n \"America/Argentina/Tucuman\",\n \"America/Argentina/Ushuaia\",\n \"America/Buenos_Aires\",\n \"America/Catamarca\",\n \"America/Cordoba\",\n \"America/Jujuy\",\n \"America/Mendoza\",\n ],\n },\n {\n value: \"SA Eastern Standard Time\",\n abbr: \"SEST\",\n text: \"Cayenne, Fortaleza\",\n utc: [\n \"America/Araguaina\",\n \"America/Belem\",\n \"America/Cayenne\",\n \"America/Fortaleza\",\n \"America/Maceio\",\n \"America/Paramaribo\",\n \"America/Recife\",\n \"America/Santarem\",\n \"Antarctica/Rothera\",\n \"Atlantic/Stanley\",\n \"Etc/GMT+3\",\n ],\n },\n {\n value: \"Greenland Standard Time\",\n abbr: \"GDT\",\n text: \"Greenland\",\n utc: [\"America/Godthab\"],\n },\n {\n value: \"Montevideo Standard Time\",\n abbr: \"MST\",\n text: \"Montevideo\",\n utc: [\"America/Montevideo\"],\n },\n {\n value: \"Bahia Standard Time\",\n abbr: \"BST\",\n text: \"Salvador\",\n utc: [\"America/Bahia\"],\n },\n {\n value: \"UTC-02\",\n abbr: \"U\",\n text: \"Coordinated Universal Time-02\",\n utc: [\"America/Noronha\", \"Atlantic/South_Georgia\", \"Etc/GMT+2\"],\n },\n {\n value: \"Mid-Atlantic Standard Time\",\n abbr: \"MDT\",\n text: \"Mid-Atlantic - Old\",\n utc: [],\n },\n {\n value: \"Azores Standard Time\",\n abbr: \"ADT\",\n text: \"Azores\",\n utc: [\"America/Scoresbysund\", \"Atlantic/Azores\"],\n },\n {\n value: \"Cape Verde Standard Time\",\n abbr: \"CVST\",\n text: \"Cape Verde Is.\",\n utc: [\"Atlantic/Cape_Verde\", \"Etc/GMT+1\"],\n },\n {\n value: \"Morocco Standard Time\",\n abbr: \"MDT\",\n text: \"Casablanca\",\n utc: [\"Africa/Casablanca\", \"Africa/El_Aaiun\"],\n },\n {\n value: \"UTC\",\n abbr: \"UTC\",\n text: \"Coordinated Universal Time\",\n utc: [\"America/Danmarkshavn\", \"Etc/GMT\"],\n },\n {\n value: \"GMT Standard Time\",\n abbr: \"GMT\",\n text: \"Edinburgh, London\",\n utc: [\"Europe/Isle_of_Man\", \"Europe/Guernsey\", \"Europe/Jersey\", \"Europe/London\"],\n },\n {\n value: \"GMT Standard Time\",\n abbr: \"GDT\",\n text: \"Dublin, Lisbon\",\n utc: [\n \"Atlantic/Canary\",\n \"Atlantic/Faeroe\",\n \"Atlantic/Madeira\",\n \"Europe/Dublin\",\n \"Europe/Lisbon\",\n ],\n },\n {\n value: \"Greenwich Standard Time\",\n abbr: \"GST\",\n text: \"Monrovia, Reykjavik\",\n utc: [\n \"Africa/Abidjan\",\n \"Africa/Accra\",\n \"Africa/Bamako\",\n \"Africa/Banjul\",\n \"Africa/Bissau\",\n \"Africa/Conakry\",\n \"Africa/Dakar\",\n \"Africa/Freetown\",\n \"Africa/Lome\",\n \"Africa/Monrovia\",\n \"Africa/Nouakchott\",\n \"Africa/Ouagadougou\",\n \"Africa/Sao_Tome\",\n \"Atlantic/Reykjavik\",\n \"Atlantic/St_Helena\",\n ],\n },\n {\n value: \"W. Europe Standard Time\",\n abbr: \"WEDT\",\n text: \"Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna\",\n utc: [\n \"Arctic/Longyearbyen\",\n \"Europe/Amsterdam\",\n \"Europe/Andorra\",\n \"Europe/Berlin\",\n \"Europe/Busingen\",\n \"Europe/Gibraltar\",\n \"Europe/Luxembourg\",\n \"Europe/Malta\",\n \"Europe/Monaco\",\n \"Europe/Oslo\",\n \"Europe/Rome\",\n \"Europe/San_Marino\",\n \"Europe/Stockholm\",\n \"Europe/Vaduz\",\n \"Europe/Vatican\",\n \"Europe/Vienna\",\n \"Europe/Zurich\",\n ],\n },\n {\n value: \"Central Europe Standard Time\",\n abbr: \"CEDT\",\n text: \"Belgrade, Bratislava, Budapest, Ljubljana, Prague\",\n utc: [\n \"Europe/Belgrade\",\n \"Europe/Bratislava\",\n \"Europe/Budapest\",\n \"Europe/Ljubljana\",\n \"Europe/Podgorica\",\n \"Europe/Prague\",\n \"Europe/Tirane\",\n ],\n },\n {\n value: \"Romance Standard Time\",\n abbr: \"RDT\",\n text: \"Brussels, Copenhagen, Madrid, Paris\",\n utc: [\"Africa/Ceuta\", \"Europe/Brussels\", \"Europe/Copenhagen\", \"Europe/Madrid\", \"Europe/Paris\"],\n },\n {\n value: \"Central European Standard Time\",\n abbr: \"CEDT\",\n text: \"Sarajevo, Skopje, Warsaw, Zagreb\",\n utc: [\"Europe/Sarajevo\", \"Europe/Skopje\", \"Europe/Warsaw\", \"Europe/Zagreb\"],\n },\n {\n value: \"W. Central Africa Standard Time\",\n abbr: \"WCAST\",\n text: \"West Central Africa\",\n utc: [\n \"Africa/Algiers\",\n \"Africa/Bangui\",\n \"Africa/Brazzaville\",\n \"Africa/Douala\",\n \"Africa/Kinshasa\",\n \"Africa/Lagos\",\n \"Africa/Libreville\",\n \"Africa/Luanda\",\n \"Africa/Malabo\",\n \"Africa/Ndjamena\",\n \"Africa/Niamey\",\n \"Africa/Porto-Novo\",\n \"Africa/Tunis\",\n \"Etc/GMT-1\",\n ],\n },\n {\n value: \"Namibia Standard Time\",\n abbr: \"NST\",\n text: \"Windhoek\",\n utc: [\"Africa/Windhoek\"],\n },\n {\n value: \"GTB Standard Time\",\n abbr: \"GDT\",\n text: \"Athens, Bucharest\",\n utc: [\"Asia/Nicosia\", \"Europe/Athens\", \"Europe/Bucharest\", \"Europe/Chisinau\"],\n },\n {\n value: \"Middle East Standard Time\",\n abbr: \"MEDT\",\n text: \"Beirut\",\n utc: [\"Asia/Beirut\"],\n },\n {\n value: \"Egypt Standard Time\",\n abbr: \"EST\",\n text: \"Cairo\",\n utc: [\"Africa/Cairo\"],\n },\n {\n value: \"Syria Standard Time\",\n abbr: \"SDT\",\n text: \"Damascus\",\n utc: [\"Asia/Damascus\"],\n },\n {\n value: \"E. Europe Standard Time\",\n abbr: \"EEDT\",\n text: \"E. Europe\",\n utc: [\n \"Asia/Nicosia\",\n \"Europe/Athens\",\n \"Europe/Bucharest\",\n \"Europe/Chisinau\",\n \"Europe/Helsinki\",\n \"Europe/Kiev\",\n \"Europe/Mariehamn\",\n \"Europe/Nicosia\",\n \"Europe/Riga\",\n \"Europe/Sofia\",\n \"Europe/Tallinn\",\n \"Europe/Uzhgorod\",\n \"Europe/Vilnius\",\n \"Europe/Zaporozhye\",\n ],\n },\n {\n value: \"South Africa Standard Time\",\n abbr: \"SAST\",\n text: \"Harare, Pretoria\",\n utc: [\n \"Africa/Blantyre\",\n \"Africa/Bujumbura\",\n \"Africa/Gaborone\",\n \"Africa/Harare\",\n \"Africa/Johannesburg\",\n \"Africa/Kigali\",\n \"Africa/Lubumbashi\",\n \"Africa/Lusaka\",\n \"Africa/Maputo\",\n \"Africa/Maseru\",\n \"Africa/Mbabane\",\n \"Etc/GMT-2\",\n ],\n },\n {\n value: \"FLE Standard Time\",\n abbr: \"FDT\",\n text: \"Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius\",\n utc: [\n \"Europe/Helsinki\",\n \"Europe/Kiev\",\n \"Europe/Mariehamn\",\n \"Europe/Riga\",\n \"Europe/Sofia\",\n \"Europe/Tallinn\",\n \"Europe/Uzhgorod\",\n \"Europe/Vilnius\",\n \"Europe/Zaporozhye\",\n ],\n },\n {\n value: \"Turkey Standard Time\",\n abbr: \"TDT\",\n text: \"Istanbul\",\n utc: [\"Europe/Istanbul\"],\n },\n {\n value: \"Israel Standard Time\",\n abbr: \"JDT\",\n text: \"Jerusalem\",\n utc: [\"Asia/Jerusalem\"],\n },\n {\n value: \"Libya Standard Time\",\n abbr: \"LST\",\n text: \"Tripoli\",\n utc: [\"Africa/Tripoli\"],\n },\n {\n value: \"Jordan Standard Time\",\n abbr: \"JST\",\n text: \"Amman\",\n utc: [\"Asia/Amman\"],\n },\n {\n value: \"Arabic Standard Time\",\n abbr: \"AST\",\n text: \"Baghdad\",\n utc: [\"Asia/Baghdad\"],\n },\n {\n value: \"Kaliningrad Standard Time\",\n abbr: \"KST\",\n text: \"Kaliningrad\",\n utc: [\"Europe/Kaliningrad\"],\n },\n {\n value: \"Arab Standard Time\",\n abbr: \"AST\",\n text: \"Kuwait, Riyadh\",\n utc: [\"Asia/Aden\", \"Asia/Bahrain\", \"Asia/Kuwait\", \"Asia/Qatar\", \"Asia/Riyadh\"],\n },\n {\n value: \"E. Africa Standard Time\",\n abbr: \"EAST\",\n text: \"Nairobi\",\n utc: [\n \"Africa/Addis_Ababa\",\n \"Africa/Asmera\",\n \"Africa/Dar_es_Salaam\",\n \"Africa/Djibouti\",\n \"Africa/Juba\",\n \"Africa/Kampala\",\n \"Africa/Khartoum\",\n \"Africa/Mogadishu\",\n \"Africa/Nairobi\",\n \"Antarctica/Syowa\",\n \"Etc/GMT-3\",\n \"Indian/Antananarivo\",\n \"Indian/Comoro\",\n \"Indian/Mayotte\",\n ],\n },\n {\n value: \"Moscow Standard Time\",\n abbr: \"MSK\",\n text: \"Moscow, St. Petersburg, Volgograd, Minsk\",\n utc: [\"Europe/Kirov\", \"Europe/Moscow\", \"Europe/Simferopol\", \"Europe/Volgograd\", \"Europe/Minsk\"],\n },\n {\n value: \"Samara Time\",\n abbr: \"SAMT\",\n text: \"Samara, Ulyanovsk, Saratov\",\n utc: [\"Europe/Astrakhan\", \"Europe/Samara\", \"Europe/Ulyanovsk\"],\n },\n {\n value: \"Iran Standard Time\",\n abbr: \"IDT\",\n text: \"Tehran\",\n utc: [\"Asia/Tehran\"],\n },\n {\n value: \"Arabian Standard Time\",\n abbr: \"AST\",\n text: \"Abu Dhabi, Muscat\",\n utc: [\"Asia/Dubai\", \"Asia/Muscat\", \"Etc/GMT-4\"],\n },\n {\n value: \"Azerbaijan Standard Time\",\n abbr: \"ADT\",\n text: \"Baku\",\n utc: [\"Asia/Baku\"],\n },\n {\n value: \"Mauritius Standard Time\",\n abbr: \"MST\",\n text: \"Port Louis\",\n utc: [\"Indian/Mahe\", \"Indian/Mauritius\", \"Indian/Reunion\"],\n },\n {\n value: \"Georgian Standard Time\",\n abbr: \"GET\",\n text: \"Tbilisi\",\n utc: [\"Asia/Tbilisi\"],\n },\n {\n value: \"Caucasus Standard Time\",\n abbr: \"CST\",\n text: \"Yerevan\",\n utc: [\"Asia/Yerevan\"],\n },\n {\n value: \"Afghanistan Standard Time\",\n abbr: \"AST\",\n text: \"Kabul\",\n utc: [\"Asia/Kabul\"],\n },\n {\n value: \"West Asia Standard Time\",\n abbr: \"WAST\",\n text: \"Ashgabat, Tashkent\",\n utc: [\n \"Antarctica/Mawson\",\n \"Asia/Aqtau\",\n \"Asia/Aqtobe\",\n \"Asia/Ashgabat\",\n \"Asia/Dushanbe\",\n \"Asia/Oral\",\n \"Asia/Samarkand\",\n \"Asia/Tashkent\",\n \"Etc/GMT-5\",\n \"Indian/Kerguelen\",\n \"Indian/Maldives\",\n ],\n },\n {\n value: \"Yekaterinburg Time\",\n abbr: \"YEKT\",\n text: \"Yekaterinburg\",\n utc: [\"Asia/Yekaterinburg\"],\n },\n {\n value: \"Pakistan Standard Time\",\n abbr: \"PKT\",\n text: \"Islamabad, Karachi\",\n utc: [\"Asia/Karachi\"],\n },\n {\n value: \"India Standard Time\",\n abbr: \"IST\",\n text: \"Chennai, Kolkata, Mumbai, New Delhi\",\n utc: [\"Asia/Kolkata\"],\n },\n {\n value: \"Sri Lanka Standard Time\",\n abbr: \"SLST\",\n text: \"Sri Jayawardenepura\",\n utc: [\"Asia/Colombo\"],\n },\n {\n value: \"Nepal Standard Time\",\n abbr: \"NST\",\n text: \"Kathmandu\",\n utc: [\"Asia/Kathmandu\"],\n },\n {\n value: \"Central Asia Standard Time\",\n abbr: \"CAST\",\n text: \"Nur-Sultan (Astana)\",\n utc: [\n \"Antarctica/Vostok\",\n \"Asia/Almaty\",\n \"Asia/Bishkek\",\n \"Asia/Qyzylorda\",\n \"Asia/Urumqi\",\n \"Etc/GMT-6\",\n \"Indian/Chagos\",\n ],\n },\n {\n value: \"Bangladesh Standard Time\",\n abbr: \"BST\",\n text: \"Dhaka\",\n utc: [\"Asia/Dhaka\", \"Asia/Thimphu\"],\n },\n {\n value: \"Myanmar Standard Time\",\n abbr: \"MST\",\n text: \"Yangon (Rangoon)\",\n utc: [\"Asia/Rangoon\", \"Indian/Cocos\"],\n },\n {\n value: \"SE Asia Standard Time\",\n abbr: \"SAST\",\n text: \"Bangkok, Hanoi, Jakarta\",\n utc: [\n \"Antarctica/Davis\",\n \"Asia/Bangkok\",\n \"Asia/Hovd\",\n \"Asia/Jakarta\",\n \"Asia/Phnom_Penh\",\n \"Asia/Pontianak\",\n \"Asia/Saigon\",\n \"Asia/Vientiane\",\n \"Etc/GMT-7\",\n \"Indian/Christmas\",\n ],\n },\n {\n value: \"N. Central Asia Standard Time\",\n abbr: \"NCAST\",\n text: \"Novosibirsk\",\n utc: [\"Asia/Novokuznetsk\", \"Asia/Novosibirsk\", \"Asia/Omsk\"],\n },\n {\n value: \"China Standard Time\",\n abbr: \"CST\",\n text: \"Beijing, Chongqing, Hong Kong, Urumqi\",\n utc: [\"Asia/Hong_Kong\", \"Asia/Macau\", \"Asia/Shanghai\"],\n },\n {\n value: \"North Asia Standard Time\",\n abbr: \"NAST\",\n text: \"Krasnoyarsk\",\n utc: [\"Asia/Krasnoyarsk\"],\n },\n {\n value: \"Singapore Standard Time\",\n abbr: \"MPST\",\n text: \"Kuala Lumpur, Singapore\",\n utc: [\n \"Asia/Brunei\",\n \"Asia/Kuala_Lumpur\",\n \"Asia/Kuching\",\n \"Asia/Makassar\",\n \"Asia/Manila\",\n \"Asia/Singapore\",\n \"Etc/GMT-8\",\n ],\n },\n {\n value: \"W. Australia Standard Time\",\n abbr: \"WAST\",\n text: \"Perth\",\n utc: [\"Antarctica/Casey\", \"Australia/Perth\"],\n },\n {\n value: \"Taipei Standard Time\",\n abbr: \"TST\",\n text: \"Taipei\",\n utc: [\"Asia/Taipei\"],\n },\n {\n value: \"Ulaanbaatar Standard Time\",\n abbr: \"UST\",\n text: \"Ulaanbaatar\",\n utc: [\"Asia/Choibalsan\", \"Asia/Ulaanbaatar\"],\n },\n {\n value: \"North Asia East Standard Time\",\n abbr: \"NAEST\",\n text: \"Irkutsk\",\n utc: [\"Asia/Irkutsk\"],\n },\n {\n value: \"Japan Standard Time\",\n abbr: \"JST\",\n text: \"Osaka, Sapporo, Tokyo\",\n utc: [\"Asia/Dili\", \"Asia/Jayapura\", \"Asia/Tokyo\", \"Etc/GMT-9\", \"Pacific/Palau\"],\n },\n {\n value: \"Korea Standard Time\",\n abbr: \"KST\",\n text: \"Seoul\",\n utc: [\"Asia/Pyongyang\", \"Asia/Seoul\"],\n },\n {\n value: \"Cen. Australia Standard Time\",\n abbr: \"CAST\",\n text: \"Adelaide\",\n utc: [\"Australia/Adelaide\", \"Australia/Broken_Hill\"],\n },\n {\n value: \"AUS Central Standard Time\",\n abbr: \"ACST\",\n text: \"Darwin\",\n utc: [\"Australia/Darwin\"],\n },\n {\n value: \"E. Australia Standard Time\",\n abbr: \"EAST\",\n text: \"Brisbane\",\n utc: [\"Australia/Brisbane\", \"Australia/Lindeman\"],\n },\n {\n value: \"AUS Eastern Standard Time\",\n abbr: \"AEST\",\n text: \"Canberra, Melbourne, Sydney\",\n utc: [\"Australia/Melbourne\", \"Australia/Sydney\"],\n },\n {\n value: \"West Pacific Standard Time\",\n abbr: \"WPST\",\n text: \"Guam, Port Moresby\",\n utc: [\n \"Antarctica/DumontDUrville\",\n \"Etc/GMT-10\",\n \"Pacific/Guam\",\n \"Pacific/Port_Moresby\",\n \"Pacific/Saipan\",\n \"Pacific/Truk\",\n ],\n },\n {\n value: \"Tasmania Standard Time\",\n abbr: \"TST\",\n text: \"Hobart\",\n utc: [\"Australia/Currie\", \"Australia/Hobart\"],\n },\n {\n value: \"Yakutsk Standard Time\",\n abbr: \"YST\",\n text: \"Yakutsk\",\n utc: [\"Asia/Chita\", \"Asia/Khandyga\", \"Asia/Yakutsk\"],\n },\n {\n value: \"Central Pacific Standard Time\",\n abbr: \"CPST\",\n text: \"Solomon Is., New Caledonia\",\n utc: [\n \"Antarctica/Macquarie\",\n \"Etc/GMT-11\",\n \"Pacific/Efate\",\n \"Pacific/Guadalcanal\",\n \"Pacific/Kosrae\",\n \"Pacific/Noumea\",\n \"Pacific/Ponape\",\n ],\n },\n {\n value: \"Vladivostok Standard Time\",\n abbr: \"VST\",\n text: \"Vladivostok\",\n utc: [\"Asia/Sakhalin\", \"Asia/Ust-Nera\", \"Asia/Vladivostok\"],\n },\n {\n value: \"New Zealand Standard Time\",\n abbr: \"NZST\",\n text: \"Auckland, Wellington\",\n utc: [\"Antarctica/McMurdo\", \"Pacific/Auckland\"],\n },\n {\n value: \"UTC+12\",\n abbr: \"U\",\n text: \"Coordinated Universal Time+12\",\n utc: [\n \"Etc/GMT-12\",\n \"Pacific/Funafuti\",\n \"Pacific/Kwajalein\",\n \"Pacific/Majuro\",\n \"Pacific/Nauru\",\n \"Pacific/Tarawa\",\n \"Pacific/Wake\",\n \"Pacific/Wallis\",\n ],\n },\n {\n value: \"Fiji Standard Time\",\n abbr: \"FST\",\n text: \"Fiji\",\n utc: [\"Pacific/Fiji\"],\n },\n {\n value: \"Magadan Standard Time\",\n abbr: \"MST\",\n text: \"Magadan\",\n utc: [\"Asia/Anadyr\", \"Asia/Kamchatka\", \"Asia/Magadan\", \"Asia/Srednekolymsk\"],\n },\n {\n value: \"Kamchatka Standard Time\",\n abbr: \"KDT\",\n text: \"Petropavlovsk-Kamchatsky - Old\",\n utc: [\"Asia/Kamchatka\"],\n },\n {\n value: \"Tonga Standard Time\",\n abbr: \"TST\",\n text: \"Nuku'alofa\",\n utc: [\"Etc/GMT-13\", \"Pacific/Enderbury\", \"Pacific/Fakaofo\", \"Pacific/Tongatapu\"],\n },\n {\n value: \"Samoa Standard Time\",\n abbr: \"SST\",\n text: \"Samoa\",\n utc: [\"Pacific/Apia\"],\n },\n]\n","import { timezones } from \"./timezones\"\n\nconst digitizeOffset = parsedOffset => {\n if (!parsedOffset) return \"+0\"\n const splitOffset = parsedOffset.split(\":\")\n return splitOffset.length > 1\n ? `${splitOffset[0]}${(splitOffset[1] / 60).toString().substr(1)}`\n : splitOffset[0]\n}\n\nconst normalizeOffset = parsedOffset => (parsedOffset ? parsedOffset.replace(\"−\", \"-\") : \"\")\n\nconst now = new Date()\nexport const timezoneList = () => {\n const memoized = {}\n return timezones.reduce((acc, timezone) => {\n const { utc } = timezone\n\n try {\n // We use 'fr' locale because it is the only one that returns back the UTC offset (dd/mm/yyyy, UTC-x) \n // so we can parse it later and digitize it.\n const dateString = new Intl.DateTimeFormat(\"fr\", {\n timeZone: utc[0],\n timeZoneName: \"short\",\n }).format(now)\n\n const [parsedOffset] = dateString.match(/[−+].+/) || []\n const normalizedOffset = normalizeOffset(parsedOffset)\n\n if (memoized[normalizedOffset])\n return acc.concat({ ...timezone, offset: memoized[normalizedOffset] })\n\n const digitizedOffset = digitizeOffset(normalizedOffset)\n\n memoized[normalizedOffset] = digitizedOffset\n return acc.concat({ ...timezone, offset: digitizedOffset })\n } catch (e) {\n return acc\n }\n }, [])\n}\n\nexport const timezonesById = timezones =>\n timezones.reduce((acc, { utc, ...timezone }) => {\n utc.forEach(item => (acc[item] = { ...timezone, utc: item }))\n return acc\n }, {})\n\nexport const getDefaultTimezone = () => {\n const dateFormat = new Intl.DateTimeFormat(\"default\", {})\n const usedOptions = dateFormat.resolvedOptions()\n return usedOptions\n}\n","import React, { useRef, useState, useEffect, useMemo, useCallback } from \"react\"\nimport { useToggle } from \"react-use\"\nimport { Drop, Flex, Text, Icon } from \"@netdata/netdata-ui\"\nimport { useDispatch, useSelector } from \"store/redux-separate-context\"\nimport { setOptionAction } from \"@/src/domains/global/actions\"\nimport { selectTimezoneSetting } from \"domains/global/selectors\"\nimport { MenuItem } from \"@/src/components/menus\"\nimport Item from \"../item\"\nimport Dropdown from \"./dropdown\"\nimport Search from \"./search\"\nimport Container from \"./container\"\nimport Wrapper from \"./wrapper\"\nimport OffsetItem from \"./offsetItem\"\nimport { getDefaultTimezone, timezoneList, timezonesById } from \"./utils\"\nimport { getHashParams } from \"utils/hash-utils\"\n\nconst timezones = timezoneList().sort((a, b) => a.offset - b.offset)\nconst byId = timezonesById(timezones)\n\nconst getTimezone = (selectedTimezone, timezoneHash) => {\n const timezone = timezoneHash\n ? timezoneHash\n : selectedTimezone === \"default\"\n ? getDefaultTimezone().timeZone\n : selectedTimezone\n\n return byId[timezone in byId ? timezone : getDefaultTimezone().timeZone] || {}\n}\n\nconst Timezone = () => {\n const [value, setValue] = useState(\"\")\n const [isOpen, toggle] = useToggle()\n\n const ref = useRef()\n const inputRef = useRef()\n\n const { updateUtcParam } = window.urlOptions\n\n useEffect(() => {\n if (!inputRef.current || !isOpen) return\n inputRef.current.focus()\n }, [isOpen])\n\n const dispatch = useDispatch()\n const selectedTimezone = useSelector(selectTimezoneSetting)\n\n const selectedOffset = useMemo(() => {\n const { utc: timezoneHash = \"\" } = getHashParams()\n const { offset = \"\", utc = \"\" } = getTimezone(selectedTimezone, timezoneHash)\n\n if (timezoneHash !== utc) updateUtcParam(utc)\n if (selectedTimezone !== utc) dispatch(setOptionAction({ key: \"timezone\", value: utc }))\n\n dispatch(setOptionAction({ key: \"utcOffset\", value: parseFloat(offset) }))\n\n return offset\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedTimezone])\n\n const zones = useMemo(() => {\n if (!value) return timezones\n return timezones.filter(\n ({ text, offset }) =>\n text.toUpperCase().includes(value.toUpperCase()) || offset.includes(value)\n )\n }, [value])\n\n const close = () => {\n toggle(false)\n setValue(\"\")\n }\n\n const onSelect = useCallback(utc => {\n updateUtcParam(utc)\n dispatch(setOptionAction({ key: \"timezone\", value: utc }))\n close()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const onChange = useCallback(e => setValue(e.target.value), [])\n\n return (\n \n \n \n \n UTC {selectedOffset}\n \n \n \n \n {ref.current && isOpen && (\n \n \n \n \n {zones.map(({ text, offset, utc }) => (\n \n ))}\n \n \n \n )}\n \n )\n}\n\nexport default Timezone\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 useUserNodeAccessMessage from \"hooks/use-user-node-access\"\nimport { selectRegistry, selectCloudBaseUrl } from \"domains/global/selectors\"\nimport { LOCAL_STORAGE_NEEDS_SYNC } from \"domains/dashboard/sagas\"\nimport { setOfflineAction } from \"@/src/domains/dashboard/actions\"\nimport { SIGN_IN_IFRAME_ID } from \"components/header/constants\"\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 useUserNodeAccessMessage()\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 (\n \n )\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\"\nimport Tooltip from \"@/src/components/tooltips\"\n\nconst SignIn = () => {\n const [signedIn] = useCheckSignInStatus()\n const cloudEnabled = useSelector(selectIsCloudEnabled)\n\n return (\n cloudEnabled && (\n \n
    \n \n {!signedIn && (\n \n {({ isRegistry, link, offline, onSignIn }) => (\n \n )}\n \n )}\n
    \n \n )\n )\n}\n\nexport default SignIn\n","import { Text, NavigationTab, Icon } from \"@netdata/netdata-ui\"\nimport React from \"react\"\n\nconst CloudTab = ({ label, active, showBorderLeft, icon, onActivate }) => {\n const handleOnActivate = () => {\n if (active) return\n if (onActivate) onActivate()\n }\n return (\n }\n fixed\n closable={false}\n showBorderLeft={showBorderLeft}\n active={active}\n >\n {label}\n \n )\n}\n\nexport default CloudTab\n","import React from \"react\"\nimport {\n Flex,\n Button,\n Box,\n Text,\n H3,\n H4,\n Modal,\n ModalContent,\n ModalBody,\n ModalHeader,\n ModalCloseButton,\n ModalFooter,\n Icon,\n} from \"@netdata/netdata-ui\"\n\nimport GoToCloud from \"components/auth/signIn\"\n\nexport const TITLE = \"Discover the free benefits of Netdata Cloud\"\n\nconst DiscoverCloudModal = ({ closeModal, text, header, handleGoToCloud, image, video }) => {\n return (\n \n \n \n \n \n

    {TITLE}:

    \n
    \n\n \n
    \n \n \n \n \n

    {header}

    \n \n \n {({ link }) => (\n \n Sign in to Netdata Cloud!\n \n }\n width=\"100%\"\n onClick={() => handleGoToCloud({ link })}\n as={Button}\n small\n data-ga={\"go-to-cloud-button\"}\n data-testid=\"cta1-button\"\n />\n )}\n \n \n
    \n {text()}\n
    \n {image && (\n \n \n \n )}\n {video && (\n \n \n \n \n \n )}\n
    \n
    \n \n
    \n
    \n )\n}\n\nexport default DiscoverCloudModal\n","import { Text } from \"@netdata/netdata-ui\"\nimport Anchor from \"@/src/components/anchor\"\nimport React from \"react\"\n\nconst TabsContentText = ({ children }) => {children}\n\nexport const TabsContent = {\n Home: {\n id: \"Home\",\n label: \"Home\",\n header: \"Home\",\n text: () => (\n \n The Home view in Netdata cloud provides summarized relevant information in an easily\n digestible display. You can see information about your nodes, data collection and retention\n stats, alerts, users and dashboards.\n \n ),\n icon: \"room_home\",\n image: \"images/home.png\",\n },\n nodeView: {\n id: \"nodeView\",\n label: \"Node View\",\n header: \"Node View\",\n text: () => (\n <>\n \n The single node view you are currently using will of course be available on Netdata Cloud\n as well. In addition, the charts and visualization on Netdata Cloud will be more flexible\n and powerful for troubleshooting than what is available on the agent.\n \n \n Netdata Cloud also comes with the Metric Correlations feature that lets you quickly find\n metrics and charts related to a particular window of interest that you want to explore\n further. By displaying the standard Netdata dashboard, filtered to show only charts that\n are relevant to the window of interest, you can get to the root cause sooner.\n \n \n ),\n icon: \"nodes_hollow\",\n image: \"images/nodeView.png\",\n },\n Overview: {\n id: \"Overview\",\n label: \"Overview\",\n header: \"Overview\",\n text: () => (\n <>\n \n The Overview tab is a great way to monitor your infrastructure using Netdata Cloud. While\n the interface might look similar to local dashboards served by an Agent, or even the\n single-node dashboards in Netdata Cloud, Overview uses composite charts. These charts\n display real-time aggregated metrics from all the nodes (or a filtered selection) in a\n given War Room.\n \n \n With Overview's composite charts, you can see your infrastructure from a single pane of\n glass, discover trends or anomalies, then drill down by grouping metrics by node and\n jumping to single-node dashboards for root cause analysis.\n \n \n Here's an example of a composite chart visualizing Disk I/O bandwidth from 5 different\n nodes in one chart.\n \n \n ),\n icon: \"room_overview\",\n image: \"images/overview.png\",\n },\n Nodes: {\n id: \"Nodes\",\n label: \"Nodes\",\n header: \"Nodes\",\n text: () => (\n \n The Nodes view in Netdata Cloud lets you see and customize key metrics from any number of\n Agent-monitored nodes and seamlessly navigate to any node's dashboard for troubleshooting\n performance issues or anomalies using Netdata's highly-granular metrics.\n \n ),\n icon: \"nodes_hollow\",\n image: \"images/nodes.jpg\",\n },\n Dashboards: {\n id: \"Dashboards\",\n label: \"Dashboards\",\n header: \"Dashboards\",\n text: () => (\n \n With Netdata Cloud, you can build new dashboards that target your infrastructure's unique\n needs. Put key metrics from any number of distributed systems in one place for a bird's eye\n view of your infrastructure.\n \n ),\n icon: \"dashboard\",\n image: \"images/dashboards.png\",\n },\n Alerts: {\n id: \"Alerts\",\n label: \"Alerts\",\n header: \"Alerts\",\n text: () => (\n \n The Alerts view gives you a high level of availability and performance information for every\n node you're monitoring with Netdata Cloud. It also offers an easy way to drill down into any\n particular alert by taking the user to the dedicated alert view from where the user can run\n metrics correlation or take further troubleshooting steps.\n \n ),\n icon: \"alarm\",\n image: \"images/alerts.jpg\",\n },\n Anomalies: {\n id: \"Anomalies\",\n label: \"Anomalies\",\n header: \"Anomaies\",\n text: () => (\n \n The Anomalies view on Netdata Cloud lets you quickly surface potentially anomalous metrics\n and charts related to a particular highlight window of interest using Anomaly Advisor.\n Anomalies are detected using per metric unsupervised machine learning running at the edge!\n \n ),\n icon: \"anomaliesLens\",\n video:\n \"https://user-images.githubusercontent.com/24860547/165943403-1acb9759-7446-4704-8955-c566d04ad7ab.mp4\",\n },\n Pricing: {\n id: \"Pricing\",\n label: \"Pricing\",\n header: \"Pricing\",\n text: () => (\n \n Netdata Cloud’s distributed architecture—with processing occurring at the individual\n nodes—enables us to add any number of users at marginal cost. Couple this with our upcoming\n paid plan with added functionality for enterprise customers, and it means we can commit to\n providing our current functionality for free, always.\n \n ),\n image: \"images/pricing.png\",\n icon: \"pricing\",\n },\n Privacy: {\n id: \"Privacy\",\n label: \"Privacy\",\n header: \"Privacy\",\n text: () => (\n <>\n \n Data privacy is very important to us. We firmly believe that your data belongs to you.\n This is why we don't store any metric data in Netdata Cloud.\n \n \n Your local installations of the Netdata Agent form the basis for the Netdata Cloud. All\n the data that you see in the web browser when using Netdata Cloud, is actually streamed\n directly from the Netdata Agent to the Netdata Cloud dashboard. The data passes through\n our systems, but it isn't stored. You can learn more about{\" \"}\n \n the Agent's security design\n {\" \"}\n design in the Agent documentation.\n \n \n However, to be able to offer the stunning visualizations and advanced functionality of\n Netdata Cloud, it does store a limited number of metadata. This metadata is ONLY available\n to Netdata and NEVER to any 3rd parties. You can learn more about what metadata is stored\n in Netdata cloud in our\n \n {\" \"}\n documentation\n \n \n \n ),\n icon: \"privacy\",\n },\n}\n","import React from \"react\"\nimport {\n Text,\n Drop,\n ModalContent,\n ModalBody,\n ModalHeader,\n ModalCloseButton,\n ModalFooter,\n Flex,\n Button,\n Box,\n H3,\n H4,\n Icon,\n} from \"@netdata/netdata-ui\"\n\nimport GoToCloud from \"components/auth/signIn\"\n\nexport const TITLE = \"Discover the free benefits of Netdata Cloud\"\n\nconst DiscoverCloudDrop = ({\n parentRef,\n isDropdownOpen,\n closeDropdown,\n text,\n header,\n handleGoToCloud,\n image,\n video,\n}) => {\n if (parentRef.current && isDropdownOpen)\n return (\n \n \n \n \n \n

    {TITLE}:

    \n
    \n\n \n
    \n \n \n \n \n

    {header}

    \n \n \n {({ link }) => (\n \n Sign in to Netdata Cloud!\n \n }\n width=\"100%\"\n onClick={() => handleGoToCloud({ link })}\n data-testid=\"cta1-button\"\n as={Button}\n small\n data-ga={\"go-to-cloud-button\"}\n />\n )}\n \n \n
    \n {text()}\n
    \n {image && (\n \n \n \n )}\n {video && (\n \n \n \n \n \n )}\n
    \n
    \n \n
    \n \n )\n\n return null\n}\n\nexport default DiscoverCloudDrop\n","import React, { useState, useRef } from \"react\"\nimport { Text, Flex, NavigationTabs } from \"@netdata/netdata-ui\"\n\nimport CloudTab from \"./cloudTab\"\nimport { TITLE } from \"./discoverCloudModal\"\n\nimport { callAll } from \"@/src/utils/utils\"\nimport { TabsContent } from \"./contants\"\n\nimport DiscoverCloudDrop from \"./discoverCloudDrop\"\n\nconst Wrapper = Flex\nconst InnerPostioner = Flex\n\nconst DiscoverCloud = () => {\n const [isModalOpen, setIsModalOpen] = useState(false)\n const [seletedModalContent, setSelectedModalContent] = useState(null)\n const dropDownParentRef = useRef()\n\n const handleOpenModal = () => {\n setIsModalOpen(true)\n }\n\n const handleCloseModal = () => {\n setIsModalOpen(false)\n }\n\n const handleGoToCloud = ({ link }) => {\n window.location.href = link\n }\n\n const handleSetModalContent = content => {\n setSelectedModalContent(content)\n }\n const handleResetModalContent = () => {\n setSelectedModalContent(null)\n }\n\n return (\n \n \n {TITLE}:\n \n \n {Object.keys(TabsContent).map((key, index) => {\n const { label, icon, id } = TabsContent[key]\n const slectedContentId = seletedModalContent ? seletedModalContent.id : null\n return (\n \n handleSetModalContent(TabsContent[key])\n )}\n />\n )\n })}\n \n \n \n \n {/* {isModalOpen && seletedModalContent && (\n \n )} */}\n \n )\n}\n\nexport default DiscoverCloud\n","import React from \"react\"\nimport styled from \"styled-components\"\nimport { Flex, Box } from \"@netdata/netdata-ui\"\nimport Node from \"./node\"\nimport Options from \"./options\"\nimport ProtoBuf from \"./protoBuf\"\nimport Version from \"./version\"\nimport GlobalControls from \"./globalControls\"\nimport Alarms from \"./alarms\"\nimport News from \"./news\"\nimport Timezone from \"./timezone\"\nimport SignIn from \"./signIn\"\nimport { CloudConnectionStatus } from \"./ACLK\"\nimport { DiscoverCloud } from \"@/src/components/discover-cloud\"\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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \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 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 \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.location.href = link\n }\n return (\n \n {({ isRegistry, link, onSignIn }) => (\n onClick(e, link) : onSignIn}>Sign in\n )}\n \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: (\n \n ),\n },\n ]\n : [{ children: }]),\n ],\n [signedIn]\n )\n\n return (\n \n \n {isOpen && (\n \n \n {menuItems.map((item, i) => {\n if (item.separator) return \n return (\n \n {item.children}\n \n )\n })}\n \n \n )}\n \n )\n}\n\nexport default UserSettings\n","import React from \"react\"\nimport { Flex, Button } from \"@netdata/netdata-ui\"\n\nconst SpacesSkeleton = () => (\n \n \n \n