Commit graph

14 commits

Author SHA1 Message Date
Aaron Fenyes
5ce5f855d5 Make element vectors reactive 2024-11-01 19:01:14 -07:00
Aaron Fenyes
bbeebe4464 Simplify memos 2024-11-01 04:43:30 -07:00
Aaron Fenyes
fb292d8b5b Render constraint lists dynamically 2024-11-01 04:32:33 -07:00
Aaron Fenyes
5b522c12ee Include vector representation in element diff key 2024-10-31 01:23:22 -07:00
Aaron Fenyes
1f3a6eea3b Round element vectors to three decimal places 2024-10-30 23:57:15 -07:00
Aaron Fenyes
0a13c062f4 Flag constraints with invalid input 2024-10-30 21:12:40 -07:00
Aaron Fenyes
df6db983ba Factor out element outline item 2024-10-30 16:01:19 -07:00
Aaron Fenyes
7f595ff27a Factor out constraint outline item 2024-10-30 15:49:01 -07:00
Aaron Fenyes
9e31037e17 Spread web-sys imports over multiple lines 2024-10-30 00:19:44 -07:00
Aaron Fenyes
c2e3c64d4a Remove debug log from Lorentz product input 2024-10-30 00:16:34 -07:00
Aaron Fenyes
76ad4245d5 Factor out Lorentz product input 2024-10-29 23:43:41 -07:00
Aaron Fenyes
a46ef2c8d6 Work around data binding bug in number input
Setting `bind:value` or `bind:valueAsNumber` for a number input seems to
restrict what you can type in it. We work around this by switching to
text inputs for now. We should probably switch back to number inputs if
we can, though, because they let us take advantage of the browser's
parsing and validation.
2024-10-29 22:53:48 -07:00
Aaron Fenyes
e0880d2ad2 Make constraints editable 2024-10-29 22:32:00 -07:00
86fa682b31 feat: Application prototype (#14)
Creates a prototype user interface for dyna3 in the `app-proto` folder. The interface is dynamically constructed using [Sycamore](https://sycamore.dev).

The prototype includes:

  * An application state model (the `AppState` type)
    * A constraint problem model (the `Assembly` type), used in the application state
  * Two views
    * A 3D rendering of the assembly (the `Display` component)
    * A list of elements and constraints (the `Outline` component)

The following features confirm that the views can reflect and send input to the model:

  * You can select elements by clicking and shift-clicking them in the outline. The selected elements are highlighted in the display.
  * You can add elements using a button above the outline. The new elements appear in the display.

Co-authored-by: Aaron Fenyes <aaron.fenyes@fareycircles.ooo>
Reviewed-on: glen/dyna3#14
Co-authored-by: Vectornaut <vectornaut@nobody@nowhere.net>
Co-committed-by: Vectornaut <vectornaut@nobody@nowhere.net>
2024-10-21 23:38:27 +00:00