Hacker News new | ask | show | jobs
by azundo 4898 days ago
It's useful to know how to manage this situation when you have zooming enabled as well, as sometimes you want to zoom and pan in the x direction within limits.

In this case you might go outside of your bounds with a zoom operation, so translate won't be reliable when zooming too far out (as your domain will be larger than your data bounds) so you'll have to limit the domain instead.

    // assuming xlowerlimit and xupperlimit variables.
    var currentDomain = svg.x.domain();
    var xinterval = currentDomain[1] - currentDomain[0];
    
    if (currentDomain[0] < xlowerlimit) {
      // if moving outside of lower bound, set min of domain to lower, keeping domain interval the same
      svg.x.domain([xlowerlimit, xlowerlimit + xinterval]);
    } else if (currentDomain[1] > xupperlimit) {
      // if moving outside of upper bound, set max of domain to upper, keeping domain interval the same
      svg.x.domain([xupperlimit - xinterval, xupperlimit]);
    }