Fix SonarQube bugs

This commit is contained in:
Aditya Toshniwal
2024-01-29 18:39:30 +05:30
parent e23ef5d9df
commit 028b70203c
7 changed files with 72 additions and 56 deletions

View File

@@ -89,9 +89,9 @@ function ObjectNameFormatter({row}) {
<Box className={row.show_node ? '' : classes.cellMuted}>
<span className={clsx(classes.gridCell, row.icon)}></span>
{row.name}
{row.other_info != null && row.other_info != '' && <>
<span className={classes.funcArgs}onClick={()=>{row.showArgs = true;}}> {row?.showArgs ? `(${row.other_info})` : '(...)'}</span>
</>}
{row.other_info != null && row.other_info != '' && (
<span tabIndex="-1" className={classes.funcArgs} onClick={()=>{row.showArgs = true;}} onKeyDown={()=>{/* no need */}}> {row?.showArgs ? `(${row.other_info})` : '(...)'}</span>
)}
</Box>
</div>
);
@@ -372,7 +372,7 @@ export default function SearchObjects({nodeData}) {
}))
.then(res=>{
let typeOpt = [{label:gettext('All types'), value:'all'}];
let typesRes = Object.entries(res.data.data).sort();
let typesRes = Object.entries(res.data.data).sort((a,b)=>a?.localeCompare?.(b));
typesRes.forEach((element) => {
typeOpt.push({label:gettext(element[1]), value:element[0]});
});
@@ -400,7 +400,7 @@ export default function SearchObjects({nodeData}) {
<InputSelect value={type} controlProps={{allowClear: false}} options={typeOptions} onChange={(v)=>setType(v)}/>
</Box>
<PrimaryButton style={{width: '120px'}} data-test="search" className={modalClasses.margin} startIcon={<SearchRoundedIcon />}
onClick={onSearch} disabled={search.length >= 3 ? false : true}>{gettext('Search')}</PrimaryButton>
onClick={onSearch} disabled={search.length < 3}>{gettext('Search')}</PrimaryButton>
</Box>
<Box flexGrow="1" display="flex" flexDirection="column" position="relative" overflow="hidden">
<PgReactDataGrid
@@ -437,6 +437,5 @@ export default function SearchObjects({nodeData}) {
}
SearchObjects.propTypes = {
onClose: PropTypes.func,
nodeData: PropTypes.object,
};

View File

@@ -8,7 +8,7 @@
//////////////////////////////////////////////////////////////
import { Box, makeStyles } from '@material-ui/core';
import _ from 'lodash';
import React, {useState, useEffect, useContext, useRef, useLayoutEffect} from 'react';
import React, {useState, useEffect, useContext, useRef, useLayoutEffect, useMemo} from 'react';
import {Row, useRowSelection} from 'react-data-grid';
import LockIcon from '@material-ui/icons/Lock';
import EditIcon from '@material-ui/icons/Edit';
@@ -72,12 +72,14 @@ export const DataGridExtrasContext = React.createContext();
function CustomRow(props) {
const rowRef = useRef();
const dataGridExtras = useContext(DataGridExtrasContext);
const rowInfoValue = {
const rowInfoValue = useMemo({
rowIdx: props.rowIdx,
getCellElement: (colIdx)=>{
return rowRef.current?.querySelector(`.rdg-cell[aria-colindex="${colIdx+1}"]`);
}
};
}, [props.rowIdx]);
if(!props.isRowSelected && props.selectedCellIdx > 0) {
dataGridExtras.onSelectedCellChange?.([props.row, props.viewportColumns?.find(columns => columns.idx === props.selectedCellIdx)]);
} else if(props.selectedCellIdx == 0) {
@@ -291,7 +293,7 @@ function RowNumColFormatter({row, rowKeyGetter, dataChangeStore, onSelectedColum
return (<div className={classes.rowNumCell} onClick={()=>{
onSelectedColumnsChange(new Set());
onRowSelectionChange({ row: row, checked: !isRowSelected, isShiftClick: false});
}}>
}} onKeyDown={()=>{/* already taken care by parent */}}>
{rownum}
</div>);
}
@@ -361,30 +363,34 @@ function getTextWidth(column, rows, canvas, columnWidthBy) {
export default function QueryToolDataGrid({columns, rows, totalRowCount, dataChangeStore,
onSelectedCellChange, selectedColumns, onSelectedColumnsChange, columnWidthBy, ...props}) {
const classes = useStyles();
const [readyColumns, setColumns] = useState([]);
const [readyColumns, setReadyColumns] = useState([]);
const eventBus = useContext(QueryToolEventsContext);
const onSelectedColumnsChangeWrapped = (arg)=>{
props.onSelectedRowsChange(new Set());
onSelectedColumnsChange(arg);
};
useEffect(()=>{
let initCols = initialiseColumns(columns, rows, totalRowCount, columnWidthBy);
setColumns(formatColumns(initCols, dataChangeStore, selectedColumns, onSelectedColumnsChangeWrapped, props.rowKeyGetter, classes));
}, [columns]);
useEffect(()=>{
setColumns((prevCols)=>{
return formatColumns(prevCols, dataChangeStore, selectedColumns, onSelectedColumnsChangeWrapped, props.rowKeyGetter, classes);
});
}, [dataChangeStore, selectedColumns]);
function handleCopy() {
eventBus.fireEvent(QUERY_TOOL_EVENTS.TRIGGER_COPY_DATA);
}
const dataGridExtras = useMemo(()=>({
onSelectedCellChange, handleCopy
}), []);
useEffect(()=>{
let initCols = initialiseColumns(columns, rows, totalRowCount, columnWidthBy);
setReadyColumns(formatColumns(initCols, dataChangeStore, selectedColumns, onSelectedColumnsChangeWrapped, props.rowKeyGetter, classes));
}, [columns]);
useEffect(()=>{
setReadyColumns((prevCols)=>{
return formatColumns(prevCols, dataChangeStore, selectedColumns, onSelectedColumnsChangeWrapped, props.rowKeyGetter, classes);
});
}, [dataChangeStore, selectedColumns]);
return (
<DataGridExtrasContext.Provider value={{onSelectedCellChange, handleCopy}}>
<DataGridExtrasContext.Provider value={dataGridExtras}>
<PgReactDataGrid
id="datagrid"
columns={readyColumns}