Skip to content

Commit 7e4d8ab

Browse files
authored
Merge pull request #845 from plotly/registry-use-component
Add registry of component modules
2 parents 7e2448e + 489513b commit 7e4d8ab

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+631
-518
lines changed

src/components/annotations/index.js

+3
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111

1212
var Plotly = require('../../plotly');
1313

14+
exports.moduleType = 'component';
15+
16+
exports.name = 'annotations';
1417

1518
exports.ARROWPATHS = require('./arrow_paths');
1619

src/components/colorbar/draw.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ var tinycolor = require('tinycolor2');
1414

1515
var Plotly = require('../../plotly');
1616
var Plots = require('../../plots/plots');
17+
var Registry = require('../../registry');
1718
var Axes = require('../../plots/cartesian/axes');
1819
var dragElement = require('../dragelement');
1920
var Lib = require('../../lib');
@@ -437,7 +438,7 @@ module.exports = function draw(gd, id) {
437438
function drawTitle(titleClass, titleOpts) {
438439
var trace = getTrace(),
439440
propName;
440-
if(Plots.traceIs(trace, 'markerColorscale')) {
441+
if(Registry.traceIs(trace, 'markerColorscale')) {
441442
propName = 'marker.colorbar.title';
442443
}
443444
else propName = 'colorbar.title';

src/components/drawing/index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
var d3 = require('d3');
1313
var isNumeric = require('fast-isnumeric');
1414

15-
var Plots = require('../../plots/plots');
15+
var Registry = require('../../registry');
1616
var Color = require('../color');
1717
var Colorscale = require('../colorscale');
1818
var Lib = require('../../lib');
@@ -183,7 +183,7 @@ drawing.pointStyle = function(s, trace) {
183183

184184
// only scatter & box plots get marker path and opacity
185185
// bars, histograms don't
186-
if(Plots.traceIs(trace, 'symbols')) {
186+
if(Registry.traceIs(trace, 'symbols')) {
187187
var sizeFn = makeBubbleSizeFn(trace);
188188

189189
s.attr('d', function(d) {

src/components/errorbars/calc.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
var isNumeric = require('fast-isnumeric');
1313

14-
var Plots = require('../../plots/plots');
14+
var Registry = require('../../registry');
1515
var Axes = require('../../plots/cartesian/axes');
1616

1717
var makeComputeError = require('./compute_error');
@@ -24,7 +24,7 @@ module.exports = function calc(gd) {
2424
var calcTrace = calcdata[i],
2525
trace = calcTrace[0].trace;
2626

27-
if(!Plots.traceIs(trace, 'errorBarsOK')) continue;
27+
if(!Registry.traceIs(trace, 'errorBarsOK')) continue;
2828

2929
var xa = Axes.getFromId(gd, trace.xaxis),
3030
ya = Axes.getFromId(gd, trace.yaxis);

src/components/errorbars/defaults.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
var isNumeric = require('fast-isnumeric');
1212

13-
var Plots = require('../../plots/plots');
13+
var Registry = require('../../registry');
1414
var Lib = require('../../lib');
1515

1616
var attributes = require('./attributes');
@@ -70,6 +70,6 @@ module.exports = function(traceIn, traceOut, defaultColor, opts) {
7070
if(!opts.inherit || !containerOut[copyAttr]) {
7171
coerce('color', defaultColor);
7272
coerce('thickness');
73-
coerce('width', Plots.traceIs(traceOut, 'gl3d') ? 0 : 4);
73+
coerce('width', Registry.traceIs(traceOut, 'gl3d') ? 0 : 4);
7474
}
7575
};

src/components/images/index.js

+2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ var attributes = require('./attributes');
1515

1616

1717
module.exports = {
18+
moduleType: 'component',
19+
name: 'images',
1820
draw: draw,
1921
layoutAttributes: attributes,
2022
supplyLayoutDefaults: supplyLayoutDefaults

src/components/legend/defaults.js

+5-4
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,11 @@
99

1010
'use strict';
1111

12+
var Registry = require('../../registry');
1213
var Lib = require('../../lib');
13-
var Plots = require('../../plots/plots');
1414

1515
var attributes = require('./attributes');
16+
var basePlotLayoutAttributes = require('../../plots/layout_attributes');
1617
var helpers = require('./helpers');
1718

1819

@@ -33,10 +34,10 @@ module.exports = function legendDefaults(layoutIn, layoutOut, fullData) {
3334
if(helpers.legendGetsTrace(trace)) {
3435
visibleTraces++;
3536
// always show the legend by default if there's a pie
36-
if(Plots.traceIs(trace, 'pie')) visibleTraces++;
37+
if(Registry.traceIs(trace, 'pie')) visibleTraces++;
3738
}
3839

39-
if((Plots.traceIs(trace, 'bar') && layoutOut.barmode === 'stack') ||
40+
if((Registry.traceIs(trace, 'bar') && layoutOut.barmode === 'stack') ||
4041
['tonextx', 'tonexty'].indexOf(trace.fill) !== -1) {
4142
defaultOrder = helpers.isGrouped({traceorder: defaultOrder}) ?
4243
'grouped+reversed' : 'reversed';
@@ -53,7 +54,7 @@ module.exports = function legendDefaults(layoutIn, layoutOut, fullData) {
5354
}
5455

5556
var showLegend = Lib.coerce(layoutIn, layoutOut,
56-
Plots.layoutAttributes, 'showlegend', visibleTraces > 1);
57+
basePlotLayoutAttributes, 'showlegend', visibleTraces > 1);
5758

5859
if(showLegend === false) return;
5960

src/components/legend/draw.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ var d3 = require('d3');
1414
var Plotly = require('../../plotly');
1515
var Lib = require('../../lib');
1616
var Plots = require('../../plots/plots');
17+
var Registry = require('../../registry');
1718
var dragElement = require('../dragelement');
1819
var Drawing = require('../drawing');
1920
var Color = require('../color');
@@ -108,7 +109,7 @@ module.exports = function draw(gd) {
108109
traces.call(style)
109110
.style('opacity', function(d) {
110111
var trace = d[0].trace;
111-
if(Plots.traceIs(trace, 'pie')) {
112+
if(Registry.traceIs(trace, 'pie')) {
112113
return hiddenSlices.indexOf(d[0].label) !== -1 ? 0.5 : 1;
113114
} else {
114115
return trace.visible === 'legendonly' ? 0.5 : 1;
@@ -337,7 +338,7 @@ function drawTexts(g, gd) {
337338
var legendItem = g.data()[0][0],
338339
fullLayout = gd._fullLayout,
339340
trace = legendItem.trace,
340-
isPie = Plots.traceIs(trace, 'pie'),
341+
isPie = Registry.traceIs(trace, 'pie'),
341342
traceIndex = trace.index,
342343
name = isPie ? legendItem.label : trace.name;
343344

@@ -400,7 +401,7 @@ function setupTraceToggle(g, gd) {
400401
tracei,
401402
newVisible;
402403

403-
if(Plots.traceIs(trace, 'pie')) {
404+
if(Registry.traceIs(trace, 'pie')) {
404405
var thisLabel = legendItem.label,
405406
thisLabelIndex = hiddenSlices.indexOf(thisLabel);
406407

src/components/legend/get_legend_data.js

+2-3
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@
99

1010
'use strict';
1111

12-
var Plots = require('../../plots/plots');
13-
12+
var Registry = require('../../registry');
1413
var helpers = require('./helpers');
1514

1615

@@ -49,7 +48,7 @@ module.exports = function getLegendData(calcdata, opts) {
4948

5049
if(!helpers.legendGetsTrace(trace) || !trace.showlegend) continue;
5150

52-
if(Plots.traceIs(trace, 'pie')) {
51+
if(Registry.traceIs(trace, 'pie')) {
5352
if(!slicesShown[lgroup]) slicesShown[lgroup] = {};
5453

5554
for(j = 0; j < cd.length; j++) {

src/components/legend/helpers.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@
99

1010
'use strict';
1111

12-
var Plots = require('../../plots/plots');
12+
var Registry = require('../../registry');
1313

1414

1515
exports.legendGetsTrace = function legendGetsTrace(trace) {
16-
return trace.visible && Plots.traceIs(trace, 'showLegend');
16+
return trace.visible && Registry.traceIs(trace, 'showLegend');
1717
};
1818

1919
exports.isGrouped = function isGrouped(legendLayout) {

src/components/legend/index.js

+5
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@
1212

1313
var legend = module.exports = {};
1414

15+
16+
legend.moduleType = 'component';
17+
18+
legend.name = 'legend';
19+
1520
legend.layoutAttributes = require('./attributes');
1621

1722
legend.supplyLayoutDefaults = require('./defaults');

src/components/legend/style.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111

1212
var d3 = require('d3');
1313

14+
var Registry = require('../../registry');
1415
var Lib = require('../../lib');
15-
var Plots = require('../../plots/plots');
1616
var Drawing = require('../drawing');
1717
var Color = require('../color');
1818

@@ -165,7 +165,7 @@ function styleBars(d) {
165165
markerLine = marker.line || {},
166166
barpath = d3.select(this).select('g.legendpoints')
167167
.selectAll('path.legendbar')
168-
.data(Plots.traceIs(trace, 'bar') ? [d] : []);
168+
.data(Registry.traceIs(trace, 'bar') ? [d] : []);
169169
barpath.enter().append('path').classed('legendbar', true)
170170
.attr('d', 'M6,6H-6V-6H6Z')
171171
.attr('transform', 'translate(20,0)');
@@ -187,7 +187,7 @@ function styleBoxes(d) {
187187
var trace = d[0].trace,
188188
pts = d3.select(this).select('g.legendpoints')
189189
.selectAll('path.legendbox')
190-
.data(Plots.traceIs(trace, 'box') && trace.visible ? [d] : []);
190+
.data(Registry.traceIs(trace, 'box') && trace.visible ? [d] : []);
191191
pts.enter().append('path').classed('legendbox', true)
192192
// if we want the median bar, prepend M6,0H-6
193193
.attr('d', 'M6,6H-6V-6H6Z')
@@ -210,7 +210,7 @@ function stylePies(d) {
210210
var trace = d[0].trace,
211211
pts = d3.select(this).select('g.legendpoints')
212212
.selectAll('path.legendpie')
213-
.data(Plots.traceIs(trace, 'pie') && trace.visible ? [d] : []);
213+
.data(Registry.traceIs(trace, 'pie') && trace.visible ? [d] : []);
214214
pts.enter().append('path').classed('legendpie', true)
215215
.attr('d', 'M6,6H-6V-6H6Z')
216216
.attr('transform', 'translate(20,0)');

src/components/rangeselector/defaults.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ var buttonAttrs = require('./button_attributes');
1616
var constants = require('./constants');
1717

1818

19-
module.exports = function rangeSelectorDefaults(containerIn, containerOut, layout, counterAxes) {
19+
module.exports = function handleDefaults(containerIn, containerOut, layout, counterAxes) {
2020
var selectorIn = containerIn.rangeselector || {},
2121
selectorOut = containerOut.rangeselector = {};
2222

src/components/rangeselector/index.js

+6-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,12 @@
99
'use strict';
1010

1111

12-
exports.attributes = require('./attributes');
12+
exports.moduleType = 'component';
1313

14-
exports.supplyLayoutDefaults = require('./defaults');
14+
exports.name = 'rangeselector';
15+
16+
exports.layoutAttributes = require('./attributes');
17+
18+
exports.handleDefaults = require('./defaults');
1519

1620
exports.draw = require('./draw');

src/components/rangeslider/defaults.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ var Lib = require('../../lib');
1212
var attributes = require('./attributes');
1313

1414

15-
module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, axName, counterAxes) {
15+
module.exports = function handleDefaults(layoutIn, layoutOut, axName, counterAxes) {
1616
if(!layoutIn[axName].rangeslider) return;
1717

1818
var containerIn = Lib.isPlainObject(layoutIn[axName].rangeslider) ?

src/components/rangeslider/index.js

+7-3
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,16 @@
1212
var Plots = require('../../plots/plots');
1313

1414
var createSlider = require('./create_slider');
15-
var supplyLayoutDefaults = require('./defaults');
15+
var layoutAttributes = require('./attributes');
16+
var handleDefaults = require('./defaults');
1617

1718

1819
module.exports = {
19-
draw: draw,
20-
supplyLayoutDefaults: supplyLayoutDefaults
20+
moduleType: 'component',
21+
name: 'rangeslider',
22+
layoutAttributes: layoutAttributes,
23+
handleDefaults: handleDefaults,
24+
draw: draw
2125
};
2226

2327
function draw(gd) {

src/components/shapes/index.js

+3
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99

1010
'use strict';
1111

12+
exports.moduleType = 'component';
13+
14+
exports.name = 'shapes';
1215

1316
exports.layoutAttributes = require('./attributes');
1417

src/components/updatemenus/index.js

+4
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@
99
'use strict';
1010

1111

12+
exports.moduleType = 'component';
13+
14+
exports.name = 'updatemenus';
15+
1216
exports.layoutAttributes = require('./attributes');
1317

1418
exports.supplyLayoutDefaults = require('./defaults');

src/core.js

+27-4
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,15 @@ var Plotly = require('./plotly');
1717
// package version injected by `npm run preprocess`
1818
exports.version = '1.16.2';
1919

20+
// inject promise polyfill
21+
require('es6-promise').polyfill();
22+
23+
// inject plot css
24+
require('../build/plotcss');
25+
26+
// inject default MathJax config
27+
require('./fonts/mathjax_config');
28+
2029
// plot api
2130
exports.plot = Plotly.plot;
2231
exports.newPlot = Plotly.newPlot;
@@ -30,20 +39,34 @@ exports.deleteTraces = Plotly.deleteTraces;
3039
exports.moveTraces = Plotly.moveTraces;
3140
exports.purge = Plotly.purge;
3241
exports.setPlotConfig = require('./plot_api/set_plot_config');
33-
exports.register = Plotly.register;
42+
exports.register = require('./plot_api/register');
3443
exports.toImage = require('./plot_api/to_image');
3544
exports.downloadImage = require('./snapshot/download');
3645
exports.validate = require('./plot_api/validate');
3746

47+
// scatter is the only trace included by default
48+
exports.register(require('./traces/scatter'));
49+
50+
// register all registrable components modules
51+
exports.register([
52+
require('./components/legend'),
53+
require('./components/annotations'),
54+
require('./components/shapes'),
55+
require('./components/images'),
56+
require('./components/updatemenus'),
57+
require('./components/rangeslider'),
58+
require('./components/rangeselector')
59+
]);
60+
3861
// plot icons
3962
exports.Icons = require('../build/ploticon');
4063

4164
// unofficial 'beta' plot methods, use at your own risk
4265
exports.Plots = Plotly.Plots;
4366
exports.Fx = Plotly.Fx;
44-
exports.Snapshot = Plotly.Snapshot;
45-
exports.PlotSchema = Plotly.PlotSchema;
46-
exports.Queue = Plotly.Queue;
67+
exports.Snapshot = require('./snapshot');
68+
exports.PlotSchema = require('./plot_api/plot_schema');
69+
exports.Queue = require('./lib/queue');
4770

4871
// export d3 used in the bundle
4972
exports.d3 = require('d3');

src/lib/index.js

+3
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,9 @@ lib.bBoxIntersect = function(a, b, pad) {
121121
// minor convenience/performance booster for d3...
122122
lib.identity = function(d) { return d; };
123123

124+
// minor convenience helper
125+
lib.noop = function() {};
126+
124127
// random string generator
125128
lib.randstr = function randstr(existing, bits, base) {
126129
/*

0 commit comments

Comments
 (0)