From 7446f23b3abc30d7c53f2eaa951742371c071171 Mon Sep 17 00:00:00 2001 From: Herbert Eiselt Date: Thu, 28 Feb 2019 15:23:42 +0100 Subject: UX extensions UX Maintenance client and further changes Change-Id: I7643661d17db5fc3d3f94b58cb42ed0be558c64f Issue-ID: SDNC-583 Signed-off-by: Herbert Eiselt --- .../src/components/material-table/columnModel.ts | 14 ++++++++-- .../src/components/material-table/index.tsx | 32 ++++++++++++---------- .../src/components/material-table/tableFilter.tsx | 26 ++++++++++-------- .../wt/odlux/framework/src/components/titleBar.tsx | 3 +- 4 files changed, 45 insertions(+), 30 deletions(-) (limited to 'sdnr/wt/odlux/framework/src/components') diff --git a/sdnr/wt/odlux/framework/src/components/material-table/columnModel.ts b/sdnr/wt/odlux/framework/src/components/material-table/columnModel.ts index 6acea01d5..42a0bb4d8 100644 --- a/sdnr/wt/odlux/framework/src/components/material-table/columnModel.ts +++ b/sdnr/wt/odlux/framework/src/components/material-table/columnModel.ts @@ -4,17 +4,23 @@ import * as React from 'react'; export enum ColumnType { text, numeric, + boolean, custom } type CustomControl = { - rowData: TData + className?: string; + style?: React.CSSProperties; + rowData: TData; } export type ColumnModel = { title?: string; disablePadding?: boolean; width?: string | number; + className?: string; + style?: React.CSSProperties; + align?: 'inherit' | 'left' | 'center' | 'right' | 'justify'; disableSorting?: boolean; disableFilter?: boolean; } & ({ @@ -23,5 +29,9 @@ export type ColumnModel = { customControl: React.ComponentType>; } | { property: keyof TData; - type?: ColumnType.numeric | ColumnType.text; + type: ColumnType.boolean; + labels?: { "true": string, "false": string }; +} | { + property: keyof TData; + type?: ColumnType.numeric | ColumnType.text; }); \ No newline at end of file diff --git a/sdnr/wt/odlux/framework/src/components/material-table/index.tsx b/sdnr/wt/odlux/framework/src/components/material-table/index.tsx index 3b906cfbb..61a990d81 100644 --- a/sdnr/wt/odlux/framework/src/components/material-table/index.tsx +++ b/sdnr/wt/odlux/framework/src/components/material-table/index.tsx @@ -84,7 +84,7 @@ type MaterialTableComponentBaseProps = WithStyles & { disableSorting?: boolean; disableFilter?: boolean; customActionButtons?: { icon: React.ComponentType, tooltip?: string, onClick: () => void }[]; - onHandleClick?(event: React.MouseEvent, rowData: TData): void; + onHandleClick?(event: React.MouseEvent, rowData: TData): void; }; type MaterialTableComponentPropsWithRows = MaterialTableComponentBaseProps & { rows: TData[]; asynchronus?: boolean; }; @@ -142,7 +142,7 @@ class MaterialTableComponent extends React.Component this.update(); } @@ -168,11 +168,11 @@ class MaterialTableComponent extends React.Component { showFilter && || null } - { rows // may need ordering here + { rows // may need ordering here .map((entry: TData & { [key: string]: any }) => { const entryId = getId(entry); const isSelected = this.isSelected(entryId); @@ -186,21 +186,23 @@ class MaterialTableComponent extends React.Component - { this.props.enableSelection + { this.props.enableSelection ? : null - } + } { this.props.columns.map( col => { - const style = col.width ? { width: col.width } : {}; + const style = col.width ? { width: col.width } : { }; return ( - + { col.type === ColumnType.custom && col.customControl - ? - : entry[col.property] + ? + : col.type === ColumnType.boolean + ? {col.labels ? col.labels[entry[col.property] ? "true": "false"] : String(entry[col.property]) } + : {String(entry[col.property])} } ); @@ -270,10 +272,10 @@ class MaterialTableComponent extends React.Component { const exp = filter[prop]; - filtered = filtered || !!exp; - data = exp ? data.filter((val) => { + filtered = filtered || exp !== undefined; + data = exp !== undefined ? data.filter((val) => { const value = val[prop]; - return value && value.toString().indexOf(exp) > -1; + return (value == exp) || (value && value.toString().indexOf(String(exp)) > -1); }) : data; }); } @@ -341,7 +343,7 @@ class MaterialTableComponent extends React.Component {}; - + private onHandleChangePage = (event: React.MouseEvent | null, page: number) => { if (isMaterialTableComponentPropsWithRowsAndRequestData(this.props)) { this.props.onHandleChangePage(page); @@ -378,7 +380,7 @@ class MaterialTableComponent extends React.Component -1) { diff --git a/sdnr/wt/odlux/framework/src/components/material-table/tableFilter.tsx b/sdnr/wt/odlux/framework/src/components/material-table/tableFilter.tsx index 68e47d7ee..e21855abb 100644 --- a/sdnr/wt/odlux/framework/src/components/material-table/tableFilter.tsx +++ b/sdnr/wt/odlux/framework/src/components/material-table/tableFilter.tsx @@ -7,6 +7,7 @@ import { withStyles, WithStyles, createStyles, Theme } from '@material-ui/core/s import TableCell from '@material-ui/core/TableCell'; import TableRow from '@material-ui/core/TableRow'; import Input from '@material-ui/core/Input'; +import { Select, FormControl, InputLabel, MenuItem } from '@material-ui/core'; const styles = (theme: Theme) => createStyles({ @@ -27,7 +28,7 @@ interface IEnhancedTableFilterComponentProps extends WithStyles { } class EnhancedTableFilterComponent extends React.Component { - createFilterHandler = (property: string) => (event: React.ChangeEvent) => { + createFilterHandler = (property: string) => (event: React.ChangeEvent) => { this.props.onFilterChanged && this.props.onFilterChanged(property, event.target.value); }; @@ -35,11 +36,11 @@ class EnhancedTableFilterComponent extends React.Component - { this.props.enableSelection + { this.props.enableSelection ? : null - } + } { columns.map(col => { const style = col.width ? { width: col.width } : {}; return ( @@ -48,14 +49,17 @@ class EnhancedTableFilterComponent extends React.Component - { col.disableFilter || (col.type === ColumnType.custom) ? null : } + { col.disableFilter || (col.type === ColumnType.custom) + ? null + : (col.type === ColumnType.boolean) + ? + : } ); }, this) } diff --git a/sdnr/wt/odlux/framework/src/components/titleBar.tsx b/sdnr/wt/odlux/framework/src/components/titleBar.tsx index d4d17d22e..ed6eb2ccc 100644 --- a/sdnr/wt/odlux/framework/src/components/titleBar.tsx +++ b/sdnr/wt/odlux/framework/src/components/titleBar.tsx @@ -31,8 +31,7 @@ const styles = (theme: Theme) => createStyles({ marginRight: 20, }, icon: { - marginRight: 8, - marginLeft: 24, + marginRight: 12 } }); -- cgit 1.2.3-korg