HighCharts:使用'split:true'时值为零时隐藏工具提示

时间:2017-01-09 22:42:08

标签: javascript highcharts

我有一个HighChart如下:

class UserDAOTest extends PlaySpec with OneAppPerSuite with ScalaFutures {

  implicit override lazy val app = new GuiceApplicationBuilder().
    configure(
      "slick.dbs.mydb.driver" -> "slick.driver.MySQLDriver$",
      "slick.dbs.mydb.db.driver" -> "com.mysql.jdbc.Driver",
      "slick.dbs.mydb.db.url" -> "jdbc:mysql://localhost:3306/control",
      "slick.dbs.mydb.db.user" -> "root",
      "slick.dbs.mydb.db.password" -> "xxxxx").build

  def userDAO(implicit app: Application): UserDAO = Application.instanceCache[UserDAO].apply(app)

  "UserDAO" should {
    "do whatever" in {
      whenReady(userDAO.read(1)) { res =>
        println(res)
      }
    }
  }

}

我使用过config:tooltip:{split:true}。

如果值为零,我想隐藏工具提示。

示例名称='a'的系列将隐藏第二个工具提示,但名称='b'仍会继续显示。

或者名称='b'的系列会隐藏第一个工具提示,但名称='a'仍会继续显示。

非常感谢!

2 个答案:

答案 0 :(得分:2)

您可以包装Tooltip.prototype.renderSplit(points, labels)方法,因此它不会为值等于0的点创建工具提示。

包装器可能如下所示(它只隐藏第一个值为0的点):

Highcharts.wrap(Highcharts.Tooltip.prototype, 'renderSplit', function (p, labels, points) {
var i = 0, len = points.length, point, label, modified = false;
for (; i < len; i++) {
  if (points[i].y === 0) {
    point = points.splice(i, 1)[0];
    label = labels.splice(i + 1, 1)[0];
    modified = true;
    break;
  }
}

p.call(this, labels, points);

if (modified) {
  points.splice(i, 0, point);
  labels.splice(i + 1, 0, label);
}
});

示例:http://jsfiddle.net/vjusg30a/

答案 1 :(得分:0)

要隐藏图表系列中所有 0 值的工具提示,您可以使用以下代码

Highcharts.wrap(Highcharts.Tooltip.prototype, 'renderSplit', function (p, labels, points) {
var modified = false;
if  (modified== false){
var i = points.length;
while (i--) {

    if (points[i].y  == 0) {
        points.splice(i, 1);
        labels.splice(i+1, 1);
    }
  }
}    
modified =true;
p.call(this, labels, points);

});

我还创建了 JSfiddle Demo

希望它能帮助其他希望从系列中删除所有零以隐藏工具提示的人。