@@ -11,10 +11,13 @@ import { tokens } from '@equinor/eds-tokens'
1111import { useNavigate } from 'react-router-dom'
1212import { config } from 'config'
1313import { useLanguageContext } from 'components/Contexts/LanguageContext'
14- import { Button , Typography } from '@equinor/eds-core-react'
14+ import { Button , Icon , Typography } from '@equinor/eds-core-react'
1515import { StyledDialog } from 'components/Styles/StyledComponents'
1616import { useAssetContext } from 'components/Contexts/AssetContext'
1717import { useBackendApi } from 'api/UseBackendApi'
18+ import { Icons } from 'utils/icons'
19+ import { MissionSchedulingEditDialog } from 'components/Dialogs/MissionEditDialog'
20+ import { MissionDefinition } from 'models/MissionDefinition'
1821
1922const locales = { nb }
2023const localizer = dateFnsLocalizer ( { format, parse, startOfWeek, getDay, locales } )
@@ -174,6 +177,13 @@ const StyledDialogActions = styled(StyledDialog.Actions)`
174177 gap: 6px;
175178`
176179
180+ const StyledEditButton = styled ( Button ) `
181+ position: absolute;
182+ bottom: 4px;
183+ right: 4px;
184+ height: 25px;
185+ `
186+
177187const legendItems = [
178188 { color : CalendarColors . Planned , label : 'Planned today' } ,
179189 { color : CalendarColors . Future , label : 'Future missions' } ,
@@ -187,7 +197,8 @@ export const CalendarPro = () => {
187197 const { installationCode } = useAssetContext ( )
188198 const backendApi = useBackendApi ( )
189199 const navigate = useNavigate ( )
190- const [ dialogOpen , setDialogOpen ] = useState < boolean > ( false )
200+ const [ skipDialogOpen , setSkipDialogOpen ] = useState < boolean > ( false )
201+ const [ selectedMissionToEdit , setSelectedMissionToEdit ] = useState < MissionDefinition > ( )
191202 const [ selectedEvent , setSelectedEvent ] = useState < any > ( null )
192203
193204 const getTargetDate = ( day : DaysOfWeek , time : string ) => {
@@ -239,25 +250,29 @@ export const CalendarPro = () => {
239250 } )
240251 } , [ missionDefinitions ] )
241252
242- const handleCloseDialog = ( ) => {
243- setDialogOpen ( false )
253+ const handleCloseSkipDialog = ( ) => {
254+ setSkipDialogOpen ( false )
244255 }
245256
246- const handleSelectEvent = ( event : any ) => {
257+ const handleSelectSkipEvent = ( event : any ) => {
247258 setSelectedEvent ( event )
248- setDialogOpen ( true )
259+ setSkipDialogOpen ( true )
260+ }
261+
262+ const handleSelectEditEvent = ( event : any ) => {
263+ setSelectedMissionToEdit ( missionDefinitions . find ( ( m ) => m . id === event . metadata . missionId ) )
249264 }
250265
251266 const handleAutoScheduleSkip = ( ) => {
252267 if ( selectedEvent ) {
253268 backendApi . skipAutoScheduledMission ( selectedEvent . metadata . missionId , selectedEvent . metadata . time )
254269 }
255- setDialogOpen ( false )
270+ setSkipDialogOpen ( false )
256271 setSelectedEvent ( null )
257272 }
258273
259- const renderDialog = ( ) => (
260- < StyledDialog open = { dialogOpen } onClose = { handleCloseDialog } >
274+ const renderSkipDialog = ( ) => (
275+ < StyledDialog open = { skipDialogOpen } onClose = { handleCloseSkipDialog } >
261276 < StyledDialog . Header >
262277 < Typography variant = "h3" >
263278 { TranslateText ( 'SkipAutoMission' ) + ' ' + TranslateText ( 'Mission' ) }
@@ -270,7 +285,7 @@ export const CalendarPro = () => {
270285 ] ) }
271286 </ StyledDialog . Content >
272287 < StyledDialogActions >
273- < Button onClick = { handleCloseDialog } variant = "outlined" color = "primary" >
288+ < Button onClick = { handleCloseSkipDialog } variant = "outlined" color = "primary" >
274289 { TranslateText ( 'Cancel' ) }
275290 </ Button >
276291 < Button onClick = { handleAutoScheduleSkip } variant = "outlined" color = "danger" >
@@ -284,8 +299,11 @@ export const CalendarPro = () => {
284299 return (
285300 < StyledEvent >
286301 < span > { event . title } </ span >
302+ < StyledEditButton variant = "ghost_icon" onClick = { ( ) => handleSelectEditEvent ( event ) } >
303+ < Icon name = { Icons . Edit } size = { 16 } />
304+ </ StyledEditButton >
287305 { event . skip && (
288- < StyledSkipButton onClick = { ( ) => handleSelectEvent ( event ) } >
306+ < StyledSkipButton onClick = { ( ) => handleSelectSkipEvent ( event ) } >
289307 { TranslateText ( 'SkipAutoMission' ) }
290308 </ StyledSkipButton >
291309 ) }
@@ -352,7 +370,14 @@ export const CalendarPro = () => {
352370 }
353371 />
354372 </ CalendarWrapper >
355- { dialogOpen && renderDialog ( ) }
373+ { skipDialogOpen && renderSkipDialog ( ) }
374+ { selectedMissionToEdit && (
375+ < MissionSchedulingEditDialog
376+ mission = { selectedMissionToEdit }
377+ isOpen = { ! ! selectedMissionToEdit }
378+ onClose = { ( ) => setSelectedMissionToEdit ( undefined ) }
379+ />
380+ ) }
356381 </ >
357382 )
358383}
0 commit comments