@@ -11,7 +11,7 @@ import useDocumentTitle from '../hook/useDocumentTitle';
11
11
import { useLazyQuery , useMutation } from '@apollo/client' ;
12
12
import { ADD_EVENT , GET_EVENTS } from '../Mutations/event' ;
13
13
import moment from 'moment' ;
14
- /* istanbul ignore next */
14
+ import CalendarSkeleton from '../Skeletons/calSkeleton' ;
15
15
16
16
const Calendar = ( ) => {
17
17
useDocumentTitle ( 'Calendar' ) ;
@@ -25,11 +25,12 @@ const Calendar = () => {
25
25
timeToFinish : '' ,
26
26
} ) ;
27
27
const [ data , setData ] = useState < EventInput [ ] > ( [ ] ) ;
28
+ const [ loading , setLoading ] = useState ( true ) ;
28
29
const [ getEvents ] = useLazyQuery ( GET_EVENTS ) ;
29
30
const [ createEvent ] = useMutation ( ADD_EVENT ) ;
31
+
30
32
useEffect ( ( ) => {
31
33
const fetchData = async ( ) => {
32
- /* istanbul ignore next */
33
34
try {
34
35
const { data : out } = await getEvents ( {
35
36
variables : {
@@ -46,44 +47,41 @@ const Calendar = () => {
46
47
} ) ) ;
47
48
setData ( all ) ;
48
49
} catch ( error ) {
49
- console . log ( { eventsError : data } ) ;
50
+ console . log ( { eventsError : error } ) ;
50
51
// toast.error(error?.message || 'Something went wrong');
52
+ } finally {
53
+ setLoading ( false ) ;
51
54
}
52
55
} ;
53
56
fetchData ( ) ;
54
57
} , [ ] ) ;
58
+
55
59
const { t } = useTranslation ( ) ;
56
- const renderEvent =
57
- /* istanbul ignore next */
58
60
59
- ( e : EventContentArg ) => (
60
- /* istanbul ignore next */
61
- < div
62
- data-html = { true }
63
- data-tip = { `<div>${ e . event . title } <br> ${ e . event . extendedProps . hostName } <br> ${ e . event . extendedProps . timeToStart } - ${ e . event . extendedProps . timeToFinish } </div> ` }
64
- className = "bg-primary text-white max-w-full min-w-full overflow-auto text-xs md:text-sm"
65
- >
66
- < p className = "px-3 py-1 " > { e . event . title } </ p >
67
- < p className = "px-3 py-1 " > { e . event . extendedProps . hostName } </ p >
68
- < p className = "px-3 py-1 " >
69
- { e . event . extendedProps . timeToStart } -{ ' ' }
70
- { e . event . extendedProps . timeToFinish }
71
- </ p >
72
- < ReactTooltip data-html = { true } />
73
- </ div >
74
- ) ;
61
+ const renderEvent = ( e : EventContentArg ) => (
62
+ < div
63
+ data-html = { true }
64
+ data-tip = { `<div>${ e . event . title } <br> ${ e . event . extendedProps . hostName } <br> ${ e . event . extendedProps . timeToStart } - ${ e . event . extendedProps . timeToFinish } </div> ` }
65
+ className = "bg-primary text-white max-w-full min-w-full overflow-auto text-xs md:text-sm"
66
+ >
67
+ < p className = "px-3 py-1 " > { e . event . title } </ p >
68
+ < p className = "px-3 py-1 " > { e . event . extendedProps . hostName } </ p >
69
+ < p className = "px-3 py-1 " >
70
+ { e . event . extendedProps . timeToStart } -{ ' ' }
71
+ { e . event . extendedProps . timeToFinish }
72
+ </ p >
73
+ < ReactTooltip data-html = { true } />
74
+ </ div >
75
+ ) ;
75
76
76
77
const removeModel = ( e : any ) => {
77
78
e . preventDefault ( ) ;
78
- const newState = ! addEventModel ;
79
- setAddEventModel ( newState ) ;
79
+ setAddEventModel ( ! addEventModel ) ;
80
80
} ;
81
81
82
82
const handleDateClick = ( ) => {
83
- const newState = ! addEventModel ;
84
- setAddEventModel ( newState ) ;
83
+ setAddEventModel ( ! addEventModel ) ;
85
84
} ;
86
- /* istanbul ignore next */
87
85
88
86
const handleAddEvent = ( e : any ) => {
89
87
e . preventDefault ( ) ;
@@ -119,14 +117,10 @@ const Calendar = () => {
119
117
< hr className = " bg-primary border-gray-300 my-3 w-full" />
120
118
</ div >
121
119
< div className = "card-body" >
122
- { /* istanbul ignore next */ }
123
120
< form
124
121
data-testid = "handleAddEvent"
125
122
className = " py-3 px-8"
126
- onSubmit /* istanbul ignore next */ = { ( e ) =>
127
- /* istanbul ignore next */
128
- handleAddEvent ( e )
129
- }
123
+ onSubmit = { handleAddEvent }
130
124
>
131
125
< div className = "input my-3 h-9 " >
132
126
< div className = "grouped-input flex items-center h-full w-full rounded-md" >
@@ -137,7 +131,6 @@ const Calendar = () => {
137
131
className = " dark:bg-dark-tertiary border dark:text-white border-primary rounded outline-none px-5 font-sans text-xs py-2 w-full"
138
132
placeholder = { t ( 'Event title' ) }
139
133
value = { newEvent . title }
140
- // eslint-disable-next-line prettier/prettier
141
134
onChange = { ( e ) =>
142
135
setNewEvent ( { ...newEvent , title : e . target . value } )
143
136
}
@@ -153,11 +146,8 @@ const Calendar = () => {
153
146
className = " dark:bg-dark-tertiary dark:text-white border border-primary rounded outline-none px-5 font-sans text-xs py-2 w-full"
154
147
placeholder = { t ( 'Host name' ) }
155
148
value = { newEvent . hostName }
156
- onChange /* istanbul ignore next */ = { ( e ) =>
157
- /* istanbul ignore next */ setNewEvent ( {
158
- ...newEvent ,
159
- hostName : e . target . value ,
160
- } )
149
+ onChange = { ( e ) =>
150
+ setNewEvent ( { ...newEvent , hostName : e . target . value } )
161
151
}
162
152
/>
163
153
</ div >
@@ -170,11 +160,8 @@ const Calendar = () => {
170
160
placeholderText = { t ( 'Start Date' ) }
171
161
style = { { marginRight : '10px' } }
172
162
selected = { newEvent . start }
173
- onChange /* istanbul ignore next */ = { ( start : any ) =>
174
- /* istanbul ignore next */ setNewEvent ( {
175
- ...newEvent ,
176
- start,
177
- } )
163
+ onChange = { ( start : any ) =>
164
+ setNewEvent ( { ...newEvent , start } )
178
165
}
179
166
/>
180
167
</ div >
@@ -187,10 +174,7 @@ const Calendar = () => {
187
174
placeholderText = { t ( 'End Date' ) }
188
175
style = { { marginRight : '10px' } }
189
176
selected = { newEvent . end }
190
- onChange = /* istanbul ignore next */ { ( end : any ) =>
191
- /* istanbul ignore next */
192
- setNewEvent ( { ...newEvent , end } )
193
- }
177
+ onChange = { ( end : any ) => setNewEvent ( { ...newEvent , end } ) }
194
178
/>
195
179
</ div >
196
180
</ div >
@@ -203,8 +187,7 @@ const Calendar = () => {
203
187
className = "dark:bg-dark-tertiary dark:text-white border border-primary rounded outline-none px-5 font-sans text-xs py-2 w-full"
204
188
placeholder = { t ( 'Start time' ) }
205
189
value = { newEvent . timeToStart }
206
- onChange /* istanbul ignore next */ = { ( e ) =>
207
- /* istanbul ignore next */
190
+ onChange = { ( e ) =>
208
191
setNewEvent ( { ...newEvent , timeToStart : e . target . value } )
209
192
}
210
193
/>
@@ -219,8 +202,7 @@ const Calendar = () => {
219
202
className = "dark:bg-dark-tertiary dark:text-white border border-primary rounded outline-none px-5 font-sans text-xs py-2 w-full"
220
203
placeholder = { t ( 'End time' ) }
221
204
value = { newEvent . timeToFinish }
222
- onChange = /* istanbul ignore next */ { ( e ) =>
223
- /* istanbul ignore next */
205
+ onChange = { ( e ) =>
224
206
setNewEvent ( { ...newEvent , timeToFinish : e . target . value } )
225
207
}
226
208
/>
@@ -231,7 +213,7 @@ const Calendar = () => {
231
213
< button
232
214
data-testid = "removeModel"
233
215
className = "py-2 w-[40%] md:w-1/3 bg-violet-400 rounded font-sans text-sm text-white"
234
- onClick = { ( e ) => removeModel ( e ) }
216
+ onClick = { removeModel }
235
217
>
236
218
{ t ( 'cancel' ) }
237
219
</ button >
@@ -245,7 +227,7 @@ const Calendar = () => {
245
227
</ div >
246
228
{ /* =========================== End:: RegisterTraineeModel =============================== */ }
247
229
248
- < div className = "px-4 pb-20 w-full dark:bg-dark-frame-bg dark:text-white h-full overflow-y-scroll font-serif " >
230
+ < div className = "px-4 pb-20 w-full dark:bg-dark-frame-bg dark:text-white h-full overflow-y-scroll" >
249
231
< div className = "w-full flex justify-center text-xl md:text-4xl dark:text-primary mb-10" >
250
232
< h2 > { t ( 'Calendar' ) } </ h2 >
251
233
</ div >
@@ -256,12 +238,16 @@ const Calendar = () => {
256
238
>
257
239
{ t ( 'Add event' ) }
258
240
</ button >
259
- < FullCalendar
260
- eventContent = { renderEvent }
261
- events = { data }
262
- plugins = { [ dayGridPlugin , interactionPlugin ] }
263
- initialView = "dayGridMonth"
264
- />
241
+ { loading ? (
242
+ < CalendarSkeleton />
243
+ ) : (
244
+ < FullCalendar
245
+ eventContent = { renderEvent }
246
+ events = { data }
247
+ plugins = { [ dayGridPlugin , interactionPlugin ] }
248
+ initialView = "dayGridMonth"
249
+ />
250
+ ) }
265
251
</ div >
266
252
</ >
267
253
) ;
0 commit comments