Startseite › Foren › Deutsches LiveCode-Forum › letze x-Zeilen in widget Line Graph
- Dieses Thema hat 22 Antworten und 3 Teilnehmer, und wurde zuletzt aktualisiert vor 4 Jahren von
Klaus Major.
-
AutorBeiträge
-
-
Februar 7, 2021 um 14:14 Uhr #26389
Hallo liebe LiveCoder
Ich brauche mal wieder Hilfe.
Ich möchte gerne die letzten Zeilen aus einem Listenfeld in einem Widget (Line Graph) darstellen.
Dies ist die Liste:Sa, 23. Jan 2021 210 Mo, 25. Jan 2021 410 Di, 26. Jan 2021 300 Mi, 27. Jan 2021 300 Do, 28. Jan 2021 300 Fr, 29. Jan 2021 210 Sa, 30. Jan 2021 410 Mo, 1. Feb 2021 300 Di, 2. Feb 2021 300 Mi, 3. Feb 2021 300 So, 7. Feb 2021 268 So, 7. Feb 2021 233
Und das ist der Code dazu:
##Daten aus Feld "PickHistory" in widget "Line Graph" anzeigen put empty into gData set itemDel to tab repeat with x = 7 to the number of lines of field "PickHistory" of grp "scrollArea1" of cd "History" put (item 1 of line x of field "PickHistory" of grp "scrollArea1" of cd "History" & "," & item 3 of line x of field "PickHistory"of grp "scrollArea1" of cd "History" & return ) after gData end repeat answer gData set the graphData of widget "Line Graph" to gData
Aber irgendwie klappt das nicht so richtig.
Hat jemand eine Idee woran es liegen könnte? -
Februar 7, 2021 um 14:41 Uhr #26391
Hi,
einmal hast Du item 3 statt item 2 und dann sind in den letzten beiden Zeilen tabs zuviel in der Mitte
put empty into gData set itemDel to tab repeat with x = 7 to the number of lines of field "PickHistory" put (item 1 of line x of field "PickHistory" & "," & item 2 of line x of field "PickHistory" & return ) after gData end repeat answer gData set the graphData of widget "Line Graph" to gData
Sa, 23. Jan 2021 210 Mo, 25. Jan 2021 410 Di, 26. Jan 2021 300 Mi, 27. Jan 2021 300 Do, 28. Jan 2021 300 Fr, 29. Jan 2021 210 Sa, 30. Jan 2021 410 Mo, 1. Feb 2021 300 Di, 2. Feb 2021 300 Mi, 3. Feb 2021 300 So, 7. Feb 2021 268 So, 7. Feb 2021 233
Damit gehts bei mir.
Happy Coding
Torsten -
Februar 7, 2021 um 16:09 Uhr #26396
Danke für die schnelle Antwort.
Ich habe deine Änderung übernommen.
Der Inhalt von „Line Graph“ zeigt jetzt folgendes:
Fr,0,210
Sa,0,410
Mo,0,300
Di,0,300
Mi,0,300
So,0,323also eine 0 nach Fr,
die darf da nicht hin.
Ich weiß nicht wo die herkommt?!
Und wenn weitere Einträge hinzukommen, werden auch diese im widget „Line Graph“ angezeigt.
Ich möcht aber immer nur die letzten sechs Zeilen aus dem Field „PickHistory“ im widget „Line Graph“ darstellen.
Kannst Du mir sagen, was ich ändern muss? -
Februar 7, 2021 um 17:54 Uhr #26398
Habs jetzt soweit hinbekommen, dass die Darstellung im Widget „Line Graph“ alle Zeilen mit den Richtigen Werten darstellt.
Leider alle Zeilen.
Wie schaffe ich es, das immer nur die letzten sechs Zeilen für die Darstellung im Widget „Line Graph“ berücksichtigt werden? -
Februar 7, 2021 um 18:09 Uhr #26400
Für optimale Geschwindigkeit sollten wir auf Text in Feldern nur EINMAL zugreifen, in eine Variable packen und damit arbeiten!
Du könntest sowas machen:
... put field "PickHistory" into tData put the num of lines of tData into anzahl_zeilen put anzahl_zeilen - 5 into loop_start put line loop_start to anzahl_zeilen of tData into myData ## MyData enthält nur die letzten 6 Zeilen Deines Feldes. ...
-
Februar 7, 2021 um 18:27 Uhr #26404
Hi Danke.
Habe es in der Zwischenzeit so hinbekommen:##Daten in das Feld "PickHistory" eintragen if fld "DatumTLeistung" of cd "Schichtstart" is not empty then put fld "DatumTLeistung" & "," & TAB & fld "AnzahlTLeistung" & return after fld "PickHistory" of cd "History" add fld "AusgabeTagespicks" to fld "PickSumm" of cd "Schichtende" end if ##die letzten sechs Zeilen der aus dem Feld "PickHistory" in widget "Line Graph" anzeigen put empty into gData set itemDel to "," repeat with x = 2 to the number of lines of field "PickHistory" of cd "History" put (item 1 of line x of field "PickHistory" of cd "History" & "," & item 3 of line x of field "PickHistory" of cd "History" & return ) after gData end repeat ## die letzten sechs Zeilen von gData in gData2 packen und in widget "Line Graph" darstellen. put line -6 to -1 of gData into gData2 set the graphData of widget "Line Graph" to gData2
-
Februar 7, 2021 um 18:31 Uhr #26406
Bitte lies Dir mein Posting noch einmal genuer durch und versuch,
dessen „Botschaft“ zu verstehen und auch umzusetzen! 😉 -
Februar 7, 2021 um 19:31 Uhr #26408
stehe geradeauf dem Schlauch.
1. Ich habe die Daten aus dem Feld „PickHistory“ mit dem repeat with klumbatsch aufbereitet.
aus:
Sa, 23. Jan 2021, 210
Mo, 25. Jan 2021, 410
Di, 26. Jan 2021, 300
Mi, 27. Jan 2021, 300
Do, 28. Jan 2021, 300
Fr, 29. Jan 2021, 210
Sa, 30. Jan 2021, 410
Mo, 1. Feb 2021, 300
Di, 2. Feb 2021, 300
Mi, 3. Feb 2021, 300wird in gData das:
Sa,210
Mo,410
Di,300
Mi,300
Do,300
Fr,210
Sa,410
Mo,300
Di,300
Mi,300
So,4002. und dann kann ich doch erst die letzten sechs Zeilen in gData2 packen.
-
Februar 7, 2021 um 19:52 Uhr #26410
Wenn Du zuerst die letzten sechs Zeile wie in meinem Beispiel in eine variable packst, und dann DAMIT alles Weitere anstellst, ist es halt schneller.
OK, wird bei den paar Daten nur messbar sein, aber je mehr Daten, desto größer die Zeitersparnis!
... ##Daten in das Feld "PickHistory" eintragen if fld "DatumTLeistung" of cd "Schichtstart" is not empty then put fld "DatumTLeistung" & "," & TAB & fld "AnzahlTLeistung" & return after fld "PickHistory" of cd "History" add fld "AusgabeTagespicks" to fld "PickSumm" of cd "Schichtende" end if ##die letzten sechs Zeilen der aus dem Feld "PickHistory" in widget "Line Graph" anzeigen put field "PickHistory" of cd "History" into gData ## Das ist der DEFAULT Itemdelimiter, daher braucht er nicht neu gesetzt zu werden, ## da Du ihn vorher nicht geändert hattest. ## set itemDel to "," ## Sehr clevere Lösung! :-) put line -6 to -1 of gData into gData1 ## Jetzt erst den ganzen "Klumpatsch" abarbeiten, bzw. Daten sammeln: repeat with for each line tLine in gData1 put item 1 of tLine & "," & item 3 of tLine & CR after gData2 end repeat ## gData2 hat ein CR am Ende! delete char -1 of gData2 set the graphData of widget "Line Graph" to gData ...
-
Februar 7, 2021 um 20:46 Uhr #26412
Vielen Dank.
Natürlich werden die Daten täglich mehr, aber ich denke ein messbarer Geschwindigkeitsvorteil wird sich wohl erst nach 100 oder gar 1000 Zeilen zeigen.Deine Lösung finde ich aber auch sehr clever.
Ich werde sie auf jeden Fall mal testen. -
Februar 7, 2021 um 20:54 Uhr #26414
Gibt es eine Möglichkeit, die exakten Werte auf der x-Achse im widget „Line Graph“ anzuzeigen?
Im Moment steht da:
410
328
246
168
82
0
Oder kann man die exakten werte bei den Markern anzeigen? -
Februar 7, 2021 um 21:28 Uhr #26416
Was meinst Du mit „exakte Werte“?
Sieht so aus, als müssen es immer ganze Zahlen sein, falls Du das meinst. -
Februar 7, 2021 um 22:50 Uhr #26418
exakte Werte wären ja:
210
410
300
300
300
400 -
Februar 8, 2021 um 01:04 Uhr #26423
Die X-Achse geht von links nach rechts und da steht Fr Sa Mo Di Mi So
Du meinst sicher die Y-Achse, oder?Mit diesen Daten aus Deinem Beispiel, die letzten sechs Zeilen:
Fr,210
Sa,410
Mo,300
Di,300
Mi,300
So,400Bekomme ich in der Y-Achse von oben nach unten:
410
370
330
290
250
210Sieht so aus, als würden diese Werte von Deinen Daten abgeleitet bzw. errechnet.
(Max Wert – Min wert) / (Anzahl Zeilen – 1)
Also 200/5 = 40
Das ist die berechnete Differenz für die angezeigten Zwischenwerte.
(Min =) 210
+ 40 (=250)
+ 40 (=290)
+ 40 (=330)
+ 40 (=370)
+ 40 (=410 = Max)
Verstehst Du?
Ich fürchte, das können wir nicht ändern, zumindest sehe ich da keine Möglichkeit.Vielleicht verstehe ich Dein Problem auch überhaupt nicht? 🙂
-
Februar 8, 2021 um 21:50 Uhr #26445
Hallo Klaus.
Doch, du hast das Problem richtig erkannt.
Es wird der min-Wert und der max-Wert geschrieben und die Werte dazwischen abgeleitet.Noch eine Frage.
Ich habe 3 Check-Boxen
Button „20 min.“
Button „30 min.“
Button „60 min.“In den Label´n steht entsprechen 20, 30, und 60
Nun möchte ich gerne, dass beim Auswählen einer Ceheck-Box das Handy respektive meine Smartwatch (Android) in Abständen entsprechend der jeweiligen Label vibriert.
In einem Switch Button, der das ganze Ein und Ausschaltet habe ich folgendes Script:
on hiliteChanged --pSwitchIsOn if (the hilite of btn "20 min." = true or the hilite of btn "30 min." = true or hilite of btn "60 min." = true) then set the visible of grp "Trinken" to true put the label of btn "20 min." into AusgabeVib20 ##answer AusgabeVib20 ##ist 20! also weiter ##put AusgabeVib20 into field "AusgabeVib1" if the environment = "mobile" then mobileVibrate 1 ##1 bedeutet 1x vibrieren 0 vibrieren off! put AusgabeVib20 into SecondsToWait else set the hilite of me to false set the visible of grp "Trinken" to false if the environment = "mobile" then mobileVibrate 0 end if answer "Bitte wähle, in welchen Abständen Du an das Trinken erinnert werden willst" end if end if end hiliteChanged
Leider funktioniert das noch nicht.
Kannst Du helfen? -
Februar 8, 2021 um 22:15 Uhr #26447
Leider funktioniert das noch nicht.
Und was genau funktioniert nicht? Vibriert’s nicht?
Ersetze das mal mit einem ANSWER und gucke, was passiert.Das Skript sieht korrekt aus, allerdings kannst Du
... if the environment = "mobile" then mobileVibrate 0 end if ...
ruhig weglassen! 🙂
-
Februar 9, 2021 um 18:52 Uhr #26457
Die Vibration erfolgt nur beim Betätigen des Switch Button´s.
Die Label der Check-Boxen werden nicht berücksichtigt. -
Februar 9, 2021 um 19:11 Uhr #26459
Hm, klappt so etwas Simples denn mit einem SWITCH Button:
on hilitechanged answer the hilite of me end hilitechanged
?
-
Februar 9, 2021 um 19:15 Uhr #26461
Vielleicht auch mal weitere Klammern einfügen, man weiß ja nie…
... if (the hilite of btn "20 min.") or (the hilite of btn "30 min.") or (hilite of btn "60 min.") then ...
Hinweis, wenn wir = TRUE weglassen, nimmt LC genau das als gegeben an!
Also:
if The hilte of btn „das radio“ = true THEN…
ist identisch mit
if the hilite of btn „radio THEN… -
Februar 9, 2021 um 19:53 Uhr #26463
Zu 1.
Ja klappt.
Zu 2.
if (the hilite of btn "20 min.") or (the hilite of btn "30 min.") or (hilite of btn "60 min.") then
dieser Code funktioniert, denn wenn keine der Ceck Boxen angeklickt wird, erfolgt:
answer „Bitte wähle, in welchen Abständen Du an das Trinken erinnert werden willst“Da muss noch irgend etwas anders fehlen!?
-
Februar 9, 2021 um 20:21 Uhr #26465
Zu 1. und 2. meinte ich auf dem Handy.
-
Februar 9, 2021 um 21:01 Uhr #26469
Ich auch.
-
Februar 9, 2021 um 21:38 Uhr #26471
OK, und was ist mit einer abgespeckten Version:
on hiliteChanged if the hilite of me then if the environment = "mobile" then mobileVibrate 1 else set the hilite of me to false answer "Bitte wähle, in welchen Abständen Du an das Trinken erinnert werden willst" end if end if end hiliteChanged
Auf der mobilen Platform wird das HILITE nicht zurückgesetzt,
so daß man dort ZWEI Mal klicken muss!
Vielleicht liegt es daran?
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.