Sélection et couleur de l'état de la ligneD'accord, j'ai essayé diverses choses pour essayer de faire fonctionner cela, mais tout ce que j'ai jusqu'à présent est un script pas tout à fait fonctionnellement utilisable. Le script de suppression fonctionne à merveille, mais bien que le script d'état de ligne -fonctionne- il ne fonctionne pas tout à fait comme je le souhaite, et j'espère qu'il existe un moyen de le nettoyer un peu.
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))),
);
Fondamentalement, sélectionnez la ligne contenant une valeur spécifique dans la colonne ID d'alarme et définissez l'état de la ligne sur la couleur sélectionnée. Ce que je - veux - qu'il fasse, c'est définir l'état de la ligne et mettre en surbrillance la ligne de la couleur de l'état de la ligne, je peux probablement le faire avec un ajout une fois que tous les états de la ligne sont définis.
Ce que cela fait, il crée un état de ligne mais ne l'applique pas, je dois l'appliquer manuellement, il crée également un état de ligne individuel pour chaque ligne, qui s'encombre rapidement, je soupçonne que je pourrais peut-être utiliser le reste pour supprimez au moins les lignes qui ne sont pas présentes, ce qui aiderait. Il semble également que les lignes avec plusieurs options ne fonctionnent pas réellement, j'espérais pouvoir le faire fonctionner afin de ne pas avoir à créer 1 ligne par code.
J'espère que quelqu'un pourra m'aider, toujours en train de le brancher quand j'aurai le temps, merci!
Re : Sélection et couleur de l'état de la ligneCelui-ci fonctionne à merveille, merci ! L'une des beautés de ce système (et parfois des malédictions) est qu'il existe plusieurs façons différentes de résoudre le même problème. Le prochain sera assez difficile, je vais probablement essayer de m'y attaquer la semaine prochaine lol (ou ça pourrait être très simple et je ne sais pas encore !)Re : Sélection et couleur de l'état de la ligneJe pense que cela fonctionnerait pour vous.Cela suppose que vous n'avez pas encore d'état de couleur et qu'aucun de vos éléments ne se chevauche.
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);
Re : Sélection et couleur de l'état de la ligneSi vous souhaitez modifier l'état de la couleur pour chacune des lignes, en fonction de vos sélections, le script partiel ci-dessous correspond à la structure que vous souhaitez utiliser pour effectuer les modifications.
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 )
)
);Re : Sélection et couleur de l'état de la ligneclairement, je ne peux pas faire fonctionner ma formule non plus ^. ^
En termes simples, je veux une ligne avec la valeur X en surbrillance d'une couleur
Ligne avec la valeur Y et Z mise en surbrillance d'une autre couleur
etc...
des couleurs spécifiques sont déjà dans le script, apparemment le | ou l'argument est le problème dans la sélection de ceux-ci, je ne suis tout simplement pas sûr de la bonne façon de l'exprimer.
Re : Sélection et couleur de l'état de la ligneJe n'ai peut-être pas bien compris votre question.Mais voici ma meilleure estimation.Tout d'abord, je n'ai jamais été sur le point de faire fonctionner votre formule. Vous ne pouvez pas faire "quelque chose" == ("truc"|"quelque chose") et le faire évaluer vrai.Du moins à ma connaissance.J'ai donné un exemple de ce que je pense que vous essayez de faire, mais je pourrais être loin.
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);