Estoy experimentando con la creación de un cuadro modelo de diálogo que sea más fácil de usar para mis clientes. En lugar de usar cuadros de radio o casillas de verificación, estoy usando cuadros de lista de col para hacer que la interfaz de usuario se parezca más al cuadro de diálogo del modelo de ajuste. Se supone que esta secuencia de comandos personaliza los gráficos y la salida para ahorrar tiempo al usuario al producir la salida de una secuencia de comandos JSL de tabla de datos para los PQA de un producto determinado.
Se adjunta un archivo JMP con un conjunto de datos de juguete con nombres de columna básicos y scripts JSL adjuntos a los que hago referencia a lo largo de este artículo.
Tengo una variable en la que el usuario ingresa una columna llamada set_resultcol. Este valor de set_resultcol se puede usar con cualquier encabezado de columna del conjunto de datos (es decir, un conjunto de datos puede tener "resultado" o "Resultado" o "Resultado (N)" o "Valor" como el encabezado de la variable numérica continua en la que se modelará el eje y como variable dependiente.
Sin embargo, tengo algunos problemas con la expresión del valor set_resultcol que no se expresa en el cambio de nombre del script del eje y en la opción del cuadro de lista col que he estado usando para hacer que la interfaz de usuario sea más fácil de usar, aunque tengo intenté obtener los valores de la lista resultante del cuadro de lista col, por ejemplo, {“Resultado”}[1]. Todavía soy nuevo en el concepto de cuadros de lista de columnas en la ventana modal, por lo que espero poder tener algunos ojos más experimentados en mi código JSL para ayudarme a determinar qué se puede hacer.
Cuando usé cuadros de radio, el valor resultante para set_resultcol fue una cadena, a la que se podría hacer referencia en el JSL a continuación para cambiar el nombre del eje y a PQA (atributo de calidad):

Names Default To Here( 1 );
dt = Current Data Table();
//part 1. ask user for column names in a new window nw1
//possible Group column name (should be character)
character_col_names = dt << Get Column names(character, String);
//possible result column name (should be numeric)
numeric_col_names = dt << Get Column names(Numeric, String);
nw1 = New Window("Set group by variable an",
<<MODAL></MODAL>Y el gráfico resultante tendría la etiqueta del eje y "Resultado" (por ejemplo) renombrada como "A" (el PQA se llama "A" por simplicidad).

Tengo el siguiente cuadro de diálogo modal que he creado con el cuadro de lista col para hacer que el cuadro de diálogo modal sea más fácil de usar y estético con una función de arrastrar y soltar en lugar de mostrar todas las columnas a la vez. Debajo de esta ventana, tengo el código JSL correspondiente con el que tengo problemas con respecto a estos cuadros de lista de col.

Names Default To Here( 1 );
dt = Current Data Table();
nw1 = New Window("Set variables for stability model",
<<MODAL></MODAL>Sin embargo, el gráfico resultante es el siguiente, con el nombre del eje y, en esta tabla de datos "Resultado" en el eje y, cuando debería decir "A" para el PQA "A":

Sé que el cuadro de lista col produce listas de variables, porque tengo opciones en el script JSL que me dicen:
//is this set_resultcol a list? if so, show the contents.
Show(is list(set_resultcol)); // which gives 1 or “true” as shown in the log
Show(set_resultcol[1]); //which gives “Result” as shown in the log

¿Qué tiene de malo este script JSL que no permite que se haga referencia a esto en el conjunto de datos? ¿Qué puedo hacer para arreglar esto?
La única documentación que puedo encontrar relacionada con este problema está en las páginas pdf 524, 527-529 de la "Guía de secuencias de comandos JMP 15" para los cuadros de lista de columnas y la sección sobre listas en ese manual. He probado estos ejemplos, pero no me dicen nada que no sepa.
No usaría Dispatch para modificar informes si puedo evitarlo. Preferiría obtener las referencias y luego modificar el informe en función de ellas. El siguiente guión puede darle algunas ideas:
Names Default To Here(1);
dt = Open("$DOWNLOADS/Col List Box Y-axis labeling issue 7_11_2022.jmp");
nw1 = New Window("Set variables for stability model",
<<MODAL>
["LSL" => 0.3, "USL" => 0.9],
"B" =>
["LSL" => 0.5, "USL" => 2],
"C" =>
["LSL" => 4, "USL" => 6]
];
//Response Result outline box references
response_ob_refs = fm << XPath("//OutlineBox[contains(text(), 'Response Result PQA')]");
For Each({ror_list}, response_ob_refs,
ror = ror_list[1];
cur_group = Word(2, ror << get title, "=");
cur_lsl = aa_settings[cur_group]["LSL"];
cur_usl = aa_settings[cur_group]["USL"];
rp_ref = (ror << XPath("//OutlineBox[contains(text(), 'Regression Plot')]"))[1];
// Y-axis
y_axis = rp_ref[Axis Box(1)];
Eval(EvalExpr(
y_axis << Add Ref Line(Expr(cur_lsl), "Solid", Dark Red, Expr(EvalInsert("LSL (^cur_lsl^)")), 1);
y_axis << Add Ref Line(Expr(cur_usl), "Solid", Dark Red, Expr(EvalInsert("USL (^cur_usl^)")), 1);
));
y_axis << RemoveAxisLabel("Result");
y_axis << AddAxisLabel(cur_group);
y_axis << Min(cur_lsl);
y_axis << Max(cur_usl);
f_box = rp_ref[FrameBox(1)];
f_box << Frame Size(600, 400);
// Legend
f_box << Row Legend(
Eval(set_groupby),
Color(1),
Color Theme("JMP Default"),
Marker(0),
Marker Theme(""),
Continuous Scale(0),
Reverse Scale(0),
Excluded Rows(0)
);
);
</MODAL>

Si por alguna razón realmente desea usar Dispatch, le sugiero que consulte Inserte una expresión en otra usando Eval Insert, Eval Expr, Parse y Substitute