Skip to content

Commit 195a849

Browse files
committed
add editInChartStudio modebar button + showEditInChartStudio config opt
1 parent cdcd3cc commit 195a849

File tree

4 files changed

+44
-9
lines changed

4 files changed

+44
-9
lines changed

src/components/modebar/buttons.js

+9
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,15 @@ modeBarButtons.sendDataToCloud = {
8989
}
9090
};
9191

92+
modeBarButtons.editInChartStudio = {
93+
name: 'editInChartStudio',
94+
title: function(gd) { return _(gd, 'Edit in Chart Studio'); },
95+
icon: Icons.pencil,
96+
click: function(gd) {
97+
Plots.sendDataToCloud(gd);
98+
}
99+
};
100+
92101
modeBarButtons.zoom2d = {
93102
name: 'zoom2d',
94103
title: function(gd) { return _(gd, 'Zoom'); },

src/components/modebar/manage.js

+7-8
Original file line numberDiff line numberDiff line change
@@ -59,22 +59,20 @@ module.exports = function manageModeBar(gd) {
5959
} else if(!context.displayModeBar && context.watermark) {
6060
buttonGroups = [];
6161
} else {
62-
buttonGroups = getButtonGroups(
63-
gd,
64-
context.modeBarButtonsToRemove,
65-
context.modeBarButtonsToAdd,
66-
context.showSendToCloud
67-
);
62+
buttonGroups = getButtonGroups(gd);
6863
}
6964

7065
if(modeBar) modeBar.update(gd, buttonGroups);
7166
else fullLayout._modeBar = createModeBar(gd, buttonGroups);
7267
};
7368

7469
// logic behind which buttons are displayed by default
75-
function getButtonGroups(gd, buttonsToRemove, buttonsToAdd, showSendToCloud) {
70+
function getButtonGroups(gd) {
7671
var fullLayout = gd._fullLayout;
7772
var fullData = gd._fullData;
73+
var context = gd._context;
74+
var buttonsToRemove = context.modeBarButtonsToRemove;
75+
var buttonsToAdd = context.modeBarButtonsToAdd;
7876

7977
var hasCartesian = fullLayout._has('cartesian');
8078
var hasGL3D = fullLayout._has('gl3d');
@@ -106,7 +104,8 @@ function getButtonGroups(gd, buttonsToRemove, buttonsToAdd, showSendToCloud) {
106104

107105
// buttons common to all plot types
108106
var commonGroup = ['toImage'];
109-
if(showSendToCloud) commonGroup.push('sendDataToCloud');
107+
if(context.showEditInChartStudio) commonGroup.push('editInChartStudio');
108+
else if(context.showSendToCloud) commonGroup.push('sendDataToCloud');
110109
addGroup(commonGroup);
111110

112111
var zoomGroup = [];

src/plot_api/plot_config.js

+9
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,15 @@ var configAttributes = {
257257
'until you arrive at the Chart Studio and explicitly click "Save".'
258258
].join(' ')
259259
},
260+
showEditInChartStudio: {
261+
valType: 'boolean',
262+
dflt: false,
263+
description: [
264+
'Same as `showSendToCloud`, but use a pencil icon instead of a floppy-disk.',
265+
'Note that if both `showSendToCloud` and `showEditInChartStudio` are turned,',
266+
'only `showEditInChartStudio` will be honored.'
267+
].join(' ')
268+
},
260269
modeBarButtonsToRemove: {
261270
valType: 'any',
262271
dflt: [],

test/jasmine/tests/modebar_test.js

+19-1
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ describe('ModeBar', function() {
5252
_context: {
5353
displaylogo: true,
5454
showSendToCloud: false,
55+
showEditInChartStudio: false,
5556
displayModeBar: true,
5657
modeBarButtonsToRemove: [],
5758
modeBarButtonsToAdd: [],
@@ -804,7 +805,7 @@ describe('ModeBar', function() {
804805
expect(countLogo(gd._fullLayout._modeBar)).toEqual(0);
805806
});
806807

807-
it('displays/hides cloud link according to showSendToCloud config arg', function() {
808+
it('displays/hides cloud link according to showSendToCloud and/or showEditInChartStudio config arg', function() {
808809
var gd = getMockGraphInfo();
809810
gd._fullLayout._basePlotModules = [{ name: 'pie' }];
810811
gd._fullData = [{type: 'pie'}];
@@ -815,11 +816,28 @@ describe('ModeBar', function() {
815816
]), 1);
816817

817818
gd._context.showSendToCloud = true;
819+
gd._context.showEditInChartStudio = false;
818820
manageModeBar(gd);
819821
checkButtons(gd._fullLayout._modeBar, getButtons([
820822
['toImage', 'sendDataToCloud'],
821823
['hoverClosestPie']
822824
]), 1);
825+
826+
gd._context.showSendToCloud = false;
827+
gd._context.showEditInChartStudio = true;
828+
manageModeBar(gd);
829+
checkButtons(gd._fullLayout._modeBar, getButtons([
830+
['toImage', 'editInChartStudio'],
831+
['hoverClosestPie']
832+
]), 1);
833+
834+
gd._context.showSendToCloud = true;
835+
gd._context.showEditInChartStudio = true;
836+
manageModeBar(gd);
837+
checkButtons(gd._fullLayout._modeBar, getButtons([
838+
['toImage', 'editInChartStudio'],
839+
['hoverClosestPie']
840+
]), 1);
823841
});
824842

825843
it('always displays the logo if watermark config arg is true', function() {

0 commit comments

Comments
 (0)