Merge pull request #1140 from chaotixkilla/fix-improve-custom-info-request-deletion
Improve custom info requests deletion
This commit is contained in:
commit
1b5f5e9a94
2 changed files with 160 additions and 109 deletions
|
|
@ -64,6 +64,7 @@ export const DeleteDialog = ({
|
||||||
onDismissed,
|
onDismissed,
|
||||||
item = 'item',
|
item = 'item',
|
||||||
confirmationMessage = `Are you sure you want to delete this ${item}?`,
|
confirmationMessage = `Are you sure you want to delete this ${item}?`,
|
||||||
|
extraMessage,
|
||||||
errorMessage = ''
|
errorMessage = ''
|
||||||
}) => {
|
}) => {
|
||||||
const classes = useStyles()
|
const classes = useStyles()
|
||||||
|
|
@ -87,6 +88,7 @@ export const DeleteDialog = ({
|
||||||
)}
|
)}
|
||||||
<DialogContent className={classes.content}>
|
<DialogContent className={classes.content}>
|
||||||
{confirmationMessage && <P>{confirmationMessage}</P>}
|
{confirmationMessage && <P>{confirmationMessage}</P>}
|
||||||
|
{extraMessage}
|
||||||
</DialogContent>
|
</DialogContent>
|
||||||
<DialogActions className={classes.actions}>
|
<DialogActions className={classes.actions}>
|
||||||
<Button onClick={onConfirmed}>Confirm</Button>
|
<Button onClick={onConfirmed}>Confirm</Button>
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import { useMutation } from '@apollo/react-hooks'
|
import { useMutation, useQuery } from '@apollo/react-hooks'
|
||||||
import { makeStyles } from '@material-ui/core'
|
import { makeStyles } from '@material-ui/core'
|
||||||
import classnames from 'classnames'
|
import classnames from 'classnames'
|
||||||
import gql from 'graphql-tag'
|
import gql from 'graphql-tag'
|
||||||
|
|
@ -8,9 +8,10 @@ import React, { useState } from 'react'
|
||||||
import { DeleteDialog } from 'src/components/DeleteDialog'
|
import { DeleteDialog } from 'src/components/DeleteDialog'
|
||||||
import { IconButton, Button, Link } from 'src/components/buttons'
|
import { IconButton, Button, Link } from 'src/components/buttons'
|
||||||
import DataTable from 'src/components/tables/DataTable'
|
import DataTable from 'src/components/tables/DataTable'
|
||||||
import { Info1, Info3 } from 'src/components/typography'
|
import { Info1, Info3, P } from 'src/components/typography'
|
||||||
import { ReactComponent as DeleteIcon } from 'src/styling/icons/action/delete/enabled.svg'
|
import { ReactComponent as DeleteIcon } from 'src/styling/icons/action/delete/enabled.svg'
|
||||||
import { ReactComponent as EditIcon } from 'src/styling/icons/action/edit/enabled.svg'
|
import { ReactComponent as EditIcon } from 'src/styling/icons/action/edit/enabled.svg'
|
||||||
|
import { fromNamespace, namespaces, toNamespace } from 'src/utils/config'
|
||||||
|
|
||||||
import styles from './CustomInfoRequests.styles'
|
import styles from './CustomInfoRequests.styles'
|
||||||
import DetailsRow from './DetailsCard'
|
import DetailsRow from './DetailsCard'
|
||||||
|
|
@ -33,6 +34,18 @@ const constraintTypeDisplay = {
|
||||||
spaceSeparation: 'Space separation'
|
spaceSeparation: 'Space separation'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const GET_DATA = gql`
|
||||||
|
query getData {
|
||||||
|
config
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
|
const SAVE_CONFIG = gql`
|
||||||
|
mutation Save($config: JSONObject) {
|
||||||
|
saveConfig(config: $config)
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
const ADD_ROW = gql`
|
const ADD_ROW = gql`
|
||||||
mutation insertCustomInfoRequest($customRequest: CustomRequestInput!) {
|
mutation insertCustomInfoRequest($customRequest: CustomRequestInput!) {
|
||||||
insertCustomInfoRequest(customRequest: $customRequest) {
|
insertCustomInfoRequest(customRequest: $customRequest) {
|
||||||
|
|
@ -71,6 +84,13 @@ const CustomInfoRequests = ({
|
||||||
const [deleteDialog, setDeleteDialog] = useState(false)
|
const [deleteDialog, setDeleteDialog] = useState(false)
|
||||||
const [hasError, setHasError] = useState(false)
|
const [hasError, setHasError] = useState(false)
|
||||||
|
|
||||||
|
const { data: configData, loading: configLoading } = useQuery(GET_DATA)
|
||||||
|
|
||||||
|
const [saveConfig] = useMutation(SAVE_CONFIG, {
|
||||||
|
refetchQueries: () => ['getData'],
|
||||||
|
onError: () => setHasError(true)
|
||||||
|
})
|
||||||
|
|
||||||
const [addEntry] = useMutation(ADD_ROW, {
|
const [addEntry] = useMutation(ADD_ROW, {
|
||||||
onError: () => {
|
onError: () => {
|
||||||
console.log('Error while adding custom info request')
|
console.log('Error while adding custom info request')
|
||||||
|
|
@ -108,11 +128,24 @@ const CustomInfoRequests = ({
|
||||||
refetchQueries: () => ['getData', 'customInfoRequests']
|
refetchQueries: () => ['getData', 'customInfoRequests']
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const config = R.path(['config'])(configData) ?? []
|
||||||
|
|
||||||
const handleDelete = id => {
|
const handleDelete = id => {
|
||||||
removeEntry({
|
removeEntry({
|
||||||
variables: {
|
variables: {
|
||||||
id
|
id
|
||||||
}
|
}
|
||||||
|
}).then(() => {
|
||||||
|
const triggersConfig =
|
||||||
|
(config && fromNamespace(namespaces.TRIGGERS)(config)) ?? []
|
||||||
|
const cleanConfig = {
|
||||||
|
overrides: R.reject(
|
||||||
|
it => it.requirement === id,
|
||||||
|
triggersConfig.overrides
|
||||||
|
)
|
||||||
|
}
|
||||||
|
const newConfig = toNamespace(namespaces.TRIGGERS)(cleanConfig)
|
||||||
|
saveConfig({ variables: { config: newConfig } })
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -134,7 +167,20 @@ const CustomInfoRequests = ({
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const detailedDeleteMsg = (
|
||||||
|
<>
|
||||||
|
<P noMargin>
|
||||||
|
Deleting this item will result in the triggers using it to be removed,
|
||||||
|
together with the advanced trigger overrides you defined for this item.
|
||||||
|
</P>
|
||||||
|
<P noMargin>
|
||||||
|
This action is <b>permanent</b>.
|
||||||
|
</P>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
!configLoading && (
|
||||||
<>
|
<>
|
||||||
{customRequests.length > 0 && (
|
{customRequests.length > 0 && (
|
||||||
<DataTable
|
<DataTable
|
||||||
|
|
@ -240,10 +286,13 @@ const CustomInfoRequests = ({
|
||||||
setDeleteDialog(false)
|
setDeleteDialog(false)
|
||||||
setHasError(false)
|
setHasError(false)
|
||||||
}}
|
}}
|
||||||
|
item={`custom information request`}
|
||||||
|
extraMessage={detailedDeleteMsg}
|
||||||
onConfirmed={() => handleDelete(toBeDeleted)}
|
onConfirmed={() => handleDelete(toBeDeleted)}
|
||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
export default CustomInfoRequests
|
export default CustomInfoRequests
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue