Code Monkey home page Code Monkey logo

dataviz's Introduction

dojo

This is the foundation package for the Dojo 1 Toolkit. While still being maintained, new development is primarily focused on modern Dojo.

Checkout the Dojo framework website or if you want a more detailed technical status and overview, checkout the Dojo roadmap.

This package is sometimes referred to as the “core”, it contains the most generally applicable sub-packages and modules. The dojo package covers a wide range of functionality like Ajax, DOM manipulation, class-type programming, events, promises, data stores, drag-and-drop and internationalization libraries.

Installing

Installation instructions are available at dojotoolkit.org/download.

Getting Started

If you are starting out with Dojo, the following resources are available to you:

What to Use Dojo For and When to Use It

The following is a brief sampling of some of the areas where Dojo may prove to be the right tool for your next project:

  • For keeping your code fast and maintainable, Dojo offers an asynchronous module definition (AMD) loader -- encapsulating pieces of code into useful units, loading small JavaScript files only when they are needed, and loading files separately even when they are dependent on one another.

  • When you want to easily extend existing classes, share functionality among a number of classes, and maximize code reuse, Dojo provides class-like inheritance and “mixins.”

  • For creating advanced and customizable user interfaces out of refined, efficient, and modular pieces, Dojo’s Dijit framework offers several dozen enterprise-ready widgets -- including buttons, textboxes, form widgets with built-in validation, layout elements, and much more -- along with themes to lend them a consistent look. All of this is available for mobile environments as well.

  • For working with advanced vector graphics, Dojo’s GFX API can render graphics in a wide variety of formats, with support for seamless manipulation (skewing, rotating, resizing), gradients, responding to mouse events, and more.

  • The dojox/charting library supports powerful data visualization and dynamic charting, including a variety of 2D plots and animated charting elements.

  • When you need feature-rich, lightweight, and mobile-friendly grids/tables, Dojo offers the dgrid widget, along with customizable default themes and accompanying features such as in-cell editing, row/cell selection, column resizing/reordering, keyboard handling, pagination, and more.

  • Dojo is the officially supported framework for the ArcGIS API for JavaScript, one of the most widely used enterprise-grade APIs for web mapping and spatial analysis -- learning to use Dojo will open doors to creating richer web mapping applications using that API.

License and Copyright

The Dojo Toolkit (including this package) is dual licensed under BSD 3-Clause and AFL. For more information on the license please see the License Information. The Dojo Toolkit is Copyright (c) 2005-2018, JS Foundation. All rights reserved.

dataviz's People

Contributors

agubler avatar edhager avatar kitsonk avatar novemberborn avatar rishson avatar rorticus avatar vansimke avatar

Stargazers

 avatar

Watchers

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

dataviz's Issues

Data visualization for Dojo 2

Data visualization for Dojo 2 fits in with the widget system. This means being able to declaratively render charts using the app factory, pulling data from stores, being able to mix in behavior, and so forth.

It also utilizes TypeScript. This allows charts to be created that have specific expectations on their input data. Rather than requiring users to compute the numbers needed to render a chart, charts can be plotted based on the objects already used elsewhere in the application.

Dojo 2 provides extensible chart types. Users can then develop chart widgets in accordance with their style guide and data requirements, such that it can be wired into an application without any further configuration.

Initially charts will be rendered as SVG, however the methods that produce the VNodes must be separate from those that compute the plot points. This will make it easier to extend charts using AOP, as well as target different renderings.

As much as possible charts should be styled using CSS, using both semantic and customizable class names. Only where necessary for correct rendering, or because CSS does not have sufficient browser support, should styling options be configured when building charts.

Configuration itself must be flexible, including pulling from stores, taking options, and providing it when creating subclasses.

Charts must be reactive, responding to state changes or subscribing to observables. Indeed observables are used to perform the computations necessary for plotting.

Decide how to handle invalid domains (per chart type)

Column charts don't support a minimum domain value that's larger than 0, or a maximum domain value that's less than zero. Other chart types will have similar constraints.

We need to decide how these domain values are handled. Perhaps an error should be raised? Or should the domain be clamped to an allowed value?

Note that the domain can be changed at runtime so raising an error is not necessarily informative.

Distribution Build Broken

The distrubition build is broken:

Using tsc v2.0.3
src/render/mixins/createSvgRootMixin.ts(61,7): error TS4023: Exported variable 'createSvgRootMixin' has or is using name 'ComposeFactory' from external module "/Users/kitsonk/github/dataviz/node_modules/dojo-compose/compose" but cannot be named.
src/render/mixins/createSvgRootMixin.ts(61,7): error TS4023: Exported variable 'createSvgRootMixin' has or is using name 'Destroyable' from external module "/Users/kitsonk/github/dataviz/node_modules/dojo-compose/mixins/createDestroyable" but cannot be named.
src/render/mixins/createSvgRootMixin.ts(61,7): error TS4023: Exported variable 'createSvgRootMixin' has or is using name 'EventedListener' from external module "/Users/kitsonk/github/dataviz/node_modules/dojo-compose/mixins/createEvented" but cannot be named.
src/render/mixins/createSvgRootMixin.ts(61,7): error TS4023: Exported variable 'createSvgRootMixin' has or is using name 'EventedMixin' from external module "/Users/kitsonk/github/dataviz/node_modules/dojo-compose/mixins/createEvented" but cannot be named.
src/render/mixins/createSvgRootMixin.ts(61,7): error TS4023: Exported variable 'createSvgRootMixin' has or is using name 'Handle' from external module "/Users/kitsonk/github/dataviz/node_modules/dojo-core/interfaces" but cannot be named.
src/render/mixins/createSvgRootMixin.ts(61,7): error TS4023: Exported variable 'createSvgRootMixin' has or is using name 'StatefulMixin' from external module "/Users/kitsonk/github/dataviz/node_modules/dojo-compose/mixins/createStateful" but cannot be named.
src/render/mixins/createSvgRootMixin.ts(61,7): error TS4023: Exported variable 'createSvgRootMixin' has or is using name 'TargettedEventObject' from external module "/Users/kitsonk/github/dataviz/node_modules/dojo-compose/mixins/createEvented" but cannot be named.

Stacked columns don't support spacing around the zero line

In a stacked column chart, if the stack contains negative and positive columns, the stackSpacing does not apply between the columns immediately below and above the zero line.

We could consider taking half the spacing is away from each column. Note though that the zero line is considered to be 1px high, and this may look strange when other stacks in the same chart contain only negative or positive columns.

Axes duplicate zeroth grid lines and ticks

The various axes types will render duplicate grid lines and ticks at the zeroth point. If grid lines / ticks have already been rendered at the zeroth point, any new render positions should be compared to avoid rendering duplicate lines and ticks.

Infinite values in computations

The relative-values, sum and max data operators currently do not handle infinite values. They should do something sensible so charts don't suffer terrible breakage when such unexpected values are used.

Potential axes work

The createAxesMixin is far from complete:

  • It assumes datum values are >= 0 for horizontal axes (no negative values), but <= is supported for vertical axes
  • Axes configuration cannot be provided through the widget state. This would also require label selectors to be defined on the prototype since they can't be serialized into the state. Perhaps as topInputLabelSelector, etc
  • Axes configuration cannot be provided through the prototype. This is necessary to create widgets with a default configuration
  • It's unclear how a default configuration would be extended through options and/or state
  • Certain configuration may be default for all enabled axes (e.g. ticks). Would be cool not to have to repeat that
  • Chart dimensions are not adjusted if exceeded by grid lines
  • No support for "mini ticks". These should probably be restricted to range based axes, where the step size must be a multiple of the mini tick interval
  • Consider center (vertical) and middle (horizontal) axes for charts with negative values
  • Our targeted IE versions may not support dominant-baseline. If we know the line-height we may be able to polyfill the currently limited set of allowed values, or maybe we need to support a perpendicularOffset option and remove dominantBaseline
  • We may need perpendicularOffset anyhow (e.g. for the bottom axis it would move the label down, for the left axis it would move it further left)
  • Axes tend to draw duplicate ticks and grid lines for the "zero" position

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.