2014-09-09 3 views
0

Мне хотелось бы знать, как я могу перебирать элементы легенды ямочки и основываться на описании, манипулировать непрозрачностью отображаемого прямоугольника.dimple.js/d3.js: перебрать элементы легенды

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

var svg1 = dimple.newSvg("#chart1", 600, 500); 
    var data1 = [[{x: '01/31/1998', y: 100.0}, {x: '02/28/1998', y: 110.0}, {x: '03/31/1998', y: 120.0}, {x: '04/30/1998', y: 130.0}], 
       [{x: '01/31/1998', y: 120.0}, {x: '02/28/1998', y: 130.0}, {x: '03/31/1998', y: 140.0}, {x: '04/30/1998', y: 150.0}]] 

    var chart1 = new dimple.chart(svg1); 
    chart1.setBounds(70, 30, 400, 300) 
    var xAxis = chart1.addTimeAxis("x", "x", "%m/%d/%Y", "%b %y"); 
    xAxis.title="Date" 
    var yAxis = chart1.addMeasureAxis("y", "y"); 
    yAxis.title = "Price" 
    var seriesDict = {}; 

    s1 = chart1.addSeries("Series1", dimple.plot.line, [xAxis, yAxis]); 
    s1.data = data1[0] 
    seriesDict["Series1"] = { data: data1[0], series: s1, visible: true }; 

    s2 = chart1.addSeries("Series2", dimple.plot.line, [xAxis, yAxis]); 
    s2.data = data1[1] 
    seriesDict["Series2"] = { data: data1[1], series: s2, visible: false }; 

    myLegend1 = chart1.addLegend(510, 100,60, 200, "Right"); 

    chart1.draw(); 
    chart1.legends = []; 
    hideSeries(); 

    function hideSeries() 
    { 
     for(var keys in seriesDict) 
     { 
      sMeta = seriesDict[key]; 
      if (!sMeta.visible) 
      { 
       sMeta.series.data = []; 
       setOpacityOfRelatedLegendItem(); <!---HOW TO ACCOMPLISH THIS--> 
      } 
     } 
    } 

ответ

1

Все пункты легенды классифицируются с названием серии, так что вы могли бы получить его таким образом:

var class = dimple._createClass([key]) 
myLegend1.shapes 
    .selectAll("rect." + class) 
     .style("opacity", 0.2);