Problema con la obtención de elementos de leyendaEn JMP18 (18.1.1) este ejemplo del índice de scripts no funciona:

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = Graph Builder(
Variables( X( :height ), Y( :weight ), Overlay( :sex ), Color( :age ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
server = gb << Get Legend Server;
items = server << Get Legend Items;
For Each( {item, index}, items[1],
item << Set Label( "Item " || Char( index ) )
);
Produce el mensaje de error:

Entonces, Legend Server << obtener elementos de leyenda()
¿No devuelve objetos que se puedan ejecutar en scripts?
Automatización y scriptingRe: obtener elementos de leyenda: no hay objetos que se puedan programarSolución alternativa:
Utilice el elemento Obtener leyenda
No olvides evaluar previamente para obtener el artículo de leyenda.
- Para la etiqueta establecida no se necesita ninguna evaluación previa.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = Graph Builder(
Variables( X( :height ), Y( :weight ), Overlay( :sex ), Color( :age ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
server = gb << Get Legend Server;
Nitems = Nitems(( server << Get Legend Items)[1]);
for(i=1, i<= Nitems, i++,
Eval(Eval Expr(item = server << Get Legend Item(1, Expr(i))));
item << Set Label( "Item " || Char( i ) )
);
Re: obtener elementos de leyenda: no hay objetos que se puedan programarSiguiente trampa: ¿funciona para gráficos de barras?
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb =Graph Builder(
Variables( X( :age ), Y( :weight ), Overlay( :sex ) ),
Elements( Bar( X, Y ) )
);
server = gb << Get Legend Server;
items = server << Get Legend Items;
show(items);
server << get legend item(1,1) // error message

editar: No pude reproducir el problema en otra computadora / después de reiniciar JMP (?).
Re: obtener elementos de leyenda: no hay objetos que se puedan programarEn realidad, devuelve objetos que se pueden programar. Parece que se trata de un error de For Each(). Si cambias el código por algo que debería ser equivalente, funciona.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = Graph Builder(
Variables( X( :height ), Y( :weight ), Overlay( :sex ), Color( :age ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
server = gb << Get Legend Server;
items = server << Get Legend Items;
For Each( {item, index}, items[1],
items[1][index] /*isn't this exactly what item is?*/ << Set Label( "Item " || Char( index ) )
);Re: obtener elementos de leyenda: no hay objetos que se puedan programarAh, lo siento, tienes razón, los elementos individuales sí que se pueden programar.
Interesting: a batch message like items << get label produces the same issue.
maybe batch messages use Para cada uno in the background ?
Investigando más a fondo, encontré un ticket antiguo: TS-00128192
Afortunadamente, mientras tanto el problema recibió suficiente prioridad: en JMP19 (EA5) se solucionó:

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = Graph Builder(
Variables( X( :height ), Y( :weight ), Overlay( :sex ), Color( :age ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
server = gb << Get Legend Server;
items = server << Get Legend Items;<BR /><BR />items << get label // same issue as with for each
show(items[1][1])
items[1][1] << get label(); // OK, on the lowest level, there <U>is</U> a scriptable object
Show(tmp = items[1][1::2]); // then this is a list of ...
tmp[1] << get Label(); // ...no
Re: obtener elementos de leyenda: no hay objetos que se puedan programar
@mmarchandFSLR escribió:
En realidad, devuelve objetos que se pueden ejecutar en scripts.
Por otro lado...un poco sorprendente:

JMP19:
