From 5307e5881332cb2c248ca99aa0cd8469a3ad349a Mon Sep 17 00:00:00 2001 From: AllenFang Date: Sat, 19 May 2018 16:23:28 +0800 Subject: [PATCH] implement data operator --- .../src/contexts/selection-context.js | 17 ++++++++--------- .../src/contexts/sort-context.js | 6 +++--- .../react-bootstrap-table2/src/store/mutate.js | 7 +++++++ .../src/store/operators.js | 11 +++++++++++ 4 files changed, 29 insertions(+), 12 deletions(-) create mode 100644 packages/react-bootstrap-table2/src/store/mutate.js create mode 100644 packages/react-bootstrap-table2/src/store/operators.js diff --git a/packages/react-bootstrap-table2/src/contexts/selection-context.js b/packages/react-bootstrap-table2/src/contexts/selection-context.js index 2ebfda2..2e171bb 100644 --- a/packages/react-bootstrap-table2/src/contexts/selection-context.js +++ b/packages/react-bootstrap-table2/src/contexts/selection-context.js @@ -2,11 +2,10 @@ import React from 'react'; import PropTypes from 'prop-types'; import Const from '../const'; -import { getRowByRowId } from '../store/rows'; -// Consider make selectionHandler become a part of Provider -import * as selectionHandler from '../store/selection'; -export default () => { +export default ( + dataOperator +) => { const SelectionContext = React.createContext(); class SelectionProvider extends React.Component { @@ -41,7 +40,7 @@ export default () => { } if (onSelect) { - const row = getRowByRowId(data, keyField, rowKey); + const row = dataOperator.getRowByRowId(data, keyField, rowKey); onSelect(row, checked, rowIndex, e); } @@ -58,16 +57,16 @@ export default () => { } } = this.props; const { selected } = this.state; - const anySelected = selectionHandler.isAnySelectedRow(selected, nonSelectable); + const anySelected = dataOperator.isAnySelectedRow(selected, nonSelectable); const result = !anySelected; const currSelected = result ? - selectionHandler.selectableKeys(data, keyField, nonSelectable) : - selectionHandler.unSelectableKeys(selected, nonSelectable); + dataOperator.selectableKeys(data, keyField, nonSelectable) : + dataOperator.unSelectableKeys(selected, nonSelectable); if (onSelectAll) { - onSelectAll(result, selectionHandler.getSelectedRows(data, keyField, currSelected), e); + onSelectAll(result, dataOperator.getSelectedRows(data, keyField, currSelected), e); } this.setState(() => ({ selected: currSelected })); diff --git a/packages/react-bootstrap-table2/src/contexts/sort-context.js b/packages/react-bootstrap-table2/src/contexts/sort-context.js index 82474d1..d71dbf5 100644 --- a/packages/react-bootstrap-table2/src/contexts/sort-context.js +++ b/packages/react-bootstrap-table2/src/contexts/sort-context.js @@ -2,9 +2,9 @@ import React from 'react'; import PropTypes from 'prop-types'; import Const from '../const'; -import { sort, nextOrder } from '../store/sort'; export default ( + dataOperator, isRemoteSort, handleSortChange ) => { @@ -48,7 +48,7 @@ export default ( } handleSort = (column) => { - const sortOrder = nextOrder(column, this.state, this.props.defaultSortDirection); + const sortOrder = dataOperator.nextOrder(column, this.state, this.props.defaultSortDirection); if (column.onSort) { column.onSort(column.dataField, sortOrder); @@ -67,7 +67,7 @@ export default ( let { data } = this.props; const { sortOrder, sortColumn } = this.state; if (!isRemoteSort() && sortColumn) { - data = sort(data, sortOrder, sortColumn); + data = dataOperator.sort(data, sortOrder, sortColumn); } return ( diff --git a/packages/react-bootstrap-table2/src/store/mutate.js b/packages/react-bootstrap-table2/src/store/mutate.js new file mode 100644 index 0000000..43cab2c --- /dev/null +++ b/packages/react-bootstrap-table2/src/store/mutate.js @@ -0,0 +1,7 @@ +import _ from '../utils'; +import { getRowByRowId } from './rows'; + +export const editCell = (rowId, dataField, newValue) => { + const row = getRowByRowId(this)(rowId); + if (row) _.set(row, dataField, newValue); +}; diff --git a/packages/react-bootstrap-table2/src/store/operators.js b/packages/react-bootstrap-table2/src/store/operators.js new file mode 100644 index 0000000..c01ddad --- /dev/null +++ b/packages/react-bootstrap-table2/src/store/operators.js @@ -0,0 +1,11 @@ +import * as rows from './rows'; +import * as selection from './selection'; +import * as mutate from './mutate'; +import * as sort from './sort'; + +export default { + ...rows, + ...selection, + ...mutate, + ...sort +};