UNPKG

@rnga/orders

Version:

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

505 lines (411 loc) 15 kB
'use strict'; exports.__esModule = true; exports.ServicesOrdersPageView = undefined; var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); 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; }; var _class, _temp; // import { // styles, // TableView, // } from '../../DataList/View/Table'; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _styles = require('material-ui/styles'); var _Badge = require('material-ui/Badge'); var _Badge2 = _interopRequireDefault(_Badge); 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 _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 _Status = require('ui/ServiceOrder/Status'); var _Status2 = _interopRequireDefault(_Status); 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 ServicesOrdersPageView = exports.ServicesOrdersPageView = (_temp = _class = function (_TableView) { _inherits(ServicesOrdersPageView, _TableView); function ServicesOrdersPageView() { _classCallCheck(this, ServicesOrdersPageView); return _possibleConstructorReturn(this, _TableView.apply(this, arguments)); } ServicesOrdersPageView.prototype.setServiceOrderAsAccepted = function () { var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee(id) { var mutate; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: mutate = this.props.mutate; _context.next = 3; return this.updateServiceOrder({ where: { id: id }, data: { status: "Accepted" } }); case 3: case 'end': return _context.stop(); } } }, _callee, this); })); function setServiceOrderAsAccepted(_x) { return _ref.apply(this, arguments); } return setServiceOrderAsAccepted; }(); ServicesOrdersPageView.prototype.setServiceOrderAsCompleted = function () { var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2(id) { var mutate; return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: mutate = this.props.mutate; _context2.next = 3; return this.updateServiceOrder({ where: { id: id }, data: { status: "Completed", readyDate: new Date() } }); case 3: case 'end': return _context2.stop(); } } }, _callee2, this); })); function setServiceOrderAsCompleted(_x2) { return _ref2.apply(this, arguments); } return setServiceOrderAsCompleted; }(); ServicesOrdersPageView.prototype.updateServiceOrder = function () { var _ref3 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee3(variables) { var mutate; return _regenerator2.default.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: mutate = this.props.mutate; _context3.next = 3; return mutate({ variables: variables }); case 3: case 'end': return _context3.stop(); } } }, _callee3, this); })); function updateServiceOrder(_x3) { return _ref3.apply(this, arguments); } return updateServiceOrder; }(); ServicesOrdersPageView.prototype.getFilters = function getFilters() { var _props = this.props, getFilters = _props.getFilters, setFilters = _props.setFilters, cleanFilters = _props.cleanFilters; var _getFilters = getFilters(), query = _getFilters.query, activeOnly = _getFilters.activeOnly; var filters = _react2.default.createElement( _materialUi.Grid, { container: true, spacing: 8, alignItems: 'center' }, _react2.default.createElement( _materialUi.Grid, { item: true }, _react2.default.createElement(_materialUi.TextField, { label: '\u041F\u043E\u0438\u0441\u043A', style: { marginLeft: 10, width: 200 }, name: 'query', value: query || "", onChange: function onChange(event) { var value = event.target.value; setFilters({ query: value }); } }) ), _react2.default.createElement( _materialUi.Grid, { item: true }, _react2.default.createElement( _materialUi.Grid, { container: true, alignItems: 'center' }, _react2.default.createElement( _materialUi.Grid, { item: true }, _react2.default.createElement(_materialUi.Checkbox, { checked: activeOnly === "true" ? true : false, bool: 'true', onChange: function onChange(event, checked) { // const { // value, // } = event.target; setFilters({ activeOnly: checked ? true : undefined }); } }) ), _react2.default.createElement( _materialUi.Grid, { item: true }, '\u0422\u043E\u043B\u044C\u043A\u043E \u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0435' ) ) ), _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 }) ); return filters; }; ServicesOrdersPageView.prototype.render = function render() { var _props2 = this.props, first = _props2.first, page = _props2.page, limit = _props2.first, data = _props2.data; var _ref4 = data || {}, objectsConnection = _ref4.objectsConnection; 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 ServicesOrdersPageView; }(_Table.TableView), _class.propTypes = _extends({}, _Table.TableView.propTypes, { limit: _propTypes2.default.number }), _class.defaultProps = _extends({}, _Table.TableView.defaultProps, { // listName: "ordersConnection", title: "Заказы", columnData: [{ id: 'actions', numeric: false, disablePadding: false, label: '', renderer: function renderer(value, record, scope) { var buttons = []; var id = record.id, status = record.status, confirmDate = record.confirmDate; switch (status) { case "Created": buttons.push(_react2.default.createElement( _materialUi.Button, { size: 'small', onClick: function onClick(event) { return scope.setServiceOrderAsAccepted(id); }, color: 'secondary' }, '\u041F\u0440\u0438\u043D\u044F\u0442\u044C' )); break; case "Accepted": buttons.push(_react2.default.createElement( _materialUi.Button, { size: 'small', onClick: function onClick(event) { return scope.setServiceOrderAsCompleted(id); }, color: 'primary', disabled: !confirmDate }, '\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044C' )); break; } return buttons; } }, { id: 'User', numeric: false, disablePadding: true, label: 'Заказчик', renderer: function renderer(value, record) { var content = null; if (value) { content = _react2.default.createElement(_Link2.default, { user: value }); } return content; } }, { id: 'OrderItem', numeric: false, disablePadding: true, label: 'Товар', renderer: function renderer(value, record, scope) { if (!value) { return null; } var _ref7 = value || {}, orderItemId = _ref7.id, title = _ref7.title, ServiceOrders = _ref7.ServiceOrders; var serviceOrderId = record.id; var otherServiceOrders = ServiceOrders.filter(function (n) { return n.id !== serviceOrderId && n.status !== "Ended"; }); var otherOrdersLink = void 0; if (otherServiceOrders.length > 0) { otherOrdersLink = _react2.default.createElement( _materialUi.Button, { variant: 'fab', color: 'secondary', style: { width: 36, height: 36, fontSize: "1rem" }, onClick: function onClick(event) { var setFilters = scope.props.setFilters; setFilters({ orderItem: orderItemId }); } }, otherServiceOrders.length ); } return orderItemId ? _react2.default.createElement( 'span', null, _react2.default.createElement( _reactRouterDom.Link, { to: '/orders_items/' + orderItemId }, title ), otherOrdersLink ) : null; } }, { id: 'Service', numeric: false, disablePadding: true, label: 'Услуга', renderer: function renderer(value, record) { var _ref8 = value || {}, serviceId = _ref8.id, name = _ref8.name; var confirmDate = record.confirmDate, rejectDate = record.rejectDate; // return serviceId ? <Link // to={``} // > // {name} // </Link> : null; return name ? _react2.default.createElement( 'span', { style: { color: confirmDate ? "green" : rejectDate ? "red" : undefined } }, name, ' ', confirmDate ? '(\u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u043E)' : rejectDate ? '(\u043E\u0442\u043A\u0430\u0437)' : "" ) : null; } }, { id: 'Tarif', numeric: false, disablePadding: true, label: 'Тариф', renderer: function renderer(value, record) { var _ref9 = value || {}, tarifId = _ref9.id, name = _ref9.name; return name || null; } }, { id: 'status', numeric: false, disablePadding: true, label: 'Статус', renderer: function renderer(value, record) { return value ? _react2.default.createElement(_Status2.default, { value: value }) : null; } }, { id: 'amount', numeric: false, disablePadding: false, label: 'Сумма' }, { id: 'createdAt', numeric: false, disablePadding: true, label: 'Дата заказа', renderer: function renderer(value, record) { return value && (0, _moment2.default)(value).format('DD.MM.YYYY HH:mm:ss') || null; } }, { id: 'updatedAt', numeric: false, disablePadding: true, label: 'Дата обновления', renderer: function renderer(value, record) { return value && (0, _moment2.default)(value).format('DD.MM.YYYY HH:mm:ss') || null; } }, { id: 'readyDate', numeric: false, disablePadding: true, label: 'Дата выполнения', renderer: function renderer(value, record) { return value && (0, _moment2.default)(value).format('DD.MM.YYYY HH:mm:ss') || null; } }] // where:{ // name_contains: "немо" // }, }), _temp); exports.default = (0, _styles.withStyles)(_Table.styles)(ServicesOrdersPageView);