Ensure that the "Save results" button should be disabled when there are no rows.

refs #6131
This commit is contained in:
Aditya Toshniwal 2022-04-28 18:01:54 +05:30 committed by Akshay Joshi
parent bd799ea51a
commit 38f642d361
2 changed files with 10 additions and 3 deletions

View File

@ -1206,7 +1206,7 @@ export function ResultSet() {
<EmptyPanelMessage text={gettext('No data output. Execute a query to get output.')}/> <EmptyPanelMessage text={gettext('No data output. Execute a query to get output.')}/>
} }
{queryData && <> {queryData && <>
<ResultSetToolbar containerRef={containerRef} canEdit={queryData.can_edit}/> <ResultSetToolbar containerRef={containerRef} canEdit={queryData.can_edit} totalRowCount={queryData?.rows_affected}/>
<Box flexGrow="1" minHeight="0"> <Box flexGrow="1" minHeight="0">
<QueryToolDataGrid <QueryToolDataGrid
columns={columns} columns={columns}

View File

@ -37,7 +37,7 @@ const useStyles = makeStyles((theme)=>({
}, },
})); }));
export function ResultSetToolbar({containerRef, canEdit}) { export function ResultSetToolbar({containerRef, canEdit, totalRowCount}) {
const classes = useStyles(); const classes = useStyles();
const eventBus = useContext(QueryToolEventsContext); const eventBus = useContext(QueryToolEventsContext);
const queryToolCtx = useContext(QueryToolContext); const queryToolCtx = useContext(QueryToolContext);
@ -46,6 +46,7 @@ export function ResultSetToolbar({containerRef, canEdit}) {
'save-data': true, 'save-data': true,
'delete-rows': true, 'delete-rows': true,
'copy-rows': true, 'copy-rows': true,
'save-result': true,
}); });
const [menuOpenId, setMenuOpenId] = React.useState(null); const [menuOpenId, setMenuOpenId] = React.useState(null);
const [checkedMenuItems, setCheckedMenuItems] = React.useState({}); const [checkedMenuItems, setCheckedMenuItems] = React.useState({});
@ -109,6 +110,10 @@ export function ResultSetToolbar({containerRef, canEdit}) {
}); });
}, []); }, []);
useEffect(()=>{
setDisableButton('save-result', (totalRowCount||0) < 1);
}, [totalRowCount]);
useEffect(()=>{ useEffect(()=>{
eventBus.registerListener(QUERY_TOOL_EVENTS.TRIGGER_COPY_DATA, copyData); eventBus.registerListener(QUERY_TOOL_EVENTS.TRIGGER_COPY_DATA, copyData);
return ()=>eventBus.deregisterListener(QUERY_TOOL_EVENTS.TRIGGER_COPY_DATA, copyData); return ()=>eventBus.deregisterListener(QUERY_TOOL_EVENTS.TRIGGER_COPY_DATA, copyData);
@ -150,7 +155,8 @@ export function ResultSetToolbar({containerRef, canEdit}) {
</PgButtonGroup> </PgButtonGroup>
<PgButtonGroup size="small"> <PgButtonGroup size="small">
<PgIconButton title={gettext('Save results to file')} icon={<GetAppRoundedIcon />} <PgIconButton title={gettext('Save results to file')} icon={<GetAppRoundedIcon />}
onClick={downloadResult} shortcut={queryToolPref.download_results}/> onClick={downloadResult} shortcut={queryToolPref.download_results}
disabled={buttonsDisabled['save-result']} />
</PgButtonGroup> </PgButtonGroup>
</Box> </Box>
<PgMenu <PgMenu
@ -167,4 +173,5 @@ export function ResultSetToolbar({containerRef, canEdit}) {
ResultSetToolbar.propTypes = { ResultSetToolbar.propTypes = {
containerRef: CustomPropTypes.ref, containerRef: CustomPropTypes.ref,
canEdit: PropTypes.bool, canEdit: PropTypes.bool,
totalRowCount: PropTypes.number,
}; };