Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fusioncharts/ember-fusioncharts
A lightweight EmberJS component which provides bindings for FusionCharts JavaScript Charting Library
https://github.com/fusioncharts/ember-fusioncharts
bindings ember ember-addon emberjs fusioncharts wrapper
Last synced: 2 months ago
JSON representation
A lightweight EmberJS component which provides bindings for FusionCharts JavaScript Charting Library
- Host: GitHub
- URL: https://github.com/fusioncharts/ember-fusioncharts
- Owner: fusioncharts
- License: mit
- Created: 2017-10-30T11:50:09.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2024-09-28T12:33:38.000Z (3 months ago)
- Last Synced: 2024-09-29T12:09:53.750Z (3 months ago)
- Topics: bindings, ember, ember-addon, emberjs, fusioncharts, wrapper
- Language: JavaScript
- Homepage: https://fusioncharts.github.io/ember-fusioncharts/
- Size: 5.34 MB
- Stars: 6
- Watchers: 14
- Forks: 5
- Open Issues: 22
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# ember-fusioncharts
A lightweight EmberJS component which provides bindings for FusionCharts JavaScript Charting Library. It easily adds rich and interactive charts to any ambitious Ember application.
## [Demo](https://fusioncharts.github.io/ember-fusioncharts/)
- Github Repo: [https://github.com/fusioncharts/ember-fusioncharts](https://github.com/fusioncharts/ember-fusioncharts)
- Documentation: [https://www.fusioncharts.com/dev/getting-started/ember/your-first-chart-using-ember](https://www.fusioncharts.com/dev/getting-started/ember/your-first-chart-using-ember)
- Support: [https://www.fusioncharts.com/contact-support](https://www.fusioncharts.com/contact-support)
- FusionCharts
- Official Website: [https://www.fusioncharts.com/](https://www.fusioncharts.com/)
- Official NPM Package: [https://www.npmjs.com/package/fusioncharts](https://www.npmjs.com/package/fusioncharts)
- Issues: [https://github.com/fusioncharts/ember-fusioncharts/issues](https://github.com/fusioncharts/ember-fusioncharts/issues)---
## Table of Contents
- [Getting Started](#getting-started)
- [Requirements](#requirements)
- [Installation](#installation)
- [Quick Start](#quick-start)
- [Working with APIs](#working-with-apis)
- [Working with events](#working-with-events)
- [Going Beyond Charts](#going-beyond-charts)
- [Usage and Integration of FusionTime](#usage-and-integration-of-fusiontime)
- [For Contributors](#for-contributors)
- [Licensing](#licensing)## Compatibility
- Ember.js v3.19 or above
- Ember CLI v2.19 or above
- Node.js >= 14.21 || 16 || 18 or above## Installation
## Getting Started
### Requirements
- **Node.js**, **NPM/Yarn** installed globally in your OS.
- **FusionCharts** and **Ember** installed in your project, as detailed## Installation
**Direct Download**
All binaries are located on our [github repository](https://github.com/fusioncharts/ember-fusioncharts/).**Install from NPM**
To install `ember-fusioncharts` to any existing ember project, run:
For Modern Ember CLI:
```bash
$ npm install ember-fusioncharts --save
```For Earlier Ember CLI (and addon developers):
```bash
$ npm install ember-fusioncharts --save-dev
$ ember g ember-fusioncharts
```Then install `fusioncharts` to your project:
```bash
$ npm install fusioncharts --save
```Then import `fusioncharts` library to your `ember-cli-build.js` build file:
```javascript
/* eslint-env node */
"use strict";const EmberAddon = require("ember-cli/lib/broccoli/ember-addon");
module.exports = function (defaults) {
let app = new EmberAddon(defaults, {
// Add options here
});// Import FusionCharts library
app.import("node_modules/fusioncharts/fusioncharts.js");
app.import("node_modules/fusioncharts/fusioncharts.charts.js");
app.import("node_modules/fusioncharts/themes/fusioncharts.theme.fusion.js");/*
This build file specifies the options for the dummy test app of this
addon, located in `/tests/dummy`
This build file does *not* influence how the addon or the app using it
behave. You most likely want to be modifying `./index.js` or app's build file
*/return app.toTree();
};
```## Quick Start
After installing `ember-fusioncharts`, create a simple component(e.g. `chart-viewer`, also you can use it anywhere in your application) to show your interactive charts, run:
```bash
$ ember g component chart-viewer
```Write your chart logic in `chart-viewer.js` file:
```javascript
import Component from "@glimmer/component";
import { tracked } from "@glimmer/tracking";const myDataSource = {
chart: {
caption: "Harry's SuperMart",
subCaption: "Top 5 stores in last month by revenue",
numberPrefix: "$",
theme: "fint",
},
data: [
{
label: "Bakersfield Central",
value: "880000",
},
{
label: "Garden Groove harbour",
value: "730000",
},
{
label: "Los Angeles Topanga",
value: "590000",
},
{
label: "Compton-Rancho Dom",
value: "520000",
},
{
label: "Daly City Serramonte",
value: "330000",
},
],
};export default class ChartViewerComponent extends Component {
@tracked title = "FusionCharts Example";
@tracked width = 600;
@tracked height = 400;
@tracked type = "column2d";
@tracked dataFormat = "json";
@tracked dataSource = myDataSource;
@tracked chartConfig = null;
@tracked events = null;
@tracked actualValue = "";
}
```And use `fusioncharts-xt` component in your `chart-viewer.hbs` template to show your charts:
```html
{{ title }}
{{fusioncharts-xt width=this.width height=this.height type=this.type
dataFormat=this.dataFormat dataSource=this.dataSource}}
```Then, use `chart-viewer` component in your `application.hbs` template:
```html
{{chart-viewer}} {{outlet}}
```## Working with APIs
In your component file:
```javascript
import Component from "@glimmer/component";
import { tracked } from "@glimmer/tracking";
import { action } from "@ember/object";
const dataSource = {
chart: {
caption: "Countries With Most Oil Reserves [2017-18]",
subCaption: "In MMbbl = One Million barrels",
xAxisName: "Country",
yAxisName: "Reserves (MMbbl)",
numberSuffix: "K",
theme: "fusion",
},
data: [
{
label: "Venezuela",
value: "290",
},
{
label: "Saudi",
value: "260",
},
{
label: "Canada",
value: "180",
},
{
label: "Iran",
value: "140",
},
{
label: "Russia",
value: "115",
},
{
label: "UAE",
value: "100",
},
{
label: "US",
value: "30",
},
{
label: "China",
value: "30",
},
],
};
export default class FusionChartsViewers extends Component {
@tracked title = "FusionCharts Example";
@tracked width = 600;
@tracked height = 400;
@tracked type = "column2d";
@tracked dataFormat = "json";
@tracked dataSource = dataSource;
@tracked chartConfig = null;
@tracked events = null;
@tracked actualValue = "";
@tracked message = "Hover on the plot to see the value along with the label";
constructor() {
super(...arguments);
this.chartConfig = {
containerBackgroundColor: "#ffffff",
};
this.dataFormat = "json";
this.dataSource = dataSource; // Initializing the data source
this.events = {
dataplotRollOver: this.dataplotRollOver.bind(this),
dataPlotRollOut: this.dataPlotRollOut.bind(this),
};
}
@action
dataplotRollOver(eventObj, dataObj) {
this.message = `You are currently hovering over ${dataObj.categoryLabel} whose value is ${dataObj.displayValue}`;
}@action
dataPlotRollOut(eventObj, dataObj) {
this.message = "Hover on the plot to see the value along with the label";
}
}
```In your template file:
```html
{{ fusioncharts-xt width=this.width height=this.height type=this.type
dataFormat=this.dataFormat dataSource=this.dataSource events=this.events }}{{ this.message }}
```Using this example when you hover on a dataplot you will get to see the value and label of the dataplot underneath the chart.
## Working with events
To attach event listeners to FusionCharts, you can use the `events` attribute in the `fusioncharts-xt` template.
In your template file:
```html
{{ fusioncharts-xt width=this.width height=this.height type=this.type
dataFormat=this.dataFormat dataSource=this.dataSource events=this.events }}
```## Usage and integration of FusionTime
From `[email protected]` and `[email protected]`, You can visualize timeseries data easily with vue.
Learn more about FusionTime [here](https://www.fusioncharts.com/fusiontime).
import `FusionTime` library to your `ember-cli-build.js` build file:
```javascript
/* eslint-env node */
"use strict";const EmberAddon = require("ember-cli/lib/broccoli/ember-addon");
module.exports = function (defaults) {
let app = new EmberAddon(defaults, {
// Add options here
});// Import FusionCharts library
app.import("node_modules/fusioncharts/fusioncharts.js");
app.import("node_modules/fusioncharts/fusioncharts.timeseries.js");/*
This build file specifies the options for the dummy test app of this
addon, located in `/tests/dummy`
This build file does *not* influence how the addon or the app using it
behave. You most likely want to be modifying `./index.js` or app's build file
*/return app.toTree();
};
```Create a simple component(e.g. `timeseries-viewer`, also you can use it anywhere in your application) to show your interactive charts, run:
```bash
$ ember g component chart-viewer
```Write your chart logic in `timeseries-viewer.js` file:
```javascript
import Component from "@glimmer/component";
import { tracked } from "@glimmer/tracking";// Data source template
const dataSource = {
data: null,
caption: {
text: "Sales Analysis",
},
subcaption: {
text: "Grocery & Footwear",
},
series: "Type",
yAxis: [
{
plot: "Sales Value",
title: "Sale Value",
format: {
prefix: "$",
},
},
],
};// Function to fetch and parse JSON
const jsonify = (res) => res.json();// Fetch data and schema
const dataFetch = fetch(
"https://s3.eu-central-1.amazonaws.com/fusion.store/ft/data/plotting-multiple-series-on-time-axis-data.json",
).then(jsonify);const schemaFetch = fetch(
"https://s3.eu-central-1.amazonaws.com/fusion.store/ft/schema/plotting-multiple-series-on-time-axis-schema.json",
).then(jsonify);export default class timeSeriesViewer extends Component {
@tracked title = "TimeSeries Example";
@tracked width = 600;
@tracked height = 400;
@tracked type = "timeseries";
@tracked dataFormat = null;
@tracked dataSource = null;constructor() {
super(...arguments);
this.dataFormat = "json";
this.createDataTable();
}createDataTable() {
Promise.all([dataFetch, schemaFetch]).then((res) => {
const data = res[0];
const schema = res[1];
// First we are creating a DataStore
const fusionDataStore = new FusionCharts.DataStore();
// After that we are creating a DataTable by passing our data and schema as arguments
const fusionDataTable = fusionDataStore.createDataTable(data, schema);
// Afet that we simply mutated our timeseries datasource by attaching the above
// DataTable into its data property.
dataSource.data = fusionDataTable;
this.dataSource = dataSource;
});
}
}
```And use `fusioncharts-xt` component in your `timeseries-viewer.hbs` template to show your charts:
```html
{{ title }}
{{ fusioncharts-xt width=this.width height=this.height type=this.type
dataFormat=this.dataFormat dataSource=this.dataSource }}
```Then, use `timeseries-viewer` component in your `application.hbs` template:
```html
{{timeseries-viewer}} {{outlet}}
```## Going beyond Charts
- Explore 20+ pre-built business specific dashboards for different industries like energy and manufacturing to business functions like sales, marketing and operations [here](https://www.fusioncharts.com/explore/dashboards).
- See [Data Stories](https://www.fusioncharts.com/explore/data-stories) built using FusionCharts’ interactive JavaScript visualizations and learn how to communicate real-world narratives through underlying data to tell compelling stories.## For Contributors
- Clone the repository.
- Install dependencies.
- Run `npm start` to start the dev server.
- Open `http://localhost:4200/` in your browser.```sh
$ git clone https://github.com/fusioncharts/ember-fusioncharts.git
$ cd ember-fusioncharts
$ npm i
$ npm start
```To build, run:
```sh
$ npm run build
```## Licensing
The FusionCharts Ember component is open-source and distributed under the terms of the MIT/X11 License. However, you will need to download and include FusionCharts library in your page separately, which has a [separate license](https://www.fusioncharts.com/buy).