'use strict'; import React from 'react'; import Router from 'react-router'; import PieceListStore from '../stores/piece_list_store'; import PieceListActions from '../actions/piece_list_actions'; import AccordionList from './ascribe_accordion_list/accordion_list'; import AccordionListItem from './ascribe_accordion_list/accordion_list_item'; import AccordionListItemTableEditions from './ascribe_accordion_list/accordion_list_item_table_editions'; import Pagination from './ascribe_pagination/pagination'; import PieceListBulkModal from './ascribe_piece_list_bulk_modal/piece_list_bulk_modal'; import PieceListToolbar from './ascribe_piece_list_toolbar/piece_list_toolbar'; import AppConstants from '../constants/application_constants'; let PieceList = React.createClass({ propTypes: { redirectTo: React.PropTypes.string, customSubmitButton: React.PropTypes.element }, mixins: [Router.Navigation, Router.State], getInitialState() { return PieceListStore.getState(); }, componentDidMount() { let page = this.getQuery().page || 1; PieceListStore.listen(this.onChange); if (this.state.pieceList.length === 0){ PieceListActions.fetchPieceList(page, this.state.pageSize, this.state.search, this.state.orderBy, this.state.orderAsc, this.state.filterBy) .then(PieceListActions.fetchPieceRequestActions()); } }, componentDidUpdate() { if (this.props.redirectTo && this.state.pieceListCount === 0) { // FIXME: hack to redirect out of the dispatch cycle window.setTimeout(() => this.transitionTo(this.props.redirectTo), 0); } }, componentWillUnmount() { PieceListStore.unlisten(this.onChange); }, onChange(state) { this.setState(state); }, paginationGoToPage(page) { // if the users clicks a pager of the pagination, // the site should go to the top document.body.scrollTop = document.documentElement.scrollTop = 0; return () => PieceListActions.fetchPieceList(page, this.state.pageSize, this.state.search, this.state.orderBy, this.state.orderAsc, this.state.filterBy); }, getPagination() { let currentPage = parseInt(this.getQuery().page, 10) || 1; let totalPages = Math.ceil(this.state.pieceListCount / this.state.pageSize); if (this.state.pieceListCount > 10) { return ( ); } }, searchFor(searchTerm) { PieceListActions.fetchPieceList(1, this.state.pageSize, searchTerm, this.state.orderBy, this.state.orderAsc, this.state.filterBy); this.transitionTo(this.getPathname(), {page: 1}); }, accordionChangeOrder(orderBy, orderAsc) { PieceListActions.fetchPieceList(this.state.page, this.state.pageSize, this.state.search, orderBy, orderAsc, this.state.filterBy); }, render() { let loadingElement = (); return (
{this.props.customSubmitButton} {this.state.pieceList.map((piece, i) => { return ( ); })} {this.getPagination()}
); } }); export default PieceList;