Ist es möglich, dass der Rowstate-Handler nur ausgelöst wird, wenn die Maus gedrückt wird oder nachdem ein Auswahlereignis abgeschlossen ist?
Das Echtzeitereignis verursacht eine Verzögerung beim Ziehen der Auswahl aus meinem Diagramm und macht die Benutzererfahrung unangenehm.
Ich bin so weit gegangen, ein Auswahlereignis in der Mausefallen-Sache komplett neu zu schreiben, aber ich habe Probleme, es auf Histogramme anzuwenden, und ich mag auch nicht einmal, wie es funktioniert.
//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>