You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Hydro/ui/components/scratchpad/ScratchpadRecordsContainer.js

86 lines
2.3 KiB
JavaScript

import React from 'react';
import { connect } from 'react-redux';
import Tabs, { TabPane } from 'rc-tabs';
import TabContent from 'rc-tabs/lib/TabContent';
import ScrollableInkTabBar from 'rc-tabs/lib/ScrollableInkTabBar';
import i18n from 'vj/utils/i18n';
import request from 'vj/utils/request';
import Icon from 'vj/components/react/IconComponent';
import Panel from './PanelComponent';
import PanelButton from './PanelButtonComponent';
import ScratchpadRecordsTable from './ScratchpadRecordsTableContainer';
const mapDispatchToProps = (dispatch) => ({
loadSubmissions() {
dispatch({
type: 'SCRATCHPAD_RECORDS_LOAD_SUBMISSIONS',
payload: request.get(Context.getSubmissionsUrl),
});
},
handleClickClose() {
dispatch({
type: 'SCRATCHPAD_UI_SET_VISIBILITY',
payload: {
uiElement: 'records',
visibility: false,
},
});
},
handleClickRefresh() {
this.loadSubmissions();
},
});
@connect(null, mapDispatchToProps)
export default class ScratchpadRecordsContainer extends React.PureComponent {
componentDidMount() {
this.props.loadSubmissions();
}
render() {
return (
<Panel
title={(
<span>
<Icon name="flag" />
{' '}
{i18n('Records')}
</span>
)}
>
<Tabs
className="scratchpad__panel-tab flex-col flex-fill"
activeKey="all"
animation="slide-horizontal"
renderTabBar={() => (
<ScrollableInkTabBar
extraContent={(
<span>
<PanelButton
data-tooltip={i18n('Refresh Records')}
data-tooltip-pos="top right"
onClick={() => this.props.handleClickRefresh()}
>
{i18n('Refresh')}
</PanelButton>
<PanelButton
onClick={() => this.props.handleClickClose()}
>
<Icon name="close" />
</PanelButton>
</span>
)}
/>
)}
renderTabContent={() => <TabContent />}
>
<TabPane tab={<span>{i18n('All')}</span>} key="all">
<ScratchpadRecordsTable />
</TabPane>
</Tabs>
</Panel>
);
}
}