@@ -38,8 +38,6 @@ import {timeRunningCalendar} from '../timeutils';
38
38
import { stripTypename } from '../../utils/strip' ;
39
39
import { TimeSpansInRange , TimeSpansInRangeVariables } from '../../gql/__generated__/TimeSpansInRange' ;
40
40
import { ExtendedEventSourceInput } from '@fullcalendar/core/structs/event-source' ;
41
- import { RemoveTimeSpan , RemoveTimeSpanVariables } from '../../gql/__generated__/RemoveTimeSpan' ;
42
- import { removeTimeSpanOptions } from '../mutations' ;
43
41
44
42
const toMoment = ( date : Date ) : moment . Moment => {
45
43
return moment ( date ) . tz ( 'utc' ) ;
@@ -74,10 +72,6 @@ export const CalendarPage: React.FC = () => {
74
72
refetchQueries : [ { query : gqlTimeSpan . Trackers } ] ,
75
73
} ) ;
76
74
const [ updateTimeSpanMutation ] = useMutation < UpdateTimeSpan , UpdateTimeSpanVariables > ( gqlTimeSpan . UpdateTimeSpan ) ;
77
- const [ removeTimeSpan ] = useMutation < RemoveTimeSpan , RemoveTimeSpanVariables > (
78
- gqlTimeSpan . RemoveTimeSpan ,
79
- removeTimeSpanOptions
80
- ) ;
81
75
const [ currentDate , setCurrentDate ] = React . useState ( moment ( ) ) ;
82
76
const [ stopTimer ] = useMutation < StopTimer , StopTimerVariables > ( gqlTimeSpan . StopTimer , {
83
77
update : ( cache , { data} ) => {
@@ -99,34 +93,18 @@ export const CalendarPage: React.FC = () => {
99
93
window . __TRAGGO_CALENDAR = { } ;
100
94
return ( ) => ( window . __TRAGGO_CALENDAR = undefined ) ;
101
95
} ) ;
102
-
103
- const fullCalendarRef = React . useRef < FullCalendar | null > ( null ) ;
104
- const unselectCalenderItem = ( ) => {
105
- const instance = fullCalendarRef . current ;
106
- if ( instance ) {
107
- const calendar = instance . getApi ( ) ;
108
- if ( calendar ) {
109
- calendar . unselect ( ) ;
110
- }
111
- }
112
- } ;
113
-
114
96
const [ ignore , setIgnore ] = React . useState < boolean > ( false ) ;
115
97
const [ selected , setSelected ] = React . useState < { selected : HTMLElement | null ; data : TimeSpans_timeSpans_timeSpans | null } > ( {
116
98
selected : null ,
117
99
data : null ,
118
100
} ) ;
119
-
120
- const [ lastCreatedTimeSpanId , setLastCreatedTimeSpanId ] = React . useState < number | null > ( null ) ;
121
-
122
101
const [ addTimeSpan ] = useMutation < AddTimeSpan , AddTimeSpanVariables > ( gqlTimeSpan . AddTimeSpan , {
123
102
update : ( cache , { data} ) => {
124
103
if ( ! data || ! data . createTimeSpan ) {
125
104
return ;
126
105
}
127
106
addTimeSpanInRangeToCache ( cache , data . createTimeSpan , timeSpansResult . variables ) ;
128
107
addTimeSpanToCache ( cache , data . createTimeSpan ) ;
129
- unselectCalenderItem ( ) ;
130
108
} ,
131
109
} ) ;
132
110
@@ -198,19 +176,15 @@ export const CalendarPage: React.FC = () => {
198
176
} ,
199
177
} ) ;
200
178
} ;
201
- const onSelect : OptionsInput [ 'select' ] = async ( data ) => {
202
- const result = await addTimeSpan ( {
179
+ const onSelect : OptionsInput [ 'select' ] = ( data ) => {
180
+ addTimeSpan ( {
203
181
variables : {
204
182
start : moment ( data . start ) . format ( ) ,
205
183
end : moment ( data . end ) . format ( ) ,
206
184
tags : [ ] ,
207
185
note : '' ,
208
186
} ,
209
187
} ) ;
210
-
211
- if ( result . data && result . data . createTimeSpan ) {
212
- setLastCreatedTimeSpanId ( result . data . createTimeSpan . id ) ;
213
- }
214
188
} ;
215
189
const onClick : OptionsInput [ 'eventClick' ] = ( data ) => {
216
190
data . jsEvent . preventDefault ( ) ;
@@ -223,7 +197,6 @@ export const CalendarPage: React.FC = () => {
223
197
224
198
// tslint:disable-next-line:no-any
225
199
setSelected ( { data : data . event . extendedProps . ts , selected : data . jsEvent . target as any } ) ;
226
- setLastCreatedTimeSpanId ( null ) ;
227
200
} ;
228
201
if ( trackersResult . data && ! ( trackersResult . data . timers || [ ] ) . length ) {
229
202
const startTimerEvent : ExtendedEventSourceInput = {
@@ -238,57 +211,10 @@ export const CalendarPage: React.FC = () => {
238
211
values . push ( startTimerEvent ) ;
239
212
}
240
213
241
- React . useEffect ( ( ) => {
242
- let deletingSelected = false ;
243
-
244
- const onKeyDown = ( e : KeyboardEvent ) => {
245
- if ( e . key === 'Escape' ) {
246
- e . preventDefault ( ) ;
247
- setSelected ( { selected : null , data : null } ) ;
248
- unselectCalenderItem ( ) ;
249
- }
250
-
251
- if (
252
- ! deletingSelected &&
253
- lastCreatedTimeSpanId &&
254
- ( e . key === 'Delete' || e . key === 'Backspace' || e . key === 'Escape' )
255
- ) {
256
- e . preventDefault ( ) ;
257
- removeFromTimeSpanInRangeCache ( apollo . cache , lastCreatedTimeSpanId , timeSpansResult . variables ) ;
258
- removeTimeSpan ( { variables : { id : lastCreatedTimeSpanId } } ) . finally ( ( ) => {
259
- deletingSelected = false ;
260
- } ) ;
261
- setSelected ( { selected : null , data : null } ) ;
262
- setLastCreatedTimeSpanId ( null ) ;
263
- unselectCalenderItem ( ) ;
264
- return ;
265
- }
266
-
267
- if ( ! deletingSelected && selected . data && ( e . key === 'Delete' || e . key === 'Backspace' ) ) {
268
- e . preventDefault ( ) ;
269
- setSelected ( { selected : null , data : selected . data } ) ;
270
- removeFromTimeSpanInRangeCache ( apollo . cache , selected . data . id , timeSpansResult . variables ) ;
271
- removeTimeSpan ( { variables : { id : selected . data . id } } ) . finally ( ( ) => {
272
- deletingSelected = false ;
273
- } ) ;
274
- setSelected ( { selected : null , data : null } ) ;
275
- unselectCalenderItem ( ) ;
276
- return ;
277
- }
278
- } ;
279
-
280
- document . addEventListener ( 'keydown' , onKeyDown ) ;
281
-
282
- return ( ) => {
283
- document . removeEventListener ( 'keydown' , onKeyDown ) ;
284
- } ;
285
- } , [ selected , lastCreatedTimeSpanId , apollo . cache , removeTimeSpan , timeSpansResult . variables ] ) ;
286
-
287
214
return (
288
215
< Paper style = { { padding : 10 , bottom : 10 , top : 80 , position : 'absolute' } } color = "red" >
289
216
< FullCalendarStyling >
290
217
< FullCalendar
291
- ref = { fullCalendarRef }
292
218
defaultView = "timeGridWeek"
293
219
rerenderDelay = { 30 }
294
220
datesRender = { ( x ) => {
@@ -304,7 +230,7 @@ export const CalendarPage: React.FC = () => {
304
230
events = { values }
305
231
allDaySlot = { false }
306
232
selectable = { true }
307
- selectMirror = { false }
233
+ selectMirror = { true }
308
234
handleWindowResize = { true }
309
235
height = { 'parent' }
310
236
selectMinDistance = { 20 }
0 commit comments