GithubHelp home page GithubHelp logo

mohamedganiwbc / datamodeler Goto Github PK

View Code? Open in Web Editor NEW

This project forked from tfedor/datamodeler

0.0 0.0 0.0 2.65 MB

Web data modeler for ER diagrams

Ruby 0.08% HTML 6.27% CSS 20.71% JavaScript 72.94%

datamodeler's Introduction

Data Modeler

Data Modeler is a Entity-Relationship web component for drawing diagrams in Barker notation. It was developed as a master's thesis project at Faculty of Information Technology at Czech Technical University in Prague. The main purpose of this modeler was to support education process of the Database Systems course. Since students will work in this modeler mostly during tests and exams, we have aimed for minimalism, simplicity and efficiency in user interface design.

Preview

Features

  • support for drawing logical models in the Barker notation, including XOR relationships, ISA hierarchy and notes
  • automatic diagram layout, which ensures that equivalent diagrams are displayed in the same way
  • save to local storage to preserve your work
  • undo/redo (experimental)
  • marking mode, used to mark incorrect parts of the diagram
  • import and export to JSON, which may also be used to compare models as strings
  • import of Oracle SQL Developer Data Modeler Design, in form of a zip file
  • support for multiple diagrams on one page
  • tutorial for new users
  • option to set up permissions and restrict certain functionality (e.g. export and import, which can not be used during exams)
  • keyboard shortcuts

Creating Canvas

To create a canvas, you have to initialize Diagram class and create canvas itself.

Minimal Example

In this example Diagram is initialized with default settings and one canvas is created.

DBSDM.Diagram.init();
(new DBSDM.Canvas()).create();

More Realistic Example

It is possible to initialize diagram with non-default settings. These settings will apply to all canvases created on the page. Following settings are available:

Option Default Description
allowEdit true Allow changes to the data of the diagram
allowFile true Allow import and export actions from the interface
allowCorrectMode false Allow switching to marking mode
allowRecent true Allow saving and loading recent models from local storage
showTutorial true Determines whether the tutorial will be shown or not
confirmLeave false Ask user to confirm leaving the page if there is a diagram with unsaved changes
importIsChange false Determines whether import will be treated as a change (makes sense when used with confirmLeave on)

More realistic example of canvas creation follows, full code can be found in example.html

/**
 * Initialize Diagram
 */
DBSDM.Diagram.init({
    allowEdit: true,
    allowFile: true,
    allowCorrectMode: true,
    confirmLeave: true,
    showTutorial: true
});

/**
 * Create empty canvas
 */
var canvas1 = new DBSDM.Canvas();
canvas1.create();

/**
 * Create canvas and programmatically import diagram
 * Note that JSON string is truncated
 */
var json = JSON.parse('{"entities": [...],"relations": [...]}');
var canvas2 = new DBSDM.Canvas();
canvas2.create();
canvas2.import(json);

/**
 * Export contents of second diagram
 * and print JSON string into console
 */
var promptDownload = false;
var prettify = false;
console.log(canvas2.export(promptDownload, prettify));

As a Child of Specified Element

It is also possible to create child at given element, by providing Node as a parameter of DBSDM.Canvas.create.

var parent = document.getElementById('parent');
DBSDM.Diagram.init();
(new DBSDM.Canvas()).create(parent);

Code Structure

The code of the data modeler is in its entirety in src folder, libs contain 3rd party libraries while styles CSS files.

General or support classes are located in the root of src folder. Classes that handle model, render and user control are located in model, view and control folder and follow MVC architecture.

Deployment

Refer to dev.html and example.html.

dev.html shows deployment of non-merged source files, useful during development because there is no need to build production file.

example.html similar than previous example, this one is using minimized production file for loading data modeler code.

When building production file (found in dist folder with the minified version), you can use proprietary ruby build script (very crude implementation, which just merges all JavaScript source files together and then uses uglifyjs to minify it).

Declaration/License

As the declaration from the thesis states, you may use this project for nonprofit purposes:

I hereby declare that the presented thesis is my own work and that I have
cited all sources of information in accordance with the Guideline for adhering
to ethical principles when elaborating an academic final thesis.

I acknowledge that my thesis is subject to the rights and obligations stipulated
by the Act No. 121/2000 Coll., the Copyright Act, as amended. In
accordance with Article 46(6) of the Act, I hereby grant a nonexclusive authorization
(license) to utilize this thesis, including any and all computer programs
incorporated therein or attached thereto and all corresponding documentation
(hereinafter collectively referred to as the “Work”), to any and all persons that
wish to utilize the Work. Such persons are entitled to use the Work for nonprofit
purposes only, in any way that does not detract from its value. This
authorization is not limited in terms of time, location and quantity.

datamodeler's People

Contributors

tfedor avatar oldamalec avatar

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.