mirror of
https://github.com/chanzuckerberg/cellxgene.git
synced 2026-10-03 15:48:11 +08:00
crossfilter immutability error (#1009)
* add rename immutability test * make rename immutable
This commit is contained in:
@@ -168,6 +168,9 @@ describe("ImmutableTypedCrossfilter", () => {
|
|||||||
|
|
||||||
const p4 = p3.delDimension("quantity");
|
const p4 = p3.delDimension("quantity");
|
||||||
expect(p4).not.toBe(p3);
|
expect(p4).not.toBe(p3);
|
||||||
|
|
||||||
|
const p5 = p2.renameDimension("quantity", "Quantity");
|
||||||
|
expect(p5).not.toBe(p2);
|
||||||
});
|
});
|
||||||
|
|
||||||
test("select all and none", () => {
|
test("select all and none", () => {
|
||||||
|
|||||||
@@ -125,20 +125,17 @@ export default class ImmutableTypedCrossfilter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
renameDimension(oldName, newName) {
|
renameDimension(oldName, newName) {
|
||||||
/*
|
|
||||||
rename a dimension
|
|
||||||
*/
|
|
||||||
const { [oldName]: dim, ...dimensions } = this.dimensions;
|
const { [oldName]: dim, ...dimensions } = this.dimensions;
|
||||||
const { data, selectionCache } = this;
|
const { data, selectionCache } = this;
|
||||||
dim.dim.rename(newName);
|
const newDimensions = {
|
||||||
return new ImmutableTypedCrossfilter(
|
...dimensions,
|
||||||
data,
|
[newName]: {
|
||||||
{
|
...dim,
|
||||||
...dimensions,
|
name: newName,
|
||||||
[newName]: dim
|
dim: dim.dim.rename(newName)
|
||||||
},
|
}
|
||||||
selectionCache
|
};
|
||||||
);
|
return new ImmutableTypedCrossfilter(data, newDimensions, selectionCache);
|
||||||
}
|
}
|
||||||
|
|
||||||
select(name, spec) {
|
select(name, spec) {
|
||||||
@@ -316,8 +313,14 @@ class _ImmutableBaseDimension {
|
|||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
clone() {
|
||||||
|
return Object.assign(Object.create(Object.getPrototypeOf(this)), this);
|
||||||
|
}
|
||||||
|
|
||||||
rename(name) {
|
rename(name) {
|
||||||
this.name = name;
|
const d = this.clone();
|
||||||
|
d.name = name;
|
||||||
|
return d;
|
||||||
}
|
}
|
||||||
|
|
||||||
select(spec) {
|
select(spec) {
|
||||||
|
|||||||
Reference in New Issue
Block a user