mirror of
https://github.com/chanzuckerberg/cellxgene.git
synced 2026-09-15 12:47:56 +08:00
* revert all commits to before Typescript migration * update compat workflow to match latest deps (#2335) * update compat workflow to match latest deps * attempt to debug * attempt to debug * remove debugging code * typo * update deps to match desktop (#2340) * fix: don't run lint with `--fix` on push tests (#2273) * fix: don't run lint with `--fix` on push tests * npx Co-authored-by: maniarathi <mani.arathi@gmail.com> Co-authored-by: Madison Dunitz <madison.dunitz@chanzuckerberg.com> * rename X_approx_distribution to X_approximate_distribution (#2337) * Correctly handle non-finite numbers in heuristic determination of X distribution (#2342) * handle non-finites explicitly * improve and test edge case handling for distribution estimation * revert debugging changes * code readability * clean up type inferencing (#2332) * unit tests for 64 bit conversion * clean up type handling * type inference tests * more type inference fixes * use schema to determine user intent for data typing * stop using deprecated API * fbs type encoding test * add missing test * add more tests * correctly infer X type for CXG adaptor * lint * fix typo * ts migration * cleanup from PR review * lint * PR review changes * remove unused packages from client (#2359) * remove unused packages from client * add missing peer dep * fix: disable FE auth testing on compatibility tests (#2377) * update: release process (#2277) Co-authored-by: maniarathi <mani.arathi@gmail.com> * fix: remove spaces in param setup (#2380) * delete deploy workflow (#2396) * undo reformatting which now does not pass lint * fix snapshots which changed due to npm dep changes * add missing quoting to snapshot * another snapshot typo fix * TS Revert (2) - replay PR #2347 and #2354 (#2403) * replay edits from PR 2347 * TS Revert (3) - replay edits in PR #2327 (#2404) * replay edits in PR 2327 * TS Revert (4) - replay PR #2355 (#2405) * replay edits in PR 2355 * add additional babel config * reformat with new prettier config Co-authored-by: Severiano Badajoz <sbadajoz@chanzuckerberg.com> Co-authored-by: maniarathi <mani.arathi@gmail.com> Co-authored-by: Madison Dunitz <madison.dunitz@chanzuckerberg.com>
75 lines
2.2 KiB
JavaScript
75 lines
2.2 KiB
JavaScript
/*
|
|
The following actions manage the view stack for annoMatrix.
|
|
|
|
Conventions used and assumed elsewhere in the code base:
|
|
* there will be zero or one clip view, and it will be the TOP view always.
|
|
* there will be zero or more subset views
|
|
|
|
In other words, in our current use, we do not stack multiple clip views but we do
|
|
stack multiple subsets.
|
|
|
|
If these conventions change, code elsewhere (eg. menubar/clip.js) will need to
|
|
change as well.
|
|
*/
|
|
import { AnnoMatrixObsCrossfilter } from "../annoMatrix";
|
|
import {
|
|
_clipAnnoMatrix,
|
|
_userSubsetAnnoMatrix,
|
|
_userResetSubsetAnnoMatrix,
|
|
} from "../util/stateManager/viewStackHelpers";
|
|
|
|
export const clipAction = (min, max) => (dispatch, getState) => {
|
|
/*
|
|
apply a clip to the current annoMatrix. By convention, the clip
|
|
view is ALWAYS the top view.
|
|
*/
|
|
const { annoMatrix: prevAnnoMatrix } = getState();
|
|
const annoMatrix = _clipAnnoMatrix(prevAnnoMatrix, min, max);
|
|
const obsCrossfilter = new AnnoMatrixObsCrossfilter(annoMatrix);
|
|
dispatch({
|
|
type: "set clip quantiles",
|
|
clipQuantiles: { min, max },
|
|
annoMatrix,
|
|
obsCrossfilter,
|
|
});
|
|
};
|
|
|
|
export const subsetAction = () => (dispatch, getState) => {
|
|
/*
|
|
Subset the annoMatrix to the current crossfilter selection by pushing a
|
|
subset view.
|
|
|
|
By convention, a clip view is ALWAYS the top view, so if present, pop
|
|
off and re-apply
|
|
*/
|
|
const { annoMatrix: prevAnnoMatrix, obsCrossfilter: prevObsCrossfilter } =
|
|
getState();
|
|
const annoMatrix = _userSubsetAnnoMatrix(
|
|
prevAnnoMatrix,
|
|
prevObsCrossfilter.allSelectedMask()
|
|
);
|
|
const obsCrossfilter = new AnnoMatrixObsCrossfilter(annoMatrix);
|
|
dispatch({
|
|
type: "subset to selection",
|
|
annoMatrix,
|
|
obsCrossfilter,
|
|
});
|
|
};
|
|
|
|
export const resetSubsetAction = () => (dispatch, getState) => {
|
|
/*
|
|
Reset the annoMatrix to all data. Because we may have multiple views
|
|
stacked, we pop them all. By convention, any clip transformation will
|
|
be the top of the stack, and must be preserved.
|
|
*/
|
|
|
|
const { annoMatrix: prevAnnoMatrix } = getState();
|
|
const annoMatrix = _userResetSubsetAnnoMatrix(prevAnnoMatrix);
|
|
const obsCrossfilter = new AnnoMatrixObsCrossfilter(annoMatrix);
|
|
dispatch({
|
|
type: "reset subset",
|
|
annoMatrix,
|
|
obsCrossfilter,
|
|
});
|
|
};
|