[major] API change: parent and options
This commit is contained in:
parent
b76375482c
commit
de19ce8e31
104
dist/frappe-charts.esm.js
vendored
104
dist/frappe-charts.esm.js
vendored
@ -987,7 +987,7 @@ const COLOR_COMPATIBLE_CHARTS = {
|
|||||||
heatmap: []
|
heatmap: []
|
||||||
};
|
};
|
||||||
|
|
||||||
function getDifferentChart(type, current_type, args) {
|
function getDifferentChart(type, current_type, parent, args) {
|
||||||
if(type === current_type) return;
|
if(type === current_type) return;
|
||||||
|
|
||||||
if(!ALL_CHART_TYPES.includes(type)) {
|
if(!ALL_CHART_TYPES.includes(type)) {
|
||||||
@ -1004,8 +1004,7 @@ function getDifferentChart(type, current_type, args) {
|
|||||||
// Okay, this is anticlimactic
|
// Okay, this is anticlimactic
|
||||||
// this function will need to actually be 'changeChartType(type)'
|
// this function will need to actually be 'changeChartType(type)'
|
||||||
// that will update only the required elements, but for now ...
|
// that will update only the required elements, but for now ...
|
||||||
return new Chart({
|
return new Chart(parent, {
|
||||||
parent: args.parent,
|
|
||||||
title: args.title,
|
title: args.title,
|
||||||
data: args.data,
|
data: args.data,
|
||||||
type: type,
|
type: type,
|
||||||
@ -1130,36 +1129,26 @@ function runSMILAnimation(parent, svgElement, elementsToAnimate) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class BaseChart {
|
class BaseChart {
|
||||||
constructor({
|
constructor(parent, options) {
|
||||||
height = 240,
|
this.rawChartArgs = options;
|
||||||
|
|
||||||
title = '',
|
|
||||||
subtitle = '',
|
|
||||||
colors = [],
|
|
||||||
|
|
||||||
isNavigable = 0,
|
|
||||||
showLegend = 1,
|
|
||||||
|
|
||||||
type = '',
|
|
||||||
|
|
||||||
parent,
|
|
||||||
data
|
|
||||||
}) {
|
|
||||||
this.rawChartArgs = arguments[0];
|
|
||||||
|
|
||||||
this.parent = typeof parent === 'string' ? document.querySelector(parent) : parent;
|
this.parent = typeof parent === 'string' ? document.querySelector(parent) : parent;
|
||||||
this.title = title;
|
if (!(this.parent instanceof HTMLElement)) {
|
||||||
this.subtitle = subtitle;
|
throw new Error('No `parent` element to render on was provided.');
|
||||||
this.argHeight = height;
|
}
|
||||||
this.type = type;
|
|
||||||
|
|
||||||
this.realData = this.prepareData(data);
|
this.title = options.title || '';
|
||||||
|
this.subtitle = options.subtitle || '';
|
||||||
|
this.argHeight = options.height || 240;
|
||||||
|
this.type = options.type || '';
|
||||||
|
|
||||||
|
this.realData = this.prepareData(options.data);
|
||||||
this.data = this.prepareFirstData(this.realData);
|
this.data = this.prepareFirstData(this.realData);
|
||||||
this.colors = [];
|
this.colors = [];
|
||||||
this.config = {
|
this.config = {
|
||||||
showTooltip: 1, // calculate
|
showTooltip: 1, // calculate
|
||||||
showLegend: 1,
|
showLegend: options.showLegend || 1,
|
||||||
isNavigable: isNavigable,
|
isNavigable: options.isNavigable || 0,
|
||||||
animate: 1
|
animate: 1
|
||||||
};
|
};
|
||||||
this.state = {};
|
this.state = {};
|
||||||
@ -1170,7 +1159,7 @@ class BaseChart {
|
|||||||
this.overlays = [];
|
this.overlays = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
this.configure(arguments[0]);
|
this.configure(options);
|
||||||
}
|
}
|
||||||
|
|
||||||
configure(args) {
|
configure(args) {
|
||||||
@ -1210,11 +1199,7 @@ class BaseChart {
|
|||||||
this.rightMargin = RIGHT_MARGIN_BASE_CHART;
|
this.rightMargin = RIGHT_MARGIN_BASE_CHART;
|
||||||
}
|
}
|
||||||
|
|
||||||
validate(){
|
validate() {
|
||||||
if(!this.parent) {
|
|
||||||
console.error("No parent element to render on was provided.");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1419,13 +1404,13 @@ class BaseChart {
|
|||||||
removeDataPoint(index = 0) {}
|
removeDataPoint(index = 0) {}
|
||||||
|
|
||||||
getDifferentChart(type) {
|
getDifferentChart(type) {
|
||||||
return getDifferentChart(type, this.type, this.rawChartArgs);
|
return getDifferentChart(type, this.type, this.parent, this.rawChartArgs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class PercentageChart extends BaseChart {
|
class PercentageChart extends BaseChart {
|
||||||
constructor(args) {
|
constructor(parent, args) {
|
||||||
super(args);
|
super(parent, args);
|
||||||
this.type = 'percentage';
|
this.type = 'percentage';
|
||||||
|
|
||||||
this.max_slices = 10;
|
this.max_slices = 10;
|
||||||
@ -1549,8 +1534,8 @@ const ANGLE_RATIO = Math.PI / 180;
|
|||||||
const FULL_ANGLE = 360;
|
const FULL_ANGLE = 360;
|
||||||
|
|
||||||
class PieChart extends BaseChart {
|
class PieChart extends BaseChart {
|
||||||
constructor(args) {
|
constructor(parent, args) {
|
||||||
super(args);
|
super(parent, args);
|
||||||
this.type = 'pie';
|
this.type = 'pie';
|
||||||
this.elements_to_animate = null;
|
this.elements_to_animate = null;
|
||||||
this.hoverRadio = args.hoverRadio || 0.1;
|
this.hoverRadio = args.hoverRadio || 0.1;
|
||||||
@ -1980,29 +1965,21 @@ function getMaxCheckpoint(value, distribution) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class Heatmap extends BaseChart {
|
class Heatmap extends BaseChart {
|
||||||
constructor({
|
constructor(parent, options) {
|
||||||
start = '',
|
super(parent, options);
|
||||||
domain = '',
|
|
||||||
subdomain = '',
|
|
||||||
data = {},
|
|
||||||
discrete_domains = 0,
|
|
||||||
count_label = '',
|
|
||||||
legend_colors = []
|
|
||||||
}) {
|
|
||||||
super(arguments[0]);
|
|
||||||
|
|
||||||
this.type = 'heatmap';
|
this.type = 'heatmap';
|
||||||
|
|
||||||
this.domain = domain;
|
this.domain = options.domain || '';
|
||||||
this.subdomain = subdomain;
|
this.subdomain = options.subdomain || '';
|
||||||
this.data = data;
|
this.data = options.data || {};
|
||||||
this.discrete_domains = discrete_domains;
|
this.discrete_domains = options.discrete_domains || 1;
|
||||||
this.count_label = count_label;
|
this.count_label = options.count_label || '';
|
||||||
|
|
||||||
let today = new Date();
|
let today = new Date();
|
||||||
this.start = start || addDays(today, 365);
|
this.start = options.start || addDays(today, 365);
|
||||||
|
|
||||||
legend_colors = legend_colors.slice(0, 5);
|
let legend_colors = (options.legend_colors || []).slice(0, 5);
|
||||||
this.legend_colors = this.validate_colors(legend_colors)
|
this.legend_colors = this.validate_colors(legend_colors)
|
||||||
? legend_colors
|
? legend_colors
|
||||||
: ['#ebedf0', '#c6e48b', '#7bc96f', '#239a3b', '#196127'];
|
: ['#ebedf0', '#c6e48b', '#7bc96f', '#239a3b', '#196127'];
|
||||||
@ -2680,8 +2657,8 @@ function getComponent(name, constants, getData) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class AxisChart extends BaseChart {
|
class AxisChart extends BaseChart {
|
||||||
constructor(args) {
|
constructor(parent, args) {
|
||||||
super(args);
|
super(parent, args);
|
||||||
this.isSeries = args.isSeries;
|
this.isSeries = args.isSeries;
|
||||||
this.valuesOverPoints = args.valuesOverPoints;
|
this.valuesOverPoints = args.valuesOverPoints;
|
||||||
this.formatTooltipY = args.formatTooltipY;
|
this.formatTooltipY = args.formatTooltipY;
|
||||||
@ -3158,7 +3135,6 @@ class AxisChart extends BaseChart {
|
|||||||
|
|
||||||
// keep a binding at the end of chart
|
// keep a binding at the end of chart
|
||||||
|
|
||||||
// import MultiAxisChart from './charts/MultiAxisChart';
|
|
||||||
const chartTypes = {
|
const chartTypes = {
|
||||||
// multiaxis: MultiAxisChart,
|
// multiaxis: MultiAxisChart,
|
||||||
percentage: PercentageChart,
|
percentage: PercentageChart,
|
||||||
@ -3166,16 +3142,16 @@ const chartTypes = {
|
|||||||
pie: PieChart
|
pie: PieChart
|
||||||
};
|
};
|
||||||
|
|
||||||
function getChartByType(chartType = 'line', options) {
|
function getChartByType(chartType = 'line', parent, options) {
|
||||||
if(chartType === 'line') {
|
if(chartType === 'line') {
|
||||||
options.type = 'line';
|
options.type = 'line';
|
||||||
return new AxisChart(options);
|
return new AxisChart(parent, options);
|
||||||
} else if (chartType === 'bar') {
|
} else if (chartType === 'bar') {
|
||||||
options.type = 'bar';
|
options.type = 'bar';
|
||||||
return new AxisChart(options);
|
return new AxisChart(parent, options);
|
||||||
} else if (chartType === 'axis-mixed') {
|
} else if (chartType === 'axis-mixed') {
|
||||||
options.type = 'line';
|
options.type = 'line';
|
||||||
return new AxisChart(options);
|
return new AxisChart(parent, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!chartTypes[chartType]) {
|
if (!chartTypes[chartType]) {
|
||||||
@ -3183,12 +3159,12 @@ function getChartByType(chartType = 'line', options) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new chartTypes[chartType](options);
|
return new chartTypes[chartType](parent, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
class Chart {
|
class Chart {
|
||||||
constructor(args) {
|
constructor(parent, options) {
|
||||||
return getChartByType(args.type, arguments[0]);
|
return getChartByType(options.type, parent, options);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
2
dist/frappe-charts.min.cjs.js
vendored
2
dist/frappe-charts.min.cjs.js
vendored
File diff suppressed because one or more lines are too long
2
dist/frappe-charts.min.esm.js
vendored
2
dist/frappe-charts.min.esm.js
vendored
File diff suppressed because one or more lines are too long
2
dist/frappe-charts.min.iife.js
vendored
2
dist/frappe-charts.min.iife.js
vendored
File diff suppressed because one or more lines are too long
2
dist/frappe-charts.min.iife.js.map
vendored
2
dist/frappe-charts.min.iife.js.map
vendored
File diff suppressed because one or more lines are too long
2
docs/assets/js/frappe-charts.min.js
vendored
2
docs/assets/js/frappe-charts.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -62,8 +62,7 @@ let more_line_data = [
|
|||||||
let c1 = document.querySelector("#chart-composite-1");
|
let c1 = document.querySelector("#chart-composite-1");
|
||||||
let c2 = document.querySelector("#chart-composite-2");
|
let c2 = document.querySelector("#chart-composite-2");
|
||||||
|
|
||||||
let bar_composite_chart = new Chart ({
|
let bar_composite_chart = new Chart (c1, {
|
||||||
parent: c1,
|
|
||||||
title: "Fireball/Bolide Events - Yearly (more than 5 reports)",
|
title: "Fireball/Bolide Events - Yearly (more than 5 reports)",
|
||||||
data: bar_composite_data,
|
data: bar_composite_data,
|
||||||
type: 'bar',
|
type: 'bar',
|
||||||
@ -76,8 +75,7 @@ let bar_composite_chart = new Chart ({
|
|||||||
// regionFill: 1
|
// regionFill: 1
|
||||||
});
|
});
|
||||||
|
|
||||||
let line_composite_chart = new Chart ({
|
let line_composite_chart = new Chart (c2, {
|
||||||
parent: c2,
|
|
||||||
data: line_composite_data,
|
data: line_composite_data,
|
||||||
type: 'line',
|
type: 'line',
|
||||||
lineOptions: {
|
lineOptions: {
|
||||||
@ -165,8 +163,7 @@ let type_data = {
|
|||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
||||||
let type_chart = new Chart({
|
let type_chart = new Chart("#chart-types", {
|
||||||
parent: "#chart-types",
|
|
||||||
// title: "My Awesome Chart",
|
// title: "My Awesome Chart",
|
||||||
data: type_data,
|
data: type_data,
|
||||||
type: 'bar',
|
type: 'bar',
|
||||||
@ -222,7 +219,6 @@ let trends_data = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
let plot_chart_args = {
|
let plot_chart_args = {
|
||||||
parent: "#chart-trends",
|
|
||||||
title: "Mean Total Sunspot Count - Yearly",
|
title: "Mean Total Sunspot Count - Yearly",
|
||||||
data: trends_data,
|
data: trends_data,
|
||||||
type: 'line',
|
type: 'line',
|
||||||
@ -237,7 +233,7 @@ let plot_chart_args = {
|
|||||||
yAxisMode: 'span'
|
yAxisMode: 'span'
|
||||||
};
|
};
|
||||||
|
|
||||||
new Chart(plot_chart_args);
|
new Chart("#chart-trends", plot_chart_args);
|
||||||
|
|
||||||
Array.prototype.slice.call(
|
Array.prototype.slice.call(
|
||||||
document.querySelectorAll('.chart-plot-buttons button')
|
document.querySelectorAll('.chart-plot-buttons button')
|
||||||
@ -261,7 +257,7 @@ Array.prototype.slice.call(
|
|||||||
|
|
||||||
plot_chart_args.init = false;
|
plot_chart_args.init = false;
|
||||||
|
|
||||||
new Chart(plot_chart_args);
|
new Chart("#chart-trends", plot_chart_args);
|
||||||
|
|
||||||
Array.prototype.slice.call(
|
Array.prototype.slice.call(
|
||||||
btn.parentNode.querySelectorAll('button')).map(el => {
|
btn.parentNode.querySelectorAll('button')).map(el => {
|
||||||
@ -301,8 +297,7 @@ let update_data = {
|
|||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
||||||
let update_chart = new Chart({
|
let update_chart = new Chart("#chart-update", {
|
||||||
parent: "#chart-update",
|
|
||||||
data: update_data,
|
data: update_data,
|
||||||
type: 'line',
|
type: 'line',
|
||||||
height: 250,
|
height: 250,
|
||||||
@ -377,8 +372,7 @@ let events_data = {
|
|||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
||||||
let events_chart = new Chart({
|
let events_chart = new Chart("#chart-events", {
|
||||||
parent: "#chart-events",
|
|
||||||
title: "Jupiter's Moons: Semi-major Axis (1000 km)",
|
title: "Jupiter's Moons: Semi-major Axis (1000 km)",
|
||||||
data: events_data,
|
data: events_data,
|
||||||
type: 'bar',
|
type: 'bar',
|
||||||
@ -412,8 +406,7 @@ let aggr_data = {
|
|||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
||||||
let aggr_chart = new Chart({
|
let aggr_chart = new Chart("#chart-aggr", {
|
||||||
parent: "#chart-aggr",
|
|
||||||
data: aggr_data,
|
data: aggr_data,
|
||||||
type: 'bar',
|
type: 'bar',
|
||||||
height: 250,
|
height: 250,
|
||||||
@ -456,8 +449,7 @@ for (var i = 0; i< 375; i++) {
|
|||||||
timestamp = Math.floor(timestamp - 86400).toFixed(1);
|
timestamp = Math.floor(timestamp - 86400).toFixed(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
new Chart({
|
new Chart("#chart-heatmap", {
|
||||||
parent: "#chart-heatmap",
|
|
||||||
data: heatmap_data,
|
data: heatmap_data,
|
||||||
type: 'heatmap',
|
type: 'heatmap',
|
||||||
legend_scale: [0, 1, 2, 4, 5],
|
legend_scale: [0, 1, 2, 4, 5],
|
||||||
@ -485,8 +477,7 @@ Array.prototype.slice.call(
|
|||||||
colors = ['#ebedf0', '#fdf436', '#ffc700', '#ff9100', '#06001c'];
|
colors = ['#ebedf0', '#fdf436', '#ffc700', '#ff9100', '#06001c'];
|
||||||
}
|
}
|
||||||
|
|
||||||
new Chart({
|
new Chart("#chart-heatmap", {
|
||||||
parent: "#chart-heatmap",
|
|
||||||
data: heatmap_data,
|
data: heatmap_data,
|
||||||
type: 'heatmap',
|
type: 'heatmap',
|
||||||
legend_scale: [0, 1, 2, 4, 5],
|
legend_scale: [0, 1, 2, 4, 5],
|
||||||
@ -524,8 +515,7 @@ Array.prototype.slice.call(
|
|||||||
discrete_domains = 0;
|
discrete_domains = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
new Chart({
|
new Chart("#chart-heatmap", {
|
||||||
parent: "#chart-heatmap",
|
|
||||||
data: heatmap_data,
|
data: heatmap_data,
|
||||||
type: 'heatmap',
|
type: 'heatmap',
|
||||||
legend_scale: [0, 1, 2, 4, 5],
|
legend_scale: [0, 1, 2, 4, 5],
|
||||||
|
|||||||
@ -52,5 +52,8 @@
|
|||||||
"rollup-plugin-uglify": "^2.0.1",
|
"rollup-plugin-uglify": "^2.0.1",
|
||||||
"rollup-plugin-uglify-es": "0.0.1",
|
"rollup-plugin-uglify-es": "0.0.1",
|
||||||
"rollup-watch": "^4.3.1"
|
"rollup-watch": "^4.3.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"eslint": "^4.18.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,16 +13,16 @@ const chartTypes = {
|
|||||||
pie: PieChart
|
pie: PieChart
|
||||||
};
|
};
|
||||||
|
|
||||||
function getChartByType(chartType = 'line', options) {
|
function getChartByType(chartType = 'line', parent, options) {
|
||||||
if(chartType === 'line') {
|
if(chartType === 'line') {
|
||||||
options.type = 'line';
|
options.type = 'line';
|
||||||
return new AxisChart(options);
|
return new AxisChart(parent, options);
|
||||||
} else if (chartType === 'bar') {
|
} else if (chartType === 'bar') {
|
||||||
options.type = 'bar';
|
options.type = 'bar';
|
||||||
return new AxisChart(options);
|
return new AxisChart(parent, options);
|
||||||
} else if (chartType === 'axis-mixed') {
|
} else if (chartType === 'axis-mixed') {
|
||||||
options.type = 'line';
|
options.type = 'line';
|
||||||
return new AxisChart(options);
|
return new AxisChart(parent, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!chartTypes[chartType]) {
|
if (!chartTypes[chartType]) {
|
||||||
@ -30,11 +30,11 @@ function getChartByType(chartType = 'line', options) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new chartTypes[chartType](options);
|
return new chartTypes[chartType](parent, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default class Chart {
|
export default class Chart {
|
||||||
constructor(args) {
|
constructor(parent, options) {
|
||||||
return getChartByType(args.type, arguments[0]);
|
return getChartByType(options.type, parent, options);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,8 +9,8 @@ import { makeOverlay, updateOverlay } from '../utils/draw';
|
|||||||
import { MIN_BAR_PERCENT_HEIGHT, DEFAULT_AXIS_CHART_TYPE, BAR_CHART_SPACE_RATIO, LINE_CHART_DOT_SIZE } from '../utils/constants';
|
import { MIN_BAR_PERCENT_HEIGHT, DEFAULT_AXIS_CHART_TYPE, BAR_CHART_SPACE_RATIO, LINE_CHART_DOT_SIZE } from '../utils/constants';
|
||||||
|
|
||||||
export default class AxisChart extends BaseChart {
|
export default class AxisChart extends BaseChart {
|
||||||
constructor(args) {
|
constructor(parent, args) {
|
||||||
super(args);
|
super(parent, args);
|
||||||
this.isSeries = args.isSeries;
|
this.isSeries = args.isSeries;
|
||||||
this.valuesOverPoints = args.valuesOverPoints;
|
this.valuesOverPoints = args.valuesOverPoints;
|
||||||
this.formatTooltipY = args.formatTooltipY;
|
this.formatTooltipY = args.formatTooltipY;
|
||||||
|
|||||||
@ -9,36 +9,26 @@ import { getDifferentChart } from '../config';
|
|||||||
import { runSMILAnimation } from '../utils/animation';
|
import { runSMILAnimation } from '../utils/animation';
|
||||||
|
|
||||||
export default class BaseChart {
|
export default class BaseChart {
|
||||||
constructor({
|
constructor(parent, options) {
|
||||||
height = 240,
|
this.rawChartArgs = options;
|
||||||
|
|
||||||
title = '',
|
|
||||||
subtitle = '',
|
|
||||||
colors = [],
|
|
||||||
|
|
||||||
isNavigable = 0,
|
|
||||||
showLegend = 1,
|
|
||||||
|
|
||||||
type = '',
|
|
||||||
|
|
||||||
parent,
|
|
||||||
data
|
|
||||||
}) {
|
|
||||||
this.rawChartArgs = arguments[0];
|
|
||||||
|
|
||||||
this.parent = typeof parent === 'string' ? document.querySelector(parent) : parent;
|
this.parent = typeof parent === 'string' ? document.querySelector(parent) : parent;
|
||||||
this.title = title;
|
if (!(this.parent instanceof HTMLElement)) {
|
||||||
this.subtitle = subtitle;
|
throw new Error('No `parent` element to render on was provided.');
|
||||||
this.argHeight = height;
|
}
|
||||||
this.type = type;
|
|
||||||
|
|
||||||
this.realData = this.prepareData(data);
|
this.title = options.title || '';
|
||||||
|
this.subtitle = options.subtitle || '';
|
||||||
|
this.argHeight = options.height || 240;
|
||||||
|
this.type = options.type || '';
|
||||||
|
|
||||||
|
this.realData = this.prepareData(options.data);
|
||||||
this.data = this.prepareFirstData(this.realData);
|
this.data = this.prepareFirstData(this.realData);
|
||||||
this.colors = [];
|
this.colors = [];
|
||||||
this.config = {
|
this.config = {
|
||||||
showTooltip: 1, // calculate
|
showTooltip: 1, // calculate
|
||||||
showLegend: 1,
|
showLegend: options.showLegend || 1,
|
||||||
isNavigable: isNavigable,
|
isNavigable: options.isNavigable || 0,
|
||||||
animate: 1
|
animate: 1
|
||||||
};
|
};
|
||||||
this.state = {};
|
this.state = {};
|
||||||
@ -49,7 +39,7 @@ export default class BaseChart {
|
|||||||
this.overlays = [];
|
this.overlays = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
this.configure(arguments[0]);
|
this.configure(options);
|
||||||
}
|
}
|
||||||
|
|
||||||
configure(args) {
|
configure(args) {
|
||||||
@ -89,13 +79,7 @@ export default class BaseChart {
|
|||||||
this.rightMargin = RIGHT_MARGIN_BASE_CHART;
|
this.rightMargin = RIGHT_MARGIN_BASE_CHART;
|
||||||
}
|
}
|
||||||
|
|
||||||
validate(){
|
validate() {
|
||||||
let args = this.rawChartArgs;
|
|
||||||
// Now yo have the args, set this stuff only after validating
|
|
||||||
if(!this.parent) {
|
|
||||||
console.error("No parent element to render on was provided.");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -300,6 +284,6 @@ export default class BaseChart {
|
|||||||
removeDataPoint(index = 0) {}
|
removeDataPoint(index = 0) {}
|
||||||
|
|
||||||
getDifferentChart(type) {
|
getDifferentChart(type) {
|
||||||
return getDifferentChart(type, this.type, this.rawChartArgs);
|
return getDifferentChart(type, this.type, this.parent, this.rawChartArgs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,29 +5,21 @@ import { calcDistribution, getMaxCheckpoint } from '../utils/intervals';
|
|||||||
import { isValidColor } from '../utils/colors';
|
import { isValidColor } from '../utils/colors';
|
||||||
|
|
||||||
export default class Heatmap extends BaseChart {
|
export default class Heatmap extends BaseChart {
|
||||||
constructor({
|
constructor(parent, options) {
|
||||||
start = '',
|
super(parent, options);
|
||||||
domain = '',
|
|
||||||
subdomain = '',
|
|
||||||
data = {},
|
|
||||||
discrete_domains = 0,
|
|
||||||
count_label = '',
|
|
||||||
legend_colors = []
|
|
||||||
}) {
|
|
||||||
super(arguments[0]);
|
|
||||||
|
|
||||||
this.type = 'heatmap';
|
this.type = 'heatmap';
|
||||||
|
|
||||||
this.domain = domain;
|
this.domain = options.domain || '';
|
||||||
this.subdomain = subdomain;
|
this.subdomain = options.subdomain || '';
|
||||||
this.data = data;
|
this.data = options.data || {};
|
||||||
this.discrete_domains = discrete_domains;
|
this.discrete_domains = options.discrete_domains || 1;
|
||||||
this.count_label = count_label;
|
this.count_label = options.count_label || '';
|
||||||
|
|
||||||
let today = new Date();
|
let today = new Date();
|
||||||
this.start = start || addDays(today, 365);
|
this.start = options.start || addDays(today, 365);
|
||||||
|
|
||||||
legend_colors = legend_colors.slice(0, 5);
|
let legend_colors = (options.legend_colors || []).slice(0, 5);
|
||||||
this.legend_colors = this.validate_colors(legend_colors)
|
this.legend_colors = this.validate_colors(legend_colors)
|
||||||
? legend_colors
|
? legend_colors
|
||||||
: ['#ebedf0', '#c6e48b', '#7bc96f', '#239a3b', '#196127'];
|
: ['#ebedf0', '#c6e48b', '#7bc96f', '#239a3b', '#196127'];
|
||||||
|
|||||||
@ -2,8 +2,8 @@ import BaseChart from './BaseChart';
|
|||||||
import { $, getOffset } from '../utils/dom';
|
import { $, getOffset } from '../utils/dom';
|
||||||
|
|
||||||
export default class PercentageChart extends BaseChart {
|
export default class PercentageChart extends BaseChart {
|
||||||
constructor(args) {
|
constructor(parent, args) {
|
||||||
super(args);
|
super(parent, args);
|
||||||
this.type = 'percentage';
|
this.type = 'percentage';
|
||||||
|
|
||||||
this.max_slices = 10;
|
this.max_slices = 10;
|
||||||
|
|||||||
@ -7,8 +7,8 @@ const ANGLE_RATIO = Math.PI / 180;
|
|||||||
const FULL_ANGLE = 360;
|
const FULL_ANGLE = 360;
|
||||||
|
|
||||||
export default class PieChart extends BaseChart {
|
export default class PieChart extends BaseChart {
|
||||||
constructor(args) {
|
constructor(parent, args) {
|
||||||
super(args);
|
super(parent, args);
|
||||||
this.type = 'pie';
|
this.type = 'pie';
|
||||||
this.elements_to_animate = null;
|
this.elements_to_animate = null;
|
||||||
this.hoverRadio = args.hoverRadio || 0.1;
|
this.hoverRadio = args.hoverRadio || 0.1;
|
||||||
|
|||||||
@ -21,7 +21,7 @@ const COLOR_COMPATIBLE_CHARTS = {
|
|||||||
heatmap: []
|
heatmap: []
|
||||||
};
|
};
|
||||||
|
|
||||||
export function getDifferentChart(type, current_type, args) {
|
export function getDifferentChart(type, current_type, parent, args) {
|
||||||
if(type === current_type) return;
|
if(type === current_type) return;
|
||||||
|
|
||||||
if(!ALL_CHART_TYPES.includes(type)) {
|
if(!ALL_CHART_TYPES.includes(type)) {
|
||||||
@ -38,8 +38,7 @@ export function getDifferentChart(type, current_type, args) {
|
|||||||
// Okay, this is anticlimactic
|
// Okay, this is anticlimactic
|
||||||
// this function will need to actually be 'changeChartType(type)'
|
// this function will need to actually be 'changeChartType(type)'
|
||||||
// that will update only the required elements, but for now ...
|
// that will update only the required elements, but for now ...
|
||||||
return new Chart({
|
return new Chart(parent, {
|
||||||
parent: args.parent,
|
|
||||||
title: args.title,
|
title: args.title,
|
||||||
data: args.data,
|
data: args.data,
|
||||||
type: type,
|
type: type,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user