mirror of https://github.com/masayuki0812/c3.git
Quite good looking graph derived from d3.js
http://c3js.org
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.2 KiB
82 lines
2.2 KiB
8 years ago
|
import {
|
||
|
CLASS,
|
||
|
isValue,
|
||
|
isFunction,
|
||
|
isString,
|
||
|
isUndefined,
|
||
|
isDefined,
|
||
|
ceil10,
|
||
|
asHalfPixel,
|
||
|
diffDomain,
|
||
|
isEmpty,
|
||
|
notEmpty,
|
||
|
getOption,
|
||
|
hasValue,
|
||
|
sanitise,
|
||
|
getPathBox,
|
||
|
ChartInternal
|
||
|
} from '../chartinternal.js';
|
||
|
|
||
|
const focus = function (targetIds) {
|
||
|
let $$ = this.internal, candidates;
|
||
|
|
||
|
targetIds = $$.mapToTargetIds(targetIds);
|
||
|
candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))),
|
||
|
|
||
|
this.revert();
|
||
|
this.defocus();
|
||
|
candidates.classed(CLASS.focused, true).classed(CLASS.defocused, false);
|
||
|
if ($$.hasArcType()) {
|
||
|
$$.expandArc(targetIds);
|
||
|
}
|
||
|
$$.toggleFocusLegend(targetIds, true);
|
||
|
|
||
|
$$.focusedTargetIds = targetIds;
|
||
|
$$.defocusedTargetIds = $$.defocusedTargetIds.filter((id) => {
|
||
|
return targetIds.indexOf(id) < 0;
|
||
|
});
|
||
|
};
|
||
|
|
||
|
const defocus = function (targetIds) {
|
||
|
let $$ = this.internal, candidates;
|
||
|
|
||
|
targetIds = $$.mapToTargetIds(targetIds);
|
||
|
candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))),
|
||
|
|
||
|
candidates.classed(CLASS.focused, false).classed(CLASS.defocused, true);
|
||
|
if ($$.hasArcType()) {
|
||
|
$$.unexpandArc(targetIds);
|
||
|
}
|
||
|
$$.toggleFocusLegend(targetIds, false);
|
||
|
|
||
|
$$.focusedTargetIds = $$.focusedTargetIds.filter((id) => {
|
||
|
return targetIds.indexOf(id) < 0;
|
||
|
});
|
||
|
$$.defocusedTargetIds = targetIds;
|
||
|
};
|
||
|
|
||
|
const revert = function (targetIds) {
|
||
|
let $$ = this.internal, candidates;
|
||
|
|
||
|
targetIds = $$.mapToTargetIds(targetIds);
|
||
|
candidates = $$.svg.selectAll($$.selectorTargets(targetIds)); // should be for all targets
|
||
|
|
||
|
candidates.classed(CLASS.focused, false).classed(CLASS.defocused, false);
|
||
|
if ($$.hasArcType()) {
|
||
|
$$.unexpandArc(targetIds);
|
||
|
}
|
||
|
if ($$.config.legend_show) {
|
||
|
$$.showLegend(targetIds.filter($$.isLegendToShow.bind($$)));
|
||
|
$$.legend.selectAll($$.selectorLegends(targetIds))
|
||
|
.filter(function () {
|
||
|
return $$.d3.select(this).classed(CLASS.legendItemFocused);
|
||
|
})
|
||
|
.classed(CLASS.legendItemFocused, false);
|
||
|
}
|
||
|
|
||
|
$$.focusedTargetIds = [];
|
||
|
$$.defocusedTargetIds = [];
|
||
|
};
|
||
|
|
||
|
export { focus, defocus, revert };
|