Kalender oder TimeLine

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Stuhli
Beiträge: 75
Registriert: 18.10.2004 10:05

Kalender oder TimeLine

Beitrag von Stuhli »

Hallo, ich versuch verzweifelt ein Programm zu erstellen, welches folgendes (grob) machen soll :

Ich habe 20 Autos, die ich verleihe (Stundenweise) In eine Tabelle oder Kalender möchte ich dies eintragen und abspeichern, so dass ich immer sehen kann, wann welches Auto verliehen wird/wurde.

Mit dem KalenderGadget ist ein kleiner Kalender möglich - Einträge darin nicht machbar
Ein ListIconGadget habe ich probiert, aber ich benötige 20 Reihen x (365 Tage x 24 Stunden) = Gadget mit 8760 Spalten - da mach der PC nicht mit.

Das wäre sicherlich die idealste Lösung. Ins Gadget klicken und markieren, wann das Auto weg ist. Sowas habe ich schon in einer Hotelsoftware gesehen, wo Zimmer vermietet werden. Jedoch ist das kein Problem, weil die für ganze Tage vermietet werden und damit ein ListIconGadget nur 365 Spalten benötigt.....

Hat jemand eine andere Idee, wie man sowas realisieren kann ? Wo ist die Grenze des Gadegets ?
SYNTAX ERROR IN 30! TYPE MISMATCH
Benutzeravatar
man-in-black
Beiträge: 362
Registriert: 21.08.2006 17:39

Re: Kalender oder TimeLine

Beitrag von man-in-black »

Hi,

interessant ist eigentlich die Frage, wie viele Infos du auf einmal wirklich sehen/gedanklich verarbeiten kannst?
Bei der Masse an Daten wirst du "rausgezoomt" keine Details erkennen können. Ergo "zoomst" du auf z.B. eine Monatsansicht
runter. Das ist dann mal so eben 1/12 der ursprünglichen Menge.

Eine Jahresansicht ist mMn nurnoch dann sinnvoll, wenn du Infos zusammenpackst (Farbskala für Gesamtauslastung pro Tag) oder die Übersicht auf ein Fahrzeug beschränkst.
Im letzten Fall müsstest du aber auch den Tag auf grobe Stundenblöcke (vormittags,... -> weniger Zeilen), ... runterbrechen.

Wenn du viel Zeit reinstecken magst, dann bau dir was eigenes mit dem Canvas und stelle wirklich nur das dar, was auch gerade benötigt wird (a la streamen).
Einfacher wäre es jedoch, wenn du 3 Listen (Gadgets) gleichzeitig führst/zeigst: Jahresansicht (stark zusammengefasste Infos), Monatsansicht (kaum zusammengefasst) und Tagesansicht (alle Details).
Ein Klick auf eine der LIsten passt die Infos der anderen an.


MFG
MIB
(hab alles, kann alles, weiß alles!!^^)

Bild
Benutzeravatar
Stuhli
Beiträge: 75
Registriert: 18.10.2004 10:05

Re: Kalender oder TimeLine

Beitrag von Stuhli »

Auch eine interessante Herangehensweise.... :)

Die Sache ist ja, dass die Autos auch mal später gebucht/reserviert werden und dann dort hin gescrollt werden soll. Anzeigen muss ich nur den aktuellen Tag und die 15 Tage davor und danach. Also ca. 30 Tage auf einem Blick, mit der möglichkeit nach rechts weiter zu scollen. Ein ScrollAreaGadget wäre da schon gut. Darauf ein Canvas oder ListIcon. habe gerade nochmal probiert. 20 Reihen mit 8120 Spalten wird nix. 8120 Reihen mit 20 Spalten ginge. Also senkrecht scrollen..... :|

Ich muss aber auch reinklicken können und die Tage mit der Maus markieren können, was beim Listicon nicht geht.

Bild

sowas wäre prima
SYNTAX ERROR IN 30! TYPE MISMATCH
H.Brill
Beiträge: 356
Registriert: 15.10.2004 17:42
Wohnort: 66557 Neunkirchen

Re: Kalender oder TimeLine

Beitrag von H.Brill »

Vielleicht kannst du dir hier
https://www.heise.de/download/products/ ... rminplaner
ein paar Anregungen holen.
PB 5.60
Andesdaf
Moderator
Beiträge: 2658
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: Kalender oder TimeLine

Beitrag von Andesdaf »

vielleicht ja auch irgendwie so...

Code: Alles auswählen

EnableExplicit

Define.i iEvent,
         i,
         iWidth,
         iOldState,
         iState

LoadFont(0, "Arial", 6)

SetGadgetFont(#PB_Default, FontID(0))

If OpenWindow(0, 0, 0, 800, 500, "Test", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
  ListIconGadget(0, 0, 0, 800, 485, "", 0,  #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
  ScrollBarGadget(1, 0, 485, 800, 15, 0, 127, 32)
EndIf

iWidth = GadgetWidth(0) - 50

AddGadgetColumn(0, 0, "#", 45)
For i = 0 To 31
  AddGadgetColumn(0, i + 1, Str(i + 1), iWidth/32)
Next i

For i = 0 To 20
  AddGadgetItem(0, i, "Auto " + Str(i))
Next i

Repeat
  iEvent = WaitWindowEvent()
  
  Select iEvent
    Case #PB_Event_Gadget
      Select EventGadget()
        
        Case 1
          iState = GetGadgetState(1)
          If iState > iOldState
            RemoveGadgetColumn(0, 1)
            AddGadgetColumn(0, 32, Str(Val(GetGadgetItemText(0, -1, 31)) + 1), iWidth / 32)
          ElseIf iState < iOldState
            RemoveGadgetColumn(0, 32)
            AddGadgetColumn(0, 1, Str(Val(GetGadgetItemText(0, -1, 1)) - 1), iWidth / 32)        
          EndIf
          iOldState = iState
          
      EndSelect
  
  EndSelect
  
Until iEvent = #PB_Event_CloseWindow
nur so als kurze Idee...
Win11 x64 | PB 6.00 (x64)
Benutzeravatar
TroaX
Beiträge: 659
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
Wohnort: NRW
Kontaktdaten:

Re: Kalender oder TimeLine

Beitrag von TroaX »

Bei deinem Vorhaben ist eben das große Problem, das du das ganze Stundenweise benötigst. Dein Screenshot zeigt es aber in Tagen an. Ich würde den Kompromiss eingehen und mir bei einer Stundenansicht mir die Monate einzeln anzeigen lassen.

Wenn du aber das ganze Jahr willst, gibt es im Grunde nur 3 Möglichkeiten:
1. Mit Canvas ein eigenes Control zeichnen (sehr viel arbeit)
2. Auf Drag and Drop Markierungen verzichten und für die Dateneingabe eine Maske verwenden. Dann kannst du auch mit ListIconGadget arbeiten. Dann kannste aber nur vertikal scrollen (zu viele Spalten mag das Gadget einfach nicht). Und selbst dann geht es noch tierisch auf die Pumpe des Rechners.
3. Einfach das Webgadget verwenden und auf eine fertige Javascript-Library setzen. Mit SetGadgetItemText kannst du das HTML sowie den JS-Code in das Gadget streamen. Mit SetGadgetAttribute und dem Flag #PB_Web_NavigationCallback kannst du dann ein Callback einbinden, welches immer #False zurückwirfst. Die Daten sendest du aus dem Gadget dann einfach per URL als Get-Parameter. Alternativ (so würde ich es dann machen) schreibst du mit dem Atomic-Webserver einen kleinen Server, mit dem sich die Daten deutlich einfacher und eleganter mit dem PB-Backend austauschen lassen. (In der Summe ist Nummer 3 zwar keine Lösung, die jeder empfehlen würde. Aber ich habe das auch schon oft so gemacht, da ich persönlich für Benutzeroberflächen mittlerweile Webstandards vorziehe. Man hat einfach viel viel viel mehr Möglichkeiten).

Den Atomic Webserver findest du in den Purebasic-Examples im Ordner "Sources - Advanced". Als Timeline-Bibliothek wären folgende brauchbar:
visjs: http://visjs.org/timeline_examples.html
timelinejs: http://timeline.knightlab.com/
timesheetjs: https://sbstjn.com/timesheet.js/
chronoline.js: http://stoicloofah.github.io/chronoline.js/ (<- Wäre gerade für deinen Einsatzzweck genial)
Und es gibt noch sehr viel mehr!
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box :lol:
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: Kalender oder TimeLine

Beitrag von Mijikai »

Zur Idee von Andesdaf
ListView Einträge bearbeiten:
http://www.purebasic.fr/german/viewtopic.php?t=20818

__________________________________________________
Domain angepasst
16.07.2017
RSBasic
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Re: Kalender oder TimeLine

Beitrag von hjbremer »

hier eine Anregung:
pro Auto sind problemlos 5 - 10 Jahre möglich. Dies entspricht ca 1800 bzw. ca 3600 Zeilen
Pro Auto wird eine Datei angelegt. Wird ein Auto entfernt, wird die Datei nicht gelöscht.

Code: Alles auswählen

;PB 5.60 x64 by HJ Bremer
dieses Programm wurde entfernt, da der Hilfe Suchende sich offensichtlich nicht dafür interessiert.

Man sollte sich ernsthaft überlegen ob man überhaupt noch Hilfestellung leistet. 

Ernsthafte Hilfe in Form von größerem Ausmaß ist nunmal nicht in wenigen Minuten/Stunden zu leisten.
Auch wenn wenige sich dies so vorstellen.
PS: Sollte wider erwarten, sich ein Anderer für dieses Problem erwärmen, bin ich gerne bereit ihm meine Idee zu mailen.
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Antworten