:コンテキストについて
if (idx < series.length && (series[idx].show || series[idx].showLabel)){
、コードのこのビットは、凡例テーブルを作成する機能の一部です。シリーズが表示されるように設定されている場合(デフォルトはtrue
)、またはシリーズラベルが表示される場合は、行が作成されます。つまり、一連の凡例アイテムが作成されないようにするには、シリーズ全体を非表示にするとともに、showLabel
をfalse
に設定するのが理想的ではありません。
代わりに||
を&&
に設定してください。これは私のケースでは機能しました。最初に変更されていないバージョンで変更を行ってください。
編集:行うには
まず最初は、私は私のオリジナルの答えで提案されている変更を行うことです。
次に、showLabel
がfalse
の場合、凡例の中のtr
要素が作成されないようにする必要があります。これに
tr = $(document.createElement('tr'));
tr.addClass('jqplot-table-legend');
if (reverse){
tr.prependTo(this._elem);
}
else{
tr.appendTo(this._elem);
}
変更、それを(私たちがここでやっているすべて同じif文でそれをラップしている私たちは前に使用):
上記のif文の直前に、あなたはこのコードが表示されます
if (idx < series.length && (series[idx].show && series[idx].showLabel)){
tr = $(document.createElement('tr'));
tr.addClass('jqplot-table-legend');
if (reverse){
tr.prependTo(this._elem);
}
else{
tr.appendTo(this._elem);
}
}
下にスクロールして、(ライン212程度)、いくつかのより多くのあなたは、次のコードが表示されます:これはシリーズの一つは、伝説にクリックされたときのイベントハンドラをバインドしている
if (this.showLabels) {
console.log(this._elem.find('tr').length - 1);
td2.bind('click', {series:s, speed:speed, plot: plot, replot:this.seriesToggleReplot }, handleToggle);
td2.addClass('jqplot-seriesToggle');
}
を。私たちが行う必要があることはclick
メソッドに渡されたデータをカプセル化するオブジェクトリテラルに追加のプロパティを追加します:
td2.bind('click', {series:s, speed:speed, plot: plot,
replot:this.seriesToggleReplot,
trIndex: this._elem.find('tr').length - 1 }, handleToggle);
trIndex
は、HTMLテーブルの行の実際のインデックスを表します。これは、伝説が正しい要素を打ち負かすことを保証するものです。
doLegendToggle
宣言の中に、あなたはこのようなコードが表示されます。
if (s.canvas._elem.is(':hidden') || !s.show) {
// Not sure if there is a better way to check for showSwatches and showLabels === true.
// Test for "undefined" since default values for both showSwatches and showLables is true.
if (typeof plot.options.legend.showSwatches === 'undefined' || plot.options.legend.showSwatches === true) {
plot.legend._elem.find('td').eq(sidx * 2).addClass('jqplot-series-hidden');
}
if (typeof plot.options.legend.showLabels === 'undefined' || plot.options.legend.showLabels === true) {
plot.legend._elem.find('td').eq((sidx * 2) + 1).addClass('jqplot-series-hidden');
}
}
else {
if (typeof plot.options.legend.showSwatches === 'undefined' || plot.options.legend.showSwatches === true) {
plot.legend._elem.find('td').eq(sidx * 2).removeClass('jqplot-series-hidden');
}
if (typeof plot.options.legend.showLabels === 'undefined' || plot.options.legend.showLabels === true) {
plot.legend._elem.find('td').eq((sidx * 2) + 1).removeClass('jqplot-series-hidden');
}
}
は、コードではなくtrIndex
変数を使用しているように、それらを変更、sidx
変数にこれら4つの参照を参照してください。これを行うには、d.trIndex
の4つのsidx
参照を置き換えます。
私は質問を投稿した直後にまったく同じことを試みました。しかし、問題は、これはseriesToggleオプションではうまくいきません。つまり、凡例が表示されている凡例のラベルをクリックすると、他のラベルが表示されます。だから私は、コードの一部もこれに合わせて変更する必要があると思います。 – Siva
@シヴァー良い点。私の編集を参照してください。それはかなり複雑ですが、それは私のために働いた。 –
私によく見えます!おそらく、[jqplot repo](https://bitbucket.org/cleonello/jqplot)にプルリクエストを送信して、他の人も同様に見えるようにすることができます。 – Siva