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...)
- For this, create a bar somewhere with a list of "warnings" and errors. This is a global list (or set? for each error one could have a key, in order to not have duplicates somehow). This can contain both "object-specific warnings" (which are obtained from the graph), and global graph warnings (like "no two classes with the same name"); At this point, maybe, one should be able to se the "object id" on the bottom line, or, at least have a visual indication of the problematic object (technically not too hard to do! Just get the element from the graph).
- "is identifier" isn't enough, you need to be able to specify an optional id number
- Now that I think about it! An attribute can have a
listof identifiers! Not just a "possible identifier"
- Now that I think about it! An attribute can have a
- Add support for use-case diagram
- Add support for instances (links and objects), and arrows that connect instances to classes (dashed)
- Add support for packages! Allow nesting and stuff, and naming (top
left bar, min size the length of the text multiple
gridSize* 2!) - Add support for "references" (or views?). Like, you can reference a class, and,
when the original is updated, also the reference view is updated.
- Something similar would be super cool for associations too, like you could "reference" a portion of a diagram; You can set the style for "references" in the configuration or something. This way all references are autmatically similar (unless one sets a specific value for the style on some attribute)
- Add shared composition (aggregation and stuff) for design.
- Add stereotypes handling (where? on association roles <>, class names <>, <>)
- 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)
- Make it importable, or save it to localStorage (instead of hardcoding it; in case, just put default values)
- Maybe make a menu to edit it!
- Rename variable to "diagramConfig" (could it be diagram specific? Yeah, it would be better)
-
- Keep history of changes in order to go back and forth (JSON TO STACK) (spoiler! I didn't user JSON hahahaha! It's too slow, it took me way too much to use cloning!)
- Remove grid and stuff when exporting JSON (and export just the graph components)
- Add support for exporting only selected items
- Save history to
localStorage(I chose NOT to save it in the localStorage! Sorry not sorry, too much performance loss)- Re-evaluate this... already making the history work is too demading!
- Maybe one could have "not save change" by default, unless a
specific component variable is set to true, like "for this action, do
save"; nah, it looks like bad design, one should just limit the
updates in the inspectors to the strictly necessary, and ignore stuff
like
tempLinktheselectionwindow, etc.
- Add "reference lines" or points... when you move an object, you
should be able to see where it aligns with objects (at least the corners and the middle)
- When you create a link, you should be able to see the evenly spaced segments of the rectangle (with highlightend points on the perimeter)
- 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 height depends on the size of the class name (if it has multiple rows)
- 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)
- The name part is done; i really like
uml-editor(asUML editor).
- The name part is done; i really like
- Make
PropertyInspectorresizable (fix: made it float over the paper, and changes size based on content)- Now that I think about it, I want only "properties" on the property inspector (as in the "definition" of class, or the values of the roles in associations); Colors and stuff should be handled by selection (like, when you select items, it opens a menu with the common style configuration)
- 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 (DISCARDED I guess? It's way too easy to just double click... opening the menu could be breaking the workflow for the user).
- 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- Maybe it could be a good idea to have "textual" buttons instead of icons. Icons are too hard to differentiate for similar stuff (eg. JointJSClass and JointJSObject).
- 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! (NOT NEEDED ANYMORE! We just have text, text, text! It's way easier to work with).
- focus on newly created attribute when adding an attribute (/ operation) (NOT NEEDED ANYMORE! We just have text, text, text).
- move to center of diagram instead of translate 0 0 (maybe? Also when reloading the page?)
- highlight currently edited attribute in diagram (maybe one could zoom in the diagram position of the thing)
- when exporting svg, remove the ports! (We don't use ports anymore)
- 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 (so much stuff to do...):
- reduce minimum zoom to 40 (did it to 10!)
- dashed line
- use-case
- actor
- object
- link
- instanceOf
- 2 toolbar lines: one for objects-like things, one for link-like things... nah
- Wait, I was cooking with this one!
- global "list of warnings" always visible, or at least you can open, with a
small number of warnings, to show the errors.
- this is made because we don't want the editor to fail if there is some naive mistake, but we still want to show CLEAR indications of problems, if any (possibly, not directly on the diagram?)
- allow having multiple diagrams open! (localStorage by default limits to only one!)
- when selected, show the midpoints, the "every 4" points, and the angles (just graphically!)
- possibliy alignement lines when two objects are aligned too!
- the zoom thingies... I can't do it without them, sorry!
- make selection the default or something
- make selection "all directional"
- associations
- association classes
- Panel with warnings and errors
- Generalization
- Smaller zoom
- Diagram title
- Re-introduce localStorage saved zoom at some point! (Even though, one would expect to reload to reset the state, so think about it well)
- class name background color could be different color of body?
-
autofocuswhen inspecting objects (already done for classes) - better association inspection (or different node creation!); doing everything with the mouse creates problems (eg. you want to inspect the association and you create a node!); maybe the node can be created by pressing a key when the mouse is in a certain position?
- When opening the association inspector, instead of having
sourceMultiplicityandtargetMultiplicitytake theidof the target, and obtain the classname of the target; then do something like<SourceClassName> role:and<TargetClassName> role: - For generalizations, have something like a "joint point", like you
can attach a generalization two one of two things:
- To a class (directly)
- To a "joint point" with another generalization (like create from point to class, and then join the other classes using a generalization line) .
- When you first place the link, it is not placed very well, it should be immediately straightened somehow...
- User right click to inspect stuff! This solves any and all problems!
- Automatic formatting button for definitions text (or something like that, maybe on shortcut? Ctrl + S, then change shortcut for saving JSON)
- PropertyInspector
- Make a "color palette input" with default lighter colors! (should have label name, onclick event)
- Allow for changing the text color too!
- If all objects have the same fill color, or same stroke color, choose that one as starting color
- Selection adds to currently selected cellviews, doesn't replace them (if Ctrl is pressed!)
- add "copy to clipboard", maybe. Could be useful to copy from one diagram to another. And "paste to clipboard"
- ambient.d.ts
- app.css
- app.d.ts
- app.html
- lib/
- assets/
- components/
- Editor.svelte
- [~] Toolbar.svelte
- JointJS/
- ClassResizeTool.ts
- JointJSActor.ts
- [~] JointJSAssociation.ts
- [~] JointJSClass.ts
- JointJSDashedLine.ts
- [~] JointJSGeneralization.ts
- JointJSInstanceOf.ts
- JointJSLink.ts
- JointJSNote.ts
- capabilities/
- [~] CopyPaste.svelte
- History.svelte
- Linking.svelte
- Panning.svelte
- Selection.svelte
- Zoom.svelte
- view/
- ColorPicker.svelte
- AssociationInspector.svelte
- ClassInspector.svelte
- GeneralizationInspector.svelte
- PropertyInspector.svelte
- [~] types/ (PLANNING TO REMOVE)
- [~] uml.ts (PLANNING TO REMOVE)
- validation/ (REMOVED)
- uml.ts (REMOVED)
- collections.svelte.ts (REMOVED)
- index.ts (Maybe I should move
paper,graphand other stuff here...) - palette.ts
- utils.ts
view/ features/ forms/