UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

119 lines (99 loc) 4.19 kB
"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;