@rnga/orders
Version:
## Get schema from @prisma-cms 1. yarn get-api-schema -e http://localhost:4000 2. yarn build-api-fragments
268 lines (197 loc) • 4.79 kB
JavaScript
import React from 'react'
import PropTypes from 'prop-types'
import { withStyles } from 'material-ui/styles';
import Pagination from 'Pagination';
// import {
// styles,
// TableView,
// } from '../../DataList/View/Table';
import {
styles,
TableView,
} from 'apollo-cms/src/DataView/List/Table';
import { Link } from 'react-router-dom';
import { Grid, TextField, Checkbox, Button } from 'material-ui';
import Import from "./Import";
import UserLink from "ui/User/Link";
import moment from "moment";
import OrderNumber from "ui/OrderNumber";
export class OrdersPageView extends TableView {
static propTypes = {
...TableView.propTypes,
limit: PropTypes.number,
};
static defaultProps = {
...TableView.defaultProps,
// listName: "ordersConnection",
title: "Заказы",
columnData: [
{
id: 'number', numeric: false, disablePadding: true, label: 'Номер заказа',
renderer: (value, record) => {
const {
id,
} = record;
return value ? <Link
to={`/orders/${id}`}
>
<OrderNumber
value={value}
displayType="text"
/>
</Link> : null;
}
},
{
id: 'User', numeric: false, disablePadding: true, label: 'Заказчик',
renderer: (value, record) => {
let content;
if (value) {
// const {
// fullname,
// } = User;
content = <UserLink
user={value}
/>;
}
return content;
}
},
{
id: 'date', numeric: false, disablePadding: true, label: 'Дата (по договору)',
renderer: (value, record) => {
return value && moment(value).format('DD.MM.YYYY') || null;
}
},
// { id: 'calories', numeric: false, disablePadding: false, label: 'Емейл' },
// { id: 'fat', numeric: false, disablePadding: false, label: 'Телефон' },
// { id: 'carbs', numeric: true, disablePadding: false, label: 'Carbs (g)' },
// { id: 'sdfsdfsdf', numeric: true, disablePadding: false, label: 'wef wef (g)' },
// { id: 'protein', numeric: true, disablePadding: false, label: 'Protein (g)' },
],
// where:{
// name_contains: "немо"
// },
};
getFilters() {
const {
getFilters,
setFilters,
cleanFilters,
} = this.props;
const {
number,
} = getFilters();
const filters = <Grid
container
spacing={8}
alignItems="flex-end"
>
<Grid
item
>
<TextField
label="Поиск"
style={{
marginLeft: 10,
width: 200,
}}
name="number"
value={number || ""}
onChange={event => {
const {
value,
} = event.target;
setFilters({
number: value,
});
}}
/>
</Grid>
{/* <Grid
item
>
<Grid
container
alignItems="center"
>
<Grid
item
>
<Checkbox
checked={advantages_not === null ? true : false}
bool="true"
onChange={(event, checked) => {
// const {
// value,
// } = event.target;
setFilters({
advantages_not: checked ? null : undefined,
});
}}
/>
</Grid>
<Grid
item
>
С преимуществами
</Grid>
</Grid>
</Grid> */}
<Grid
item
>
<Button
onClick={event => cleanFilters({
// where: null,
// extraWhere: null,
})}
>
Сброс
</Button>
</Grid>
<Grid
item
xs
>
</Grid>
<Grid
item
>
<Import />
</Grid>
</Grid>;
return filters;
}
render() {
const {
first,
page,
first: limit,
data,
} = this.props;
const {
objectsConnection,
} = data || {};
const {
aggregate,
} = objectsConnection || {};
const {
count,
} = aggregate || {};
const content = super.render();
return <div>
{content}
{count && limit ?
<Pagination
limit={limit}
total={count}
page={page || 1}
/>
:
null
}
</div>;
}
}
export default withStyles(styles)(OrdersPageView);