2012-04-05 5 views
2

Ich habe ein Szenario, in dem ich Serie basierend auf Checkbox-Auswahl wechseln möchte. Ich habe das Kontrollkästchen der Legende hinzugefügt labelFormatting in der Legende Option wie:Persisting flot legende label checkbox auf un-check

 var otherOptions = { 
          legend: { 
            container: legend, 
            labelFormatter: function (label, series) { 
             var cb = '<input type="checkbox" name="' + label + '" checked="checked" id="id' + label + '"> ' + label; 
             return cb; 
            } 
          }, 
         }; 

Und ich habe das Click-Ereignis für die Legende hinzugefügt, so dass ich die Serie basierend auf markierten Elemente manipulieren kann. Es funktioniert alles gut, außer wenn ich eine Beschriftung in der Legende deaktiviere, entfernt sie diese Reihenlinie auch aus der Legende. . Also für ex, unten ist die vor und nach dem Bild:

Vor

Before

Nach

After

Beachten Sie, dass in Nachbild "USA" Checkbox wird vermisst. Gibt es eine Möglichkeit, das Kontrollkästchen "USA" in der Legende immer noch zu aktivieren?

ich auf Vorschlag sah hier: flot graph, use legend to turn on/off series

Aber das einzige Problem ist, dass ich nicht will Legende und Kontrollkästchen haben Legende getrennt. Die Frage zu dem gegebenen Link wurde vor mehr als einem Jahr beantwortet, also dachte ich, ich werde die Chance nutzen und die Frage erneut stellen, falls jemand einen Weg kennt, dies zu tun.

Bitte lassen Sie es mich wissen.

Danke!

Antwort

6

Anstatt die Serie alle zusammen zu entfernen, wenn das Kontrollkästchen deaktiviert ist, fügen Sie sie mit leeren Daten hinzu.

Etwas wie folgt aus:

function plotByChoice(doAll) 
{ 
    $('#legend .legendCB').each(
    function(){ 
    if (this.checked) 
    {   
     data.push(datasets[someLabel]); 
    } 
    else 
    { 
     data.push({label: someLabel, data: []}) 
    }   
    } 
); 

// plot call etc... 
} 

Arbeits Geige ist here.

+0

Arbeitete wunderbar. Vielen Dank Mark! – test123