Skip to content

Commit

Permalink
Merge pull request elastic#8593 from elastic/jasper/backport/8448/5.x
Browse files Browse the repository at this point in the history
[backport] PR elastic#8448 to 5.x - Add highlight opacity as global setting

Former-commit-id: 0b58581
  • Loading branch information
epixa authored Oct 10, 2016
2 parents df418ea + bddc660 commit ae33a94
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 14 deletions.
35 changes: 21 additions & 14 deletions src/ui/public/vislib/lib/dispatch.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@ import d3 from 'd3';
import _ from 'lodash';
import $ from 'jquery';
import SimpleEmitter from 'ui/utils/simple_emitter';
import VislibComponentsTooltipProvider from 'ui/vislib/components/tooltip';
export default function DispatchClass(Private) {

export default function DispatchClass(Private, config) {

/**
* Handles event responses
*
Expand Down Expand Up @@ -214,33 +215,33 @@ export default function DispatchClass(Private) {
* Mouseover Behavior
*
* @method addMousePointer
* @returns {D3.Selection}
* @returns {d3.Selection}
*/
addMousePointer() {
return d3.select(this).style('cursor', 'pointer');
};

/**
* Mouseover Behavior
*
* @param element {D3.Selection}
* Highlight the element that is under the cursor
* by reducing the opacity of all the elements on the graph.
* @param element {d3.Selection}
* @method highlight
*/
highlight(element) {
const label = this.getAttribute('data-label');
if (!label) return;
//Opacity 1 is needed to avoid the css application
$('[data-label]', element.parentNode).css('opacity', 1).not(
function (els, el) {
return `${$(el).data('label')}` === label;
}
).css('opacity', 0.5);
};

const dimming = config.get('visualization:dimmingOpacity');
$(element).parent().find('[data-label]')
.css('opacity', 1)//Opacity 1 is needed to avoid the css application
.not((els, el) => $(el).data('label') === label)
.css('opacity', justifyOpacity(dimming));
}

/**
* Mouseout Behavior
*
* @param element {D3.Selection}
* @param element {d3.Selection}
* @method unHighlight
*/
unHighlight(element) {
Expand Down Expand Up @@ -310,5 +311,11 @@ export default function DispatchClass(Private) {
}


function justifyOpacity(opacity) {
const decimalNumber = parseFloat(opacity, 10);
const fallbackOpacity = 0.5;
return (0 <= decimalNumber && decimalNumber <= 1) ? decimalNumber : fallbackOpacity;
}

return Dispatch;
};
7 changes: 7 additions & 0 deletions src/ui/settings/defaults.js
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,13 @@ export default function defaultSettingsProvider() {
value: '2s',
description: 'Time to wait before dimming visualizations during query'
},
'visualization:dimmingOpacity': {
type: 'number',
value: 0.5,
description: 'The opacity of the chart items that are dimmed when highlighting another element of the chart. ' +
'The lower this number, the more the highlighted element will stand out.' +
'This must be a number between 0 and 1.'
},
'csv:separator': {
value: ',',
description: 'Separate exported values with this string',
Expand Down

0 comments on commit ae33a94

Please sign in to comment.