From 63283fc7d307551d0bc088e68e4abc2b1f524956 Mon Sep 17 00:00:00 2001 From: Naumov Alexey Date: Fri, 28 May 2021 14:13:11 +0300 Subject: [PATCH 1/2] refactor(plugin-data-spreadsheet-new): CB-666 column.name -> column.label --- .../DataGridContextMenuOrderService.ts | 73 ++++++++----------- .../TableColumnHeader/OrderButton.tsx | 8 +- .../TableColumnHeader/TableColumnHeader.tsx | 2 +- 3 files changed, 37 insertions(+), 46 deletions(-) diff --git a/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/DataGridContextMenu/DataGridContextMenuOrderService.ts b/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/DataGridContextMenu/DataGridContextMenuOrderService.ts index 6299c130d4..08427d9a4a 100644 --- a/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/DataGridContextMenu/DataGridContextMenuOrderService.ts +++ b/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/DataGridContextMenu/DataGridContextMenuOrderService.ts @@ -23,40 +23,17 @@ export class DataGridContextMenuOrderService { return DataGridContextMenuOrderService.menuOrderToken; } - private getColumnName(model: IDatabaseDataModel, resultIndex: number, columnIndex: number) { - const data = model.source.getAction(resultIndex, ResultSetDataAction); - return data.getColumn(columnIndex)?.name; - } - private async changeOrder( model: IDatabaseDataModel, resultIndex: number, columnIndex: number, order: Order ) { - const columnName = this.getColumnName(model, resultIndex, columnIndex)!; + const data = model.source.getAction(resultIndex, ResultSetDataAction); const constraints = model.source.getAction(resultIndex, ResultSetConstraintAction); + const columnLabel = data.getColumn(columnIndex)?.label || ''; - constraints.setOrder(columnName, order, true); - await model.refresh(); - } - - private getOrder(model: IDatabaseDataModel, resultIndex: number, columnIndex: number) { - const columnName = this.getColumnName(model, resultIndex, columnIndex)!; - const constraints = model.source.getAction(resultIndex, ResultSetConstraintAction); - - return constraints.getOrder(columnName); - } - - private getSortingConstraints(model: IDatabaseDataModel, resultIndex: number) { - const constraints = model.source.getAction(resultIndex, ResultSetConstraintAction); - return constraints.getOrderConstraints(); - } - - private async removeSortingFromConstraints(model: IDatabaseDataModel, resultIndex: number) { - const constraints = model.source.getAction(resultIndex, ResultSetConstraintAction); - - constraints.deleteOrders(); + constraints.setOrder(columnLabel, order, true); await model.refresh(); } @@ -86,10 +63,14 @@ export class DataGridContextMenuOrderService { await this.changeOrder(context.data.model, context.data.resultIndex, context.data.column, EOrder.asc); }, type: 'radio', - isChecked: context => this.getOrder( - context.data.model, - context.data.resultIndex, - context.data.column) === EOrder.asc, + isChecked: context => { + const { model, resultIndex, column } = context.data; + const data = model.source.getAction(resultIndex, ResultSetDataAction); + const constraints = model.source.getAction(resultIndex, ResultSetConstraintAction); + const columnLabel = data.getColumn(column)?.label || ''; + + return constraints.getOrder(columnLabel) === EOrder.asc; + }, title: 'ASC', } ); @@ -105,10 +86,14 @@ export class DataGridContextMenuOrderService { await this.changeOrder(context.data.model, context.data.resultIndex, context.data.column, EOrder.desc); }, type: 'radio', - isChecked: context => this.getOrder( - context.data.model, - context.data.resultIndex, - context.data.column) === EOrder.desc, + isChecked: context => { + const { model, resultIndex, column } = context.data; + const data = model.source.getAction(resultIndex, ResultSetDataAction); + const constraints = model.source.getAction(resultIndex, ResultSetConstraintAction); + const columnLabel = data.getColumn(column)?.label || ''; + + return constraints.getOrder(columnLabel) === EOrder.desc; + }, title: 'DESC', } ); @@ -124,10 +109,14 @@ export class DataGridContextMenuOrderService { await this.changeOrder(context.data.model, context.data.resultIndex, context.data.column, null); }, type: 'radio', - isChecked: context => this.getOrder( - context.data.model, - context.data.resultIndex, - context.data.column) === null, + isChecked: context => { + const { model, resultIndex, column } = context.data; + const data = model.source.getAction(resultIndex, ResultSetDataAction); + const constraints = model.source.getAction(resultIndex, ResultSetConstraintAction); + const columnLabel = data.getColumn(column)?.label || ''; + + return constraints.getOrder(columnLabel) === null; + }, title: 'data_grid_table_disable_sorting', } ); @@ -139,12 +128,14 @@ export class DataGridContextMenuOrderService { return context.contextType === DataGridContextMenuService.cellContext; }, isHidden: context => { - const sortingConstraints = this.getSortingConstraints(context.data.model, context.data.resultIndex); - return sortingConstraints.length === 0; + const constraints = context.data.model.source.getAction(context.data.resultIndex, ResultSetConstraintAction); + return constraints.getOrderConstraints().length < 2; }, isDisabled: context => context.data.model.isLoading(), onClick: async context => { - await this.removeSortingFromConstraints(context.data.model, context.data.resultIndex); + const constraints = context.data.model.source.getAction(context.data.resultIndex, ResultSetConstraintAction); + constraints.deleteOrders(); + await context.data.model.refresh(); }, title: 'data_grid_table_disable_all_sorting', } diff --git a/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/TableColumnHeader/OrderButton.tsx b/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/TableColumnHeader/OrderButton.tsx index 3d0c5e8da9..b53e6dabff 100644 --- a/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/TableColumnHeader/OrderButton.tsx +++ b/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/TableColumnHeader/OrderButton.tsx @@ -40,19 +40,19 @@ const styles = css` interface Props { model: IDatabaseDataModel; resultIndex: number; - columnName: string; + attribute: string; className?: string; } export const OrderButton: React.FC = observer(function OrderButtton({ model, resultIndex, - columnName, + attribute, className, }) { const translate = useTranslate(); const constraints = model.source.getAction(resultIndex, ResultSetConstraintAction); - const currentOrder = constraints.getOrder(columnName); + const currentOrder = constraints.getOrder(attribute); const loading = model.isLoading(); let icon = 'sort-arrow-unknown'; @@ -69,7 +69,7 @@ export const OrderButton: React.FC = observer(function OrderButtton({ } const nextOrder = getNextOrder(currentOrder); - constraints.setOrder(columnName, nextOrder, e.ctrlKey || e.metaKey); + constraints.setOrder(attribute, nextOrder, e.ctrlKey || e.metaKey); model.refresh(); }; diff --git a/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/TableColumnHeader/TableColumnHeader.tsx b/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/TableColumnHeader/TableColumnHeader.tsx index 5b147232c7..390c63a4fe 100644 --- a/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/TableColumnHeader/TableColumnHeader.tsx +++ b/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/TableColumnHeader/TableColumnHeader.tsx @@ -101,7 +101,7 @@ export const TableColumnHeader: React.FC> = observer(fu {columnName} {sortable && column?.name && ( - + )} ); From b282ec9d1f1b1aeb7983ef9d893ef0561614492d Mon Sep 17 00:00:00 2001 From: Naumov Alexey Date: Fri, 28 May 2021 14:18:51 +0300 Subject: [PATCH 2/2] refactor(plugin-data-spreadsheet-new): CB-666 check for column.label --- .../src/DataGrid/TableColumnHeader/TableColumnHeader.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/TableColumnHeader/TableColumnHeader.tsx b/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/TableColumnHeader/TableColumnHeader.tsx index 390c63a4fe..2df7b78b9e 100644 --- a/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/TableColumnHeader/TableColumnHeader.tsx +++ b/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/TableColumnHeader/TableColumnHeader.tsx @@ -100,8 +100,8 @@ export const TableColumnHeader: React.FC> = observer(fu {columnName} - {sortable && column?.name && ( - + {sortable && column?.label && ( + )} );