UNPKG

@rnga/orders

Version:

## Get schema from @prisma-cms 1. yarn get-api-schema -e http://localhost:4000 2. yarn build-api-fragments

625 lines (502 loc) 18.6 kB
'use strict'; exports.__esModule = true; exports.OrdersItemPageView = undefined; var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _class, _temp; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; // import { // styles, // TableView, // } from '../../DataList/View/Table'; // import Body from "./TableBody"; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _styles = require('material-ui/styles'); var _Pagination = require('Pagination'); var _Pagination2 = _interopRequireDefault(_Pagination); var _Table = require('apollo-cms/src/DataView/List/Table'); var _reactRouterDom = require('react-router-dom'); var _materialUi = require('material-ui'); var _Delete = require('material-ui-icons/Delete'); var _Delete2 = _interopRequireDefault(_Delete); var _Import = require('./Import'); var _Import2 = _interopRequireDefault(_Import); var _Link = require('ui/User/Link'); var _Link2 = _interopRequireDefault(_Link); var _moment = require('moment'); var _moment2 = _interopRequireDefault(_moment); var _OrderNumber = require('ui/OrderNumber'); var _OrderNumber2 = _interopRequireDefault(_OrderNumber); var _SelectField = require('ui/OrderItem/Status/SelectField'); var _SelectField2 = _interopRequireDefault(_SelectField); var _Autocomplete = require('ui/Users/Autocomplete'); var _Autocomplete2 = _interopRequireDefault(_Autocomplete); var _FilterList = require('material-ui-icons/FilterList'); var _FilterList2 = _interopRequireDefault(_FilterList); var _ArrowBack = require('material-ui-icons/ArrowBack'); var _ArrowBack2 = _interopRequireDefault(_ArrowBack); var _query = require('query'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var customStyles = function customStyles(theme) { var _theme$palette$orderI = theme.palette.orderItemStatus, Vydan = _theme$palette$orderI.Vydan, Sobrano = _theme$palette$orderI.Sobrano, GreidConfirmed = _theme$palette$orderI.GreidConfirmed, Otkaz = _theme$palette$orderI.Otkaz, OtkazVydan = _theme$palette$orderI.OtkazVydan; return _extends({}, (0, _Table.styles)(theme), { // table: { // // color: "red", // }, row: { // color: "red", // Стили в зависимости от статуса // "&.orderItem-status--Vydan": { // backgroundColor: "#43a047", // "& *": { // color: "#fff", // }, // "&:hover": { // backgroundColor: "#00701a", // }, // }, "&.orderItem-status--Vydan": Vydan.tr, "&.orderItem-status--Sobrano": Sobrano.tr, "&.orderItem-status--GreidConfirmed": GreidConfirmed.tr, "&.orderItem-status--Otkaz": Otkaz.tr, "&.orderItem-status--OtkazVydan": OtkazVydan.tr } }); }; var renderWithLink = function renderWithLink(value, record) { var _ref = record || {}, id = _ref.id; return value && _react2.default.createElement( _reactRouterDom.Link, { to: '/orders_items/' + id }, value ) || value; }; var OrdersItemPageView = exports.OrdersItemPageView = (_temp = _class = function (_TableView) { _inherits(OrdersItemPageView, _TableView); function OrdersItemPageView() { _classCallCheck(this, OrdersItemPageView); return _possibleConstructorReturn(this, _TableView.apply(this, arguments)); } OrdersItemPageView.prototype.deleteOrderItem = function () { var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2(orderItemId) { var _this2 = this; var client; return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: if (!window.confirm("Удалить данную позицию?")) { _context2.next = 4; break; } client = this.context.client; _context2.next = 4; return client.mutate({ mutation: _query.deleteOrderItem, variables: { where: { id: orderItemId } } }).then(function () { var _ref3 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee(r) { return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.next = 2; return client.reFetchObservableQueries(); case 2: return _context.abrupt('return', r); case 3: case 'end': return _context.stop(); } } }, _callee, _this2); })); return function (_x2) { return _ref3.apply(this, arguments); }; }()).catch(function (error) { console.error("Error", error); }); case 4: case 'end': return _context2.stop(); } } }, _callee2, this); })); function deleteOrderItem(_x) { return _ref2.apply(this, arguments); } return deleteOrderItem; }(); OrdersItemPageView.prototype.getFilters = function getFilters() { var _props = this.props, getFilters = _props.getFilters, setFilters = _props.setFilters, cleanFilters = _props.cleanFilters, showFilters = _props.showFilters; if (!showFilters) { return null; } var _getFilters = getFilters(), number = _getFilters.number, status = _getFilters.status, contractor = _getFilters.contractor; var filters = _react2.default.createElement( _materialUi.Grid, { container: true, spacing: 8, alignItems: 'flex-end' }, _react2.default.createElement( _materialUi.Grid, { item: true }, _react2.default.createElement(_materialUi.TextField, { label: '\u041F\u043E\u0438\u0441\u043A', style: { marginLeft: 10, width: 200 }, name: 'number', value: number || "", onChange: function onChange(event) { var value = event.target.value; setFilters({ number: value }); } }) ), _react2.default.createElement( _materialUi.Grid, { item: true }, _react2.default.createElement(_SelectField2.default, { label: '\u0421\u0442\u0430\u0442\u0443\u0441', style: { marginLeft: 10, width: 200 }, name: 'status', value: status || "", onChange: function onChange(event) { var value = event.target.value; setFilters({ status: value }); } }) ), _react2.default.createElement( _materialUi.Grid, { item: true }, _react2.default.createElement(_Autocomplete2.default, { inputProps: { label: "Контрагент", style: { marginLeft: 10, width: 200 } }, name: 'contractor', value: contractor || "" // onChange={event => { // const { // value, // } = event.target; // setFilters({ // contractor: value, // }); // }} , onSelect: function onSelect(value) { // const { // value, // } = event.target; setFilters({ contractor: value }); } // onSubmit={user => { // const { // id: value, // } = user; // setFilters({ // contractor: value, // }); // }} }) ), _react2.default.createElement( _materialUi.Grid, { item: true }, _react2.default.createElement( _materialUi.Button, { onClick: function onClick(event) { return cleanFilters({ // where: null, // extraWhere: null, }); } }, '\u0421\u0431\u0440\u043E\u0441' ) ), _react2.default.createElement(_materialUi.Grid, { item: true, xs: true }), _react2.default.createElement( _materialUi.Grid, { item: true }, _react2.default.createElement(_Import2.default, null) ) ); return filters; }; OrdersItemPageView.prototype.render = function render() { var _props2 = this.props, first = _props2.first, page = _props2.page, data = _props2.data; var objectsConnection = data.objectsConnection, variables = data.variables; var _ref4 = variables || {}, limit = _ref4.first; var _ref5 = objectsConnection || {}, aggregate = _ref5.aggregate; var _ref6 = aggregate || {}, count = _ref6.count; var content = _TableView.prototype.render.call(this); return _react2.default.createElement( 'div', null, content, count && limit ? _react2.default.createElement(_Pagination2.default, { limit: limit, total: count, page: page || 1 }) : null ); }; return OrdersItemPageView; }(_Table.TableView), _class.propTypes = _extends({}, _Table.TableView.propTypes, { limit: _propTypes2.default.number, showFilters: _propTypes2.default.bool.isRequired }), _class.contextTypes = _extends({}, _Table.TableView.contextTypes, { user: _propTypes2.default.object, client: _propTypes2.default.object.isRequired }), _class.defaultProps = _extends({}, _Table.TableView.defaultProps, { showFilters: true, // listName: "orderItemsConnection", title: "Элементы заказа", // Body, columnData: [{ id: 'actions', numeric: false, disablePadding: false, label: '', renderer: function renderer(value, record, scope) { var id = record.id; if (!id) { return null; } var currentUser = scope.context.user; var _ref7 = currentUser || {}, sudo = _ref7.sudo; if (!sudo) { return null; } var actions = []; actions.push(_react2.default.createElement( _materialUi.IconButton, { onClick: function onClick(event) { event.preventDefault(); event.stopPropagation(); scope.deleteOrderItem(id); } }, _react2.default.createElement(_Delete2.default, null) )); return actions; } }, { id: 'externalKey', numeric: false, disablePadding: false, label: '№', renderer: function renderer(value, record) { var id = record.id; return value ? _react2.default.createElement( _reactRouterDom.Link, { to: '/orders_items/' + id }, value ) : null; } }, { id: 'slab', numeric: false, disablePadding: false, label: '№ слаба', renderer: function renderer(value, record) { var id = record.id; return value ? _react2.default.createElement( _reactRouterDom.Link, { to: '/orders_items/' + id }, _react2.default.createElement(_OrderNumber2.default, { value: value, displayType: 'text' }) ) : null; } }, { id: 'User', numeric: false, disablePadding: true, label: 'Заказчик', renderer: function renderer(value, record) { var content = void 0; var _ref8 = record && record.Order || {}, User = _ref8.User; if (User) { content = _react2.default.createElement(_Link2.default, { user: User }); } return content; } }, { id: 'status', numeric: false, disablePadding: false, label: 'Готовность', renderer: function renderer(value, record) { return value && _react2.default.createElement(_SelectField2.default, { value: value, disabled: true, onChange: function onChange() {} }) || null; } }, // { id: 'frez', numeric: false, disablePadding: false, label: 'Фрез' }, // { id: 'nakl', numeric: false, disablePadding: false, label: 'Накл' }, { id: 'date', numeric: false, disablePadding: true, label: 'Дата (по договору)', renderer: function renderer(value, record) { var date = record && record.Order && record.Order.date || null; return date && (0, _moment2.default)(date).format('DD.MM.YYYY') || null; } }, { id: 'Order', numeric: false, disablePadding: true, label: '№ договора', renderer: function renderer(value, record, scope) { var _ref9 = value || {}, orderId = _ref9.id, number = _ref9.number; var _scope$props = scope.props, setFilters = _scope$props.setFilters, getFilters = _scope$props.getFilters, history = _scope$props.history; var _getFilters2 = getFilters(), filterOrderId = _getFilters2.orderId; return number && _react2.default.createElement( 'span', null, _react2.default.createElement( _reactRouterDom.Link, { to: '/orders/' + orderId }, _react2.default.createElement(_OrderNumber2.default, { value: number, displayType: 'text' }) ), filterOrderId ? _react2.default.createElement( _materialUi.IconButton, { onClick: function onClick(event) { // setFilters({ // orderId: undefined, // }); history.goBack(); } }, _react2.default.createElement(_FilterList2.default, { color: 'secondary' }) ) : _react2.default.createElement( _materialUi.IconButton, { onClick: function onClick(event) { setFilters({ orderId: orderId }); } }, _react2.default.createElement(_FilterList2.default, null) ) ) || null; } }, { id: 'number', numeric: false, disablePadding: true, label: '№ в договоре', renderer: renderWithLink }, { id: 'title', numeric: false, disablePadding: false, label: 'Номинал', renderer: renderWithLink }, { id: 'year', numeric: false, disablePadding: false, label: 'Год' }, { id: 'diametr', numeric: false, disablePadding: false, label: 'Диаметр' }, { id: 'thingh', numeric: false, disablePadding: false, label: 'Толщина' }, { id: 'weight', numeric: false, disablePadding: false, label: 'Вес' }, { id: 'price', numeric: false, disablePadding: false, label: 'Оценочная стоимость' }, { id: 'ensure_price', numeric: false, disablePadding: false, label: 'Страховая стоимость' }, { id: 'type', numeric: false, disablePadding: false, label: 'мон|мед|ж', style: { whiteSpace: "nowrap" }, renderer: function renderer(value, record) { switch (value) { case "10": value = "Монета"; break; case "20": value = "Медаль"; break; case "30": value = "Жетон"; break; } return value; } }, { id: 'coin_num', numeric: false, disablePadding: false, label: '№ монеты' }, { id: 'preGrade', numeric: false, disablePadding: false, label: 'Прегрейд' }, { id: 'sheldon_grade', numeric: false, disablePadding: false, label: 'Грейд по Шелдону' }, { id: 'bitkin', numeric: false, disablePadding: false, label: '№ по Биткину' }, { id: 'expertize', numeric: false, disablePadding: false, label: 'Эксперт. закл.' }], // where:{ // name_contains: "немо" // }, rowRenderer: function rowRenderer(n, index, renderer) { var status = n.status; var rowProps = { className: status ? 'orderItem-status--' + status : undefined, style: { color: "red" } }; return renderer(n, index, rowProps); } }), _temp); exports.default = (0, _styles.withStyles)(customStyles)(OrdersItemPageView);