'use strict'; import React from 'react'; import { History } from 'react-router'; import Row from 'react-bootstrap/lib/Row'; import Col from 'react-bootstrap/lib/Col'; import Button from 'react-bootstrap/lib/Button'; import EditionListActions from '../../actions/edition_list_actions'; import PieceListActions from '../../actions/piece_list_actions'; import PieceListStore from '../../stores/piece_list_store'; import Form from './../ascribe_forms/form'; import Property from './../ascribe_forms/property'; import ListRequestActions from './../ascribe_forms/list_form_request_actions'; import AclButtonList from './../ascribe_buttons/acl_button_list'; import UnConsignRequestButton from './../ascribe_buttons/unconsign_request_button'; import DeleteButton from '../ascribe_buttons/delete_button'; import GlobalNotificationModel from '../../models/global_notification_model'; import GlobalNotificationActions from '../../actions/global_notification_actions'; import AclInformation from '../ascribe_buttons/acl_information'; import AclProxy from '../acl_proxy'; import ApiUrls from '../../constants/api_urls'; import { getLangText } from '../../utils/lang_utils'; /* A component that handles all the actions inside of the edition detail handleSuccess requires a loadEdition action (could be refactored) */ let EditionActionPanel = React.createClass({ propTypes: { actionPanelButtonListType: React.PropTypes.func, edition: React.PropTypes.object, currentUser: React.PropTypes.object, handleSuccess: React.PropTypes.func }, mixins: [History], getDefaultProps() { return { actionPanelButtonListType: AclButtonList }; }, getInitialState() { return PieceListStore.getState(); }, componentDidMount() { PieceListStore.listen(this.onChange); }, componentWillUnmount() { PieceListStore.unlisten(this.onChange); }, onChange(state) { this.setState(state); }, handleDeleteSuccess(response) { this.refreshCollection(); EditionListActions.closeAllEditionLists(); EditionListActions.clearAllEditionSelections(); const notification = new GlobalNotificationModel(response.notification, 'success'); GlobalNotificationActions.appendGlobalNotification(notification); this.history.push('/collection'); }, refreshCollection() { const { filterBy, orderAsc, orderBy, page, pageSize, search } = this.state; PieceListActions.fetchPieceList({ page, pageSize, search, orderBy, orderAsc, filterBy }); EditionListActions.refreshEditionList({ pieceId: this.props.edition.parent }); }, handleSuccess(response) { this.refreshCollection(); this.props.handleSuccess(); if (response){ let notification = new GlobalNotificationModel(response.notification, 'success'); GlobalNotificationActions.appendGlobalNotification(notification); } }, render() { const { actionPanelButtonListType: ActionPanelButtonListType, edition, currentUser } = this.props; if (edition && edition.notifications && edition.notifications.length > 0){ return ( ); } else { return (
); } } }); export default EditionActionPanel;