Giter Site home page Giter Site logo

mapitor's Introduction

Mapitor

In-Browser Mind Mapping Tool, written in JavaScript with Node.js

Version 0.1.0

Copyright (c) 2015 by Christian Friedl. Released under the GPL, Version 3. See the COPYING file or visit https://www.gnu.org/licenses/gpl.html for details.

This is not a stable release. The software is in very early pre-alpha and will just create a random map with no load/save facility right now.

  • Here's what you currently CAN do with it:
    • Use TAB to create a new textnode from the current one
    • Use DEL to delete a textnode
    • Click on a textnode to edit its contents

The only available layout is circular, for now.

Please note that I'm dissatisfied with the name and will probably change it at some point.

Main Dependencies:

  • Node.js
  • npm
  • underscore.js, jQuery and Raphael.js.

(Please see package.json for the full authoritative list.)

Target Browser: Google Chrome (>= Version 44). I never tried it in any other browser, and probably never will.

Installation

If you just want to use it:

If you want to test/contribute/Use the Source, Luke:

There is no real professional installation modality as of now. Here's what methinks should work:

Motivation

Currently available mind-mapping tools (or otherwise, tools for organisating information) fall in two categories:

  • Tools with automatic layout and strict hierarchical structure (FreePlane)
  • Tools with manual layout, little semantics attached to graphical elements, but free structure (Prezi.com)

I want both. I want to think about layout as little as possible, and I want to be able to draw connections between arbitrary nodes with ease. Furthermore, I want the whole thing to be keyboard driven as much as possible, and I want it to work in the browser for the obvious portability and maintainability advantages.

(By the way, FreePlane is absolutely awesome and is still my go-to mindmapper! I don't see this here little project ever being a serious alternative to FreePlane.)

Goals for Version 1.0

  • Be able to insert, change and delete text nodes
  • Be able to add and remove arrows (with "forward", "backward", "both" or "none" direction attribute)
  • Have the following automatic layout modes:
    • circular, hierarchical, tabular
  • Have an alternative manual layout mode in which each node is placed just where the user dropped it
  • Have a simple command language
  • Be able to zoom and scroll
  • Be able to "load" (upload) and "save" (download) a JSON representation of the file
  • Be able to persist the application state via a small web server
  • Multi-level undo

Architecture and Modeling

Library choices:

  • Mapitor is based on Node.js. Some main dependencies are underscore.js, jQuery and Raphael.js.
  • Graphics are based on svg (via Raphael).

Architecture:

  • Our basic model types are:
    • text nodes
    • arrows
    • areas
  • Areas are the only node type that can contain other nodes (including other areas).
  • Nodes are bound to widgets.
  • Layouts are done via layouters.
  • Widgets are painted by painters.
  • Widgets, layouters and painters are chosen by factories.
  • All UI commands are run through a Command object so as to provide undo functionality
  • The map is the main arbitrator between the UI, the main area and the layout/painting functionality. (It might probably be renamed to controller at some point.)

mapitor's People

Watchers

Christian Friedl 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.