Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | 5x 5x 5x 5x 5x 5x 5x 5x 6x 5x 5x 5x 1x 1x 5x 5x 5x 1x 1x 5x 5x 5x 5x | /*
* Copyright 2021 Harness Inc. All rights reserved.
* Use of this source code is governed by the PolyForm Shield 1.0.0 license
* that can be found in the licenses directory at the root of this repository, also available at
* https://polyformproject.org/wp-content/uploads/2020/06/PolyForm-Shield-1.0.0.txt.
*/
import React, { useState } from 'react'
import { isEmpty as _isEmpty } from 'lodash-es'
import { Button, Layout, Text } from '@wings-software/uicore'
import { useStrings } from 'framework/strings'
import type { FixedScheduleClient } from '@ce/components/COCreateGateway/models'
import FixedSchedeulesList from '@ce/common/FixedSchedulesList/FixedSchedulesList'
import useFixedScheduleEditor from '@ce/common/FixedSchedule/useFixedScheduleEditor'
interface FixedSchedulesProps {
schedules: FixedScheduleClient[]
addSchedules: (schedules: FixedScheduleClient[]) => void
}
interface EditParams {
isEdit: boolean
index: number
}
const defaultEditParams: EditParams = { isEdit: false, index: -1 }
const FixedSchedules: React.FC<FixedSchedulesProps> = props => {
const { getString } = useStrings()
const [selectedSchedule, setSelectedSchedule] = useState<FixedScheduleClient>()
const [editParams, setEditParams] = useState<EditParams>(defaultEditParams)
const resetParams = () => {
setSelectedSchedule(undefined)
setEditParams(defaultEditParams)
}
const handleScheduleAddition = (schedule: FixedScheduleClient) => {
let updatedSchedules
if (editParams.isEdit) {
updatedSchedules = [...props.schedules]
updatedSchedules.splice(editParams.index, 1, schedule)
} else {
updatedSchedules = [...props.schedules, schedule]
}
props.addSchedules(updatedSchedules)
resetParams()
}
const { openEditor } = useFixedScheduleEditor({
schedule: selectedSchedule,
scheduleIndex: editParams.index,
addSchedule: handleScheduleAddition,
allCreatedSchedules: props.schedules
})
const addFixedSchedule = () => {
resetParams()
openEditor()
}
const editSchedule = (_schedule: FixedScheduleClient, index: number) => {
setEditParams({ isEdit: true, index })
setSelectedSchedule(_schedule)
openEditor()
}
const deleteSchedule = (_schedule: FixedScheduleClient, index: number) => {
const updatedSchedules = [...props.schedules]
updatedSchedules.splice(index, 1, { ..._schedule, isDeleted: true })
props.addSchedules(updatedSchedules)
resetParams()
}
return (
<Layout.Vertical spacing="medium">
<Text>{getString('ce.co.autoStoppingRule.configuration.step4.tabs.schedules.description')}</Text>
{!_isEmpty(props.schedules) && (
<FixedSchedeulesList data={props.schedules} handleEdit={editSchedule} handleDelete={deleteSchedule} />
)}
<Button
intent="none"
onClick={addFixedSchedule}
icon={'plus'}
data-testid="addScheduleBtn"
style={{ maxWidth: 200 }}
>
{getString('ce.co.autoStoppingRule.configuration.step4.tabs.schedules.addSchedulesBtn')}
</Button>
</Layout.Vertical>
)
}
export default FixedSchedules
|