Seleziona e colora lo stato della rigaOk, ho provato varie cose per provare a farlo funzionare, ma tutto quello che ho finora è uno script non del tutto utilizzabile dal punto di vista funzionale. Lo script di eliminazione funziona magnificamente, ma mentre lo script dello stato di riga -funziona- non funziona proprio come vorrei, e spero che ci sia un modo per ripulirlo un po'.
dt << New Column ( "Row State 1",
Row State,
Set Formula ( If( :Alarm ID == "'00000D06", Color State(70))),
);
dt << New Column ( "Row State 2",
Row State,
Set Formula ( If( :Alarm ID == ("'000000B2"| "'000000BE"| "'0000013C"| "'0000013D"),
Color State(6))),
);
dt << New Column ( "Row State 3",
Row State,
Set Formula ( If( :Alarm ID == ("'0000000E"| "'00000144"| "'0000000A"| "'00000021"|
"'00000025"| "'00000027"| "'000000E9"| "'00000145"| "'000001E1"| "'00000F7C"),
Color State(1))),
);
dt << New Column ( "Row State 4",
Row State,
Set Formula ( If( :Alarm ID == "'00000E6E", Color State(38))),
);
dt << New Column ( "Row State 5",
Row State,
Set Formula ( If( :Alarm ID == ("'00000D3B"| "'00000230"| "'00000D42"), Color State(73))),
);
dt << New Column ( "Row State 6",
Row State,
Set Formula ( If( :Alarm ID == ("'0000003B"| "'00000072"| "'00000E8C"), Color State(37))),
);
dt << New Column ( "Row State 7",
Row State,
Set Formula ( If( :Alarm ID == "'00000DB6", Color State(78))),
);
dt << New Column ( "Row State 8",
Row State,
Set Formula ( If( :Alarm ID == "'00000E99", Color State(75))),
);
dt << New Column ( "Row State 9",
Row State,
Set Formula ( If( :Alarm ID == ("'00000E68"| "'00000E71"| "'00000E72"| "'00000E9A"),
Color State(72))),
);
dt << New Column ( "Row State 10",
Row State,
Set Formula ( If( :Alarm ID == ("'0000004E"| "'0000005C"| "'0000011C"| "'00000143"|
"'00000148"| "'000001D9"| "'00000DE9"| "'00000E41"), Color State(12))),
);
dt << New Column ( "Row State 11",
Row State,
Set Formula ( If( :Alarm ID == "'00000D2F", Color State(19))),
);
dt << New Column ( "Row State 12",
Row State,
Set Formula ( If( :Alarm ID == "'00000D2D", Color State(28))),
);
Fondamentalmente, seleziona la riga contenente un valore specifico nella colonna ID allarme e imposta lo stato della riga sul colore selezionato. Quello che voglio che faccia è impostare lo stato della riga ed evidenziare la riga con il colore dello stato della riga, presumibilmente posso farlo con un'aggiunta dopo che tutti gli stati della riga sono stati impostati.
Ciò che fa, crea uno stato di riga ma non lo applica, devo applicarlo manualmente, inoltre crea uno stato di riga individuale per ogni riga, che si riempie rapidamente, sospetto che potrei essere in grado di utilizzare l'altro per almeno rimuovi le linee che non sono presenti, il che aiuterebbe. Sembra anche che le righe con più opzioni non funzionino effettivamente, speravo di riuscire a farlo funzionare in modo da non dover creare 1 riga per codice.
Spero che qualcuno possa aiutarmi, continuando a collegarmi quando avrò tempo, grazie!
Ri: Seleziona e colora lo stato della rigaQuesto funziona magnificamente, grazie! Una delle bellezze di questo sistema (e talvolta maledizioni) è che ci sono molti modi diversi per affrontare lo stesso problema. Il prossimo sarà piuttosto impegnativo, probabilmente proverò ad affrontarlo la prossima settimana lol (o potrebbe essere molto semplice e non lo so ancora!)Ri: Seleziona e colora lo stato della rigaPenso che questo funzionerebbe per te.Ciò presuppone che tu non abbia già uno stato colore e che nessuno dei tuoi elementi si sovrapponga.
Names default to here(1);
dt = open("$SAMPLE_DATA\Big Class.jmp");
color_aa = associative array(
{
// list of values are the first item, color state is the second in each list.
{{12, 13, 16}, 3},
{{14, 15}, 4},
{{17}, 5}
}
);
dt << Select Rows([1, 5, 9]);
rs = dt << Get Row States;
for(values = color_aa << First, !isempty(values), values = color_aa << Next(values),
rows = dt << Get Rows Where(Contains(values, :age));
color = color_aa[values];
rs[rows] = rs[rows] + 2^8*color;
);
dt << Set Row States(rs);
Ri: Seleziona e colora lo stato della rigaSe desideri modificare lo stato del colore per ciascuna delle righe, in base alle tue selezioni, lo script parziale di seguito è per la struttura che desideri utilizzare per apportare le modifiche
Names Default To Here( 1 );
dt = Current Data Table();
For( i = 1, i <= N Rows( dt ), i++,
If(
N Rows( Loc( {"'00000D06"}, :Alarm ID[i] ) ) > 0, Row State( i ) = Color State( 70 ),
N Rows( Loc( {"'000000B2", "'000000BE", "'0000013C", "'0000013D"}, :Alarm ID[i] ) ) > 0, Row State( i ) = Color State( 6 ),
N Rows(
Loc(
{"'0000000E", "'00000144", "'0000000A", "'00000021", "'00000025", "'00000027", "'000000E9", "'00000145", "'000001E1", "'00000F7C"},
:Alarm ID[i]
)
) > 0, Row State( i ) = Color State( 1 ),
N Rows( Loc( {"'00000E6E"}, :Alarm ID[i] ) ) > 0, Row State( i ) = Color State( 38 ),
N Rows( Loc( {"'00000D3B", "'00000230", "'00000D42"}, :Alarm ID[i] ) ) > 0, Row State( i ) = Color State( 73 )
)
);Ri: Seleziona e colora lo stato della rigachiaramente non riesco nemmeno a far funzionare la mia formula ^.^
In poche parole, voglio Row con il valore X evidenziato di un colore
Riga con valore Y e Z evidenziata di un altro colore
eccetera...
colori specifici sono già nella sceneggiatura, a quanto pare il | o l'argomento è il problema nella selezione di quelli, non sono sicuro del modo giusto per esprimerlo.
Ri: Seleziona e colora lo stato della rigaPotrei non aver capito correttamente la tua domanda.Ma ecco la mia ipotesi migliore.Prima di tutto, non sono mai stato sul punto di far funzionare la tua formula. Non puoi fare "qualcosa" == ("cose"|"qualcosa") e farlo valutare vero.Almeno per quanto ne so.Ho fatto un esempio di quello che penso tu stia cercando di fare, ma potrei essere fuori strada.
Names default to here(1);
dt = open("$SAMPLE_DATA\Big Class.jmp");
// this doesn't work
dt << New Column("Test", formula(:age == (12 | 14 | 16)));
//this should
values = {12, 14, 16};
rows = dt << Get Rows Where(Contains(values, :age));
//assuming they don't have color
dt << Select Rows([1, 5, 9]);
wait(1);
rs = dt << Get Row States;
//2^8*3 = color state(3) = red
rs[rows] = rs[rows] + 2^8*3;
dt << Set Row States(rs);