Skip to content

Fixed-width hover labels with hoverlabel.width #3800

Closed
@seaders

Description

@seaders

So I've set up my graph to have a fixed width for hover labels, and it was a real PITA to get to this now,

Screen Shot 2019-04-23 at 03 03 40

Screen Shot 2019-04-23 at 03 03 47

I'm using the angular library, but basically, I set a manual tbbwidth in createHoverText, changing

    var tbb = tx.node().getBoundingClientRect();
    var htx = d.xa._offset + (d.x0 + d.x1) / 2;
    var hty = d.ya._offset + (d.y0 + d.y1) / 2;
    var dx = Math.abs(d.x1 - d.x0);
    var dy = Math.abs(d.y1 - d.y0);
    var txTotalWidth = tbb.width + HOVERARROWSIZE + HOVERTEXTPAD + tx2width;
    var anchorStartOK, anchorEndOK;

    d.ty0 = outerTop - tbb.top;
    d.bx = tbb.width + 2 * HOVERTEXTPAD;
    d.by = Math.max(tbb.height + 2 * HOVERTEXTPAD, tx2height);
    d.anchor = 'start';
    d.txwidth = tbb.width;
    d.tx2width = tx2width;
    d.offset = 0;

To,

    var tbb = tx.node().getBoundingClientRect();
    var htx = d.xa._offset + (d.x0 + d.x1) / 2;
    var hty = d.ya._offset + (d.y0 + d.y1) / 2;
    var dx = Math.abs(d.x1 - d.x0);
    var dy = Math.abs(d.y1 - d.y0);
    var tbbwidth = 385;
    var txTotalWidth = tbbwidth + HOVERARROWSIZE + HOVERTEXTPAD + tx2width;
    var anchorStartOK, anchorEndOK;

    d.tbbwidth = tbb.width;
    d.ty0 = outerTop - tbb.top;
    d.bx = tbbwidth + 2 * HOVERTEXTPAD;
    d.by = Math.max(tbb.height + 2 * HOVERTEXTPAD, tx2height);
    d.anchor = 'start';
    d.txwidth = tbbwidth;
    d.tx2width = tx2width;
    d.offset = 0;

And in alignHoverText (my local version is 1.45.3),

    tx.call(svgTextUtils.positionText,
        txx + offsetX, offsetY + d.ty0 - d.by / 2 + HOVERTEXTPAD);

To,

    tx.call(svgTextUtils.positionText,
        (txx < 0 ? -(d.bx - d.tbbwidth) : txx) + offsetX, 
        offsetY + d.ty0 - d.by / 2 + HOVERTEXTPAD);

I'd love to have this feature myself for graphs like this, and more - and would really appreciate some advice as to what would be the best method to submit a PR.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions