Get new jQuery plugins just once a week

×

cake-chart

FavoriteLoadingAdd to favorites

October 7, 2015

Cake-Chart | An Interactive multi-layer pie chart plugin

Cake-Chart is a jQuery plugin to create an Interactive multi-layer pie chart.

Created by Alexander Kuznetsov

Download

Example

cake-chart jQuery plugin

multi-layer

cake-chart

Interactive multi-layer pie chart

Demo

Webpack Chart

Install

> npm i -S cake-chart

Simple Example

import CakeChart from 'cake-chart';

const TREE = {
  value: 100,
  label: 'SUM = 100',
  children: [{
    value: 50,
    children: [{
      value: 10
    },
    {
      value: 20
    }]
  }, {
    value: 30
  }, {
    value: 20
  }]
};

...

render () {
  return (
    <CakeChart data={TREE} />
  );
}

Advanced Example

Tree Navigation

CakeChart is a quite dumb component that renders provided tree, but doesn't navigate through it, so you have to implement that part yourself. Which is not hard though.

const TREE = { ... };

/* finds parent of the selected node -
   you can just store parent in the node itself, for example */
function findParentNode(node, child, parent = null) {
  if (node === child) return parent;
  for (let c of child.children || []) {
    const p = findParent(node, c, child);
    if (p) return p;
  }
}

class InteractiveCakeChart extends React.Component {
  constructor(props) {
    super(props);

    this.state = {
      selectedNode: TREE
    }
  }

  render() {
    return (
      <CakeChart data={this.state.selectedNode}
                 onClick={this.handleClick} />
    );
  }

  handleClick = (node) => {
    if (node === this.state.selectedNode) {
      /* user clicked on the chart center - rendering parent node */
      this.setState({ selectedNode: findParentNode(node, TREE) || TREE });
    } else {
      this.setState({ selectedNode: node });
    }
  }
}

Customization

```js

function getSliceProps(slice, props) { return { ...props, fill: (slice.level % 2) ? '#FF0000' : '#0000FF' }; }

function getLabel(slice, label) { return slice.level === 0 ? Value: ${slice.node.value} : label; }

function getLabelProps(slice, props) { return { ...props, style: { background: (slice.level % 2) ? '#FF0000' : '#0000FF' } }; }

class CustomizedCakeChart extends React.Component { render() { return ( ); } }

cake-chart

Related posts:

Paper-js
Springy-js
waterpipe-js
cake-chart jQuery plugin

http://jquer.in/wp-content/uploads/2015/09/cake-chart-1024x999.png

jQuery plugin

Sign up for our weekly newsletter.

* We won't spam you ever