@@ -8,6 +8,9 @@ import { dateToString, getMonday } from '../../../../utils/datetime.utils';
88import GanttTaskBarEdit from './GanttTaskBarEdit' ;
99import GanttTaskBarView from './GanttTaskBarView' ;
1010import { WorkPackage } from 'shared' ;
11+ import { ArcherContainer } from 'react-archer' ;
12+ import { useRef } from 'react' ;
13+ import { ArcherContainerHandle } from 'react-archer/lib/ArcherContainer/ArcherContainer.types' ;
1114
1215const GanttTaskBar = ( {
1316 days,
@@ -35,6 +38,7 @@ const GanttTaskBar = ({
3538 getNewWorkPackageNumber : ( projectId : string ) => number ;
3639} ) => {
3740 const isProject = ! task . projectId ;
41+ const archerRef = useRef < ArcherContainerHandle > ( null ) ;
3842
3943 const getStartCol = ( start : Date ) => {
4044 const startCol = days . findIndex ( ( day ) => dateToString ( day ) === dateToString ( getMonday ( start ) ) ) + 1 ;
@@ -50,35 +54,46 @@ const GanttTaskBar = ({
5054 return endCol ;
5155 } ;
5256
57+ const handleChange = ( change : GanttChange ) => {
58+ createChange ( change ) ;
59+ setTimeout ( ( ) => {
60+ if ( archerRef . current ) {
61+ archerRef . current . refreshScreen ( ) ;
62+ }
63+ } , 100 ) ; // wait for the change to be added to the state and the DOM to update
64+ } ;
65+
5366 return (
54- < div id = { `gantt-task-${ task . id } ` } >
55- { isEditMode ? (
56- < GanttTaskBarEdit
57- days = { days }
58- task = { task }
59- createChange = { createChange }
60- getStartCol = { getStartCol }
61- getEndCol = { getEndCol }
62- isProject = { isProject }
63- addWorkPackage = { addWorkPackage }
64- getNewWorkPackageNumber = { getNewWorkPackageNumber }
65- />
66- ) : (
67- < GanttTaskBarView
68- days = { days }
69- task = { task }
70- getStartCol = { getStartCol }
71- getEndCol = { getEndCol }
72- isProject = { isProject }
73- handleOnMouseOver = { handleOnMouseOver }
74- handleOnMouseLeave = { handleOnMouseLeave }
75- onWorkPackageToggle = { onWorkPackageToggle }
76- showWorkPackages = { showWorkPackages }
77- highlightedChange = { highlightedChange }
78- getNewWorkPackageNumber = { getNewWorkPackageNumber }
79- />
80- ) }
81- </ div >
67+ < ArcherContainer ref = { archerRef } strokeColor = "#ef4545" >
68+ < div id = { `gantt-task-${ task . id } ` } >
69+ { isEditMode ? (
70+ < GanttTaskBarEdit
71+ days = { days }
72+ task = { task }
73+ createChange = { handleChange }
74+ getStartCol = { getStartCol }
75+ getEndCol = { getEndCol }
76+ isProject = { isProject }
77+ addWorkPackage = { addWorkPackage }
78+ getNewWorkPackageNumber = { getNewWorkPackageNumber }
79+ />
80+ ) : (
81+ < GanttTaskBarView
82+ days = { days }
83+ task = { task }
84+ getStartCol = { getStartCol }
85+ getEndCol = { getEndCol }
86+ isProject = { isProject }
87+ handleOnMouseOver = { handleOnMouseOver }
88+ handleOnMouseLeave = { handleOnMouseLeave }
89+ onWorkPackageToggle = { onWorkPackageToggle }
90+ showWorkPackages = { showWorkPackages }
91+ highlightedChange = { highlightedChange }
92+ getNewWorkPackageNumber = { getNewWorkPackageNumber }
93+ />
94+ ) }
95+ </ div >
96+ </ ArcherContainer >
8297 ) ;
8398} ;
8499
0 commit comments