mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Candlestick: Migrate to schema (#62113)
Co-authored-by: nmarrs <nathanielmarrs@gmail.com>
This commit is contained in:
@@ -0,0 +1,250 @@
|
||||
---
|
||||
keywords:
|
||||
- grafana
|
||||
- schema
|
||||
title: CandlestickPanelCfg kind
|
||||
---
|
||||
> Both documentation generation and kinds schemas are in active development and subject to change without prior notice.
|
||||
|
||||
## CandlestickPanelCfg
|
||||
|
||||
#### Maturity: [experimental](../../../maturity/#experimental)
|
||||
#### Version: 0.0
|
||||
|
||||
|
||||
|
||||
| Property | Type | Required | Default | Description |
|
||||
|-----------------------|---------------------------------------|----------|---------|-------------------------------------------------------------|
|
||||
| `CandleStyle` | string | **Yes** | | Possible values are: `candles`, `ohlcbars`. |
|
||||
| `CandlestickColors` | [object](#candlestickcolors) | **Yes** | | |
|
||||
| `CandlestickFieldMap` | [object](#candlestickfieldmap) | **Yes** | | |
|
||||
| `ColorStrategy` | string | **Yes** | | Possible values are: `open-close`, `close-close`. |
|
||||
| `FieldConfig` | [GraphFieldConfig](#graphfieldconfig) | **Yes** | | TODO docs |
|
||||
| `Options` | [object](#options) | **Yes** | | |
|
||||
| `VizDisplayMode` | string | **Yes** | | Possible values are: `candles+volume`, `candles`, `volume`. |
|
||||
|
||||
### CandlestickColors
|
||||
|
||||
| Property | Type | Required | Default | Description |
|
||||
|----------|--------|----------|---------|-------------|
|
||||
| `down` | string | **Yes** | `red` | |
|
||||
| `flat` | string | **Yes** | `gray` | |
|
||||
| `up` | string | **Yes** | `green` | |
|
||||
|
||||
### CandlestickFieldMap
|
||||
|
||||
| Property | Type | Required | Default | Description |
|
||||
|----------|--------|----------|---------|------------------------------------------------------------------------------|
|
||||
| `close` | string | No | | Corresponds to the final (end) value of the given period |
|
||||
| `high` | string | No | | Corresponds to the highest value of the given period |
|
||||
| `low` | string | No | | Corresponds to the lowest value of the given period |
|
||||
| `open` | string | No | | Corresponds to the starting value of the given period |
|
||||
| `volume` | string | No | | Corresponds to the sample count in the given period. (e.g. number of trades) |
|
||||
|
||||
### GraphFieldConfig
|
||||
|
||||
TODO docs
|
||||
|
||||
It extends [LineConfig](#lineconfig) and [FillConfig](#fillconfig) and [PointsConfig](#pointsconfig) and [AxisConfig](#axisconfig) and [BarConfig](#barconfig) and [StackableFieldConfig](#stackablefieldconfig) and [HideableFieldConfig](#hideablefieldconfig).
|
||||
|
||||
| Property | Type | Required | Default | Description |
|
||||
|---------------------|-----------------------------------------------------------|----------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| `axisCenteredZero` | boolean | No | | *(Inherited from [AxisConfig](#axisconfig))* |
|
||||
| `axisColorMode` | string | No | | *(Inherited from [AxisConfig](#axisconfig))*<br/>TODO docs<br/>Possible values are: `text`, `series`. |
|
||||
| `axisGridShow` | boolean | No | | *(Inherited from [AxisConfig](#axisconfig))* |
|
||||
| `axisLabel` | string | No | | *(Inherited from [AxisConfig](#axisconfig))* |
|
||||
| `axisPlacement` | string | No | | *(Inherited from [AxisConfig](#axisconfig))*<br/>TODO docs<br/>Possible values are: `auto`, `top`, `right`, `bottom`, `left`, `hidden`. |
|
||||
| `axisSoftMax` | number | No | | *(Inherited from [AxisConfig](#axisconfig))* |
|
||||
| `axisSoftMin` | number | No | | *(Inherited from [AxisConfig](#axisconfig))* |
|
||||
| `axisWidth` | number | No | | *(Inherited from [AxisConfig](#axisconfig))* |
|
||||
| `barAlignment` | integer | No | | *(Inherited from [BarConfig](#barconfig))*<br/>TODO docs<br/>Possible values are: `-1`, `0`, `1`. |
|
||||
| `barMaxWidth` | number | No | | *(Inherited from [BarConfig](#barconfig))* |
|
||||
| `barWidthFactor` | number | No | | *(Inherited from [BarConfig](#barconfig))* |
|
||||
| `drawStyle` | string | No | | TODO docs<br/>Possible values are: `line`, `bars`, `points`. |
|
||||
| `fillBelowTo` | string | No | | *(Inherited from [FillConfig](#fillconfig))* |
|
||||
| `fillColor` | string | No | | *(Inherited from [FillConfig](#fillconfig))* |
|
||||
| `fillOpacity` | number | No | | *(Inherited from [FillConfig](#fillconfig))* |
|
||||
| `gradientMode` | string | No | | TODO docs<br/>Possible values are: `none`, `opacity`, `hue`, `scheme`. |
|
||||
| `hideFrom` | [HideSeriesConfig](#hideseriesconfig) | No | | *(Inherited from [HideableFieldConfig](#hideablefieldconfig))*<br/>TODO docs |
|
||||
| `lineColor` | string | No | | *(Inherited from [LineConfig](#lineconfig))* |
|
||||
| `lineInterpolation` | string | No | | *(Inherited from [LineConfig](#lineconfig))*<br/>TODO docs<br/>Possible values are: `linear`, `smooth`, `stepBefore`, `stepAfter`. |
|
||||
| `lineStyle` | [LineStyle](#linestyle) | No | | *(Inherited from [LineConfig](#lineconfig))*<br/>TODO docs |
|
||||
| `lineWidth` | number | No | | *(Inherited from [LineConfig](#lineconfig))* |
|
||||
| `pointColor` | string | No | | *(Inherited from [PointsConfig](#pointsconfig))* |
|
||||
| `pointSize` | number | No | | *(Inherited from [PointsConfig](#pointsconfig))* |
|
||||
| `pointSymbol` | string | No | | *(Inherited from [PointsConfig](#pointsconfig))* |
|
||||
| `scaleDistribution` | [ScaleDistributionConfig](#scaledistributionconfig) | No | | *(Inherited from [AxisConfig](#axisconfig))*<br/>TODO docs |
|
||||
| `showPoints` | string | No | | *(Inherited from [PointsConfig](#pointsconfig))*<br/>TODO docs<br/>Possible values are: `auto`, `never`, `always`. |
|
||||
| `spanNulls` | | No | | *(Inherited from [LineConfig](#lineconfig))*<br/>Indicate if null values should be treated as gaps or connected.<br/>When the value is a number, it represents the maximum delta in the<br/>X axis that should be considered connected. For timeseries, this is milliseconds |
|
||||
| `stacking` | [StackingConfig](#stackingconfig) | No | | *(Inherited from [StackableFieldConfig](#stackablefieldconfig))*<br/>TODO docs |
|
||||
| `thresholdsStyle` | [GraphThresholdsStyleConfig](#graphthresholdsstyleconfig) | No | | TODO docs |
|
||||
| `transform` | string | No | | TODO docs<br/>Possible values are: `constant`, `negative-Y`. |
|
||||
|
||||
### AxisConfig
|
||||
|
||||
TODO docs
|
||||
|
||||
| Property | Type | Required | Default | Description |
|
||||
|---------------------|-----------------------------------------------------|----------|---------|----------------------------------------------------------------------------------------|
|
||||
| `axisCenteredZero` | boolean | No | | |
|
||||
| `axisColorMode` | string | No | | TODO docs<br/>Possible values are: `text`, `series`. |
|
||||
| `axisGridShow` | boolean | No | | |
|
||||
| `axisLabel` | string | No | | |
|
||||
| `axisPlacement` | string | No | | TODO docs<br/>Possible values are: `auto`, `top`, `right`, `bottom`, `left`, `hidden`. |
|
||||
| `axisSoftMax` | number | No | | |
|
||||
| `axisSoftMin` | number | No | | |
|
||||
| `axisWidth` | number | No | | |
|
||||
| `scaleDistribution` | [ScaleDistributionConfig](#scaledistributionconfig) | No | | TODO docs |
|
||||
|
||||
### ScaleDistributionConfig
|
||||
|
||||
TODO docs
|
||||
|
||||
| Property | Type | Required | Default | Description |
|
||||
|-------------------|--------|----------|---------|--------------------------------------------------------------------------|
|
||||
| `type` | string | **Yes** | | TODO docs<br/>Possible values are: `linear`, `log`, `ordinal`, `symlog`. |
|
||||
| `linearThreshold` | number | No | | |
|
||||
| `log` | number | No | | |
|
||||
|
||||
### BarConfig
|
||||
|
||||
TODO docs
|
||||
|
||||
| Property | Type | Required | Default | Description |
|
||||
|------------------|---------|----------|---------|----------------------------------------------------|
|
||||
| `barAlignment` | integer | No | | TODO docs<br/>Possible values are: `-1`, `0`, `1`. |
|
||||
| `barMaxWidth` | number | No | | |
|
||||
| `barWidthFactor` | number | No | | |
|
||||
|
||||
### FillConfig
|
||||
|
||||
TODO docs
|
||||
|
||||
| Property | Type | Required | Default | Description |
|
||||
|---------------|--------|----------|---------|-------------|
|
||||
| `fillBelowTo` | string | No | | |
|
||||
| `fillColor` | string | No | | |
|
||||
| `fillOpacity` | number | No | | |
|
||||
|
||||
### GraphThresholdsStyleConfig
|
||||
|
||||
TODO docs
|
||||
|
||||
| Property | Type | Required | Default | Description |
|
||||
|----------|--------|----------|---------|-----------------------------------------------------------------------------------------------------------|
|
||||
| `mode` | string | **Yes** | | TODO docs<br/>Possible values are: `off`, `line`, `dashed`, `area`, `line+area`, `dashed+area`, `series`. |
|
||||
|
||||
### HideSeriesConfig
|
||||
|
||||
TODO docs
|
||||
|
||||
| Property | Type | Required | Default | Description |
|
||||
|-----------|---------|----------|---------|-------------|
|
||||
| `legend` | boolean | **Yes** | | |
|
||||
| `tooltip` | boolean | **Yes** | | |
|
||||
| `viz` | boolean | **Yes** | | |
|
||||
|
||||
### HideableFieldConfig
|
||||
|
||||
TODO docs
|
||||
|
||||
| Property | Type | Required | Default | Description |
|
||||
|------------|---------------------------------------|----------|---------|-------------|
|
||||
| `hideFrom` | [HideSeriesConfig](#hideseriesconfig) | No | | TODO docs |
|
||||
|
||||
### LineConfig
|
||||
|
||||
TODO docs
|
||||
|
||||
| Property | Type | Required | Default | Description |
|
||||
|---------------------|-------------------------|----------|---------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| `lineColor` | string | No | | |
|
||||
| `lineInterpolation` | string | No | | TODO docs<br/>Possible values are: `linear`, `smooth`, `stepBefore`, `stepAfter`. |
|
||||
| `lineStyle` | [LineStyle](#linestyle) | No | | TODO docs |
|
||||
| `lineWidth` | number | No | | |
|
||||
| `spanNulls` | | No | | Indicate if null values should be treated as gaps or connected.<br/>When the value is a number, it represents the maximum delta in the<br/>X axis that should be considered connected. For timeseries, this is milliseconds |
|
||||
|
||||
### LineStyle
|
||||
|
||||
TODO docs
|
||||
|
||||
| Property | Type | Required | Default | Description |
|
||||
|----------|----------|----------|---------|--------------------------------------------------------|
|
||||
| `dash` | number[] | No | | |
|
||||
| `fill` | string | No | | Possible values are: `solid`, `dash`, `dot`, `square`. |
|
||||
|
||||
### PointsConfig
|
||||
|
||||
TODO docs
|
||||
|
||||
| Property | Type | Required | Default | Description |
|
||||
|---------------|--------|----------|---------|---------------------------------------------------------------|
|
||||
| `pointColor` | string | No | | |
|
||||
| `pointSize` | number | No | | |
|
||||
| `pointSymbol` | string | No | | |
|
||||
| `showPoints` | string | No | | TODO docs<br/>Possible values are: `auto`, `never`, `always`. |
|
||||
|
||||
### StackableFieldConfig
|
||||
|
||||
TODO docs
|
||||
|
||||
| Property | Type | Required | Default | Description |
|
||||
|------------|-----------------------------------|----------|---------|-------------|
|
||||
| `stacking` | [StackingConfig](#stackingconfig) | No | | TODO docs |
|
||||
|
||||
### StackingConfig
|
||||
|
||||
TODO docs
|
||||
|
||||
| Property | Type | Required | Default | Description |
|
||||
|----------|--------|----------|---------|-----------------------------------------------------------------|
|
||||
| `group` | string | No | | |
|
||||
| `mode` | string | No | | TODO docs<br/>Possible values are: `none`, `normal`, `percent`. |
|
||||
|
||||
### Options
|
||||
|
||||
It extends [OptionsWithLegend](#optionswithlegend).
|
||||
|
||||
| Property | Type | Required | Default | Description |
|
||||
|--------------------|-----------------------------------------|----------|---------|--------------------------------------------------------------------------|
|
||||
| `candleStyle` | string | **Yes** | | Sets the style of the candlesticks |
|
||||
| `colorStrategy` | string | **Yes** | | Sets the color strategy for the candlesticks |
|
||||
| `colors` | [CandlestickColors](#candlestickcolors) | **Yes** | | |
|
||||
| `fields` | [object](#fields) | **Yes** | `map[]` | Map fields to appropriate dimension |
|
||||
| `legend` | [VizLegendOptions](#vizlegendoptions) | **Yes** | | *(Inherited from [OptionsWithLegend](#optionswithlegend))*<br/>TODO docs |
|
||||
| `mode` | string | **Yes** | | Sets which dimensions are used for the visualization |
|
||||
| `includeAllFields` | boolean | No | `false` | When enabled, all fields will be sent to the graph |
|
||||
|
||||
### OptionsWithLegend
|
||||
|
||||
TODO docs
|
||||
|
||||
| Property | Type | Required | Default | Description |
|
||||
|----------|---------------------------------------|----------|---------|-------------|
|
||||
| `legend` | [VizLegendOptions](#vizlegendoptions) | **Yes** | | TODO docs |
|
||||
|
||||
### VizLegendOptions
|
||||
|
||||
TODO docs
|
||||
|
||||
| Property | Type | Required | Default | Description |
|
||||
|---------------|----------|----------|---------|-----------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| `calcs` | string[] | **Yes** | | |
|
||||
| `displayMode` | string | **Yes** | | TODO docs<br/>Note: "hidden" needs to remain as an option for plugins compatibility<br/>Possible values are: `list`, `table`, `hidden`. |
|
||||
| `placement` | string | **Yes** | | TODO docs<br/>Possible values are: `bottom`, `right`. |
|
||||
| `showLegend` | boolean | **Yes** | | |
|
||||
| `asTable` | boolean | No | | |
|
||||
| `isVisible` | boolean | No | | |
|
||||
| `sortBy` | string | No | | |
|
||||
| `sortDesc` | boolean | No | | |
|
||||
| `width` | number | No | | |
|
||||
|
||||
### Fields
|
||||
|
||||
Map fields to appropriate dimension
|
||||
|
||||
| Property | Type | Required | Default | Description |
|
||||
|----------|-----------------------------------|----------|---------|-------------|
|
||||
| `object` | Possible types are: [](#), [](#). | | |
|
||||
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
---
|
||||
keywords:
|
||||
- grafana
|
||||
- schema
|
||||
title: CandlestickPanelCfg kind
|
||||
---
|
||||
> Both documentation generation and kinds schemas are in active development and subject to change without prior notice.
|
||||
|
||||
# CandlestickPanelCfg kind
|
||||
|
||||
## Maturity: experimental
|
||||
## Version: 0.0
|
||||
|
||||
## Properties
|
||||
|
||||
| Property | Type | Required | Description |
|
||||
|-----------------------|--------------------------------|----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| `CandleStyle` | string | **Yes** | TODO docs Possible values are: `candles`, `ohlcbars`. |
|
||||
| `CandlestickColors` | [object](#candlestickcolors) | **Yes** | TODO docs |
|
||||
| `CandlestickFieldMap` | [object](#candlestickfieldmap) | **Yes** | TODO docs |
|
||||
| `ColorStrategy` | string | **Yes** | TODO docs<br/>"open-close": up/down color depends on current close vs current open<br/>filled always<br/>"close-close": up/down color depends on current close vs prior close<br/>filled/hollow depends on current close vs current open Possible values are: `open-close`, `close-close`. |
|
||||
| `PanelFieldConfig` | [object](#panelfieldconfig) | **Yes** | |
|
||||
| `PanelOptions` | [object](#paneloptions) | **Yes** | |
|
||||
| `VizDisplayMode` | string | **Yes** | TODO docs Possible values are: `candles+volume`, `candles`, `volume`. |
|
||||
|
||||
## CandlestickColors
|
||||
|
||||
TODO docs
|
||||
|
||||
### Properties
|
||||
|
||||
| Property | Type | Required | Description |
|
||||
|----------|--------|----------|-------------------|
|
||||
| `down` | string | **Yes** | Default: `red`. |
|
||||
| `flat` | string | **Yes** | Default: `gray`. |
|
||||
| `up` | string | **Yes** | Default: `green`. |
|
||||
|
||||
## CandlestickFieldMap
|
||||
|
||||
TODO docs
|
||||
|
||||
### Properties
|
||||
|
||||
| Property | Type | Required | Description |
|
||||
|----------|--------|----------|-------------|
|
||||
| `close` | string | No | |
|
||||
| `high` | string | No | |
|
||||
| `low` | string | No | |
|
||||
| `open` | string | No | |
|
||||
| `volume` | string | No | |
|
||||
|
||||
## PanelFieldConfig
|
||||
|
||||
| Property | Type | Required | Description |
|
||||
|----------|------|----------|-------------|
|
||||
|
||||
## PanelOptions
|
||||
|
||||
### Properties
|
||||
|
||||
| Property | Type | Required | Description |
|
||||
|--------------------|-----------------------------------------|----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| `candleStyle` | string | No | TODO docs Possible values are: `candles`, `ohlcbars`. |
|
||||
| `colorStrategy` | string | No | TODO docs<br/>"open-close": up/down color depends on current close vs current open<br/>filled always<br/>"close-close": up/down color depends on current close vs prior close<br/>filled/hollow depends on current close vs current open Possible values are: `open-close`, `close-close`. |
|
||||
| `colors` | [CandlestickColors](#candlestickcolors) | No | TODO docs |
|
||||
| `fields` | [object](#fields) | No | TODO docs Default: `map[]`. |
|
||||
| `includeAllFields` | boolean | No | When enabled, all fields will be sent to the graph Default: `false`. |
|
||||
| `mode` | string | No | TODO docs Possible values are: `candles+volume`, `candles`, `volume`. |
|
||||
|
||||
### CandlestickColors
|
||||
|
||||
TODO docs
|
||||
|
||||
#### Properties
|
||||
|
||||
| Property | Type | Required | Description |
|
||||
|----------|--------|----------|-------------------|
|
||||
| `down` | string | **Yes** | Default: `red`. |
|
||||
| `flat` | string | **Yes** | Default: `gray`. |
|
||||
| `up` | string | **Yes** | Default: `green`. |
|
||||
|
||||
### fields
|
||||
|
||||
TODO docs
|
||||
The default value is: `map[]`.
|
||||
| Property | Type | Required | Description |
|
||||
|----------|------|----------|-------------|
|
||||
|
||||
|
||||
@@ -0,0 +1,105 @@
|
||||
// Code generated - EDITING IS FUTILE. DO NOT EDIT.
|
||||
//
|
||||
// Generated by:
|
||||
// public/app/plugins/gen.go
|
||||
// Using jennies:
|
||||
// TSTypesJenny
|
||||
// LatestMajorsOrXJenny
|
||||
// PluginEachMajorJenny
|
||||
//
|
||||
// Run 'make gen-cue' from repository root to regenerate.
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export enum VizDisplayMode {
|
||||
Candles = 'candles',
|
||||
CandlesVolume = 'candles+volume',
|
||||
Volume = 'volume',
|
||||
}
|
||||
|
||||
export enum CandleStyle {
|
||||
Candles = 'candles',
|
||||
OHLCBars = 'ohlcbars',
|
||||
}
|
||||
|
||||
export enum ColorStrategy {
|
||||
CloseClose = 'close-close',
|
||||
OpenClose = 'open-close',
|
||||
}
|
||||
|
||||
export interface CandlestickFieldMap {
|
||||
/**
|
||||
* Corresponds to the final (end) value of the given period
|
||||
*/
|
||||
close?: string;
|
||||
/**
|
||||
* Corresponds to the highest value of the given period
|
||||
*/
|
||||
high?: string;
|
||||
/**
|
||||
* Corresponds to the lowest value of the given period
|
||||
*/
|
||||
low?: string;
|
||||
/**
|
||||
* Corresponds to the starting value of the given period
|
||||
*/
|
||||
open?: string;
|
||||
/**
|
||||
* Corresponds to the sample count in the given period. (e.g. number of trades)
|
||||
*/
|
||||
volume?: string;
|
||||
}
|
||||
|
||||
export interface CandlestickColors {
|
||||
down: string;
|
||||
flat: string;
|
||||
up: string;
|
||||
}
|
||||
|
||||
export const defaultCandlestickColors: Partial<CandlestickColors> = {
|
||||
down: 'red',
|
||||
flat: 'gray',
|
||||
up: 'green',
|
||||
};
|
||||
|
||||
export interface Options extends common.OptionsWithLegend {
|
||||
/**
|
||||
* Sets the style of the candlesticks
|
||||
*/
|
||||
candleStyle: CandleStyle;
|
||||
/**
|
||||
* Sets the color strategy for the candlesticks
|
||||
*/
|
||||
colorStrategy: ColorStrategy;
|
||||
/**
|
||||
* Set which colors are used when the price movement is up or down
|
||||
*/
|
||||
colors: CandlestickColors;
|
||||
/**
|
||||
* Map fields to appropriate dimension
|
||||
*/
|
||||
fields: CandlestickFieldMap;
|
||||
/**
|
||||
* When enabled, all fields will be sent to the graph
|
||||
*/
|
||||
includeAllFields?: boolean;
|
||||
/**
|
||||
* Sets which dimensions are used for the visualization
|
||||
*/
|
||||
mode: VizDisplayMode;
|
||||
}
|
||||
|
||||
export const defaultOptions: Partial<Options> = {
|
||||
candleStyle: CandleStyle.Candles,
|
||||
colorStrategy: ColorStrategy.OpenClose,
|
||||
colors: {
|
||||
down: 'red',
|
||||
up: 'green',
|
||||
flat: 'gray',
|
||||
},
|
||||
fields: {},
|
||||
includeAllFields: false,
|
||||
mode: VizDisplayMode.CandlesVolume,
|
||||
};
|
||||
|
||||
export interface FieldConfig extends common.GraphFieldConfig {}
|
||||
@@ -263,6 +263,30 @@
|
||||
"pluralName": "BarGaugePanelCfgs",
|
||||
"schemaInterface": "PanelCfg"
|
||||
},
|
||||
"candlestickpanelcfg": {
|
||||
"category": "composable",
|
||||
"codeowners": [
|
||||
"grafana/grafana-edge-squad"
|
||||
],
|
||||
"currentVersion": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"grafanaMaturityCount": 0,
|
||||
"lineageIsGroup": true,
|
||||
"links": {
|
||||
"docs": "https://grafana.com/docs/grafana/next/developers/kinds/composable/candlestickpanelcfg/schema-reference",
|
||||
"go": "n/a",
|
||||
"schema": "https://github.com/grafana/grafana/tree/main/public/app/plugins/panel/candlestick/panelcfg.cue",
|
||||
"ts": "https://github.com/grafana/grafana/tree/main/public/app/plugins/panel/candlestick/panelcfg.gen.ts"
|
||||
},
|
||||
"machineName": "candlestickpanelcfg",
|
||||
"maturity": "experimental",
|
||||
"name": "CandlestickPanelCfg",
|
||||
"pluralMachineName": "candlestickpanelcfgs",
|
||||
"pluralName": "CandlestickPanelCfgs",
|
||||
"schemaInterface": "PanelCfg"
|
||||
},
|
||||
"cloudwatchdataquery": {
|
||||
"category": "composable",
|
||||
"codeowners": [
|
||||
@@ -2087,6 +2111,7 @@
|
||||
"azuremonitordatasourcecfg",
|
||||
"barchartpanelcfg",
|
||||
"bargaugepanelcfg",
|
||||
"candlestickpanelcfg",
|
||||
"cloudwatchdataquery",
|
||||
"cloudwatchdatasourcecfg",
|
||||
"dashboarddataquery",
|
||||
@@ -2181,6 +2206,7 @@
|
||||
"annotationslistpanelcfg",
|
||||
"barchartpanelcfg",
|
||||
"bargaugepanelcfg",
|
||||
"candlestickpanelcfg",
|
||||
"cloudwatchdataquery",
|
||||
"dashboard",
|
||||
"dashboardlistpanelcfg",
|
||||
@@ -2291,4 +2317,4 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,6 +56,7 @@ func corePlugins(rt *thema.Runtime) []pfs.ParsedPlugin {
|
||||
parsePluginOrPanic("public/app/plugins/panel/annolist", "annolist", rt),
|
||||
parsePluginOrPanic("public/app/plugins/panel/barchart", "barchart", rt),
|
||||
parsePluginOrPanic("public/app/plugins/panel/bargauge", "bargauge", rt),
|
||||
parsePluginOrPanic("public/app/plugins/panel/candlestick", "candlestick", rt),
|
||||
parsePluginOrPanic("public/app/plugins/panel/canvas", "canvas", rt),
|
||||
parsePluginOrPanic("public/app/plugins/panel/dashlist", "dashlist", rt),
|
||||
parsePluginOrPanic("public/app/plugins/panel/datagrid", "datagrid", rt),
|
||||
|
||||
@@ -24,7 +24,6 @@ import (
|
||||
)
|
||||
|
||||
var skipPlugins = map[string]bool{
|
||||
"candlestick": true,
|
||||
"influxdb": true, // plugin.json fails validation (defaultMatchFormat)
|
||||
"mixed": true, // plugin.json fails validation (mixed)
|
||||
"opentsdb": true, // plugin.json fails validation (defaultMatchFormat)
|
||||
|
||||
@@ -21,10 +21,10 @@ import { OutsideRangePlugin } from '../timeseries/plugins/OutsideRangePlugin';
|
||||
import { ThresholdControlsPlugin } from '../timeseries/plugins/ThresholdControlsPlugin';
|
||||
|
||||
import { prepareCandlestickFields } from './fields';
|
||||
import { CandlestickOptions, defaultColors, VizDisplayMode } from './models.gen';
|
||||
import { Options, defaultCandlestickColors, VizDisplayMode } from './types';
|
||||
import { drawMarkers, FieldIndices } from './utils';
|
||||
|
||||
interface CandlestickPanelProps extends PanelProps<CandlestickOptions> {}
|
||||
interface CandlestickPanelProps extends PanelProps<Options> {}
|
||||
|
||||
export const CandlestickPanel = ({
|
||||
data,
|
||||
@@ -76,7 +76,7 @@ export const CandlestickPanel = ({
|
||||
}
|
||||
|
||||
const { mode, candleStyle, colorStrategy } = options;
|
||||
const colors = { ...defaultColors, ...options.colors };
|
||||
const colors = { ...defaultCandlestickColors, ...options.colors };
|
||||
let { open, high, low, close, volume } = fieldMap; // names from matched fields
|
||||
|
||||
if (open == null || close == null) {
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import { createTheme, toDataFrame } from '@grafana/data';
|
||||
|
||||
import { prepareCandlestickFields } from './fields';
|
||||
import { CandlestickOptions, VizDisplayMode } from './models.gen';
|
||||
import { Options, VizDisplayMode } from './types';
|
||||
|
||||
const theme = createTheme();
|
||||
|
||||
describe('Candlestick data', () => {
|
||||
const options: CandlestickOptions = {} as CandlestickOptions;
|
||||
const options = {} as Options;
|
||||
|
||||
it('require a time field', () => {
|
||||
const info = prepareCandlestickFields(
|
||||
@@ -122,10 +122,10 @@ describe('Candlestick data', () => {
|
||||
});
|
||||
|
||||
it('will unmap high & low fields in volume-only mode', () => {
|
||||
const options: CandlestickOptions = {
|
||||
const options = {
|
||||
mode: VizDisplayMode.Volume,
|
||||
includeAllFields: true,
|
||||
} as CandlestickOptions;
|
||||
} as Options;
|
||||
|
||||
const info = prepareCandlestickFields(
|
||||
[
|
||||
@@ -184,10 +184,10 @@ describe('Candlestick data', () => {
|
||||
});
|
||||
|
||||
it('will unmap volume field in candles-only mode', () => {
|
||||
const options: CandlestickOptions = {
|
||||
const options = {
|
||||
mode: VizDisplayMode.Candles,
|
||||
includeAllFields: false,
|
||||
} as CandlestickOptions;
|
||||
} as Options;
|
||||
|
||||
const info = prepareCandlestickFields(
|
||||
[
|
||||
@@ -246,10 +246,10 @@ describe('Candlestick data', () => {
|
||||
});
|
||||
|
||||
it("will not remove open field from frame when it's also mapped to high in volume-only mode", () => {
|
||||
const options: CandlestickOptions = {
|
||||
const options = {
|
||||
mode: VizDisplayMode.Volume,
|
||||
includeAllFields: false,
|
||||
} as CandlestickOptions;
|
||||
} as Options;
|
||||
|
||||
const info = prepareCandlestickFields(
|
||||
[
|
||||
|
||||
@@ -12,7 +12,7 @@ import { findField } from 'app/features/dimensions';
|
||||
|
||||
import { prepareGraphableFields } from '../timeseries/utils';
|
||||
|
||||
import { CandlestickOptions, CandlestickFieldMap, VizDisplayMode } from './models.gen';
|
||||
import { Options, CandlestickFieldMap, VizDisplayMode } from './types';
|
||||
|
||||
export interface FieldPickerInfo {
|
||||
/** property name */
|
||||
@@ -96,7 +96,7 @@ function findFieldOrAuto(frame: DataFrame, info: FieldPickerInfo, options: Candl
|
||||
|
||||
export function prepareCandlestickFields(
|
||||
series: DataFrame[] | undefined,
|
||||
options: CandlestickOptions,
|
||||
options: Partial<Options>,
|
||||
theme: GrafanaTheme2,
|
||||
timeRange?: TimeRange
|
||||
): CandlestickData | null {
|
||||
@@ -119,7 +119,7 @@ export function prepareCandlestickFields(
|
||||
|
||||
const data: CandlestickData = { aligned, frame: aligned, names: {} };
|
||||
|
||||
// Apply same filter as everythign else in timeseries
|
||||
// Apply same filter as everything else in timeseries
|
||||
const timeSeriesFrames = prepareGraphableFields([aligned], theme, timeRange);
|
||||
if (!timeSeriesFrames) {
|
||||
return null;
|
||||
|
||||
@@ -1,74 +0,0 @@
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// NOTE: This file will be auto generated from models.cue
|
||||
// It is currenty hand written but will serve as the target for cuetsy
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
import { LegendDisplayMode, OptionsWithLegend } from '@grafana/schema';
|
||||
|
||||
export const modelVersion = Object.freeze([1, 0]);
|
||||
|
||||
export enum VizDisplayMode {
|
||||
CandlesVolume = 'candles+volume',
|
||||
Candles = 'candles',
|
||||
Volume = 'volume',
|
||||
}
|
||||
|
||||
export enum CandleStyle {
|
||||
Candles = 'candles',
|
||||
OHLCBars = 'ohlcbars',
|
||||
}
|
||||
|
||||
export enum ColorStrategy {
|
||||
// up/down color depends on current close vs current open
|
||||
// filled always
|
||||
OpenClose = 'open-close',
|
||||
// up/down color depends on current close vs prior close
|
||||
// filled/hollow depends on current close vs current open
|
||||
CloseClose = 'close-close',
|
||||
}
|
||||
|
||||
export interface CandlestickFieldMap {
|
||||
open?: string;
|
||||
high?: string;
|
||||
low?: string;
|
||||
close?: string;
|
||||
volume?: string;
|
||||
}
|
||||
|
||||
export interface CandlestickColors {
|
||||
up: string;
|
||||
down: string;
|
||||
flat: string;
|
||||
}
|
||||
|
||||
export const defaultColors: CandlestickColors = {
|
||||
up: 'green',
|
||||
down: 'red',
|
||||
flat: 'gray',
|
||||
};
|
||||
|
||||
export interface CandlestickOptions extends OptionsWithLegend {
|
||||
mode: VizDisplayMode;
|
||||
candleStyle: CandleStyle;
|
||||
colorStrategy: ColorStrategy;
|
||||
fields: CandlestickFieldMap;
|
||||
colors: CandlestickColors;
|
||||
|
||||
// When enabled, all fields will be sent to the graph
|
||||
includeAllFields?: boolean;
|
||||
}
|
||||
|
||||
export const defaultOptions: CandlestickOptions = {
|
||||
mode: VizDisplayMode.CandlesVolume,
|
||||
candleStyle: CandleStyle.Candles,
|
||||
colorStrategy: ColorStrategy.OpenClose,
|
||||
colors: defaultColors,
|
||||
fields: {},
|
||||
legend: {
|
||||
displayMode: LegendDisplayMode.List,
|
||||
showLegend: true,
|
||||
placement: 'bottom',
|
||||
calcs: [],
|
||||
},
|
||||
includeAllFields: false,
|
||||
};
|
||||
@@ -14,15 +14,8 @@ import { defaultGraphConfig, getGraphFieldConfig } from '../timeseries/config';
|
||||
|
||||
import { CandlestickPanel } from './CandlestickPanel';
|
||||
import { CandlestickData, candlestickFieldsInfo, FieldPickerInfo, prepareCandlestickFields } from './fields';
|
||||
import {
|
||||
defaultColors,
|
||||
CandlestickOptions,
|
||||
VizDisplayMode,
|
||||
ColorStrategy,
|
||||
defaultOptions,
|
||||
CandleStyle,
|
||||
} from './models.gen';
|
||||
import { CandlestickSuggestionsSupplier } from './suggestions';
|
||||
import { defaultCandlestickColors, defaultOptions, Options, VizDisplayMode, ColorStrategy, CandleStyle } from './types';
|
||||
|
||||
const modeOptions = [
|
||||
{ label: 'Candles', value: VizDisplayMode.Candles },
|
||||
@@ -43,7 +36,7 @@ const colorStrategies = [
|
||||
const numericFieldFilter = (f: Field) => f.type === FieldType.number;
|
||||
|
||||
function addFieldPicker(
|
||||
builder: PanelOptionsEditorBuilder<CandlestickOptions>,
|
||||
builder: PanelOptionsEditorBuilder<Options>,
|
||||
info: FieldPickerInfo,
|
||||
data: CandlestickData | null
|
||||
) {
|
||||
@@ -74,7 +67,7 @@ function addFieldPicker(
|
||||
});
|
||||
}
|
||||
|
||||
export const plugin = new PanelPlugin<CandlestickOptions, GraphFieldConfig>(CandlestickPanel)
|
||||
export const plugin = new PanelPlugin<Options, GraphFieldConfig>(CandlestickPanel)
|
||||
.useFieldConfig(getGraphFieldConfig(defaultGraphConfig))
|
||||
.setPanelOptions((builder, context) => {
|
||||
const opts = context.options ?? defaultOptions;
|
||||
@@ -112,12 +105,12 @@ export const plugin = new PanelPlugin<CandlestickOptions, GraphFieldConfig>(Cand
|
||||
.addColorPicker({
|
||||
path: 'colors.up',
|
||||
name: 'Up color',
|
||||
defaultValue: defaultColors.up,
|
||||
defaultValue: defaultCandlestickColors.up,
|
||||
})
|
||||
.addColorPicker({
|
||||
path: 'colors.down',
|
||||
name: 'Down color',
|
||||
defaultValue: defaultColors.down,
|
||||
defaultValue: defaultCandlestickColors.down,
|
||||
});
|
||||
|
||||
addFieldPicker(builder, candlestickFieldsInfo.open, info);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2021 Grafana Labs
|
||||
// Copyright 2023 Grafana Labs
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
@@ -14,17 +14,57 @@
|
||||
|
||||
package grafanaplugin
|
||||
|
||||
composableKinds: PanelCfg: lineage: {
|
||||
schemas: [{
|
||||
version: [0, 0]
|
||||
schema: {
|
||||
Options: {
|
||||
...
|
||||
} @cuetsy(kind="interface")
|
||||
FieldConfig: {
|
||||
...
|
||||
} @cuetsy(kind="interface")
|
||||
}
|
||||
}]
|
||||
lenses: []
|
||||
import (
|
||||
"github.com/grafana/grafana/packages/grafana-schema/src/common"
|
||||
)
|
||||
|
||||
composableKinds: PanelCfg: {
|
||||
maturity: "experimental"
|
||||
|
||||
lineage: {
|
||||
|
||||
schemas: [{
|
||||
version: [0, 0]
|
||||
schema: {
|
||||
VizDisplayMode: "candles+volume" | "candles" | "volume" @cuetsy(kind="enum", memberNames="CandlesVolume|Candles|Volume")
|
||||
CandleStyle: "candles" | "ohlcbars" @cuetsy(kind="enum", memberNames="Candles|OHLCBars")
|
||||
ColorStrategy: "open-close" | "close-close" @cuetsy(kind="enum", memberNames="OpenClose|CloseClose")
|
||||
CandlestickFieldMap: {
|
||||
// Corresponds to the starting value of the given period
|
||||
open?: string
|
||||
// Corresponds to the highest value of the given period
|
||||
high?: string
|
||||
// Corresponds to the lowest value of the given period
|
||||
low?: string
|
||||
// Corresponds to the final (end) value of the given period
|
||||
close?: string
|
||||
// Corresponds to the sample count in the given period. (e.g. number of trades)
|
||||
volume?: string
|
||||
} @cuetsy(kind="interface")
|
||||
CandlestickColors: {
|
||||
up: string | *"green"
|
||||
down: string | *"red"
|
||||
flat: string | *"gray"
|
||||
} @cuetsy(kind="interface")
|
||||
Options: {
|
||||
common.OptionsWithLegend
|
||||
|
||||
// Sets which dimensions are used for the visualization
|
||||
mode: VizDisplayMode & (*"candles+volume" | _)
|
||||
// Sets the style of the candlesticks
|
||||
candleStyle: CandleStyle & (*"candles" | _)
|
||||
// Sets the color strategy for the candlesticks
|
||||
colorStrategy: ColorStrategy & (*"open-close" | _)
|
||||
// Map fields to appropriate dimension
|
||||
fields: CandlestickFieldMap | *{}
|
||||
// Set which colors are used when the price movement is up or down
|
||||
colors: CandlestickColors | *{down: "red", up: "green", flat: "gray"}
|
||||
// When enabled, all fields will be sent to the graph
|
||||
includeAllFields?: bool | *false
|
||||
} @cuetsy(kind="interface")
|
||||
FieldConfig: common.GraphFieldConfig & {} @cuetsy(kind="interface")
|
||||
}
|
||||
}]
|
||||
lenses: []
|
||||
}
|
||||
}
|
||||
|
||||
106
public/app/plugins/panel/candlestick/panelcfg.gen.ts
Normal file
106
public/app/plugins/panel/candlestick/panelcfg.gen.ts
Normal file
@@ -0,0 +1,106 @@
|
||||
// Code generated - EDITING IS FUTILE. DO NOT EDIT.
|
||||
//
|
||||
// Generated by:
|
||||
// public/app/plugins/gen.go
|
||||
// Using jennies:
|
||||
// TSTypesJenny
|
||||
// PluginTSTypesJenny
|
||||
//
|
||||
// Run 'make gen-cue' from repository root to regenerate.
|
||||
|
||||
import * as common from '@grafana/schema';
|
||||
|
||||
export const PanelCfgModelVersion = Object.freeze([0, 0]);
|
||||
|
||||
export enum VizDisplayMode {
|
||||
Candles = 'candles',
|
||||
CandlesVolume = 'candles+volume',
|
||||
Volume = 'volume',
|
||||
}
|
||||
|
||||
export enum CandleStyle {
|
||||
Candles = 'candles',
|
||||
OHLCBars = 'ohlcbars',
|
||||
}
|
||||
|
||||
export enum ColorStrategy {
|
||||
CloseClose = 'close-close',
|
||||
OpenClose = 'open-close',
|
||||
}
|
||||
|
||||
export interface CandlestickFieldMap {
|
||||
/**
|
||||
* Corresponds to the final (end) value of the given period
|
||||
*/
|
||||
close?: string;
|
||||
/**
|
||||
* Corresponds to the highest value of the given period
|
||||
*/
|
||||
high?: string;
|
||||
/**
|
||||
* Corresponds to the lowest value of the given period
|
||||
*/
|
||||
low?: string;
|
||||
/**
|
||||
* Corresponds to the starting value of the given period
|
||||
*/
|
||||
open?: string;
|
||||
/**
|
||||
* Corresponds to the sample count in the given period. (e.g. number of trades)
|
||||
*/
|
||||
volume?: string;
|
||||
}
|
||||
|
||||
export interface CandlestickColors {
|
||||
down: string;
|
||||
flat: string;
|
||||
up: string;
|
||||
}
|
||||
|
||||
export const defaultCandlestickColors: Partial<CandlestickColors> = {
|
||||
down: 'red',
|
||||
flat: 'gray',
|
||||
up: 'green',
|
||||
};
|
||||
|
||||
export interface Options extends common.OptionsWithLegend {
|
||||
/**
|
||||
* Sets the style of the candlesticks
|
||||
*/
|
||||
candleStyle: CandleStyle;
|
||||
/**
|
||||
* Sets the color strategy for the candlesticks
|
||||
*/
|
||||
colorStrategy: ColorStrategy;
|
||||
/**
|
||||
* Set which colors are used when the price movement is up or down
|
||||
*/
|
||||
colors: CandlestickColors;
|
||||
/**
|
||||
* Map fields to appropriate dimension
|
||||
*/
|
||||
fields: CandlestickFieldMap;
|
||||
/**
|
||||
* When enabled, all fields will be sent to the graph
|
||||
*/
|
||||
includeAllFields?: boolean;
|
||||
/**
|
||||
* Sets which dimensions are used for the visualization
|
||||
*/
|
||||
mode: VizDisplayMode;
|
||||
}
|
||||
|
||||
export const defaultOptions: Partial<Options> = {
|
||||
candleStyle: CandleStyle.Candles,
|
||||
colorStrategy: ColorStrategy.OpenClose,
|
||||
colors: {
|
||||
down: 'red',
|
||||
up: 'green',
|
||||
flat: 'gray',
|
||||
},
|
||||
fields: {},
|
||||
includeAllFields: false,
|
||||
mode: VizDisplayMode.CandlesVolume,
|
||||
};
|
||||
|
||||
export interface FieldConfig extends common.GraphFieldConfig {}
|
||||
@@ -3,7 +3,7 @@ import { config } from '@grafana/runtime';
|
||||
import { SuggestionName } from 'app/types/suggestions';
|
||||
|
||||
import { prepareCandlestickFields } from './fields';
|
||||
import { CandlestickOptions, defaultOptions } from './models.gen';
|
||||
import { defaultOptions, Options } from './types';
|
||||
|
||||
export class CandlestickSuggestionsSupplier {
|
||||
getSuggestionsForData(builder: VisualizationSuggestionsBuilder) {
|
||||
@@ -29,7 +29,7 @@ export class CandlestickSuggestionsSupplier {
|
||||
return;
|
||||
}
|
||||
|
||||
const list = builder.getListAppender<CandlestickOptions, {}>({
|
||||
const list = builder.getListAppender<Options, {}>({
|
||||
name: '',
|
||||
pluginId: 'candlestick',
|
||||
options: {},
|
||||
|
||||
37
public/app/plugins/panel/candlestick/types.ts
Normal file
37
public/app/plugins/panel/candlestick/types.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
import { LegendDisplayMode } from '@grafana/schema';
|
||||
|
||||
import {
|
||||
defaultOptions as defaultOptionsBase,
|
||||
defaultCandlestickColors,
|
||||
Options,
|
||||
CandlestickColors,
|
||||
CandleStyle,
|
||||
ColorStrategy,
|
||||
VizDisplayMode,
|
||||
CandlestickFieldMap,
|
||||
FieldConfig,
|
||||
PanelCfgModelVersion,
|
||||
} from './panelcfg.gen';
|
||||
|
||||
export const defaultOptions: Partial<Options> = {
|
||||
...defaultOptionsBase,
|
||||
// TODO: This should be included in the cue schema in the future.
|
||||
legend: {
|
||||
displayMode: LegendDisplayMode.List,
|
||||
showLegend: true,
|
||||
placement: 'bottom',
|
||||
calcs: [],
|
||||
},
|
||||
};
|
||||
|
||||
export {
|
||||
Options,
|
||||
CandlestickColors,
|
||||
defaultCandlestickColors,
|
||||
CandleStyle,
|
||||
ColorStrategy,
|
||||
VizDisplayMode,
|
||||
CandlestickFieldMap,
|
||||
FieldConfig,
|
||||
PanelCfgModelVersion,
|
||||
};
|
||||
@@ -2,7 +2,7 @@ import uPlot from 'uplot';
|
||||
|
||||
import { colorManipulator } from '@grafana/data';
|
||||
|
||||
import { VizDisplayMode, ColorStrategy, CandleStyle } from './models.gen';
|
||||
import { VizDisplayMode, ColorStrategy, CandleStyle } from './types';
|
||||
|
||||
const { alpha } = colorManipulator;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user