この回答では、変数dataTable
はDataTableオブジェクトの変数と等しいと想定しています。
初め、
HighChartsからのコールバックを設定しましょう。
...
plotOptions: {
spline: {
events: {
legendItemClick: function () {
// Filters Go Here
}
},
showInLegend: true
}
}
...
第二に、
これをさらに一歩進めて、シリーズが切り替えられたときに検出を追加します。
filters = []; // Set this inside your $(document).ready(function(e) {
...
plotOptions: {
spline: {
events: {
legendItemClick: function () {
tmp = [];
// Series was Visible, Now Hidden
if(this.visible){
// Add Action Here
}
// Series was Hidden, Now Visible
else{
// Add Action Here
}
}
},
showInLegend: true
}
}
...
第三に、
シリーズがいつ切り替えられたかがわかりました。彼らがどの状態から来たのか、そしてどの状態から進んでいるのかを検出することができます。DataTablesのフィルターを設定するつもりはありません。
filters = []; // Set this inside your $(document).ready(function(e) {
...
plotOptions: {
spline: {
events: {
legendItemClick: function () {
tmp = [];
// Series was Visible, Now Hidden
if(this.visible){
filter.push(this.name);
}
// Series was Hidden, Now Visible
else{
var series = this.name;
$.each(filter, function(k, v){
if(v != series){
tmp.push(v);
}
});
filter = tmp;
}
}
},
showInLegend: true
}
}
...
最後に、
これで、HighChartsLegendfilter
のの名前が配列に入力されました。series
この配列を取得して、フィルターに適用する必要があります。
filters = []; // Set this inside your $(document).ready(function(e) {
...
plotOptions: {
spline: {
events: {
legendItemClick: function () {
tmp = [];
// Series was Visible, Now Hidden
if(this.visible){
filter.push(this.name);
}
// Series was Hidden, Now Visible
else{
var series = this.name;
$.each(filter, function(k, v){
if(v != series){
tmp.push(v);
}
});
filter = tmp;
}
regex = (filter.length > 0 ? '^((?!('+filter.join('|')+')).)*$' : "");
dataTable.fnFilter(
regex,
0, // set this to your column index
true
);
}
},
showInLegend: true
}
}
...
終わり!
上で使用した正規表現は、の接着剤として(パイプ)文字を使用して配列のインプロードを使用^((?!('+filter.join('|')+')).)*$
してネガティブルックアヘッドを実行します。filter
|
OR