From d6a6eb1e5987f16fd5cbba9039768bddef95a28d Mon Sep 17 00:00:00 2001 From: pkupczyk <piotr.kupczyk@id.ethz.ch> Date: Thu, 11 Nov 2021 13:41:23 +0100 Subject: [PATCH] SSDM-11664 : NG UI & ELN : common table widget - move the sorting configuration from a column config to grid config --- .../components/common/grid/GridController.js | 17 ++++++----------- .../components/tools/common/PluginsGrid.jsx | 2 +- .../components/tools/common/QueriesGrid.jsx | 2 +- .../js/components/types/common/TypesGrid.jsx | 2 +- .../types/common/VocabulariesGrid.jsx | 2 +- .../components/types/form/VocabularyForm.jsx | 2 +- .../js/components/users/common/RolesGrid.jsx | 19 ++++++++++++++----- .../users/common/UserGroupsGrid.jsx | 2 +- .../js/components/users/common/UsersGrid.jsx | 2 +- 9 files changed, 27 insertions(+), 23 deletions(-) diff --git a/openbis_ng_ui/src/js/components/common/grid/GridController.js b/openbis_ng_ui/src/js/components/common/grid/GridController.js index 2d7f14fce10..7cbb895a66d 100644 --- a/openbis_ng_ui/src/js/components/common/grid/GridController.js +++ b/openbis_ng_ui/src/js/components/common/grid/GridController.js @@ -13,6 +13,8 @@ export default class GridController { } init(context) { + const props = context.getProps() + context.initState({ loaded: false, loading: false, @@ -29,8 +31,10 @@ export default class GridController { allRows: [], selectedRow: null, multiselectedRows: {}, - sort: null, - sortDirection: null, + sort: props.sort, + sortDirection: props.sortDirection + ? props.sortDirection + : GridSortingOptions.ASC, totalCount: 0, exportOptions: { columns: GridExportOptions.VISIBLE_COLUMNS, @@ -127,15 +131,6 @@ export default class GridController { newState.columnsVisibility = newColumnsVisibility newState.columnsSorting = newColumnsSorting - if (!state.loaded && !settings) { - newState.allColumns.forEach(column => { - if (column.sort) { - newState.sort = column.name - newState.sortDirection = column.sort - } - }) - } - newState.allRows = result.rows newState.filteredRows = this._filterRows( newState.allRows, diff --git a/openbis_ng_ui/src/js/components/tools/common/PluginsGrid.jsx b/openbis_ng_ui/src/js/components/tools/common/PluginsGrid.jsx index b40ff28f385..e87d2f38a7e 100644 --- a/openbis_ng_ui/src/js/components/tools/common/PluginsGrid.jsx +++ b/openbis_ng_ui/src/js/components/tools/common/PluginsGrid.jsx @@ -25,11 +25,11 @@ class PluginsGrid extends React.PureComponent { id={id} controllerRef={controllerRef} header={this.getHeader()} + sort='name' columns={[ { name: 'name', label: messages.get(messages.NAME), - sort: 'asc', getValue: ({ row }) => row.name.value, renderValue: ({ row }) => { return ( diff --git a/openbis_ng_ui/src/js/components/tools/common/QueriesGrid.jsx b/openbis_ng_ui/src/js/components/tools/common/QueriesGrid.jsx index ec2cdb9ce16..b64fbdc9ada 100644 --- a/openbis_ng_ui/src/js/components/tools/common/QueriesGrid.jsx +++ b/openbis_ng_ui/src/js/components/tools/common/QueriesGrid.jsx @@ -18,11 +18,11 @@ class QueriesGrid extends React.PureComponent { id={id} controllerRef={controllerRef} header={messages.get(messages.QUERIES)} + sort='name' columns={[ { name: 'name', label: messages.get(messages.NAME), - sort: 'asc', getValue: ({ row }) => row.name.value, renderValue: ({ value }) => { return <QueryLink queryName={value} /> diff --git a/openbis_ng_ui/src/js/components/types/common/TypesGrid.jsx b/openbis_ng_ui/src/js/components/types/common/TypesGrid.jsx index 0c2f210994e..c9c2d58a459 100644 --- a/openbis_ng_ui/src/js/components/types/common/TypesGrid.jsx +++ b/openbis_ng_ui/src/js/components/types/common/TypesGrid.jsx @@ -20,6 +20,7 @@ class TypesGrid extends React.PureComponent { header={this.getHeader()} columns={this.getColumns()} rows={rows} + sort='code' selectable={true} selectedRowId={selectedRowId} onSelectedRowChange={onSelectedRowChange} @@ -48,7 +49,6 @@ class TypesGrid extends React.PureComponent { columns.push({ name: 'code', label: messages.get(messages.CODE), - sort: 'asc', getValue: ({ row }) => row.code, renderValue: ({ row }) => { return <TypeLink typeCode={row.code} typeKind={kind} /> diff --git a/openbis_ng_ui/src/js/components/types/common/VocabulariesGrid.jsx b/openbis_ng_ui/src/js/components/types/common/VocabulariesGrid.jsx index b0075b5f40d..ab7ee679c7a 100644 --- a/openbis_ng_ui/src/js/components/types/common/VocabulariesGrid.jsx +++ b/openbis_ng_ui/src/js/components/types/common/VocabulariesGrid.jsx @@ -20,7 +20,6 @@ class VocabulariesGrid extends React.PureComponent { { name: 'code', label: messages.get(messages.CODE), - sort: 'asc', getValue: ({ row }) => row.code, renderValue: ({ row }) => { return <VocabularyLink vocabularyCode={row.code} /> @@ -38,6 +37,7 @@ class VocabulariesGrid extends React.PureComponent { } ]} rows={rows} + sort='code' selectable={true} selectedRowId={selectedRowId} onSelectedRowChange={onSelectedRowChange} diff --git a/openbis_ng_ui/src/js/components/types/form/VocabularyForm.jsx b/openbis_ng_ui/src/js/components/types/form/VocabularyForm.jsx index 479e6cc4f83..dd6985f7036 100644 --- a/openbis_ng_ui/src/js/components/types/form/VocabularyForm.jsx +++ b/openbis_ng_ui/src/js/components/types/form/VocabularyForm.jsx @@ -23,7 +23,6 @@ const columns = [ { name: 'code', label: messages.get(messages.CODE), - sort: 'asc', getValue: ({ row }) => row.code.value }, { @@ -117,6 +116,7 @@ class VocabularyForm extends React.PureComponent { header={messages.get(messages.TERMS)} columns={columns} rows={terms} + sort='code' selectable={true} selectedRowId={ selection && selection.type === VocabularyFormSelectionType.TERM diff --git a/openbis_ng_ui/src/js/components/users/common/RolesGrid.jsx b/openbis_ng_ui/src/js/components/users/common/RolesGrid.jsx index fdafcdffdef..175a1b9602d 100644 --- a/openbis_ng_ui/src/js/components/users/common/RolesGrid.jsx +++ b/openbis_ng_ui/src/js/components/users/common/RolesGrid.jsx @@ -55,6 +55,7 @@ class RolesGrid extends React.PureComponent { header={this.getHeader()} columns={columns} rows={rows} + sort={this.getSort()} selectable={true} selectedRowId={selectedRowId} onSelectedRowChange={onSelectedRowChange} @@ -77,14 +78,25 @@ class RolesGrid extends React.PureComponent { return messages.get(message) } - getColumns() { + getSort() { const { id } = this.props + if (id === ids.ROLES_OF_USERS_GRID_ID) { + return 'user' + } else if (id === ids.ROLES_OF_GROUPS_GRID_ID) { + return 'group' + } else if (id === ids.ROLES_OF_USER_GRID_ID) { + return 'inheritedFrom' + } else if (id === ids.ROLES_OF_GROUP_GRID_ID) { + return 'level' + } + } + + getColumns() { return [ { name: 'user', label: messages.get(messages.USER), - sort: id === ids.ROLES_OF_USERS_GRID_ID ? 'asc' : null, getValue: this.getUserValue, renderValue: this.renderUserValue, compareValue: params => { @@ -102,7 +114,6 @@ class RolesGrid extends React.PureComponent { { name: 'group', label: messages.get(messages.GROUP), - sort: id === ids.ROLES_OF_GROUPS_GRID_ID ? 'asc' : null, getValue: this.getGroupValue, renderValue: this.renderGroupValue, compareValue: params => { @@ -120,7 +131,6 @@ class RolesGrid extends React.PureComponent { { name: 'inheritedFrom', label: messages.get(messages.INHERITED_FROM), - sort: id === ids.ROLES_OF_USER_GRID_ID ? 'asc' : null, getValue: this.getInheritedFromValue, renderValue: this.renderInheritedFromValue, compareValue: params => { @@ -137,7 +147,6 @@ class RolesGrid extends React.PureComponent { { name: 'level', label: messages.get(messages.LEVEL), - sort: id === ids.ROLES_OF_GROUP_GRID_ID ? 'asc' : null, getValue: this.getLevelValue, renderValue: this.renderLevelValue, compareValue: params => { diff --git a/openbis_ng_ui/src/js/components/users/common/UserGroupsGrid.jsx b/openbis_ng_ui/src/js/components/users/common/UserGroupsGrid.jsx index 7158fc330f8..6db0a322891 100644 --- a/openbis_ng_ui/src/js/components/users/common/UserGroupsGrid.jsx +++ b/openbis_ng_ui/src/js/components/users/common/UserGroupsGrid.jsx @@ -16,11 +16,11 @@ export default class GroupsGrid extends React.PureComponent { id={id} controllerRef={controllerRef} header={messages.get(messages.GROUPS)} + sort='code' columns={[ { name: 'code', label: messages.get(messages.CODE), - sort: 'asc', getValue: ({ row }) => row.code.value, renderValue: ({ value }) => { if (value) { diff --git a/openbis_ng_ui/src/js/components/users/common/UsersGrid.jsx b/openbis_ng_ui/src/js/components/users/common/UsersGrid.jsx index 9ccf9675f03..97f4a0c49a3 100644 --- a/openbis_ng_ui/src/js/components/users/common/UsersGrid.jsx +++ b/openbis_ng_ui/src/js/components/users/common/UsersGrid.jsx @@ -26,11 +26,11 @@ class UsersGrid extends React.PureComponent { id={id} controllerRef={controllerRef} header={messages.get(messages.USERS)} + sort='userId' columns={[ { name: 'userId', label: messages.get(messages.USER_ID), - sort: 'asc', getValue: ({ row }) => row.userId.value, renderValue: ({ value }) => { return <UserLink userId={value} /> -- GitLab