Zeilenstatus auswählen und färbenOkay, ich habe verschiedene Dinge ausprobiert, um das zum Laufen zu bringen, aber alles, was ich bisher habe, ist ein nicht ganz funktionsfähiges Skript. Das Löschskript funktioniert wunderbar, aber während das Zeilenstatusskript funktioniert, funktioniert es nicht ganz so, wie ich es möchte, und ich hoffe, dass es eine Möglichkeit gibt, es ein wenig zu bereinigen.
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))),
);
Wählen Sie grundsätzlich eine Zeile aus, die einen bestimmten Wert in der Spalte „Alarm-ID“ enthält, und stellen Sie den Zeilenstatus auf die ausgewählte Farbe ein. Ich möchte, dass es den Zeilenstatus festlegt und die Zeile in der Farbe des Zeilenstatus hervorhebt. Vermutlich kann ich das mit einem Anhang tun, nachdem alle Zeilenstatus festgelegt wurden.
Dadurch wird ein Zeilenstatus erstellt, dieser jedoch nicht angewendet. Ich muss ihn manuell anwenden. Außerdem wird für jede Zeile ein einzelner Zeilenstatus erstellt, was schnell unübersichtlich wird. Ich vermute, dass ich das else dafür verwenden kann Entfernen Sie zumindest nicht vorhandene Zeilen, das würde helfen. Es scheint auch, dass die Zeilen mit mehreren Optionen nicht wirklich funktionieren. Ich hatte gehofft, ich könnte das zum Laufen bringen, damit ich nicht eine Zeile pro Code erstellen müsste.
Hoffentlich kann mir jemand weiterhelfen, ich arbeite immer noch daran, wenn ich Zeit habe, danke!
Betreff: Zeilenstatus auswählen und einfärbenDas funktioniert wunderbar, danke! Eine der Schönheiten (und manchmal auch Flüche) dieses Systems besteht darin, dass es mehrere verschiedene Möglichkeiten gibt, dasselbe Problem anzugehen. Das nächste wird eine ziemliche Herausforderung sein, ich werde wahrscheinlich versuchen, es nächste Woche in Angriff zu nehmen, lol (oder es könnte sehr einfach sein und ich weiß es einfach noch nicht!)Betreff: Zeilenstatus auswählen und einfärbenIch denke, das würde für Sie funktionieren.Dies setzt voraus, dass Sie noch keinen Farbstatus haben und sich keine Ihrer Elemente überschneiden.
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);
Betreff: Zeilenstatus auswählen und einfärbenWenn Sie den Farbstatus für jede der Zeilen basierend auf Ihrer Auswahl ändern möchten, dient das folgende Teilskript als Struktur, die Sie zum Vornehmen der Änderungen verwenden möchten
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 )
)
);Betreff: Zeilenstatus auswählen und einfärbenOffensichtlich bekomme ich meine Formel auch nicht zum Laufen ^.^
Einfach ausgedrückt möchte ich, dass die Zeile mit dem X-Wert in einer Farbe hervorgehoben wird
Zeile mit Y- und Z-Wert in einer anderen Farbe hervorgehoben
usw...
Bestimmte Farben sind bereits im Skript enthalten, anscheinend | oder Argument ist das Problem bei der Auswahl, ich bin mir nur nicht sicher, wie ich es richtig ausdrücken soll.
Betreff: Zeilenstatus auswählen und einfärbenMöglicherweise verstehe ich Ihre Frage nicht richtig.Aber hier ist meine beste Vermutung.Zunächst einmal hatte ich nie vor, Ihre Formel zum Laufen zu bringen. Sie können nicht "something" == ("stuff"|"something") ausführen und es als wahr auswerten lassen.Zumindest meines Wissens nach.Ich habe ein Beispiel dafür gegeben, was Sie meiner Meinung nach versuchen, aber ich könnte weit daneben liegen.
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);