diff --git a/src/elements/element.interval.js b/src/elements/element.interval.js index 887650379..3241685ad 100644 --- a/src/elements/element.interval.js +++ b/src/elements/element.interval.js @@ -201,7 +201,7 @@ export class Interval extends Element { var elements = options .container .selectAll('.frame') - .data(fibers); + .data(fibers, (d) => d.getKey()); elements .exit() .remove(); diff --git a/src/models/cartesian-grammar.js b/src/models/cartesian-grammar.js index efea90d29..e8d482599 100644 --- a/src/models/cartesian-grammar.js +++ b/src/models/cartesian-grammar.js @@ -402,7 +402,7 @@ export class CartesianGrammar { return (Object .keys(groups) .sort((a, b) => model.order(a) - model.order(b)) - .reduce((memo, k) => memo.concat([groups[k]]), [])); + .reduce((memo, k) => memo.concat([setKeyGetter(groups[k], k)]), [])); } static isNonSyntheticRecord(row) { @@ -449,4 +449,11 @@ export class CartesianGrammar { }, [])); } -} \ No newline at end of file +} + +function setKeyGetter(arr, key) { + arr.getKey = function () { + return key; + }; + return arr; +}