Tenía un JSL para crear una ventana para mostrar muchos constructores de gráficos, debido a que usé el lenguaje where para filtrar datos, la nueva ventana creará automáticamente un cuadro de texto ("Donde: CID == a[1][g] y: VARABLE == a[2][g] y: WNDOW==a[3][g] y: SATISTIC==a[4][g] y: CLLECTION_NAME==a[5][g]"), quiero establecer esta propiedad del cuadro de texto como "Contraer", ¿puede darme una solución? Muchas gracias.
Tabla de datos("FSS" ):RUN_START_DATE << Tipo de datos(Numérico,Formato("aaaammdd", 8 ),Formato de entrada("aaaammdd" )) << Establecer tipo de modelado("Continuo" );
resumir(a=por(:CED,:VARABLE,:VENTANA,:SATÍSTICO,:NOMBRE_DE_LA_CLASIFICACIÓN),b=mín(:CRÍTICO_INFERIOR),c=máx(:CRÍTICO_SUPERIOR));
n=elementos(b);
FDCD=nueva ventana("FDC", vlb=v cuadro de lista());
Para (i = 1, i <= n, i = i + j-1,
hlb= h Cuadro de lista(
para(j=1, j<=4,j++,
g=i+j-1;
gráfico = Constructor de gráficos(
Tamaño (400, 300),
Mostrar panel de control (0),
Mostrar título( 0 ),
Donde ( :CID == a[1][g] & :VARABLE == a[2][g] & :VENTANA==a[3][g] & :SATISTIC==a[4][g] & :CLLECTION_NAME==a[5][g]),
Mostrar dónde (0),
Variables(
X( :FECHA_DE_INICIO_DE_EJECUCIÓN ),
Y( :VALOR ),
Grupo X( :ENTIDAD ),
Superposición( :RECETA ),
),
Elementos(Puntos(X, Y, Leyenda(10)), Suavizado(X, Y, Leyenda(11))),
EnviarAlInforme(
Despacho({},"Generador de gráficos",OutlineBox,{Establecer título( a[1][g]||"|"||a[2][g]||"||a[3][g]||"|"||a[4][g] ), Visualización de exportación de imagen( Normal )}),
Despacho({},"RUN_START_DATE",ScaleBox,{ Intervalo( "Día" ),Inc( 3 ), Ticks menores( 1 )}),
Despachar({},"VALOR",ScaleBox,{//Máx(c[i]+(c[i]-b[i])*0,1,:VALOR*1,1), Mín( b[i]+(c[i]-b[i])*0,1,:VALOR*0,9 ),
Agregar línea de referencia (c[g], "Discontinua", "Roja", "UCL", 1),
Agregar línea de referencia (b[g], "Discontinua", "Roja", "LCL", 1)})
)
);
);
);
vlb<
);
Hay muchas publicaciones antiguas que contienen soluciones para este problema. Mi método preferido es usar XPath.
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("",
V List Box(
gb = dt << Graph Builder(
Show Control Panel(0),
Variables(X(:weight), Y(:height), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11))),
Where(:sex == "M")
),
gb = dt << Graph Builder(
Show Control Panel(0),
Variables(X(:weight), Y(:height), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11))),
Where(:sex == "F")
)
)
);
wait(1);
where_teb = nw << XPath("//TextBox[contains(text(), 'Where(')]");
where_teb << Visibility("Collapse");
Puedes hacer que el XPath sea más robusto si sabes qué columna se usa para filtrar o qué valores se están filtrando.
Sé que esta publicación es antigua, pero intento usar este método para eliminar las sentencias "Where" de los gráficos de control que genero, pero mi expresión XPath siempre parece devolver una lista vacía, incluso si reduzco la búsqueda a objetos TextBox sin criterios de filtrado. Para resumir mi script, tengo una tabla de datos apilados. Empiezo creando una ventana e insertando un VListBox.
CtrlChart = New Window("Trend Charts",
vlbreport = V List Box("Trend Review");
);
Luego, uso un bucle para agregar gráficos de control a vlbreport como cuadros de lista V individuales.
vlbreport << Append(
V List Box(
Control Chart Builder( **Control chart setting here) ); );
Luego de un comando de espera para asegurar que la ventana esté completamente poblada, intento usar XPath para simplemente devolver todos los cuadros de texto, pero sigo sin obtener resultados.
allbox = CtrlChart << XPath("//Textbox");
Actualmente, allbox se devuelve como {}. Si uso "Mostrar Estructura de Árbol" en CtrlChart, puedo ver la estructura completa, incluyendo todos los objetos TextBox que contiene, pero no se selecciona nada. ¿Tiene alguna idea de por qué ocurre esto? Me gusta la idea de usar XPath para aislar los cuadros Where porque es una solución realmente dinámica que se puede aplicar a todos mis scripts con este formato. Sin embargo, tengo poca o ninguna familiaridad con XPath. En general, mis conocimientos de scripting se basan en mucho ensayo y error, búsquedas en Google y la guía de scripting.
Es un cuadro de texto, no un cuadro de texto (con B mayúscula) en XPath
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
cols = {"NPN1", "PNP1", "PNP2"};
nw = New Window("Trend Charts",
vlb = V List Box()
);
For Each({colname}, cols,
vlb << Append(
ccb = dt << Control Chart Builder(
Show Limit Summaries(0),
Show Capability(0),
Variables(Y(Eval(colname))),
Show Control Panel(0),
Where(:Site == 1)
)
);
);
Show(nw << XPath("//Textbox[contains(text(), 'Where(')]"));
Show(nw << XPath("//TextBox[contains(text(), 'Where(')]"));
Un descuido muy simple. ¡Gracias por notarlo! Ya me funciona y estoy encantado. Esos cuadros de texto son especialmente molestos al exportar gráficos a PPT. JMP necesita una configuración para ocultarlos, así que esta solución no sería necesaria.