{"version":3,"sources":["webpack:///./public/app/features/plugins/PluginStateInfo.tsx","webpack:///./public/app/features/dashboard/state/initDashboard.ts","webpack:///./public/app/features/dashboard/panel_editor/VizTypePickerPlugin.tsx","webpack:///./public/app/features/dashboard/panel_editor/VizTypePicker.tsx","webpack:///./public/app/core/components/FilterInput/FilterInput.tsx","webpack:///./public/app/features/dashboard/panel_editor/EditorTabBody.tsx","webpack:///./public/app/features/dashboard/panel_editor/state/actions.ts","webpack:///./node_modules/react-draggable/web/react-draggable.min.js","webpack:///./public/app/core/components/PluginHelp/PluginHelp.tsx","webpack:///./public/app/features/dashboard/dashgrid/PanelHeader/PanelHeaderCorner.tsx","webpack:///./public/app/features/dashboard/dashgrid/PanelHeader/PanelHeaderMenuItem.tsx","webpack:///./public/app/features/dashboard/dashgrid/PanelHeader/PanelHeaderMenu.tsx","webpack:///./public/app/features/dashboard/utils/getPanelMenu.ts","webpack:///./public/app/features/dashboard/dashgrid/PanelHeader/PanelHeader.tsx","webpack:///./public/app/features/dashboard/dashgrid/PanelChrome.tsx","webpack:///./public/app/features/dashboard/panel_editor/AngularPanelOptions.tsx","webpack:///./public/app/features/dashboard/panel_editor/VizPickerSearch.tsx","webpack:///./public/app/features/dashboard/panel_editor/VisualizationTab.tsx","webpack:///./public/app/features/panel/GeneralTabCtrl.ts","webpack:///./public/app/features/dashboard/panel_editor/GeneralTab.tsx","webpack:///./public/app/features/dashboard/panel_editor/state/selectors.ts","webpack:///./public/app/features/dashboard/panel_editor/PanelEditor.tsx","webpack:///./public/app/features/dashboard/dashgrid/PanelResizer.tsx","webpack:///./public/app/features/dashboard/dashgrid/PanelChromeAngular.tsx","webpack:///./public/app/features/dashboard/dashgrid/DashboardPanel.tsx","webpack:///./public/app/features/dashboard/components/Inspector/InspectHeader.tsx","webpack:///./public/app/features/dashboard/components/Inspector/PanelInspector.tsx","webpack:///./public/app/features/dashboard/panel_editor/QueryInspector.tsx","webpack:///./public/app/features/dashboard/panel_editor/DataSourceOption.tsx","webpack:///./public/app/features/dashboard/panel_editor/QueryOptions.tsx","webpack:///./public/app/features/dashboard/panel_editor/QueryEditorRows.tsx","webpack:///./public/app/features/dashboard/panel_editor/QueriesTab.tsx","webpack:///./public/app/features/alerting/StateHistory.tsx","webpack:///./public/app/features/alerting/TestRuleResult.tsx","webpack:///./public/app/features/alerting/AlertTab.tsx"],"names":["PluginStateinfo","props","text","state","PluginState","alpha","beta","getPluginStateInfoText","className","css","redirectToNewUrl","slug","dispatch","currentPath","backendSrv","getDashboardBySlug","res","newUrl","meta","url","indexOf","replace","locationUtil","stripBaseFromUrl","updateLocation","path","partial","fetchDashboard","args","getState","routeInfo","DashboardRouteInfo","Home","Normal","New","get","dashDTO","redirectUri","canSave","canShare","canStar","urlType","urlSlug","location","loaderSrv","$injector","loadDashboard","urlUid","fixUrl","dashboardUrl","getNewDashboardModelData","urlFolderId","message","dashboardInitFailed","error","console","log","initDashboard","dashboardInitFetching","setTimeout","dashboard","getModel","dashboardInitSlow","dashboardInitServices","DashboardModel","storeState","query","orgId","user","timeSrv","annotationsSrv","variableSrv","keybindingSrv","unsavedChangesSrv","dashboardSrv","init","modifiedQueries","panelId","queries","fromExplore","getConfig","featureToggles","newVariables","list","variables","length","templating","filter","v","variableAdapters","contains","type","initDashboardTemplating","processVariables","notifyApp","createErrorNotification","processRepeats","updateSubmenuVisibility","queryParams","autofitpanels","autoFitPanels","window","innerHeight","kiosk","$scope","setupDashboardBindings","err","updateQueriesWhenComingFromExplore","setCurrent","dashboardInitCompleted","data","isNew","folderId","title","panels","gridPos","x","y","w","h","parseInt","originPanelId","panelArrId","findIndex","panel","id","targets","clearDashboardQueriesToUpdateOnLoad","VizTypePickerPlugin","React","memo","isCurrent","plugin","onClick","cssClass","classNames","name","src","info","logos","small","prevProps","nextProps","VizTypePicker","pluginList","getPanelPlugins","renderVizPlugin","index","onTypeChange","current","key","getFilteredPluginList","searchQuery","regex","RegExp","item","test","filteredPluginList","this","hasResults","map","allPanels","config","Object","keys","sort","a","b","PureComponent","FilterInput","forwardRef","ref","labelClassName","inputClassName","value","unEscapeStringFromRegex","onChange","event","escapeStringForRegex","target","placeholder","EditorTabBody","onToggleToolBarView","setState","openView","isOpen","onCloseOpenView","fadeIn","activeToolbarItem","toolbarItems","find","icon","view","render","disabled","heading","onClose","children","renderToolbar","scrollTop","setScrollTop","renderButton","autoHide","updateAfterMountMs","in","duration","unmountOnExit","renderOpenView","defaultProps","refreshPanelEditor","activeTab","panelEditor","PanelEditorTabIds","Queries","hasQueriesTab","usesGraphPlugin","alertingEnabled","tabs","getPanelEditorTab","Visualization","Advanced","shift","push","Alert","panelEditorInitCompleted","changePanelEditorTab","tab","openVizPicker","t","e","module","exports","n","r","o","i","l","call","m","c","d","defineProperty","enumerable","Symbol","toStringTag","__esModule","create","bind","default","prototype","hasOwnProperty","p","s","apply","toString","isNaN","Error","concat","toUpperCase","arguments","document","documentElement","style","getOwnPropertySymbols","getOwnPropertyDescriptor","u","configurable","writable","f","g","O","D","S","P","parentNode","attachEvent","addEventListener","detachEvent","removeEventListener","clientHeight","ownerDocument","defaultView","getComputedStyle","borderTopWidth","borderBottomWidth","clientWidth","borderLeftWidth","borderRightWidth","paddingTop","paddingBottom","paddingLeft","paddingRight","body","left","top","getBoundingClientRect","clientX","scrollLeft","clientY","j","targetTouches","identifier","changedTouches","getElementById","createElement","innerHTML","getElementsByTagName","appendChild","classList","add","match","remove","selection","empty","getSelection","removeAllRanges","forEach","getOwnPropertyDescriptors","defineProperties","touchAction","bounds","right","bottom","querySelector","HTMLElement","offsetLeft","marginLeft","offsetTop","marginTop","marginRight","k","marginBottom","Math","min","max","round","axis","offsetParent","lastX","node","deltaX","deltaY","lastY","scale","findDOMNode","iterator","constructor","Array","isArray","next","done","return","TypeError","setPrototypeOf","getPrototypeOf","__proto__","ReferenceError","start","move","stop","dragging","NaN","touchIdentifier","onMouseDown","allowAnyClick","button","Node","handle","cancel","onStart","enableUserSelectHack","handleDrag","handleDragStop","preventDefault","grid","onDrag","MouseEvent","createEvent","initMouseEvent","onStop","handleDragStart","Component","cloneElement","Children","only","onTouchStart","onMouseUp","onTouchEnd","bool","nodeType","arrayOf","number","string","func","transform","join","DraggableCore","T","assign","E","dragged","slackX","slackY","Boolean","position","defaultPosition","prevPropsPosition","isElementSVG","warn","SVGElement","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","positionOffset","propertyIsEnumerable","onDragStart","onDragStop","propTypes","oneOf","oneOfType","shape","resetWarningCache","isRequired","array","object","symbol","any","element","elementType","instanceOf","objectOf","exact","checkPropTypes","PropTypes","PluginHelp","isError","isLoading","help","loadHelp","getBackendSrv","then","response","helpHtml","renderMarkdown","constructPlaceholderInfo","catch","dangerouslySetInnerHTML","__html","InfoMode","PanelHeaderCorner","getTimeSrv","getInfoMode","description","Info","links","Links","getInfoContent","markdown","interpolatedMarkdown","templateSrv","scopedVars","markedInterpolatedMarkdown","getLinks","link","idx","href","onClickError","getLocationSrv","update","inspect","InspectTab","infoMode","content","theme","placement","toLowerCase","renderCornerType","PanelHeaderMenuItem","isSubMenu","undefined","iconClassName","aria-label","e2e","pages","Dashboard","Panels","Panel","selectors","headerItems","shortcut","PanelHeaderMenu","renderItems","menu","role","menuItem","subMenu","items","getPanelMenu","angularComponent","store","edit","fullscreen","canEditPanel","sharePanel","contextSrv","hasAccessToExplore","skipDataQuery","openInNewWindow","ctrlKey","metaKey","open","navigateToExplore","getDataSourceSrv","getExploreUrl","newEdit","editPanel","duplicatePanel","copyPanel","editPanelJson","scope","getScope","panelCtrl","$$childHead","ctrl","angularMenuItems","getExtendedMenu","reactItem","click","$eval","removePanel","PanelHeader","clickCoordinates","panelMenuOpen","menuItems","eventToClickCoordinates","isClick","isEqual","onMenuToggle","stopPropagation","closeMenu","timeInfo","isFullscreen","replaceWithText","panelHeaderClass","renderLoadingState","getPanelLinksSupplier","PanelChrome","onRefresh","isInView","width","refreshWhenInView","timeData","applyPanelTimeOverrides","timeRange","wantsQueryExecution","queryRunner","getQueryRunner","querySubscription","getData","subscribe","onDataUpdate","run","datasource","dashboardId","timezone","getTimezone","widthPixels","maxDataPoints","minInterval","interval","cacheTimeout","transformations","onRender","stateUpdate","renderCounter","onOptionsChange","options","updateOptions","replaceVariables","extraVars","format","vars","onPanelError","errorMessage","panelHasLastResult","getLastResult","onChangeTimeRange","setTime","from","toUtc","to","isFirstLoad","LoadingState","NotStarted","series","DefaultTimeRange","isInEditMode","events","on","PanelEvents","refresh","panelInitialized","hasPanelSnapshot","Done","getProcessedDataFrames","snapshotData","off","unsubscribe","Loading","snapshot","frame","toDataFrameDTO","height","loading","profiler","renderingCompleted","PanelComponent","headerHeight","hasOverlayHeader","panelHeaderHeight","chromePadding","noPadding","panelPadding","panelWidth","PANEL_BORDER","innerPanelHeight","panelContentClassNames","timeZone","getOptions","transparent","request","hasTitle","containerClassNames","renderPanel","AngularPanelOptionsUnconnected","loadAngularOptions","cleanUpAngularOptions","angularOptions","destroy","angularPanelComponent","changePanelPlugin","initEditMode","onPluginTypeChange","template","editorTabs","loader","getAngularLoader","scopeProps","load","forceUpdate","elem","mapDispatchToProps","AngularPanelOptions","connect","VizPickerSearch","focus","VisualizationTab","getReactPanelOptions","clearQuery","onPanelOptionsChanged","callback","onOpenVizPicker","isVizPickerOpen","onCloseVizPicker","urlOpenVizPicker","hasBeenFocused","onSearchQueryChange","renderHelp","angularPanelCtrl","editor","pluginHelp","FadeIn","onExited","renderPanelOptions","obj2string","obj","reduce","acc","curr","GeneralTabCtrl","$watch","prop","coreModule","directive","restrict","templateUrl","controller","GeneralTab","onDataLinksChanged","component","suggestions","getPanelLinksVariableSuggestions","maxLinks","getActiveTabAndTabs","memoizeOne","panelEditorTab","UnConnectedPanelEditor","refreshFromState","onChangeTab","newType","panelEditorCleanUp","QueriesTab","AlertTab","TabItem","renderCurrentTab","PanelEditor","tabClasses","active","EditPanel","tabItems","PanelResizer","initialHeight","floor","scrollHeight","noStyles","changeHeight","sh","smallestHeight","lh","largestHeight","prevEditorHeight","editorHeight","evt","newHeight","throttledChangeHeight","throttle","trailing","isEditing","PanelChromeAngularUnconnected","onPanelRenderEvent","payload","alertState","loadAngularPanel","onPanelDataUpdate","cleanUpAngularPanel","prevState","size","getInnerPanelHeight","getInnerPanelWidth","emit","panelSizeChanged","setPanelAngularComponent","subscribeToRenderEvent","alert","PanelChromeAngular","DashboardPanelUnconnected","specialPanels","onMouseEnter","setPanelFocus","onMouseLeave","isLazy","initDashboardPanel","autoSizerStyle","editorContainerClasses","panelWrapperClass","styles","DashboardPanel","panelState","InspectHeader","onSelectTab","onToggleExpand","stats","isExpanded","useTheme","getStyles","header","actions","iconWrapper","titleWrapper","dataSources","requestTime","formatStats","tabsBar","label","stylesFactory","headerBackground","selectThemeVariant","dark","colors","gray15","light","white","spacing","md","typography","lg","sm","PanelInspector","onDismiss","drawerWidth","Data","onSelectedFrameChanged","selected","exportCsv","dataFrame","dataFrameCsv","toCSV","blob","Blob","saveAs","Date","getUTCDate","drawerHeader","last","Stats","Request","metaDS","Meta","selectedTab","processingTime","lastResult","endTime","startTime","Set","timings","dataProcessingTime","refId","q","custom","dataSource","components","MetadataInspector","choices","processed","applyFieldOverrides","fieldOptions","defaults","overrides","dataTabContent","toolbar","dataFrameSelect","downloadCsv","Button","variant","flexGrow","json","Number","EPSILON","tabContent","autoHeightMin","renderDataTab","renderMetadataInspector","renderRequestTab","renderErrorTab","renderStatsTab","QueryInspector","onPanelRefresh","dsQuery","onRequestError","onDataSourceResponse","isMocking","handleMocking","headers","transformRequest","transformResponse","paramSerializer","jsonpCallbackParam","requestId","retry","timeout","status","statusText","ok","redirected","$$config","setFormattedJson","formattedJson","getTextForClipboard","JSON","stringify","onClipboardSuccess","appEvents","AppEvents","alertSuccess","allNodesExpanded","onToggleMocking","getNrOfOpenNodes","setMockedResponse","mockedResponse","renderExpandCollapse","collapse","expand","CoreEvents","dsRequestResponse","dsRequestError","mockedData","parse","alertError","openNodes","CopyToClipboard","onSuccess","onDidRender","DataSourceOption","onBlur","tooltipInfo","tooltip","spellCheck","timeRangeValidationEvents","EventsWithValidation","rule","rangeUtil","isValidTimeSpan","emptyToNull","QueryOptions","allOptions","panelKey","onRelativeTimeChange","relativeTime","onTimeShiftChange","timeShift","onOverrideTime","emptyToNullValue","InputStatus","Valid","timeFrom","onTimeShift","onToggleTimeOverride","hideTimeOverride","onDataSourceOptionBlur","onDataSourceOptionChange","renderOptions","queryOptions","validationEvents","hideErrorMessage","checked","QueryEditorRows","onAddQuery","onChangeQueries","addQuery","onScrollBottom","onRemoveQuery","onMoveQuery","direction","_","itemIndex","QueryEditorRow","dataSourceValue","onChangeQuery","inMixedMode","mixed","datasources","getDatasourceSrv","getMetricSources","isLoadingHelp","currentDS","findCurrentDataSource","helpContent","isPickerOpen","isAddingMixed","onChangeDataSource","ExpressionDatasourceID","defaultDatasource","renderQueryInspector","onUpdateQueries","onAddQueryClick","onAddExpressionClick","expressionDatasource","newQuery","showAddButton","isSharedDashboardQuery","DataSourcePicker","renderMixedPicker","expressions","filteredDsList","ds","onAddMixedQuery","autoFocus","onMixedPickerBlur","openMenuOnFocus","onQueryChange","changeQuery","renderQueryBody","panelData","queryInspector","dsHelp","StateHistory","stateHistoryItems","clearHistory","showConfirmModal","yesText","onConfirm","post","stateModel","alertDef","getStateDisplayModel","newState","time","formatDate","getAlertAnnotationInfo","stateClass","iconClass","alertName","TestRuleResult","testRuleResponse","testRule","getSaveModelClone","UnConnectedAlertTab","validatonMessage","onAngularPanelUpdated","stateHistory","deleteAlert","btnType","text2","thresholds","renderTestRuleResult","onAddAlert","_enableAlert","digest","switchToQueryTab","renderValidationMessage","loadAlertTab","getAlertingValidationMessage","hasTransformations","model","buttonIcon","buttonTitle","severity","AppNotificationSeverity","EmptyListCTA"],"mappings":"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","file":"default~DashboardPage~SoloPanelPage.a2a620545dc45e05493f.js","sourcesContent":["import React, { FC } from 'react';\nimport { AlphaNotice } from '@grafana/ui';\nimport { PluginState } from '@grafana/data';\nimport { css } from 'emotion';\n\ninterface Props {\n state?: PluginState;\n}\n\nfunction getPluginStateInfoText(state?: PluginState): string | null {\n switch (state) {\n case PluginState.alpha:\n return 'Alpha Plugin: This plugin is a work in progress and updates may include breaking changes';\n case PluginState.beta:\n return 'Beta Plugin: There could be bugs and minor breaking changes to this plugin';\n }\n return null;\n}\n\nconst PluginStateinfo: FC = props => {\n const text = getPluginStateInfoText(props.state);\n\n if (!text) {\n return null;\n }\n\n return (\n \n );\n};\n\nexport default PluginStateinfo;\n","// Services & Utils\nimport { createErrorNotification } from 'app/core/copy/appNotification';\nimport { backendSrv } from 'app/core/services/backend_srv';\nimport { DashboardSrv } from 'app/features/dashboard/services/DashboardSrv';\nimport { DashboardLoaderSrv } from 'app/features/dashboard/services/DashboardLoaderSrv';\nimport { TimeSrv } from 'app/features/dashboard/services/TimeSrv';\nimport { AnnotationsSrv } from 'app/features/annotations/annotations_srv';\nimport { VariableSrv } from 'app/features/templating/variable_srv';\nimport { KeybindingSrv } from 'app/core/services/keybindingSrv';\n// Actions\nimport { notifyApp, updateLocation } from 'app/core/actions';\nimport locationUtil from 'app/core/utils/location_util';\nimport {\n clearDashboardQueriesToUpdateOnLoad,\n dashboardInitCompleted,\n dashboardInitFailed,\n dashboardInitFetching,\n dashboardInitServices,\n dashboardInitSlow,\n} from './reducers';\n// Types\nimport { DashboardDTO, DashboardRouteInfo, StoreState, ThunkDispatch, ThunkResult } from 'app/types';\nimport { DashboardModel } from './DashboardModel';\nimport { DataQuery } from '@grafana/data';\nimport { getConfig } from '../../../core/config';\nimport { initDashboardTemplating, processVariables } from '../../templating/state/actions';\nimport { variableAdapters } from '../../templating/adapters';\n\nexport interface InitDashboardArgs {\n $injector: any;\n $scope: any;\n urlUid?: string;\n urlSlug?: string;\n urlType?: string;\n urlFolderId?: string;\n routeInfo: DashboardRouteInfo;\n fixUrl: boolean;\n}\n\nasync function redirectToNewUrl(slug: string, dispatch: ThunkDispatch, currentPath: string) {\n const res = await backendSrv.getDashboardBySlug(slug);\n\n if (res) {\n let newUrl = res.meta.url;\n\n // fix solo route urls\n if (currentPath.indexOf('dashboard-solo') !== -1) {\n newUrl = newUrl.replace('/d/', '/d-solo/');\n }\n\n const url = locationUtil.stripBaseFromUrl(newUrl);\n dispatch(updateLocation({ path: url, partial: true, replace: true }));\n }\n}\n\nasync function fetchDashboard(\n args: InitDashboardArgs,\n dispatch: ThunkDispatch,\n getState: () => StoreState\n): Promise {\n try {\n switch (args.routeInfo) {\n case DashboardRouteInfo.Home: {\n // load home dash\n const dashDTO: DashboardDTO = await backendSrv.get('/api/dashboards/home');\n\n // if user specified a custom home dashboard redirect to that\n if (dashDTO.redirectUri) {\n const newUrl = locationUtil.stripBaseFromUrl(dashDTO.redirectUri);\n dispatch(updateLocation({ path: newUrl, replace: true }));\n return null;\n }\n\n // disable some actions on the default home dashboard\n dashDTO.meta.canSave = false;\n dashDTO.meta.canShare = false;\n dashDTO.meta.canStar = false;\n return dashDTO;\n }\n case DashboardRouteInfo.Normal: {\n // for old db routes we redirect\n if (args.urlType === 'db') {\n redirectToNewUrl(args.urlSlug, dispatch, getState().location.path);\n return null;\n }\n\n const loaderSrv: DashboardLoaderSrv = args.$injector.get('dashboardLoaderSrv');\n const dashDTO: DashboardDTO = await loaderSrv.loadDashboard(args.urlType, args.urlSlug, args.urlUid);\n\n if (args.fixUrl && dashDTO.meta.url) {\n // check if the current url is correct (might be old slug)\n const dashboardUrl = locationUtil.stripBaseFromUrl(dashDTO.meta.url);\n const currentPath = getState().location.path;\n\n if (dashboardUrl !== currentPath) {\n // replace url to not create additional history items and then return so that initDashboard below isn't executed multiple times.\n dispatch(updateLocation({ path: dashboardUrl, partial: true, replace: true }));\n return null;\n }\n }\n return dashDTO;\n }\n case DashboardRouteInfo.New: {\n return getNewDashboardModelData(args.urlFolderId);\n }\n default:\n throw { message: 'Unknown route ' + args.routeInfo };\n }\n } catch (err) {\n dispatch(dashboardInitFailed({ message: 'Failed to fetch dashboard', error: err }));\n console.log(err);\n return null;\n }\n}\n\n/**\n * This action (or saga) does everything needed to bootstrap a dashboard & dashboard model.\n * First it handles the process of fetching the dashboard, correcting the url if required (causing redirects/url updates)\n *\n * This is used both for single dashboard & solo panel routes, home & new dashboard routes.\n *\n * Then it handles the initializing of the old angular services that the dashboard components & panels still depend on\n *\n */\nexport function initDashboard(args: InitDashboardArgs): ThunkResult {\n return async (dispatch, getState) => {\n // set fetching state\n dispatch(dashboardInitFetching());\n\n // Detect slow loading / initializing and set state flag\n // This is in order to not show loading indication for fast loading dashboards as it creates blinking/flashing\n setTimeout(() => {\n if (getState().dashboard.getModel() === null) {\n dispatch(dashboardInitSlow());\n }\n }, 500);\n\n // fetch dashboard data\n const dashDTO = await fetchDashboard(args, dispatch, getState);\n\n // returns null if there was a redirect or error\n if (!dashDTO) {\n return;\n }\n\n // set initializing state\n dispatch(dashboardInitServices());\n\n // create model\n let dashboard: DashboardModel;\n try {\n dashboard = new DashboardModel(dashDTO.dashboard, dashDTO.meta);\n } catch (err) {\n dispatch(dashboardInitFailed({ message: 'Failed create dashboard model', error: err }));\n console.log(err);\n return;\n }\n\n // add missing orgId query param\n const storeState = getState();\n if (!storeState.location.query.orgId) {\n dispatch(updateLocation({ query: { orgId: storeState.user.orgId }, partial: true, replace: true }));\n }\n\n // init services\n const timeSrv: TimeSrv = args.$injector.get('timeSrv');\n const annotationsSrv: AnnotationsSrv = args.$injector.get('annotationsSrv');\n const variableSrv: VariableSrv = args.$injector.get('variableSrv');\n const keybindingSrv: KeybindingSrv = args.$injector.get('keybindingSrv');\n const unsavedChangesSrv = args.$injector.get('unsavedChangesSrv');\n const dashboardSrv: DashboardSrv = args.$injector.get('dashboardSrv');\n\n timeSrv.init(dashboard);\n annotationsSrv.init(dashboard);\n\n if (storeState.dashboard.modifiedQueries) {\n const { panelId, queries } = storeState.dashboard.modifiedQueries;\n dashboard.meta.fromExplore = !!(panelId && queries);\n }\n\n // template values service needs to initialize completely before\n // the rest of the dashboard can load\n try {\n if (!getConfig().featureToggles.newVariables) {\n await variableSrv.init(dashboard);\n }\n if (getConfig().featureToggles.newVariables) {\n const list =\n dashboard.variables.list.length > 0\n ? dashboard.variables.list\n : dashboard.templating.list.filter(v => variableAdapters.contains(v.type));\n await dispatch(initDashboardTemplating(list));\n await dispatch(processVariables());\n }\n } catch (err) {\n dispatch(notifyApp(createErrorNotification('Templating init failed', err)));\n console.log(err);\n }\n\n try {\n dashboard.processRepeats();\n dashboard.updateSubmenuVisibility();\n\n // handle auto fix experimental feature\n const queryParams = getState().location.query;\n if (queryParams.autofitpanels) {\n dashboard.autoFitPanels(window.innerHeight, queryParams.kiosk);\n }\n\n // init unsaved changes tracking\n unsavedChangesSrv.init(dashboard, args.$scope);\n keybindingSrv.setupDashboardBindings(args.$scope, dashboard);\n } catch (err) {\n dispatch(notifyApp(createErrorNotification('Dashboard init failed', err)));\n console.log(err);\n }\n\n if (storeState.dashboard.modifiedQueries) {\n const { panelId, queries } = storeState.dashboard.modifiedQueries;\n updateQueriesWhenComingFromExplore(dispatch, dashboard, panelId, queries);\n }\n\n // legacy srv state\n dashboardSrv.setCurrent(dashboard);\n\n // yay we are done\n dispatch(dashboardInitCompleted(dashboard));\n };\n}\n\nfunction getNewDashboardModelData(urlFolderId?: string): any {\n const data = {\n meta: {\n canStar: false,\n canShare: false,\n isNew: true,\n folderId: 0,\n },\n dashboard: {\n title: 'New dashboard',\n panels: [\n {\n type: 'add-panel',\n gridPos: { x: 0, y: 0, w: 12, h: 9 },\n title: 'Panel Title',\n },\n ],\n },\n };\n\n if (urlFolderId) {\n data.meta.folderId = parseInt(urlFolderId, 10);\n }\n\n return data;\n}\n\nfunction updateQueriesWhenComingFromExplore(\n dispatch: ThunkDispatch,\n dashboard: DashboardModel,\n originPanelId: number,\n queries: DataQuery[]\n) {\n const panelArrId = dashboard.panels.findIndex(panel => panel.id === originPanelId);\n\n if (panelArrId > -1) {\n dashboard.panels[panelArrId].targets = queries;\n }\n\n // Clear update state now that we're done\n dispatch(clearDashboardQueriesToUpdateOnLoad());\n}\n","import React from 'react';\nimport classNames from 'classnames';\nimport { PanelPluginMeta } from '@grafana/data';\n\ninterface Props {\n isCurrent: boolean;\n plugin: PanelPluginMeta;\n onClick: () => void;\n}\n\nconst VizTypePickerPlugin = React.memo(\n ({ isCurrent, plugin, onClick }: Props) => {\n const cssClass = classNames({\n 'viz-picker__item': true,\n 'viz-picker__item--current': isCurrent,\n });\n\n return (\n
\n
{plugin.name}
\n \n
\n );\n },\n (prevProps, nextProps) => {\n if (prevProps.isCurrent === nextProps.isCurrent) {\n return true;\n }\n return false;\n }\n);\n\nexport default VizTypePickerPlugin;\n","import React, { PureComponent } from 'react';\n\nimport config from 'app/core/config';\nimport VizTypePickerPlugin from './VizTypePickerPlugin';\nimport { EmptySearchResult } from '@grafana/ui';\nimport { PanelPluginMeta } from '@grafana/data';\n\nexport interface Props {\n current: PanelPluginMeta;\n onTypeChange: (newType: PanelPluginMeta) => void;\n searchQuery: string;\n onClose: () => void;\n}\n\nexport class VizTypePicker extends PureComponent {\n searchInput: HTMLElement;\n pluginList = this.getPanelPlugins;\n\n constructor(props: Props) {\n super(props);\n }\n\n get maxSelectedIndex() {\n const filteredPluginList = this.getFilteredPluginList();\n return filteredPluginList.length - 1;\n }\n\n get getPanelPlugins(): PanelPluginMeta[] {\n const allPanels = config.panels;\n\n return Object.keys(allPanels)\n .filter(key => allPanels[key]['hideFromList'] === false)\n .map(key => allPanels[key])\n .sort((a: PanelPluginMeta, b: PanelPluginMeta) => a.sort - b.sort);\n }\n\n renderVizPlugin = (plugin: PanelPluginMeta, index: number) => {\n const { onTypeChange } = this.props;\n const isCurrent = plugin.id === this.props.current.id;\n\n return (\n onTypeChange(plugin)} />\n );\n };\n\n getFilteredPluginList = (): PanelPluginMeta[] => {\n const { searchQuery } = this.props;\n const regex = new RegExp(searchQuery, 'i');\n const pluginList = this.pluginList;\n\n const filtered = pluginList.filter(item => {\n return regex.test(item.name);\n });\n\n return filtered;\n };\n\n render() {\n const filteredPluginList = this.getFilteredPluginList();\n const hasResults = filteredPluginList.length > 0;\n return (\n
\n
\n {hasResults ? (\n filteredPluginList.map((plugin, index) => this.renderVizPlugin(plugin, index))\n ) : (\n Could not find anything matching your query\n )}\n
\n
\n );\n }\n}\n","import React, { forwardRef } from 'react';\nimport { escapeStringForRegex, unEscapeStringFromRegex } from '@grafana/data';\n\nexport interface Props {\n value: string | undefined;\n placeholder?: string;\n labelClassName?: string;\n inputClassName?: string;\n onChange: (value: string) => void;\n}\n\nexport const FilterInput = forwardRef((props, ref) => (\n \n));\n","// Libraries\nimport React, { PureComponent } from 'react';\n\n// Components\nimport { CustomScrollbar, PanelOptionsGroup } from '@grafana/ui';\nimport { FadeIn } from 'app/core/components/Animations/FadeIn';\n\ninterface Props {\n children: JSX.Element;\n heading: string;\n renderToolbar?: () => JSX.Element;\n toolbarItems?: EditorToolbarView[];\n scrollTop?: number;\n setScrollTop?: (value: React.MouseEvent) => void;\n}\n\nexport interface EditorToolbarView {\n title?: string;\n heading?: string;\n icon?: string;\n disabled?: boolean;\n onClick?: () => void;\n render?: () => JSX.Element;\n action?: () => void;\n btnType?: 'danger';\n}\n\ninterface State {\n openView?: EditorToolbarView;\n isOpen: boolean;\n fadeIn: boolean;\n}\n\nexport class EditorTabBody extends PureComponent {\n static defaultProps: Partial = {\n toolbarItems: [],\n };\n\n constructor(props: Props) {\n super(props);\n\n this.state = {\n openView: null,\n fadeIn: false,\n isOpen: false,\n };\n }\n\n componentDidMount() {\n this.setState({ fadeIn: true });\n }\n\n onToggleToolBarView = (item: EditorToolbarView) => {\n this.setState({\n openView: item,\n isOpen: this.state.openView !== item || !this.state.isOpen,\n });\n };\n\n onCloseOpenView = () => {\n this.setState({ isOpen: false });\n };\n\n static getDerivedStateFromProps(props: Props, state: State) {\n if (state.openView) {\n const activeToolbarItem = props.toolbarItems.find(\n (item: any) => item.title === state.openView.title && item.icon === state.openView.icon\n );\n if (activeToolbarItem) {\n return {\n ...state,\n openView: activeToolbarItem,\n };\n }\n }\n return state;\n }\n\n renderButton(view: EditorToolbarView) {\n const onClick = () => {\n if (view.onClick) {\n view.onClick();\n }\n\n if (view.render) {\n this.onToggleToolBarView(view);\n }\n };\n\n return (\n
\n \n
\n );\n }\n\n renderOpenView(view: EditorToolbarView) {\n return (\n \n {view.render()}\n \n );\n }\n\n render() {\n const { children, renderToolbar, heading, toolbarItems, scrollTop, setScrollTop } = this.props;\n const { openView, fadeIn, isOpen } = this.state;\n\n return (\n <>\n
\n
\n
{heading}
\n {renderToolbar && renderToolbar()}\n
\n {toolbarItems.map(item => this.renderButton(item))}\n
\n
\n \n
\n \n {openView && this.renderOpenView(openView)}\n \n \n {children}\n \n
\n
\n
\n \n );\n }\n}\n","import { getPanelEditorTab, panelEditorInitCompleted, PanelEditorTab, PanelEditorTabIds } from './reducers';\nimport { ThunkResult } from '../../../../types';\nimport { updateLocation } from '../../../../core/actions';\n\nexport const refreshPanelEditor = (props: {\n hasQueriesTab?: boolean;\n usesGraphPlugin?: boolean;\n alertingEnabled?: boolean;\n}): ThunkResult => {\n return async (dispatch, getState) => {\n let activeTab = getState().panelEditor.activeTab || PanelEditorTabIds.Queries;\n const { hasQueriesTab, usesGraphPlugin, alertingEnabled } = props;\n\n const tabs: PanelEditorTab[] = [\n getPanelEditorTab(PanelEditorTabIds.Queries),\n getPanelEditorTab(PanelEditorTabIds.Visualization),\n getPanelEditorTab(PanelEditorTabIds.Advanced),\n ];\n\n // handle panels that do not have queries tab\n if (!hasQueriesTab) {\n // remove queries tab\n tabs.shift();\n // switch tab\n if (activeTab === PanelEditorTabIds.Queries) {\n activeTab = PanelEditorTabIds.Visualization;\n }\n }\n\n if (alertingEnabled && usesGraphPlugin) {\n tabs.push(getPanelEditorTab(PanelEditorTabIds.Alert));\n }\n\n dispatch(panelEditorInitCompleted({ activeTab, tabs }));\n };\n};\n\nexport const changePanelEditorTab = (activeTab: PanelEditorTab): ThunkResult => {\n return async dispatch => {\n dispatch(updateLocation({ query: { tab: activeTab.id, openVizPicker: null }, partial: true }));\n };\n};\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"react\"),require(\"react-dom\")):\"function\"==typeof define&&define.amd?define([\"react\",\"react-dom\"],e):\"object\"==typeof exports?exports.ReactDraggable=e(require(\"react\"),require(\"react-dom\")):t.ReactDraggable=e(t.React,t.ReactDOM)}(window,function(t,e){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=9)}([function(t,e,n){t.exports=n(11)()},function(t,e,n){\"use strict\";function r(t,e){for(var n=0,r=t.length;n0&&void 0!==arguments[0]?arguments[0]:\"transform\";if(\"undefined\"==typeof window||void 0===window.document)return\"\";var e=window.document.documentElement.style;if(t in e)return\"\";for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{})}},function(t,e,n){\"use strict\";n.d(e,\"e\",function(){return c}),n.d(e,\"g\",function(){return u}),n.d(e,\"a\",function(){return s}),n.d(e,\"b\",function(){return l}),n.d(e,\"f\",function(){return f}),n.d(e,\"c\",function(){return p}),n.d(e,\"d\",function(){return d});var r=n(1),o=n(6),a=n.n(o),i=n(2);function c(t,e,n){if(!t.props.bounds)return[e,n];var o=t.props.bounds;o=\"string\"==typeof o?o:function(t){return{left:t.left,top:t.top,right:t.right,bottom:t.bottom}}(o);var a=g(t);if(\"string\"==typeof o){var c,u=a.ownerDocument,s=u.defaultView;if(!((c=\"parent\"===o?a.parentNode:u.querySelector(o))instanceof s.HTMLElement))throw new Error('Bounds selector \"'+o+'\" could not find an element.');var l=s.getComputedStyle(a),f=s.getComputedStyle(c);o={left:-a.offsetLeft+Object(r.c)(f.paddingLeft)+Object(r.c)(l.marginLeft),top:-a.offsetTop+Object(r.c)(f.paddingTop)+Object(r.c)(l.marginTop),right:Object(i.h)(c)-Object(i.l)(a)-a.offsetLeft+Object(r.c)(f.paddingRight)-Object(r.c)(l.marginRight),bottom:Object(i.g)(c)-Object(i.k)(a)-a.offsetTop+Object(r.c)(f.paddingBottom)-Object(r.c)(l.marginBottom)}}return Object(r.e)(o.right)&&(e=Math.min(e,o.right)),Object(r.e)(o.bottom)&&(n=Math.min(n,o.bottom)),Object(r.e)(o.left)&&(e=Math.max(e,o.left)),Object(r.e)(o.top)&&(n=Math.max(n,o.top)),[e,n]}function u(t,e,n){return[Math.round(e/t[0])*t[0],Math.round(n/t[1])*t[1]]}function s(t){return\"both\"===t.props.axis||\"x\"===t.props.axis}function l(t){return\"both\"===t.props.axis||\"y\"===t.props.axis}function f(t,e,n){var r=\"number\"==typeof e?Object(i.e)(t,e):null;if(\"number\"==typeof e&&!r)return null;var o=g(n),a=n.props.offsetParent||o.offsetParent||o.ownerDocument.body;return Object(i.j)(r||t,a)}function p(t,e,n){var o=t.state,a=!Object(r.e)(o.lastX),i=g(t);return a?{node:i,deltaX:0,deltaY:0,lastX:e,lastY:n,x:e,y:n}:{node:i,deltaX:e-o.lastX,deltaY:n-o.lastY,lastX:o.lastX,lastY:o.lastY,x:e,y:n}}function d(t,e){var n=t.props.scale;return{node:e.node,x:t.state.x+e.deltaX/n,y:t.state.y+e.deltaY/n,deltaX:e.deltaX/n,deltaY:e.deltaY/n,lastX:t.state.x,lastY:t.state.y}}function g(t){var e=a.a.findDOMNode(t);if(!e)throw new Error(\": Unmounted during event!\");return e}},function(t,e,n){\"use strict\";function r(){}n.d(e,\"a\",function(){return r})},function(e,n){e.exports=t},function(t,n){t.exports=e},function(t,e,n){\"use strict\";n.r(e),n.d(e,\"default\",function(){return w});var r=n(5),o=n.n(r),a=n(0),i=n.n(a),c=n(6),u=n.n(c),s=n(2),l=n(3),f=n(1),p=n(4);function d(t){return(d=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function g(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,c=t[Symbol.iterator]();!(r=(i=c.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==c.return||c.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function b(t,e){for(var n=0;n not mounted on DragStart!\");var r=e.ownerDocument;if(!(n.props.disabled||!(t.target instanceof r.defaultView.Node)||n.props.handle&&!Object(s.i)(t.target,n.props.handle,e)||n.props.cancel&&Object(s.i)(t.target,n.props.cancel,e))){var o=Object(s.f)(t);n.setState({touchIdentifier:o});var a=Object(l.f)(t,o,h(n));if(null!=a){var i=a.x,c=a.y,f=Object(l.c)(h(n),i,c);Object(p.a)(\"DraggableCore: handleDragStart: %j\",f),Object(p.a)(\"calling\",n.props.onStart),!1!==n.props.onStart(t,f)&&(n.props.enableUserSelectHack&&Object(s.b)(r),n.setState({dragging:!0,lastX:i,lastY:c}),Object(s.a)(r,j.move,n.handleDrag),Object(s.a)(r,j.stop,n.handleDragStop))}}}),O(h(n),\"handleDrag\",function(t){\"touchmove\"===t.type&&t.preventDefault();var e=Object(l.f)(t,n.state.touchIdentifier,h(n));if(null!=e){var r=e.x,o=e.y;if(Array.isArray(n.props.grid)){var a=r-n.state.lastX,i=o-n.state.lastY,c=g(Object(l.g)(n.props.grid,a,i),2);if(a=c[0],i=c[1],!a&&!i)return;r=n.state.lastX+a,o=n.state.lastY+i}var u=Object(l.c)(h(n),r,o);if(Object(p.a)(\"DraggableCore: handleDrag: %j\",u),!1!==n.props.onDrag(t,u))n.setState({lastX:r,lastY:o});else try{n.handleDragStop(new MouseEvent(\"mouseup\"))}catch(t){var s=document.createEvent(\"MouseEvents\");s.initMouseEvent(\"mouseup\",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),n.handleDragStop(s)}}}),O(h(n),\"handleDragStop\",function(t){if(n.state.dragging){var e=Object(l.f)(t,n.state.touchIdentifier,h(n));if(null!=e){var r=e.x,o=e.y,a=Object(l.c)(h(n),r,o),i=u.a.findDOMNode(h(n));i&&n.props.enableUserSelectHack&&Object(s.n)(i.ownerDocument),Object(p.a)(\"DraggableCore: handleDragStop: %j\",a),n.setState({dragging:!1,lastX:NaN,lastY:NaN}),n.props.onStop(t,a),i&&(Object(p.a)(\"DraggableCore: Removing handlers\"),Object(s.m)(i.ownerDocument,j.move,n.handleDrag),Object(s.m)(i.ownerDocument,j.stop,n.handleDragStop))}}}),O(h(n),\"onMouseDown\",function(t){return j=v.mouse,n.handleDragStart(t)}),O(h(n),\"onMouseUp\",function(t){return j=v.mouse,n.handleDragStop(t)}),O(h(n),\"onTouchStart\",function(t){return j=v.touch,n.handleDragStart(t)}),O(h(n),\"onTouchEnd\",function(t){return j=v.touch,n.handleDragStop(t)}),n}var n,r,a;return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&m(t,e)}(e,o.a.Component),n=e,(r=[{key:\"componentWillUnmount\",value:function(){var t=u.a.findDOMNode(this);if(t){var e=t.ownerDocument;Object(s.m)(e,v.mouse.move,this.handleDrag),Object(s.m)(e,v.touch.move,this.handleDrag),Object(s.m)(e,v.mouse.stop,this.handleDragStop),Object(s.m)(e,v.touch.stop,this.handleDragStop),this.props.enableUserSelectHack&&Object(s.n)(e)}}},{key:\"render\",value:function(){return o.a.cloneElement(o.a.Children.only(this.props.children),{style:Object(s.o)(this.props.children.props.style),onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}])&&b(n.prototype,r),a&&b(n,a),e}();O(w,\"displayName\",\"DraggableCore\"),O(w,\"propTypes\",{allowAnyClick:i.a.bool,disabled:i.a.bool,enableUserSelectHack:i.a.bool,offsetParent:function(t,e){if(t[e]&&1!==t[e].nodeType)throw new Error(\"Draggable's offsetParent must be a DOM Node.\")},grid:i.a.arrayOf(i.a.number),handle:i.a.string,cancel:i.a.string,onStart:i.a.func,onDrag:i.a.func,onStop:i.a.func,onMouseDown:i.a.func,className:f.a,style:f.a,transform:f.a}),O(w,\"defaultProps\",{allowAnyClick:!1,cancel:null,disabled:!1,enableUserSelectHack:!0,offsetParent:null,handle:null,grid:null,transform:null,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){}})},function(t,e,n){var r;\n/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/!function(){\"use strict\";var n={}.hasOwnProperty;function o(){for(var t=[],e=0;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function O(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,c=t[Symbol.iterator]();!(r=(i=c.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==c.return||c.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function v(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)}return n}function j(t){for(var e=1;e, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.\"),n}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&P(t,e)}(e,o.a.Component),x(e,null,[{key:\"getDerivedStateFromProps\",value:function(t,e){var n=t.position,r=e.prevPropsPosition;return!n||r&&n.x===r.x&&n.y===r.y?null:(Object(b.a)(\"Draggable: getDerivedStateFromProps %j\",{position:n,prevPropsPosition:r}),{x:n.x,y:n.y,prevPropsPosition:j({},n)})}}]),x(e,[{key:\"componentDidMount\",value:function(){void 0!==window.SVGElement&&u.a.findDOMNode(this)instanceof window.SVGElement&&this.setState({isElementSVG:!0})}},{key:\"componentWillUnmount\",value:function(){this.setState({dragging:!1})}},{key:\"render\",value:function(){var t,e=this.props,n=(e.axis,e.bounds,e.children),r=e.defaultPosition,a=e.defaultClassName,i=e.defaultClassNameDragging,c=e.defaultClassNameDragged,u=e.position,s=e.positionOffset,d=(e.scale,m(e,[\"axis\",\"bounds\",\"children\",\"defaultPosition\",\"defaultClassName\",\"defaultClassNameDragging\",\"defaultClassNameDragged\",\"position\",\"positionOffset\",\"scale\"])),b={},y=null,O=!Boolean(u)||this.state.dragging,v=u||r,w={x:Object(p.a)(this)&&O?this.state.x:v.x,y:Object(p.b)(this)&&O?this.state.y:v.y};this.state.isElementSVG?y=Object(f.d)(w,s):b=Object(f.c)(w,s);var D=l()(n.props.className||\"\",a,(E(t={},i,this.state.dragging),E(t,c,this.state.dragged),t));return o.a.createElement(g.default,h({},d,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),o.a.cloneElement(o.a.Children.only(n),{className:D,style:j({},n.props.style,{},b),transform:y}))}}]),e}();E(T,\"displayName\",\"Draggable\"),E(T,\"propTypes\",j({},g.default.propTypes,{axis:i.a.oneOf([\"both\",\"x\",\"y\",\"none\"]),bounds:i.a.oneOfType([i.a.shape({left:i.a.number,right:i.a.number,top:i.a.number,bottom:i.a.number}),i.a.string,i.a.oneOf([!1])]),defaultClassName:i.a.string,defaultClassNameDragging:i.a.string,defaultClassNameDragged:i.a.string,defaultPosition:i.a.shape({x:i.a.number,y:i.a.number}),positionOffset:i.a.shape({x:i.a.oneOfType([i.a.number,i.a.string]),y:i.a.oneOfType([i.a.number,i.a.string])}),position:i.a.shape({x:i.a.number,y:i.a.number}),className:d.a,style:d.a,transform:d.a})),E(T,\"defaultProps\",j({},g.default.defaultProps,{axis:\"both\",bounds:!1,defaultClassName:\"react-draggable\",defaultClassNameDragging:\"react-draggable-dragging\",defaultClassNameDragged:\"react-draggable-dragged\",defaultPosition:{x:0,y:0},position:null,scale:1}))},function(t,e,n){\"use strict\";var r=n(12);function o(){}function a(){}a.resetWarningCache=o,t.exports=function(){function t(t,e,n,o,a,i){if(i!==r){var c=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw c.name=\"Invariant Violation\",c}}function e(){return t}t.isRequired=t;var n={array:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:e,element:t,elementType:t,instanceOf:e,node:t,objectOf:e,oneOf:e,oneOfType:e,shape:e,exact:e,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},function(t,e,n){\"use strict\";t.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"}])});\n//# sourceMappingURL=react-draggable.min.js.map","import React, { PureComponent } from 'react';\nimport { renderMarkdown } from '@grafana/data';\nimport { getBackendSrv } from '@grafana/runtime';\n\ninterface Props {\n plugin: {\n name: string;\n id: string;\n };\n type: string;\n}\n\ninterface State {\n isError: boolean;\n isLoading: boolean;\n help: string;\n}\n\nexport class PluginHelp extends PureComponent {\n state = {\n isError: false,\n isLoading: false,\n help: '',\n };\n\n componentDidMount(): void {\n this.loadHelp();\n }\n\n constructPlaceholderInfo() {\n return 'No plugin help or readme markdown file was found';\n }\n\n loadHelp = () => {\n const { plugin, type } = this.props;\n this.setState({ isLoading: true });\n\n getBackendSrv()\n .get(`/api/plugins/${plugin.id}/markdown/${type}`)\n .then((response: string) => {\n const helpHtml = renderMarkdown(response);\n\n if (response === '' && type === 'help') {\n this.setState({\n isError: false,\n isLoading: false,\n help: this.constructPlaceholderInfo(),\n });\n } else {\n this.setState({\n isError: false,\n isLoading: false,\n help: helpHtml,\n });\n }\n })\n .catch(() => {\n this.setState({\n isError: true,\n isLoading: false,\n });\n });\n };\n\n render() {\n const { type } = this.props;\n const { isError, isLoading, help } = this.state;\n\n if (isLoading) {\n return

Loading help...

;\n }\n\n if (isError) {\n return

'Error occurred when loading help'

;\n }\n\n if (type === 'panel_help' && help === '') {\n }\n\n return
;\n }\n}\n","import React, { Component } from 'react';\n\nimport { renderMarkdown, LinkModelSupplier, ScopedVars } from '@grafana/data';\nimport { Tooltip, PopoverContent } from '@grafana/ui';\nimport { getLocationSrv } from '@grafana/runtime';\n\nimport { PanelModel } from 'app/features/dashboard/state/PanelModel';\nimport templateSrv from 'app/features/templating/template_srv';\nimport { getTimeSrv, TimeSrv } from 'app/features/dashboard/services/TimeSrv';\nimport { InspectTab } from '../../components/Inspector/PanelInspector';\n\nenum InfoMode {\n Error = 'Error',\n Info = 'Info',\n Links = 'Links',\n}\n\ninterface Props {\n panel: PanelModel;\n title?: string;\n description?: string;\n scopedVars?: ScopedVars;\n links?: LinkModelSupplier;\n error?: string;\n}\n\nexport class PanelHeaderCorner extends Component {\n timeSrv: TimeSrv = getTimeSrv();\n\n getInfoMode = () => {\n const { panel, error } = this.props;\n if (error) {\n return InfoMode.Error;\n }\n if (!!panel.description) {\n return InfoMode.Info;\n }\n if (panel.links && panel.links.length) {\n return InfoMode.Links;\n }\n\n return undefined;\n };\n\n getInfoContent = (): JSX.Element => {\n const { panel } = this.props;\n const markdown = panel.description || '';\n const interpolatedMarkdown = templateSrv.replace(markdown, panel.scopedVars);\n const markedInterpolatedMarkdown = renderMarkdown(interpolatedMarkdown);\n const links = this.props.links && this.props.links.getLinks(panel);\n\n return (\n
\n
\n\n {links && links.length > 0 && (\n \n )}\n
\n );\n };\n\n /**\n * Open the Panel Inspector when we click on an error\n */\n onClickError = () => {\n getLocationSrv().update({ partial: true, query: { inspect: this.props.panel.id, tab: InspectTab.Error } });\n };\n\n renderCornerType(infoMode: InfoMode, content: PopoverContent, onClick?: () => void) {\n const theme = infoMode === InfoMode.Error ? 'error' : 'info';\n return (\n \n
\n \n \n
\n
\n );\n }\n\n render() {\n const { error } = this.props;\n const infoMode: InfoMode | undefined = this.getInfoMode();\n\n if (!infoMode) {\n return null;\n }\n\n if (infoMode === InfoMode.Error && error) {\n return this.renderCornerType(infoMode, error, this.onClickError);\n }\n\n if (infoMode === InfoMode.Info || infoMode === InfoMode.Links) {\n return this.renderCornerType(infoMode, this.getInfoContent);\n }\n\n return null;\n }\n}\n\nexport default PanelHeaderCorner;\n","import React, { FC } from 'react';\nimport { PanelMenuItem } from '@grafana/data';\nimport { e2e } from '@grafana/e2e';\n\ninterface Props {\n children: any;\n}\n\nexport const PanelHeaderMenuItem: FC = props => {\n const isSubMenu = props.type === 'submenu';\n const isDivider = props.type === 'divider';\n return isDivider ? (\n
  • \n ) : (\n
  • \n \n {props.iconClassName && }\n \n {props.text}\n \n {props.shortcut && {props.shortcut}}\n \n {props.children}\n
  • \n );\n};\n","import React, { PureComponent } from 'react';\nimport { PanelHeaderMenuItem } from './PanelHeaderMenuItem';\nimport { PanelMenuItem } from '@grafana/data';\n\nexport interface Props {\n items: PanelMenuItem[];\n}\n\nexport class PanelHeaderMenu extends PureComponent {\n renderItems = (menu: PanelMenuItem[], isSubMenu = false) => {\n return (\n
      \n {menu.map((menuItem, idx: number) => {\n return (\n \n {menuItem.subMenu && this.renderItems(menuItem.subMenu, true)}\n \n );\n })}\n
    \n );\n };\n\n render() {\n return
    {this.renderItems(this.props.items)}
    ;\n }\n}\n","import { updateLocation } from 'app/core/actions';\nimport { store } from 'app/store/store';\nimport config from 'app/core/config';\nimport { getDataSourceSrv, getLocationSrv, AngularComponent } from '@grafana/runtime';\nimport { PanelMenuItem } from '@grafana/data';\nimport { copyPanel, duplicatePanel, editPanelJson, removePanel, sharePanel } from 'app/features/dashboard/utils/panel';\nimport { PanelModel } from 'app/features/dashboard/state/PanelModel';\nimport { DashboardModel } from 'app/features/dashboard/state/DashboardModel';\nimport { contextSrv } from '../../../core/services/context_srv';\nimport { navigateToExplore } from '../../explore/state/actions';\nimport { getExploreUrl } from '../../../core/utils/explore';\nimport { getTimeSrv } from '../services/TimeSrv';\nimport { PanelCtrl } from '../../panel/panel_ctrl';\n\nexport function getPanelMenu(\n dashboard: DashboardModel,\n panel: PanelModel,\n angularComponent?: AngularComponent\n): PanelMenuItem[] {\n const onViewPanel = (event: React.MouseEvent) => {\n event.preventDefault();\n store.dispatch(\n updateLocation({\n query: {\n panelId: panel.id,\n edit: null,\n fullscreen: true,\n },\n partial: true,\n })\n );\n };\n\n const onEditPanel = (event: React.MouseEvent) => {\n event.preventDefault();\n store.dispatch(\n updateLocation({\n query: {\n panelId: panel.id,\n edit: true,\n fullscreen: true,\n },\n partial: true,\n })\n );\n };\n\n const onNewEditPanel = (event: React.MouseEvent) => {\n event.preventDefault();\n store.dispatch(\n updateLocation({\n query: {\n editPanel: panel.id,\n },\n partial: true,\n })\n );\n };\n\n const onSharePanel = (event: React.MouseEvent) => {\n event.preventDefault();\n sharePanel(dashboard, panel);\n };\n\n const onInspectPanel = (event: React.MouseEvent) => {\n event.preventDefault();\n getLocationSrv().update({\n partial: true,\n query: {\n inspect: panel.id,\n },\n });\n };\n\n const onMore = (event: React.MouseEvent) => {\n event.preventDefault();\n };\n\n const onDuplicatePanel = (event: React.MouseEvent) => {\n event.preventDefault();\n duplicatePanel(dashboard, panel);\n };\n\n const onCopyPanel = (event: React.MouseEvent) => {\n event.preventDefault();\n copyPanel(panel);\n };\n\n const onEditPanelJson = (event: React.MouseEvent) => {\n event.preventDefault();\n editPanelJson(dashboard, panel);\n };\n\n const onRemovePanel = (event: React.MouseEvent) => {\n event.preventDefault();\n removePanel(dashboard, panel, true);\n };\n\n const onNavigateToExplore = (event: React.MouseEvent) => {\n event.preventDefault();\n const openInNewWindow = event.ctrlKey || event.metaKey ? (url: string) => window.open(url) : undefined;\n store.dispatch(navigateToExplore(panel, { getDataSourceSrv, getTimeSrv, getExploreUrl, openInNewWindow }) as any);\n };\n\n const menu: PanelMenuItem[] = [];\n\n menu.push({\n text: 'View',\n iconClassName: 'gicon gicon-viewer',\n onClick: onViewPanel,\n shortcut: 'v',\n });\n\n if (dashboard.canEditPanel(panel)) {\n menu.push({\n text: 'Edit',\n iconClassName: 'gicon gicon-editor',\n onClick: onEditPanel,\n shortcut: 'e',\n });\n }\n\n menu.push({\n text: 'Share',\n iconClassName: 'fa fa-fw fa-share',\n onClick: onSharePanel,\n shortcut: 'p s',\n });\n\n if (contextSrv.hasAccessToExplore() && !panel.plugin.meta.skipDataQuery) {\n menu.push({\n text: 'Explore',\n iconClassName: 'gicon gicon-explore',\n shortcut: 'x',\n onClick: onNavigateToExplore,\n });\n }\n\n if (config.featureToggles.inspect) {\n menu.push({\n text: 'Inspect',\n iconClassName: 'fa fa-fw fa-info-circle',\n onClick: onInspectPanel,\n shortcut: 'p i',\n });\n }\n\n if (config.featureToggles.newEdit) {\n menu.push({\n text: 'New edit',\n iconClassName: 'gicon gicon-editor',\n onClick: onNewEditPanel,\n shortcut: 'p i',\n });\n }\n\n const subMenu: PanelMenuItem[] = [];\n\n if (!panel.fullscreen && dashboard.canEditPanel(panel)) {\n subMenu.push({\n text: 'Duplicate',\n onClick: onDuplicatePanel,\n shortcut: 'p d',\n });\n\n subMenu.push({\n text: 'Copy',\n onClick: onCopyPanel,\n });\n }\n\n subMenu.push({\n text: 'Panel JSON',\n onClick: onEditPanelJson,\n });\n\n // add old angular panel options\n if (angularComponent) {\n const scope = angularComponent.getScope();\n const panelCtrl: PanelCtrl = scope.$$childHead.ctrl;\n const angularMenuItems = panelCtrl.getExtendedMenu();\n\n for (const item of angularMenuItems) {\n const reactItem: PanelMenuItem = {\n text: item.text,\n href: item.href,\n shortcut: item.shortcut,\n };\n\n if (item.click) {\n reactItem.onClick = () => {\n scope.$eval(item.click, { ctrl: panelCtrl });\n };\n }\n\n subMenu.push(reactItem);\n }\n }\n\n menu.push({\n type: 'submenu',\n text: 'More...',\n iconClassName: 'fa fa-fw fa-cube',\n subMenu: subMenu,\n onClick: onMore,\n });\n\n if (dashboard.canEditPanel(panel)) {\n menu.push({ type: 'divider' });\n\n menu.push({\n text: 'Remove',\n iconClassName: 'fa fa-fw fa-trash',\n onClick: onRemovePanel,\n shortcut: 'p r',\n });\n }\n\n return menu;\n}\n","import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { isEqual } from 'lodash';\nimport { DataLink, ScopedVars, PanelMenuItem } from '@grafana/data';\nimport { AngularComponent } from '@grafana/runtime';\nimport { ClickOutsideWrapper } from '@grafana/ui';\nimport { e2e } from '@grafana/e2e';\n\nimport PanelHeaderCorner from './PanelHeaderCorner';\nimport { PanelHeaderMenu } from './PanelHeaderMenu';\nimport templateSrv from 'app/features/templating/template_srv';\n\nimport { DashboardModel } from 'app/features/dashboard/state/DashboardModel';\nimport { PanelModel } from 'app/features/dashboard/state/PanelModel';\nimport { getPanelLinksSupplier } from 'app/features/panel/panellinks/linkSuppliers';\nimport { getPanelMenu } from 'app/features/dashboard/utils/getPanelMenu';\n\nexport interface Props {\n panel: PanelModel;\n dashboard: DashboardModel;\n timeInfo?: string;\n title?: string;\n description?: string;\n scopedVars?: ScopedVars;\n angularComponent?: AngularComponent;\n links?: DataLink[];\n error?: string;\n isFullscreen: boolean;\n isLoading: boolean;\n}\n\ninterface ClickCoordinates {\n x: number;\n y: number;\n}\n\ninterface State {\n panelMenuOpen: boolean;\n menuItems: PanelMenuItem[];\n}\n\nexport class PanelHeader extends Component {\n clickCoordinates: ClickCoordinates = { x: 0, y: 0 };\n\n state: State = {\n panelMenuOpen: false,\n menuItems: [],\n };\n\n eventToClickCoordinates = (event: React.MouseEvent) => {\n return {\n x: event.clientX,\n y: event.clientY,\n };\n };\n\n onMouseDown = (event: React.MouseEvent) => {\n this.clickCoordinates = this.eventToClickCoordinates(event);\n };\n\n isClick = (clickCoordinates: ClickCoordinates) => {\n return isEqual(clickCoordinates, this.clickCoordinates);\n };\n\n onMenuToggle = (event: React.MouseEvent) => {\n if (!this.isClick(this.eventToClickCoordinates(event))) {\n return;\n }\n\n event.stopPropagation();\n\n const { dashboard, panel, angularComponent } = this.props;\n const menuItems = getPanelMenu(dashboard, panel, angularComponent);\n\n this.setState({\n panelMenuOpen: !this.state.panelMenuOpen,\n menuItems,\n });\n };\n\n closeMenu = () => {\n this.setState({\n panelMenuOpen: false,\n });\n };\n\n private renderLoadingState(): JSX.Element {\n return (\n
    \n \n
    \n );\n }\n\n render() {\n const { panel, timeInfo, scopedVars, error, isFullscreen, isLoading } = this.props;\n const { menuItems } = this.state;\n const title = templateSrv.replaceWithText(panel.title, scopedVars);\n\n const panelHeaderClass = classNames({\n 'panel-header': true,\n 'grid-drag-handle': !isFullscreen,\n });\n\n return (\n <>\n {isLoading && this.renderLoadingState()}\n
    \n \n \n
    \n \n \n {title} \n \n {this.state.panelMenuOpen && (\n \n \n \n )}\n {timeInfo && (\n \n {timeInfo}\n \n )}\n
    \n
    \n
    \n \n );\n }\n}\n","// Libraries\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { Unsubscribable } from 'rxjs';\n// Components\nimport { PanelHeader } from './PanelHeader/PanelHeader';\nimport { ErrorBoundary } from '@grafana/ui';\n// Utils & Services\nimport { getTimeSrv, TimeSrv } from '../services/TimeSrv';\nimport { applyPanelTimeOverrides } from 'app/features/dashboard/utils/panel';\nimport { profiler } from 'app/core/profiler';\nimport { getProcessedDataFrames } from '../state/runRequest';\nimport templateSrv from 'app/features/templating/template_srv';\nimport config from 'app/core/config';\n// Types\nimport { DashboardModel, PanelModel } from '../state';\nimport { PANEL_BORDER } from 'app/core/constants';\nimport {\n LoadingState,\n ScopedVars,\n AbsoluteTimeRange,\n DefaultTimeRange,\n toUtc,\n toDataFrameDTO,\n PanelEvents,\n PanelData,\n PanelPlugin,\n} from '@grafana/data';\n\nconst DEFAULT_PLUGIN_ERROR = 'Error in plugin';\n\nexport interface Props {\n panel: PanelModel;\n dashboard: DashboardModel;\n plugin: PanelPlugin;\n isFullscreen: boolean;\n isInView: boolean;\n isInEditMode?: boolean;\n width: number;\n height: number;\n}\n\nexport interface State {\n isFirstLoad: boolean;\n renderCounter: number;\n errorMessage?: string;\n refreshWhenInView: boolean;\n\n // Current state of all events\n data: PanelData;\n}\n\nexport class PanelChrome extends PureComponent {\n timeSrv: TimeSrv = getTimeSrv();\n querySubscription: Unsubscribable;\n\n constructor(props: Props) {\n super(props);\n\n this.state = {\n isFirstLoad: true,\n renderCounter: 0,\n refreshWhenInView: false,\n data: {\n state: LoadingState.NotStarted,\n series: [],\n timeRange: DefaultTimeRange,\n },\n };\n }\n\n componentDidMount() {\n const { panel, dashboard, isInEditMode } = this.props;\n panel.events.on(PanelEvents.refresh, this.onRefresh);\n panel.events.on(PanelEvents.render, this.onRender);\n dashboard.panelInitialized(this.props.panel);\n\n // Move snapshot data into the query response\n if (this.hasPanelSnapshot) {\n this.setState({\n data: {\n ...this.state.data,\n state: LoadingState.Done,\n series: getProcessedDataFrames(panel.snapshotData),\n },\n isFirstLoad: false,\n });\n } else {\n if (isInEditMode) {\n this.querySubscription = panel\n .getQueryRunner()\n .getData()\n .subscribe({\n next: data => this.onDataUpdate(data),\n });\n }\n\n if (!this.wantsQueryExecution) {\n this.setState({ isFirstLoad: false });\n }\n }\n }\n\n componentWillUnmount() {\n this.props.panel.events.off(PanelEvents.refresh, this.onRefresh);\n this.props.panel.events.off(PanelEvents.render, this.onRender);\n\n if (this.querySubscription) {\n this.querySubscription.unsubscribe();\n }\n }\n\n componentDidUpdate(prevProps: Props) {\n const { isInView } = this.props;\n\n // View state has changed\n if (isInView !== prevProps.isInView) {\n if (isInView) {\n // Check if we need a delayed refresh\n if (this.state.refreshWhenInView) {\n this.onRefresh();\n }\n }\n }\n }\n\n // Updates the response with information from the stream\n // The next is outside a react synthetic event so setState is not batched\n // So in this context we can only do a single call to setState\n onDataUpdate(data: PanelData) {\n if (!this.props.isInView) {\n // Ignore events when not visible.\n // The call will be repeated when the panel comes into view\n return;\n }\n\n let { isFirstLoad } = this.state;\n let errorMessage: string | undefined;\n\n switch (data.state) {\n case LoadingState.Loading:\n // Skip updating state data if it is already in loading state\n // This is to avoid rendering partial loading responses\n if (this.state.data.state === LoadingState.Loading) {\n return;\n }\n break;\n case LoadingState.Error:\n const { error } = data;\n if (error) {\n if (errorMessage !== error.message) {\n errorMessage = error.message;\n }\n }\n break;\n case LoadingState.Done:\n // If we are doing a snapshot save data in panel model\n if (this.props.dashboard.snapshot) {\n this.props.panel.snapshotData = data.series.map(frame => toDataFrameDTO(frame));\n }\n if (isFirstLoad) {\n isFirstLoad = false;\n }\n break;\n }\n\n this.setState({ isFirstLoad, errorMessage, data });\n }\n\n onRefresh = () => {\n const { panel, isInView, width } = this.props;\n if (!isInView) {\n console.log('Refresh when panel is visible', panel.id);\n this.setState({ refreshWhenInView: true });\n return;\n }\n\n const timeData = applyPanelTimeOverrides(panel, this.timeSrv.timeRange());\n\n // Issue Query\n if (this.wantsQueryExecution) {\n if (width < 0) {\n console.log('Refresh skippted, no width yet... wait till we know');\n return;\n }\n\n const queryRunner = panel.getQueryRunner();\n\n if (!this.querySubscription) {\n this.querySubscription = queryRunner.getData().subscribe({\n next: data => this.onDataUpdate(data),\n });\n }\n\n queryRunner.run({\n datasource: panel.datasource,\n queries: panel.targets,\n panelId: panel.id,\n dashboardId: this.props.dashboard.id,\n timezone: this.props.dashboard.getTimezone(),\n timeRange: timeData.timeRange,\n timeInfo: timeData.timeInfo,\n widthPixels: width,\n maxDataPoints: panel.maxDataPoints,\n minInterval: panel.interval,\n scopedVars: panel.scopedVars,\n cacheTimeout: panel.cacheTimeout,\n transformations: panel.transformations,\n });\n }\n };\n\n onRender = () => {\n const stateUpdate = { renderCounter: this.state.renderCounter + 1 };\n\n this.setState(stateUpdate);\n };\n\n onOptionsChange = (options: any) => {\n this.props.panel.updateOptions(options);\n };\n\n replaceVariables = (value: string, extraVars?: ScopedVars, format?: string) => {\n let vars = this.props.panel.scopedVars;\n if (extraVars) {\n vars = vars ? { ...vars, ...extraVars } : extraVars;\n }\n return templateSrv.replace(value, vars, format);\n };\n\n onPanelError = (message: string) => {\n if (this.state.errorMessage !== message) {\n this.setState({ errorMessage: message });\n }\n };\n\n get hasPanelSnapshot() {\n const { panel } = this.props;\n return panel.snapshotData && panel.snapshotData.length;\n }\n\n panelHasLastResult = () => {\n return !!this.props.panel.getQueryRunner().getLastResult();\n };\n\n get wantsQueryExecution() {\n return !(this.props.plugin.meta.skipDataQuery || this.hasPanelSnapshot);\n }\n\n onChangeTimeRange = (timeRange: AbsoluteTimeRange) => {\n this.timeSrv.setTime({\n from: toUtc(timeRange.from),\n to: toUtc(timeRange.to),\n });\n };\n\n renderPanel(width: number, height: number) {\n const { panel, plugin } = this.props;\n const { renderCounter, data, isFirstLoad } = this.state;\n const { theme } = config;\n\n // This is only done to increase a counter that is used by backend\n // image rendering (phantomjs/headless chrome) to know when to capture image\n const loading = data.state;\n if (loading === LoadingState.Done) {\n profiler.renderingCompleted();\n }\n\n // do not render component until we have first data\n if (isFirstLoad && (loading === LoadingState.Loading || loading === LoadingState.NotStarted)) {\n return null;\n }\n\n const PanelComponent = plugin.panel;\n const timeRange = data.timeRange || this.timeSrv.timeRange();\n\n const headerHeight = this.hasOverlayHeader() ? 0 : theme.panelHeaderHeight;\n const chromePadding = plugin.noPadding ? 0 : theme.panelPadding;\n const panelWidth = width - chromePadding * 2 - PANEL_BORDER;\n const innerPanelHeight = height - headerHeight - chromePadding * 2 - PANEL_BORDER;\n\n const panelContentClassNames = classNames({\n 'panel-content': true,\n 'panel-content--no-padding': plugin.noPadding,\n });\n\n return (\n <>\n
    \n \n
    \n \n );\n }\n\n hasOverlayHeader() {\n const { panel } = this.props;\n const { errorMessage, data } = this.state;\n\n // always show normal header if we have an error message\n if (errorMessage) {\n return false;\n }\n\n // always show normal header if we have time override\n if (data.request && data.request.timeInfo) {\n return false;\n }\n\n return !panel.hasTitle();\n }\n\n render() {\n const { dashboard, panel, isFullscreen, width, height } = this.props;\n const { errorMessage, data } = this.state;\n const { transparent } = panel;\n\n const containerClassNames = classNames({\n 'panel-container': true,\n 'panel-container--absolute': true,\n 'panel-container--transparent': transparent,\n 'panel-container--no-title': this.hasOverlayHeader(),\n });\n\n return (\n
    \n \n \n {({ error }) => {\n if (error) {\n this.onPanelError(error.message || DEFAULT_PLUGIN_ERROR);\n return null;\n }\n return this.renderPanel(width, height);\n }}\n \n
    \n );\n }\n}\n","// Libraries\nimport React, { PureComponent } from 'react';\nimport { connect, MapStateToProps, MapDispatchToProps } from 'react-redux';\n// Utils & Services\nimport { AngularComponent, getAngularLoader } from '@grafana/runtime';\n// Types\nimport { PanelModel, DashboardModel } from '../state';\nimport { PanelPlugin, PanelPluginMeta } from '@grafana/data';\nimport { PanelCtrl } from 'app/plugins/sdk';\nimport { changePanelPlugin } from '../state/actions';\nimport { StoreState } from 'app/types';\n\ninterface OwnProps {\n panel: PanelModel;\n dashboard: DashboardModel;\n plugin: PanelPlugin;\n}\n\ninterface ConnectedProps {\n angularPanelComponent: AngularComponent;\n}\n\ninterface DispatchProps {\n changePanelPlugin: typeof changePanelPlugin;\n}\n\ntype Props = OwnProps & ConnectedProps & DispatchProps;\n\nexport class AngularPanelOptionsUnconnected extends PureComponent {\n element?: HTMLElement;\n angularOptions: AngularComponent;\n\n constructor(props: Props) {\n super(props);\n }\n\n componentDidMount() {\n this.loadAngularOptions();\n }\n\n componentDidUpdate(prevProps: Props) {\n if (this.props.plugin !== prevProps.plugin) {\n this.cleanUpAngularOptions();\n }\n\n this.loadAngularOptions();\n }\n\n componentWillUnmount() {\n this.cleanUpAngularOptions();\n }\n\n cleanUpAngularOptions() {\n if (this.angularOptions) {\n this.angularOptions.destroy();\n this.angularOptions = null;\n }\n }\n\n loadAngularOptions() {\n const { panel, angularPanelComponent, changePanelPlugin } = this.props;\n\n if (!this.element || !angularPanelComponent || this.angularOptions) {\n return;\n }\n\n const scope = angularPanelComponent.getScope();\n\n // When full page reloading in edit mode the angular panel has on fully compiled & instantiated yet\n if (!scope.$$childHead) {\n setTimeout(() => {\n this.forceUpdate();\n });\n return;\n }\n\n const panelCtrl: PanelCtrl = scope.$$childHead.ctrl;\n panelCtrl.initEditMode();\n panelCtrl.onPluginTypeChange = (plugin: PanelPluginMeta) => {\n changePanelPlugin(panel, plugin.id);\n };\n\n let template = '';\n for (let i = 0; i < panelCtrl.editorTabs.length; i++) {\n template +=\n `\n
    ` +\n (i > 0\n ? `
    \n {{ctrl.editorTabs[${i}].title}}\n \n
    `\n : '') +\n `
    \n \n
    \n
    \n `;\n }\n\n const loader = getAngularLoader();\n const scopeProps = { ctrl: panelCtrl };\n\n this.angularOptions = loader.load(this.element, scopeProps, template);\n }\n\n render() {\n return
    (this.element = elem)} />;\n }\n}\n\nconst mapStateToProps: MapStateToProps = (state, props) => {\n return {\n angularPanelComponent: state.dashboard.panels[props.panel.id].angularComponent,\n };\n};\n\nconst mapDispatchToProps: MapDispatchToProps = { changePanelPlugin };\n\nexport const AngularPanelOptions = connect(mapStateToProps, mapDispatchToProps)(AngularPanelOptionsUnconnected);\n","import React, { PureComponent } from 'react';\n\nimport { FilterInput } from 'app/core/components/FilterInput/FilterInput';\nimport { PanelPluginMeta } from '@grafana/data';\n\ninterface Props {\n plugin: PanelPluginMeta;\n searchQuery: string;\n onChange: (query: string) => void;\n onClose: () => void;\n}\n\nexport class VizPickerSearch extends PureComponent {\n render() {\n const { searchQuery, onChange, onClose } = this.props;\n return (\n <>\n element && element.focus()}\n />\n \n \n );\n }\n}\n","// Libraries\nimport React, { PureComponent } from 'react';\n// Utils & Services\nimport { connect } from 'react-redux';\nimport { StoreState } from 'app/types';\nimport { updateLocation } from 'app/core/actions';\n// Components\nimport { EditorTabBody, EditorToolbarView } from './EditorTabBody';\nimport { VizTypePicker } from './VizTypePicker';\nimport { PluginHelp } from 'app/core/components/PluginHelp/PluginHelp';\nimport { FadeIn } from 'app/core/components/Animations/FadeIn';\nimport { AngularPanelOptions } from './AngularPanelOptions';\n// Types\nimport { PanelModel, DashboardModel } from '../state';\nimport { VizPickerSearch } from './VizPickerSearch';\nimport PluginStateinfo from 'app/features/plugins/PluginStateInfo';\nimport { Unsubscribable } from 'rxjs';\nimport { PanelPlugin, PanelPluginMeta, PanelData, LoadingState, DefaultTimeRange } from '@grafana/data';\n\ninterface Props {\n panel: PanelModel;\n dashboard: DashboardModel;\n plugin: PanelPlugin;\n onPluginTypeChange: (newType: PanelPluginMeta) => void;\n updateLocation: typeof updateLocation;\n urlOpenVizPicker: boolean;\n}\n\ninterface State {\n isVizPickerOpen: boolean;\n searchQuery: string;\n scrollTop: number;\n hasBeenFocused: boolean;\n data: PanelData;\n}\n\nexport class VisualizationTab extends PureComponent {\n element: HTMLElement;\n querySubscription: Unsubscribable;\n\n constructor(props: Props) {\n super(props);\n\n this.state = {\n isVizPickerOpen: this.props.urlOpenVizPicker,\n hasBeenFocused: false,\n searchQuery: '',\n scrollTop: 0,\n data: {\n state: LoadingState.NotStarted,\n series: [],\n timeRange: DefaultTimeRange,\n },\n };\n }\n\n getReactPanelOptions = () => {\n const { panel } = this.props;\n return panel.getOptions();\n };\n\n renderPanelOptions() {\n const { plugin, dashboard, panel } = this.props;\n\n if (plugin.angularPanelCtrl) {\n return ;\n }\n\n if (plugin.editor) {\n return (\n \n );\n }\n\n return

    Visualization has no options

    ;\n }\n\n componentDidMount() {\n const { panel } = this.props;\n const queryRunner = panel.getQueryRunner();\n\n this.querySubscription = queryRunner.getData().subscribe({\n next: (data: PanelData) => this.setState({ data }),\n });\n }\n\n componentWillUnmount() {\n if (this.querySubscription) {\n this.querySubscription.unsubscribe();\n }\n }\n\n clearQuery = () => {\n this.setState({ searchQuery: '' });\n };\n\n onPanelOptionsChanged = (options: any, callback?: () => void) => {\n this.props.panel.updateOptions(options);\n this.forceUpdate(callback);\n };\n\n onOpenVizPicker = () => {\n this.setState({ isVizPickerOpen: true, scrollTop: 0 });\n };\n\n onCloseVizPicker = () => {\n if (this.props.urlOpenVizPicker) {\n this.props.updateLocation({ query: { openVizPicker: null }, partial: true });\n }\n\n this.setState({ isVizPickerOpen: false, hasBeenFocused: false });\n };\n\n onSearchQueryChange = (value: string) => {\n this.setState({\n searchQuery: value,\n });\n };\n\n renderToolbar = (): JSX.Element => {\n const { plugin } = this.props;\n const { isVizPickerOpen, searchQuery } = this.state;\n const { meta } = plugin;\n\n if (isVizPickerOpen) {\n return (\n \n );\n } else {\n return (\n <>\n
    \n \n
    {meta.name}
    \n \n
    \n \n \n );\n }\n };\n\n onPluginTypeChange = (plugin: PanelPluginMeta) => {\n if (plugin.id === this.props.plugin.meta.id) {\n this.setState({ isVizPickerOpen: false });\n } else {\n this.props.onPluginTypeChange(plugin);\n }\n };\n\n renderHelp = () => ;\n\n setScrollTop = (event: React.MouseEvent) => {\n const target = event.target as HTMLElement;\n this.setState({ scrollTop: target.scrollTop });\n };\n\n render() {\n const { plugin } = this.props;\n const { isVizPickerOpen, searchQuery, scrollTop } = this.state;\n const { meta } = plugin;\n\n const pluginHelp: EditorToolbarView = {\n heading: 'Help',\n icon: 'fa fa-question',\n render: this.renderHelp,\n };\n\n return (\n \n <>\n \n \n \n {this.renderPanelOptions()}\n \n \n );\n }\n}\n\nconst mapStateToProps = (state: StoreState) => ({\n urlOpenVizPicker: !!state.location.query.openVizPicker,\n});\n\nconst mapDispatchToProps = {\n updateLocation,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(VisualizationTab);\n","import coreModule from 'app/core/core_module';\n\nconst obj2string = (obj: any) => {\n return Object.keys(obj)\n .reduce((acc, curr) => acc.concat(curr + '=' + obj[curr]), [])\n .join();\n};\n\nexport class GeneralTabCtrl {\n panelCtrl: any;\n\n /** @ngInject */\n constructor($scope: any) {\n this.panelCtrl = $scope.ctrl;\n\n const updatePanel = () => {\n console.log('panel.render()');\n this.panelCtrl.panel.render();\n };\n\n const generateValueFromPanel = (scope: any) => {\n const { panel } = scope.ctrl;\n const panelPropsToTrack = ['title', 'description', 'transparent', 'repeat', 'repeatDirection', 'minSpan'];\n const panelPropsString = panelPropsToTrack\n .map(prop => prop + '=' + (panel[prop] && panel[prop].toString ? panel[prop].toString() : panel[prop]))\n .join();\n const panelLinks = panel.links || [];\n const panelLinksString = panelLinks.map(obj2string).join();\n return panelPropsString + panelLinksString;\n };\n\n $scope.$watch(generateValueFromPanel, updatePanel, true);\n }\n}\n\n/** @ngInject */\nexport function generalTab() {\n 'use strict';\n return {\n restrict: 'E',\n templateUrl: 'public/app/features/panel/partials/general_tab.html',\n controller: GeneralTabCtrl,\n };\n}\n\ncoreModule.directive('panelGeneralTab', generalTab);\n","// Libraries\nimport React, { PureComponent } from 'react';\n\n// Components\nimport { getAngularLoader, AngularComponent } from '@grafana/runtime';\nimport { EditorTabBody } from './EditorTabBody';\nimport './../../panel/GeneralTabCtrl';\n\n// Types\nimport { PanelModel } from '../state/PanelModel';\nimport { DataLink } from '@grafana/data';\nimport { PanelOptionsGroup, DataLinksEditor } from '@grafana/ui';\nimport { getPanelLinksVariableSuggestions } from 'app/features/panel/panellinks/link_srv';\n\ninterface Props {\n panel: PanelModel;\n}\n\nexport class GeneralTab extends PureComponent {\n element: any;\n component: AngularComponent;\n\n constructor(props: Props) {\n super(props);\n }\n\n componentDidMount() {\n if (!this.element) {\n return;\n }\n\n const { panel } = this.props;\n\n const loader = getAngularLoader();\n const template = '';\n const scopeProps = {\n ctrl: {\n panel: panel,\n },\n };\n\n this.component = loader.load(this.element, scopeProps, template);\n }\n\n componentWillUnmount() {\n if (this.component) {\n this.component.destroy();\n }\n }\n\n onDataLinksChanged = (links: DataLink[], callback?: () => void) => {\n this.props.panel.links = links;\n this.props.panel.render();\n this.forceUpdate(callback);\n };\n\n render() {\n const { panel } = this.props;\n const suggestions = getPanelLinksVariableSuggestions();\n\n return (\n \n <>\n
    (this.element = element)} />\n \n \n \n \n \n );\n }\n}\n","import memoizeOne from 'memoize-one';\nimport { LocationState } from '../../../../types';\nimport { PanelEditorState, PanelEditorTabIds } from './reducers';\n\nexport const getActiveTabAndTabs = memoizeOne((location: LocationState, panelEditor: PanelEditorState) => {\n const panelEditorTab = panelEditor.tabs.length > 0 ? panelEditor.tabs[0].id : PanelEditorTabIds.Queries;\n return {\n activeTab: location.query.tab || panelEditorTab,\n tabs: panelEditor.tabs,\n };\n});\n","import React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { connect } from 'react-redux';\nimport { Tooltip } from '@grafana/ui';\nimport { PanelPlugin, PanelPluginMeta } from '@grafana/data';\nimport { config } from '@grafana/runtime';\nimport { e2e } from '@grafana/e2e';\n\nimport { QueriesTab } from './QueriesTab';\nimport VisualizationTab from './VisualizationTab';\nimport { GeneralTab } from './GeneralTab';\nimport { AlertTab } from '../../alerting/AlertTab';\nimport { PanelModel } from '../state/PanelModel';\nimport { DashboardModel } from '../state/DashboardModel';\nimport { StoreState } from '../../../types';\nimport { panelEditorCleanUp, PanelEditorTab, PanelEditorTabIds } from './state/reducers';\nimport { changePanelEditorTab, refreshPanelEditor } from './state/actions';\nimport { changePanelPlugin } from '../state/actions';\nimport { getActiveTabAndTabs } from './state/selectors';\n\ninterface PanelEditorProps {\n panel: PanelModel;\n dashboard: DashboardModel;\n plugin: PanelPlugin;\n activeTab: PanelEditorTabIds;\n tabs: PanelEditorTab[];\n refreshPanelEditor: typeof refreshPanelEditor;\n panelEditorCleanUp: typeof panelEditorCleanUp;\n changePanelEditorTab: typeof changePanelEditorTab;\n changePanelPlugin: typeof changePanelPlugin;\n}\n\nclass UnConnectedPanelEditor extends PureComponent {\n constructor(props: PanelEditorProps) {\n super(props);\n }\n\n componentDidMount(): void {\n this.refreshFromState();\n }\n\n componentWillUnmount(): void {\n const { panelEditorCleanUp } = this.props;\n panelEditorCleanUp();\n }\n\n refreshFromState = (meta?: PanelPluginMeta) => {\n const { refreshPanelEditor, plugin } = this.props;\n meta = meta || plugin.meta;\n\n refreshPanelEditor({\n hasQueriesTab: !meta.skipDataQuery,\n usesGraphPlugin: meta.id === 'graph',\n alertingEnabled: config.alertingEnabled,\n });\n };\n\n onChangeTab = (tab: PanelEditorTab) => {\n const { changePanelEditorTab } = this.props;\n // Angular Query Components can potentially refresh the PanelModel\n // onBlur so this makes sure we change tab after that\n setTimeout(() => changePanelEditorTab(tab), 10);\n };\n\n onPluginTypeChange = (newType: PanelPluginMeta) => {\n this.props.changePanelPlugin(this.props.panel, newType.id);\n this.refreshFromState(newType);\n };\n\n renderCurrentTab(activeTab: string) {\n const { panel, dashboard, plugin } = this.props;\n switch (activeTab) {\n case 'advanced':\n return ;\n case 'queries':\n return ;\n case 'alert':\n return ;\n case 'visualization':\n return (\n \n );\n default:\n return null;\n }\n }\n\n render() {\n const { activeTab, tabs } = this.props;\n\n return (\n
    \n
    \n {tabs.map(tab => {\n return ;\n })}\n
    \n
    {this.renderCurrentTab(activeTab)}
    \n
    \n );\n }\n}\n\nconst mapStateToProps = (state: StoreState) => getActiveTabAndTabs(state.location, state.panelEditor);\nconst mapDispatchToProps = { refreshPanelEditor, panelEditorCleanUp, changePanelEditorTab, changePanelPlugin };\n\nexport const PanelEditor = connect(mapStateToProps, mapDispatchToProps)(UnConnectedPanelEditor);\n\ninterface TabItemParams {\n tab: PanelEditorTab;\n activeTab: string;\n onClick: (tab: PanelEditorTab) => void;\n}\n\nfunction TabItem({ tab, activeTab, onClick }: TabItemParams) {\n const tabClasses = classNames({\n 'panel-editor-tabs__link': true,\n active: activeTab === tab.id,\n });\n\n return (\n
    onClick(tab)}>\n \n \n \n \n \n
    \n );\n}\n","import React, { PureComponent } from 'react';\nimport { throttle } from 'lodash';\nimport Draggable, { DraggableEventHandler } from 'react-draggable';\n\nimport { PanelModel } from '../state/PanelModel';\n\ninterface Props {\n isEditing: boolean;\n render: (styles: object) => JSX.Element;\n panel: PanelModel;\n}\n\ninterface State {\n editorHeight: number;\n}\n\nexport class PanelResizer extends PureComponent {\n initialHeight: number = Math.floor(document.documentElement.scrollHeight * 0.3);\n prevEditorHeight: number;\n throttledChangeHeight: (height: number) => void;\n throttledResizeDone: () => void;\n noStyles: object = {};\n\n constructor(props: Props) {\n super(props);\n\n this.state = {\n editorHeight: this.initialHeight,\n };\n\n this.throttledChangeHeight = throttle(this.changeHeight, 20, { trailing: true });\n }\n\n get largestHeight() {\n return document.documentElement.scrollHeight * 0.9;\n }\n get smallestHeight() {\n return 100;\n }\n\n changeHeight = (height: number) => {\n const sh = this.smallestHeight;\n const lh = this.largestHeight;\n height = height < sh ? sh : height;\n height = height > lh ? lh : height;\n\n this.prevEditorHeight = this.state.editorHeight;\n this.setState({\n editorHeight: height,\n });\n };\n\n onDrag: DraggableEventHandler = (evt, data) => {\n const newHeight = this.state.editorHeight + data.y;\n this.throttledChangeHeight(newHeight);\n };\n\n render() {\n const { render, isEditing } = this.props;\n const { editorHeight } = this.state;\n\n return (\n <>\n {render(isEditing ? { height: editorHeight } : this.noStyles)}\n {isEditing && (\n
    \n \n
    \n
    \n
    \n \n
    \n )}\n \n );\n }\n}\n","// Libraries\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { Unsubscribable } from 'rxjs';\nimport { connect, MapStateToProps, MapDispatchToProps } from 'react-redux';\n\n// Components\nimport { PanelHeader } from './PanelHeader/PanelHeader';\n\n// Utils & Services\nimport { getTimeSrv, TimeSrv } from '../services/TimeSrv';\nimport { getAngularLoader, AngularComponent } from '@grafana/runtime';\nimport { setPanelAngularComponent } from '../state/reducers';\nimport config from 'app/core/config';\n\n// Types\nimport { DashboardModel, PanelModel } from '../state';\nimport { StoreState } from 'app/types';\nimport { LoadingState, DefaultTimeRange, PanelData, PanelPlugin, PanelEvents } from '@grafana/data';\nimport { PANEL_BORDER } from 'app/core/constants';\n\ninterface OwnProps {\n panel: PanelModel;\n dashboard: DashboardModel;\n plugin: PanelPlugin;\n isFullscreen: boolean;\n isInView: boolean;\n width: number;\n height: number;\n}\n\ninterface ConnectedProps {\n angularComponent: AngularComponent;\n}\n\ninterface DispatchProps {\n setPanelAngularComponent: typeof setPanelAngularComponent;\n}\n\nexport type Props = OwnProps & ConnectedProps & DispatchProps;\n\nexport interface State {\n data: PanelData;\n errorMessage?: string;\n alertState?: string;\n}\n\ninterface AngularScopeProps {\n panel: PanelModel;\n dashboard: DashboardModel;\n size: {\n height: number;\n width: number;\n };\n}\n\nexport class PanelChromeAngularUnconnected extends PureComponent {\n element: HTMLElement | null = null;\n timeSrv: TimeSrv = getTimeSrv();\n scopeProps?: AngularScopeProps;\n querySubscription: Unsubscribable;\n\n constructor(props: Props) {\n super(props);\n this.state = {\n data: {\n state: LoadingState.NotStarted,\n series: [],\n timeRange: DefaultTimeRange,\n },\n };\n }\n\n componentDidMount() {\n const { panel } = this.props;\n this.loadAngularPanel();\n\n // subscribe to data events\n const queryRunner = panel.getQueryRunner();\n this.querySubscription = queryRunner.getData(false).subscribe({\n next: (data: PanelData) => this.onPanelDataUpdate(data),\n });\n }\n\n subscribeToRenderEvent() {\n // Subscribe to render event, this is as far as I know only needed for changes to title & transparent\n // These changes are modified in the model and only way to communicate that change is via this event\n // Need to find another solution for this in tthe future (panel title in redux?)\n this.props.panel.events.on(PanelEvents.render, this.onPanelRenderEvent);\n }\n\n onPanelRenderEvent = (payload?: any) => {\n const { alertState } = this.state;\n\n if (payload && payload.alertState) {\n this.setState({ alertState: payload.alertState });\n } else if (payload && alertState) {\n this.setState({ alertState: undefined });\n } else {\n // only needed for detecting title updates right now fix before 7.0\n this.forceUpdate();\n }\n };\n\n onPanelDataUpdate(data: PanelData) {\n let errorMessage: string | undefined;\n\n if (data.state === LoadingState.Error) {\n const { error } = data;\n if (error) {\n if (errorMessage !== error.message) {\n errorMessage = error.message;\n }\n }\n }\n\n this.setState({ data, errorMessage });\n }\n\n componentWillUnmount() {\n this.cleanUpAngularPanel();\n\n if (this.querySubscription) {\n this.querySubscription.unsubscribe();\n }\n\n this.props.panel.events.off(PanelEvents.render, this.onPanelRenderEvent);\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n const { plugin, height, width, panel } = this.props;\n\n if (prevProps.plugin !== plugin) {\n this.cleanUpAngularPanel();\n this.loadAngularPanel();\n }\n\n if (prevProps.width !== width || prevProps.height !== height) {\n if (this.scopeProps) {\n this.scopeProps.size.height = this.getInnerPanelHeight();\n this.scopeProps.size.width = this.getInnerPanelWidth();\n panel.events.emit(PanelEvents.panelSizeChanged);\n }\n }\n }\n\n getInnerPanelHeight() {\n const { plugin, height } = this.props;\n const { theme } = config;\n\n const headerHeight = this.hasOverlayHeader() ? 0 : theme.panelHeaderHeight;\n const chromePadding = plugin.noPadding ? 0 : theme.panelPadding;\n return height - headerHeight - chromePadding * 2 - PANEL_BORDER;\n }\n\n getInnerPanelWidth() {\n const { plugin, width } = this.props;\n const { theme } = config;\n\n const chromePadding = plugin.noPadding ? 0 : theme.panelPadding;\n return width - chromePadding * 2 - PANEL_BORDER;\n }\n\n loadAngularPanel() {\n const { panel, dashboard, setPanelAngularComponent } = this.props;\n\n // if we have no element or already have loaded the panel return\n if (!this.element) {\n return;\n }\n\n const loader = getAngularLoader();\n const template = '';\n\n this.scopeProps = {\n panel: panel,\n dashboard: dashboard,\n size: { width: this.getInnerPanelWidth(), height: this.getInnerPanelHeight() },\n };\n\n setPanelAngularComponent({\n panelId: panel.id,\n angularComponent: loader.load(this.element, this.scopeProps, template),\n });\n\n // need to to this every time we load an angular as all events are unsubscribed when panel is destroyed\n this.subscribeToRenderEvent();\n }\n\n cleanUpAngularPanel() {\n const { angularComponent, setPanelAngularComponent, panel } = this.props;\n\n if (angularComponent) {\n angularComponent.destroy();\n }\n\n setPanelAngularComponent({ panelId: panel.id, angularComponent: null });\n }\n\n hasOverlayHeader() {\n const { panel } = this.props;\n const { errorMessage, data } = this.state;\n\n // always show normal header if we have an error message\n if (errorMessage) {\n return false;\n }\n\n // always show normal header if we have time override\n if (data.request && data.request.timeInfo) {\n return false;\n }\n\n return !panel.hasTitle();\n }\n\n render() {\n const { dashboard, panel, isFullscreen, plugin, angularComponent } = this.props;\n const { errorMessage, data, alertState } = this.state;\n const { transparent } = panel;\n\n const containerClassNames = classNames({\n 'panel-container': true,\n 'panel-container--absolute': true,\n 'panel-container--transparent': transparent,\n 'panel-container--no-title': this.hasOverlayHeader(),\n 'panel-has-alert': panel.alert !== undefined,\n [`panel-alert-state--${alertState}`]: alertState !== undefined,\n });\n\n const panelContentClassNames = classNames({\n 'panel-content': true,\n 'panel-content--no-padding': plugin.noPadding,\n });\n\n return (\n
    \n \n
    \n
    (this.element = element)} className=\"panel-height-helper\" />\n
    \n
    \n );\n }\n}\n\nconst mapStateToProps: MapStateToProps = (state, props) => {\n return {\n angularComponent: state.dashboard.panels[props.panel.id].angularComponent,\n };\n};\n\nconst mapDispatchToProps: MapDispatchToProps = { setPanelAngularComponent };\n\nexport const PanelChromeAngular = connect(mapStateToProps, mapDispatchToProps)(PanelChromeAngularUnconnected);\n","// Libraries\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport AutoSizer from 'react-virtualized-auto-sizer';\nimport { connect, MapStateToProps, MapDispatchToProps } from 'react-redux';\n\n// Components\nimport { PanelChrome } from './PanelChrome';\nimport { PanelEditor } from '../panel_editor/PanelEditor';\nimport { PanelResizer } from './PanelResizer';\nimport { PanelChromeAngular } from './PanelChromeAngular';\n\n// Actions\nimport { initDashboardPanel } from '../state/actions';\n\n// Types\nimport { PanelModel, DashboardModel } from '../state';\nimport { StoreState } from 'app/types';\nimport { PanelPlugin } from '@grafana/data';\n\nexport interface OwnProps {\n panel: PanelModel;\n dashboard: DashboardModel;\n isEditing: boolean;\n isInEditMode?: boolean;\n isFullscreen: boolean;\n isInView: boolean;\n}\n\nexport interface ConnectedProps {\n plugin?: PanelPlugin;\n}\n\nexport interface DispatchProps {\n initDashboardPanel: typeof initDashboardPanel;\n}\n\nexport type Props = OwnProps & ConnectedProps & DispatchProps;\n\nexport interface State {\n isLazy: boolean;\n}\n\nexport class DashboardPanelUnconnected extends PureComponent {\n element: HTMLElement;\n specialPanels: { [key: string]: Function } = {};\n\n constructor(props: Props) {\n super(props);\n\n this.state = {\n isLazy: !props.isInView,\n };\n }\n\n componentDidMount() {\n this.props.initDashboardPanel(this.props.panel);\n }\n\n componentDidUpdate() {\n if (this.state.isLazy && this.props.isInView) {\n this.setState({ isLazy: false });\n }\n }\n\n onMouseEnter = () => {\n this.props.dashboard.setPanelFocus(this.props.panel.id);\n };\n\n onMouseLeave = () => {\n this.props.dashboard.setPanelFocus(0);\n };\n\n renderPanel(plugin: PanelPlugin) {\n const { dashboard, panel, isFullscreen, isEditing, isInView, isInEditMode } = this.props;\n\n const autoSizerStyle = { height: isEditing ? '100%' : '' };\n\n return (\n \n {({ width, height }) => {\n if (width === 0) {\n return null;\n }\n\n if (plugin.angularPanelCtrl) {\n return (\n \n );\n }\n\n return (\n \n );\n }}\n \n );\n }\n\n render() {\n const { panel, dashboard, isFullscreen, isEditing, plugin } = this.props;\n const { isLazy } = this.state;\n\n // if we have not loaded plugin exports yet, wait\n if (!plugin) {\n return null;\n }\n\n // If we are lazy state don't render anything\n if (isLazy) {\n return null;\n }\n\n const editorContainerClasses = classNames({\n 'panel-editor-container': isEditing,\n 'panel-height-helper': !isEditing,\n });\n\n const panelWrapperClass = classNames({\n 'panel-wrapper': true,\n 'panel-wrapper--edit': isEditing,\n 'panel-wrapper--view': isFullscreen && !isEditing,\n });\n\n return (\n
    \n (\n \n {this.renderPanel(plugin)}\n
    \n )}\n />\n {panel.isEditing && }\n
    \n );\n }\n}\n\nconst mapStateToProps: MapStateToProps = (state, props) => {\n const panelState = state.dashboard.panels[props.panel.id];\n if (!panelState) {\n return { plugin: null };\n }\n\n return {\n plugin: panelState.plugin,\n };\n};\n\nconst mapDispatchToProps: MapDispatchToProps = { initDashboardPanel };\n\nexport const DashboardPanel = connect(mapStateToProps, mapDispatchToProps)(DashboardPanelUnconnected);\n","import React, { FC } from 'react';\nimport { css } from 'emotion';\nimport { Icon, selectThemeVariant, stylesFactory, Tab, TabsBar, useTheme } from '@grafana/ui';\nimport { GrafanaTheme, SelectableValue } from '@grafana/data';\nimport { InspectTab } from './PanelInspector';\nimport { PanelModel } from '../../state';\n\ninterface Props {\n tab: InspectTab;\n tabs: Array<{ label: string; value: InspectTab }>;\n stats: { requestTime: number; queries: number; dataSources: number };\n panel: PanelModel;\n isExpanded: boolean;\n\n onSelectTab: (tab: SelectableValue) => void;\n onClose: () => void;\n onToggleExpand: () => void;\n}\n\nexport const InspectHeader: FC = ({\n tab,\n tabs,\n onSelectTab,\n onClose,\n onToggleExpand,\n panel,\n stats,\n isExpanded,\n}) => {\n const theme = useTheme();\n const styles = getStyles(theme);\n\n return (\n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n

    {panel.title}

    \n
    {formatStats(stats)}
    \n
    \n \n {tabs.map((t, index) => {\n return (\n onSelectTab(t)}\n />\n );\n })}\n \n
    \n );\n};\n\nconst getStyles = stylesFactory((theme: GrafanaTheme) => {\n const headerBackground = selectThemeVariant({ dark: theme.colors.gray15, light: theme.colors.white }, theme.type);\n return {\n header: css`\n background-color: ${headerBackground};\n z-index: 1;\n flex-grow: 0;\n `,\n actions: css`\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n margin: ${theme.spacing.md};\n `,\n tabsBar: css`\n padding-left: ${theme.spacing.md};\n `,\n iconWrapper: css`\n cursor: pointer;\n width: 25px;\n height: 100%;\n display: flex;\n flex-shrink: 0;\n justify-content: center;\n `,\n icon: css`\n font-size: ${theme.typography.size.lg};\n `,\n titleWrapper: css`\n margin-bottom: ${theme.spacing.lg};\n padding: ${theme.spacing.sm} ${theme.spacing.sm} 0 ${theme.spacing.lg};\n `,\n };\n});\n\nfunction formatStats(stats: { requestTime: number; queries: number; dataSources: number }) {\n const queries = `${stats.queries} ${stats.queries === 1 ? 'query' : 'queries'}`;\n const dataSources = `${stats.dataSources} ${stats.dataSources === 1 ? 'data source' : 'data sources'}`;\n const requestTime = `${stats.requestTime === -1 ? 'N/A' : stats.requestTime}ms`;\n\n return `${queries} - ${dataSources} - ${requestTime}`;\n}\n","import React, { PureComponent } from 'react';\nimport AutoSizer from 'react-virtualized-auto-sizer';\nimport { saveAs } from 'file-saver';\nimport { css } from 'emotion';\n\nimport { InspectHeader } from './InspectHeader';\n\nimport { DashboardModel, PanelModel } from 'app/features/dashboard/state';\nimport { JSONFormatter, Drawer, Select, Table, TabContent, Forms, stylesFactory, CustomScrollbar } from '@grafana/ui';\nimport { getLocationSrv, getDataSourceSrv } from '@grafana/runtime';\nimport {\n DataFrame,\n DataSourceApi,\n SelectableValue,\n applyFieldOverrides,\n toCSV,\n DataQueryError,\n PanelData,\n DataQuery,\n} from '@grafana/data';\nimport { config } from 'app/core/config';\n\ninterface Props {\n dashboard: DashboardModel;\n panel: PanelModel;\n selectedTab: InspectTab;\n}\n\nexport enum InspectTab {\n Data = 'data',\n Request = 'request',\n Issue = 'issue',\n Meta = 'meta', // When result metadata exists\n Error = 'error',\n Stats = 'stats',\n}\n\ninterface State {\n // The last raw response\n last: PanelData;\n\n // Data from the last response\n data: DataFrame[];\n\n // The selected data frame\n selected: number;\n\n // The Selected Tab\n tab: InspectTab;\n\n // If the datasource supports custom metadata\n metaDS?: DataSourceApi;\n\n stats: { requestTime: number; queries: number; dataSources: number; processingTime: number };\n\n drawerWidth: string;\n}\n\nexport class PanelInspector extends PureComponent {\n constructor(props: Props) {\n super(props);\n this.state = {\n last: {} as PanelData,\n data: [],\n selected: 0,\n tab: props.selectedTab || InspectTab.Data,\n drawerWidth: '50%',\n stats: { requestTime: 0, queries: 0, dataSources: 0, processingTime: 0 },\n };\n }\n\n async componentDidMount() {\n const { panel } = this.props;\n\n if (!panel) {\n this.onDismiss(); // Try to close the component\n return;\n }\n\n const lastResult = panel.getQueryRunner().getLastResult();\n\n if (!lastResult) {\n this.onDismiss(); // Usually opened from refresh?\n return;\n }\n\n let metaDS: DataSourceApi;\n const data = lastResult.series;\n const error = lastResult.error;\n\n const targets = lastResult.request?.targets || [];\n const requestTime = lastResult.request?.endTime ? lastResult.request?.endTime - lastResult.request.startTime : -1;\n const dataSources = new Set(targets.map(t => t.datasource)).size;\n const processingTime = lastResult.timings?.dataProcessingTime || -1;\n\n // Find the first DataSource wanting to show custom metadata\n if (data && targets.length) {\n const queries: Record = {};\n\n for (const target of targets) {\n queries[target.refId] = target;\n }\n\n for (const frame of data) {\n const q = queries[frame.refId];\n\n if (q && frame.meta && frame.meta.custom) {\n const dataSource = await getDataSourceSrv().get(q.datasource);\n\n if (dataSource && dataSource.components?.MetadataInspector) {\n metaDS = dataSource;\n break;\n }\n }\n }\n }\n\n // Set last result, but no metadata inspector\n this.setState(prevState => ({\n last: lastResult,\n data,\n metaDS,\n tab: error ? InspectTab.Error : prevState.tab,\n stats: {\n requestTime,\n queries: targets.length,\n dataSources,\n processingTime,\n },\n }));\n }\n\n onDismiss = () => {\n getLocationSrv().update({\n query: { inspect: null, tab: null },\n partial: true,\n });\n };\n\n onToggleExpand = () => {\n this.setState(prevState => ({\n drawerWidth: prevState.drawerWidth === '100%' ? '40%' : '100%',\n }));\n };\n\n onSelectTab = (item: SelectableValue) => {\n this.setState({ tab: item.value || InspectTab.Data });\n };\n\n onSelectedFrameChanged = (item: SelectableValue) => {\n this.setState({ selected: item.value || 0 });\n };\n\n exportCsv = (dataFrame: DataFrame) => {\n const dataFrameCsv = toCSV([dataFrame]);\n\n const blob = new Blob([dataFrameCsv], {\n type: 'application/csv;charset=utf-8',\n });\n\n saveAs(blob, dataFrame.name + '-' + new Date().getUTCDate() + '.csv');\n };\n\n renderMetadataInspector() {\n const { metaDS, data } = this.state;\n if (!metaDS || !metaDS.components?.MetadataInspector) {\n return
    No Metadata Inspector
    ;\n }\n return ;\n }\n\n renderDataTab() {\n const { data, selected } = this.state;\n const styles = getStyles();\n\n if (!data || !data.length) {\n return
    No Data
    ;\n }\n\n const choices = data.map((frame, index) => {\n return {\n value: index,\n label: `${frame.name} (${index})`,\n };\n });\n\n // Apply dummy styles\n const processed = applyFieldOverrides({\n data,\n theme: config.theme,\n fieldOptions: { defaults: {}, overrides: [] },\n replaceVariables: (value: string) => {\n return value;\n },\n });\n\n return (\n
    \n
    \n {choices.length > 1 && (\n
    \n t.value === selected)}\n onChange={this.onSelectedFrameChanged}\n />\n
    \n )}\n
    \n this.exportCsv(processed[selected])}>\n Download CSV\n \n
    \n
    \n
    \n \n {({ width, height }) => {\n if (width === 0) {\n return null;\n }\n\n return (\n
    \n \n \n );\n }}\n \n \n \n );\n }\n\n renderErrorTab(error?: DataQueryError) {\n if (!error) {\n return null;\n }\n if (error.data) {\n return (\n <>\n

    {error.data.message}

    \n \n \n );\n }\n return
    {error.message}
    ;\n }\n\n renderRequestTab() {\n return ;\n }\n\n renderStatsTab() {\n const { stats } = this.state;\n return (\n
    \n \n \n \n \n \n \n \n \n \n \n
    Query time{`${stats.requestTime === -1 ? 'N/A' : stats.requestTime + 'ms'}`}
    Data processing time{`${\n stats.processingTime === -1\n ? 'N/A'\n : Math.round((stats.processingTime + Number.EPSILON) * 100) / 100 + 'ms'\n }`}
    \n );\n }\n\n drawerHeader = () => {\n const { tab, last, stats } = this.state;\n const error = last?.error;\n const tabs = [];\n\n if (last && last?.series?.length > 0) {\n tabs.push({ label: 'Data', value: InspectTab.Data });\n }\n\n tabs.push({ label: 'Stats', value: InspectTab.Stats });\n tabs.push({ label: 'Request', value: InspectTab.Request });\n\n if (this.state.metaDS) {\n tabs.push({ label: 'Meta Data', value: InspectTab.Meta });\n }\n\n if (error && error.message) {\n tabs.push({ label: 'Error', value: InspectTab.Error });\n }\n\n return (\n \n );\n };\n\n render() {\n const { last, tab, drawerWidth } = this.state;\n const styles = getStyles();\n const error = last?.error;\n\n return (\n \n \n \n {tab === InspectTab.Data && this.renderDataTab()}\n {tab === InspectTab.Meta && this.renderMetadataInspector()}\n {tab === InspectTab.Request && this.renderRequestTab()}\n {tab === InspectTab.Error && this.renderErrorTab(error)}\n {tab === InspectTab.Stats && this.renderStatsTab()}\n \n \n \n );\n }\n}\n\nconst getStyles = stylesFactory(() => {\n return {\n toolbar: css`\n display: flex;\n margin: 8px 0;\n justify-content: flex-end;\n align-items: center;\n `,\n dataFrameSelect: css`\n flex-grow: 2;\n `,\n downloadCsv: css`\n margin-left: 16px;\n `,\n tabContent: css`\n height: calc(100% - 32px);\n `,\n dataTabContent: css`\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n `,\n };\n});\n","import React, { PureComponent } from 'react';\nimport appEvents from 'app/core/app_events';\nimport { CopyToClipboard } from 'app/core/components/CopyToClipboard/CopyToClipboard';\nimport { JSONFormatter, LoadingPlaceholder } from '@grafana/ui';\nimport { CoreEvents } from 'app/types';\nimport { AppEvents, PanelEvents } from '@grafana/data';\n\ninterface DsQuery {\n isLoading: boolean;\n response: {};\n}\n\ninterface Props {\n panel: any;\n}\n\ninterface State {\n allNodesExpanded: boolean;\n isMocking: boolean;\n mockedResponse: string;\n dsQuery: DsQuery;\n}\n\nexport class QueryInspector extends PureComponent {\n formattedJson: any;\n clipboard: any;\n\n constructor(props: Props) {\n super(props);\n this.state = {\n allNodesExpanded: null,\n isMocking: false,\n mockedResponse: '',\n dsQuery: {\n isLoading: false,\n response: {},\n },\n };\n }\n\n componentDidMount() {\n const { panel } = this.props;\n\n appEvents.on(CoreEvents.dsRequestResponse, this.onDataSourceResponse);\n appEvents.on(CoreEvents.dsRequestError, this.onRequestError);\n\n panel.events.on(PanelEvents.refresh, this.onPanelRefresh);\n panel.refresh();\n }\n\n componentWillUnmount() {\n const { panel } = this.props;\n\n appEvents.off(CoreEvents.dsRequestResponse, this.onDataSourceResponse);\n appEvents.on(CoreEvents.dsRequestError, this.onRequestError);\n\n panel.events.off(PanelEvents.refresh, this.onPanelRefresh);\n }\n\n handleMocking(response: any) {\n const { mockedResponse } = this.state;\n let mockedData;\n try {\n mockedData = JSON.parse(mockedResponse);\n } catch (err) {\n appEvents.emit(AppEvents.alertError, ['R: Failed to parse mocked response']);\n return;\n }\n\n response.data = mockedData;\n }\n\n onPanelRefresh = () => {\n this.setState(prevState => ({\n ...prevState,\n dsQuery: {\n isLoading: true,\n response: {},\n },\n }));\n };\n\n onRequestError = (err: any) => {\n this.onDataSourceResponse(err);\n };\n\n onDataSourceResponse = (response: any = {}) => {\n if (this.state.isMocking) {\n this.handleMocking(response);\n return;\n }\n\n response = { ...response }; // clone - dont modify the response\n\n if (response.headers) {\n delete response.headers;\n }\n\n if (response.config) {\n response.request = response.config;\n\n delete response.config;\n delete response.request.transformRequest;\n delete response.request.transformResponse;\n delete response.request.paramSerializer;\n delete response.request.jsonpCallbackParam;\n delete response.request.headers;\n delete response.request.requestId;\n delete response.request.inspect;\n delete response.request.retry;\n delete response.request.timeout;\n }\n\n if (response.data) {\n response.response = response.data;\n\n delete response.config;\n delete response.data;\n delete response.status;\n delete response.statusText;\n delete response.ok;\n delete response.url;\n delete response.redirected;\n delete response.type;\n delete response.$$config;\n }\n\n this.setState(prevState => ({\n ...prevState,\n dsQuery: {\n isLoading: false,\n response: response,\n },\n }));\n };\n\n setFormattedJson = (formattedJson: any) => {\n this.formattedJson = formattedJson;\n };\n\n getTextForClipboard = () => {\n return JSON.stringify(this.formattedJson, null, 2);\n };\n\n onClipboardSuccess = () => {\n appEvents.emit(AppEvents.alertSuccess, ['Content copied to clipboard']);\n };\n\n onToggleExpand = () => {\n this.setState(prevState => ({\n ...prevState,\n allNodesExpanded: !this.state.allNodesExpanded,\n }));\n };\n\n onToggleMocking = () => {\n this.setState(prevState => ({\n ...prevState,\n isMocking: !this.state.isMocking,\n }));\n };\n\n getNrOfOpenNodes = () => {\n if (this.state.allNodesExpanded === null) {\n return 3; // 3 is default, ie when state is null\n } else if (this.state.allNodesExpanded) {\n return 20;\n }\n return 1;\n };\n\n setMockedResponse = (evt: any) => {\n const mockedResponse = evt.target.value;\n this.setState(prevState => ({\n ...prevState,\n mockedResponse,\n }));\n };\n\n renderExpandCollapse = () => {\n const { allNodesExpanded } = this.state;\n\n const collapse = (\n <>\n Collapse All\n \n );\n const expand = (\n <>\n Expand All\n \n );\n return allNodesExpanded ? collapse : expand;\n };\n\n render() {\n const { response, isLoading } = this.state.dsQuery;\n const openNodes = this.getNrOfOpenNodes();\n\n if (isLoading) {\n return ;\n }\n\n return (\n <>\n
    \n \n \n Copy to Clipboard\n \n
    \n\n \n \n );\n }\n}\n","import React, { FC, ChangeEvent } from 'react';\nimport { FormLabel, Input } from '@grafana/ui';\n\ninterface Props {\n label: string;\n placeholder?: string;\n name: string;\n value: string;\n onBlur: (event: ChangeEvent) => void;\n onChange: (event: ChangeEvent) => void;\n tooltipInfo?: any;\n}\n\nexport const DataSourceOption: FC = ({ label, placeholder, name, value, onBlur, onChange, tooltipInfo }) => {\n return (\n
    \n {label}\n \n
    \n );\n};\n","// Libraries\nimport React, { PureComponent, ChangeEvent, FocusEvent, ReactText } from 'react';\n\n// Utils\nimport { rangeUtil, DataSourceSelectItem } from '@grafana/data';\n\n// Components\nimport { EventsWithValidation, Input, InputStatus, Switch, ValidationEvents, FormLabel } from '@grafana/ui';\nimport { DataSourceOption } from './DataSourceOption';\n\n// Types\nimport { PanelModel } from '../state';\n\nconst timeRangeValidationEvents: ValidationEvents = {\n [EventsWithValidation.onBlur]: [\n {\n rule: value => {\n if (!value) {\n return true;\n }\n return rangeUtil.isValidTimeSpan(value);\n },\n errorMessage: 'Not a valid timespan',\n },\n ],\n};\n\nconst emptyToNull = (value: string) => {\n return value === '' ? null : value;\n};\n\ninterface Props {\n panel: PanelModel;\n datasource: DataSourceSelectItem;\n}\n\ninterface State {\n relativeTime: string;\n timeShift: string;\n cacheTimeout: string;\n maxDataPoints: string | ReactText;\n interval: string;\n hideTimeOverride: boolean;\n}\n\nexport class QueryOptions extends PureComponent {\n allOptions: any = {\n cacheTimeout: {\n label: 'Cache timeout',\n placeholder: '60',\n name: 'cacheTimeout',\n tooltipInfo: (\n <>\n If your time series store has a query cache this option can override the default cache timeout. Specify a\n numeric value in seconds.\n \n ),\n },\n maxDataPoints: {\n label: 'Max data points',\n placeholder: 'auto',\n name: 'maxDataPoints',\n tooltipInfo: (\n <>\n The maximum data points the query should return. For graphs this is automatically set to one data point per\n pixel. For some data sources this can also be capped in the datasource settings page. With streaming data,\n this value is used for the rolling buffer.\n \n ),\n },\n minInterval: {\n label: 'Min time interval',\n placeholder: '0',\n name: 'minInterval',\n panelKey: 'interval',\n tooltipInfo: (\n <>\n A lower limit for the auto group by time interval. Recommended to be set to write frequency, for example{' '}\n 1m if your data is written every minute. Access auto interval via variable{' '}\n $__interval for time range string and $__interval_ms for numeric variable that can\n be used in math expressions.\n \n ),\n },\n };\n\n constructor(props: Props) {\n super(props);\n\n this.state = {\n relativeTime: props.panel.timeFrom || '',\n timeShift: props.panel.timeShift || '',\n cacheTimeout: props.panel.cacheTimeout || '',\n maxDataPoints: props.panel.maxDataPoints || '',\n interval: props.panel.interval || '',\n hideTimeOverride: props.panel.hideTimeOverride || false,\n };\n }\n\n onRelativeTimeChange = (event: ChangeEvent) => {\n this.setState({\n relativeTime: event.target.value,\n });\n };\n\n onTimeShiftChange = (event: ChangeEvent) => {\n this.setState({\n timeShift: event.target.value,\n });\n };\n\n onOverrideTime = (event: FocusEvent, status: InputStatus) => {\n const { value } = event.target;\n const { panel } = this.props;\n const emptyToNullValue = emptyToNull(value);\n if (status === InputStatus.Valid && panel.timeFrom !== emptyToNullValue) {\n panel.timeFrom = emptyToNullValue;\n panel.refresh();\n }\n };\n\n onTimeShift = (event: FocusEvent, status: InputStatus) => {\n const { value } = event.target;\n const { panel } = this.props;\n const emptyToNullValue = emptyToNull(value);\n if (status === InputStatus.Valid && panel.timeShift !== emptyToNullValue) {\n panel.timeShift = emptyToNullValue;\n panel.refresh();\n }\n };\n\n onToggleTimeOverride = () => {\n const { panel } = this.props;\n this.setState({ hideTimeOverride: !this.state.hideTimeOverride }, () => {\n panel.hideTimeOverride = this.state.hideTimeOverride;\n panel.refresh();\n });\n };\n\n onDataSourceOptionBlur = (panelKey: string) => () => {\n const { panel } = this.props;\n\n // @ts-ignore\n panel[panelKey] = this.state[panelKey];\n panel.refresh();\n };\n\n onDataSourceOptionChange = (panelKey: string) => (event: ChangeEvent) => {\n this.setState({ ...this.state, [panelKey]: event.target.value });\n };\n\n /**\n * Show options for any value that is set, or values that the\n * current datasource says it will use\n */\n renderOptions = () => {\n const { datasource } = this.props;\n const queryOptions: any = datasource.meta.queryOptions || {};\n\n return Object.keys(this.allOptions).map(key => {\n const options = this.allOptions[key];\n const panelKey = options.panelKey || key;\n\n // @ts-ignore\n const value = this.state[panelKey];\n\n if (queryOptions[key]) {\n return (\n \n );\n }\n return null; // nothing to render\n });\n };\n\n render() {\n const { hideTimeOverride } = this.state;\n const { relativeTime, timeShift } = this.state;\n return (\n
    \n {this.renderOptions()}\n\n
    \n Relative time\n \n
    \n\n
    \n Time shift\n \n
    \n {(timeShift || relativeTime) && (\n
    \n \n
    \n )}\n
    \n );\n }\n}\n","// Libraries\nimport React, { PureComponent } from 'react';\n\n// @ts-ignore ignoring this for now, otherwise we would have to extend _ interface with move\nimport _ from 'lodash';\n\n// Types\nimport { PanelModel } from '../state/PanelModel';\nimport { DataQuery, PanelData, DataSourceSelectItem } from '@grafana/data';\nimport { DashboardModel } from '../state/DashboardModel';\nimport { QueryEditorRow } from './QueryEditorRow';\nimport { addQuery } from 'app/core/utils/query';\n\ninterface Props {\n // The query configuration\n queries: DataQuery[];\n datasource: DataSourceSelectItem;\n\n // Query editing\n onChangeQueries: (queries: DataQuery[]) => void;\n onScrollBottom: () => void;\n\n // Dashboard Configs\n panel: PanelModel;\n dashboard: DashboardModel;\n\n // Query Response Data\n data: PanelData;\n}\n\nexport class QueryEditorRows extends PureComponent {\n onAddQuery = (query?: Partial) => {\n const { queries, onChangeQueries } = this.props;\n onChangeQueries(addQuery(queries, query));\n this.props.onScrollBottom();\n };\n\n onRemoveQuery = (query: DataQuery) => {\n const { queries, onChangeQueries, panel } = this.props;\n const removed = queries.filter(q => {\n return q !== query;\n });\n onChangeQueries(removed);\n panel.refresh();\n };\n\n onMoveQuery = (query: DataQuery, direction: number) => {\n const { queries, onChangeQueries, panel } = this.props;\n\n const index = _.indexOf(queries, query);\n // @ts-ignore\n _.move(queries, index, index + direction);\n onChangeQueries(queries);\n panel.refresh();\n };\n\n onChangeQuery(query: DataQuery, index: number) {\n const { queries, onChangeQueries } = this.props;\n\n // ensure refId is maintained\n query.refId = queries[index].refId;\n\n // update query in array\n onChangeQueries(\n queries.map((item, itemIndex) => {\n if (itemIndex === index) {\n return query;\n }\n return item;\n })\n );\n }\n\n render() {\n const { props } = this;\n return (\n
    \n {props.queries.map((query, index) => (\n this.onChangeQuery(query, index)}\n onRemoveQuery={this.onRemoveQuery}\n onAddQuery={this.onAddQuery}\n onMoveQuery={this.onMoveQuery}\n inMixedMode={props.datasource.meta.mixed}\n />\n ))}\n
    \n );\n }\n}\n","// Libraries\nimport React, { PureComponent } from 'react';\nimport _ from 'lodash';\n// Components\nimport { EditorTabBody, EditorToolbarView } from './EditorTabBody';\nimport { DataSourcePicker } from 'app/core/components/Select/DataSourcePicker';\nimport { QueryInspector } from './QueryInspector';\nimport { QueryOptions } from './QueryOptions';\nimport { PanelOptionsGroup } from '@grafana/ui';\nimport { QueryEditorRows } from './QueryEditorRows';\n// Services\nimport { getDatasourceSrv } from 'app/features/plugins/datasource_srv';\nimport { backendSrv } from 'app/core/services/backend_srv';\nimport config from 'app/core/config';\n// Types\nimport { PanelModel } from '../state/PanelModel';\nimport { DashboardModel } from '../state/DashboardModel';\nimport { LoadingState, DefaultTimeRange, DataSourceSelectItem, DataQuery, PanelData } from '@grafana/data';\nimport { PluginHelp } from 'app/core/components/PluginHelp/PluginHelp';\nimport { addQuery } from 'app/core/utils/query';\nimport { Unsubscribable } from 'rxjs';\nimport { isSharedDashboardQuery, DashboardQueryEditor } from 'app/plugins/datasource/dashboard';\nimport { expressionDatasource, ExpressionDatasourceID } from 'app/features/expressions/ExpressionDatasource';\n\ninterface Props {\n panel: PanelModel;\n dashboard: DashboardModel;\n}\n\ninterface State {\n currentDS: DataSourceSelectItem;\n helpContent: JSX.Element;\n isLoadingHelp: boolean;\n isPickerOpen: boolean;\n isAddingMixed: boolean;\n scrollTop: number;\n data: PanelData;\n}\n\nexport class QueriesTab extends PureComponent {\n datasources: DataSourceSelectItem[] = getDatasourceSrv().getMetricSources();\n backendSrv = backendSrv;\n querySubscription: Unsubscribable;\n\n state: State = {\n isLoadingHelp: false,\n currentDS: this.findCurrentDataSource(),\n helpContent: null,\n isPickerOpen: false,\n isAddingMixed: false,\n scrollTop: 0,\n data: {\n state: LoadingState.NotStarted,\n series: [],\n timeRange: DefaultTimeRange,\n },\n };\n\n componentDidMount() {\n const { panel } = this.props;\n const queryRunner = panel.getQueryRunner();\n\n this.querySubscription = queryRunner.getData(false).subscribe({\n next: (data: PanelData) => this.onPanelDataUpdate(data),\n });\n }\n\n componentWillUnmount() {\n if (this.querySubscription) {\n this.querySubscription.unsubscribe();\n this.querySubscription = null;\n }\n }\n\n onPanelDataUpdate(data: PanelData) {\n this.setState({ data });\n }\n\n findCurrentDataSource(): DataSourceSelectItem {\n const { panel } = this.props;\n return this.datasources.find(datasource => datasource.value === panel.datasource) || this.datasources[0];\n }\n\n onChangeDataSource = (datasource: DataSourceSelectItem) => {\n const { panel } = this.props;\n const { currentDS } = this.state;\n\n // switching to mixed\n if (datasource.meta.mixed) {\n // Set the datasource on all targets\n panel.targets.forEach(target => {\n if (target.datasource !== ExpressionDatasourceID) {\n target.datasource = panel.datasource;\n if (!target.datasource) {\n target.datasource = config.defaultDatasource;\n }\n }\n });\n } else if (currentDS) {\n // if switching from mixed\n if (currentDS.meta.mixed) {\n // Remove the explicit datasource\n for (const target of panel.targets) {\n if (target.datasource !== ExpressionDatasourceID) {\n delete target.datasource;\n }\n }\n } else if (currentDS.meta.id !== datasource.meta.id) {\n // we are changing data source type, clear queries\n panel.targets = [{ refId: 'A' }];\n }\n }\n\n panel.datasource = datasource.value;\n panel.refresh();\n\n this.setState({\n currentDS: datasource,\n });\n };\n\n renderQueryInspector = () => {\n const { panel } = this.props;\n return ;\n };\n\n renderHelp = () => {\n return ;\n };\n\n /**\n * Sets the queries for the panel\n */\n onUpdateQueries = (queries: DataQuery[]) => {\n this.props.panel.targets = queries;\n this.forceUpdate();\n };\n\n onAddQueryClick = () => {\n if (this.state.currentDS.meta.mixed) {\n this.setState({ isAddingMixed: true });\n return;\n }\n\n this.onUpdateQueries(addQuery(this.props.panel.targets));\n this.onScrollBottom();\n };\n\n onAddExpressionClick = () => {\n this.onUpdateQueries(addQuery(this.props.panel.targets, expressionDatasource.newQuery()));\n this.onScrollBottom();\n };\n\n onScrollBottom = () => {\n this.setState({ scrollTop: this.state.scrollTop + 10000 });\n };\n\n renderToolbar = () => {\n const { currentDS, isAddingMixed } = this.state;\n const showAddButton = !(isAddingMixed || isSharedDashboardQuery(currentDS.name));\n\n return (\n <>\n \n
    \n {showAddButton && (\n \n )}\n {isAddingMixed && this.renderMixedPicker()}\n {config.featureToggles.expressions && (\n \n )}\n \n );\n };\n\n renderMixedPicker = () => {\n // We cannot filter on mixed flag as some mixed data sources like external plugin\n // meta queries data source is mixed but also supports it's own queries\n const filteredDsList = this.datasources.filter(ds => ds.meta.id !== 'mixed');\n\n return (\n \n );\n };\n\n onAddMixedQuery = (datasource: any) => {\n this.props.panel.targets = addQuery(this.props.panel.targets, { datasource: datasource.name });\n this.setState({ isAddingMixed: false, scrollTop: this.state.scrollTop + 10000 });\n this.forceUpdate();\n };\n\n onMixedPickerBlur = () => {\n this.setState({ isAddingMixed: false });\n };\n\n onQueryChange = (query: DataQuery, index: number) => {\n this.props.panel.changeQuery(query, index);\n this.forceUpdate();\n };\n\n setScrollTop = (event: React.MouseEvent) => {\n const target = event.target as HTMLElement;\n this.setState({ scrollTop: target.scrollTop });\n };\n\n renderQueryBody = () => {\n const { panel, dashboard } = this.props;\n const { currentDS, data } = this.state;\n\n if (isSharedDashboardQuery(currentDS.name)) {\n return this.onUpdateQueries([query])} />;\n }\n\n return (\n <>\n \n \n \n \n \n );\n };\n\n render() {\n const { scrollTop } = this.state;\n const queryInspector: EditorToolbarView = {\n title: 'Query Inspector',\n render: this.renderQueryInspector,\n };\n\n const dsHelp: EditorToolbarView = {\n heading: 'Help',\n icon: 'fa fa-question',\n render: this.renderHelp,\n };\n\n return (\n \n <>{this.renderQueryBody()}\n \n );\n }\n}\n","import React, { PureComponent } from 'react';\nimport { getBackendSrv } from '@grafana/runtime';\n\nimport alertDef from './state/alertDef';\nimport { DashboardModel } from '../dashboard/state/DashboardModel';\nimport appEvents from '../../core/app_events';\nimport { CoreEvents } from 'app/types';\n\ninterface Props {\n dashboard: DashboardModel;\n panelId: number;\n onRefresh: () => void;\n}\n\ninterface State {\n stateHistoryItems: any[];\n}\n\nclass StateHistory extends PureComponent {\n state: State = {\n stateHistoryItems: [],\n };\n\n componentDidMount(): void {\n const { dashboard, panelId } = this.props;\n\n getBackendSrv()\n .get(\n `/api/annotations?dashboardId=${dashboard.id}&panelId=${panelId}&limit=50&type=alert`,\n {},\n `state-history-${dashboard.id}-${panelId}`\n )\n .then(data => {\n const items = data.map((item: any) => {\n return {\n stateModel: alertDef.getStateDisplayModel(item.newState),\n time: dashboard.formatDate(item.time, 'MMM D, YYYY HH:mm:ss'),\n info: alertDef.getAlertAnnotationInfo(item),\n };\n });\n\n this.setState({\n stateHistoryItems: items,\n });\n });\n }\n\n clearHistory = () => {\n const { dashboard, onRefresh, panelId } = this.props;\n\n appEvents.emit(CoreEvents.showConfirmModal, {\n title: 'Delete Alert History',\n text: 'Are you sure you want to remove all history & annotations for this alert?',\n icon: 'fa-trash',\n yesText: 'Yes',\n onConfirm: () => {\n getBackendSrv()\n .post('/api/annotations/mass-delete', {\n dashboardId: dashboard.id,\n panelId: panelId,\n })\n .then(() => {\n this.setState({\n stateHistoryItems: [],\n });\n onRefresh();\n });\n },\n });\n };\n\n render() {\n const { stateHistoryItems } = this.state;\n\n return (\n
    \n {stateHistoryItems.length > 0 && (\n
    \n Last 50 state changes\n \n
    \n )}\n
      \n {stateHistoryItems.length > 0 ? (\n stateHistoryItems.map((item, index) => {\n return (\n
    1. \n
      \n \n
      \n
      \n
      \n

      {item.alertName}

      \n
      \n {item.stateModel.text}\n
      \n
      \n {item.info}\n
      \n
      {item.time}
      \n
    2. \n );\n })\n ) : (\n No state changes recorded\n )}\n
    \n
    \n );\n }\n}\n\nexport default StateHistory;\n","import React, { PureComponent } from 'react';\nimport { LoadingPlaceholder, JSONFormatter } from '@grafana/ui';\n\nimport appEvents from 'app/core/app_events';\nimport { CopyToClipboard } from 'app/core/components/CopyToClipboard/CopyToClipboard';\nimport { DashboardModel } from '../dashboard/state/DashboardModel';\nimport { getBackendSrv } from '@grafana/runtime';\nimport { AppEvents } from '@grafana/data';\n\nexport interface Props {\n panelId: number;\n dashboard: DashboardModel;\n}\n\ninterface State {\n isLoading: boolean;\n allNodesExpanded: boolean;\n testRuleResponse: {};\n}\n\nexport class TestRuleResult extends PureComponent {\n readonly state: State = {\n isLoading: false,\n allNodesExpanded: null,\n testRuleResponse: {},\n };\n\n formattedJson: any;\n clipboard: any;\n\n componentDidMount() {\n this.testRule();\n }\n\n async testRule() {\n const { panelId, dashboard } = this.props;\n const payload = { dashboard: dashboard.getSaveModelClone(), panelId };\n\n this.setState({ isLoading: true });\n const testRuleResponse = await getBackendSrv().post(`/api/alerts/test`, payload);\n this.setState({ isLoading: false, testRuleResponse });\n }\n\n setFormattedJson = (formattedJson: any) => {\n this.formattedJson = formattedJson;\n };\n\n getTextForClipboard = () => {\n return JSON.stringify(this.formattedJson, null, 2);\n };\n\n onClipboardSuccess = () => {\n appEvents.emit(AppEvents.alertSuccess, ['Content copied to clipboard']);\n };\n\n onToggleExpand = () => {\n this.setState(prevState => ({\n ...prevState,\n allNodesExpanded: !this.state.allNodesExpanded,\n }));\n };\n\n getNrOfOpenNodes = () => {\n if (this.state.allNodesExpanded === null) {\n return 3; // 3 is default, ie when state is null\n } else if (this.state.allNodesExpanded) {\n return 20;\n }\n return 1;\n };\n\n renderExpandCollapse = () => {\n const { allNodesExpanded } = this.state;\n\n const collapse = (\n <>\n Collapse All\n \n );\n const expand = (\n <>\n Expand All\n \n );\n return allNodesExpanded ? collapse : expand;\n };\n\n render() {\n const { testRuleResponse, isLoading } = this.state;\n\n if (isLoading === true) {\n return ;\n }\n\n const openNodes = this.getNrOfOpenNodes();\n\n return (\n <>\n
    \n \n \n Copy to Clipboard\n \n
    \n\n \n \n );\n }\n}\n","import React, { PureComponent } from 'react';\nimport { connect, MapStateToProps, MapDispatchToProps } from 'react-redux';\nimport { css } from 'emotion';\nimport { Alert, Button } from '@grafana/ui';\n\nimport { AngularComponent, getAngularLoader, getDataSourceSrv } from '@grafana/runtime';\nimport appEvents from 'app/core/app_events';\nimport { getAlertingValidationMessage } from './getAlertingValidationMessage';\n\nimport { EditorTabBody, EditorToolbarView } from '../dashboard/panel_editor/EditorTabBody';\nimport EmptyListCTA from 'app/core/components/EmptyListCTA/EmptyListCTA';\nimport StateHistory from './StateHistory';\nimport 'app/features/alerting/AlertTabCtrl';\n\nimport { DashboardModel } from '../dashboard/state/DashboardModel';\nimport { PanelModel } from '../dashboard/state/PanelModel';\nimport { TestRuleResult } from './TestRuleResult';\nimport { AppNotificationSeverity, StoreState } from 'app/types';\nimport { PanelEditorTabIds, getPanelEditorTab } from '../dashboard/panel_editor/state/reducers';\nimport { changePanelEditorTab } from '../dashboard/panel_editor/state/actions';\nimport { CoreEvents } from 'app/types';\n\ninterface OwnProps {\n dashboard: DashboardModel;\n panel: PanelModel;\n}\n\ninterface ConnectedProps {\n angularPanelComponent: AngularComponent;\n}\n\ninterface DispatchProps {\n changePanelEditorTab: typeof changePanelEditorTab;\n}\n\nexport type Props = OwnProps & ConnectedProps & DispatchProps;\n\ninterface State {\n validatonMessage: string;\n}\n\nclass UnConnectedAlertTab extends PureComponent {\n element: any;\n component: AngularComponent;\n panelCtrl: any;\n\n state: State = {\n validatonMessage: '',\n };\n\n componentDidMount() {\n this.loadAlertTab();\n }\n\n onAngularPanelUpdated = () => {\n this.forceUpdate();\n };\n\n componentDidUpdate(prevProps: Props) {\n this.loadAlertTab();\n }\n\n componentWillUnmount() {\n if (this.component) {\n this.component.destroy();\n }\n }\n\n async loadAlertTab() {\n const { panel, angularPanelComponent } = this.props;\n\n if (!this.element || !angularPanelComponent || this.component) {\n return;\n }\n\n const scope = angularPanelComponent.getScope();\n\n // When full page reloading in edit mode the angular panel has on fully compiled & instantiated yet\n if (!scope.$$childHead) {\n setTimeout(() => {\n this.forceUpdate();\n });\n return;\n }\n\n this.panelCtrl = scope.$$childHead.ctrl;\n const loader = getAngularLoader();\n const template = '';\n\n const scopeProps = { ctrl: this.panelCtrl };\n\n this.component = loader.load(this.element, scopeProps, template);\n\n const validatonMessage = await getAlertingValidationMessage(\n panel.transformations,\n panel.targets,\n getDataSourceSrv(),\n panel.datasource\n );\n\n if (validatonMessage) {\n this.setState({ validatonMessage });\n }\n }\n\n stateHistory = (): EditorToolbarView => {\n return {\n title: 'State history',\n render: () => {\n return (\n \n );\n },\n };\n };\n\n deleteAlert = (): EditorToolbarView => {\n const { panel } = this.props;\n return {\n title: 'Delete',\n btnType: 'danger',\n onClick: () => {\n appEvents.emit(CoreEvents.showConfirmModal, {\n title: 'Delete Alert',\n text: 'Are you sure you want to delete this alert rule?',\n text2: 'You need to save dashboard for the delete to take effect',\n icon: 'fa-trash',\n yesText: 'Delete',\n onConfirm: () => {\n delete panel.alert;\n panel.thresholds = [];\n this.panelCtrl.alertState = null;\n this.panelCtrl.render();\n this.forceUpdate();\n },\n });\n },\n };\n };\n\n renderTestRuleResult = () => {\n const { panel, dashboard } = this.props;\n return ;\n };\n\n testRule = (): EditorToolbarView => ({\n title: 'Test Rule',\n render: () => this.renderTestRuleResult(),\n });\n\n onAddAlert = () => {\n this.panelCtrl._enableAlert();\n this.component.digest();\n this.forceUpdate();\n };\n\n switchToQueryTab = () => {\n const { changePanelEditorTab } = this.props;\n changePanelEditorTab(getPanelEditorTab(PanelEditorTabIds.Queries));\n };\n\n renderValidationMessage = () => {\n const { validatonMessage } = this.state;\n\n return (\n \n

    {validatonMessage}

    \n
    \n
    \n \n
    \n
    \n );\n };\n\n render() {\n const { alert, transformations } = this.props.panel;\n const { validatonMessage } = this.state;\n const hasTransformations = transformations && transformations.length > 0;\n\n if (!alert && validatonMessage) {\n return this.renderValidationMessage();\n }\n\n const toolbarItems = alert ? [this.stateHistory(), this.testRule(), this.deleteAlert()] : [];\n\n const model = {\n title: 'Panel has no alert rule defined',\n buttonIcon: 'gicon gicon-alert',\n onClick: this.onAddAlert,\n buttonTitle: 'Create Alert',\n };\n\n return (\n \n <>\n {alert && hasTransformations && (\n \n )}\n\n
    (this.element = element)} />\n {!alert && !validatonMessage && }\n \n \n );\n }\n}\n\nconst mapStateToProps: MapStateToProps = (state, props) => {\n return {\n angularPanelComponent: state.dashboard.panels[props.panel.id].angularComponent,\n };\n};\n\nconst mapDispatchToProps: MapDispatchToProps = { changePanelEditorTab };\n\nexport const AlertTab = connect(mapStateToProps, mapDispatchToProps)(UnConnectedAlertTab);\n"],"sourceRoot":""}