mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
Fix SonarQube bugs
This commit is contained in:
@@ -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,
|
||||
};
|
||||
|
||||
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user