import React from "react"; import * as d3 from "d3"; class TimelineCategories extends React.Component { constructor(props) { super(props); this.grabRef = React.createRef(); this.state = { isInitialized: false, }; } componentDidUpdate() { if (!this.state.isInitialized) { const drag = d3 .drag() .on("start", this.props.onDragStart) .on("drag", this.props.onDrag) .on("end", this.props.onDragEnd); d3.select(this.grabRef.current).call(drag); this.setState({ isInitialized: true }); } } renderCategory(cat, idx) { const { features, dims } = this.props; const strokeWidth = 1; // dims.trackHeight / (this.props.categories.length + 1) if ( features.GRAPH_NONLOCATED && features.GRAPH_NONLOCATED.categories && features.GRAPH_NONLOCATED.categories.includes(cat) ) { return null; } return ( <> {cat} ); } render() { const { dims, categories, fallbackLabel } = this.props; const categoriesExist = categories && categories.length > 0; const renderedCategories = categoriesExist ? this.props.categories.map((cat, idx) => this.renderCategory(cat, idx)) : this.renderCategory(fallbackLabel, 0); return ( {renderedCategories} ); } } export default TimelineCategories;