all files / range-navigator/user-interaction/ tooltip.js

94.67% Statements 71/75
90% Branches 27/30
92.31% Functions 12/13
94.67% Lines 71/75
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137   18× 18×   19× 19× 19× 19× 19×     19×   38× 38× 38×           30×   38×   19× 19× 19× 19× 19×   19×   38×     32× 32× 32× 32× 32× 32×     38× 38× 38×       38× 38×   38× 34×                                           106× 106× 106× 106× 106× 106× 106× 106× 68×             38×       38×   106×   38× 38× 38× 28× 28×               512×          
define(["require", "exports", "@syncfusion/ej2-svg-base", "../../common/utils/helper", "../../common/utils/helper", "../../index", "../../index", "@syncfusion/ej2-base"], function (require, exports, ej2_svg_base_1, helper_1, helper_2, index_1, index_2, ej2_base_1) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    var RangeTooltip = (function () {
        function RangeTooltip(range) {
            this.control = range;
            this.elementId = range.element.id;
        }
        RangeTooltip.prototype.renderLeftTooltip = function (rangeSlider) {
            this.fadeOutTooltip();
            var content = this.getTooltipContent(rangeSlider.currentStart);
            var contentWidth = this.getContentSize(content);
            var rect = this.control.enableRtl ? rangeSlider.rightRect : rangeSlider.leftRect;
            Iif (contentWidth > rect.width) {
                rect = rangeSlider.midRect;
            }
            this.leftTooltip = this.renderTooltip(rect, this.createElement('_leftTooltip'), rangeSlider.startX, content);
        };
        RangeTooltip.prototype.getContentSize = function (value) {
            var width;
            var font = this.control.tooltip.textStyle;
            if (this.control.tooltip.template) {
                width = index_2.createTemplate(ej2_base_1.createElement('div', {
                    id: 'measureElement',
                    styles: 'position: absolute;'
                }), 0, this.control.tooltip.template, this.control).getBoundingClientRect().width;
            }
            else {
                width = index_2.measureText(value[0], font).width + 20;
            }
            return width;
        };
        RangeTooltip.prototype.renderRightTooltip = function (rangeSlider) {
            this.fadeOutTooltip();
            var content = this.getTooltipContent(rangeSlider.currentEnd);
            var contentWidth = this.getContentSize(content);
            var rect = this.control.enableRtl ? rangeSlider.leftRect : rangeSlider.rightRect;
            if (contentWidth > rect.width) {
                rect = rangeSlider.midRect;
                rect.x = !this.control.series.length ? rect.x : 0;
            }
            this.rightTooltip = this.renderTooltip(rect, this.createElement('_rightTooltip'), rangeSlider.endX, content);
        };
        RangeTooltip.prototype.createElement = function (id) {
            if (helper_1.getElement(this.elementId + id)) {
                return helper_1.getElement(this.elementId + id);
            }
            else {
                var element = document.createElement('div');
                element.id = this.elementId + id;
                element.className = 'ejSVGTooltip';
                element.setAttribute('style', 'pointer-events:none; position:absolute;z-index: 1');
                helper_1.getElement(this.elementId + '_Secondary_Element').appendChild(element);
                return element;
            }
        };
        RangeTooltip.prototype.renderTooltip = function (bounds, parent, pointX, content) {
            var control = this.control;
            var tooltip = control.tooltip;
            var argsData = {
                cancel: false, name: 'tooltipRender', text: content,
                textStyle: tooltip.textStyle
            };
            this.control.trigger('tooltipRender', argsData);
            var left = control.svgObject.getBoundingClientRect().left -
                control.element.getBoundingClientRect().left;
            if (!argsData.cancel) {
                return new ej2_svg_base_1.Tooltip({
                    location: { x: pointX, y: control.rangeSlider.sliderY },
                    content: argsData.text, marginX: 2,
                    enableShadow: false,
                    marginY: 2, arrowPadding: 8, rx: 0, ry: 0,
                    inverted: control.series.length > 0,
                    areaBounds: bounds, fill: tooltip.fill,
                    theme: this.control.theme,
                    clipBounds: { x: left },
                    border: tooltip.border, opacity: tooltip.opacity,
                    template: tooltip.template,
                    textStyle: argsData.textStyle,
                    data: {
                        'start': this.getTooltipContent(this.control.startValue)[0],
                        'end': this.getTooltipContent(this.control.endValue)[0],
                        'value': content[0]
                    }
                }, parent);
            }
            else {
                return null;
            }
        };
        RangeTooltip.prototype.getTooltipContent = function (value) {
            var control = this.control;
            var tooltip = control.tooltip;
            var xAxis = control.chartSeries.xAxis;
            var text;
            var format = tooltip.format || xAxis.labelFormat;
            var isCustom = format.match('{value}') !== null;
            var valueType = xAxis.valueType;
            if (valueType === 'DateTime') {
                text = (control.intl.getDateFormat({
                    format: format || 'MM/dd/yyyy',
                    type: index_1.firstToLowerCase(control.skeletonType),
                    skeleton: control.dateTimeModule.getSkeleton(xAxis)
                }))(new Date(value));
            }
            else {
                xAxis.format = control.intl.getNumberFormat({
                    format: isCustom ? '' : format,
                    useGrouping: control.useGroupingSeparator
                });
                text = control.doubleModule.formatValue(xAxis, isCustom, format, valueType === 'Logarithmic' ? Math.pow(xAxis.logBase, value) : value);
            }
            return [text];
        };
        RangeTooltip.prototype.fadeOutTooltip = function () {
            var _this = this;
            var tooltip = this.control.tooltip;
            if (tooltip.displayMode === 'OnDemand') {
                helper_2.stopTimer(this.toolTipInterval);
                Iif (this.rightTooltip) {
                    this.toolTipInterval = setTimeout(function () {
                        _this.leftTooltip.fadeOut();
                        _this.rightTooltip.fadeOut();
                    }, 1000);
                }
            }
        };
        RangeTooltip.prototype.getModuleName = function () {
            return 'RangeTooltip';
        };
        RangeTooltip.prototype.destroy = function (chart) {
        };
        return RangeTooltip;
    }());
    exports.RangeTooltip = RangeTooltip;
});