Este vídeo está siendo procesado actualmente. Inténtelo de nuevo en unos minutos.
(ver en Mis vídeos)
Las aplicaciones parametrizadas funcionan bien cuando el número y los tipos de columnas no cambian. El uso de App Builder con muchas de las plataformas de JMP requiere que haya una correspondencia uno a uno entre el número y los tipos de columnas utilizadas para crear inicialmente el informe y las columnas utilizadas para análisis futuros. En muchos casos, esto es demasiado restrictivo.
Para evitar este problema, es posible generalizar las aplicaciones para que se pueda utilizar cualquier número o tipo de columnas, cuando corresponda. El mayor inconveniente es que el cuadro de diálogo integrado para la entrada del usuario ya no está disponible. Afortunadamente, App Builder facilita la creación y el uso de un cuadro de diálogo para abrir una ventana de informe.
Ingredientes:
- Creador de aplicaciones
- Manejo de expresiones
Tablas de datos de muestra: automóviles 1993, ciudades
Dificultad – Difícil
Duración del vídeo : 8:04
Pasos
- Abra la aplicación creada en la receta Creación de una aplicación parametrizada . La tabla de datos de muestra de Cars 1993 se abrirá con ella porque se utilizó para crear la receta.
- Como no utilizaremos un enfoque parametrizado, tendremos que crear nuestro propio cuadro de diálogo para la entrada del usuario. Comience agregando un nuevo módulo .
- En el panel Propiedades , cambie el nombre de Módulo a Diálogo .
- Cambie el tipo de informe a Diálogo . Esto suprime el menú en la parte superior de la ventana de diálogo.
- Debajo del esquema de Entrada en el panel Fuentes , arrastre un Selector de color de filtro al espacio de trabajo. Cambie el nombre de la variable a clbAll .
- Agregar un cuadro de alineación .
- Arrastre dos cuadros de lista de columnas y dos cuadros de botones a la alineación y organícelos de dos en dos, de modo que cada fila tenga un botón seguido de un cuadro de lista de columnas . El contorno azul dentro de la alineación muestra dónde se ubicará el objeto. También puedes colocar un objeto en un área de colocación si existe. Debe haber una tabla de datos abierta en la aplicación actual para que los cuadros Selector de columnas de filtro y Lista de columnas estén disponibles.

- Cambie la propiedad Nombre de variable del primer botón a btnY y el Título a Agregar Y.
- Cambie las propiedades Nombre y Título del otro botón a btnX y Agregar X , respectivamente .
- Establezca el Nombre de variable para el primer cuadro de lista en clbY .
- Desmarque todos los elementos excepto Continuo para Tipo de modelado para que solo se puedan agregar columnas continuas.
- Cambie los elementos mínimos a 1 . La sugerencia dentro del cuadro cambia de opcional a obligatoria .
- Establezca Max Items en 1 , limitando la cantidad de elementos que se pueden colocar dentro de la caja.
- Finalmente, cambie N Lines a 2 . Esto cambiará la altura de la caja.
- Establezca el Nombre de variable de la segunda lista de columnas en clbX y cambie N Líneas a 8 .
- Agregue un cuadro de lista V alrededor de la alineación .
- Arrastre un nuevo cuadro de botones dentro de la Lista V para que aparezca en la parte inferior. Cambie el nombre del nuevo botón a btnRemove y el título a Remove Selected .
- Agregue un cuadro central H alrededor del botón.
- Seleccione el Selector de filtro de color y el cuadro de lista V que rodea los otros elementos. Haga clic derecho y agregue un cuadro de lista H. Haga clic derecho en el cuadro más externo y seleccione Mover a la esquina .
- Agregue dos botones con títulos Ejecutar y Cancelar cambiando el nombre de sus variables btnRun y btnCancel , respectivamente.
- Colóquelos en un cuadro de lista H y luego en un cuadro central H.
- Seleccione el cuadro central H y el cuadro de lista H que contienen los otros objetos y agréguelos a un cuadro de lista V.

Ahora que tenemos el cuadro de diálogo creado, agreguemos funcionalidad a los botones.
- Seleccione el botón Cancelar . Desplácese hasta la parte inferior del panel Propiedades . La última propiedad, Presione , está asociada con el script del botón. Se puede agregar un script directamente al cuadro de entrada a la derecha o, si se necesita más espacio, al hacer clic en el botón de tres puntos se abre una ventana con más espacio. Este es uno de los dos lugares donde se pueden ubicar los scripts de objetos.
- Use the following code for the button:
(thisModuleInstance << Get Box) << Close Window;
La referencia del espacio de nombres thisModuleInstance es necesaria para que funcione el botón Cancelar . Cada módulo crea su propia referencia de espacio de nombres con el mismo nombre. Debido a que su alcance no se extiende fuera del módulo al que están asociados, todos pueden tener el mismo nombre. Es importante reconocer esto cuando se trabaja con varios módulos. El mensaje Obtener cuadro se utiliza para obtener una referencia a la ventana de diálogo y Cerrar ventana para cerrarla.
- Seleccione el botón Agregar Y. Haga clic derecho y seleccione Scripts > Presione en la parte inferior. Esto crea un nombre predeterminado para el script, lo agrega a la propiedad Press del botón Ejecutar y agrega un shell de script en la pestaña Scripts , el segundo lugar donde se puede ubicar un script. El nombre del script en el panel Propiedades debe ser el mismo que el nombre del script en la pestaña Scripts para que funcione correctamente.
- Repita esto para los botones Agregar X y Eliminar seleccionados .
- Vaya a la pestaña Scripts . Elimine los comentarios y el código predeterminados que se han agregado a los scripts. El argumento thisBox es una referencia al objeto al que está asociado el script. Todas las propiedades del script de App Builder utilizan thisBox como primer argumento. Es opcional y se puede eliminar si no se utiliza y no se necesitan otros argumentos.
- For the Add Y button script, add the following line:
clbY << Append(clbAll << Get Selected)
Esto hará que lo que esté seleccionado en el Selector de color de filtro se agregue al cuadro de lista Y.
- Agregue el mismo script para el botón Agregar X reemplazando clbY con clbX .
- Use the following two lines for the Remove Selected button:
clbY << Remove Selected;
clbX << Remove Selected;
- Add a script for the Run button. Use the following code:
If(N Items(clbY << Get Items) > 0 & N Items(clbX << Get Items) > 0,
(thisModuleInstance << Get Box) << Close Window;
thisApplication:Report << Create Instance(clbY << Get Items,clbX << Get Items);
)
La declaración If verifica que haya al menos un elemento en los cuadros de lista de columnas X e Y. Si se cumple esta condición, la línea 2 cierra la ventana de diálogo y la línea 3 inicia el módulo de informe. thisApplication es el espacio de nombres utilizado por la aplicación que abarca todos los objetos y variables creados en ella. En este caso se utiliza para hacer referencia al módulo de informe y es opcional. Crear instancia es el mensaje utilizado para iniciar un módulo. Sus argumentos se pasan a la función OnModuleLoad del módulo iniciado. Pasaremos el contenido del List Box en el que el usuario selecciona las columnas de análisis.
- Seleccione el Módulo y cámbiele el nombre a Informe . Desmarque Inicio automático en la parte inferior derecha para evitar que se inicie cuando se inicie la aplicación.
- Elimine los tres informes que se encuentran actualmente en el informe. Usaremos JSL para compilarlos en tiempo de ejecución, después de que el usuario haya seleccionado las columnas de análisis.
- Cambie el nombre de los cuadros de la página de pestañas a tpbDistribution , tpbFitYbyX y tpbScatter .
- To finish building the application, navigate to the Report section of the Scripts tab. It can be found by selecting the Scripts tab and choosing Report using the combo box at the top. We used Create Instance in the Dialog module script to launch the report and pass it the analysis columns. A module receives any arguments in its OnModuleLoad function. This happens before any of the report visuals are rendered. The following code will receive the passed variables and assign them variables local to the module (i.e., in the thisModuleInstance namespace for report).
OnModuleLoad({yCols,xCols},
allCols = Insert(yCols,xCols);
yVars = yCols;
xVars = xCols;
);
La variable allCols combina las variables X e Y para la plataforma Scatterplot.
- The Adjuntar function will be used to add the platforms to the appropriate Tab Page Boxes.
tpbDistribution << Append();
tpbFitYbyX << Append( );
tpbScatter << Append()
- Working from the saved scripts from the Parameterized Application recipe, copy and paste the Scatterplot Matrix code into the Adjuntar function for tpbScatter. Delete the list of hard coded column names and replace them with Evaluación (todas las columnas).
tpbScatter << Append(
Scatterplot Matrix(
Y( Eval(allCols) ),
)
)
- We will use an alternative form for the Distribución platform:
tpbDistribution << Append(
Distribution(
Y(Eval(allCols))
)
);
La ventaja de este enfoque es que no es necesario especificar los tipos de modelado para las columnas de entrada, lo que simplifica mucho el código.
- We will also use an alternative for Ajustar Y por X
tpbFitYbyX << Append(
Fit Y by X(
Y( Eval(yVars)),
X( Eval(xVars) )
) << Fit Line << ANOVA;
);
Además de no tener que cambiar la llamada de la plataforma para los diferentes tipos de modelado, se pueden usar los mensajes Fit Line y ANOVA , lo que hace que el código sea más compacto.
Puede probar la aplicación con la tabla de datos de muestra de Ciudades . Si bien está limitado a una única columna de respuesta, el número y los tipos de modelado para las columnas X no están restringidos.