mirror of https://github.com/grafana/grafana
Chore: Clenaup unused exports/modules in explore (#41072)
* Chore: remove unused files * Chore: Remove unused explore extports and filespull/41089/head
parent
d069f0900e
commit
e375558fa5
@ -1,9 +0,0 @@ |
||||
import React from 'react'; |
||||
|
||||
export default function JSONViewer({ value }: any) { |
||||
return ( |
||||
<div> |
||||
<pre>{JSON.stringify(value, undefined, 2)}</pre> |
||||
</div> |
||||
); |
||||
} |
@ -1,147 +0,0 @@ |
||||
import { colors } from '@grafana/ui'; |
||||
import { |
||||
getFlotPairs, |
||||
getDisplayProcessor, |
||||
NullValueMode, |
||||
reduceField, |
||||
FieldType, |
||||
DisplayValue, |
||||
GraphSeriesXY, |
||||
getTimeField, |
||||
DataFrame, |
||||
getSeriesTimeStep, |
||||
TimeZone, |
||||
hasMsResolution, |
||||
systemDateFormats, |
||||
FieldColor, |
||||
FieldColorModeId, |
||||
FieldConfigSource, |
||||
getFieldDisplayName, |
||||
} from '@grafana/data'; |
||||
|
||||
import { config } from 'app/core/config'; |
||||
import { SeriesOptions, GraphOptions, GraphLegendEditorLegendOptions } from './types'; |
||||
|
||||
export const getGraphSeriesModel = ( |
||||
dataFrames: DataFrame[], |
||||
timeZone: TimeZone, |
||||
seriesOptions: SeriesOptions, |
||||
graphOptions: GraphOptions, |
||||
legendOptions: GraphLegendEditorLegendOptions, |
||||
fieldOptions?: FieldConfigSource |
||||
) => { |
||||
const graphs: GraphSeriesXY[] = []; |
||||
|
||||
const displayProcessor = getDisplayProcessor({ |
||||
field: { |
||||
config: { |
||||
unit: fieldOptions?.defaults?.unit, |
||||
decimals: legendOptions.decimals, |
||||
}, |
||||
}, |
||||
theme: config.theme2, |
||||
timeZone, |
||||
}); |
||||
|
||||
let fieldColumnIndex = -1; |
||||
for (const series of dataFrames) { |
||||
const { timeField } = getTimeField(series); |
||||
|
||||
if (!timeField) { |
||||
continue; |
||||
} |
||||
|
||||
for (const field of series.fields) { |
||||
if (field.type !== FieldType.number) { |
||||
continue; |
||||
} |
||||
// Storing index of series field for future inspection
|
||||
fieldColumnIndex++; |
||||
|
||||
// Use external calculator just to make sure it works :)
|
||||
const points = getFlotPairs({ |
||||
xField: timeField, |
||||
yField: field, |
||||
nullValueMode: NullValueMode.Null, |
||||
}); |
||||
|
||||
if (points.length > 0) { |
||||
const seriesStats = reduceField({ field, reducers: legendOptions.stats || [] }); |
||||
let statsDisplayValues: DisplayValue[] = []; |
||||
|
||||
if (legendOptions.stats) { |
||||
statsDisplayValues = legendOptions.stats.map<DisplayValue>((stat) => { |
||||
const statDisplayValue = displayProcessor(seriesStats[stat]); |
||||
|
||||
return { |
||||
...statDisplayValue, |
||||
title: stat, |
||||
}; |
||||
}); |
||||
} |
||||
|
||||
let color: FieldColor; |
||||
if (seriesOptions[field.name] && seriesOptions[field.name].color) { |
||||
// Case when panel has settings provided via SeriesOptions, i.e. graph panel
|
||||
color = { |
||||
mode: FieldColorModeId.Fixed, |
||||
fixedColor: seriesOptions[field.name].color, |
||||
}; |
||||
} else if (field.config && field.config.color) { |
||||
// Case when color settings are set on field, i.e. Explore logs histogram (see makeSeriesForLogs)
|
||||
color = field.config.color; |
||||
} else { |
||||
color = { |
||||
mode: FieldColorModeId.Fixed, |
||||
fixedColor: colors[graphs.length % colors.length], |
||||
}; |
||||
} |
||||
|
||||
field.config = fieldOptions |
||||
? { |
||||
...field.config, |
||||
unit: fieldOptions.defaults.unit, |
||||
decimals: fieldOptions.defaults.decimals, |
||||
color, |
||||
} |
||||
: { ...field.config, color }; |
||||
|
||||
field.display = getDisplayProcessor({ field, timeZone, theme: config.theme2 }); |
||||
|
||||
// Time step is used to determine bars width when graph is rendered as bar chart
|
||||
const timeStep = getSeriesTimeStep(timeField); |
||||
const useMsDateFormat = hasMsResolution(timeField); |
||||
|
||||
timeField.display = getDisplayProcessor({ |
||||
timeZone, |
||||
field: { |
||||
...timeField, |
||||
type: timeField.type, |
||||
config: { |
||||
unit: systemDateFormats.getTimeFieldUnit(useMsDateFormat), |
||||
}, |
||||
}, |
||||
theme: config.theme2, |
||||
}); |
||||
|
||||
graphs.push({ |
||||
label: getFieldDisplayName(field, series, dataFrames), |
||||
data: points, |
||||
color: field.config.color?.fixedColor, |
||||
info: statsDisplayValues, |
||||
isVisible: true, |
||||
yAxis: { |
||||
index: (seriesOptions[field.name] && seriesOptions[field.name].yAxis) || 1, |
||||
}, |
||||
// This index is used later on to retrieve appropriate series/time for X and Y axes
|
||||
seriesIndex: fieldColumnIndex, |
||||
timeField: { ...timeField }, |
||||
valueField: { ...field }, |
||||
timeStep, |
||||
}); |
||||
} |
||||
} |
||||
} |
||||
|
||||
return graphs; |
||||
}; |
@ -1,48 +0,0 @@ |
||||
import { VizTooltipOptions, TooltipDisplayMode, LegendDisplayMode, LegendPlacement } from '@grafana/schema'; |
||||
import { YAxis } from '@grafana/data'; |
||||
|
||||
export interface SeriesOptions { |
||||
color?: string; |
||||
yAxis?: YAxis; |
||||
[key: string]: any; |
||||
} |
||||
export interface GraphOptions { |
||||
showBars: boolean; |
||||
showLines: boolean; |
||||
showPoints: boolean; |
||||
} |
||||
|
||||
export interface Options { |
||||
graph: GraphOptions; |
||||
legend: { |
||||
displayMode: LegendDisplayMode; |
||||
placement: LegendPlacement; |
||||
}; |
||||
series: { |
||||
[alias: string]: SeriesOptions; |
||||
}; |
||||
tooltipOptions: VizTooltipOptions; |
||||
} |
||||
|
||||
export const defaults: Options = { |
||||
graph: { |
||||
showBars: false, |
||||
showLines: true, |
||||
showPoints: false, |
||||
}, |
||||
legend: { |
||||
displayMode: LegendDisplayMode.List, |
||||
placement: 'bottom', |
||||
}, |
||||
series: {}, |
||||
tooltipOptions: { mode: TooltipDisplayMode.Single }, |
||||
}; |
||||
|
||||
export interface GraphLegendEditorLegendOptions { |
||||
displayMode: LegendDisplayMode; |
||||
placement: LegendPlacement; |
||||
stats?: string[]; |
||||
decimals?: number; |
||||
sortBy?: string; |
||||
sortDesc?: boolean; |
||||
} |
@ -1,130 +0,0 @@ |
||||
import React from 'react'; |
||||
import Prism from 'prismjs'; |
||||
import { Decoration } from 'slate'; |
||||
import { Editor } from '@grafana/slate-react'; |
||||
|
||||
const TOKEN_MARK = 'prism-token'; |
||||
|
||||
export function setPrismTokens(language: string, field: string | number, values: any, alias = 'variable') { |
||||
Prism.languages[language][field] = { |
||||
alias, |
||||
pattern: new RegExp(`(?:^|\\s)(${values.join('|')})(?:$|\\s)`), |
||||
}; |
||||
} |
||||
|
||||
/** |
||||
* Code-highlighting plugin based on Prism and |
||||
* https://github.com/ianstormtaylor/slate/blob/master/examples/code-highlighting/index.js
|
||||
* |
||||
* (Adapted to handle nested grammar definitions.) |
||||
*/ |
||||
|
||||
export default function PrismPlugin({ definition, language }: { definition: any; language: string }) { |
||||
if (definition) { |
||||
// Don't override exising modified definitions
|
||||
Prism.languages[language] = Prism.languages[language] || definition; |
||||
} |
||||
|
||||
return { |
||||
/** |
||||
* Render a Slate mark with appropriate CSS class names |
||||
* |
||||
* @param {Object} props |
||||
* @returns {Element} |
||||
*/ |
||||
|
||||
renderDecoration(props: any, editor: Editor, next: () => any): JSX.Element { |
||||
const { children, decoration } = props; |
||||
// Only apply spans to marks identified by this plugin
|
||||
if (decoration.type !== TOKEN_MARK) { |
||||
return next(); |
||||
} |
||||
const className = `token ${decoration.data.get('types')}`; |
||||
return <span className={className}>{children}</span>; |
||||
}, |
||||
|
||||
/** |
||||
* Decorate code blocks with Prism.js highlighting. |
||||
* |
||||
* @param {Node} node |
||||
* @returns {Array} |
||||
*/ |
||||
|
||||
decorateNode(node: any, editor: Editor, next: () => any): any[] { |
||||
if (node.type !== 'paragraph') { |
||||
return []; |
||||
} |
||||
|
||||
const texts = node.getTexts().toArray(); |
||||
const tstring = texts.map((t: { text: any }) => t.text).join('\n'); |
||||
const grammar = Prism.languages[language]; |
||||
const tokens = Prism.tokenize(tstring, grammar); |
||||
const decorations: Decoration[] = []; |
||||
let startText = texts.shift(); |
||||
let endText = startText; |
||||
let startOffset = 0; |
||||
let endOffset = 0; |
||||
let start = 0; |
||||
|
||||
function processToken(token: any, acc?: string) { |
||||
// Accumulate token types down the tree
|
||||
const types = `${acc || ''} ${token.type || ''} ${token.alias || ''}`; |
||||
|
||||
// Add mark for token node
|
||||
if (typeof token === 'string' || typeof token.content === 'string') { |
||||
startText = endText; |
||||
startOffset = endOffset; |
||||
|
||||
const content = typeof token === 'string' ? token : token.content; |
||||
const newlines = content.split('\n').length - 1; |
||||
const length = content.length - newlines; |
||||
const end = start + length; |
||||
|
||||
let available = startText.text.length - startOffset; |
||||
let remaining = length; |
||||
|
||||
endOffset = startOffset + remaining; |
||||
|
||||
while (available < remaining) { |
||||
endText = texts.shift(); |
||||
remaining = length - available; |
||||
available = endText.text.length; |
||||
endOffset = remaining; |
||||
} |
||||
|
||||
// Inject marks from up the tree (acc) as well
|
||||
if (typeof token !== 'string' || acc) { |
||||
const range = node.createDecoration({ |
||||
anchor: { |
||||
key: startText.key, |
||||
offset: startOffset, |
||||
}, |
||||
focus: { |
||||
key: endText.key, |
||||
offset: endOffset, |
||||
}, |
||||
type: TOKEN_MARK, |
||||
data: { types }, |
||||
}); |
||||
|
||||
decorations.push(range); |
||||
} |
||||
|
||||
start = end; |
||||
} else if (token.content && token.content.length) { |
||||
// Tokens can be nested
|
||||
for (const subToken of token.content) { |
||||
processToken(subToken, types); |
||||
} |
||||
} |
||||
} |
||||
|
||||
// Process top-level tokens
|
||||
for (const token of tokens) { |
||||
processToken(token); |
||||
} |
||||
|
||||
return decorations; |
||||
}, |
||||
}; |
||||
} |
Loading…
Reference in new issue