Git Product home page Git Product logo

uml-cafe's Introduction

uml-cafe

Hey everyone! This is a modeling client for uml still in development. It is based off of the wonderfully quick and simple uml-cpp and uml-kitchen as a back end. It also uses uml-client to help communicate to the backend.

The goal of this is to have a free to use modeling client that is modern and open-source. The app should help current modelers save lots of money once mature.

Try it out!

The app is hosted here:
uml.cafe

Contributing

Contributions would be really appreciated as I am doing this in my free time and know my limitations in web applications. Please add a pull request with a new feature. There is no style guide for this project right now, but please treat others with respect.

uml-cafe's People

Contributors

nemears avatar atwalder avatar

Stargazers

 avatar

Watchers

 avatar

uml-cafe's Issues

Add button to choose the color you want to be

Add a button that will let the user choose the color they want to be represented by. This will change the umlWebClient's color attribute (needs some api additions to backend) and allow the user to see themselves as the color they want to be. Additionally may be useful to add a default color that the user likes, then when they log in they will be assigned that color, if the color is not available it will just give them the regular next color

Login Button in banner

A button in the banner, that calls the toggleLogin() method in src/UmlBanner.vue. May need to move the Create Diagram if needed

Add toggle between dark and light theme

This would be awesome for accessability and general preferences for people, i think we can just load two different css style sheets with colors assigned to variables, e.g. dark.css, light.css. A lot of the colors used are bound to existing css variables so just continuing the pattern and making these sheets as well as a way to toggle it switching between modes is all we need.

Edit welcome tab with demo video

Welcome tab needs to updated and revamped. First off it needs to be more descriptive as to what it is, and how to use it. It needs more detailed steps on how to get started. Also, it needs a demo video to showcase how it works with multiple users, allowing for a collaborative process, and also has a thread safe api that works from javascript, or c++. Explain long term goals of project and add a last edited date.

Classifier Enhancements to Specification Page and Element Explorer

We want to fully implement what is on the backend for Classifier and it's subtypes. These new types need to be added to uml-client:

  • Type
  • RedefinableElement
  • StructuralFeature
  • BehavioralFeature
  • Parameter
  • EncapsulatedClassifier
  • Operation
  • TemplateableElement
  • TemplateSignature
  • TemplateBinding
  • TemplateParameter
  • TemplateParameterSubstitution
  • RedefinableTemplateSignature
  • ClassifierTemplateParameter
  • Connector
  • ConnectableElement
  • Port
  • InterfaceRealization
    Also expand these types in the process
  • Classifier
  • Property
  • StructuredClassifier
  • Class
  • Interface

As these are added we can add them to the specification page, as well as to the element explorer. The sets should be fillable from the specificaiton tree with the creatable property, or in element explorer with the right click option

Add Custom Styles that the user can edit for the shapes

These custom styles will be according to the uml specification annex B, and diagram-interchange diagram-common definitons of style. There should be right click option to bring up a menu that lets you edit the style of the shape

bug: weird keywordLabel positions after refresh

  1. create a realization, usage, or abstraction dependency (class diagrams are horizontally aligned)
  2. just refresh and it's misplaced all the way to the right not even close to edge if it's not a realization
  3. if realization, after refresh just move around diagrams and the positioning is off (same for others too but you'll see weird placement right away)

Model all of the UML DI

This is essential to expanding the DI api we are building out. All of the definitions of the UML DI can be found here. By model all of it, i mean make a representation of it and save it to umlStandard.yml in the backend.

Better representation of users and colors

Right now you will always see yourself as blue. That can get confusing when sharing a session with someone to determine which color you are. To fix this, we want the user to no longer to see themselves as blue unless assigned blue, they can therefore see themselves as green, red, etc.

bug: checkbox input type does not persist

in the specification page, if there is a checkbox the check will not persist (as seen in Feature 'isStatic' and Literal Bool 'value'). it should persist the selection instead of defaulting to unchecked.

Element Explorer notation updates

Have a little more detail represented in the ElementExplorer such as

  • typed elements will show their type with a : <type> annotation and a different color (maybe gray)
  • properties will show their default value if it is a primitive type ="hello world", =1.5 etc. maybe a different color (maybe light gray)
  • Stereotyped elements will be annotated with a «Stereotype» and a different color (maybe orange)
  • Generalizations will show a ->general.name

they should all update with element update events

Context Pad gets hidden behind other shapes

This happens after some shapes are added. It always happens if the diagram isFrame property is enabled. This essentially breaks the diagram when it has isFrame enabled, and also breaks most complex diagrams.

Posted in bpmn.io forum as well, still looking at how to pin down what happens a little a better.

Add Classifier subtypes to Class Diagram

Add the following types, some have been already added to uml-client and some have not, some might have to be filled out more:

  • Datatype
  • PrimitiveType
  • Enumeration
  • Signals (need to make)
  • Interfaces (need to make)
    Add them to the Pallete in the class diagram, and make sure they can be seen in the specification page and element explorer. All information is within Chapter 10 of the specification

Add logout button

Put it in hamburger menu in umlBanner, as well as in the login menu itself

ElementExplorer.vue add ability to select, expand and look at specification with just the left mouse button

The panels need to show a state of being "selected", this should be shown as a blue highlight over the panel. The mouse actions may need to be tweaked because specification and expanding the panel take up double click and click actions currently. Perhaps may need to add an additional button to the left side of the panel that expands/collapses the children of the panel instead of just clicking, and then click will be reserved for selecting. Additionally the ability to ctrl.click and shift.click to multi-select elements.

Add the rest of the associations to class diagram

We need pallete and context pad buttons to create:
regular association (no navigability, both ends owned by the association)
directed association (navigabile end on one side, non navigable end on the other, bothe owned by the association)
bi-directional association (navigable ends on both sides owned by the association)
directed aggregation (one end owned by class with aggregation = "shared", other is an owned end by association)
undirected composition (both ends are owned by the association, one end has aggregation="composite")
undirected aggregation (both ends are owned by the association, one end has aggregation="shared")

Add Multiplicity Label to Associations if applcable

There are two instances where the MultiplicityLabel will be created:

  1. Showing an exisiting association with the Show Relationships ContextMenu
  2. When an association that is currently on a diagram is updated

This is in essence a continuation of #12 Completing the MultiplicityLabel implementation

Add shapes for properties in diagram, add "show properties context menu option"

Properties aren't represented besides associations currently within the diagram. We want to add property shapes within class shapes in the diagram. These shapes should be the height of their label, expand the size of the containing class if they overflow. The property label is <visibility symbol> <derived symbol> <name>:<type> [<multiplicity>]=<defaultValue>{<property modifiers>}, see uml spec 9.5.4

A context menu option to reveal these shapes would be the initial way to display these, another way in the future would be to add it to drag and drop from context menu

Add info button on diagrams

The info button will display a little blurb about what the type of the diagram is and what the diagram represents, also show a small legend showing what the different symbols mean

If we develop some uml documentation, maybe a wiki page or something, we can also have links to those wiki pages.

Add Default Privacy Policy

We should have a statement on the data that we collect (project data) and what we do with it (nothing) captured in a privacy policy.

UmlEditor.vue Tab enhancements

The tabs currently are just held in the order they are created, there is no way to change the order of the tabs.
The tabs also when going off the side of the page just go to the next line, we want them to go hidden instead, and scroll to see them.

Add Project explorer for users

There need to be an easy way to look at projects that you have access to, and open and save the project as a new project etc. This may need some backend hooks that are not currently available. The explorer should show an area containing the logged in user's projects, an area showing projects the logged in user has access to etc.

Add property shapes on ends of Associations if present

To make the diagram more detailed and interactive, adding a dot at the end of an association where a class ownedAttribute is represented would be necessary. This is a usual display of a property that takes part of an association. We would add the property to the diagram and add a label that says the same information as issue#4 s label. This would be automatically created when creating associations in the diagram

Add dependencies to class diagrams

dependencies and their sub types are important for conveying information in a class diagram. We need to create them in uml-client and add creators for them in the context pad and pallet for class diagrams as well as the ability to render them.

Implement Uml Styles for Diagrams

Uml has some default styles that correspond to svg styles generally, implement a gui and rendering connection for these.
You can find info about these styles in the uml spec and uml DD which can be found here https://github.com/nemears/uml-cafe/wiki .

We want a contextmenu option to edit each diagramElement's style in the diagram, this will brind up some sort of gui functionality to fill in style attributes

Drag and Drop Element Explorer elements to change owner (if possible)

Would be nice to be able to drag and drop to quickly change what element owns the element selected. To keep it simple start just with packageable elements and being able to move them between packages. This may be more difficult with other sets though so that might be the only thing implemented.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.