diff --git a/packages/web/src/datagrid/DataFilterControl.js b/packages/web/src/datagrid/DataFilterControl.js index 0729649c7..abcdc4b23 100644 --- a/packages/web/src/datagrid/DataFilterControl.js +++ b/packages/web/src/datagrid/DataFilterControl.js @@ -179,8 +179,8 @@ export default function DataFilterControl({ filterType, filter, setFilter, - focusIndex, - onFocusGrid, + focusIndex = 0, + onFocusGrid = undefined, }) { const showModal = useShowModal(); const showMenu = useShowMenu(); @@ -229,7 +229,7 @@ export default function DataFilterControl({ setFilterText(''); } if (ev.keyCode == keycodes.downArrow) { - onFocusGrid(); + if (onFocusGrid) onFocusGrid(); // ev.stopPropagation(); ev.preventDefault(); } diff --git a/packages/web/src/designer/Designer.js b/packages/web/src/designer/Designer.js index 30a0424c4..d016020c9 100644 --- a/packages/web/src/designer/Designer.js +++ b/packages/web/src/designer/Designer.js @@ -2,8 +2,10 @@ import React from 'react'; import styled from 'styled-components'; import DesignerTable from './DesignerTable'; import uuidv1 from 'uuid/v1'; +import _ from 'lodash'; import useTheme from '../theme/useTheme'; import DesignerReference from './DesignerReference'; +import cleanupDesignColumns from './cleanupDesignColumns'; const Wrapper = styled.div` flex: 1; @@ -148,7 +150,7 @@ export default function Designer({ value, onChange }) { (x) => x.designerId == column.designerId && x.columnName == column.columnName ) ? current.columns - : [...(current.columns || []), column], + : [...cleanupDesignColumns(current.columns), _.pick(column, ['designerId', 'columnName'])], })); }, [onChange] diff --git a/packages/web/src/designer/QueryDesignColumns.js b/packages/web/src/designer/QueryDesignColumns.js index 1b9d0319f..03b221d9d 100644 --- a/packages/web/src/designer/QueryDesignColumns.js +++ b/packages/web/src/designer/QueryDesignColumns.js @@ -1,10 +1,16 @@ import React from 'react'; -import { CheckboxField } from '../utility/inputs'; +import DataFilterControl from '../datagrid/DataFilterControl'; +import { CheckboxField, SelectField, TextField } from '../utility/inputs'; import TableControl, { TableColumn } from '../utility/TableControl'; +function getTableDisplayName(column, tables) { + const table = tables.find((x) => x.designerId == column.designerId); + if (table) return table.alias || table.pureName; + return ''; +} + export default function QueryDesignColumns({ value, onChange }) { - const { columns } = value || {}; - console.log('QueryDesignColumns', value); + const { columns, tables } = value || {}; const changeColumn = React.useCallback( (col) => { @@ -22,7 +28,7 @@ export default function QueryDesignColumns({ value, onChange }) { return ( - + getTableDisplayName(row, tables)} /> )} /> - {/* - ( + { + changeColumn({ ...row, alias: e.target.value }); + }} + /> + )} + /> + + ( + { + if (e.target.checked) changeColumn({ ...row, isGrouped: true }); + else changeColumn({ ...row, isGrouped: false }); + }} + /> + )} + /> + ( + { + changeColumn({ ...row, aggregate: e.target.value }); + }} + > + + + + + + + + + )} /> ( + { + changeColumn({ ...row, sortOrder: e.target.value }); + }} + > + + + + + + + , + + )} + /> + ( + { + changeColumn({ ...row, filter }); + }} + /> + )} /> - */} ); } diff --git a/packages/web/src/designer/cleanupDesignColumns.js b/packages/web/src/designer/cleanupDesignColumns.js new file mode 100644 index 000000000..758369ff9 --- /dev/null +++ b/packages/web/src/designer/cleanupDesignColumns.js @@ -0,0 +1,5 @@ +export default function cleanupDesignColumns(columns) { + return (columns || []).filter( + (x) => x.isOutput || x.isGrouped || x.alias || (x.aggregate && x.aggregate != '---') || x.sortOrder || x.filter + ); +}