Skip to content

Commit

Permalink
chore: detect if a previously create filter is selected upon event tr…
Browse files Browse the repository at this point in the history
…igger
  • Loading branch information
hkang1 committed Feb 3, 2022
1 parent a4c7db6 commit a0359a3
Show file tree
Hide file tree
Showing 5 changed files with 70 additions and 35 deletions.
26 changes: 17 additions & 9 deletions dist/hermes.cjs.js
Original file line number Diff line number Diff line change
Expand Up @@ -1467,6 +1467,21 @@ class Hermes {
}
this._ = _;
}
setActiveFilter(key, pos, value) {
const _filters = this.filters;
const _drf = this.drag.filters;
// See if there is an existing matching filter based on position.
const index = (_filters[key] || []).findIndex(filter => pos >= filter.p0 && pos <= filter.p1);
if (index !== -1) {
_drf.active = _filters[key][index];
}
else {
_drf.active = { p0: pos, p1: pos, value0: value, value1: value };
// Store active filter into filter list.
_filters[key] = _filters[key] || [];
_filters[key].push(_drf.active);
}
}
updateActiveFilter(finalize = false) {
if (!this._)
return;
Expand Down Expand Up @@ -1502,10 +1517,6 @@ class Hermes {
const removeIndex = filters.findIndex(filter => pos >= filter.p0 && pos <= filter.p1);
if (removeIndex !== -1)
filters.splice(removeIndex, 1);
// Remove newly created active filter.
const activeIndex = filters.findIndex(filter => filter === _drf.active);
if (activeIndex !== -1)
filters.splice(activeIndex, 1);
}
// Swap p0 and p1 if p1 is less than p0.
if (_drf.active.p1 < _drf.active.p0) {
Expand Down Expand Up @@ -1697,7 +1708,7 @@ class Hermes {
return;
const [x, y] = [e.clientX, e.clientY];
const _drag = this.drag;
const _filters = this.filters;
this.filters;
const _drs = this.drag.shared;
const _drd = this.drag.dimension;
const _drf = this.drag.filters;
Expand Down Expand Up @@ -1729,10 +1740,7 @@ class Hermes {
_drf.key = this.dimensions[i].key;
const p0 = _drs.p0[filterKey] - bound[filterKey] - axisStart[filterKey];
const value0 = getAxisPositionValue(p0, axisStop[filterKey] - axisStart[filterKey], this.dimensions[i].axis.scale);
_drf.active = { p0, p1: p0, value0, value1: value0 };
// Store active filter into filter list.
_filters[_drf.key] = _filters[_drf.key] || [];
_filters[_drf.key].push(_drf.active);
this.setActiveFilter(_drf.key, p0, value0);
}
});
}
Expand Down
1 change: 1 addition & 0 deletions dist/hermes.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ declare class Hermes {
private calculate;
private calculateScales;
private calculateLayout;
private setActiveFilter;
private updateActiveFilter;
private mergeFilters;
private draw;
Expand Down
26 changes: 17 additions & 9 deletions dist/hermes.esm.js
Original file line number Diff line number Diff line change
Expand Up @@ -1465,6 +1465,21 @@ class Hermes {
}
this._ = _;
}
setActiveFilter(key, pos, value) {
const _filters = this.filters;
const _drf = this.drag.filters;
// See if there is an existing matching filter based on position.
const index = (_filters[key] || []).findIndex(filter => pos >= filter.p0 && pos <= filter.p1);
if (index !== -1) {
_drf.active = _filters[key][index];
}
else {
_drf.active = { p0: pos, p1: pos, value0: value, value1: value };
// Store active filter into filter list.
_filters[key] = _filters[key] || [];
_filters[key].push(_drf.active);
}
}
updateActiveFilter(finalize = false) {
if (!this._)
return;
Expand Down Expand Up @@ -1500,10 +1515,6 @@ class Hermes {
const removeIndex = filters.findIndex(filter => pos >= filter.p0 && pos <= filter.p1);
if (removeIndex !== -1)
filters.splice(removeIndex, 1);
// Remove newly created active filter.
const activeIndex = filters.findIndex(filter => filter === _drf.active);
if (activeIndex !== -1)
filters.splice(activeIndex, 1);
}
// Swap p0 and p1 if p1 is less than p0.
if (_drf.active.p1 < _drf.active.p0) {
Expand Down Expand Up @@ -1695,7 +1706,7 @@ class Hermes {
return;
const [x, y] = [e.clientX, e.clientY];
const _drag = this.drag;
const _filters = this.filters;
this.filters;
const _drs = this.drag.shared;
const _drd = this.drag.dimension;
const _drf = this.drag.filters;
Expand Down Expand Up @@ -1727,10 +1738,7 @@ class Hermes {
_drf.key = this.dimensions[i].key;
const p0 = _drs.p0[filterKey] - bound[filterKey] - axisStart[filterKey];
const value0 = getAxisPositionValue(p0, axisStop[filterKey] - axisStart[filterKey], this.dimensions[i].axis.scale);
_drf.active = { p0, p1: p0, value0, value1: value0 };
// Store active filter into filter list.
_filters[_drf.key] = _filters[_drf.key] || [];
_filters[_drf.key].push(_drf.active);
this.setActiveFilter(_drf.key, p0, value0);
}
});
}
Expand Down
26 changes: 17 additions & 9 deletions dist/hermes.iife.js
Original file line number Diff line number Diff line change
Expand Up @@ -1468,6 +1468,21 @@ var Hermes = (function () {
}
this._ = _;
}
setActiveFilter(key, pos, value) {
const _filters = this.filters;
const _drf = this.drag.filters;
// See if there is an existing matching filter based on position.
const index = (_filters[key] || []).findIndex(filter => pos >= filter.p0 && pos <= filter.p1);
if (index !== -1) {
_drf.active = _filters[key][index];
}
else {
_drf.active = { p0: pos, p1: pos, value0: value, value1: value };
// Store active filter into filter list.
_filters[key] = _filters[key] || [];
_filters[key].push(_drf.active);
}
}
updateActiveFilter(finalize = false) {
if (!this._)
return;
Expand Down Expand Up @@ -1503,10 +1518,6 @@ var Hermes = (function () {
const removeIndex = filters.findIndex(filter => pos >= filter.p0 && pos <= filter.p1);
if (removeIndex !== -1)
filters.splice(removeIndex, 1);
// Remove newly created active filter.
const activeIndex = filters.findIndex(filter => filter === _drf.active);
if (activeIndex !== -1)
filters.splice(activeIndex, 1);
}
// Swap p0 and p1 if p1 is less than p0.
if (_drf.active.p1 < _drf.active.p0) {
Expand Down Expand Up @@ -1698,7 +1709,7 @@ var Hermes = (function () {
return;
const [x, y] = [e.clientX, e.clientY];
const _drag = this.drag;
const _filters = this.filters;
this.filters;
const _drs = this.drag.shared;
const _drd = this.drag.dimension;
const _drf = this.drag.filters;
Expand Down Expand Up @@ -1730,10 +1741,7 @@ var Hermes = (function () {
_drf.key = this.dimensions[i].key;
const p0 = _drs.p0[filterKey] - bound[filterKey] - axisStart[filterKey];
const value0 = getAxisPositionValue(p0, axisStop[filterKey] - axisStart[filterKey], this.dimensions[i].axis.scale);
_drf.active = { p0, p1: p0, value0, value1: value0 };
// Store active filter into filter list.
_filters[_drf.key] = _filters[_drf.key] || [];
_filters[_drf.key].push(_drf.active);
this.setActiveFilter(_drf.key, p0, value0);
}
});
}
Expand Down
26 changes: 18 additions & 8 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -396,6 +396,23 @@ class Hermes {
this._ = _;
}

private setActiveFilter(key: string, pos: number, value: t.Primitive): void {
const _filters = this.filters;
const _drf = this.drag.filters;

// See if there is an existing matching filter based on position.
const index = (_filters[key] || []).findIndex(filter => pos >= filter.p0 && pos <= filter.p1);
if (index !== -1) {
_drf.active = _filters[key][index];
} else {
_drf.active = { p0: pos, p1: pos, value0: value, value1: value };

// Store active filter into filter list.
_filters[key] = _filters[key] || [];
_filters[key].push(_drf.active);
}
}

private updateActiveFilter(finalize = false): void {
if (!this._) return;

Expand Down Expand Up @@ -438,10 +455,6 @@ class Hermes {
const pos = (_drf.active.p1 - _drf.active.p0) / 2 + _drf.active.p0;
const removeIndex = filters.findIndex(filter => pos >= filter.p0 && pos <= filter.p1);
if (removeIndex !== -1) filters.splice(removeIndex, 1);

// Remove newly created active filter.
const activeIndex = filters.findIndex(filter => filter === _drf.active);
if (activeIndex !== -1) filters.splice(activeIndex, 1);
}

// Swap p0 and p1 if p1 is less than p0.
Expand Down Expand Up @@ -718,11 +731,8 @@ class Hermes {
axisStop[filterKey] - axisStart[filterKey],
this.dimensions[i].axis.scale,
);
_drf.active = { p0, p1: p0, value0, value1: value0 };

// Store active filter into filter list.
_filters[_drf.key] = _filters[_drf.key] || [];
_filters[_drf.key].push(_drf.active);
this.setActiveFilter(_drf.key, p0, value0);
}
});
}
Expand Down

0 comments on commit a0359a3

Please sign in to comment.