All Projects → nhn → toast-ui.react-chart

nhn / toast-ui.react-chart

Licence: MIT license
Toast UI Chart for React

Programming Languages

javascript
184084 projects - #8 most used programming language

⚠️Notice: This repository is deprecated️️️️️

TOAST UI Chart React Wrapper has been managed separately from the TOAST UI Chart repository. As a result of the distribution of these issues, we decided to deprecated each wrapper repository and manage repository as a mono-repo from the TOAST UI Chart repository.

From now on, please submit issues or contributings related to TOAST UI React Wrapper to TOAST UI Chart repository. Thank you🙂.

TOAST UI Chart for React

This is a React component wrapping TOAST UI Chart.

github version npm version license PRs welcome code with hearth by NHN

🚩 Table of Contents

Collect statistics on the use of open source

React Wrapper of TOAST UI Chart applies Google Analytics (GA) to collect statistics on the use of open source, in order to identify how widely TOAST UI Chart is used throughout the world. It also serves as important index to determine the future course of projects. location.hostname (e.g. > “ui.toast.com") is to be collected and the sole purpose is nothing but to measure statistics on the usage. To disable GA, use the usageStatistics props like the example below.

var options = {
    ...
    usageStatistics: false
}

Or, include tui-code-snippet.js (v1.4.0 or later) and then immediately write the options as follows:

tui.usageStatistics = false;

💾 Install

Using npm

npm install --save @toast-ui/react-chart

📊 Usage

Import

You can use Toast UI Chart for React as a ECMAScript module or a CommonJS module. As this module does not contain CSS files, you should import tui-chart.css from tui-chart manually. Also, map files are not included, so if you want to use a map chart, you have to import map files in the same way.

  • Using ECMAScript module

    import 'tui-chart/dist/tui-chart.css'
    import {BarChart, LineChart} from '@toast-ui/react-chart'
  • Using CommonJS module

    require('tui-chart/dist/tui-chart.css');
    var toastui = require('@toast-ui/react-chart');
    var BarChart = toastui.BarChart;
    var LineChart = toastui.LineChart;
  • Using map files

    import 'tui-chart/dist/maps/south-korea';
    import {MapChart} from '@toast-ui/react-chart';

Components

You can use all kinds of charts in tui.chart. React Components for each chart types are:

  • BarChart
  • ColumnChart
  • LineChart
  • AreaChart
  • BubbleChart
  • ScatterChart
  • PieChart
  • ComboChart
  • MapChart
  • HeatMapChart
  • TreeMapChart
  • RadialChart
  • BoxPlotChart
  • BulletChart

Props

All the options of the TOAST UI Chart are supported in the form of props. Note that data and columns props are required and other props are optional.

const data = {
  categories: ['June', 'July', 'Aug', 'Sep', 'Oct', 'Nov'],
  series: [
      {
          name: 'Budget',
          data: [5000, 3000, 5000, 7000, 6000, 4000]
      },
      {
          name: 'Income',
          data: [8000, 1000, 7000, 2000, 5000, 3000]
      }
  ]
};

const options = {
  chart: {
        width: 1160,
        height: 650,
        title: 'Monthly Revenue',
        format: '1,000'
    },
    yAxis: {
        title: 'Month'
    },
    xAxis: {
        title: 'Amount',
        min: 0,
        max: 9000,
        suffix: '$'
    },
    series: {
        showLabel: true
    }
};

const MyComponent = () => (
  <BarChart
    data={data} 
    options={options} 
  />
);
Name Type Required Description
data Object O This prop is for data of the chart. When you change data, chart is rendering for changing data.
options Object X This prop is for options of tui.chart. You can configuration about chart.

Instance Methods

For using instance methods of TOAST UI Chart, first thing to do is creating Refs of wrapper component using createRef(). But the wrapper component does not provide a way to call instance methods of TOAST UI Chart directly. Instead, you can call getInstance() method of the wrapper component to get the instance, and call the methods on it.

class MyComponent extends React.Component {
  chartRef = React.createRef();
  
  handleClickButton = () => {
    console.log('type:', this.chartRef.current.getInstance().getType());
  }

  render() {
    return (
      <>
        <BarChart 
          ref={this.chartRef}
          data={data} 
          options={options} 
        />
        <button onClick={this.handleClickButton}>getType</button>
      </>
    );
  }
}

Getting the root element

An instance of the wrapper component also provides a handy method for getting the root element. If you want to manipulate the root element directly, you can call getRootElement to get the element.

class MyComponent extends React.Component {
  chartRef = React.createRef();
  
  handleClickButton = () => {
    this.chartRef.current.getRootElement().classList.add('my-chart-root');
  }

  render() {
    return (
      <>
        <BarChart 
          ref={this.chartRef}
          data={data} 
          options={options} 
        />
        <button onClick={this.handleClickButton}>Click!</button>
      </>
    );
  }
}

Static Methods

The wrapper component does not provide a way to call static methods of TOAST UI Chart. If you want to use static methods such as registerMap, registerPlugin or registerTheme you should use it via importing tui-chart directly.

import TuiChart from 'tui-chart';

TuiChart.registerTheme('myTheme', myTheme);

Event

All the events of TOAST UI Chart are supported in the form of on[EventName] props. The first letter of each event name should be capitalized. For example, for using click event you can use onClick prop like the example below.

class MyComponent extends React.Component {
  handleClick = () => {
    console.log('click!!');
  }

  render() {
    return (
      <BarChart 
        data={data} 
        columns={columns} 
        onSelectLegend={this.handleClick}
      />
    );
  }
}

🔧 Pull Request Steps

TOAST UI products are open source, so you can create a pull request(PR) after you fix issues. Run npm scripts and develop yourself with the following process.

Setup

Fork develop branch into your personal repository. Clone it to local computer. Install node modules. Before starting development, you should check to haveany errors.

$ git clone https://github.com/{your-personal-repo}/[[repo name]].git
$ cd [[repo name]]
$ npm install

Develop

Let's start development!

Pull Request

Before PR, check to test lastly and then check any errors. If it has no error, commit and then push it!

For more information on PR's step, please see links of Contributing section.

📙 Documents

💬 Contributing

📜 License

This software is licensed under the MIT © NHN.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].