マウスアップ時または選択イベントが完了した後にのみ、rowstate ハンドラーを起動することは可能ですか?
リアルタイム イベントにより、グラフからのドラッグ選択が遅れ、ユーザー エクスペリエンスが不快になります。
ネズミ捕りの選択イベントを完全に書き直すところまで行きましたが、それをヒストグラムに適用するのに問題があり、そのパフォーマンスも好きではありません。
//MOUSE STUFF
get_box_dims = Function({firstX,lastX,firstY,lastY},
show("get_box_dims");
//show(firstX,lastX,firstY,lastY,modifier_key);
If (lastX>firstX,
max_x = lastX; min_x =firstX,
max_x = firstX;min_x =lastX,
);
If (lastY>firstY,
max_y = lastY; min_y =firstY,
max_y = firstY;min_y =lastY,
);
show(min_x,min_y,max_x,max_y);
evallist({min_x,max_x,min_y,max_y});
);
do_normal_select = Function({select_range},
show("normal_select");
summary_jmp_table << Select Where(
AsColumn(:SOME_X_COORD) >= select_range[1]
& AsColumn(:SOME_X_COORD) <= select_range[2]
& AsColumn(:SOME_Y_COORD) >= select_range[3]
& AsColumn(:SOME_Y_COORD) <= select_range[4]
);
);
do_shift_select = Function({select_range},
show("shift_select");
new_rows_to_add = as list(summary_jmp_table << Get Rows Where(
AsColumn(:SOME_X_COORD) >= select_range[1]
& AsColumn(:SOME_X_COORD) <= select_range[2]
& AsColumn(:SOME_Y_COORD) >= select_range[3]
& AsColumn(:SOME_Y_COORD) <= select_range[4]
)
);
if (length(new_rows_to_add) > 0,
curr_rows = as list(summary_jmp_table << Get Selected Rows);
rows_to_select = curr_rows || new_rows_to_add;
summary_jmp_table << Select Rows( rows_to_select);
);
show(new_rows_to_add,length(new_rows_to_add));
);
do_ctrl_select = Function({select_range},
show("ctrl_select");
new_rows_to_subtract = associativearray(as list(summary_jmp_table << Get Rows Where(
AsColumn(:SOME_X_COORD) >= select_range[1]
& AsColumn(:SOME_X_COORD) <= select_range[2]
& AsColumn(:SOME_Y_COORD) >= select_range[3]
& AsColumn(:SOME_Y_COORD) <= select_range[4]
)
));
if (length(new_rows_to_subtract) > 0,
curr_rows = associativearray(as list(summary_jmp_table << Get Selected Rows));
show("current_rows_selected",length(curr_rows));
show("number_rows_to_subtract",length(new_rows_to_subtract));
intersection=curr_rows;intersection<<INTERSECT></INTERSECT>