Skip to content

Commit

Permalink
fix #975
Browse files Browse the repository at this point in the history
  • Loading branch information
AllenFang committed Feb 4, 2017
1 parent 1800a52 commit 6893be6
Show file tree
Hide file tree
Showing 5 changed files with 86 additions and 27 deletions.
80 changes: 57 additions & 23 deletions src/BootstrapTable.js
Expand Up @@ -46,7 +46,8 @@ class BootstrapTable extends Component {
currPage: currPage,
expanding: this.props.options.expanding || [],
sizePerPage: this.props.options.sizePerPage || Const.SIZE_PER_PAGE_LIST[0],
selectedRowKeys: this.store.getSelectedRowKeys()
selectedRowKeys: this.store.getSelectedRowKeys(),
reset: false
};
}

Expand Down Expand Up @@ -172,6 +173,18 @@ class BootstrapTable extends Component {
});
}

reset() {
this.store.clean();
this.setState({
data: this.getTableData(),
currPage: 1,
expanding: [],
sizePerPage: Const.SIZE_PER_PAGE_LIST[0],
selectedRowKeys: this.store.getSelectedRowKeys(),
reset: true
});
}

componentWillReceiveProps(nextProps) {
this.initTable(nextProps);
const { options, selectRow } = nextProps;
Expand All @@ -193,7 +206,8 @@ class BootstrapTable extends Component {
this.setState({
data: nextProps.data.slice(),
currPage: page,
sizePerPage
sizePerPage,
reset: false
});
} else {
// #125
Expand All @@ -214,7 +228,8 @@ class BootstrapTable extends Component {
this.setState({
data,
currPage: page,
sizePerPage
sizePerPage,
reset: false
});
}

Expand All @@ -223,7 +238,8 @@ class BootstrapTable extends Component {
const copy = selectRow.selected.slice();
this.store.setSelectedRowKey(copy);
this.setState({
selectedRowKeys: copy
selectedRowKeys: copy,
reset: false
});
}
}
Expand Down Expand Up @@ -314,7 +330,8 @@ class BootstrapTable extends Component {
bordered={ this.props.bordered }
condensed={ this.props.condensed }
isFiltered={ this.filter ? true : false }
isSelectAll={ isSelectAll }>
isSelectAll={ isSelectAll }
reset={ this.state.reset }>
{ this.props.children }
</TableHeader>
<TableBody ref='body'
Expand Down Expand Up @@ -384,7 +401,8 @@ class BootstrapTable extends Component {
cleanSelected() {
this.store.setSelectedRowKey([]);
this.setState({
selectedRowKeys: []
selectedRowKeys: [],
reset: false
});
}

Expand All @@ -399,12 +417,13 @@ class BootstrapTable extends Component {

const result = this.store.sort().get();
this.setState({
data: result
data: result,
reset: false
});
}

handleExpandRow = expanding => {
this.setState({ expanding }, () => {
this.setState({ expanding, reset: false }, () => {
this._adjustHeaderWidth();
});
}
Expand All @@ -417,7 +436,8 @@ class BootstrapTable extends Component {

this.setState({
currPage: page,
sizePerPage
sizePerPage,
reset: false
});

if (this.isRemoteDataSource()) {
Expand All @@ -436,7 +456,7 @@ class BootstrapTable extends Component {

const result = this.store.page(normalizedPage, sizePerPage).get();

this.setState({ data: result });
this.setState({ data: result, reset: false });
}

handleMouseLeave = () => {
Expand Down Expand Up @@ -512,7 +532,7 @@ class BootstrapTable extends Component {
}

this.store.setSelectedRowKey(selectedRowKeys);
this.setState({ selectedRowKeys });
this.setState({ selectedRowKeys, reset: false });
}
}

Expand All @@ -526,6 +546,7 @@ class BootstrapTable extends Component {
}
this.setState({
data: result,
reset: false,
currPage: this.props.options.pageStartIndex || Const.PAGE_START_INDEX
});
}
Expand All @@ -552,7 +573,8 @@ class BootstrapTable extends Component {

this.store.setSelectedRowKey(currSelected);
this.setState({
selectedRowKeys: currSelected
selectedRowKeys: currSelected,
reset: false
});
}
}
Expand All @@ -567,7 +589,8 @@ class BootstrapTable extends Component {
const isValid = beforeSaveCell(this.state.data[rowIndex], fieldName, newVal);
if (!isValid && typeof isValid !== 'undefined') {
this.setState({
data: this.store.get()
data: this.store.get(),
reset: false
});
return;
}
Expand All @@ -586,7 +609,8 @@ class BootstrapTable extends Component {

const result = this.store.edit(newVal, rowIndex, fieldName).get();
this.setState({
data: result
data: result,
reset: false
});

if (afterSaveCell) {
Expand Down Expand Up @@ -689,12 +713,14 @@ class BootstrapTable extends Component {
this.setState({
data: result,
selectedRowKeys: this.store.getSelectedRowKeys(),
currPage
currPage,
reset: false
});
} else {
result = this.store.get();
this.setState({
data: result,
reset: false,
selectedRowKeys: this.store.getSelectedRowKeys()
});
}
Expand All @@ -711,7 +737,8 @@ class BootstrapTable extends Component {
}

this.setState({
currPage: this.props.options.pageStartIndex || Const.PAGE_START_INDEX
currPage: this.props.options.pageStartIndex || Const.PAGE_START_INDEX,
reset: false
});

if (this.isRemoteDataSource()) {
Expand Down Expand Up @@ -742,7 +769,8 @@ class BootstrapTable extends Component {
this.store.getDataIgnoringPagination());
}
this.setState({
data: result
data: result,
reset: false
});
}

Expand Down Expand Up @@ -793,7 +821,8 @@ class BootstrapTable extends Component {
}

this.setState({
currPage: this.props.options.pageStartIndex || Const.PAGE_START_INDEX
currPage: this.props.options.pageStartIndex || Const.PAGE_START_INDEX,
reset: false
});

if (this.isRemoteDataSource()) {
Expand Down Expand Up @@ -824,7 +853,8 @@ class BootstrapTable extends Component {
this.store.getDataIgnoringPagination());
}
this.setState({
data: result
data: result,
reset: false
});
}

Expand Down Expand Up @@ -921,7 +951,8 @@ class BootstrapTable extends Component {
onDropRow={ this.handleDropRow }
onSearch={ this.handleSearch }
onExportCSV={ this.handleExportCSV }
onShowOnlySelected={ this.handleShowOnlySelected }/>
onShowOnlySelected={ this.handleShowOnlySelected }
reset={ this.state.reset } />
</div>
);
} else {
Expand Down Expand Up @@ -1042,20 +1073,23 @@ class BootstrapTable extends Component {
result = this.store.page(firstPage, sizePerPage).get();
this.setState({
data: result,
currPage: firstPage
currPage: firstPage,
reset: false
});
} else {
const currLastPage = Math.ceil(this.store.getDataNum() / sizePerPage);
result = this.store.page(currLastPage, sizePerPage).get();
this.setState({
data: result,
currPage: currLastPage
currPage: currLastPage,
reset: false
});
}
} else {
result = this.store.get();
this.setState({
data: result
data: result,
reset: false
});
}

Expand Down
7 changes: 4 additions & 3 deletions src/TableHeader.js
Expand Up @@ -55,7 +55,7 @@ class TableHeader extends Component {
rows[0] = [ this.renderSelectRowHeader(rowCount + 1, rowKey++) ];
}

const { sortIndicator, sortList, onSort } = this.props;
const { sortIndicator, sortList, onSort, reset } = this.props;

React.Children.forEach(this.props.children, (elm) => {
const { dataField, dataSort } = elm.props;
Expand All @@ -67,7 +67,7 @@ class TableHeader extends Component {
}
if ((rowSpan + rowIndex) === (rowCount + 1)) {
rows[rowIndex].push(React.cloneElement(
elm, { key: rowKey++, onSort, sort, sortIndicator, isOnlyHead: false }
elm, { reset, key: rowKey++, onSort, sort, sortIndicator, isOnlyHead: false }
));
} else {
rows[rowIndex].push(React.cloneElement(
Expand Down Expand Up @@ -140,7 +140,8 @@ TableHeader.propTypes = {
isSelectAll: PropTypes.oneOf([ true, 'indeterminate', false ]),
sortIndicator: PropTypes.bool,
customComponent: PropTypes.func,
colGroups: PropTypes.element
colGroups: PropTypes.element,
reset: PropTypes.bool
};

export default TableHeader;
6 changes: 6 additions & 0 deletions src/TableHeaderColumn.js
Expand Up @@ -17,6 +17,12 @@ class TableHeaderColumn extends Component {
this.handleFilter = this.handleFilter.bind(this);
}

componentWillReceiveProps(nextProps) {
if (nextProps.reset) {
this.cleanFiltered();
}
}

handleColumnClick = () => {
if (this.props.isOnlyHead || !this.props.dataSort) return;
const order = this.props.sort === Const.SORT_DESC ? Const.SORT_ASC : Const.SORT_DESC;
Expand Down
10 changes: 10 additions & 0 deletions src/store/TableDataStore.js
Expand Up @@ -32,6 +32,16 @@ export class TableDataStore {
this.multiColumnSort = props.multiColumnSort;
}

clean() {
this.filteredData = null;
this.isOnFilter = false;
this.filterObj = null;
this.searchText = null;
this.sortList = [];
this.pageObj = {};
this.selected = [];
}

setData(data) {
this.data = data;
if (this.remote) {
Expand Down
10 changes: 9 additions & 1 deletion src/toolbar/ToolBar.js
Expand Up @@ -29,6 +29,12 @@ class ToolBar extends Component {
);
}

componentWillReceiveProps(nextProps) {
if (nextProps.reset) {
this.setSearchInput('');
}
}

componentWillUnmount() {
this.clearTimeout();
}
Expand Down Expand Up @@ -397,10 +403,12 @@ ToolBar.propTypes = {
closeText: PropTypes.string,
clearSearch: PropTypes.bool,
ignoreEditable: PropTypes.bool,
defaultSearch: PropTypes.string
defaultSearch: PropTypes.string,
reset: PropTypes.bool
};

ToolBar.defaultProps = {
reset: false,
enableInsert: false,
enableDelete: false,
enableSearch: false,
Expand Down

0 comments on commit 6893be6

Please sign in to comment.