@domoinc/legend-connector
Version:
LegendConnector - Domo Widget
145 lines (107 loc) • 3.92 kB
Markdown
1. `Widget.js`
At top of the code, add
```
var Legend = require('@domoinc/legend');
var legendConnector = require('@domoinc/legend-connector');
```
After the `_Chart.mergeConfig`, add
```
_Chart.mergeConfig(legendConnector.getLegendConfigs(daTheme2));
```
At the end of the `transform`, add
```
legendConnector.initializeLegend(_Chart, Legend, _Chart._colorScale);
setLegendTriggers();
legendConnector.drawLegend(_Chart, validData, _Chart.a('Series'));
```
The triggers may need modifications to ensure the right data is being passed. The object that the legend returns is `{series: name}`
```
function setLegendTriggers() {
if (_Chart.c('showLegend').value) {
_Chart.on('dispatch:mouseover', function(obj) {
_Chart._legend.trigger('external:mouseover', obj);
});
_Chart.on('dispatch:mouseout', function() {
_Chart._legend.trigger('external:mouseout');
});
_Chart._legend.on('dispatch:mouseover', function(obj) {
_Chart.trigger('external:mouseover', obj.series);
});
_Chart._legend.on('dispatch:mouseout', function() {
_Chart.trigger('external:mouseout');
});
}
}
```
1. `DomoWidget.js`
At the top of the code, add
```
var legendConnector;
if (typeof require !== 'undefined') {
legendConnector = require('@domoinc/legend-connector');
} else {
legendConnector = window.LegendConnector;
}
```
After `bbox` is defined and before the `container` is removed, add
```
var legendPosition = legendConnector.getLegendPosition(container); //gets the client rect for the legend chartbounds
```
After the `dataName` is set and before `return widget`, add
```
legendConnector.setLegendPosition(widget, legendPosition); //update value for legend position, sets a default if undefined
widget.prepareForArtboard = legendConnector.prepareForArtboard(widget, widget.a('Series'));
legendConnector.pullFromArtboard(AutoWidgets, widget, widget.a('Series')); //update legend configs changed on artboard
```
1. `CreateWidget.js`
At the top of the code, add
```
var legendConnector;
if (typeof require !== 'undefined') {
legendConnector = require('@domoinc/legend-connector');
} else {
legendConnector = window.LegendConnector;
}
```
Before `chart.draw(data)` and after `chart` is initialized, add
```
//set default legend position
legendConnector.setLegendPosition(chart);
```
1. `auto.html`
To allow the legend connector to work locally, before the `src/DomoWidget.js` and after the `dist/bundle.js` script tags, add
```
<script type="text/javascript" src="node_modules/@domoinc/legend-connector/dist/bundle.js"></script>
```
1. `index.html`
To allow the legend connector to work locally, before the `src/DomoWidget.js` and after the `dist/bundle.js` script tags, add
```
<script type="text/javascript" src="node_modules/@domoinc/legend-connector/dist/bundle.js"></script>
```
1. `webpack.config.js`
In the externals object, add
```
'@domoinc/legend': {
root: 'Legend',
commonjs: '@domoinc/legend',
commonjs2: '@domoinc/legend',
amd: 'legend'
},
'@domoinc/legend-connector': {
root: 'LegendConnector',
commonjs: '@domoinc/legend-connector',
commonjs2: '@domoinc/legend-connector',
amd: 'legend-connector'
}
```
1. `package.json`
Run these commands to get the dependencies and `package.json` updated:
```
npm install @domoinc/legend -S
npm install @domoinc/legend-connector -S
```
```
"@domoinc/legend": "^6.0.11",
"@domoinc/legend-connector": "0.0.27",
```