General graphing updates: Median, normalization, rounding, tooltips, toolbar (#116)

- Always use relative values to display benchmarks
  (actual values are platform dependent and meaningless).
- Use the median of the last 10 values as middle, such that new benchmarks
  are always on the graph.
- Don't round values in the data aggregator, round them on visualization
   instead.
- Use toolbar in detail charts.
- Don't use shared tooltip.
This commit is contained in:
Lukas Tenbrink
2025-08-08 17:12:50 +02:00
committed by GitHub
parent 5101337940
commit d3425f06b3
3 changed files with 328 additions and 304 deletions

View File

@@ -69,30 +69,36 @@ function displayGraph(targetDivID, graphID, type = "full", filter = "") {
let customColor = undefined;
if (type === "compact") {
// Kind of "normalize" the series, dividing by the average.
series.forEach((serie, key) => {
let count = 0;
let mean = 0.0;
serie.forEach((el) => {
if (el != null) {
mean += el;
count += 1;
// Normalize each series:
// - The last n samples are used as 'reference'.
// - The median defines the value 1.0.
series.forEach((serie, key) => {
const NUM_VALUES_USED_FOR_REFERENCE = 10;
let values = [];
for (let i = serie.length - 1; i >= 0; i--) {
let el = serie[i];
if (el != null) {
values.push(el);
if (values.length >= NUM_VALUES_USED_FOR_REFERENCE) {
break;
}
});
mean = mean / count;
}
}
values.sort();
let median = values[Math.floor(NUM_VALUES_USED_FOR_REFERENCE / 2)];
//const std = Math.sqrt(input.map(x => Math.pow(x - mean, 2)).reduce((a, b) => a + b) / n)
series.set(
key,
serie.map((v) => {
if (v != null) {
return v / mean; // Devide by the mean.
}
return null;
}),
);
});
series.set(
key,
serie.map((v) => {
if (v != null) {
return v / median;
}
return null;
}),
);
});
if (type === "compact") {
// Combine all into a single, averaged serie.
const outputSerie = [];
for (let i = 0; i < allBenchmarks.length; i++) {
@@ -106,7 +112,7 @@ function displayGraph(targetDivID, graphID, type = "full", filter = "") {
});
let point = null;
if (count >= 1) {
point = Math.round((sum * 1000) / count) / 10; // Round to 3 decimals.
point = sum / count;
}
outputSerie.push(point);
}
@@ -144,10 +150,10 @@ function displayGraph(targetDivID, graphID, type = "full", filter = "") {
height: type === "compact" ? 200 : 600,
type: "line",
zoom: {
enabled: false,
enabled: type !== 'compact',
},
toolbar: {
show: false,
show: type !== 'compact',
},
animations: {
enabled: false,
@@ -155,9 +161,7 @@ function displayGraph(targetDivID, graphID, type = "full", filter = "") {
},
tooltip: {
theme: "dark",
y: {
formatter: (value, opts) => (type === "compact" ? value + "%" : value),
},
shared: false,
x: {
formatter: function(value, opts) {
const commit = commits[opts.dataPointIndex];
@@ -204,9 +208,14 @@ function displayGraph(targetDivID, graphID, type = "full", filter = "") {
},
},
yaxis: {
tickAmount: 4,
min: type === "compact" ? 0 : undefined,
max: type === "compact" ? 200 : undefined,
tickAmount: type === "compact" ? 4 : 8,
showAlways: true,
min: 0.0,
max: 2,
// TODO Somehow broken :(
// logarithmic: true,
// logBase: 10,
decimalsInFloat: 2,
},
legend: {
show: type !== "compact",

View File

@@ -1,39 +1,65 @@
.apexcharts-canvas {
position: relative;
user-select: none;
/* cannot give overflow: hidden as it will crop tooltips which overflow outside chart area */
@keyframes opaque {
0% {
opacity: 0
}
to {
opacity: 1
}
}
@keyframes resizeanim {
0%,
to {
opacity: 0
}
}
.apexcharts-canvas {
position: relative;
direction: ltr !important;
user-select: none
}
/* scrollbar is not visible by default for legend, hence forcing the visibility */
.apexcharts-canvas ::-webkit-scrollbar {
-webkit-appearance: none;
width: 6px;
width: 6px
}
.apexcharts-canvas ::-webkit-scrollbar-thumb {
border-radius: 4px;
background-color: rgba(0, 0, 0, .5);
box-shadow: 0 0 1px rgba(255, 255, 255, .5);
-webkit-box-shadow: 0 0 1px rgba(255, 255, 255, .5);
-webkit-box-shadow: 0 0 1px rgba(255, 255, 255, .5)
}
.apexcharts-inner {
position: relative;
position: relative
}
.apexcharts-text tspan {
font-family: inherit;
font-family: inherit
}
.legend-mouseover-inactive {
transition: 0.15s ease all;
opacity: 0.20;
rect.legend-mouseover-inactive,
.legend-mouseover-inactive rect,
.legend-mouseover-inactive path,
.legend-mouseover-inactive circle,
.legend-mouseover-inactive line,
.legend-mouseover-inactive text.apexcharts-yaxis-title-text,
.legend-mouseover-inactive text.apexcharts-yaxis-label {
transition: .15s ease all;
opacity: .2
}
.apexcharts-legend-text {
padding-left: 15px;
margin-left: -15px;
}
.apexcharts-series-collapsed {
opacity: 0;
opacity: 0
}
.apexcharts-tooltip {
@@ -51,90 +77,84 @@
overflow: hidden;
white-space: nowrap;
z-index: 12;
transition: 0.15s ease all;
transition: .15s ease all
}
.apexcharts-tooltip.apexcharts-active {
opacity: 1;
transition: 0.15s ease all;
transition: .15s ease all
}
.apexcharts-tooltip.apexcharts-theme-light {
border: 1px solid #e3e3e3;
background: rgba(255, 255, 255, 0.96);
background: rgba(255, 255, 255, .96)
}
.apexcharts-tooltip.apexcharts-theme-dark {
color: #fff;
background: rgba(30, 30, 30, 0.8);
background: rgba(30, 30, 30, .8)
}
.apexcharts-tooltip * {
font-family: inherit;
font-family: inherit
}
.apexcharts-tooltip-title {
padding: 6px;
font-size: 15px;
margin-bottom: 4px;
margin-bottom: 4px
}
.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title {
background: #ECEFF1;
border-bottom: 1px solid #ddd;
background: #eceff1;
border-bottom: 1px solid #ddd
}
.apexcharts-tooltip.apexcharts-theme-dark .apexcharts-tooltip-title {
background: rgba(0, 0, 0, 0.7);
border-bottom: 1px solid #333;
background: rgba(0, 0, 0, .7);
border-bottom: 1px solid #333
}
.apexcharts-tooltip-text-y-value,
.apexcharts-tooltip-text-goals-value,
.apexcharts-tooltip-text-y-value,
.apexcharts-tooltip-text-z-value {
display: inline-block;
font-weight: 600;
margin-left: 5px;
font-weight: 600
}
.apexcharts-tooltip-title:empty,
.apexcharts-tooltip-text-y-label:empty,
.apexcharts-tooltip-text-y-value:empty,
.apexcharts-tooltip-text-goals-label:empty,
.apexcharts-tooltip-text-goals-value:empty,
.apexcharts-tooltip-text-z-value:empty {
display: none;
}
.apexcharts-tooltip-text-y-value,
.apexcharts-tooltip-text-goals-value,
.apexcharts-tooltip-text-z-value {
font-weight: 600;
.apexcharts-tooltip-text-y-label:empty,
.apexcharts-tooltip-text-y-value:empty,
.apexcharts-tooltip-text-z-value:empty,
.apexcharts-tooltip-title:empty {
display: none
}
.apexcharts-tooltip-text-goals-label,
.apexcharts-tooltip-text-goals-value {
padding: 6px 0 5px;
padding: 6px 0 5px
}
.apexcharts-tooltip-goals-group,
.apexcharts-tooltip-text-goals-label,
.apexcharts-tooltip-text-goals-value {
display: flex;
display: flex
}
.apexcharts-tooltip-text-goals-label:not(:empty),
.apexcharts-tooltip-text-goals-value:not(:empty) {
margin-top: -6px;
margin-top: -6px
}
.apexcharts-tooltip-marker {
width: 12px;
height: 12px;
position: relative;
top: 0px;
top: 0;
margin-right: 10px;
border-radius: 50%;
border-radius: 50%
}
.apexcharts-tooltip-series-group {
@@ -142,64 +162,58 @@
display: none;
text-align: left;
justify-content: left;
align-items: center;
align-items: center
}
.apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-marker {
opacity: 1;
opacity: 1
}
.apexcharts-tooltip-series-group.apexcharts-active,
.apexcharts-tooltip-series-group:last-child {
padding-bottom: 4px;
}
.apexcharts-tooltip-series-group-hidden {
opacity: 0;
height: 0;
line-height: 0;
padding: 0 !important;
padding-bottom: 4px
}
.apexcharts-tooltip-y-group {
padding: 6px 0 5px;
padding: 6px 0 5px
}
.apexcharts-tooltip-box, .apexcharts-custom-tooltip {
padding: 4px 8px;
.apexcharts-custom-tooltip,
.apexcharts-tooltip-box {
padding: 4px 8px
}
.apexcharts-tooltip-boxPlot {
display: flex;
flex-direction: column-reverse;
flex-direction: column-reverse
}
.apexcharts-tooltip-box>div {
margin: 4px 0;
margin: 4px 0
}
.apexcharts-tooltip-box span.value {
font-weight: bold;
font-weight: 700
}
.apexcharts-tooltip-rangebar {
padding: 5px 8px;
padding: 5px 8px
}
.apexcharts-tooltip-rangebar .category {
font-weight: 600;
color: #777;
color: #777
}
.apexcharts-tooltip-rangebar .series-name {
font-weight: bold;
font-weight: 700;
display: block;
margin-bottom: 5px;
margin-bottom: 5px
}
.apexcharts-xaxistooltip {
.apexcharts-xaxistooltip,
.apexcharts-yaxistooltip {
opacity: 0;
padding: 9px 10px;
pointer-events: none;
color: #373d3f;
font-size: 13px;
@@ -207,15 +221,19 @@
border-radius: 2px;
position: absolute;
z-index: 10;
background: #ECEFF1;
border: 1px solid #90A4AE;
transition: 0.15s ease all;
background: #eceff1;
border: 1px solid #90a4ae
}
.apexcharts-xaxistooltip {
padding: 9px 10px;
transition: .15s ease all
}
.apexcharts-xaxistooltip.apexcharts-theme-dark {
background: rgba(0, 0, 0, 0.7);
border: 1px solid rgba(0, 0, 0, 0.5);
color: #fff;
background: rgba(0, 0, 0, .7);
border: 1px solid rgba(0, 0, 0, .5);
color: #fff
}
.apexcharts-xaxistooltip:after,
@@ -226,86 +244,70 @@
height: 0;
width: 0;
position: absolute;
pointer-events: none;
pointer-events: none
}
.apexcharts-xaxistooltip:after {
border-color: rgba(236, 239, 241, 0);
border-color: transparent;
border-width: 6px;
margin-left: -6px;
margin-left: -6px
}
.apexcharts-xaxistooltip:before {
border-color: rgba(144, 164, 174, 0);
border-color: transparent;
border-width: 7px;
margin-left: -7px;
margin-left: -7px
}
.apexcharts-xaxistooltip-bottom:after,
.apexcharts-xaxistooltip-bottom:before {
bottom: 100%;
bottom: 100%
}
.apexcharts-xaxistooltip-top:after,
.apexcharts-xaxistooltip-top:before {
top: 100%;
top: 100%
}
.apexcharts-xaxistooltip-bottom:after {
border-bottom-color: #ECEFF1;
border-bottom-color: #eceff1
}
.apexcharts-xaxistooltip-bottom:before {
border-bottom-color: #90A4AE;
}
.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:after {
border-bottom-color: rgba(0, 0, 0, 0.5);
border-bottom-color: #90a4ae
}
.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:after,
.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:before {
border-bottom-color: rgba(0, 0, 0, 0.5);
border-bottom-color: rgba(0, 0, 0, .5)
}
.apexcharts-xaxistooltip-top:after {
border-top-color: #ECEFF1
border-top-color: #eceff1
}
.apexcharts-xaxistooltip-top:before {
border-top-color: #90A4AE;
}
.apexcharts-xaxistooltip-top.apexcharts-theme-dark:after {
border-top-color: rgba(0, 0, 0, 0.5);
border-top-color: #90a4ae
}
.apexcharts-xaxistooltip-top.apexcharts-theme-dark:after,
.apexcharts-xaxistooltip-top.apexcharts-theme-dark:before {
border-top-color: rgba(0, 0, 0, 0.5);
border-top-color: rgba(0, 0, 0, .5)
}
.apexcharts-xaxistooltip.apexcharts-active {
opacity: 1;
transition: 0.15s ease all;
transition: .15s ease all
}
.apexcharts-yaxistooltip {
opacity: 0;
padding: 4px 10px;
pointer-events: none;
color: #373d3f;
font-size: 13px;
text-align: center;
border-radius: 2px;
position: absolute;
z-index: 10;
background: #ECEFF1;
border: 1px solid #90A4AE;
padding: 4px 10px
}
.apexcharts-yaxistooltip.apexcharts-theme-dark {
background: rgba(0, 0, 0, 0.7);
border: 1px solid rgba(0, 0, 0, 0.5);
color: #fff;
background: rgba(0, 0, 0, .7);
border: 1px solid rgba(0, 0, 0, .5);
color: #fff
}
.apexcharts-yaxistooltip:after,
@@ -316,114 +318,107 @@
height: 0;
width: 0;
position: absolute;
pointer-events: none;
pointer-events: none
}
.apexcharts-yaxistooltip:after {
border-color: rgba(236, 239, 241, 0);
border-color: transparent;
border-width: 6px;
margin-top: -6px;
margin-top: -6px
}
.apexcharts-yaxistooltip:before {
border-color: rgba(144, 164, 174, 0);
border-color: transparent;
border-width: 7px;
margin-top: -7px;
margin-top: -7px
}
.apexcharts-yaxistooltip-left:after,
.apexcharts-yaxistooltip-left:before {
left: 100%;
left: 100%
}
.apexcharts-yaxistooltip-right:after,
.apexcharts-yaxistooltip-right:before {
right: 100%;
right: 100%
}
.apexcharts-yaxistooltip-left:after {
border-left-color: #ECEFF1;
border-left-color: #eceff1
}
.apexcharts-yaxistooltip-left:before {
border-left-color: #90A4AE;
}
.apexcharts-yaxistooltip-left.apexcharts-theme-dark:after {
border-left-color: rgba(0, 0, 0, 0.5);
border-left-color: #90a4ae
}
.apexcharts-yaxistooltip-left.apexcharts-theme-dark:after,
.apexcharts-yaxistooltip-left.apexcharts-theme-dark:before {
border-left-color: rgba(0, 0, 0, 0.5);
border-left-color: rgba(0, 0, 0, .5)
}
.apexcharts-yaxistooltip-right:after {
border-right-color: #ECEFF1;
border-right-color: #eceff1
}
.apexcharts-yaxistooltip-right:before {
border-right-color: #90A4AE;
}
.apexcharts-yaxistooltip-right.apexcharts-theme-dark:after {
border-right-color: rgba(0, 0, 0, 0.5);
border-right-color: #90a4ae
}
.apexcharts-yaxistooltip-right.apexcharts-theme-dark:after,
.apexcharts-yaxistooltip-right.apexcharts-theme-dark:before {
border-right-color: rgba(0, 0, 0, 0.5);
border-right-color: rgba(0, 0, 0, .5)
}
.apexcharts-yaxistooltip.apexcharts-active {
opacity: 1;
opacity: 1
}
.apexcharts-yaxistooltip-hidden {
display: none;
display: none
}
.apexcharts-xcrosshairs,
.apexcharts-ycrosshairs {
pointer-events: none;
opacity: 0;
transition: 0.15s ease all;
transition: .15s ease all
}
.apexcharts-xcrosshairs.apexcharts-active,
.apexcharts-ycrosshairs.apexcharts-active {
opacity: 1;
transition: 0.15s ease all;
transition: .15s ease all
}
.apexcharts-ycrosshairs-hidden {
opacity: 0;
opacity: 0
}
.apexcharts-selection-rect {
cursor: move;
cursor: move
}
.svg_select_boundingRect, .svg_select_points_rot {
.svg_select_shape {
stroke-width: 1;
stroke-dasharray: 10 10;
stroke: black;
stroke-opacity: 0.1;
pointer-events: none;
opacity: 0;
visibility: hidden;
}
.apexcharts-selection-rect + g .svg_select_boundingRect,
.apexcharts-selection-rect + g .svg_select_points_rot {
opacity: 0;
visibility: hidden;
fill: none;
}
.apexcharts-selection-rect + g .svg_select_points_l,
.apexcharts-selection-rect + g .svg_select_points_r {
cursor: ew-resize;
opacity: 1;
visibility: visible;
.svg_select_handle {
stroke-width: 3;
stroke: black;
fill: none;
}
.svg_select_points {
fill: #efefef;
stroke: #333;
rx: 2;
.svg_select_handle_r {
cursor: e-resize;
}
.svg_select_handle_l {
cursor: w-resize;
}
.apexcharts-svg.apexcharts-zoomable.hovering-zoom {
@@ -434,104 +429,104 @@
cursor: move
}
.apexcharts-menu-icon,
.apexcharts-pan-icon,
.apexcharts-reset-icon,
.apexcharts-selection-icon,
.apexcharts-toolbar-custom-icon,
.apexcharts-zoom-icon,
.apexcharts-zoomin-icon,
.apexcharts-zoomout-icon,
.apexcharts-reset-icon,
.apexcharts-pan-icon,
.apexcharts-selection-icon,
.apexcharts-menu-icon,
.apexcharts-toolbar-custom-icon {
.apexcharts-zoomout-icon {
cursor: pointer;
width: 20px;
height: 20px;
line-height: 24px;
color: #6E8192;
text-align: center;
color: #6e8192;
text-align: center
}
.apexcharts-menu-icon svg,
.apexcharts-reset-icon svg,
.apexcharts-zoom-icon svg,
.apexcharts-zoomin-icon svg,
.apexcharts-zoomout-icon svg,
.apexcharts-reset-icon svg,
.apexcharts-menu-icon svg {
fill: #6E8192;
.apexcharts-zoomout-icon svg {
fill: #6e8192
}
.apexcharts-selection-icon svg {
fill: #444;
transform: scale(0.76)
transform: scale(.76)
}
.apexcharts-theme-dark .apexcharts-menu-icon svg,
.apexcharts-theme-dark .apexcharts-pan-icon svg,
.apexcharts-theme-dark .apexcharts-reset-icon svg,
.apexcharts-theme-dark .apexcharts-selection-icon svg,
.apexcharts-theme-dark .apexcharts-toolbar-custom-icon svg,
.apexcharts-theme-dark .apexcharts-zoom-icon svg,
.apexcharts-theme-dark .apexcharts-zoomin-icon svg,
.apexcharts-theme-dark .apexcharts-zoomout-icon svg,
.apexcharts-theme-dark .apexcharts-reset-icon svg,
.apexcharts-theme-dark .apexcharts-pan-icon svg,
.apexcharts-theme-dark .apexcharts-selection-icon svg,
.apexcharts-theme-dark .apexcharts-menu-icon svg,
.apexcharts-theme-dark .apexcharts-toolbar-custom-icon svg {
fill: #f3f4f5;
.apexcharts-theme-dark .apexcharts-zoomout-icon svg {
fill: #f3f4f5
}
.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected svg,
.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected svg,
.apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected svg,
.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected svg {
fill: #008FFB;
.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected svg {
fill: #008ffb
}
.apexcharts-theme-light .apexcharts-menu-icon:hover svg,
.apexcharts-theme-light .apexcharts-reset-icon:hover svg,
.apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover svg,
.apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover svg,
.apexcharts-theme-light .apexcharts-zoomin-icon:hover svg,
.apexcharts-theme-light .apexcharts-zoomout-icon:hover svg,
.apexcharts-theme-light .apexcharts-reset-icon:hover svg,
.apexcharts-theme-light .apexcharts-menu-icon:hover svg {
fill: #333;
.apexcharts-theme-light .apexcharts-zoomout-icon:hover svg {
fill: #333
}
.apexcharts-selection-icon,
.apexcharts-menu-icon {
position: relative;
.apexcharts-menu-icon,
.apexcharts-selection-icon {
position: relative
}
.apexcharts-reset-icon {
margin-left: 5px;
margin-left: 5px
}
.apexcharts-zoom-icon,
.apexcharts-menu-icon,
.apexcharts-reset-icon,
.apexcharts-menu-icon {
transform: scale(0.85);
.apexcharts-zoom-icon {
transform: scale(.85)
}
.apexcharts-zoomin-icon,
.apexcharts-zoomout-icon {
transform: scale(0.7)
transform: scale(.7)
}
.apexcharts-zoomout-icon {
margin-right: 3px;
margin-right: 3px
}
.apexcharts-pan-icon {
transform: scale(0.62);
transform: scale(.62);
position: relative;
left: 1px;
top: 0px;
top: 0
}
.apexcharts-pan-icon svg {
fill: #fff;
stroke: #6E8192;
stroke-width: 2;
stroke: #6e8192;
stroke-width: 2
}
.apexcharts-pan-icon.apexcharts-selected svg {
stroke: #008FFB;
stroke: #008ffb
}
.apexcharts-pan-icon:not(.apexcharts-selected):hover svg {
stroke: #333;
stroke: #333
}
.apexcharts-toolbar {
@@ -540,10 +535,10 @@
max-width: 176px;
text-align: right;
border-radius: 3px;
padding: 0px 6px 2px 6px;
padding: 0 6px 2px;
display: flex;
justify-content: space-between;
align-items: center;
align-items: center
}
.apexcharts-menu {
@@ -556,133 +551,129 @@
right: 10px;
opacity: 0;
min-width: 110px;
transition: 0.15s ease all;
pointer-events: none;
transition: .15s ease all;
pointer-events: none
}
.apexcharts-menu.apexcharts-menu-open {
opacity: 1;
pointer-events: all;
transition: 0.15s ease all;
transition: .15s ease all
}
.apexcharts-menu-item {
padding: 6px 7px;
font-size: 12px;
cursor: pointer;
cursor: pointer
}
.apexcharts-theme-light .apexcharts-menu-item:hover {
background: #eee;
background: #eee
}
.apexcharts-theme-dark .apexcharts-menu {
background: rgba(0, 0, 0, 0.7);
color: #fff;
background: rgba(0, 0, 0, .7);
color: #fff
}
@media screen and (min-width: 768px) {
@media screen and (min-width:768px) {
.apexcharts-canvas:hover .apexcharts-toolbar {
opacity: 1;
opacity: 1
}
}
.apexcharts-datalabel.apexcharts-element-hidden {
.apexcharts-canvas .apexcharts-element-hidden,
.apexcharts-datalabel.apexcharts-element-hidden,
.apexcharts-hide .apexcharts-series-points {
opacity: 0;
}
.apexcharts-pie-label,
.apexcharts-datalabels,
.apexcharts-hidden-element-shown {
opacity: 1;
transition: 0.25s ease all;
}
.apexcharts-datalabel,
.apexcharts-datalabel-label,
.apexcharts-datalabel-value {
.apexcharts-datalabel-value,
.apexcharts-datalabels,
.apexcharts-pie-label {
cursor: default;
pointer-events: none;
pointer-events: none
}
.apexcharts-pie-label-delay {
opacity: 0;
animation-name: opaque;
animation-duration: 0.3s;
animation-duration: .3s;
animation-fill-mode: forwards;
animation-timing-function: ease;
animation-timing-function: ease
}
.apexcharts-canvas .apexcharts-element-hidden {
opacity: 0;
.apexcharts-radialbar-label {
cursor: pointer;
}
.apexcharts-hide .apexcharts-series-points {
opacity: 0;
}
.apexcharts-gridline,
.apexcharts-annotation-rect,
.apexcharts-tooltip .apexcharts-marker,
.apexcharts-area-series .apexcharts-area,
.apexcharts-gridline,
.apexcharts-line,
.apexcharts-zoom-rect,
.apexcharts-point-annotation-label,
.apexcharts-radar-series path:not(.apexcharts-marker),
.apexcharts-radar-series polygon,
.apexcharts-toolbar svg,
.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,
.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,
.apexcharts-radar-series path,
.apexcharts-radar-series polygon {
pointer-events: none;
.apexcharts-tooltip .apexcharts-marker,
.apexcharts-xaxis-annotation-label,
.apexcharts-yaxis-annotation-label,
.apexcharts-zoom-rect,
.no-pointer-events {
pointer-events: none
}
/* markers */
.apexcharts-marker {
transition: 0.15s ease all;
}
@keyframes opaque {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
/* Resize generated styles */
@keyframes resizeanim {
from {
opacity: 0;
}
to {
opacity: 0;
}
.apexcharts-tooltip-active .apexcharts-marker {
transition: .15s ease all
}
.resize-triggers {
animation: 1ms resizeanim;
visibility: hidden;
opacity: 0;
height: 100%;
width: 100%;
overflow: hidden
}
.contract-trigger:before,
.resize-triggers,
.resize-triggers>div,
.contract-trigger:before {
.resize-triggers>div {
content: " ";
display: block;
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
overflow: hidden;
left: 0
}
.resize-triggers>div {
height: 100%;
width: 100%;
background: #eee;
overflow: auto;
overflow: auto
}
.contract-trigger:before {
overflow: hidden;
width: 200%;
height: 200%;
height: 200%
}
.apexcharts-bar-goals-markers {
pointer-events: none
}
.apexcharts-bar-shadows {
pointer-events: none
}
.apexcharts-rangebar-goals-markers {
pointer-events: none
}

File diff suppressed because one or more lines are too long