Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
nexpie-grafana-theme
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Registry
Registry
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Kornkitt Poolsup
nexpie-grafana-theme
Commits
6cc6a782
Unverified
Commit
6cc6a782
authored
Dec 15, 2020
by
Ryan McKinley
Committed by
GitHub
Dec 15, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
GraphNG: only initialize path builders once (#29863)
parent
4e1cab1e
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
38 additions
and
47 deletions
+38
-47
packages/grafana-ui/src/components/uPlot/config/UPlotSeriesBuilder.ts
+38
-47
No files found.
packages/grafana-ui/src/components/uPlot/config/UPlotSeriesBuilder.ts
View file @
6cc6a782
...
...
@@ -3,9 +3,6 @@ import uPlot, { Series } from 'uplot';
import
{
DrawStyle
,
LineConfig
,
AreaConfig
,
PointsConfig
,
PointVisibility
,
LineInterpolation
}
from
'../config'
;
import
{
PlotConfigBuilder
}
from
'../types'
;
const
barWidthFactor
=
0.6
;
const
barMaxWidth
=
Infinity
;
export
interface
SeriesProps
extends
LineConfig
,
AreaConfig
,
PointsConfig
{
drawStyle
:
DrawStyle
;
scaleKey
:
string
;
...
...
@@ -35,19 +32,7 @@ export class UPlotSeriesBuilder extends PlotConfigBuilder<SeriesProps, Series> {
lineConfig
.
stroke
=
lineColor
;
lineConfig
.
width
=
lineWidth
;
lineConfig
.
paths
=
(
self
:
uPlot
,
seriesIdx
:
number
,
idx0
:
number
,
idx1
:
number
)
=>
{
let
builderConfig
;
if
(
drawStyle
===
DrawStyle
.
Bars
)
{
builderConfig
=
{
size
:
[
barWidthFactor
,
barMaxWidth
]
};
}
else
if
(
drawStyle
===
DrawStyle
.
Line
)
{
if
(
lineInterpolation
===
LineInterpolation
.
StepBefore
)
{
builderConfig
=
{
align
:
-
1
};
}
else
if
(
lineInterpolation
===
LineInterpolation
.
StepAfter
)
{
builderConfig
=
{
align
:
1
};
}
}
let
pathsBuilder
=
mapDrawStyleToPathBuilder
(
drawStyle
,
lineInterpolation
,
builderConfig
);
let
pathsBuilder
=
mapDrawStyleToPathBuilder
(
drawStyle
,
lineInterpolation
);
return
pathsBuilder
(
self
,
seriesIdx
,
idx0
,
idx1
);
};
}
...
...
@@ -98,44 +83,50 @@ export class UPlotSeriesBuilder extends PlotConfigBuilder<SeriesProps, Series> {
}
}
enum
PathBuilder
{
Linear
,
Bars
,
Spline
,
Stepped
,
interface
PathBuilders
{
bars
:
Series
.
PathBuilder
;
linear
:
Series
.
PathBuilder
;
smooth
:
Series
.
PathBuilder
;
stepBefore
:
Series
.
PathBuilder
;
stepAfter
:
Series
.
PathBuilder
;
}
function
getPathBuilder
(
builder
:
PathBuilder
):
(
opts
:
any
)
=>
Series
.
PathBuilder
{
const
pathBuilders
=
uPlot
.
paths
;
switch
(
builder
)
{
case
PathBuilder
.
Bars
:
return
pathBuilders
.
bars
!
;
case
PathBuilder
.
Linear
:
return
pathBuilders
.
linear
!
;
case
PathBuilder
.
Spline
:
return
pathBuilders
.
spline
!
;
case
PathBuilder
.
Stepped
:
return
pathBuilders
.
stepped
!
;
default
:
return
pathBuilders
.
linear
!
;
let
builders
:
PathBuilders
|
undefined
=
undefined
;
function
mapDrawStyleToPathBuilder
(
style
:
DrawStyle
,
lineInterpolation
?:
LineInterpolation
,
opts
?:
any
):
Series
.
PathBuilder
{
// This should be global static, but Jest initalization was failing so we lazy load to avoid the issue
if
(
!
builders
)
{
const
pathBuilders
=
uPlot
.
paths
;
const
barWidthFactor
=
0.6
;
const
barMaxWidth
=
Infinity
;
builders
=
{
bars
:
pathBuilders
.
bars
!
({
size
:
[
barWidthFactor
,
barMaxWidth
]
}),
linear
:
pathBuilders
.
linear
!
(),
smooth
:
pathBuilders
.
spline
!
(),
stepBefore
:
pathBuilders
.
stepped
!
({
align
:
-
1
}),
stepAfter
:
pathBuilders
.
stepped
!
({
align
:
1
}),
};
}
}
function
mapDrawStyleToPathBuilder
(
style
:
DrawStyle
,
lineInterpolation
?:
LineInterpolation
,
opts
?:
any
)
{
let
builder
=
getPathBuilder
(
PathBuilder
.
Linear
);
if
(
style
===
DrawStyle
.
Bars
)
{
builder
=
getPathBuilder
(
PathBuilder
.
Bars
);
}
else
if
(
style
===
DrawStyle
.
Line
)
{
return
builders
.
bars
;
}
if
(
style
===
DrawStyle
.
Line
)
{
if
(
lineInterpolation
===
LineInterpolation
.
StepBefore
)
{
builder
=
getPathBuilder
(
PathBuilder
.
Stepped
);
}
else
if
(
lineInterpolation
===
LineInterpolation
.
StepAfter
)
{
builder
=
getPathBuilder
(
PathBuilder
.
Stepped
);
}
else
if
(
lineInterpolation
===
LineInterpolation
.
Smooth
)
{
builder
=
getPathBuilder
(
PathBuilder
.
Spline
);
return
builders
.
stepBefore
;
}
if
(
lineInterpolation
===
LineInterpolation
.
StepAfter
)
{
return
builders
.
stepAfter
;
}
if
(
lineInterpolation
===
LineInterpolation
.
Smooth
)
{
return
builders
.
smooth
;
}
}
return
builder
(
opts
);
return
builder
s
.
linear
;
// the default
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment