All Downloads are FREE. Search and download functionalities are using the official Maven repository.

package.src.traces.funnel.hover.js Maven / Gradle / Ivy

The newest version!
'use strict';

var opacity = require('../../components/color').opacity;
var hoverOnBars = require('../bar/hover').hoverOnBars;
var formatPercent = require('../../lib').formatPercent;

module.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) {
    var point = hoverOnBars(pointData, xval, yval, hovermode, opts);
    if(!point) return;

    var cd = point.cd;
    var trace = cd[0].trace;
    var isHorizontal = (trace.orientation === 'h');

    // the closest data point
    var index = point.index;
    var di = cd[index];

    var sizeLetter = isHorizontal ? 'x' : 'y';
    point[sizeLetter + 'LabelVal'] = di.s;

    point.percentInitial = di.begR;
    point.percentInitialLabel = formatPercent(di.begR, 1);

    point.percentPrevious = di.difR;
    point.percentPreviousLabel = formatPercent(di.difR, 1);

    point.percentTotal = di.sumR;
    point.percentTotalLabel = formatPercent(di.sumR, 1);

    var hoverinfo = di.hi || trace.hoverinfo;
    var text = [];
    if(hoverinfo && hoverinfo !== 'none' && hoverinfo !== 'skip') {
        var isAll = (hoverinfo === 'all');
        var parts = hoverinfo.split('+');

        var hasFlag = function(flag) { return isAll || parts.indexOf(flag) !== -1; };

        if(hasFlag('percent initial')) {
            text.push(point.percentInitialLabel + ' of initial');
        }
        if(hasFlag('percent previous')) {
            text.push(point.percentPreviousLabel + ' of previous');
        }
        if(hasFlag('percent total')) {
            text.push(point.percentTotalLabel + ' of total');
        }
    }
    point.extraText = text.join('
'); point.color = getTraceColor(trace, di); return [point]; }; function getTraceColor(trace, di) { var cont = trace.marker; var mc = di.mc || cont.color; var mlc = di.mlc || cont.line.color; var mlw = di.mlw || cont.line.width; if(opacity(mc)) return mc; else if(opacity(mlc) && mlw) return mlc; }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy