Giter Club home page Giter Club logo

intersystems-community / classexplorer Goto Github PK

View Code? Open in Web Editor NEW
27.0 19.0 10.0 949 KB

UML Class Diagram Builder for InterSystems Data Platforms (2014.1+)

Home Page: https://community.intersystems.com/node/407056

License: MIT License

JavaScript 50.12% CSS 1.45% HTML 2.40% Batchfile 0.10% ObjectScript 45.77% Dockerfile 0.12% Shell 0.04%
intersystems intersystems-cache intersystems-ensemble uml-diagram uml-diagrams uml cacheobjectscript-udl

classexplorer's Introduction

ObjectScript Class Explorer

Quality Gate Status

An UML class explorer for InterSystems products: IRIS, Ensemble, HealthShare, Caché. Read more about class explorer on InterSystems Developer Community.

Key features
  • Build class diagrams for arbitrary list of classes;
  • Build diagrams for whole package or subpackage;
  • Edit diagrams after build;
  • Switch between strict UML notation and designed view;
  • Export diagrams as an image;
  • See Class methods, properties, parameters, SQL queries, xDatas and more;
  • See any keywords and related information by hovering over everything with pointer;
  • Check which fields are connected by hovering over link;
  • View methods code, sql queries and xDatas with syntax highlighting;
  • Zoom in and out;
  • Search on diagram or in class tree;
  • Explore!

Screenshots

Demo

Docker Quick Demo

  1. Clone the repository and run docker-compose up -d --build to bring up ClassExplorer to a docker container.
  2. Check localhost:52773/ClassExplorer/ in a little while - it should have the app already.

Full Installation from XML File

To install latest Caché Class Explorer, you just need to import ClassExplorer package. Download the archive from latest releases, and then import Cache/CacheClassExplorer-vX.X.X.xml file.

Web application

Note that importing ClassExplorer.WebAppInstaller class will also create a /ClassExplorer application. If you want to create WEB application manually, please, do not import this class. Anyway, importing this class requires %SYS permission.

Usage

Visit [server domain and port]/ClassExplorer/ (slash at end required) to enter application.

Development

To build project, you need NodeJS platform to be installed. Then, clone source code and run npm install from the root of the project. This will install all necessary modules from NPM for the project.

After that and each next time just run npm run gulp command from the project root. This will generate build directory, where you will find XML file ready to import.

One can import/export the built source to the local Cache/URIS instance (see import.bat):

./import.bat

This will bring ClassExplorer-v*.*.*.xml to the build directory, which you can then package with npm run zip.

ZPM

ZPM is the package manager for InterSystems products. Currently, the release pipeline for it is manual. The ZPM release should happen once the package is uploaded to InterSystems OpenExchange with the "ZPM" option checked in. This should grab manually moved files from build-for-zpm/ClassExplorer directory for the release.

Locally, one can run and test the application using Docker:

  1. Before each release, manually patch the version in the module.xml file.
  2. Run docker-compose up -d --build in the repository root to bring up ClassExplorer to a docker container.
  3. Check localhost:52773/ClassExplorer/ in a little while - it should have the app already.
  4. Run docker-compose exec iris iris session iris and then type zn "IRISAPP" zpm to start ZPM session in the "IRISAPP" namespace.
  5. Type load /irisdev/app to test whether ZPM can parse the repository root.
  6. Type classexplorer package to try to compile the package. It should say something like Module package generated: /tmp/dirymgtBA/classexplorer-1.20.0.tgz.
  7. Configure the test registry to publish the package repo -n registry -r -url https://test.pm.community.intersystems.com/registry/ -user test -pass test (type search to see the registries list).
  8. Finally publish the package classexplorer publish.
  9. Further steps to test it: https://community.intersystems.com/post/testing-packages-zpm

Related Discussion

See the detailed description and discussion in this article. Have a look at InterSystems Developer Community to learn about InterSystems technology, sharing solutions and staying up-to-date on the latest developments.

License

MIT © Nikita Savchenko

classexplorer's People

Contributors

eduard93 avatar evshvarov avatar masterbeer avatar nikitaeverywhere avatar sergeymi37 avatar tsafin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

classexplorer's Issues

It worked on InterSystems IRIS v2018.2, but it doesn't work on v2019.1

I installed ClassExplorer on InterSystems IRIS v2018.2 and it worked fine. I installed on v2019.1.

  • When I click on a persistent, serial, registered, or datatype class I see: "Unable to get view for FCE.ATM classes."
  • If I click on a non-registered utility class that doesn't inherit from anything, I get the classname in a rectangle but no contents. If I now click on a persistent, serial, registered, or datatype class, I get the classname in a rectangle but no contents.

Help (?) Button issues

When I click ?...
On Chrome for Mac: help page appears correctly.
On Firefox for Mac: I get animated progress circle, but help page never appears.
On Safari for Mac: usually help page appears correctly, but sometimes, I get help page with too much extra space. Screen shots below:
part 1
part 2
part 3
part 4
part 5

Docker demo error: "no such file or directory"

Hi,
I love this tool. I use it since 3 years ago. Now I've found there's a way to set up a demo via Docker and I'd like to give it a try.

I've cloned the repo and when I run the docker command to build and run it, it crashes at step 19/21. I get this:

Step 19/21 : RUN do $SYSTEM.OBJ.Load("Installer.cls", "ck") set sc = ##class(App.Installer).setup() zn "%SYS" write "Creating web application ..." set webName = "/ClassExplorer" set webProperties("DispatchClass") = "ClassExplorer.Router" set webProperties("NameSpace") = "IRISAPP" set webProperties("Enabled") = 1 set webProperties("AutheEnabled") = 32 set sc = ##class(Security.Applications).Create(webName, .webProperties) write sc write "Web application "webName" has been created!"
---> Running in ca96e6d00456
standard_init_linux.go:207: exec user process caused "no such file or directory"
Service 'iris' failed to build: The command '/irissession.sh do $SYSTEM.OBJ.Load("Installer.cls", "ck") set sc = ##class(App.Installer).setup() zn "%SYS" write "Creating web application ..." set webName = "/ClassExplorer" set webProperties("DispatchClass") = "ClassExplorer.Router" set webProperties("NameSpace") = "IRISAPP" set webProperties("Enabled") = 1 set webProperties("AutheEnabled") = 32 set sc = ##class(Security.Applications).Create(webName, .webProperties) write sc write "Web application "webName" has been created!"' returned a non-zero code: 1

What is a standard Update procedure?

I have 1.11 release installed. Imported into Studio 1.14 release and nothing happened - still have 1.11 running.
TIA
$zv Ensemble 2015.1 Win-32

Please add save for diagrams

Add Save button which remembers the current state of diagrams in the browser.
New elements should appear automatically joining to already saved positions if possible.

Zoomin/zoomout is not persisting

If on some particular class you will zoomin from standard 1:1 view, then changing class will reset it back to 1:1.

Zoom level should probably persist, using cookies or what not.

Image Download issues

  1. When I click Download Image in Safari on Mac, nothing at all happens.
  2. On Firefox/Chrome for Mac, Download Image produces an incomplete image. I attached a screenshot I captured myself of a diagram. I also attached 2 images produced by the Download Image button.

my screenshot

incomplete diagram 1

incomplete diagram 2

provide relationships semantics along with names

now relationships are being displayed with their cardinality (parent-child, one-many).
Could you please also add the semantics too?
E.g. Student earnedGrade many Mark hasGiven one.

It will be more useful if two classes have more than one relationships with each other

Update the Information (i) page

The information (i) page shows 2 links to GitHub. Please add another link to the Developer Community article so that users can read the additional information there.

And, please add your explanation (see below) about Pin function to the main DC article, in the features section. I was going to add it as a comment myself, but it would be too far down and readers wouldn't see it.

"When you activate pin button, the position of elements on the diagram of the current set of classes (or a package) is going to be saved. For example, if you select class A and B and then save the view, you will see the same view after restarting the browser, when choosing classes A and B again. But if you choose only the A class, the layout will be default."

Startup Namespace ignored

I can store bookmark for my default namespace (OBCH),but ClassExplorer every time switch to installed namespace (USER).

Export diagram feature request

User story:
As a Cache' Class Explorer user I would like to be able to export the diagram to a .VDX or .XMI file that can be used by other programs.

Show collection types

Current version of ClassExplorer does not show collection types. For example, having

Property TestProp As list Of %Numeric;

This gives the next result:
2017-03-03_095102

It should show at least that the type is list of %Numeric.

Ability to remove class and all its links

If a class inherits from multiple classes, the inherited classes are shown on the diagram. I'd like to be able to remove an inherited class (and all its links) by clicking an X. Otherwise, I have to remove each link by hand, and then I can move the inherited class to the edge of the diagram.
Try adding %Populate to 4 or 5 Cinema classes and see what happens to the diagram.

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.