devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
119 lines (99 loc) • 4.19 kB
JavaScript
"use strict";
var isDefined = require("../../core/utils/type").isDefined,
extend = require("../../core/utils/extend").extend;
function getPathStyle(options) {
return { stroke: options.color, "stroke-width": options.width, "stroke-opacity": options.opacity };
}
function createTick(axis, renderer, tickOptions, gridOptions, skippedCategory, skipLabels, offset) {
var tickOffset = offset || axis._tickOffset,
lineGroup = axis._axisLineGroup,
elementsGroup = axis._axisElementsGroup,
tickStyle = getPathStyle(tickOptions),
gridStyle = getPathStyle(gridOptions),
emptyStrRegExp = /^\s+$/,
axisOptions = axis.getOptions(),
labelOptions = axisOptions.label,
labelStyle = axis._textOptions;
function getLabelFontStyle(tick) {
var fontStyle = axis._textFontStyles,
customizeColor = labelOptions.customizeColor;
if (customizeColor && customizeColor.call) {
fontStyle = extend({}, axis._textFontStyles, { fill: customizeColor.call(tick, tick) });
}
return fontStyle;
}
return function (value) {
var tick = {
value: value,
initCoords: function initCoords() {
this.coords = axis._getTranslatedValue(value, tickOffset);
this.labelCoords = axis._getTranslatedValue(value);
},
drawMark: function drawMark() {
if (!tickOptions.visible || skippedCategory === value) {
return;
}
// DEPRECATED IN 15_2
if (this.withoutPath) {
return;
}
if (axis.areCoordsOutsideAxis(this.coords)) {
return;
}
this.mark = axis._createPathElement([], tickStyle).append(lineGroup);
this.updateTickPosition();
},
updateTickPosition: function updateTickPosition() {
if (!this.mark) {
return;
}
this.mark.attr({
points: axis._getTickMarkPoints(tick, tickOptions.length)
});
this.coords.angle && axis._rotateTick(this.mark, this.coords);
},
drawLabel: function drawLabel(range) {
if (!labelOptions.visible || skipLabels) {
return;
}
// DEPRECATED IN 15_2
if (this.withoutLabel) {
return;
}
if (axis.areCoordsOutsideAxis(this.labelCoords)) {
return;
}
var text = axis.formatLabel(value, labelOptions, range),
labelHint;
if (isDefined(text) && text !== "" && !emptyStrRegExp.test(text)) {
this.label = renderer.text(text).css(getLabelFontStyle(this)).attr(labelStyle).data("chart-data-argument", this.value).append(elementsGroup);
this.updateLabelPosition();
labelHint = axis.formatHint(this.value, labelOptions, range);
if (isDefined(labelHint) && labelHint !== "") {
this.label.setTitle(labelHint);
}
}
},
updateLabelPosition: function updateLabelPosition() {
if (!this.label) {
return;
}
this.label.attr({
x: this.labelCoords.x,
y: this.labelCoords.y
});
},
drawGrid: function drawGrid(drawLine) {
if (gridOptions.visible && skippedCategory !== this.value) {
this.grid = drawLine(this, gridStyle);
this.grid && this.grid.append(axis._axisGridGroup);
}
},
updateGridPosition: function updateGridPosition(updateLine) {
this.grid && this.grid.attr(axis._getGridPoints(tick.coords));
}
};
return tick;
};
}
exports.tick = createTick;