Warning
Read this instructions before using to use it in the best way.
Please use Conventional Commits for commits.
Once you've installed dependencies with npm install, start a development server:
npm run dev
# or start the server and open the app in a new browser tab
npm run dev -- --openTo create a production version of your app:
npm run buildYou can preview the production build with npm run preview.
(non si possono editare i messaggi dopo 48 ore)
- UML
- Associations creation
- Association classes
- Generalization creation
- Validated UML (no two attributes with same name, no two classes with same name etc...)
- "is identifier" isn't enough, you need to be able to specify an optional id number
- Add support for use-case diagram
- Add support for instances (links and objects), and arrows that connect instances to classes (dashed)
- Functionality
- Import JSON
- Export JSON
- GitHub action that compiles the website to HTML and publishes it to GitHub Pages
- Offline application (with a ServiceWorker or something, if it's enough to download the html even better)
- An option would be to release a zip with the html files, and a python script that serves the files or something
- Create a
confglobal object-
fontSize,gridSize, -
fontFamily,defaultStyleetc...- Menu to edit config (settings)
-
- Keep history of changes in order to go back and forth (JSON TO STACK)
- Remove grid and stuff when exporting JSON (and export just the graph components)
- Add support for exporting only selected items
- Save history to
localStorage
- UI
- Snap class dimensions to grid
- The
widthandheightare multiples ofconf.gridSize * 2 - The
widthis at least the length necessary to show the attributes / operations and at most thewidthchoosen by the user (and snapped) - The
widthandheightare the least length necessary to keep all links on
- The
- Icons tooltips
- UI for selection
- Bring selection rectangle to the foreground
- Highlight selected items
- Adjust UI (font sizes of stuff etc...)
- Update paper size when window is resized
- Association delete button (or something) when association is selected (and is only one)
- Add fixed points to associations (and generalizations)
- Create icon for project, change name to something nicer (rebranding)
- Make
PropertyInspectorresizable (fix: made it float over the paper, and changes size based on content) - Where possible (all items selected have the same style), show currently selected style
- Possibility to add / select custom colors
- Class, also change divider stroke color
- Class, separate color for title and body
- Fix association labels
- Snap class dimensions to grid
- UX
- When creating a class, open the menu of the class
- Shortcuts lik Ctrl+S to save JSON, and shortcuts for tools
- Better operations and attributes handling (specify name, type, multiplicty, whether it has id or not etc...); the goal is to show different info with different styles (bold for type, italics for {id} etc...)
- If the rectangles of two classes overlap, move them in order to not overlap anymore
- Option to move an attribute from one class to another
- Filter empty attributes
- Ability to change attributes order
- Ability to select multiple objects
- And change common properties of selected objects
- Use
localStoragein order to remember diagram JSON - Instead of moving when clicking with mouse, start selection (in selection mode)! In selection mode move only when mouse wheel is clicked (this second part is missing)
- Add README description, otherwise people don't know how to use it correclty
- Allow copy, paste + delete key (or backspace) shotcut to remove object
- When pasting, paste on mouse position
- When pressing Esc, all stuff closes and deselects
- For now it deselects
- It must close menus too
- Store
zoomtolocalStorage, load on start - Always on hints under tool selection on usage (small, gray, with
<code></code>too for some keys like Ctrl), maybe add possiblity disable hints - Handle association and generalization moving from one port to another
- If a port is connect to an association, there aren't other links to that port; it's either multiple generalizations or one association
- Move selected items in tandem
- If shift pressed while selecting, select multiple compoments (otherwise deselect only clicked)
- Edit class name on double click
- Ctrl +, Ctrl - for zoom
- Fake class when dragging (not needed anymore, double click to create a class)
- Instructions when opening first time (use
localStorageto remember to hide), + show help button (show help button could be enough, after github button) - Fix double click on association (it both creates a vertex and opens the menu; it works well on labels, but not on edge)
- Store paper
translationtolocalStorage, load on start - Add shortcut "+" to add attributes in class!
- focus on newly created attribute when adding an attribute (/ operation)
- move to center of diagram instead of translate 0 0
- highlight currently edited attribute in diagram (maybe one could zoom in the diagram position of the thing)
- when exporting svg, remove the ports!
- please do the png export
- BUGS
- When resizing graph disappears (fixed: I didn't have to call .render() after setting the new dimensions, it did that autmatically)
- Cancel button not working
- Update
localStorageon deletion of elments too (or debug it at least) - Association label resize width on content change
- Fix slow input when editing attributes and operations (i.e. save just after typing, not before)
- The smaller the zoom gets, the worse the panning becomes (it's all jittery)
- When moving multiple selected elements, it gets slow
TODO:
- reduce minimum zoom to 40
- dashed line
- use-case
- actor
- object
- link
- instanceOf
- 2 toolbar lines: one for objects-like things, one for link-like things... nah