¿Cómo agregar un panel creado dinámicamente al panel Scripts de una tabla de datos?Hola a todos,
Tengo un script JSL que permite al usuario elegir uno o más archivos de datos y luego concatenar estos archivos en una tabla de datos. Luego, el script crea un panel para la tabla de datos.
Para generar el JSL para el panel, primero creé manualmente un panel (Archivo -> Nuevo -> Nuevo panel), y le agregué gráficos generados manualmente en el Generador de paneles; Luego copié el código del panel de Dashboard Builder (flecha roja -> Guardar script -> En ventana de script) y lo pegué al final de mi script JSL.
Todo esto funciona muy bien; sin embargo, mi objetivo es guardar el panel generado en el panel Scripts de la tabla de datos, de la misma manera que al elegir la flecha roja -> Guardar script -> En tabla de datos desde el Generador de paneles se guardará un panel. a la tabla de datos. También preferiría que el panel no aparezca automáticamente (el usuario debe hacer clic en él en el panel Scripts cuando quiera verlo).
Intenté buscar en el PDF de referencia de JSL y en las discusiones de la comunidad, pero no encontré lo que necesito. ¿Alguien puede indicarme la dirección correcta? Se adjunta código sanitizado omitiendo la generación de la tabla de datos.
¡Gracias!
andy
Automatización y secuencias de comandosMac OSventanasRe: ¿Cómo agregar un panel creado dinámicamente al panel Scripts de una tabla de datos?No uso el generador de aplicaciones y crearía el script de una manera diferente. ¿Pero tal vez @DonMcCormack tenga algunas ideas? Esto podría darle algunas ideas de lo que podría hacer . ¿Por qué no está utilizando ya App Builder? - (2023-US-30MP-1401) (sobre el mismo tema Scripters Club 2024: Sesión 1 - Generador de aplicaciones )
Re: ¿Cómo agregar un panel creado dinámicamente al panel Scripts de una tabla de datos?Puedes probar algo como esto:
dashboardExpr = Expr(
/* Code for JMP App goes here */
);
Eval(Substitute(
Expr(Current Data Table() << New Script("Dashboard",dbExpr)),
Expr(dbExpr),Name Expr(dashboardExpr)
));
Cambie la Tabla de datos actual() a la tabla de referencia a la que está agregando el Panel. Es posible que haya otras variables que deban inicializarse antes de que se ejecute el Panel. El título de la variable en la línea 17 estaba causando problemas al igual que el blob inexistente alrededor de la línea 24 (aunque puedo entender por qué no se incluyó si decidió omitirlo).
Re: ¿Cómo agregar un panel creado dinámicamente al panel Scripts de una tabla de datos?Gracias Don! Esto funciona perfectamente (y tienes razón sobre el 'título' y el blob).
Re: ¿Cómo agregar un panel creado dinámicamente al panel Scripts de una tabla de datos?@DonMcCormack
Hola Don,
Utilizo tu solución ahora.
Sin embargo, ¿sabes por qué no es posible resolver con Eval y Expr?
Creí que recién estaba empezando a comprender Eval y Eval Expr, pero no funcionó con "New Script".
Re: ¿Cómo agregar un panel creado dinámicamente al panel Scripts de una tabla de datos?¿Cómo lo usaste?
Editar:
Con suerte, esto brindará algunas ideas (supongo que funcionaría de manera similar con la expresión del panel).
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
dt << Delete Scripts(dt << Get Table Script Names);
gb_expr = Expr(Graph Builder(
Variables(X(:weight), Y(:height), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11)))
));
Eval(Substitute(
Expr(dt << New Script("GB1", myexpr)),
Expr(myexpr), Name Expr(gb_expr)
));
Eval(EvalExpr(
dt << New Script("GB2", Expr(Name Expr(gb_expr)));
));