Skip to content

Commit

Permalink
use helper functions
Browse files Browse the repository at this point in the history
  • Loading branch information
sgratzl committed May 19, 2020
1 parent 91f398f commit bbfaeb1
Show file tree
Hide file tree
Showing 6 changed files with 112 additions and 114 deletions.
34 changes: 25 additions & 9 deletions src/chart.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,33 +2,49 @@ import ChartNS from 'chart.js';

export const Chart = ChartNS;
// export const plugins = ChartNS.plugins;
export const controllers = ChartNS.controllers;
export const defaults = ChartNS.defaults;
// export const helpers = ChartNS.helpers;
// export const scaleService = ChartNS.scaleService;

// export const Scale = ChartNS.Scale;
// export const LinearScale = ChartNS.scaleService.getScaleConstructor('linear');
// export const LogarithmicScale = ChartNS.scaleService.getScaleConstructor('logarithmic');

// export const DatasetController = ChartNS.DatasetController;
// export const BarController = controllers.bar;
// export const BubbleController = controllers.bubble;
// export const HorizontalBarController = controllers.horizontalBar;
// export const LineController = controllers.line;
// export const PolarAreaController = controllers.polarArea;
export const ScatterController = controllers.scatter;
// export const BarController = ChartNS.controllers.bar;
// export const BubbleController = ChartNS.controllers.bubble;
// export const HorizontalBarController = ChartNS.controllers.horizontalBar;
// export const LineController = ChartNS.controllers.line;
// export const PolarAreaController = ChartNS.controllers.polarArea;
export const ScatterController = ChartNS.controllers.scatter;

export function registerController(controller) {
ChartNS.controllers[controller.id] = controller;
ChartNS.defaults.set(controller.id, controller.defaults);
return controller;
}

// export const Element = ChartNS.Element;
// export const Rectangle = ChartNS.elements.Rectangle;
// export const Point = ChartNS.elements.Point;
export const Line = ChartNS.elements.Line;
// export const Arc = ChartNS.elements.Arc;

export function registerElement(element) {
ChartNS.defaults.set('elements', {
[element.id]: element.defaults,
});
return element;
}

export const merge = ChartNS.helpers.merge;
// export const drawPoint = ChartNS.helpers.canvas.drawPoint;
// export const resolve = ChartNS.helpers.options.resolve;
// export const color = ChartNS.helpers.color;
// export const valueOrDefault = ChartNS.helpers.valueOrDefault;
export const clipArea = ChartNS.helpers.canvas.clipArea;
export const unclipArea = ChartNS.helpers.canvas.unclipArea;

export function patchControllerConfig(config, controller) {
controller.register();
config.type = controller.id;
return config;
}
39 changes: 17 additions & 22 deletions src/controllers/forceDirected.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Chart, defaults, controllers, merge } from '../chart';
import { Chart, merge, patchControllerConfig, registerController } from '../chart';
import { GraphController } from './graph';
import {
forceSimulation,
Expand All @@ -10,7 +10,6 @@ import {
forceRadial,
forceY,
} from 'd3-force';
import { patchControllerConfig } from './utils';

export class ForceDirectedGraphController extends GraphController {
constructor(chart, datasetIndex) {
Expand Down Expand Up @@ -117,28 +116,24 @@ export class ForceDirectedGraphController extends GraphController {
ForceDirectedGraphController.id = 'forceDirectedGraph';
ForceDirectedGraphController.register = () => {
GraphController.register();
defaults.set(
ForceDirectedGraphController.id,
merge({}, [
defaults[GraphController.id],
{
simulation: {
autoRestart: true,
forces: {
center: true,
collide: false,
link: true,
manyBody: true,
x: false,
y: false,
radial: false,
},
ForceDirectedGraphController.defaults = merge({}, [
GraphController.defaults,
{
simulation: {
autoRestart: true,
forces: {
center: true,
collide: false,
link: true,
manyBody: true,
x: false,
y: false,
radial: false,
},
},
])
);
controllers[ForceDirectedGraphController.id] = ForceDirectedGraphController;
return ForceDirectedGraphController;
},
]);
return registerController(ForceDirectedGraphController);
};

export class ForceDirectedGraphChart extends Chart {
Expand Down
54 changes: 29 additions & 25 deletions src/controllers/graph.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,15 @@
import { Chart, controllers, defaults, ScatterController, clipArea, unclipArea, merge } from '../chart';
import {
Chart,
defaults,
ScatterController,
clipArea,
unclipArea,
merge,
registerController,
patchControllerConfig,
} from '../chart';
import { listenArrayEvents, unlistenArrayEvents } from '../data';
import { EdgeLine } from '../elements';
import { patchControllerConfig } from './utils';

export class GraphController extends ScatterController {
constructor(chart, datasetIndex) {
Expand Down Expand Up @@ -391,34 +399,30 @@ GraphController.register = () => {
'tension',
'stepped',
]);
defaults.set(
GraphController.id,
merge({}, [
defaults.scatter,
{
layout: {
padding: 5,
GraphController.defaults = merge({}, [
defaults.scatter,
{
layout: {
padding: 5,
},
scales: {
x: {
display: false,
},
scales: {
x: {
display: false,
},
y: {
display: false,
},
y: {
display: false,
},
tooltips: {
callbacks: {
label(item, data) {
return data.labels[item.index];
},
},
tooltips: {
callbacks: {
label(item, data) {
return data.labels[item.index];
},
},
},
])
);
controllers[GraphController.id] = GraphController;
return GraphController;
},
]);
return registerController(GraphController);
};

export class GraphChart extends Chart {
Expand Down
78 changes: 35 additions & 43 deletions src/controllers/tree.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { Chart, defaults, controllers, merge } from '../chart';
import { Chart, merge, patchControllerConfig, registerController } from '../chart';
import { GraphController } from './graph';
import { hierarchy, cluster, tree } from 'd3-hierarchy';
import { patchControllerConfig } from './utils';

export class DendogramController extends GraphController {
updateEdgeElement(line, index, properties, mode) {
Expand Down Expand Up @@ -66,39 +65,35 @@ export class DendogramController extends GraphController {
DendogramController.id = 'dendogram';
DendogramController.register = () => {
GraphController.register();
defaults.set(
DendogramController.id,
merge({}, [
defaults[GraphController.id],
{
tree: {
mode: 'dendogram', // dendogram, tree
orientation: 'horizontal', // vertical, horizontal, radial
},
datasets: {
animations: {
numbers: {
type: 'number',
properties: ['x', 'y', 'angle', 'radius', 'rotation', 'borderWidth'],
},
DendogramController.defaults = merge({}, [
GraphController.defaults,
{
tree: {
mode: 'dendogram', // dendogram, tree
orientation: 'horizontal', // vertical, horizontal, radial
},
datasets: {
animations: {
numbers: {
type: 'number',
properties: ['x', 'y', 'angle', 'radius', 'rotation', 'borderWidth'],
},
tension: 0.4,
},
scales: {
x: {
min: -1,
max: 1,
},
y: {
min: -1,
max: 1,
},
tension: 0.4,
},
scales: {
x: {
min: -1,
max: 1,
},
y: {
min: -1,
max: 1,
},
},
])
);
controllers[DendogramController.id] = DendogramController;
return DendogramController;
},
]);
return registerController(DendogramController);
};

export class DendogramChart extends Chart {
Expand All @@ -109,22 +104,19 @@ export class DendogramChart extends Chart {
DendogramChart.id = DendogramController.id;

export class TreeController extends DendogramController {}

TreeController.id = 'tree';
TreeController.register = () => {
DendogramController.register();
defaults.set(
TreeController.id,
merge({}, [
defaults[DendogramController.id],
{
tree: {
mode: 'tree',
},
TreeController.defaults = merge({}, [
DendogramController.defaults,
{
tree: {
mode: 'tree',
},
])
);
controllers[TreeController.id] = TreeController;
return TreeController;
},
]);
return registerController(TreeController);
};

export class TreeChart extends Chart {
Expand Down
5 changes: 0 additions & 5 deletions src/controllers/utils.js

This file was deleted.

16 changes: 6 additions & 10 deletions src/elements/edgeLine.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { defaults, Line } from '../chart';
import { defaults, Line, registerElement } from '../chart';

export class EdgeLine extends Line {
draw(ctx) {
Expand Down Expand Up @@ -90,12 +90,8 @@ export class EdgeLine extends Line {
}
}

EdgeLine._type = 'edgeLine';
EdgeLine.register = () => {
defaults.set('elements', {
[EdgeLine._type]: Object.assign({}, defaults.elements.line, {
tension: 0,
}),
});
return EdgeLine;
};
EdgeLine.id = EdgeLine._type = 'edgeLine';
EdgeLine.defaults = Object.assign({}, defaults.elements.line, {
tension: 0,
});
EdgeLine.register = () => registerElement(EdgeLine);

0 comments on commit bbfaeb1

Please sign in to comment.