Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Verschieben der Zeichenfläche und undo/redo #5

Open
hanspi42 opened this issue Sep 17, 2020 · 4 comments
Open

Verschieben der Zeichenfläche und undo/redo #5

hanspi42 opened this issue Sep 17, 2020 · 4 comments
Labels
bug Something isn't working

Comments

@hanspi42
Copy link
Owner

Vorgehen:

  1. Graph erzeugen (Bsp: Graph g2.json laden)
    image1
  2. Graph mit der Operation Graph transposition transponiert
  3. Verschieben der Zeichenfläche (mit Mouse-Down)
  4. Undo
    image2

Die Stützstellen der Spines werden nicht richtig zurückgesetzt, aber es sind nicht einfach die alten Positionen, denn sonst würde der resultierende Graph anders aussehen. Es sieht aus wie wenn die Stützstellen durch das Undo in die falsche Richtung verschoben werden.

g2.zip

@hanspi42
Copy link
Owner Author

@dgruntz commented:

Das ist nicht ein Problem der Operation Graph transpose sondern ein Problem des Verschiebens der Zeichenfläche und undo/redo falls in den Operationen absolute Positionen gespeichert werden.

Beispiel:

  1. Erzeugen eines Graphen mit zwei Knoten und einer Kante
    i1
  2. Löschen der Kante (über den Button Remove)
  3. Verschieben der Zeichenfläche
  4. Undo
    i2

Ich habe eben diese beiden Graphen vor dem Verschieben und nach dem Verschieben gespeichert.

Vor:

{
    "nodes": [
        {
            "id": "eab72ffbe4ae488bb4f0e1bd940cbf3f",
            "label_dx": 0,
            "label_dy": 30,
            "name": "",
            "x": 225,
            "y": 189
        },
        {
            "id": "8720b7f971ca4cc181faefdb4acf35f9",
            "label_dx": 0,
            "label_dy": 30,
            "name": "",
            "x": 375,
            "y": 189
        }
    ],
    "branches": [
        {
            "id": "8eda363a4df04a09b8d8f302cc893d99",
            "weight": "",
            "start": "eab72ffbe4ae488bb4f0e1bd940cbf3f",
            "end": "8720b7f971ca4cc181faefdb4acf35f9",
            "label_dx": 0.0,
            "label_dy": 30.0,
            "spline1_x": 158.0,
            "spline1_y": 78.0,
            "spline2_x": 158.0,
            "spline2_y": 78.0
        }
    ]
}

Nach:

{
    "nodes": [
        {
            "id": "eab72ffbe4ae488bb4f0e1bd940cbf3f",
            "label_dx": 0,
            "label_dy": 30,
            "name": "",
            "x": 83,
            "y": 78
        },
        {
            "id": "8720b7f971ca4cc181faefdb4acf35f9",
            "label_dx": 0,
            "label_dy": 30,
            "name": "",
            "x": 233,
            "y": 78
        }
    ],
    "branches": [
        {
            "id": "8eda363a4df04a09b8d8f302cc893d99",
            "weight": "",
            "start": "eab72ffbe4ae488bb4f0e1bd940cbf3f",
            "end": "8720b7f971ca4cc181faefdb4acf35f9",
            "label_dx": 0.0,
            "label_dy": 30.0,
            "spline1_x": 158.0,
            "spline1_y": 78.0,
            "spline2_x": 158.0,
            "spline2_y": 78.0
        }
    ]
}

d.h. die Knoten wurden verschoben, aber die Stützpunkte beim Branch wurde nicht geändert, und das führt (irgendwie) zum Problem.

@einfach3 , @naaeef: Was haben die Werte sprline1_x etc für eine Bedeutung? Sind das relative Werte oder absolute Werte? Falls relativ : Zu was werden sie addiert?

Damit der Ansatz funktioniert müssen alle Werte, welche in den Operationen gespeichert werden, relativ sein.

@hanspi42
Copy link
Owner Author

@einfach3 commented:

Die Positionen der Kontrollpunkte/Splines werden absolut gespeichert. Das Verschieben der Zeichenfläche verändert die Position jeder Node und die Positionen der Kontrollpunkte - es wird kein Offset für die Zeichenfläche genutzt. Daraus ergibt sich das beschriebene Problem, dass eine Undo Operation nach dem Verschieben noch die Werte der Kontrollpunkte vor dem Verschieben der Zeichenfläche verwendet.

Dieses Problem sollte z.B. durch die Verwendung eines Offsets für die Zeichenfläche behoben werden können.

@hanspi42
Copy link
Owner Author

@naaeef commented:

Das Offset könnte dann ebenfalls in die JSON-Datei gespeichert werden. So würde der Graph wieder an der gleichen Position angezeigt werden wie zuvor. Dadurch könnte man auch verhindern, dass ein Graph durch massives verschieben der Zeichenfläche verloren geht (müsste zuerst auf der Zeichenfläche gesucht werden, wenn die Datei neu geöffnet wird).

@hanspi42 hanspi42 added the bug Something isn't working label Sep 17, 2020
@hanspi42
Copy link
Owner Author

Das könnte auch issue #10 lösen.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant