Names Default To Here(1);
delete_variable_for_role = function({report, role}, {Default Local},
all_variables = report << get variables;
For Each({variable}, all_variables,
colname = Arg(variable, 1) << get name;
Try(
Eval(EvalExpr(
report << Remove Variable({Expr(NameExpr(AsColumn(colname))), Role(Expr(role)), Position(1)})
));
);
);
);
add_variables_for_role = function({report, columns, role}, {Default Local},
For Each({colname}, columns,
Eval(EvalExpr(
report << Add Variable({Expr(NameExpr(AsColumn(colname))), Role(Expr(role)), Position(1)});
));
);
);
update_cols = Expr(
cur_cols = fcs << get selected;
cur_role = cb << get selected;
report << inval;
delete_variable_for_role(report, cur_role);
add_variables_for_role(report, cur_cols, cur_role);
report << update window;
wait(0);
);
prepend_column_filter = Expr(
lb = (Report(report) << top parent) << child;
lb << Set Horizontal(1);
ob_colfilter = Outline Box("Column Filter",
V List Box(
H List Box(
Panel Box("Role to Filter",
Lineup Box(N Col(1),
Text Box("Select Role to filter"),
cb = Combo Box({"Y", "X"})
)
),
Panel Box("Actions",
Lineup Box(N Col(1),
Button Box("Refresh",
update_cols
),
)
)
),
Panel Box("Columns",
fcs = Filter Col Selector(Datatable(dt))
)
)
);
cur_height = report << get height;
fcs << set height(cur_height - 200);
fcs << set width(200);
Eval(EvalExpr(
ob_colfilter << Set Menu Script(
{"Remove Column Filter", Expr(ob_colfilter) << Delete Box; Expr(lb) << Set Horizontal(0)}
);
));
lb << Prepend(ob_colfilter);
);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
dt << Ungroup Columns;
report = dt << Graph Builder(
Size(528, 653),
Show Control Panel(0),
Fit to Window("On"),
Variables(X(:SITE), Y(:NPN1), Y(:PNP1, Position(1))),
Elements(Boxplot(X, Y(1), Y(2), Legend(4)))
);
wait(2);
prepend_column_filter;