mirror of
https://github.com/chanzuckerberg/cellxgene.git
synced 2026-09-26 09:28:12 +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>
101 lines
3.0 KiB
JavaScript
101 lines
3.0 KiB
JavaScript
import React, { useCallback } from "react";
|
|
import { Button, ButtonGroup, Tooltip, Icon } from "@blueprintjs/core";
|
|
import { IconNames } from "@blueprintjs/icons";
|
|
import * as globals from "../../globals";
|
|
|
|
const HistogramHeader = React.memo(
|
|
({
|
|
fieldId,
|
|
isColorBy,
|
|
onColorByClick,
|
|
onRemoveClick,
|
|
isScatterPlotX,
|
|
isScatterPlotY,
|
|
onScatterPlotXClick,
|
|
onScatterPlotYClick,
|
|
isObs,
|
|
}) => {
|
|
/*
|
|
Render the toolbar for the histogram. Props:
|
|
* fieldId - field identifier, used for various IDs
|
|
* isColorBy - true/false, is this the current color-by
|
|
* onColorByClick - color-by click handler
|
|
* onRemoveClick - optional handler for remove. Button will not render if not defined.
|
|
* isScatterPlotX - optional, true/false if currently the X scatterplot field
|
|
* isScatterPlotY - optional, true/false if currently the Y scatterplot field
|
|
* onScatterPlotXClick - optional, handler for scatterPlot X button.
|
|
* onScatterPlotYClick - optional, handler for scatterPlot X button.
|
|
|
|
Scatterplot controls will not render if either handler unspecified.
|
|
*/
|
|
|
|
const memoizedColorByCallback = useCallback(
|
|
() => onColorByClick(fieldId, isObs),
|
|
[fieldId, isObs]
|
|
);
|
|
|
|
return (
|
|
<div
|
|
style={{
|
|
display: "flex",
|
|
justifyContent: "flex-end",
|
|
paddingBottom: "8px",
|
|
}}
|
|
>
|
|
{onScatterPlotXClick && onScatterPlotYClick ? (
|
|
<span>
|
|
<Icon icon={IconNames.SCATTER_PLOT} style={{ marginRight: 7 }} />
|
|
<ButtonGroup style={{ marginRight: 7 }}>
|
|
<Button
|
|
data-testid={`plot-x-${fieldId}`}
|
|
onClick={onScatterPlotXClick}
|
|
active={isScatterPlotX}
|
|
intent={isScatterPlotX ? "primary" : "none"}
|
|
>
|
|
plot x
|
|
</Button>
|
|
<Button
|
|
data-testid={`plot-y-${fieldId}`}
|
|
onClick={onScatterPlotYClick}
|
|
active={isScatterPlotY}
|
|
intent={isScatterPlotY ? "primary" : "none"}
|
|
>
|
|
plot y
|
|
</Button>
|
|
</ButtonGroup>
|
|
</span>
|
|
) : null}
|
|
{onRemoveClick ? (
|
|
<Button
|
|
minimal
|
|
onClick={onRemoveClick}
|
|
style={{
|
|
color: globals.blue,
|
|
cursor: "pointer",
|
|
marginLeft: 7,
|
|
}}
|
|
>
|
|
remove
|
|
</Button>
|
|
) : null}
|
|
<Tooltip
|
|
content="Use as color scale"
|
|
position="bottom"
|
|
hoverOpenDelay={globals.tooltipHoverOpenDelay}
|
|
>
|
|
<Button
|
|
onClick={memoizedColorByCallback}
|
|
active={isColorBy}
|
|
intent={isColorBy ? "primary" : "none"}
|
|
data-testclass="colorby"
|
|
data-testid={`colorby-${fieldId}`}
|
|
icon="tint"
|
|
/>
|
|
</Tooltip>
|
|
</div>
|
|
);
|
|
}
|
|
);
|
|
|
|
export default HistogramHeader;
|