in source/frontend/src/components/Drawer/Actions/QueryBuilder/QueryBuilderDialog.js [180:282]
data: fetchRequest(resourceType, resourceCount),
},
processor: processFilterResults,
};
const response = await requestWrapper(sendPostRequest, query);
setNodeData(response && !response.error ? response.body : []);
};
const classes = useStyles();
const getResourceTypes = (resources) => {
const items = [];
resources.map((filter) =>
filter.metaData.resourceTypes.map((type) =>
items.push({ value: Object.keys(type)[0], label: Object.keys(type)[0] })
)
);
return items;
};
const body2 = body2Classes();
return (
<Dialog
open={true}
onClose={toggleQueryBuilderModal}
maxWidth={'xl'}
scroll={'paper'}
disableBackdropClick={true}
disableEscapeKeyDown={true}
classes={{ paper: classes.paper }}
aria-labelledby='form-dialog-title'>
<DialogTitle onClose={() => toggleQueryBuilderModal()}>
Query Builder
</DialogTitle>
<DialogContent className={classes.content}>
<Typography className={body2.body2} variant='body2' gutterBottom>
You can select a resource type and optionally specify the number of
connections you want it to have. So, if you want to find any orphan
EBS Volumes you can select AWS::EC2::Volume and 0 Connections.
</Typography>
<div className={classes.tableDiv}>
<div className={classes.tableCellDiv}>
<FormAutoComplete
onSelected={(event, input) => setResourceType(input.value)}
label='Select Resource Type'
description='Choose the resource type you would like to use in your query'
width='95%'
margin='0 1% 0 0'
options={getResourceTypes(resources)}
multiSelect={false}
/>
</div>
<div className={classes.tableCellDiv}>
<FormField
onInput={(input) => setResourceCount(input.target.value)}
label='Connections'
description='Enter the number of connections you want the resource to have'
width='95%'
margin='0 1% 0 0'
type='number'
/>
</div>
<div className={classes.tableCellButton}>
<Button
disabled={resourceType === undefined}
className={classes.runbutton}
onClick={executeQuery}>
Run
</Button>
</div>
</div>
{resourceType && !nodeData && (
<Typography className={body2.body2} variant='body2' gutterBottom>
{`Show ${resourceType} that have ${
resourceCount ? resourceCount : ' any number of '
} ${resourceCount === 1 ? 'connection' : 'connections'}`}
</Typography>
)}
<div className='resultTable'>
<ResourceTable
results={nodeData.filter(
(item) => !item.edge && item.data.type === 'resource'
)}
selectedNodes={(nodes) => setSelectedNodes(nodes)}
exportCSV={false}
/>
</div>
</DialogContent>
<DialogActions className={classes.actions}>
<Button
className={classes.clearButton}
onClick={toggleQueryBuilderModal}>
Close
</Button>
{nodeData && nodeData.length > 0 && (
<Button
disabled={selectedNodes === undefined}
className={classes.button}
onClick={() => {
toggleQueryBuilderModal();
dispatch({