ikizmet-apexcharts
Version:
iKizmet fork of Apex Charts library
91 lines (76 loc) • 2.29 kB
JavaScript
import Formatters from '../Formatters'
import Graphics from '../Graphics'
export default class AxesUtils {
constructor(ctx) {
this.ctx = ctx
this.w = ctx.w
}
// Based on the formatter function, get the label text and position
getLabel(labels, timelineLabels, x, i, drawnLabels = []) {
const w = this.w
let rawLabel = typeof labels[i] === 'undefined' ? '' : labels[i]
let label
let xlbFormatter = w.globals.xLabelFormatter
let customFormatter = w.config.xaxis.labels.formatter
let xFormat = new Formatters(this.ctx)
label = xFormat.xLabelFormat(xlbFormatter, rawLabel)
if (customFormatter !== undefined) {
label = customFormatter(rawLabel, labels[i], i)
}
if (timelineLabels.length > 0) {
x = timelineLabels[i].position
label = timelineLabels[i].value
} else {
if (w.config.xaxis.type === 'datetime' && customFormatter === undefined) {
label = ''
}
}
if (typeof label === 'undefined') label = ''
label = label.toString()
if (
label.indexOf('NaN') === 0 ||
label.toLowerCase().indexOf('invalid') === 0 ||
label.toLowerCase().indexOf('infinity') >= 0 ||
(drawnLabels.indexOf(label) >= 0 && !w.config.xaxis.labels.showDuplicates)
) {
label = ''
}
return {
x,
text: label
}
}
drawYAxisTicks(
x,
tickAmount,
axisBorder,
axisTicks,
realIndex,
labelsDivider,
elYaxis
) {
let w = this.w
let graphics = new Graphics(this.ctx)
// initial label position = 0;
let t = w.globals.translateY
if (axisTicks.show) {
if (w.config.yaxis[realIndex].opposite === true) x = x + axisTicks.width
for (let i = tickAmount; i >= 0; i--) {
let tY =
t + tickAmount / 10 + w.config.yaxis[realIndex].labels.offsetY - 1
if (w.globals.isBarHorizontal) {
tY = labelsDivider * i
}
let elTick = graphics.drawLine(
x + axisBorder.offsetX - axisTicks.width + axisTicks.offsetX,
tY + axisTicks.offsetY,
x + axisBorder.offsetX + axisTicks.offsetX,
tY + axisTicks.offsetY,
axisBorder.color
)
elYaxis.add(elTick)
t = t + labelsDivider
}
}
}
}