mirror of
https://github.com/chanzuckerberg/cellxgene.git
synced 2026-10-08 02:58:12 +08:00
refactor to use Truncate component
This commit is contained in:
@@ -2,14 +2,14 @@ import React from "react";
|
|||||||
import _ from "lodash";
|
import _ from "lodash";
|
||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
import { FaChevronRight, FaChevronDown } from "react-icons/fa";
|
import { FaChevronRight, FaChevronDown } from "react-icons/fa";
|
||||||
import { AnchorButton, Button, Tooltip, Position } from "@blueprintjs/core";
|
import { AnchorButton, Button, Tooltip } from "@blueprintjs/core";
|
||||||
import CategoryFlipperLayout from "./categoryFlipperLayout";
|
import CategoryFlipperLayout from "./categoryFlipperLayout";
|
||||||
import AnnoMenu from "./annoMenuCategory";
|
import AnnoMenu from "./annoMenuCategory";
|
||||||
import AnnoDialogEditCategoryName from "./annoDialogEditCategoryName";
|
import AnnoDialogEditCategoryName from "./annoDialogEditCategoryName";
|
||||||
import AnnoDialogAddLabel from "./annoDialogAddLabel";
|
import AnnoDialogAddLabel from "./annoDialogAddLabel";
|
||||||
|
import Truncate from "../../util/truncate";
|
||||||
|
|
||||||
import * as globals from "../../../globals";
|
import * as globals from "../../../globals";
|
||||||
import maybeTruncateString from "../../../util/maybeTruncateString";
|
|
||||||
|
|
||||||
@connect((state, ownProps) => {
|
@connect((state, ownProps) => {
|
||||||
const { metadataField } = ownProps;
|
const { metadataField } = ownProps;
|
||||||
@@ -114,10 +114,6 @@ class Category extends React.Component {
|
|||||||
We are still loading this category, so render a "busy" signal.
|
We are still loading this category, so render a "busy" signal.
|
||||||
*/
|
*/
|
||||||
const { metadataField } = this.props;
|
const { metadataField } = this.props;
|
||||||
const truncatedString = maybeTruncateString(
|
|
||||||
metadataField,
|
|
||||||
globals.categoryDisplayStringMaxLength
|
|
||||||
);
|
|
||||||
|
|
||||||
const checkboxID = `category-select-${metadataField}`;
|
const checkboxID = `category-select-${metadataField}`;
|
||||||
|
|
||||||
@@ -145,26 +141,16 @@ class Category extends React.Component {
|
|||||||
<input disabled id={checkboxID} checked type="checkbox" />
|
<input disabled id={checkboxID} checked type="checkbox" />
|
||||||
<span className="bp3-control-indicator" />
|
<span className="bp3-control-indicator" />
|
||||||
</label>
|
</label>
|
||||||
<Tooltip
|
<Truncate fontSize={12} size={220}>
|
||||||
content={metadataField}
|
|
||||||
disabled={truncatedString === null}
|
|
||||||
hoverOpenDelay={globals.tooltipHoverOpenDelayQuick}
|
|
||||||
position={Position.LEFT}
|
|
||||||
usePortal
|
|
||||||
modifiers={{
|
|
||||||
preventOverflow: { enabled: false },
|
|
||||||
hide: { enabled: false },
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<span
|
<span
|
||||||
style={{
|
style={{
|
||||||
cursor: "pointer",
|
cursor: "pointer",
|
||||||
display: "inline-block",
|
display: "inline-block",
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{truncatedString || metadataField}
|
{metadataField}
|
||||||
</span>
|
</span>
|
||||||
</Tooltip>
|
</Truncate>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<Button minimal loading intent="primary" />
|
<Button minimal loading intent="primary" />
|
||||||
@@ -199,21 +185,20 @@ class Category extends React.Component {
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
const truncatedString = maybeTruncateString(
|
|
||||||
metadataField,
|
|
||||||
globals.categoryDisplayStringMaxLength
|
|
||||||
);
|
|
||||||
|
|
||||||
if (
|
if (
|
||||||
!isUserAnno &&
|
!isUserAnno &&
|
||||||
schema?.annotations?.obsByName[metadataField]?.categories?.length === 1
|
schema?.annotations?.obsByName[metadataField]?.categories?.length === 1
|
||||||
) {
|
) {
|
||||||
return (
|
return (
|
||||||
<div style={{ marginBottom: 10, marginTop: 4 }}>
|
<div style={{ marginBottom: 10, marginTop: 4 }}>
|
||||||
<span style={{ fontWeight: 700 }}>
|
<Truncate size={150} fontSize={12}>
|
||||||
{truncatedString || metadataField}
|
<span style={{ fontWeight: 700 }}>{metadataField}</span>
|
||||||
</span>
|
</Truncate>
|
||||||
: {schema.annotations.obsByName[metadataField].categories[0]}
|
<Truncate size={150} fontSize={12}>
|
||||||
|
<span>
|
||||||
|
{`: ${schema.annotations.obsByName[metadataField].categories[0]}`}
|
||||||
|
</span>
|
||||||
|
</Truncate>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -246,46 +231,36 @@ class Category extends React.Component {
|
|||||||
/>
|
/>
|
||||||
<span className="bp3-control-indicator" />
|
<span className="bp3-control-indicator" />
|
||||||
</label>
|
</label>
|
||||||
<Tooltip
|
<span
|
||||||
content={metadataField}
|
role="menuitem"
|
||||||
disabled={truncatedString === null}
|
tabIndex="0"
|
||||||
hoverOpenDelay={globals.tooltipHoverOpenDelayQuick}
|
data-testid={`${metadataField}:category-expand`}
|
||||||
position={Position.LEFT}
|
onKeyPress={(e) => {
|
||||||
usePortal
|
if (e.key === "Enter") {
|
||||||
modifiers={{
|
this.handleCategoryClick();
|
||||||
preventOverflow: { enabled: false },
|
}
|
||||||
hide: { enabled: false },
|
|
||||||
}}
|
}}
|
||||||
|
style={{
|
||||||
|
cursor: "pointer",
|
||||||
|
display: "inline-block",
|
||||||
|
}}
|
||||||
|
onClick={this.handleCategoryClick}
|
||||||
>
|
>
|
||||||
<span
|
<Truncate fontSize={12} size={220}>
|
||||||
role="menuitem"
|
<span>{metadataField}</span>
|
||||||
tabIndex="0"
|
</Truncate>
|
||||||
data-testid={`${metadataField}:category-expand`}
|
{isExpanded ? (
|
||||||
onKeyPress={(e) => {
|
<FaChevronDown
|
||||||
if (e.key === "Enter") {
|
data-testclass="category-expand-is-expanded"
|
||||||
this.handleCategoryClick();
|
style={{ fontSize: 10, marginLeft: 5 }}
|
||||||
}
|
/>
|
||||||
}}
|
) : (
|
||||||
style={{
|
<FaChevronRight
|
||||||
cursor: "pointer",
|
data-testclass="category-expand-is-not-expanded"
|
||||||
display: "inline-block",
|
style={{ fontSize: 10, marginLeft: 5 }}
|
||||||
}}
|
/>
|
||||||
onClick={this.handleCategoryClick}
|
)}
|
||||||
>
|
</span>
|
||||||
{truncatedString || metadataField}
|
|
||||||
{isExpanded ? (
|
|
||||||
<FaChevronDown
|
|
||||||
data-testclass="category-expand-is-expanded"
|
|
||||||
style={{ fontSize: 10, marginLeft: 5 }}
|
|
||||||
/>
|
|
||||||
) : (
|
|
||||||
<FaChevronRight
|
|
||||||
data-testclass="category-expand-is-not-expanded"
|
|
||||||
style={{ fontSize: 10, marginLeft: 5 }}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
</span>
|
|
||||||
</Tooltip>
|
|
||||||
</div>
|
</div>
|
||||||
{<AnnoDialogEditCategoryName metadataField={metadataField} />}
|
{<AnnoDialogEditCategoryName metadataField={metadataField} />}
|
||||||
{<AnnoDialogAddLabel metadataField={metadataField} />}
|
{<AnnoDialogAddLabel metadataField={metadataField} />}
|
||||||
|
|||||||
Reference in New Issue
Block a user