blob: 5f1c663bafc2ffc79c2f2e81b44d48603fed02f1 [file] [log] [blame]
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy of
// the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.
import React from 'react';
import PagingControls from './PagingControls.js';
import PerPageSelector from './PerPageSelector.js';
import TableControls from './TableControls';
export default class PaginationFooter extends React.Component {
constructor(props) {
super(props);
}
getPageNumberText () {
const { docs, pageStart, pageEnd } = this.props;
if (docs.length === 0) {
return <span>Showing 0 documents.</span>;
}
return <span>Showing document {pageStart} - {pageEnd}.</span>;
}
perPageChange (amount) {
const { updatePerPageResults, fetchParams, queryOptionsParams } = this.props;
updatePerPageResults(amount, fetchParams, queryOptionsParams);
}
nextClicked (event) {
event.preventDefault();
const { canShowNext, fetchParams, queryOptionsParams, paginateNext, perPage } = this.props;
if (canShowNext) {
paginateNext(fetchParams, queryOptionsParams, perPage);
}
}
previousClicked (event) {
event.preventDefault();
const { canShowPrevious, fetchParams, queryOptionsParams, paginatePrevious, perPage } = this.props;
if (canShowPrevious) {
paginatePrevious(fetchParams, queryOptionsParams, perPage);
}
}
render () {
const {
showPrioritizedEnabled,
hasResults,
prioritizedEnabled,
displayedFields,
perPage,
canShowNext,
canShowPrevious,
toggleShowAllColumns
} = this.props;
return (
<footer className="index-pagination pagination-footer">
<PagingControls
nextClicked={this.nextClicked.bind(this)}
previousClicked={this.previousClicked.bind(this)}
canShowNext={canShowNext}
canShowPrevious={canShowPrevious} />
<div className="footer-controls">
<div className="page-controls">
{showPrioritizedEnabled && hasResults ?
<TableControls
prioritizedEnabled={prioritizedEnabled}
displayedFields={displayedFields}
toggleShowAllColumns={toggleShowAllColumns} /> : null}
</div>
<PerPageSelector perPageChange={this.perPageChange.bind(this)} perPage={perPage} />
<div className="current-docs">
{this.getPageNumberText()}
</div>
</div>
</footer>
);
}
}