2016-01-21 2 views
0

Я использую d3pie с d3.js. Когда я нависаю над пирогом, я вижу всплывающую подсказку с данными, но остальные данные обрезаются/скрываются, потому что данные слишком длинны.Создание прокручиваемой всплывающей подсказки в круговой диаграмме d3

Я хочу показать прокручиваемый список шлюзов при нажатии на пирог, как всплывающая подсказка.

вот мой код.

var pie = new d3pie("gateway-datasources-status-chart", { 
     size: { 
      canvasHeight: 300, 
      canvasWidth: 300 
     }, 
     data: { 
      content: [ 
       { label: "Online", value: online_gateway, lists: online_gateway_datasources }, 
       { label: "Offline", value: offline_gateway, lists: offline_gateway_datasources } 
      ] 
     }, 
     "tooltips": { 
      "enabled": true, 
      "type": "placeholder", 
      "string": "{label}: {lists}", 
      "styles": { 
       "backgroundColor": "#040404", 
       "borderRadius": 5 
      } 
     }, 
     callbacks: { 
     } 
    }); 
+0

У вас есть рабочая скрипка? –

+0

https://jsfiddle.net/pgnv61f4/#&togetherjs=4ftcwNKMNA –

+0

Пожалуйста, добавьте образец, в котором вы можете показать фактическую проблему. Там, где данные большие. –

ответ

1

Я бы рекомендовал создать div, поскольку svg не позволяет прокручивать. Вот пример: http://bl.ocks.org/d3noob/a22c42db65eb00d4e369

В основном добавить DIV:

var div = d3.select("body").append("div") 
    .attr("class", "tooltip")    
    .style("opacity", 0); 

Тогда при наведении курсора мыши, переместите DIV туда, где мышь и изменить текст в Div в:

.on("mouseover", function(d) {  
      div.transition()   
       .duration(200)  //so it fades in 
       .style("opacity", .9);  
      div .html(formatTime(d.date) + "<br/>" + d.close) 
       .style("left", (d3.event.pageX) + "px")  
       .style("top", (d3.event.pageY - 28) + "px");  
      })     
     .on("mouseout", function(d) {  
      div.transition()   
       .duration(500)  //so it fades out 
       .style("opacity", 0); 
     });  

Для этого по клику:

pieChart.on("click",function(d){ 
//show tooltip 
}) 
+0

, если вы хотите несколько div, чтобы divs оставались в одном месте, просто измените непрозрачность ассоциированного div на 1 на mouseover (часть круговой диаграммы) и при изменении прозрачности мыши до 0 – thatOneGuy

+0

будет ли она работать также и в событии Click? http://d3pie.org/#docs Я хочу реализовать его в 'callbacks.onClickSegment' –

+0

yes. Просто нажмите событие клика, когда вы нажмете круговую диаграмму. Добавить в ответ – thatOneGuy

Смежные вопросы