mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Eslint: no-duplicate-imports rule (bump grafana-eslint-config) (#30989)
* Eslint: no-duplicate-imports rule (bump grafana-eslint-config) * Chore: Fix duplicate imports (#31041) * Rebased this branch into eslint-no-duplicate-imports * updated some changes * merged uncaught duplicate imports * fixes frontend test- I hope * fixes e2e test- I hope Co-authored-by: Uchechukwu Obasi <obasiuche62@gmail.com>
This commit is contained in:
@@ -76,7 +76,7 @@
|
|||||||
"@emotion/core": "10.0.27",
|
"@emotion/core": "10.0.27",
|
||||||
"@grafana/api-documenter": "7.11.2",
|
"@grafana/api-documenter": "7.11.2",
|
||||||
"@grafana/api-extractor": "7.10.1",
|
"@grafana/api-extractor": "7.10.1",
|
||||||
"@grafana/eslint-config": "2.1.1",
|
"@grafana/eslint-config": "2.2.0",
|
||||||
"@rtsao/plugin-proposal-class-properties": "7.0.1-patch.1",
|
"@rtsao/plugin-proposal-class-properties": "7.0.1-patch.1",
|
||||||
"@testing-library/jest-dom": "5.11.5",
|
"@testing-library/jest-dom": "5.11.5",
|
||||||
"@testing-library/react": "11.1.2",
|
"@testing-library/react": "11.1.2",
|
||||||
|
@@ -1,7 +1,14 @@
|
|||||||
import EventEmitter from 'eventemitter3';
|
import EventEmitter from 'eventemitter3';
|
||||||
import { Unsubscribable, Observable } from 'rxjs';
|
import { Unsubscribable, Observable } from 'rxjs';
|
||||||
import { AppEvent } from './types';
|
import {
|
||||||
import { EventBus, LegacyEmitter, BusEventHandler, BusEventType, LegacyEventHandler, BusEvent } from './types';
|
EventBus,
|
||||||
|
LegacyEmitter,
|
||||||
|
BusEventHandler,
|
||||||
|
BusEventType,
|
||||||
|
LegacyEventHandler,
|
||||||
|
BusEvent,
|
||||||
|
AppEvent,
|
||||||
|
} from './types';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @alpha
|
* @alpha
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import { map } from 'rxjs/operators';
|
import { map } from 'rxjs/operators';
|
||||||
|
|
||||||
import { DataTransformerID } from './ids';
|
import { DataTransformerID } from './ids';
|
||||||
import { DataTransformerInfo, MatcherConfig } from '../../types/transformations';
|
import { DataTransformerInfo, MatcherConfig, FieldMatcher } from '../../types/transformations';
|
||||||
import { fieldReducers, reduceField, ReducerID } from '../fieldReducer';
|
import { fieldReducers, reduceField, ReducerID } from '../fieldReducer';
|
||||||
import { alwaysFieldMatcher, notTimeFieldMatcher } from '../matchers/predicates';
|
import { alwaysFieldMatcher, notTimeFieldMatcher } from '../matchers/predicates';
|
||||||
import { DataFrame, Field, FieldType } from '../../types/dataFrame';
|
import { DataFrame, Field, FieldType } from '../../types/dataFrame';
|
||||||
@@ -10,7 +10,6 @@ import { KeyValue } from '../../types/data';
|
|||||||
import { guessFieldTypeForField } from '../../dataframe/processDataFrame';
|
import { guessFieldTypeForField } from '../../dataframe/processDataFrame';
|
||||||
import { getFieldMatcher } from '../matchers';
|
import { getFieldMatcher } from '../matchers';
|
||||||
import { getFieldDisplayName } from '../../field';
|
import { getFieldDisplayName } from '../../field';
|
||||||
import { FieldMatcher } from '../../types/transformations';
|
|
||||||
|
|
||||||
export enum ReduceTransformerMode {
|
export enum ReduceTransformerMode {
|
||||||
SeriesToRows = 'seriesToRows', // default
|
SeriesToRows = 'seriesToRows', // default
|
||||||
|
@@ -29,7 +29,7 @@
|
|||||||
"@babel/core": "7.9.0",
|
"@babel/core": "7.9.0",
|
||||||
"@babel/preset-env": "7.9.0",
|
"@babel/preset-env": "7.9.0",
|
||||||
"@grafana/data": "next",
|
"@grafana/data": "next",
|
||||||
"@grafana/eslint-config": "2.1.0",
|
"@grafana/eslint-config": "2.2.0",
|
||||||
"@grafana/tsconfig": "^1.0.0-rc1",
|
"@grafana/tsconfig": "^1.0.0-rc1",
|
||||||
"@grafana/ui": "next",
|
"@grafana/ui": "next",
|
||||||
"@types/command-exists": "^1.2.0",
|
"@types/command-exists": "^1.2.0",
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
import { findModuleFiles, loadWebpackConfig } from './webpack.plugin.config';
|
import { findModuleFiles, loadWebpackConfig } from './webpack.plugin.config';
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
|
// eslint-disable-next-line no-duplicate-imports
|
||||||
import * as webpackConfig from './webpack.plugin.config';
|
import * as webpackConfig from './webpack.plugin.config';
|
||||||
|
|
||||||
jest.mock('./webpack/loaders', () => ({
|
jest.mock('./webpack/loaders', () => ({
|
||||||
|
@@ -15,17 +15,11 @@ import {
|
|||||||
getColorForTheme,
|
getColorForTheme,
|
||||||
FALLBACK_COLOR,
|
FALLBACK_COLOR,
|
||||||
TextDisplayOptions,
|
TextDisplayOptions,
|
||||||
|
VizOrientation,
|
||||||
} from '@grafana/data';
|
} from '@grafana/data';
|
||||||
import { selectors } from '@grafana/e2e-selectors';
|
import { selectors } from '@grafana/e2e-selectors';
|
||||||
|
|
||||||
// Components
|
|
||||||
import { FormattedValueDisplay } from '../FormattedValueDisplay/FormattedValueDisplay';
|
import { FormattedValueDisplay } from '../FormattedValueDisplay/FormattedValueDisplay';
|
||||||
|
|
||||||
// Utils
|
|
||||||
import { measureText, calculateFontSize } from '../../utils/measureText';
|
import { measureText, calculateFontSize } from '../../utils/measureText';
|
||||||
|
|
||||||
// Types
|
|
||||||
import { VizOrientation } from '@grafana/data';
|
|
||||||
import { Themeable } from '../../types';
|
import { Themeable } from '../../types';
|
||||||
|
|
||||||
const MIN_VALUE_HEIGHT = 18;
|
const MIN_VALUE_HEIGHT = 18;
|
||||||
|
@@ -4,15 +4,13 @@ import React, { PureComponent } from 'react';
|
|||||||
|
|
||||||
// Ignoring because I couldn't get @types/react-select work with Torkel's fork
|
// Ignoring because I couldn't get @types/react-select work with Torkel's fork
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import { default as ReactSelect } from '@torkelo/react-select';
|
import { default as ReactSelect, components } from '@torkelo/react-select';
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import Creatable from '@torkelo/react-select/creatable';
|
import Creatable from '@torkelo/react-select/creatable';
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import { CreatableProps } from 'react-select';
|
import { CreatableProps } from 'react-select';
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import { default as ReactAsyncSelect } from '@torkelo/react-select/async';
|
import { default as ReactAsyncSelect } from '@torkelo/react-select/async';
|
||||||
// @ts-ignore
|
|
||||||
import { components } from '@torkelo/react-select';
|
|
||||||
|
|
||||||
// Components
|
// Components
|
||||||
import { SelectOption } from './SelectOption';
|
import { SelectOption } from './SelectOption';
|
||||||
@@ -23,8 +21,7 @@ import IndicatorsContainer from './IndicatorsContainer';
|
|||||||
import NoOptionsMessage from './NoOptionsMessage';
|
import NoOptionsMessage from './NoOptionsMessage';
|
||||||
import resetSelectStyles from '../../../Select/resetSelectStyles';
|
import resetSelectStyles from '../../../Select/resetSelectStyles';
|
||||||
import { CustomScrollbar } from '../../../CustomScrollbar/CustomScrollbar';
|
import { CustomScrollbar } from '../../../CustomScrollbar/CustomScrollbar';
|
||||||
import { PopoverContent } from '../../../Tooltip/Tooltip';
|
import { PopoverContent, Tooltip } from '../../../Tooltip/Tooltip';
|
||||||
import { Tooltip } from '../../../Tooltip/Tooltip';
|
|
||||||
import { SelectableValue } from '@grafana/data';
|
import { SelectableValue } from '@grafana/data';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -1,8 +1,7 @@
|
|||||||
import { FieldColorModeId, toDataFrame } from '@grafana/data';
|
import { FieldColorModeId, toDataFrame, dateTime } from '@grafana/data';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { withCenteredStory } from '../../utils/storybook/withCenteredStory';
|
import { withCenteredStory } from '../../utils/storybook/withCenteredStory';
|
||||||
import { GraphNG } from './GraphNG';
|
import { GraphNG } from './GraphNG';
|
||||||
import { dateTime } from '@grafana/data';
|
|
||||||
import { LegendDisplayMode } from '../VizLegend/types';
|
import { LegendDisplayMode } from '../VizLegend/types';
|
||||||
import { prepDataForStorybook } from '../../utils/storybook/data';
|
import { prepDataForStorybook } from '../../utils/storybook/data';
|
||||||
import { useTheme } from '../../themes';
|
import { useTheme } from '../../themes';
|
||||||
|
@@ -15,6 +15,8 @@ import {
|
|||||||
reduceField,
|
reduceField,
|
||||||
TimeRange,
|
TimeRange,
|
||||||
TimeZone,
|
TimeZone,
|
||||||
|
getFieldColorModeForField,
|
||||||
|
getFieldSeriesColor,
|
||||||
} from '@grafana/data';
|
} from '@grafana/data';
|
||||||
import { useTheme } from '../../themes';
|
import { useTheme } from '../../themes';
|
||||||
import { UPlotChart } from '../uPlot/Plot';
|
import { UPlotChart } from '../uPlot/Plot';
|
||||||
@@ -31,7 +33,6 @@ import { LegendDisplayMode, VizLegendItem, VizLegendOptions } from '../VizLegend
|
|||||||
import { VizLegend } from '../VizLegend/VizLegend';
|
import { VizLegend } from '../VizLegend/VizLegend';
|
||||||
import { UPlotConfigBuilder } from '../uPlot/config/UPlotConfigBuilder';
|
import { UPlotConfigBuilder } from '../uPlot/config/UPlotConfigBuilder';
|
||||||
import { useRevision } from '../uPlot/hooks';
|
import { useRevision } from '../uPlot/hooks';
|
||||||
import { getFieldColorModeForField, getFieldSeriesColor } from '@grafana/data';
|
|
||||||
import { GraphNGLegendEvent, GraphNGLegendEventMode } from './types';
|
import { GraphNGLegendEvent, GraphNGLegendEventMode } from './types';
|
||||||
import { isNumber } from 'lodash';
|
import { isNumber } from 'lodash';
|
||||||
|
|
||||||
|
@@ -1,10 +1,9 @@
|
|||||||
import React, { FunctionComponent } from 'react';
|
import React, { FunctionComponent } from 'react';
|
||||||
import { css, cx } from 'emotion';
|
import { css, cx } from 'emotion';
|
||||||
import { Labels } from '@grafana/data';
|
import { GrafanaTheme, Labels } from '@grafana/data';
|
||||||
|
|
||||||
import { stylesFactory } from '../../themes';
|
import { stylesFactory } from '../../themes';
|
||||||
import { Themeable } from '../../types/theme';
|
import { Themeable } from '../../types/theme';
|
||||||
import { GrafanaTheme } from '@grafana/data';
|
|
||||||
import { withTheme } from '../../themes/ThemeContext';
|
import { withTheme } from '../../themes/ThemeContext';
|
||||||
|
|
||||||
// Levels are already encoded in color, filename is a Loki-ism
|
// Levels are already encoded in color, filename is a Loki-ism
|
||||||
|
@@ -1,11 +1,9 @@
|
|||||||
import React, { useContext, useRef, useState, useLayoutEffect, useEffect } from 'react';
|
import React, { useContext, useRef, useState, useLayoutEffect, useEffect } from 'react';
|
||||||
import { LogRowModel } from '@grafana/data';
|
import { GrafanaTheme, DataQueryError, LogRowModel } from '@grafana/data';
|
||||||
import { css, cx } from 'emotion';
|
import { css, cx } from 'emotion';
|
||||||
|
|
||||||
import { Alert } from '../Alert/Alert';
|
import { Alert } from '../Alert/Alert';
|
||||||
import { LogRowContextRows, LogRowContextQueryErrors, HasMoreContextRows } from './LogRowContextProvider';
|
import { LogRowContextRows, LogRowContextQueryErrors, HasMoreContextRows } from './LogRowContextProvider';
|
||||||
import { GrafanaTheme } from '@grafana/data';
|
|
||||||
import { DataQueryError } from '@grafana/data';
|
|
||||||
import { ThemeContext } from '../../themes/ThemeContext';
|
import { ThemeContext } from '../../themes/ThemeContext';
|
||||||
import { CustomScrollbar } from '../CustomScrollbar/CustomScrollbar';
|
import { CustomScrollbar } from '../CustomScrollbar/CustomScrollbar';
|
||||||
import { List } from '../List/List';
|
import { List } from '../List/List';
|
||||||
|
@@ -1,9 +1,15 @@
|
|||||||
import { LogRowModel, toDataFrame, Field, FieldCache, LogsSortOrder } from '@grafana/data';
|
import {
|
||||||
|
LogRowModel,
|
||||||
|
toDataFrame,
|
||||||
|
Field,
|
||||||
|
FieldCache,
|
||||||
|
LogsSortOrder,
|
||||||
|
DataQueryResponse,
|
||||||
|
DataQueryError,
|
||||||
|
} from '@grafana/data';
|
||||||
import React, { useState, useEffect } from 'react';
|
import React, { useState, useEffect } from 'react';
|
||||||
import useAsync from 'react-use/lib/useAsync';
|
import useAsync from 'react-use/lib/useAsync';
|
||||||
|
|
||||||
import { DataQueryResponse, DataQueryError } from '@grafana/data';
|
|
||||||
|
|
||||||
export interface RowContextOptions {
|
export interface RowContextOptions {
|
||||||
direction?: 'BACKWARD' | 'FORWARD';
|
direction?: 'BACKWARD' | 'FORWARD';
|
||||||
limit?: number;
|
limit?: number;
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
import { css } from 'emotion';
|
import { css } from 'emotion';
|
||||||
import { LogLevel } from '@grafana/data';
|
import { GrafanaTheme, LogLevel } from '@grafana/data';
|
||||||
import { GrafanaTheme } from '@grafana/data';
|
|
||||||
import { styleMixins, stylesFactory } from '../../themes';
|
import { styleMixins, stylesFactory } from '../../themes';
|
||||||
|
|
||||||
export const getLogRowStyles = stylesFactory((theme: GrafanaTheme, logLevel?: LogLevel) => {
|
export const getLogRowStyles = stylesFactory((theme: GrafanaTheme, logLevel?: LogLevel) => {
|
||||||
|
@@ -1,8 +1,7 @@
|
|||||||
import React, { FC } from 'react';
|
import React, { FC } from 'react';
|
||||||
import { ThresholdsConfig, ThresholdsMode, VizOrientation } from '@grafana/data';
|
import { ThresholdsConfig, ThresholdsMode, VizOrientation, getFieldConfigWithMinMax } from '@grafana/data';
|
||||||
import { BarGauge, BarGaugeDisplayMode } from '../BarGauge/BarGauge';
|
import { BarGauge, BarGaugeDisplayMode } from '../BarGauge/BarGauge';
|
||||||
import { TableCellProps, TableCellDisplayMode } from './types';
|
import { TableCellProps, TableCellDisplayMode } from './types';
|
||||||
import { getFieldConfigWithMinMax } from '@grafana/data';
|
|
||||||
|
|
||||||
const defaultScale: ThresholdsConfig = {
|
const defaultScale: ThresholdsConfig = {
|
||||||
mode: ThresholdsMode.Absolute,
|
mode: ThresholdsMode.Absolute,
|
||||||
|
@@ -1,9 +1,8 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import debounce from 'lodash/debounce';
|
import debounce from 'lodash/debounce';
|
||||||
import { css } from 'emotion';
|
import { css } from 'emotion';
|
||||||
import { DataFrame, CSVConfig, readCSV } from '@grafana/data';
|
import { GrafanaTheme, DataFrame, CSVConfig, readCSV } from '@grafana/data';
|
||||||
import { Icon } from '../Icon/Icon';
|
import { Icon } from '../Icon/Icon';
|
||||||
import { GrafanaTheme } from '@grafana/data';
|
|
||||||
import { Themeable } from '../../types/theme';
|
import { Themeable } from '../../types/theme';
|
||||||
import { TextArea } from '../TextArea/TextArea';
|
import { TextArea } from '../TextArea/TextArea';
|
||||||
import { stylesFactory, withTheme } from '../../themes';
|
import { stylesFactory, withTheme } from '../../themes';
|
||||||
|
@@ -12,8 +12,16 @@ import { stylesFactory } from '../../themes/stylesFactory';
|
|||||||
import { withTheme, useTheme } from '../../themes/ThemeContext';
|
import { withTheme, useTheme } from '../../themes/ThemeContext';
|
||||||
|
|
||||||
// Types
|
// Types
|
||||||
import { isDateTime, rangeUtil, GrafanaTheme, dateTimeFormat, timeZoneFormatUserFriendly } from '@grafana/data';
|
import {
|
||||||
import { TimeRange, TimeZone, dateMath } from '@grafana/data';
|
isDateTime,
|
||||||
|
rangeUtil,
|
||||||
|
GrafanaTheme,
|
||||||
|
dateTimeFormat,
|
||||||
|
timeZoneFormatUserFriendly,
|
||||||
|
TimeRange,
|
||||||
|
TimeZone,
|
||||||
|
dateMath,
|
||||||
|
} from '@grafana/data';
|
||||||
import { Themeable } from '../../types';
|
import { Themeable } from '../../types';
|
||||||
import { otherOptions, quickOptions } from './rangeOptions';
|
import { otherOptions, quickOptions } from './rangeOptions';
|
||||||
import { ButtonGroup, ToolbarButton } from '../Button';
|
import { ButtonGroup, ToolbarButton } from '../Button';
|
||||||
|
@@ -1,7 +1,6 @@
|
|||||||
import React, { ReactNode } from 'react';
|
import React, { ReactNode } from 'react';
|
||||||
import { css } from 'emotion';
|
import { css } from 'emotion';
|
||||||
import { TimeOption, TimeZone } from '@grafana/data';
|
import { TimeRange, TimeOption, TimeZone } from '@grafana/data';
|
||||||
import { TimeRange } from '@grafana/data';
|
|
||||||
import { TimePickerTitle } from './TimePickerTitle';
|
import { TimePickerTitle } from './TimePickerTitle';
|
||||||
import { TimeRangeOption } from './TimeRangeOption';
|
import { TimeRangeOption } from './TimeRangeOption';
|
||||||
import { mapOptionToTimeRange } from './mapper';
|
import { mapOptionToTimeRange } from './mapper';
|
||||||
|
@@ -1,8 +1,7 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { css, cx } from 'emotion';
|
import { css, cx } from 'emotion';
|
||||||
import { VizLegendSeriesIcon } from './VizLegendSeriesIcon';
|
import { VizLegendSeriesIcon } from './VizLegendSeriesIcon';
|
||||||
import { VizLegendItem } from './types';
|
import { VizLegendItem, SeriesColorChangeHandler } from './types';
|
||||||
import { SeriesColorChangeHandler } from './types';
|
|
||||||
import { VizLegendStatsList } from './VizLegendStatsList';
|
import { VizLegendStatsList } from './VizLegendStatsList';
|
||||||
import { useStyles } from '../../themes';
|
import { useStyles } from '../../themes';
|
||||||
import { GrafanaTheme } from '@grafana/data';
|
import { GrafanaTheme } from '@grafana/data';
|
||||||
|
@@ -1,8 +1,7 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { css, cx } from 'emotion';
|
import { css, cx } from 'emotion';
|
||||||
import { VizLegendSeriesIcon } from './VizLegendSeriesIcon';
|
import { VizLegendSeriesIcon } from './VizLegendSeriesIcon';
|
||||||
import { VizLegendItem } from './types';
|
import { VizLegendItem, SeriesColorChangeHandler } from './types';
|
||||||
import { SeriesColorChangeHandler } from './types';
|
|
||||||
import { useStyles } from '../../themes/ThemeContext';
|
import { useStyles } from '../../themes/ThemeContext';
|
||||||
import { styleMixins } from '../../themes';
|
import { styleMixins } from '../../themes';
|
||||||
import { GrafanaTheme, formattedValueToString } from '@grafana/data';
|
import { GrafanaTheme, formattedValueToString } from '@grafana/data';
|
||||||
|
@@ -18,13 +18,10 @@ import { css } from 'emotion';
|
|||||||
|
|
||||||
import GraphTicks from './GraphTicks';
|
import GraphTicks from './GraphTicks';
|
||||||
import Scrubber from './Scrubber';
|
import Scrubber from './Scrubber';
|
||||||
import { TUpdateViewRangeTimeFunction, UIButton, ViewRange, ViewRangeTimeUpdate } from '../..';
|
import { TUpdateViewRangeTimeFunction, UIButton, ViewRange, ViewRangeTimeUpdate, TNil } from '../..';
|
||||||
import { withTheme, Theme, autoColor } from '../../Theme';
|
import { withTheme, Theme, autoColor, createStyle } from '../../Theme';
|
||||||
import { TNil } from '../..';
|
|
||||||
import DraggableManager, { DraggableBounds, DraggingUpdate, EUpdateTypes } from '../../utils/DraggableManager';
|
import DraggableManager, { DraggableBounds, DraggingUpdate, EUpdateTypes } from '../../utils/DraggableManager';
|
||||||
|
|
||||||
import { createStyle } from '../../Theme';
|
|
||||||
|
|
||||||
export const getStyles = createStyle((theme: Theme) => {
|
export const getStyles = createStyle((theme: Theme) => {
|
||||||
// Need this cause emotion will merge emotion generated classes into single className if used with cx from emotion
|
// Need this cause emotion will merge emotion generated classes into single className if used with cx from emotion
|
||||||
// package and the selector won't work
|
// package and the selector won't work
|
||||||
|
@@ -34,7 +34,6 @@ import { getTraceLinks } from '../model/link-patterns';
|
|||||||
import ExternalLinks from '../common/ExternalLinks';
|
import ExternalLinks from '../common/ExternalLinks';
|
||||||
import { createStyle } from '../Theme';
|
import { createStyle } from '../Theme';
|
||||||
import { uTxMuted } from '../uberUtilityStyles';
|
import { uTxMuted } from '../uberUtilityStyles';
|
||||||
import { useMemo } from 'react';
|
|
||||||
|
|
||||||
const getStyles = createStyle((theme: Theme) => {
|
const getStyles = createStyle((theme: Theme) => {
|
||||||
const TracePageHeaderOverviewItemValueDetail = css`
|
const TracePageHeaderOverviewItemValueDetail = css`
|
||||||
@@ -223,7 +222,7 @@ export default function TracePageHeader(props: TracePageHeaderEmbedProps) {
|
|||||||
} = props;
|
} = props;
|
||||||
|
|
||||||
const styles = getStyles(useTheme());
|
const styles = getStyles(useTheme());
|
||||||
const links = useMemo(() => {
|
const links = React.useMemo(() => {
|
||||||
if (!trace) {
|
if (!trace) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
@@ -24,6 +24,7 @@ import { TNil } from '../types';
|
|||||||
import { UIButton, UIInputGroup } from '../uiElementsContext';
|
import { UIButton, UIInputGroup } from '../uiElementsContext';
|
||||||
import { createStyle } from '../Theme';
|
import { createStyle } from '../Theme';
|
||||||
import { ubFlexAuto, ubJustifyEnd } from '../uberUtilityStyles';
|
import { ubFlexAuto, ubJustifyEnd } from '../uberUtilityStyles';
|
||||||
|
// eslint-disable-next-line no-duplicate-imports
|
||||||
import { memo } from 'react';
|
import { memo } from 'react';
|
||||||
|
|
||||||
export const getStyles = createStyle(() => {
|
export const getStyles = createStyle(() => {
|
||||||
|
@@ -1,5 +1,4 @@
|
|||||||
import { DataQueryRequest, DataQuery, CoreApp } from '@grafana/data';
|
import { DataQueryRequest, DataQuery, CoreApp, dateTime } from '@grafana/data';
|
||||||
import { dateTime } from '@grafana/data';
|
|
||||||
|
|
||||||
export function getQueryOptions<TQuery extends DataQuery>(
|
export function getQueryOptions<TQuery extends DataQuery>(
|
||||||
options: Partial<DataQueryRequest<TQuery>>
|
options: Partial<DataQueryRequest<TQuery>>
|
||||||
|
@@ -8,9 +8,9 @@ import 'abortcontroller-polyfill/dist/polyfill-patch-fetch'; // fetch polyfill n
|
|||||||
import ttiPolyfill from 'tti-polyfill';
|
import ttiPolyfill from 'tti-polyfill';
|
||||||
|
|
||||||
import 'file-saver';
|
import 'file-saver';
|
||||||
import 'lodash';
|
|
||||||
import 'jquery';
|
import 'jquery';
|
||||||
import 'angular';
|
import _ from 'lodash';
|
||||||
|
import angular from 'angular';
|
||||||
import 'angular-route';
|
import 'angular-route';
|
||||||
import 'angular-sanitize';
|
import 'angular-sanitize';
|
||||||
import 'angular-bindonce';
|
import 'angular-bindonce';
|
||||||
@@ -19,12 +19,8 @@ import 'react-dom';
|
|||||||
|
|
||||||
import 'vendor/bootstrap/bootstrap';
|
import 'vendor/bootstrap/bootstrap';
|
||||||
import 'vendor/angular-other/angular-strap';
|
import 'vendor/angular-other/angular-strap';
|
||||||
|
|
||||||
import $ from 'jquery';
|
|
||||||
import angular from 'angular';
|
|
||||||
import config from 'app/core/config';
|
import config from 'app/core/config';
|
||||||
// @ts-ignore ignoring this for now, otherwise we would have to extend _ interface with move
|
// @ts-ignore ignoring this for now, otherwise we would have to extend _ interface with move
|
||||||
import _ from 'lodash';
|
|
||||||
import {
|
import {
|
||||||
AppEvents,
|
AppEvents,
|
||||||
setLocale,
|
setLocale,
|
||||||
|
@@ -1,10 +1,9 @@
|
|||||||
import React from 'react';
|
import React, { PureComponent } from 'react';
|
||||||
import config from 'app/core/config';
|
import config from 'app/core/config';
|
||||||
|
|
||||||
import { updateLocation } from 'app/core/actions';
|
import { updateLocation } from 'app/core/actions';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { StoreState } from 'app/types';
|
import { StoreState } from 'app/types';
|
||||||
import { PureComponent } from 'react';
|
|
||||||
import { getBackendSrv } from '@grafana/runtime';
|
import { getBackendSrv } from '@grafana/runtime';
|
||||||
import { hot } from 'react-hot-loader';
|
import { hot } from 'react-hot-loader';
|
||||||
import appEvents from 'app/core/app_events';
|
import appEvents from 'app/core/app_events';
|
||||||
|
@@ -1,7 +1,6 @@
|
|||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import _ from 'lodash';
|
import _, { debounce } from 'lodash';
|
||||||
import { AsyncSelect } from '@grafana/ui';
|
import { AsyncSelect } from '@grafana/ui';
|
||||||
import { debounce } from 'lodash';
|
|
||||||
import { getBackendSrv } from '@grafana/runtime';
|
import { getBackendSrv } from '@grafana/runtime';
|
||||||
|
|
||||||
export interface Team {
|
export interface Team {
|
||||||
|
@@ -1,12 +1,11 @@
|
|||||||
// Libraries
|
// Libraries
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import _ from 'lodash';
|
import _, { debounce } from 'lodash';
|
||||||
|
|
||||||
// Components
|
// Components
|
||||||
import { AsyncSelect } from '@grafana/ui';
|
import { AsyncSelect } from '@grafana/ui';
|
||||||
|
|
||||||
// Utils & Services
|
// Utils & Services
|
||||||
import { debounce } from 'lodash';
|
|
||||||
import { getBackendSrv } from '@grafana/runtime';
|
import { getBackendSrv } from '@grafana/runtime';
|
||||||
|
|
||||||
// Types
|
// Types
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
import { rangeUtil } from '@grafana/data';
|
import { rangeUtil, dateTime } from '@grafana/data';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import { dateTime } from '@grafana/data';
|
|
||||||
|
|
||||||
describe('rangeUtil', () => {
|
describe('rangeUtil', () => {
|
||||||
describe('Can get range grouped list of ranges', () => {
|
describe('Can get range grouped list of ranges', () => {
|
||||||
|
@@ -1,5 +1,4 @@
|
|||||||
import TimeSeries from 'app/core/time_series2';
|
import TimeSeries, { updateLegendValues } from 'app/core/time_series2';
|
||||||
import { updateLegendValues } from 'app/core/time_series2';
|
|
||||||
|
|
||||||
describe('TimeSeries', () => {
|
describe('TimeSeries', () => {
|
||||||
let points, series: any;
|
let points, series: any;
|
||||||
|
@@ -8,9 +8,9 @@ import {
|
|||||||
deleteAllFromRichHistory,
|
deleteAllFromRichHistory,
|
||||||
deleteQueryInRichHistory,
|
deleteQueryInRichHistory,
|
||||||
filterAndSortQueries,
|
filterAndSortQueries,
|
||||||
|
SortOrder,
|
||||||
} from './richHistory';
|
} from './richHistory';
|
||||||
import store from 'app/core/store';
|
import store from 'app/core/store';
|
||||||
import { SortOrder } from './richHistory';
|
|
||||||
import { dateTime, DataQuery } from '@grafana/data';
|
import { dateTime, DataQuery } from '@grafana/data';
|
||||||
|
|
||||||
const mock: any = {
|
const mock: any = {
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
import { DataQuery } from '@grafana/data';
|
import { DataQuery, DataTransformerConfig } from '@grafana/data';
|
||||||
import { DataSourceSrv } from '@grafana/runtime';
|
import { DataSourceSrv } from '@grafana/runtime';
|
||||||
import { DataTransformerConfig } from '@grafana/data';
|
|
||||||
|
|
||||||
export const getDefaultCondition = () => ({
|
export const getDefaultCondition = () => ({
|
||||||
type: 'query',
|
type: 'query',
|
||||||
|
@@ -1,8 +1,7 @@
|
|||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import { coreModule } from 'app/core/core';
|
import { coreModule } from 'app/core/core';
|
||||||
import { MetricsPanelCtrl } from 'app/plugins/sdk';
|
import { MetricsPanelCtrl } from 'app/plugins/sdk';
|
||||||
import { AnnotationEvent } from '@grafana/data';
|
import { AnnotationEvent, dateTime } from '@grafana/data';
|
||||||
import { dateTime } from '@grafana/data';
|
|
||||||
import { AnnotationsSrv } from './all';
|
import { AnnotationsSrv } from './all';
|
||||||
|
|
||||||
export class EventEditorCtrl {
|
export class EventEditorCtrl {
|
||||||
|
@@ -1,12 +1,11 @@
|
|||||||
// Libraries
|
// Libraries
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { dateMath, GrafanaTheme, TimeZone } from '@grafana/data';
|
import { dateMath, GrafanaTheme, TimeZone, TimeRange } from '@grafana/data';
|
||||||
import { css } from 'emotion';
|
import { css } from 'emotion';
|
||||||
|
|
||||||
// Types
|
// Types
|
||||||
import { DashboardModel } from '../../state';
|
import { DashboardModel } from '../../state';
|
||||||
import { LocationState, CoreEvents } from 'app/types';
|
import { LocationState, CoreEvents } from 'app/types';
|
||||||
import { TimeRange } from '@grafana/data';
|
|
||||||
|
|
||||||
// Components
|
// Components
|
||||||
import { RefreshPicker, withTheme, stylesFactory, Themeable, defaultIntervals } from '@grafana/ui';
|
import { RefreshPicker, withTheme, stylesFactory, Themeable, defaultIntervals } from '@grafana/ui';
|
||||||
|
@@ -10,9 +10,9 @@ import {
|
|||||||
SelectableValue,
|
SelectableValue,
|
||||||
toCSV,
|
toCSV,
|
||||||
transformDataFrame,
|
transformDataFrame,
|
||||||
|
CSVConfig,
|
||||||
} from '@grafana/data';
|
} from '@grafana/data';
|
||||||
import { Button, Container, Field, HorizontalGroup, Spinner, Select, Switch, Table, VerticalGroup } from '@grafana/ui';
|
import { Button, Container, Field, HorizontalGroup, Spinner, Select, Switch, Table, VerticalGroup } from '@grafana/ui';
|
||||||
import { CSVConfig } from '@grafana/data';
|
|
||||||
import { selectors } from '@grafana/e2e-selectors';
|
import { selectors } from '@grafana/e2e-selectors';
|
||||||
|
|
||||||
import { getPanelInspectorStyles } from './styles';
|
import { getPanelInspectorStyles } from './styles';
|
||||||
|
@@ -4,9 +4,10 @@ import {
|
|||||||
dashboardInitFetching,
|
dashboardInitFetching,
|
||||||
dashboardInitSlow,
|
dashboardInitSlow,
|
||||||
loadDashboardPermissions,
|
loadDashboardPermissions,
|
||||||
|
dashboardReducer,
|
||||||
|
initialState,
|
||||||
} from './reducers';
|
} from './reducers';
|
||||||
import { DashboardInitPhase, DashboardState, OrgRole, PermissionLevel } from 'app/types';
|
import { DashboardInitPhase, DashboardState, OrgRole, PermissionLevel } from 'app/types';
|
||||||
import { dashboardReducer, initialState } from './reducers';
|
|
||||||
import { DashboardModel } from './DashboardModel';
|
import { DashboardModel } from './DashboardModel';
|
||||||
|
|
||||||
describe('dashboard reducer', () => {
|
describe('dashboard reducer', () => {
|
||||||
|
@@ -4,12 +4,10 @@ import store from 'app/core/store';
|
|||||||
// Models
|
// Models
|
||||||
import { DashboardModel } from 'app/features/dashboard/state/DashboardModel';
|
import { DashboardModel } from 'app/features/dashboard/state/DashboardModel';
|
||||||
import { PanelModel } from 'app/features/dashboard/state/PanelModel';
|
import { PanelModel } from 'app/features/dashboard/state/PanelModel';
|
||||||
import { TimeRange, AppEvents } from '@grafana/data';
|
import { TimeRange, AppEvents, rangeUtil, dateMath } from '@grafana/data';
|
||||||
|
|
||||||
// Utils
|
// Utils
|
||||||
import { isString as _isString } from 'lodash';
|
import { isString as _isString } from 'lodash';
|
||||||
import { rangeUtil } from '@grafana/data';
|
|
||||||
import { dateMath } from '@grafana/data';
|
|
||||||
import appEvents from 'app/core/app_events';
|
import appEvents from 'app/core/app_events';
|
||||||
import config from 'app/core/config';
|
import config from 'app/core/config';
|
||||||
|
|
||||||
|
@@ -1,8 +1,7 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { shallow } from 'enzyme';
|
import { shallow } from 'enzyme';
|
||||||
import { DataSourceDashboards, Props } from './DataSourceDashboards';
|
import { DataSourceDashboards, Props } from './DataSourceDashboards';
|
||||||
import { DataSourceSettings } from '@grafana/data';
|
import { DataSourceSettings, NavModel } from '@grafana/data';
|
||||||
import { NavModel } from '@grafana/data';
|
|
||||||
import { PluginDashboard } from 'app/types';
|
import { PluginDashboard } from 'app/types';
|
||||||
|
|
||||||
const setup = (propOverrides?: object) => {
|
const setup = (propOverrides?: object) => {
|
||||||
|
@@ -17,8 +17,7 @@ import { getDataSource } from './state/selectors';
|
|||||||
|
|
||||||
// Types
|
// Types
|
||||||
import { PluginDashboard, StoreState } from 'app/types';
|
import { PluginDashboard, StoreState } from 'app/types';
|
||||||
import { DataSourceSettings } from '@grafana/data';
|
import { DataSourceSettings, NavModel } from '@grafana/data';
|
||||||
import { NavModel } from '@grafana/data';
|
|
||||||
|
|
||||||
export interface Props {
|
export interface Props {
|
||||||
navModel: NavModel;
|
navModel: NavModel;
|
||||||
|
@@ -1,10 +1,9 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { Badge, NodeGraph } from '@grafana/ui';
|
import { Badge, NodeGraph, Collapse } from '@grafana/ui';
|
||||||
import { DataFrame, TimeRange } from '@grafana/data';
|
import { DataFrame, TimeRange } from '@grafana/data';
|
||||||
import { ExploreId, StoreState } from '../../types';
|
import { ExploreId, StoreState } from '../../types';
|
||||||
import { splitOpen } from './state/main';
|
import { splitOpen } from './state/main';
|
||||||
import { connect, ConnectedProps } from 'react-redux';
|
import { connect, ConnectedProps } from 'react-redux';
|
||||||
import { Collapse } from '@grafana/ui';
|
|
||||||
import { useLinks } from './utils/links';
|
import { useLinks } from './utils/links';
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
|
@@ -2,8 +2,7 @@ import React from 'react';
|
|||||||
import { QueryRow, QueryRowProps } from './QueryRow';
|
import { QueryRow, QueryRowProps } from './QueryRow';
|
||||||
import { shallow } from 'enzyme';
|
import { shallow } from 'enzyme';
|
||||||
import { ExploreId } from 'app/types/explore';
|
import { ExploreId } from 'app/types/explore';
|
||||||
import { EventBusExtended } from '@grafana/data';
|
import { DataSourceApi, TimeRange, AbsoluteTimeRange, PanelData, EventBusExtended } from '@grafana/data';
|
||||||
import { DataSourceApi, TimeRange, AbsoluteTimeRange, PanelData } from '@grafana/data';
|
|
||||||
|
|
||||||
const setup = (propOverrides?: object) => {
|
const setup = (propOverrides?: object) => {
|
||||||
const props: QueryRowProps = {
|
const props: QueryRowProps = {
|
||||||
|
@@ -2,8 +2,7 @@ import React from 'react';
|
|||||||
import { mount } from 'enzyme';
|
import { mount } from 'enzyme';
|
||||||
import { GrafanaTheme } from '@grafana/data';
|
import { GrafanaTheme } from '@grafana/data';
|
||||||
import { ExploreId } from '../../../types/explore';
|
import { ExploreId } from '../../../types/explore';
|
||||||
import { RichHistory, RichHistoryProps } from './RichHistory';
|
import { RichHistory, RichHistoryProps, Tabs } from './RichHistory';
|
||||||
import { Tabs } from './RichHistory';
|
|
||||||
import { Tab } from '@grafana/ui';
|
import { Tab } from '@grafana/ui';
|
||||||
|
|
||||||
jest.mock('../state/selectors', () => ({ getExploreDatasources: jest.fn() }));
|
jest.mock('../state/selectors', () => ({ getExploreDatasources: jest.fn() }));
|
||||||
|
@@ -3,12 +3,11 @@ import React, { PureComponent } from 'react';
|
|||||||
//Services & Utils
|
//Services & Utils
|
||||||
import { RICH_HISTORY_SETTING_KEYS, SortOrder } from 'app/core/utils/richHistory';
|
import { RICH_HISTORY_SETTING_KEYS, SortOrder } from 'app/core/utils/richHistory';
|
||||||
import store from 'app/core/store';
|
import store from 'app/core/store';
|
||||||
import { withTheme, TabbedContainer, TabConfig } from '@grafana/ui';
|
import { Themeable, withTheme, TabbedContainer, TabConfig } from '@grafana/ui';
|
||||||
|
|
||||||
//Types
|
//Types
|
||||||
import { RichHistoryQuery, ExploreId } from 'app/types/explore';
|
import { RichHistoryQuery, ExploreId } from 'app/types/explore';
|
||||||
import { SelectableValue } from '@grafana/data';
|
import { SelectableValue } from '@grafana/data';
|
||||||
import { Themeable } from '@grafana/ui';
|
|
||||||
|
|
||||||
//Components
|
//Components
|
||||||
import { RichHistorySettings } from './RichHistorySettings';
|
import { RichHistorySettings } from './RichHistorySettings';
|
||||||
|
@@ -6,7 +6,7 @@ import { uniqBy, debounce } from 'lodash';
|
|||||||
import { RichHistoryQuery, ExploreId } from 'app/types/explore';
|
import { RichHistoryQuery, ExploreId } from 'app/types/explore';
|
||||||
|
|
||||||
// Utils
|
// Utils
|
||||||
import { stylesFactory, useTheme } from '@grafana/ui';
|
import { stylesFactory, useTheme, RangeSlider, Select } from '@grafana/ui';
|
||||||
import { GrafanaTheme, SelectableValue } from '@grafana/data';
|
import { GrafanaTheme, SelectableValue } from '@grafana/data';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
@@ -20,7 +20,6 @@ import {
|
|||||||
// Components
|
// Components
|
||||||
import RichHistoryCard from './RichHistoryCard';
|
import RichHistoryCard from './RichHistoryCard';
|
||||||
import { sortOrderOptions } from './RichHistory';
|
import { sortOrderOptions } from './RichHistory';
|
||||||
import { RangeSlider, Select } from '@grafana/ui';
|
|
||||||
import { FilterInput } from 'app/core/components/FilterInput/FilterInput';
|
import { FilterInput } from 'app/core/components/FilterInput/FilterInput';
|
||||||
|
|
||||||
export interface Props {
|
export interface Props {
|
||||||
|
@@ -6,14 +6,13 @@ import { uniqBy, debounce } from 'lodash';
|
|||||||
import { RichHistoryQuery, ExploreId } from 'app/types/explore';
|
import { RichHistoryQuery, ExploreId } from 'app/types/explore';
|
||||||
|
|
||||||
// Utils
|
// Utils
|
||||||
import { stylesFactory, useTheme } from '@grafana/ui';
|
import { stylesFactory, useTheme, Select } from '@grafana/ui';
|
||||||
import { GrafanaTheme, SelectableValue } from '@grafana/data';
|
import { GrafanaTheme, SelectableValue } from '@grafana/data';
|
||||||
import { filterAndSortQueries, createDatasourcesList, SortOrder } from 'app/core/utils/richHistory';
|
import { filterAndSortQueries, createDatasourcesList, SortOrder } from 'app/core/utils/richHistory';
|
||||||
|
|
||||||
// Components
|
// Components
|
||||||
import RichHistoryCard from './RichHistoryCard';
|
import RichHistoryCard from './RichHistoryCard';
|
||||||
import { sortOrderOptions } from './RichHistory';
|
import { sortOrderOptions } from './RichHistory';
|
||||||
import { Select } from '@grafana/ui';
|
|
||||||
import { FilterInput } from 'app/core/components/FilterInput/FilterInput';
|
import { FilterInput } from 'app/core/components/FilterInput/FilterInput';
|
||||||
|
|
||||||
export interface Props {
|
export interface Props {
|
||||||
|
@@ -1,10 +1,9 @@
|
|||||||
import { AnyAction } from 'redux';
|
import { AnyAction } from 'redux';
|
||||||
import { isEqual } from 'lodash';
|
import { isEqual } from 'lodash';
|
||||||
import { getQueryKeys } from 'app/core/utils/explore';
|
|
||||||
import { ExploreId, ExploreItemState } from 'app/types/explore';
|
import { ExploreId, ExploreItemState } from 'app/types/explore';
|
||||||
import { queryReducer } from './query';
|
import { queryReducer, runQueries, setQueriesAction } from './query';
|
||||||
import { datasourceReducer } from './datasource';
|
import { datasourceReducer } from './datasource';
|
||||||
import { timeReducer } from './time';
|
import { timeReducer, updateTime } from './time';
|
||||||
import { historyReducer } from './history';
|
import { historyReducer } from './history';
|
||||||
import { makeExplorePaneState, makeInitialUpdateState, loadAndInitDatasource, createEmptyQueryResponse } from './utils';
|
import { makeExplorePaneState, makeInitialUpdateState, loadAndInitDatasource, createEmptyQueryResponse } from './utils';
|
||||||
import { createAction, PayloadAction } from '@reduxjs/toolkit';
|
import { createAction, PayloadAction } from '@reduxjs/toolkit';
|
||||||
@@ -23,14 +22,13 @@ import {
|
|||||||
ensureQueries,
|
ensureQueries,
|
||||||
generateNewKeyAndAddRefIdIfMissing,
|
generateNewKeyAndAddRefIdIfMissing,
|
||||||
getTimeRangeFromUrl,
|
getTimeRangeFromUrl,
|
||||||
|
getQueryKeys,
|
||||||
} from 'app/core/utils/explore';
|
} from 'app/core/utils/explore';
|
||||||
// Types
|
// Types
|
||||||
import { ThunkResult } from 'app/types';
|
import { ThunkResult } from 'app/types';
|
||||||
import { getTimeZone } from 'app/features/profile/state/selectors';
|
import { getTimeZone } from 'app/features/profile/state/selectors';
|
||||||
import { updateLocation } from '../../../core/actions';
|
import { updateLocation } from '../../../core/actions';
|
||||||
import { serializeStateToUrlParam } from '@grafana/data/src/utils/url';
|
import { serializeStateToUrlParam } from '@grafana/data/src/utils/url';
|
||||||
import { runQueries, setQueriesAction } from './query';
|
|
||||||
import { updateTime } from './time';
|
|
||||||
import { toRawTimeRange } from '../utils/time';
|
import { toRawTimeRange } from '../utils/time';
|
||||||
import { getDataSourceSrv } from '@grafana/runtime';
|
import { getDataSourceSrv } from '@grafana/runtime';
|
||||||
|
|
||||||
|
@@ -3,9 +3,8 @@ import { useDispatch } from 'react-redux';
|
|||||||
import { RefreshPicker } from '@grafana/ui';
|
import { RefreshPicker } from '@grafana/ui';
|
||||||
|
|
||||||
import { changeRefreshInterval } from './state/time';
|
import { changeRefreshInterval } from './state/time';
|
||||||
import { setPausedStateAction } from './state/query';
|
import { setPausedStateAction, runQueries } from './state/query';
|
||||||
import { ExploreId } from '../../types';
|
import { ExploreId } from '../../types';
|
||||||
import { runQueries } from './state/query';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hook that gives you all the functions needed to control the live tailing.
|
* Hook that gives you all the functions needed to control the live tailing.
|
||||||
|
@@ -1,13 +1,12 @@
|
|||||||
import { IScope } from 'angular';
|
import { IScope } from 'angular';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import { AppEvents } from '@grafana/data';
|
import { AppEvents } from '@grafana/data';
|
||||||
import { OrgRole } from 'app/types';
|
import { OrgRole, AppEventEmitter, CoreEvents } from 'app/types';
|
||||||
import { getBackendSrv } from '@grafana/runtime';
|
import { getBackendSrv } from '@grafana/runtime';
|
||||||
|
|
||||||
import coreModule from '../../core/core_module';
|
import coreModule from '../../core/core_module';
|
||||||
import config from '../../core/config';
|
import config from '../../core/config';
|
||||||
import { NavModelSrv } from 'app/core/nav_model_srv';
|
import { NavModelSrv } from 'app/core/nav_model_srv';
|
||||||
import { AppEventEmitter, CoreEvents } from 'app/types';
|
|
||||||
import { promiseToDigest } from '../../core/utils/promiseToDigest';
|
import { promiseToDigest } from '../../core/utils/promiseToDigest';
|
||||||
|
|
||||||
export class PlaylistsCtrl {
|
export class PlaylistsCtrl {
|
||||||
|
@@ -1,4 +1,3 @@
|
|||||||
import '../playlist_edit_ctrl';
|
|
||||||
import { PlaylistEditCtrl } from '../playlist_edit_ctrl';
|
import { PlaylistEditCtrl } from '../playlist_edit_ctrl';
|
||||||
import { ILocationService, IScope } from 'angular';
|
import { ILocationService, IScope } from 'angular';
|
||||||
import { AppEventEmitter } from '../../../types';
|
import { AppEventEmitter } from '../../../types';
|
||||||
|
@@ -21,17 +21,6 @@ import config from 'app/core/config';
|
|||||||
import TimeSeries from 'app/core/time_series2';
|
import TimeSeries from 'app/core/time_series2';
|
||||||
import TableModel from 'app/core/table_model';
|
import TableModel from 'app/core/table_model';
|
||||||
import { coreModule, appEvents, contextSrv } from 'app/core/core';
|
import { coreModule, appEvents, contextSrv } from 'app/core/core';
|
||||||
import {
|
|
||||||
DataSourcePlugin,
|
|
||||||
AppPlugin,
|
|
||||||
PanelPlugin,
|
|
||||||
PluginMeta,
|
|
||||||
DataSourcePluginMeta,
|
|
||||||
dateMath,
|
|
||||||
DataSourceApi,
|
|
||||||
DataSourceJsonData,
|
|
||||||
DataQuery,
|
|
||||||
} from '@grafana/data';
|
|
||||||
import * as flatten from 'app/core/utils/flatten';
|
import * as flatten from 'app/core/utils/flatten';
|
||||||
import * as ticks from 'app/core/utils/ticks';
|
import * as ticks from 'app/core/utils/ticks';
|
||||||
import { BackendSrv, getBackendSrv } from 'app/core/services/backend_srv';
|
import { BackendSrv, getBackendSrv } from 'app/core/services/backend_srv';
|
||||||
@@ -129,7 +118,7 @@ exposeToPlugin('app/core/services/backend_srv', {
|
|||||||
});
|
});
|
||||||
|
|
||||||
exposeToPlugin('app/plugins/sdk', sdk);
|
exposeToPlugin('app/plugins/sdk', sdk);
|
||||||
exposeToPlugin('app/core/utils/datemath', dateMath);
|
exposeToPlugin('app/core/utils/datemath', grafanaData.dateMath);
|
||||||
exposeToPlugin('app/core/utils/flatten', flatten);
|
exposeToPlugin('app/core/utils/flatten', flatten);
|
||||||
exposeToPlugin('app/core/utils/kbn', kbn);
|
exposeToPlugin('app/core/utils/kbn', kbn);
|
||||||
exposeToPlugin('app/core/utils/ticks', ticks);
|
exposeToPlugin('app/core/utils/ticks', ticks);
|
||||||
@@ -191,7 +180,7 @@ export async function importPluginModule(path: string): Promise<any> {
|
|||||||
return grafanaRuntime.SystemJS.import(path);
|
return grafanaRuntime.SystemJS.import(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function importDataSourcePlugin(meta: DataSourcePluginMeta): Promise<GenericDataSourcePlugin> {
|
export function importDataSourcePlugin(meta: grafanaData.DataSourcePluginMeta): Promise<GenericDataSourcePlugin> {
|
||||||
return importPluginModule(meta.module).then((pluginExports) => {
|
return importPluginModule(meta.module).then((pluginExports) => {
|
||||||
if (pluginExports.plugin) {
|
if (pluginExports.plugin) {
|
||||||
const dsPlugin = pluginExports.plugin as GenericDataSourcePlugin;
|
const dsPlugin = pluginExports.plugin as GenericDataSourcePlugin;
|
||||||
@@ -200,10 +189,10 @@ export function importDataSourcePlugin(meta: DataSourcePluginMeta): Promise<Gene
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (pluginExports.Datasource) {
|
if (pluginExports.Datasource) {
|
||||||
const dsPlugin = new DataSourcePlugin<
|
const dsPlugin = new grafanaData.DataSourcePlugin<
|
||||||
DataSourceApi<DataQuery, DataSourceJsonData>,
|
grafanaData.DataSourceApi<grafanaData.DataQuery, grafanaData.DataSourceJsonData>,
|
||||||
DataQuery,
|
grafanaData.DataQuery,
|
||||||
DataSourceJsonData
|
grafanaData.DataSourceJsonData
|
||||||
>(pluginExports.Datasource);
|
>(pluginExports.Datasource);
|
||||||
dsPlugin.setComponentsFromLegacyExports(pluginExports);
|
dsPlugin.setComponentsFromLegacyExports(pluginExports);
|
||||||
dsPlugin.meta = meta;
|
dsPlugin.meta = meta;
|
||||||
@@ -214,9 +203,9 @@ export function importDataSourcePlugin(meta: DataSourcePluginMeta): Promise<Gene
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function importAppPlugin(meta: PluginMeta): Promise<AppPlugin> {
|
export function importAppPlugin(meta: grafanaData.PluginMeta): Promise<grafanaData.AppPlugin> {
|
||||||
return importPluginModule(meta.module).then((pluginExports) => {
|
return importPluginModule(meta.module).then((pluginExports) => {
|
||||||
const plugin = pluginExports.plugin ? (pluginExports.plugin as AppPlugin) : new AppPlugin();
|
const plugin = pluginExports.plugin ? (pluginExports.plugin as grafanaData.AppPlugin) : new grafanaData.AppPlugin();
|
||||||
plugin.init(meta);
|
plugin.init(meta);
|
||||||
plugin.meta = meta;
|
plugin.meta = meta;
|
||||||
plugin.setComponentsFromLegacyExports(pluginExports);
|
plugin.setComponentsFromLegacyExports(pluginExports);
|
||||||
@@ -228,11 +217,11 @@ import { getPanelPluginNotFound, getPanelPluginLoadError } from '../dashboard/da
|
|||||||
import { GenericDataSourcePlugin } from '../datasources/settings/PluginSettings';
|
import { GenericDataSourcePlugin } from '../datasources/settings/PluginSettings';
|
||||||
|
|
||||||
interface PanelCache {
|
interface PanelCache {
|
||||||
[key: string]: Promise<PanelPlugin>;
|
[key: string]: Promise<grafanaData.PanelPlugin>;
|
||||||
}
|
}
|
||||||
const panelCache: PanelCache = {};
|
const panelCache: PanelCache = {};
|
||||||
|
|
||||||
export function importPanelPlugin(id: string): Promise<PanelPlugin> {
|
export function importPanelPlugin(id: string): Promise<grafanaData.PanelPlugin> {
|
||||||
const loaded = panelCache[id];
|
const loaded = panelCache[id];
|
||||||
|
|
||||||
if (loaded) {
|
if (loaded) {
|
||||||
@@ -248,9 +237,9 @@ export function importPanelPlugin(id: string): Promise<PanelPlugin> {
|
|||||||
panelCache[id] = importPluginModule(meta.module)
|
panelCache[id] = importPluginModule(meta.module)
|
||||||
.then((pluginExports) => {
|
.then((pluginExports) => {
|
||||||
if (pluginExports.plugin) {
|
if (pluginExports.plugin) {
|
||||||
return pluginExports.plugin as PanelPlugin;
|
return pluginExports.plugin as grafanaData.PanelPlugin;
|
||||||
} else if (pluginExports.PanelCtrl) {
|
} else if (pluginExports.PanelCtrl) {
|
||||||
const plugin = new PanelPlugin(null);
|
const plugin = new grafanaData.PanelPlugin(null);
|
||||||
plugin.angularPanelCtrl = pluginExports.PanelCtrl;
|
plugin.angularPanelCtrl = pluginExports.PanelCtrl;
|
||||||
return plugin;
|
return plugin;
|
||||||
}
|
}
|
||||||
|
@@ -2,10 +2,9 @@ import angular from 'angular';
|
|||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
|
|
||||||
import { getPluginSettings } from './PluginSettingsCache';
|
import { getPluginSettings } from './PluginSettingsCache';
|
||||||
import { PluginMeta } from '@grafana/data';
|
import { PluginMeta, AppEvents } from '@grafana/data';
|
||||||
import { NavModelSrv } from 'app/core/core';
|
import { NavModelSrv } from 'app/core/core';
|
||||||
import { GrafanaRootScope } from 'app/routes/GrafanaCtrl';
|
import { GrafanaRootScope } from 'app/routes/GrafanaCtrl';
|
||||||
import { AppEvents } from '@grafana/data';
|
|
||||||
import { promiseToDigest } from '../../core/utils/promiseToDigest';
|
import { promiseToDigest } from '../../core/utils/promiseToDigest';
|
||||||
|
|
||||||
export class AppPageCtrl {
|
export class AppPageCtrl {
|
||||||
|
@@ -1,4 +1,3 @@
|
|||||||
import 'app/features/plugins/datasource_srv';
|
|
||||||
import { DatasourceSrv } from 'app/features/plugins/datasource_srv';
|
import { DatasourceSrv } from 'app/features/plugins/datasource_srv';
|
||||||
import { DataSourceInstanceSettings, DataSourcePlugin } from '@grafana/data';
|
import { DataSourceInstanceSettings, DataSourcePlugin } from '@grafana/data';
|
||||||
|
|
||||||
|
@@ -1,9 +1,8 @@
|
|||||||
import React from 'react';
|
import React, { useState } from 'react';
|
||||||
import { css, cx } from 'emotion';
|
import { css, cx } from 'emotion';
|
||||||
import { DataQuery, GrafanaTheme } from '@grafana/data';
|
import { DataQuery, GrafanaTheme } from '@grafana/data';
|
||||||
import { Icon, Input, stylesFactory, useTheme, FieldValidationMessage } from '@grafana/ui';
|
import { Icon, Input, stylesFactory, useTheme, FieldValidationMessage } from '@grafana/ui';
|
||||||
import { selectors } from '@grafana/e2e-selectors';
|
import { selectors } from '@grafana/e2e-selectors';
|
||||||
import { useState } from 'react';
|
|
||||||
|
|
||||||
export interface Props {
|
export interface Props {
|
||||||
query: DataQuery;
|
query: DataQuery;
|
||||||
|
@@ -9,14 +9,6 @@ jest.mock('@grafana/data', () => ({
|
|||||||
import { PanelQueryRunner } from './PanelQueryRunner';
|
import { PanelQueryRunner } from './PanelQueryRunner';
|
||||||
// Importing this way to be able to spy on grafana/data
|
// Importing this way to be able to spy on grafana/data
|
||||||
import * as grafanaData from '@grafana/data';
|
import * as grafanaData from '@grafana/data';
|
||||||
import {
|
|
||||||
DataConfigSource,
|
|
||||||
DataQueryRequest,
|
|
||||||
DataTransformerConfig,
|
|
||||||
GrafanaTheme,
|
|
||||||
PanelData,
|
|
||||||
ScopedVars,
|
|
||||||
} from '@grafana/data';
|
|
||||||
import { DashboardModel } from '../../dashboard/state/index';
|
import { DashboardModel } from '../../dashboard/state/index';
|
||||||
import { setDataSourceSrv, setEchoSrv } from '@grafana/runtime';
|
import { setDataSourceSrv, setEchoSrv } from '@grafana/runtime';
|
||||||
import { Echo } from '../../../core/services/echo/Echo';
|
import { Echo } from '../../../core/services/echo/Echo';
|
||||||
@@ -48,21 +40,25 @@ interface ScenarioContext {
|
|||||||
maxDataPoints?: number | null;
|
maxDataPoints?: number | null;
|
||||||
dsInterval?: string;
|
dsInterval?: string;
|
||||||
minInterval?: string;
|
minInterval?: string;
|
||||||
scopedVars: ScopedVars;
|
scopedVars: grafanaData.ScopedVars;
|
||||||
|
|
||||||
// Filled in by the Scenario runner
|
// Filled in by the Scenario runner
|
||||||
events?: PanelData[];
|
events?: grafanaData.PanelData[];
|
||||||
res?: PanelData;
|
res?: grafanaData.PanelData;
|
||||||
queryCalledWith?: DataQueryRequest;
|
queryCalledWith?: grafanaData.DataQueryRequest;
|
||||||
runner: PanelQueryRunner;
|
runner: PanelQueryRunner;
|
||||||
}
|
}
|
||||||
|
|
||||||
type ScenarioFn = (ctx: ScenarioContext) => void;
|
type ScenarioFn = (ctx: ScenarioContext) => void;
|
||||||
|
|
||||||
function describeQueryRunnerScenario(description: string, scenarioFn: ScenarioFn, panelConfig?: DataConfigSource) {
|
function describeQueryRunnerScenario(
|
||||||
|
description: string,
|
||||||
|
scenarioFn: ScenarioFn,
|
||||||
|
panelConfig?: grafanaData.DataConfigSource
|
||||||
|
) {
|
||||||
describe(description, () => {
|
describe(description, () => {
|
||||||
let setupFn = () => {};
|
let setupFn = () => {};
|
||||||
const defaultPanelConfig: DataConfigSource = {
|
const defaultPanelConfig: grafanaData.DataConfigSource = {
|
||||||
getFieldOverrideOptions: () => undefined,
|
getFieldOverrideOptions: () => undefined,
|
||||||
getTransformations: () => undefined,
|
getTransformations: () => undefined,
|
||||||
};
|
};
|
||||||
@@ -98,7 +94,7 @@ function describeQueryRunnerScenario(description: string, scenarioFn: ScenarioFn
|
|||||||
const datasource: any = {
|
const datasource: any = {
|
||||||
name: 'TestDB',
|
name: 'TestDB',
|
||||||
interval: ctx.dsInterval,
|
interval: ctx.dsInterval,
|
||||||
query: (options: DataQueryRequest) => {
|
query: (options: grafanaData.DataQueryRequest) => {
|
||||||
ctx.queryCalledWith = options;
|
ctx.queryCalledWith = options;
|
||||||
return Promise.resolve(response);
|
return Promise.resolve(response);
|
||||||
},
|
},
|
||||||
@@ -121,7 +117,7 @@ function describeQueryRunnerScenario(description: string, scenarioFn: ScenarioFn
|
|||||||
|
|
||||||
ctx.runner = new PanelQueryRunner(panelConfig || defaultPanelConfig);
|
ctx.runner = new PanelQueryRunner(panelConfig || defaultPanelConfig);
|
||||||
ctx.runner.getData({ withTransforms: true, withFieldConfig: true }).subscribe({
|
ctx.runner.getData({ withTransforms: true, withFieldConfig: true }).subscribe({
|
||||||
next: (data: PanelData) => {
|
next: (data: grafanaData.PanelData) => {
|
||||||
ctx.res = data;
|
ctx.res = data;
|
||||||
ctx.events?.push(data);
|
ctx.events?.push(data);
|
||||||
},
|
},
|
||||||
@@ -221,7 +217,7 @@ describe('PanelQueryRunner', () => {
|
|||||||
(ctx) => {
|
(ctx) => {
|
||||||
it('should apply when field override options are set', async () => {
|
it('should apply when field override options are set', async () => {
|
||||||
ctx.runner.getData({ withTransforms: true, withFieldConfig: true }).subscribe({
|
ctx.runner.getData({ withTransforms: true, withFieldConfig: true }).subscribe({
|
||||||
next: (data: PanelData) => {
|
next: (data: grafanaData.PanelData) => {
|
||||||
return data;
|
return data;
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -238,7 +234,7 @@ describe('PanelQueryRunner', () => {
|
|||||||
overrides: [],
|
overrides: [],
|
||||||
},
|
},
|
||||||
replaceVariables: (v) => v,
|
replaceVariables: (v) => v,
|
||||||
theme: {} as GrafanaTheme,
|
theme: {} as grafanaData.GrafanaTheme,
|
||||||
}),
|
}),
|
||||||
getTransformations: () => undefined,
|
getTransformations: () => undefined,
|
||||||
}
|
}
|
||||||
@@ -252,7 +248,7 @@ describe('PanelQueryRunner', () => {
|
|||||||
spy.mockClear();
|
spy.mockClear();
|
||||||
|
|
||||||
ctx.runner.getData({ withTransforms: true, withFieldConfig: true }).subscribe({
|
ctx.runner.getData({ withTransforms: true, withFieldConfig: true }).subscribe({
|
||||||
next: (data: PanelData) => {
|
next: (data: grafanaData.PanelData) => {
|
||||||
return data;
|
return data;
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -263,7 +259,7 @@ describe('PanelQueryRunner', () => {
|
|||||||
{
|
{
|
||||||
getFieldOverrideOptions: () => undefined,
|
getFieldOverrideOptions: () => undefined,
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
getTransformations: () => [({} as unknown) as DataTransformerConfig],
|
getTransformations: () => [({} as unknown) as grafanaData.DataTransformerConfig],
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -274,7 +270,7 @@ describe('PanelQueryRunner', () => {
|
|||||||
const spy = jest.spyOn(grafanaData, 'transformDataFrame');
|
const spy = jest.spyOn(grafanaData, 'transformDataFrame');
|
||||||
spy.mockClear();
|
spy.mockClear();
|
||||||
ctx.runner.getData({ withTransforms: false, withFieldConfig: true }).subscribe({
|
ctx.runner.getData({ withTransforms: false, withFieldConfig: true }).subscribe({
|
||||||
next: (data: PanelData) => {
|
next: (data: grafanaData.PanelData) => {
|
||||||
return data;
|
return data;
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -284,7 +280,7 @@ describe('PanelQueryRunner', () => {
|
|||||||
|
|
||||||
it('should not apply field config when applyFieldConfig option is false', async () => {
|
it('should not apply field config when applyFieldConfig option is false', async () => {
|
||||||
ctx.runner.getData({ withFieldConfig: false, withTransforms: true }).subscribe({
|
ctx.runner.getData({ withFieldConfig: false, withTransforms: true }).subscribe({
|
||||||
next: (data: PanelData) => {
|
next: (data: grafanaData.PanelData) => {
|
||||||
return data;
|
return data;
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -302,10 +298,10 @@ describe('PanelQueryRunner', () => {
|
|||||||
overrides: [],
|
overrides: [],
|
||||||
},
|
},
|
||||||
replaceVariables: (v) => v,
|
replaceVariables: (v) => v,
|
||||||
theme: {} as GrafanaTheme,
|
theme: {} as grafanaData.GrafanaTheme,
|
||||||
}),
|
}),
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
getTransformations: () => [({} as unknown) as DataTransformerConfig],
|
getTransformations: () => [({} as unknown) as grafanaData.DataTransformerConfig],
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -316,7 +312,7 @@ describe('PanelQueryRunner', () => {
|
|||||||
const spy = jest.spyOn(grafanaData, 'transformDataFrame');
|
const spy = jest.spyOn(grafanaData, 'transformDataFrame');
|
||||||
spy.mockClear();
|
spy.mockClear();
|
||||||
ctx.runner.getData({ withTransforms: false, withFieldConfig: true }).subscribe({
|
ctx.runner.getData({ withTransforms: false, withFieldConfig: true }).subscribe({
|
||||||
next: (data: PanelData) => {
|
next: (data: grafanaData.PanelData) => {
|
||||||
return data;
|
return data;
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -326,7 +322,7 @@ describe('PanelQueryRunner', () => {
|
|||||||
|
|
||||||
it('should not apply field config when applyFieldConfig option is false', async () => {
|
it('should not apply field config when applyFieldConfig option is false', async () => {
|
||||||
ctx.runner.getData({ withFieldConfig: false, withTransforms: true }).subscribe({
|
ctx.runner.getData({ withFieldConfig: false, withTransforms: true }).subscribe({
|
||||||
next: (data: PanelData) => {
|
next: (data: grafanaData.PanelData) => {
|
||||||
return data;
|
return data;
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -344,7 +340,7 @@ describe('PanelQueryRunner', () => {
|
|||||||
overrides: [],
|
overrides: [],
|
||||||
},
|
},
|
||||||
replaceVariables: (v) => v,
|
replaceVariables: (v) => v,
|
||||||
theme: {} as GrafanaTheme,
|
theme: {} as grafanaData.GrafanaTheme,
|
||||||
}),
|
}),
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
getTransformations: () => [{}],
|
getTransformations: () => [{}],
|
||||||
|
@@ -1,8 +1,7 @@
|
|||||||
import { toDataQueryError } from '@grafana/runtime';
|
import { toDataQueryError, getDataSourceSrv } from '@grafana/runtime';
|
||||||
import { updateOptions } from '../state/actions';
|
import { updateOptions } from '../state/actions';
|
||||||
import { QueryVariableModel } from '../types';
|
import { QueryVariableModel } from '../types';
|
||||||
import { ThunkResult } from '../../../types';
|
import { ThunkResult } from '../../../types';
|
||||||
import { getDataSourceSrv } from '@grafana/runtime';
|
|
||||||
import { getVariable } from '../state/selectors';
|
import { getVariable } from '../state/selectors';
|
||||||
import { addVariableEditorError, changeVariableEditorExtended, removeVariableEditorError } from '../editor/reducer';
|
import { addVariableEditorError, changeVariableEditorExtended, removeVariableEditorError } from '../editor/reducer';
|
||||||
import { changeVariableProp } from '../state/sharedReducer';
|
import { changeVariableProp } from '../state/sharedReducer';
|
||||||
|
@@ -3,13 +3,13 @@ import { InlineFormLabel, LegacyForms, Button } from '@grafana/ui';
|
|||||||
const { Select, Input } = LegacyForms;
|
const { Select, Input } = LegacyForms;
|
||||||
import {
|
import {
|
||||||
AppEvents,
|
AppEvents,
|
||||||
|
SelectableValue,
|
||||||
DataSourcePluginOptionsEditorProps,
|
DataSourcePluginOptionsEditorProps,
|
||||||
onUpdateDatasourceJsonDataOptionSelect,
|
onUpdateDatasourceJsonDataOptionSelect,
|
||||||
onUpdateDatasourceResetOption,
|
onUpdateDatasourceResetOption,
|
||||||
onUpdateDatasourceJsonDataOption,
|
onUpdateDatasourceJsonDataOption,
|
||||||
onUpdateDatasourceSecureJsonDataOption,
|
onUpdateDatasourceSecureJsonDataOption,
|
||||||
} from '@grafana/data';
|
} from '@grafana/data';
|
||||||
import { SelectableValue } from '@grafana/data';
|
|
||||||
import { getDatasourceSrv } from 'app/features/plugins/datasource_srv';
|
import { getDatasourceSrv } from 'app/features/plugins/datasource_srv';
|
||||||
import { CloudWatchDatasource } from '../datasource';
|
import { CloudWatchDatasource } from '../datasource';
|
||||||
import { CloudWatchJsonData, CloudWatchSecureJsonData } from '../types';
|
import { CloudWatchJsonData, CloudWatchSecureJsonData } from '../types';
|
||||||
|
@@ -9,7 +9,6 @@ import {
|
|||||||
} from '@grafana/data';
|
} from '@grafana/data';
|
||||||
|
|
||||||
import * as redux from 'app/store/store';
|
import * as redux from 'app/store/store';
|
||||||
import '../datasource';
|
|
||||||
import { CloudWatchDatasource, MAX_ATTEMPTS } from '../datasource';
|
import { CloudWatchDatasource, MAX_ATTEMPTS } from '../datasource';
|
||||||
import { TemplateSrv } from 'app/features/templating/template_srv';
|
import { TemplateSrv } from 'app/features/templating/template_srv';
|
||||||
import { CloudWatchLogsQuery, CloudWatchLogsQueryStatus, CloudWatchMetricsQuery, LogAction } from '../types';
|
import { CloudWatchLogsQuery, CloudWatchLogsQueryStatus, CloudWatchMetricsQuery, LogAction } from '../types';
|
||||||
|
@@ -3,11 +3,10 @@ import { LegacyForms, VerticalGroup } from '@grafana/ui';
|
|||||||
import { DataQuery, PanelData, SelectableValue } from '@grafana/data';
|
import { DataQuery, PanelData, SelectableValue } from '@grafana/data';
|
||||||
import { css } from 'emotion';
|
import { css } from 'emotion';
|
||||||
|
|
||||||
import { DashboardQuery, ResultInfo } from './types';
|
import { DashboardQuery, ResultInfo, SHARED_DASHBODARD_QUERY } from './types';
|
||||||
import config from 'app/core/config';
|
import config from 'app/core/config';
|
||||||
import { getDatasourceSrv } from 'app/features/plugins/datasource_srv';
|
import { getDatasourceSrv } from 'app/features/plugins/datasource_srv';
|
||||||
import { PanelModel } from 'app/features/dashboard/state';
|
import { PanelModel } from 'app/features/dashboard/state';
|
||||||
import { SHARED_DASHBODARD_QUERY } from './types';
|
|
||||||
import { getDashboardSrv } from 'app/features/dashboard/services/DashboardSrv';
|
import { getDashboardSrv } from 'app/features/dashboard/services/DashboardSrv';
|
||||||
import { filterPanelDataToQuery } from 'app/features/query/components/QueryEditorRow';
|
import { filterPanelDataToQuery } from 'app/features/query/components/QueryEditorRow';
|
||||||
import { DashboardQueryRow } from './DashboardQueryRow';
|
import { DashboardQueryRow } from './DashboardQueryRow';
|
||||||
|
@@ -1,5 +1,4 @@
|
|||||||
import { ScopedVars, MetricFindValue } from '@grafana/data';
|
import { DataQueryRequest, DataSourceInstanceSettings, ScopedVars, MetricFindValue } from '@grafana/data';
|
||||||
import { DataQueryRequest, DataSourceInstanceSettings } from '@grafana/data';
|
|
||||||
import { getBackendSrv, getTemplateSrv, DataSourceWithBackend } from '@grafana/runtime';
|
import { getBackendSrv, getTemplateSrv, DataSourceWithBackend } from '@grafana/runtime';
|
||||||
import _, { isString } from 'lodash';
|
import _, { isString } from 'lodash';
|
||||||
|
|
||||||
|
@@ -1,5 +1,4 @@
|
|||||||
import { ScopedVars } from '@grafana/data';
|
import { ScopedVars, DataSourceInstanceSettings } from '@grafana/data';
|
||||||
import { DataSourceInstanceSettings } from '@grafana/data';
|
|
||||||
import { getTemplateSrv } from '@grafana/runtime';
|
import { getTemplateSrv } from '@grafana/runtime';
|
||||||
|
|
||||||
import { AzureDataSourceJsonData, AzureMonitorQuery, AzureQueryType } from '../types';
|
import { AzureDataSourceJsonData, AzureMonitorQuery, AzureQueryType } from '../types';
|
||||||
|
@@ -1,4 +1,3 @@
|
|||||||
import '../query_ctrl';
|
|
||||||
import { uiSegmentSrv } from 'app/core/services/segment_srv';
|
import { uiSegmentSrv } from 'app/core/services/segment_srv';
|
||||||
import { InfluxQueryCtrl } from '../query_ctrl';
|
import { InfluxQueryCtrl } from '../query_ctrl';
|
||||||
import InfluxDatasource from '../datasource';
|
import InfluxDatasource from '../datasource';
|
||||||
|
@@ -10,6 +10,7 @@ import {
|
|||||||
QueryField,
|
QueryField,
|
||||||
TypeaheadInput,
|
TypeaheadInput,
|
||||||
BracesPlugin,
|
BracesPlugin,
|
||||||
|
DOMUtil,
|
||||||
} from '@grafana/ui';
|
} from '@grafana/ui';
|
||||||
|
|
||||||
// Utils & Services
|
// Utils & Services
|
||||||
@@ -17,7 +18,6 @@ import {
|
|||||||
import { Plugin, Node } from 'slate';
|
import { Plugin, Node } from 'slate';
|
||||||
|
|
||||||
// Types
|
// Types
|
||||||
import { DOMUtil } from '@grafana/ui';
|
|
||||||
import { ExploreQueryFieldProps, AbsoluteTimeRange } from '@grafana/data';
|
import { ExploreQueryFieldProps, AbsoluteTimeRange } from '@grafana/data';
|
||||||
import { LokiQuery, LokiOptions } from '../types';
|
import { LokiQuery, LokiOptions } from '../types';
|
||||||
import { LanguageMap, languages as prismLanguages } from 'prismjs';
|
import { LanguageMap, languages as prismLanguages } from 'prismjs';
|
||||||
|
@@ -8,7 +8,6 @@ import {
|
|||||||
LokiMatrixResult,
|
LokiMatrixResult,
|
||||||
} from './types';
|
} from './types';
|
||||||
import * as ResultTransformer from './result_transformer';
|
import * as ResultTransformer from './result_transformer';
|
||||||
import { enhanceDataFrame, lokiPointsToTimeseriesPoints } from './result_transformer';
|
|
||||||
import { setTemplateSrv } from '@grafana/runtime';
|
import { setTemplateSrv } from '@grafana/runtime';
|
||||||
import { TemplateSrv } from 'app/features/templating/template_srv';
|
import { TemplateSrv } from 'app/features/templating/template_srv';
|
||||||
|
|
||||||
@@ -243,7 +242,7 @@ describe('loki result transformer', () => {
|
|||||||
describe('enhanceDataFrame', () => {
|
describe('enhanceDataFrame', () => {
|
||||||
it('adds links to fields', () => {
|
it('adds links to fields', () => {
|
||||||
const df = new MutableDataFrame({ fields: [{ name: 'line', values: ['nothing', 'trace1=1234', 'trace2=foo'] }] });
|
const df = new MutableDataFrame({ fields: [{ name: 'line', values: ['nothing', 'trace1=1234', 'trace2=foo'] }] });
|
||||||
enhanceDataFrame(df, {
|
ResultTransformer.enhanceDataFrame(df, {
|
||||||
derivedFields: [
|
derivedFields: [
|
||||||
{
|
{
|
||||||
matcherRegex: 'trace1=(\\w+)',
|
matcherRegex: 'trace1=(\\w+)',
|
||||||
@@ -302,7 +301,7 @@ describe('enhanceDataFrame', () => {
|
|||||||
|
|
||||||
it('returns data as is if step, start, and end align', () => {
|
it('returns data as is if step, start, and end align', () => {
|
||||||
const options: Partial<TransformerOptions> = { start: 1 * 1e9, end: 4 * 1e9, step: 1 };
|
const options: Partial<TransformerOptions> = { start: 1 * 1e9, end: 4 * 1e9, step: 1 };
|
||||||
const result = lokiPointsToTimeseriesPoints(data, options as TransformerOptions);
|
const result = ResultTransformer.lokiPointsToTimeseriesPoints(data, options as TransformerOptions);
|
||||||
expect(result).toEqual([
|
expect(result).toEqual([
|
||||||
[1, 1000],
|
[1, 1000],
|
||||||
[0, 2000],
|
[0, 2000],
|
||||||
|
@@ -10,6 +10,8 @@ import {
|
|||||||
TypeaheadOutput,
|
TypeaheadOutput,
|
||||||
QueryField,
|
QueryField,
|
||||||
BracesPlugin,
|
BracesPlugin,
|
||||||
|
DOMUtil,
|
||||||
|
SuggestionsState,
|
||||||
} from '@grafana/ui';
|
} from '@grafana/ui';
|
||||||
|
|
||||||
import { LanguageMap, languages as prismLanguages } from 'prismjs';
|
import { LanguageMap, languages as prismLanguages } from 'prismjs';
|
||||||
@@ -26,7 +28,6 @@ import {
|
|||||||
HistoryItem,
|
HistoryItem,
|
||||||
TimeRange,
|
TimeRange,
|
||||||
} from '@grafana/data';
|
} from '@grafana/data';
|
||||||
import { DOMUtil, SuggestionsState } from '@grafana/ui';
|
|
||||||
import { PrometheusDatasource } from '../datasource';
|
import { PrometheusDatasource } from '../datasource';
|
||||||
|
|
||||||
const HISTOGRAM_GROUP = '__histograms__';
|
const HISTOGRAM_GROUP = '__histograms__';
|
||||||
|
@@ -1,5 +1,4 @@
|
|||||||
import { identity } from 'lodash';
|
import { identity, keyBy } from 'lodash';
|
||||||
import { keyBy } from 'lodash';
|
|
||||||
import { ZipkinAnnotation, ZipkinEndpoint, ZipkinSpan } from '../types';
|
import { ZipkinAnnotation, ZipkinEndpoint, ZipkinSpan } from '../types';
|
||||||
import { TraceKeyValuePair, TraceLog, TraceProcess, TraceSpanData, TraceData } from '@grafana/data';
|
import { TraceKeyValuePair, TraceLog, TraceProcess, TraceSpanData, TraceData } from '@grafana/data';
|
||||||
|
|
||||||
|
@@ -1,4 +1,3 @@
|
|||||||
import '../module';
|
|
||||||
import { GraphCtrl } from '../module';
|
import { GraphCtrl } from '../module';
|
||||||
import { MetricsPanelCtrl } from 'app/features/panel/metrics_panel_ctrl';
|
import { MetricsPanelCtrl } from 'app/features/panel/metrics_panel_ctrl';
|
||||||
import { PanelCtrl } from 'app/features/panel/panel_ctrl';
|
import { PanelCtrl } from 'app/features/panel/panel_ctrl';
|
||||||
|
@@ -1,4 +1,3 @@
|
|||||||
import '../series_overrides_ctrl';
|
|
||||||
import { SeriesOverridesCtrl } from '../series_overrides_ctrl';
|
import { SeriesOverridesCtrl } from '../series_overrides_ctrl';
|
||||||
|
|
||||||
describe('SeriesOverridesCtrl', () => {
|
describe('SeriesOverridesCtrl', () => {
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
import React, { PureComponent } from 'react';
|
import React, { PureComponent } from 'react';
|
||||||
import { Unsubscribable, PartialObserver } from 'rxjs';
|
import { Unsubscribable, PartialObserver } from 'rxjs';
|
||||||
import { FeatureInfoBox, stylesFactory, Button, JSONFormatter, CustomScrollbar } from '@grafana/ui';
|
import { FeatureInfoBox, stylesFactory, Button, JSONFormatter, CustomScrollbar, CodeEditor } from '@grafana/ui';
|
||||||
import {
|
import {
|
||||||
GrafanaTheme,
|
GrafanaTheme,
|
||||||
PanelProps,
|
PanelProps,
|
||||||
@@ -19,7 +19,6 @@ import { TablePanel } from '../table/TablePanel';
|
|||||||
import { LivePanelOptions, MessageDisplayMode } from './types';
|
import { LivePanelOptions, MessageDisplayMode } from './types';
|
||||||
import { config, getGrafanaLiveSrv, MeasurementCollector } from '@grafana/runtime';
|
import { config, getGrafanaLiveSrv, MeasurementCollector } from '@grafana/runtime';
|
||||||
import { css, cx } from 'emotion';
|
import { css, cx } from 'emotion';
|
||||||
import { CodeEditor } from '@grafana/ui';
|
|
||||||
|
|
||||||
interface Props extends PanelProps<LivePanelOptions> {}
|
interface Props extends PanelProps<LivePanelOptions> {}
|
||||||
|
|
||||||
|
@@ -1,15 +1,9 @@
|
|||||||
// Libraries
|
|
||||||
import React, { PureComponent } from 'react';
|
import React, { PureComponent } from 'react';
|
||||||
|
import { LegacyForms, InlineFormLabel, PieChartType } from '@grafana/ui';
|
||||||
// Components
|
|
||||||
import { LegacyForms, InlineFormLabel } from '@grafana/ui';
|
|
||||||
const { Select, FormField } = LegacyForms;
|
|
||||||
|
|
||||||
// Types
|
|
||||||
import { PanelEditorProps } from '@grafana/data';
|
import { PanelEditorProps } from '@grafana/data';
|
||||||
import { PieChartType } from '@grafana/ui';
|
|
||||||
import { PieChartOptions } from './types';
|
import { PieChartOptions } from './types';
|
||||||
|
|
||||||
|
const { Select, FormField } = LegacyForms;
|
||||||
const labelWidth = 8;
|
const labelWidth = 8;
|
||||||
|
|
||||||
const pieChartOptions = [
|
const pieChartOptions = [
|
||||||
|
@@ -1,16 +1,8 @@
|
|||||||
// Libraries
|
|
||||||
import React, { PureComponent } from 'react';
|
import React, { PureComponent } from 'react';
|
||||||
|
|
||||||
// Services & Utils
|
|
||||||
import { config } from 'app/core/config';
|
import { config } from 'app/core/config';
|
||||||
|
|
||||||
// Components
|
|
||||||
import { PieChart } from '@grafana/ui';
|
import { PieChart } from '@grafana/ui';
|
||||||
import { getFieldDisplayValues } from '@grafana/data';
|
|
||||||
|
|
||||||
// Types
|
|
||||||
import { PieChartOptions } from './types';
|
import { PieChartOptions } from './types';
|
||||||
import { PanelProps } from '@grafana/data';
|
import { getFieldDisplayValues, PanelProps } from '@grafana/data';
|
||||||
|
|
||||||
interface Props extends PanelProps<PieChartOptions> {}
|
interface Props extends PanelProps<PieChartOptions> {}
|
||||||
|
|
||||||
|
@@ -3,7 +3,6 @@ import { auto } from 'angular';
|
|||||||
import $ from 'jquery';
|
import $ from 'jquery';
|
||||||
import 'vendor/flot/jquery.flot';
|
import 'vendor/flot/jquery.flot';
|
||||||
import 'vendor/flot/jquery.flot.gauge';
|
import 'vendor/flot/jquery.flot.gauge';
|
||||||
import 'app/features/panel/panellinks/link_srv';
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
DataFrame,
|
DataFrame,
|
||||||
|
@@ -1,7 +1,6 @@
|
|||||||
import { SingleStatCtrl, ShowData } from '../module';
|
import { SingleStatCtrl, ShowData } from '../module';
|
||||||
import { dateTime, ReducerID, getFieldDisplayName } from '@grafana/data';
|
import { dateTime, ReducerID, getFieldDisplayName, LegacyResponseData } from '@grafana/data';
|
||||||
import { LinkSrv } from 'app/features/panel/panellinks/link_srv';
|
import { LinkSrv } from 'app/features/panel/panellinks/link_srv';
|
||||||
import { LegacyResponseData } from '@grafana/data';
|
|
||||||
import { DashboardModel } from 'app/features/dashboard/state';
|
import { DashboardModel } from 'app/features/dashboard/state';
|
||||||
|
|
||||||
interface TestContext {
|
interface TestContext {
|
||||||
|
@@ -12,8 +12,8 @@ import {
|
|||||||
getFieldDisplayName,
|
getFieldDisplayName,
|
||||||
escapeStringForRegex,
|
escapeStringForRegex,
|
||||||
VizOrientation,
|
VizOrientation,
|
||||||
|
PanelOptionsEditorBuilder,
|
||||||
} from '@grafana/data';
|
} from '@grafana/data';
|
||||||
import { PanelOptionsEditorBuilder } from '@grafana/data';
|
|
||||||
|
|
||||||
// Structure copied from angular
|
// Structure copied from angular
|
||||||
export interface StatPanelOptions extends SingleStatBaseOptions {
|
export interface StatPanelOptions extends SingleStatBaseOptions {
|
||||||
|
@@ -16,8 +16,8 @@ import {
|
|||||||
getDisplayProcessor,
|
getDisplayProcessor,
|
||||||
getFieldDisplayName,
|
getFieldDisplayName,
|
||||||
InterpolateFunction,
|
InterpolateFunction,
|
||||||
|
TimeZone,
|
||||||
} from '@grafana/data';
|
} from '@grafana/data';
|
||||||
import { TimeZone } from '@grafana/data';
|
|
||||||
import { useClickAway } from 'react-use';
|
import { useClickAway } from 'react-use';
|
||||||
import { getFieldLinksSupplier } from '../../../../features/panel/panellinks/linkSuppliers';
|
import { getFieldLinksSupplier } from '../../../../features/panel/panellinks/linkSuppliers';
|
||||||
|
|
||||||
|
@@ -6,7 +6,14 @@ import Drop from 'tether-drop';
|
|||||||
|
|
||||||
// Utils and servies
|
// Utils and servies
|
||||||
import { colors } from '@grafana/ui';
|
import { colors } from '@grafana/ui';
|
||||||
import { getTemplateSrv, setBackendSrv, setDataSourceSrv, setLegacyAngularInjector } from '@grafana/runtime';
|
import {
|
||||||
|
getTemplateSrv,
|
||||||
|
setBackendSrv,
|
||||||
|
setDataSourceSrv,
|
||||||
|
setLegacyAngularInjector,
|
||||||
|
LocationUpdate,
|
||||||
|
setLocationSrv,
|
||||||
|
} from '@grafana/runtime';
|
||||||
import config from 'app/core/config';
|
import config from 'app/core/config';
|
||||||
import coreModule from 'app/core/core_module';
|
import coreModule from 'app/core/core_module';
|
||||||
import { profiler } from 'app/core/profiler';
|
import { profiler } from 'app/core/profiler';
|
||||||
@@ -17,7 +24,6 @@ import { KeybindingSrv, setKeybindingSrv } from 'app/core/services/keybindingSrv
|
|||||||
import { AngularLoader, setAngularLoader } from 'app/core/services/AngularLoader';
|
import { AngularLoader, setAngularLoader } from 'app/core/services/AngularLoader';
|
||||||
import { configureStore } from 'app/store/configureStore';
|
import { configureStore } from 'app/store/configureStore';
|
||||||
|
|
||||||
import { LocationUpdate, setLocationSrv } from '@grafana/runtime';
|
|
||||||
import { updateLocation } from 'app/core/actions';
|
import { updateLocation } from 'app/core/actions';
|
||||||
|
|
||||||
// Types
|
// Types
|
||||||
@@ -28,10 +34,9 @@ import { ContextSrv } from 'app/core/services/context_srv';
|
|||||||
import { BridgeSrv } from 'app/core/services/bridge_srv';
|
import { BridgeSrv } from 'app/core/services/bridge_srv';
|
||||||
import { PlaylistSrv } from 'app/features/playlist/playlist_srv';
|
import { PlaylistSrv } from 'app/features/playlist/playlist_srv';
|
||||||
import { DashboardSrv, setDashboardSrv } from 'app/features/dashboard/services/DashboardSrv';
|
import { DashboardSrv, setDashboardSrv } from 'app/features/dashboard/services/DashboardSrv';
|
||||||
import { ILocationService, ITimeoutService, IRootScopeService, IAngularEvent } from 'angular';
|
import { ILocationService, ITimeoutService, IRootScopeService, IAngularEvent, auto } from 'angular';
|
||||||
import { AppEvent, AppEvents, locationUtil } from '@grafana/data';
|
import { AppEvent, AppEvents, locationUtil } from '@grafana/data';
|
||||||
import { backendSrv } from 'app/core/services/backend_srv';
|
import { backendSrv } from 'app/core/services/backend_srv';
|
||||||
import { auto } from 'angular';
|
|
||||||
import { initGrafanaLive } from 'app/features/live/live';
|
import { initGrafanaLive } from 'app/features/live/live';
|
||||||
|
|
||||||
export type GrafanaRootScope = IRootScopeService & AppEventEmitter & AppEventConsumer & { colors: string[] };
|
export type GrafanaRootScope = IRootScopeService & AppEventEmitter & AppEventConsumer & { colors: string[] };
|
||||||
|
@@ -1,5 +1,4 @@
|
|||||||
import { PluginError, PluginMeta } from '@grafana/data';
|
import { PluginError, PluginMeta, PanelPlugin } from '@grafana/data';
|
||||||
import { PanelPlugin } from '@grafana/data';
|
|
||||||
import { TemplateSrv } from '@grafana/runtime';
|
import { TemplateSrv } from '@grafana/runtime';
|
||||||
|
|
||||||
export interface PluginDashboard {
|
export interface PluginDashboard {
|
||||||
|
@@ -1,5 +1,4 @@
|
|||||||
import { DataQueryRequest, DataQuery, CoreApp } from '@grafana/data';
|
import { DataQueryRequest, DataQuery, CoreApp, dateTime } from '@grafana/data';
|
||||||
import { dateTime } from '@grafana/data';
|
|
||||||
|
|
||||||
export function getQueryOptions<TQuery extends DataQuery>(
|
export function getQueryOptions<TQuery extends DataQuery>(
|
||||||
options: Partial<DataQueryRequest<TQuery>>
|
options: Partial<DataQueryRequest<TQuery>>
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
import { configure } from 'enzyme';
|
import { configure } from 'enzyme';
|
||||||
import Adapter from '@wojtekmaj/enzyme-adapter-react-17';
|
import Adapter from '@wojtekmaj/enzyme-adapter-react-17';
|
||||||
import 'jquery';
|
|
||||||
import $ from 'jquery';
|
import $ from 'jquery';
|
||||||
import 'mutationobserver-shim';
|
import 'mutationobserver-shim';
|
||||||
|
|
||||||
@@ -9,7 +8,6 @@ global.$ = global.jQuery = $;
|
|||||||
|
|
||||||
import '../vendor/flot/jquery.flot';
|
import '../vendor/flot/jquery.flot';
|
||||||
import '../vendor/flot/jquery.flot.time';
|
import '../vendor/flot/jquery.flot.time';
|
||||||
import 'angular';
|
|
||||||
import angular from 'angular';
|
import angular from 'angular';
|
||||||
|
|
||||||
angular.module('grafana', ['ngRoute']);
|
angular.module('grafana', ['ngRoute']);
|
||||||
|
@@ -2,11 +2,9 @@ import each from 'lodash/each';
|
|||||||
import template from 'lodash/template';
|
import template from 'lodash/template';
|
||||||
|
|
||||||
import config from 'app/core/config';
|
import config from 'app/core/config';
|
||||||
import { dateMath } from '@grafana/data';
|
|
||||||
import { angularMocks, sinon } from '../lib/common';
|
import { angularMocks, sinon } from '../lib/common';
|
||||||
import { PanelModel } from 'app/features/dashboard/state/PanelModel';
|
import { PanelModel } from 'app/features/dashboard/state/PanelModel';
|
||||||
import { RawTimeRange } from '@grafana/data';
|
import { RawTimeRange, PanelPluginMeta, dateMath } from '@grafana/data';
|
||||||
import { PanelPluginMeta } from '@grafana/data';
|
|
||||||
import { GrafanaRootScope } from 'app/routes/GrafanaCtrl';
|
import { GrafanaRootScope } from 'app/routes/GrafanaCtrl';
|
||||||
|
|
||||||
export function ControllerTestContext(this: any) {
|
export function ControllerTestContext(this: any) {
|
||||||
|
24
yarn.lock
24
yarn.lock
@@ -3543,10 +3543,10 @@
|
|||||||
typescript "3.7.5"
|
typescript "3.7.5"
|
||||||
yaml "^1.8.3"
|
yaml "^1.8.3"
|
||||||
|
|
||||||
"@grafana/eslint-config@2.1.0":
|
"@grafana/eslint-config@2.2.0":
|
||||||
version "2.1.0"
|
version "2.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/@grafana/eslint-config/-/eslint-config-2.1.0.tgz#334e7eb4e5cc5f92f5b1485c795e6c38c802484d"
|
resolved "https://registry.yarnpkg.com/@grafana/eslint-config/-/eslint-config-2.2.0.tgz#3eda5b5a15b3226d14f40a5c45b07dec1f2242b8"
|
||||||
integrity sha512-JDybQbeUTbgKHWDThDjlfFuAamH5Cb+NArkPWhWFK7j1z0jfUZZX7uO1MMIq8Lgq+fW30pVIrc8ka3Ls/DAFAA==
|
integrity sha512-veSCw2FmuKCEnDHjgGImwvNyOIAZ0CSM32cfMg9/jkePCuMXWXuQPA/UgajGbxX7NWdOqMZCPpa6TwcOv9hYJg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/eslint-plugin" "4.0.1"
|
"@typescript-eslint/eslint-plugin" "4.0.1"
|
||||||
"@typescript-eslint/parser" "4.0.1"
|
"@typescript-eslint/parser" "4.0.1"
|
||||||
@@ -3559,22 +3559,6 @@
|
|||||||
prettier "2.2.1"
|
prettier "2.2.1"
|
||||||
typescript "4.0.2"
|
typescript "4.0.2"
|
||||||
|
|
||||||
"@grafana/eslint-config@2.1.1":
|
|
||||||
version "2.1.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/@grafana/eslint-config/-/eslint-config-2.1.1.tgz#006755f3807866ba96e2fecf534d4491c7b8e051"
|
|
||||||
integrity sha512-tr4XLqTpAe4zLDQBiPHxmPRyYL9p+BfPNBezFw9np1bcsYI8d0A7spSwEJUiSne09j7vo07HUZgNBjSFa8qdrA==
|
|
||||||
dependencies:
|
|
||||||
"@typescript-eslint/eslint-plugin" "4.0.1"
|
|
||||||
"@typescript-eslint/parser" "4.0.1"
|
|
||||||
eslint "7.4.0"
|
|
||||||
eslint-config-prettier "7.2.0"
|
|
||||||
eslint-plugin-jsdoc "28.6.1"
|
|
||||||
eslint-plugin-prettier "3.3.1"
|
|
||||||
eslint-plugin-react "7.21.5"
|
|
||||||
eslint-plugin-react-hooks "4.1.2"
|
|
||||||
prettier "2.2.1"
|
|
||||||
typescript "4.0.2"
|
|
||||||
|
|
||||||
"@grafana/slate-react@0.22.9-grafana":
|
"@grafana/slate-react@0.22.9-grafana":
|
||||||
version "0.22.9-grafana"
|
version "0.22.9-grafana"
|
||||||
resolved "https://registry.yarnpkg.com/@grafana/slate-react/-/slate-react-0.22.9-grafana.tgz#07f35f0ffc018f616b9f82fa6e5ba65fae75c6a0"
|
resolved "https://registry.yarnpkg.com/@grafana/slate-react/-/slate-react-0.22.9-grafana.tgz#07f35f0ffc018f616b9f82fa6e5ba65fae75c6a0"
|
||||||
|
Reference in New Issue
Block a user