Code Monkey home page Code Monkey logo

snapcharts's Introduction

SnapCharts

A charting package for Java and JavaScript

Overview

This project is a Java charting package including designer for creating and generating charts and graphs that are animated and interactive.

Designer

SnapCharts can be run with a reference to a JSON file or JavaScript object to easily generate a chart, but with one click the full chart desginer can be opened to edit the chart in the browser or on the desktop.

Java and JavaScript

SnapCharts is written in Java and is compiled to run on the desktop with the JVM and compiled to JavaScript to run in the browser.

Build and run from source

prompt> git clone https://github.com/reportmill/SnapCharts
prompt> cd SnapCharts
prompt> ./gradlew build
prompt> ./gradlew run 

Package Structure

Overview

SnapCharts is basically a Model-View-Controller (MVC) app, with each part in an individual package:

- Model: snapcharts.charts pkg
- View: snapcharts.view pkg
- Controller: snapcharts.app pkg

SnapCharts 'Model' package

This package holds classes to represent (1) a chart and its component parts, (2) data and datasets and (3) supporting constants and types.

SnapCharts.charts Chart classes

- Chart: Type
- Header: Title, Subtitle
- Axis: Title, Min/Max Bound, ZeroRequired, isLog, TickLength, ...
- Legend: Showing, Position, ...
- ChartPart: Abstract superclass of all parts of a chart

SnapCharts.data Data classes

- DataSet: High-level representation of chart data with optional transforms, filters, sorting
- DataSetList: Holds a list of DataSets
- Intervals: Calculates and describes equally spaced divisions for a min/max
- DataStore: Low-level representation of chart data

SnapCharts.charts Supporting Types and Constants

- TraceType: LINE, AREA, SCATTER, BAR, PIE, POLAR, CONTOUR, LINE_3D, BAR_3D, PIE_3D
- AxisType: X, Y, Y2, Y3, Y4, Z
- AxisBound: Auto, Data, Value
- DataType: XY, XYZ, IY (indexed Y), CY (labeled Y), CXY, TR, TRZ
- DataChan: X, Y, Z, I, C, T, R
- PageDisplay: Single, Continuous

SnapCharts 'Views' package

This package holds View subclasses for ChartParts.

- ChartView: Top level chart view, encapsulates Chart
- HeaderView: Display chart header, encapsulates Header
- AxisView: Display chart axes, encapsulates Axis
- LegendView: Display chart legend, encapsulates Legend
- ChartPartView: Abstract superclass of all chart part views
- ChartHelper: The base class for customizations

SnapCharts 'app' package

This package holds the main UI classes for the app:

- DocPane: Top level controller to show whole doc
- ChartSetPane: Controller to show charts in a page
- ChartPane: Controller to show/edit an individual chart
- DataSetPane: Controller to show/edit datasets

SnapCharts 'apptools' package

This package holds inspector controllers.

- ChartInsp: Inspector for basic chart attributes
- HeaderInsp: Inspector for header
- AxisInsp: Inspector for axis
- LegendInsp: Inspector for legend

SnapCharts 'appmisc' package

This package holds less fundamental app components.

- SamplesPane: Show collection of charts from the website
- OpenInPlotly: Convert/open selected chart as Plotly chart in browser

snapcharts's People

Contributors

reportmill avatar

Stargazers

Jimmy Ruska avatar Valentyn Berezin avatar Vincent Sonnier avatar Martin Pernollet avatar Alan Brooks avatar  avatar  avatar

Watchers

James Cloos avatar  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.