Commit Graph

623 Commits

Author SHA1 Message Date
Felix Zedén Yverås
67851dad8f fix: reduce jitter by disabling pointer events on line 2024-07-17 22:22:52 +02:00
Felix Zedén Yverås
e4e22dee20 fix: rewrite coordinate management
After some initial smaller fixes, it turned out that I had broken
the red line used when linking fields. Fixing this was not trivial
as I found myself battling a lot of small bugs relating to scale
and translation in the existing code. This was made extra difficult
as a lot of coordinates were calculated when necessary in
Canvas.jsx.

This commit attempts to simplify the coordinate management in a few
different ways:
* There are now two distinct coordinate systems in use, typically
  referred to as "spaces". Screen space and diagram space.
* Diagram space is no longer measured in pixels (though the
  dimension-less measure used instead still maps to pixels at 100%
  zoom).
* The canvas now exposes helper methods for transforming between
  spaces.
* Zoom and translation is now managed via the svg viewBox property.
  * This makes moving items in diagram space much easier as the
    coordinates remain constant regardless of zoom level.
* The canvas now wraps the current mouse position in a context
  object, making mouse movement much easier to work with.
* The transform.pan property now refers to the center of the screen.

A new feature in this commit is that scroll wheel zoom is now based
on the current cursor location, making the diagram more convenient
to move around in.

I have tried to focus on Canvas.jsx and avoid changes that might be
desctructive on existing save files. I also believe more refactors
and abstractions could be introduced based on these changes to make
the diagram even easier to work with. However, I deem that out of
scope for now.
2024-07-17 22:22:52 +02:00
Felix Zedén Yverås
32c82168fe feat: add debug coordinate overlay
Makes debugging issues in conversion from screen space
to diagram space easier.

Only adding english translations as I do not speak the
other languages.
2024-07-14 15:36:54 +02:00
Felix Zedén Yverås
354ea47529 fix: validate transform data before storage
During testing I accidentally managed to submit `NaN` as a pan
coordinate. This had the unfortunate side effect of bricking the
editor.

Given the serverity of an accidental `NaN` and that `NaN`s are not
impossible considering the amount of math involved in mouse move
operations, this commit introduces a simple validation step.

The new validation step should additionally be able to unstuck
anyone who have happened into this state by accident already.
2024-07-14 15:36:54 +02:00
Felix Zedén Yverås
cdecf7c633 feat: add basic touchscreen support
This is basically a migration from mouse events to
[pointer events](
  https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events
).

The `PointerEvent` interface inherits all of the `MouseEvent`
properties, meaning that existing code can essentially be left
as-is. The only major change is making sure we only respond to the
"primary" pointer.

Known issues include:
* stylus hover is not detected
* touchscreens do not have a concept of hover, making it difficult
  to e.g. resize areas
* no touch gesture support, e.g. "pinch-to-zoom"
2024-07-14 15:36:54 +02:00
Felix Zedén Yverås
075a98d444 fix: remove unused ref 2024-07-14 15:36:54 +02:00
Felix Zedén Yverås
caae8e7385 fix: improve support for browsers with collapsing url bars
Some mobile browsers (e.g. chrome) uses collapsing url bars (the
bar collapses when you scroll). In such cases, `100vh` typically
refers to the full height of the viewport when the url bar is
collapsed (see also `svh`, `lvh` and `dvh`, e.g. at
<https://ishadeed.com/article/new-viewport-units/#the-small-large-and-dynamic-viewport-units>
). This meant that on my tablet, the editor would extend below the
visible page until I scrolled it into view.

This commit re-uses a fix from some of my other projects
(specifically
<5c7e788d40/src/styles/globals.css (L14-L28)>
) where the root element is set to fill 100% height. This avoids
dealing with viewport units altogether. On my tablet, this means
that the url bar is visible and that the editor does not extend
below the visible page.
2024-07-14 15:36:54 +02:00
lilit
4a7d312e2a
Merge pull request #153 from FelixZY/fzy/url/1
fix: update remaining vercel urls to drawdb.app
2024-07-14 00:45:53 +04:00
Felix Zedén Yverås
95e84705fb fix: update remaining vercel urls to drawdb.app
@1ilit started making similar changes in 4cc0811.

This commit performs a full search and replace for
`drawdb.vercel.app` to `drawdb.app`, fixing remaining "bad" urls.
2024-07-13 12:58:36 +02:00
1ilit
a459f36f58 Fix increment being deleted when type is updated 2024-07-10 21:23:30 +03:00
1ilit
84abae7d06 Save database type and enums for templates 2024-07-08 11:54:04 +03:00
1ilit
6fee6553f1 Remove unnecessary commas in export index statements 2024-07-08 04:22:44 +03:00
1ilit
159dcca4dc Fix import diagram 2024-07-08 04:03:41 +03:00
1ilit
09f9117b72 Remove unused console.logs 2024-07-08 03:39:01 +03:00
1ilit
f682abdafe Fix import index for postgres 2024-07-08 03:34:01 +03:00
1ilit
52455a75d0 Make databases a proxy 2024-07-08 03:21:43 +03:00
1ilit
c84990ca6d Fix loading the diagram on open to load in types and enums 2024-07-08 02:18:12 +03:00
1ilit
c907cfea47 Add database icon to diagrams 2024-07-08 02:09:51 +03:00
1ilit
7c7177c402 Update landing page 2024-07-08 01:58:16 +03:00
1ilit
4cc0811bc1 Update README to have twitter link and new url 2024-07-08 01:51:46 +03:00
1ilit
aecc5a134e Fix choose database not showing on first ever diagram 2024-07-08 01:42:48 +03:00
1ilit
322bb6e988 Merge branch 'main' into select-db
# Conflicts:
#	src/i18n/locales/en.js
#	src/utils/exportSQL/generic.js
2024-07-07 17:57:33 +03:00
1ilit
d5568c42bf Fix scrollbar height and corner 2024-07-07 17:21:54 +03:00
1ilit
9e2bb48fb8 Fix quotes on columns in checks 2024-07-07 16:55:04 +03:00
1ilit
897c125e3b Import from mssql 2024-07-06 21:45:51 +03:00
1ilit
982cac1d3a Remove types from mssql 2024-07-06 16:12:09 +03:00
1ilit
a3976bf250 Export mssql 2024-07-06 14:52:42 +03:00
1ilit
1580641e97 Delete types and enums on clear 2024-07-05 22:29:42 +03:00
1ilit
c005020048 Add option to declare an array 2024-07-05 22:28:44 +03:00
1ilit
9b606114df Rename TablesContext to DiagramContext 2024-07-04 23:18:20 +03:00
1ilit
3b1af3772e Add empty enums illustration 2024-07-04 23:06:09 +03:00
1ilit
a7fd4ec416 Fix select db modal opening after close 2024-07-04 20:57:06 +03:00
1ilit
d00c21b2e3 Add MSSQL types 2024-07-04 19:42:11 +03:00
1ilit
d7025e1ff1 Add error checking for enums 2024-07-04 02:10:24 +03:00
1ilit
d48ccfff4b Add enums to select types 2024-07-03 21:54:46 +03:00
1ilit
7c1eecd7a0 Undo and redo enum editing 2024-07-03 21:21:44 +03:00
1ilit
1430db881c Export and import enums in diagrams 2024-07-03 13:25:24 +03:00
1ilit
219a5a877b Fix UNIQUE not added in postgres 2024-07-03 03:27:36 +03:00
1ilit
61d97e8143 Import implicit foreign keys 2024-07-03 03:08:53 +03:00
1ilit
c1f651cb54 Clean up postgres export 2024-07-03 00:33:23 +03:00
1ilit
3c1e72fbdd Export enums to sql 2024-07-02 23:26:45 +03:00
1ilit
55295a6790 Add FUNDING.yml 2024-07-02 13:18:38 +03:00
1ilit
dd2aafe80b Import enums from source 2024-06-30 15:38:25 +03:00
1ilit
5b18b02946 Fix db names on open modal 2024-06-30 13:36:57 +03:00
1ilit
85ccb19d8f Show info icon only for generic diagrams 2024-06-30 13:22:34 +03:00
1ilit
810afe4bc0 Add enums tab 2024-06-30 13:19:21 +03:00
lilit
9acc619d47
Merge pull request #137 from huyjs9/feat/search-nested-fields-tables
Search nested fields in tables
2024-06-27 11:55:48 +03:00
1ilit
259835892a Fix add field for types to work with dbToTypes 2024-06-27 11:34:21 +03:00
1ilit
d79b0c205d Return types after import 2024-06-27 11:12:09 +03:00
1ilit
9e2684e7a9 Swap INTEGER for INT in generic diagrams to maintain backward compatibility 2024-06-25 02:07:57 +03:00