|
12 | 12 | var isNumeric = require('fast-isnumeric');
|
13 | 13 | var tinycolor = require('tinycolor2');
|
14 | 14 |
|
| 15 | +var baseTraceAttrs = require('../plots/attributes'); |
15 | 16 | var getColorscale = require('../components/colorscale/get_scale');
|
16 | 17 | var colorscaleNames = Object.keys(require('../components/colorscale/scales'));
|
17 | 18 | var nestedProperty = require('./nested_property');
|
@@ -338,6 +339,35 @@ exports.coerceFont = function(coerce, attr, dfltObj) {
|
338 | 339 | return out;
|
339 | 340 | };
|
340 | 341 |
|
| 342 | +/** Coerce shortcut for 'hoverinfo' |
| 343 | + * handling 1-vs-multi-trace dflt logic |
| 344 | + * |
| 345 | + * @param {object} traceIn : user trace object |
| 346 | + * @param {object} traceOut : full trace object (requires _module ref) |
| 347 | + * @param {object} layoutOut : full layout object (require _dataLength ref) |
| 348 | + * @return {any} : the coerced value |
| 349 | + */ |
| 350 | +exports.coerceHoverinfo = function(traceIn, traceOut, layoutOut) { |
| 351 | + var moduleAttrs = traceOut._module.attributes; |
| 352 | + var attrs = moduleAttrs.hoverinfo ? |
| 353 | + {hoverinfo: moduleAttrs.hoverinfo} : |
| 354 | + baseTraceAttrs; |
| 355 | + |
| 356 | + var valObj = attrs.hoverinfo; |
| 357 | + var dflt; |
| 358 | + |
| 359 | + if(layoutOut._dataLength === 1) { |
| 360 | + var flags = valObj.dflt === 'all' ? |
| 361 | + valObj.flags.slice() : |
| 362 | + valObj.dflt.split('+'); |
| 363 | + |
| 364 | + flags.splice(flags.indexOf('name'), 1); |
| 365 | + dflt = flags.join('+'); |
| 366 | + } |
| 367 | + |
| 368 | + return exports.coerce(traceIn, traceOut, attrs, 'hoverinfo', dflt); |
| 369 | +}; |
| 370 | + |
341 | 371 | exports.validate = function(value, opts) {
|
342 | 372 | var valObject = exports.valObjects[opts.valType];
|
343 | 373 |
|
|
0 commit comments