Git Product home page Git Product logo

react-d3-core's Introduction

react-d3-core

Dependency Status

react d3 core components for reusability.

react-d3-core is includes the core components of the react-d3 projects. The reason we extract the main component here, is because of reusability. For instance, we use grid, axes over and over again in line chart, area chart, bar chart ... etc. If we move these system a little bit forward to a react component we can declare it more easily in the future.

Such as we need xaxis, yaxis, grid in a new chart. We can install react-d3-core and import them.

Install

npm install react-d3-core

LIVE DEMO

http://reactd3.org/docs/core

Quick example

With webpack

  • Legend
"use strict";

var React = require('react');
var ReactDOM = require('react-dom');
var Legend = require('../../lib/index').Legend;

(function() {
  var chartSeries = [
      {
        field: 'Under 5 Years'
      },
      {
        field: '5 to 13 Years'
      }
    ]

  ReactDOM.render(
    <div>
      <svg width= {960} height= {500}>
        <rect height= {"100%"} width= {"100%"} fill= {"#CCC"} />
      </svg>
      <Legend
        width= {960}
        chartSeries = {chartSeries}
      />
    </div>
  , document.getElementById('blank-legend')
  )
})()

In HTML (without build tools)

Clone code react-d3-core.js or minify js react-d3-core.min.js and include the script in your HTML.

You'll also need react, react-dom, d3

  • Legend
<!DOCTYPE html>
<html>
  <head>
    <title>
      Line Chart example
    </title>
  </head>
  <body>
    <div id="blank-legend"></div>
    <script src="https://fb.me/react-0.14.2.js"></script>
    <script src="https://fb.me/react-dom-0.14.2.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.23/browser.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.6/d3.min.js"></script>
    <script src="../react-d3-core.min.js"></script>
    <script type="text/babel">
      var Legend = ReactD3Core.Legend;
      var chartSeries = [
          {
            field: 'Under 5 Years'
          },
          {
            field: '5 to 13 Years'
          }
        ]

      ReactDOM.render(
        <div>
          <svg width= {960} height= {500}>
            <rect height= {"100%"} width= {"100%"} fill= {"#CCC"} />
          </svg>
          <Legend
            width= {960}
            chartSeries = {chartSeries}
          />
        </div>
      , document.getElementById('blank-legend')
      )
    </script>
  </body>
</html>

Supported Components

Container

Axis

Grid

Label

Legend

Develop

$ npm install
$ node devServer.js

Open localhost:5000/example

History

Before v1.1.x ...

  • Initial release
  • Babel 5
  • D3 3.0

2016 / 3 / 3, v1.2.0

  • Move to Babel 6.
  • D3 4.0.
  • improve example folder.

License

Apache 2.0

react-d3-core's People

Contributors

chihsuan avatar chilijung avatar koleok avatar vartika-skyport 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  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  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  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

react-d3-core's Issues

Code seems to break with React 0.14

Hello Chilijung,

First, kudos for this endeavour. I really like your take on react and D3 integration.

I tried running the examples in React 0.14, but without success.
I got an...

Uncaught Error: Invariant Violation: _registerComponent(...): Target container is not a DOM element.

I was wondering: Have you done any testing yourself?

Is react-faux-dom the culprit?

ShowLegend = false has no effect

from what I can tell in the examples and docs, ShowLegend is a bool that determines if the legend is shown.

However, ShowLegend={false} appears to have no effect.

For example, using the PieChart example, adding ShowLegend={false} does nothing.

Am I missing something stupid?

James

doesn't work with react 16.1.0

TypeError: Cannot read property 'string' of undefined

scaleExtent: [1, 10]
79 | }, _commonProps2.default);
80 | ChartSvg.propTypes = {

81 | id: _react.PropTypes.string,
82 | width: _react.PropTypes.number.isRequired,
83 | height: _react.PropTypes.number.isRequired,
84 | margins: _react.PropTypes.object.isRequired,

I think this appears because _react.PropTypes is undefined

Missing Object.assign polyfill

Hello!
Just wanted to let you know that the current build is not working on IE because of it's use of Object.assign. Adding a simple polyfill should resolve this :)

Thanks for a great library!

xScale is not propagated to grid

I get a warning when trying to use an ordinal xScale in Barchart or ordinal yScale in BarHorizontalChart:
(Barchart:)
Warning: Failed propType: Invalid prop xScale of value band supplied to Grid, expected one of ["linear","identity","sqrt","pow","log","quantize","quantile","ordinal","time"]. Check the render method of YGrid.
(BarHorizontalChart:)
Warning: Failed propType: Invalid prop yScale of value band supplied to Grid, expected one of ["linear","identity","sqrt","pow","log","quantize","quantile","ordinal","time"]. Check the render method of XGrid.

Seems like it is not propagated properly to the grid.

Prop validation for axis fails with ordinal scales

I'm getting the following prop validation failure when an xScale is ordinal:

Warning: Failed propType: Invalid prop `xScale` of value `band` supplied to `Grid`, expected one of ["linear","identity","sqrt","pow","log","quantize","quantile","ordinal","time"].

It looks like when a scale is set to ordinal, it actually is set to 'band' via axis.jsx: https://github.com/react-d3/react-d3-core/blob/master/src/axis/axis.jsx#L80

Would including 'band' in the allowed prop types fix this?

Does react-d3 support server-side rendering?

I'm currently evaluating react charting solutions, and react-d3 looks like a solid option. However, I have a hard requirement to be able to render charts directly to HTML strings, outside the context of a browser and otherwise without using a headless DOM implementation.

The reason I ask is because I was given to understand d3 needs to operate directly on the DOM, so I'm wondering how that works with React, which can renderToString() when no DOM is present.

Thanks!

Support tickvalues for axis

If a values array is specified, the specified values are used for ticks, rather than using the scale's automatic tick generator. If values is null, clears any previously-set explicit tick values, reverting back to the scale's tick generator. If values is not specified, returns the currently-set tick values, which defaults to null. For example, to generate ticks at specific values:

var xAxis = d3.svg.axis()
.scale(x)
.tickValues([1, 2, 3, 5, 8, 13, 21]);

The explicit tick values take precedent over the tick arguments set by axis.ticks. However, any tick arguments will still be passed to the scale's tickFormat function if a tick format is not also set; thus, it may be valid to set both axis.ticks and axis.tickValues.

https://github.com/d3/d3/wiki/SVG-Axes#tickValues

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.