src/components/Job.js
c6a95b0d
 import React from 'react';
 import { Rectangle } from 'recharts';
 import theme from '../theme';
 
 export default class Job extends React.PureComponent {
   render() {
     const {
       x,
       y,
       payload: {
9d471776
         name,
c6a95b0d
         formerStartTime,
         formerEndTime,
         startTime,
         endTime
       },
       xAxis: {
         niceTicks,
         width: axisWidth
       }
     } = this.props;
 
     if (!endTime) return null;
 
     const duration = Math.abs(endTime - startTime);
 
     if (!duration) return null;
 
     const formerDuration = Math.abs(
       (typeof formerEndTime === 'undefined' ? endTime : formerEndTime)
       - (typeof formerStartTime === 'undefined' ? startTime : formerStartTime)
     );
 
     const width = (axisWidth / (niceTicks.length - 1)) * duration;
     const height = theme.gantt.job.height;
 
9d471776
     return (
       <JobBox
         x={x + 5}
         y={y + 5}
         width={width}
         height={height}
         duration={formerDuration}
         name={name}
       />
     );
c6a95b0d
   }
 }
 
9d471776
 class JobBox extends React.PureComponent {
c6a95b0d
   render() {
9d471776
     const { x, y, width, height } = this.props;
     let { duration, name } = this.props;
 
c6a95b0d
     const { fill, stroke, textColor } = theme.gantt.job;
 
     return (
       <React.Fragment>
         <Rectangle x={x} y={y - (height / 2)} width={width} height={height} fill={fill} stroke={stroke} />
9d471776
         <text x={x + 10} y={y - 9} alignmentBaseline="central" fill={textColor}>{duration}</text>
         <text x={x + 10} y={y + 9} alignmentBaseline="central" fill={textColor}>{name}</text>
c6a95b0d
       </React.Fragment>
     );
   }
 }