implement data operator

This commit is contained in:
AllenFang 2018-05-19 16:23:28 +08:00
parent 143acde35e
commit 5307e58813
4 changed files with 29 additions and 12 deletions

View File

@ -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 }));

View File

@ -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 (

View File

@ -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);
};

View File

@ -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
};