Come allungare GB per riempire tutto lo spazio disponibile?Diciamo che ho una casella Line Up a 3 colonne con alcune caselle di visualizzazione, e poi come seconda riga ho una casella Unlineup con un generatore di grafici all'interno.
L'esempio può essere visto eseguendo questo script:
dt = New Table( "DEMO",
Add Rows( 10 ),
New Column( "Category",
Character,
"Nominal",
Set Values( {"A", "A", "A", "A", "A", "B", "B", "B", "B", "B"} )
),
New Column( "X",
Character,
"Nominal",
Set Values( {"AA", "AD", "AC", "AD", "AC", "BD", "BF", "BF", "BD", "BS"} )
),
New Column( "Y_veryLongName_toMake_Tabulat_Large",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [12, 32, 42, 23, 21, 12, 34, 53, 23, 12] )
)
);
tab = dt << Tabulate(
Show Control Panel( 0 ),
Add Table(
Column Table(
Analysis Columns( :Y_veryLongName_toMake_Tabulat_Large ),
Statistics( Sum, Mean )
),
Row Table( Grouping Columns( :Category, :X ) )
)
);
gb = dt << Graph Builder(
//Size( 528, 464 ),
Show Control Panel( 0 ),
Variables(
X( :Category ),
X( :X, Position( 1 ) ),
Y( :Y_veryLongName_toMake_Tabulat_Large ),
Color( :Category )
),
Elements( Points( X( 1 ), X( 2 ), Y, Legend( 9 ) ) )
);
rtab = tab << Report;
rgb = gb << Report;
lb = LineUp Box(NCol(3), rtab, rtab, rtab, Unlineup Box(rgb) );
nw = New Window("DEMO", Show Menu(0), Show Toolbars(0), lb);Quindi ecco come appare:

Ora, voglio che Graph Builder riempia tutto lo spazio orizzontale. Non conosco la dimensione di quello spazio, quindi non voglio specificarlo direttamente, voglio solo che riempia tutto lo spazio disponibile.
Ho provato a utilizzare Set Auto Stretching (1,0) su rgb, ma non è stato di grande aiuto.
Sperimentalmente, ho scoperto che se vado alle proprietà e cambio Stretching per X da Neutral a Fill for EACH AND EVERY BOX da Frame Box fino a Outline Box, in questo modo:

quindi sembra che voglio che appaia:

Domande:
1. È questo l'unico modo?
2. Se lo è, come scriverlo?
Aggiornamento: suppongo che dovrei essere in grado di utilizzare XPath con antenato-o-sé (o in una variante più semplice solo antenato di seguito), ma non riesco a farlo funzionare.
rgb << Xpath("//FrameBox/ancestor")ScriptingRi: Come allungare GB per riempire tutto lo spazio disponibile?Penso che funzioni se imposti Auto Stretching sulla Frame Box dopo che il report è stato clonato:
lb = LineUp Box(NCol(3), rtab, rtab, rtab, Unlineup Box(rgb) );
lb[FrameBox(1)] << Set Auto Stretching(1,0);
nw = New Window("DEMO", Show Menu(0), Show Toolbars(0), lb);
Le proprietà di stiramento vengono in genere cancellate quando le finestre vengono clonate, perché i comportamenti non sempre si traducono quando il layout cambia.
Ri: Come allungare GB per riempire tutto lo spazio disponibile?Bene, è un buon modo per farlo, tranne che nel mio caso d'uso questo script viene eseguito su molte tabelle che un utente carica consecutivamente, e questa finestra nw ottiene quelle Line Up Box aggiunte una dopo l'altra. Con ogni tabella successiva si chiude quella precedente, quindi non posso avere grafici live, ho bisogno di avere rapporti che rimarrebbero dopo la chiusura della rtable.
Ho provato a eseguire questa espressione:
gb_expr = Expr(
(gb = dt << Graph Builder(
//Size( 528, 464 ),
Show Control Panel(0),
Variables(X(:Category), X(:X, Position(1)), Y(:Y_veryLongName_toMake_Tabulat_Large), Color(:Category)),
Elements(Points(X(1), X(2), Y, Legend(9)))
))<<REPORT></REPORT>
ma non ha funzionato. Qualche idea su come modificarlo in modo che Graph Builder non scompaia dalla finestra se chiudo la tabella?
Ri: Come allungare GB per riempire tutto lo spazio disponibile?Un'altra opzione sarebbe anche quella di creare il generatore di grafici direttamente all'interno della nuova finestra
Names Default To Here(1);
dt = New Table("DEMO",
Add Rows(10),
New Column("Category", Character, "Nominal", Set Values({"A", "A", "A", "A", "A", "B", "B", "B", "B", "B"})),
New Column("X", Character, "Nominal", Set Values({"AA", "AD", "AC", "AD", "AC", "BD", "BF", "BF", "BD", "BS"})),
New Column("Y_veryLongName_toMake_Tabulat_Large",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([12, 32, 42, 23, 21, 12, 34, 53, 23, 12])
)
);
tab = dt << Tabulate(
Show Control Panel(0),
Add Table(
Column Table(Analysis Columns(:Y_veryLongName_toMake_Tabulat_Large), Statistics(Sum, Mean)),
Row Table(Grouping Columns(:Category, :X))
)
);
gb_expr = Expr(
gb = dt << Graph Builder(
//Size( 528, 464 ),
Show Control Panel(0),
Variables(X(:Category), X(:X, Position(1)), Y(:Y_veryLongName_toMake_Tabulat_Large), Color(:Category)),
Elements(Points(X(1), X(2), Y, Legend(9)))
)
);
rtab = tab << Report;
lb = Lineup Box(N Col(3), rtab, rtab, rtab, Unlineup Box(gb_expr));
nw = New Window("DEMO", Show Menu(0), Show Toolbars(0), lb);
gb << Auto Stretching("On");Ri: Come allungare GB per riempire tutto lo spazio disponibile?Ok, ho provato a fare più cose:
rgb << Fit To Window("On");Questo non ha funzionato.
rgb[FrameBox(1)] << Set Auto Stretching(1,0);
Questo, in cui applico l'Auto Stretching a FrameBox, non l'intero rapporto, ha funzionato.
Le domande che mi sono imbattuto nel processo sono ancora valide: qual è la sintassi corretta per XPath Axes? Come, antenato, figlio, antenato-o-sé, ecc...