26.4
Teameinteilung:
Connor & Jette: Smart KGraphs
Mika & Bennet: Future Work vom letzten Projekt
3.5
Fortschritt
- Connor & Jette
- Installation erfolgreich
- Anpassung der KGraph Grammatik um eine Knotenreferenz
- Gespräch mit Alex um besser zu verstehen wie die SCCharts Synthese funktioniert
- Mika & Bennet
- Installation erfolgreich
- Angefangen sich einzuarbeiten und zu gucken was im letzten Projekt gemacht wurde.
sonstiges
- Felix nimmt auch am Projekt teil
- es wird diese Woche entschieden welchem Team er sich anschließen wird oder ob er ggf. an etwas eigenem arbeitet
17.5
Felix hat sich Bennet & Mika angeschlossen
Fortschritt
- Connor & Jette
- neues Thema: Übersetzung von imperativen Sprachen zu Datenflussdiagrammen an Beispiel von C
- Überblick verschafft welche Konstrukte noch fehlen
- loops
- pointer
- structs
- Niklas klärt, ob ein erneutes Proposal stattfinden soll
- Felix, Mika & Bennet
- Depthmap weiter angeguckt
- konzentrieren sich auf SMap
- wo wird diese überhaupt genutzt/geupdatet
- wollen debugging nutzen, um mehr darüber herauszufinden
25.5
Fortschritt
- Connor & Jette
- condition der while-loop als dataflow mit eigenem Kasten dargestellt
- versucht eine Option einzufügen, um auszuwählen, ob condition als Text oder dataflow angezeigt werden soll
- Felix, Mika & Bennet
- beim Auswerten welche Regionen collapsed werden müssen, werden nicht mehr alle Knoten aufgerufen. Dadurch ist die Performance besser geworden
- deprecated Code aufgeräumt
- nächstes Ziel: Struktur von depthmap nochmal angucken und die Eltern-Kind Beziehung schon beim Initialisieren erzeugen
am 2.6.: Zwischenvorstellung von Connor & Jette beim K-Meeting
31.5
Fortschritt
- Connor & Jette
serialisierung eingebaut
multiplexer
skin als kgt Datei gebaut
toPort annotation hinzugefügt
- Felix, Mika & Bennet
- Depthmap rewrite mehr oder weniger vorbei
- depth map sucht erst später nach parents und initialiesiert sie dann!(Mika Felix)
- parents werden jetzt sofort initialisiert
- neu bau ist schneller
- expand collaps wird nun pro graph nur einmal aufgerufen (Bennet) anstelle von 1 mal pro knoten
- rewrite expand collaps (da nun nur noch einmal aufgerufen)
- als nächstes:
- hinzufügen von nodes nur dann wenns nötig wird / sichtbar?
- im pullrequest hatte nre was geschrieben (nodes einfach nicht hinzufügen).
- nicht 100% notwendig fraglich obs unbedingt geändert werden muss
- rendering info nicht aus daten vom rendern sondern von dem smodel
- hinzufügen von nodes nur dann wenns nötig wird / sichtbar?
7.6
Fortschritt
- Connor & Jette
- statt mehrere Multiplexer beim while wird nur noch ein multiplexer benutzt (durch figure annotation)
- skin wird im Code erstellt (WIP)
- Felix, Mika & Bennet
- Code Together with live share
- Depthmap weiter aufgeräumt (Enums besser benutzt)
- ziel weniger html elemente generieren wenn elemente nicht angezeigt werden
- Probleme: rect region absolute bounds berechnung macht probleme
- corrolation zwischen kgraph und der angezeigten view im browser ist unklar
- niklas konnte aber einsicht über das layouting geben (automatischen verschieben, Position ist nicht 0,0 sondern eher zentriert)
- bsp. root 12,12 dann ein child mit 12,12 dann wird daschild bei 24,24 dargestellt...
- corrolation zwischen kgraph und der angezeigten view im browser ist unklar
- am anfang des renderns liegt der graph mit zoom 1 oben links dann wird nachträglich alles verschoben.
- schritte beim rendern
- rendern mit scalierung von 1
- danach screen fitt
- findboundsintransformationsdata (views-common.ts zeile 308) macht das was wir eigentlich wissen wollen (nur abhängig vom parrent!)
- Gespräch mit max lieferte erkäntnisse über actions in sprotty und dass wir mit einer action die depthmap aufbauen könnte!
14.6
Fortschritt
- Connor & Jette
- skin für multiplexer wird im code erstellt
- input ports beim multiplexer werden durch annotationen in 2 Gruppen aufgeteilt, allerdings gibt es noch keinen größeren Abstand zwischen diesen
- großer multiplexer wird jetzt auch im if-stmt benutzt
- als nächstes kommt break/continue
- Felix, Mika & Bennet
- In KLighD: Offset der Childareas direkt in die Koordinaten der Kinder einbeziehen
- Alle auf den selben KLighD-Branch bringen, d.h. eclipse neu aufsetzen
- Absolute Positionen können jetzt aus den relativen Positionen korrekt und direkt beim init der Depthmap berechnet werden
- Expand/collapse funktioniert jetzt auch mit diesen Positionen direkt aus dem SModel
- Jetzt: Visibility-Buffer entfernen, childareas auch für KEdges, KLabel etc. anpassen, Code aufräumen, depthmap in der updateModel action bereits initialisieren/updaten
- In KLighD: Offset der Childareas direkt in die Koordinaten der Kinder einbeziehen
21.6
Fortschritt
- Connor & Jette
- label vom multiplexer entfernt
- breite vom multiplexer angepasst basierend auf den labeln der ports (WIP)
- ein Kasten für break hinzugefügt zu dem die Variablen vor dem break stmt führen
- der output davon wird momentan noch für die nachfolgenden stmts benutzt, eig sollte das break quasi ignoriert werden für diese (WIP)
- multiplexer für break hinzugefügt (WIP)
- die eingänge die vom break kommen sitmmen schon, der Rest allerdings noch nicht
- das conditional das vom if-stmt kommt wird noch nicht inlined
- todo: Kontrolle dass es auch für verschachtelte if-stmts funktioniert
- Niklas Vorschlag: multiplexer und break box zusammenführen
- Felix, Mika & Bennet
- depthmap wird jetzt nur bei setModelAction und updateModelAction neugeneriert/geupdated
- Visibility Buffer ist entfernt
- KEdges und KLabels erhalten nun auch die korrekten Postionen der childareas, d.h. die Edges und Labels im Diagramm sind nicht mehr verschoben
- Mit den Bookmarks angefangen:
- Erste Version zum Hin-/und Herspringen zwischen Positionen per Knopfdruck steht
- Bookmarks werden zurzeit aber nicht längerfristig gespeichert, sondern nur bis zum nächsten Knopfdruck
- TODO: Bookmarks (auch mehrere) wirklich abspeichern
28.6
Fortschritt
- Connor & Jette
- break box und den dazugehörigen multiplexer vereint
- break state bekommt richtigen input
- Variablen die sich nicht verändern gehen nicht in den break state sondern direkt zum output des while states
- conditional vom break state ist inlined
- Serialisierung repariert
- todo: verschachtelte if-stmts und mehrere break-stmt in einem while
- Felix, Mika & Bennet
wir bleiben bei vscode da thea später als plugin in vscode genutzt wird!
migration almost complete
Vortrag am Mittwoch gesamt veranstalltung 9:30 tee 9:45 kmeeting
Folien überarbeiten!
- Zukunft:
- reinrauszoomen immernoch bei großen diagrammen so langsam das gebufferte sachen unschön sind
smothere animation!
gespeichertes model aufteilen!
30.6. KMeeting Bennet Mika Felix
- Neue Ideen:
- zoom actions zusammenführen Buffern nerft
- Gespeichertes Diagram für regions abhängig machen
- Update Model umschreiben sodass nur einzelne nodes angepasst werden (engere Zusammenarbeit mit Max)
05.07
Fortschritt
- Connor & Jette
- verschachtelte ifs:
- conditional wird inlined
- inputs werden fast richtig gesetzt (WIP)
- if-conditions werden verundet
- mehrere breaks:
- für jedes break wird ein state erstellt
- output von einem break wird ggf als input für das vorherige break benutzt
- break ohne input wird dennoch dargestellt, um zu visualisieren dass ein break nichts tut
- multiplexer von if-stmts ohne inputs werden nciht mehr dargestellt
- continue stmt wird genauso wie break umgesetzt
- 9.7 beim Tee vorstellen
- verschachtelte ifs:
- Felix, Mika & Bennet
- Pull Request Anmerkungen behandelt
- Childarea integration in Kinder position vom KGraph zum SModel verschoben
- Dabei Bug bei Positionierung der Decorations behoben
- Jetzt:
- Placeholder unter potenziellem Text platzieren
- Depthmap lazy Änderungen statt einmal Initialisierung am Anfang (Kompatibilität mit Max)
- isNodeTitle wird nicht korrekt gesetzt → fixen
13.07
Fortschritt
- Connor & Jette
- breaks
- inputs von break sind jetzt immer richtig
- conditions und break input wird nicht mehr dubliziert, wenn es für mehrere breaks gebraucht wird
pointer
pointeradresse einen neuen wert zuweisen funktioniert (*pointer = 20)
visualsierung dazu: variable die diesen speicherort hat wird der wert zugewiesen
methoden mit pointer als argument aufrufen funktioniert
- allerdings wird noch nicht unterschieden ob auf den pointer geschrieben wird oder nicht
- breaks
KMeeting 14.7.
(Vorstellung für kommende änderungen)
1. zoom actions zusammenführen Buffern nerft
-wäre schöner mit debounce bzw wenn man auf die queue zugreifen kann !!!
-sonst so gut und mit dem sprotty leuten kommunizieren
2. Gespeichertes Diagram für regions abhängig machen
-Problem da die linien sich scalieren
-wie weit rendering ein bootleneck ist ?
-ohne smartzoom vs mit -> wenn viel ausgeblendet ists gut sonst so lala
-stark rein zoomen parents werden gerändert -> aber nix was außerhalb ist
kann weggelassen werden wenn die queues passen!
3. Update Model umschreiben sodass nur einzelne nodes angepasst werden (engere Zusammenarbeit mit Max)
-regions sollten nach und nach hinzugefügt werden ? -> Nachladen von einzelenen Graph elementen
- Share Feature für Bookmarks
- Größe Der Lupen (Gesamt größeund & Viewport Zoom) -> werden teilweise sehr groß
-Lupen haben Keine Klick funktionalität wäre aber schön ?
-Mehrwert von Lupen ist fraglich -> was ist eine andere option? bisher keine bessere idee
-vieleicht bei linguafranka orientieren
- Laden braucht Lange!
- Große Regionen und der Titel sollte dann größer sein
- (Original Layout -> topdown würde helfen! -> Viele Deklarationen sind auch problematisch!)
- TOP Down Ansatz wie wird damit umgegangen ?
- Transparenter Region Titel im hintergrund aber Größer
- Ist die RegionÜberschrift gleich Groß (Regions abhängig)? Warum haben größere Blocks nicht größere Texte haben ?
- Optische text größe mit upper bound wird kleiner wenn kein platz da ist.
- Unterschiedlich große Regionen sind eher unschön ! Top Down Layout würde das lösen !
- Gleichmäßiges aufteilen von zeilen und spalten PT21 sehr klein weil wenig drinne ist -> TOP DOWN wie groß macht man die
- Sachen vor dem zoom lesbar solten auch nach dem zoom lesbar sein !
-nicht zu früh ausblenden !
-anomalie sollte man lösen !
-morphin/overlay als Lösung ?
26.07
Fortschritt
- Connor & Jette
- pointer
- Funktionen haben Pointer nur als Output, wenn diese auf den Pointer geschrieben haben
- Compound-Stmts haben Pointer als Output, wenn eine Funktion mit dem Pointer aufgerufen wird, der den Pointer verändert
- pointer in compound stmts funktionieren allgemein, auch wenn pointer erst in diesen deklariert wird
- globale Variablen werden unterstützt
- bisher nur primitive Datentypen erlaubt
- jede Funktion die eine globale Var benutzt bekommt diese als Input
- jede Funktion die auf globale Variable schreibt, bekommt diese als Output
- Funktionen die solche Funktionen aufrufen, bekommen entsprechend die globalen Variablen auch als Input/Output
- Reihenfolge der Funktionsdefinitionen im C-Code ist irrelevant
- structs
- struct Definitionen funktionieren
- man kann mit "struct.field" auf die einzelnen Felder zugreifen und schreiben
- Array als struct field → hierbei werden Arrays als struct fields wie multidimensionale Arrays visualisiert
- Schreibweise "pointer → struct field" funktioniert
- structpointer können als Parameter von Funktionen benutzt werden
- compound stmts haben richtigen Output, auch wenn das struct field ein Array ist
- todo: struct Visualisierung ist noch nicht ganz fertig
- n-dimensionale Arrays
- Schreiben auf multidimensionale Arrays funktioniert jetzt
- Lesen aus multidimensionalen Arrays wurde verbessert, so dass es nicht mehr auf dem Fall für Unsupported AST-Nodes beruht
- Label der Condition-Box des whiles angepasst
- Klammern auf der linken Seite eines Assignments werden berücksichtigt
- pointer
- Felix, Bennet & Mika:
- Bookmark URL implementiert
- Bookmark copy to clipboard angefangen
- Options Veränderungen triggern jetzt kleinen redraw ohne neues Layouting
- Transparenter Text erst verworfen und jetzt wieder aufgenommen:
- Titel sollte bis zu einem gewissen Punkt größer und überlappend dargestellt werden
- Titel braucht dafür ein Hintergrundfeld für die Lesbarkeit
- Placeholder sind immer noch nicht vernünftig scaliert
- Setzte für die Lupe eine feste Größe fest und mache sie nicht direkt abhängig von der Größe der Region
- Das initialisieren der Regionen der Dephtmap funktionert jetzt lazy
- zusätzliche Idee: Bei Änderungen im Editor sollte nur der tatsächliche Unterschied (DIff) neu gerendered werden