UNPKG

@rnga/orders

Version:

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

677 lines (553 loc) 18.7 kB
'use strict'; exports.__esModule = true; exports.UserPageView = exports.styles = 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, _temp2; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _Grid = require('material-ui/Grid'); var _Grid2 = _interopRequireDefault(_Grid); var _Editable = require('apollo-cms/src/DataView/Object/Editable'); var _Editable2 = _interopRequireDefault(_Editable); var _Avatar = require('./Avatar'); var _Avatar2 = _interopRequireDefault(_Avatar); var _Groups = require('./Groups'); var _Groups2 = _interopRequireDefault(_Groups); var _materialUi = require('material-ui'); var _ImportExport = require('material-ui-icons/ImportExport'); var _ImportExport2 = _interopRequireDefault(_ImportExport); var _Done = require('material-ui-icons/Done'); var _Done2 = _interopRequireDefault(_Done); var _moment = require('moment'); var _moment2 = _interopRequireDefault(_moment); var _query = require('query'); var _reactApollo = require('react-apollo'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _objectDestructuringEmpty(obj) { if (obj == null) throw new TypeError("Cannot destructure undefined"); } 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 styles = exports.styles = { invisible: { height: 1, opacity: 0, border: "none" } }; var UserPageView = exports.UserPageView = (_temp2 = _class = function (_EditableView) { _inherits(UserPageView, _EditableView); function UserPageView() { var _temp, _this, _ret; _classCallCheck(this, UserPageView); for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return _ret = (_temp = (_this = _possibleConstructorReturn(this, _EditableView.call.apply(_EditableView, [this].concat(args))), _this), _this.onUpdateAvatar = function (file) { if (file) { var id = file.id, path = file.path, mimetype = file.mimetype; if (!path) { _this.addError("File URL is empty"); return; } if (!mimetype) { _this.addError("Wrong file type"); } else if (!mimetype.match(/image/)) { _this.addError("Only images allow"); } else { var image = path; _this.updateObject({ image: image }); } } else { _this.addError("File did not received"); } }, _temp), _possibleConstructorReturn(_this, _ret); } UserPageView.prototype.setPageMeta = function setPageMeta() { var setPageMeta = this.context.setPageMeta; setPageMeta && setPageMeta({ title: this.getTitle() }); }; UserPageView.prototype.componentWillMount = function componentWillMount() { this.setPageMeta(); _EditableView.prototype.componentWillMount && _EditableView.prototype.componentWillMount.call(this); }; UserPageView.prototype.componentDidUpdate = function componentDidUpdate() { this.setPageMeta(); _EditableView.prototype.componentDidUpdate && _EditableView.prototype.componentDidUpdate.call(this); }; UserPageView.prototype.getTitle = function getTitle() { var draftObject = this.getObjectWithMutations(); var _ref = draftObject || {}, username = _ref.username, fullname = _ref.fullname; return fullname || username; }; UserPageView.prototype.AcceptRequestJoin = function () { var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee(userId) { var client; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: client = this.context.client; _context.next = 3; return client.mutate({ mutation: _query.updateUserProcessor, variables: { data: { active: true, requestJoin: false }, where: { id: userId } } }); case 3: case 'end': return _context.stop(); } } }, _callee, this); })); function AcceptRequestJoin(_x) { return _ref2.apply(this, arguments); } return AcceptRequestJoin; }(); UserPageView.prototype.renderAvatar = function renderAvatar() { var draftObject = this.getObjectWithMutations(); return _react2.default.createElement(_Avatar2.default, { user: draftObject, updateUser: this.onUpdateAvatar, editable: this.canEdit(), id: 'profile-photo' }); }; UserPageView.prototype.canEdit = function canEdit() { var currentUser = this.context.user; var _props = this.props, data = _props.data, mutate = _props.mutate; var _ref3 = data || {}, user = _ref3.object; return mutate && currentUser && user && (currentUser.id === user.id || currentUser.sudo === true) ? true : false; }; UserPageView.prototype.getButtons = function getButtons() { var _this2 = this; var buttons = _EditableView.prototype.getButtons.call(this) || []; var currentUser = this.context.user; var mutate = this.props.mutate; var _ref4 = currentUser || {}, sudo = _ref4.sudo; var _getObjectWithMutatio = this.getObjectWithMutations(), userId = _getObjectWithMutatio.id, exported = _getObjectWithMutatio.exported, requestJoin = _getObjectWithMutatio.requestJoin; var exportProcessing = this.state.exportProcessing; if (mutate && sudo && userId) { if (!exported) { buttons.push(_react2.default.createElement( _materialUi.IconButton, { key: 'export', title: '\u042D\u043A\u0441\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C', onClick: function onClick(event) { return _this2.exportUser(userId); }, disabled: exportProcessing ? true : false }, _react2.default.createElement(_ImportExport2.default, null) )); } else { buttons.push(_react2.default.createElement( _materialUi.IconButton, { key: 'exported', title: '\u042D\u043A\u0441\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u043D', onClick: function onClick(event) { return _this2.exportUser(userId); }, disabled: exportProcessing ? true : false }, _react2.default.createElement(_ImportExport2.default, { style: { color: "green" } }) )); } if (requestJoin) { buttons.push(_react2.default.createElement( _materialUi.Button, { key: 'acceptRequest', onClick: function onClick(event) { return _this2.AcceptRequestJoin(userId); }, disabled: exportProcessing ? true : false }, _react2.default.createElement(_Done2.default, null), ' \u041F\u0440\u0438\u043D\u044F\u0442\u044C \u0437\u0430\u043F\u0440\u043E\u0441' )); } } return buttons; }; UserPageView.prototype.exportUser = function () { var _ref5 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2(userId) { var _this3 = this; var client; return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: this.setState({ exportProcessing: true }); client = this.context.client; _context2.next = 4; return client.mutate({ mutation: _query.exportUserProcessor, variables: { id: userId } }).then(function (r) {}).catch(function (error) { console.error(error); _this3.addError(error); }); case 4: this.setState({ exportProcessing: false }); case 5: case 'end': return _context2.stop(); } } }, _callee2, this); })); function exportUser(_x2) { return _ref5.apply(this, arguments); } return exportUser; }(); UserPageView.prototype.save = function () { var _ref6 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee3() { var _this4 = this; var result; return _regenerator2.default.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: _context3.next = 2; return _EditableView.prototype.save.call(this).then(function (r) { var loadApiData = _this4.context.loadApiData; loadApiData(); return r; }).catch(function (e) { console.error(e); }); case 2: result = _context3.sent; return _context3.abrupt('return', result); case 4: case 'end': return _context3.stop(); } } }, _callee3, this); })); function save() { return _ref6.apply(this, arguments); } return save; }(); UserPageView.prototype.getTextField = function getTextField() { var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; props = _extends({ disabled: !this.isInEditMode(), inputProps: { style: { color: "#333" } } }, props); return _EditableView.prototype.getTextField.call(this, props); }; UserPageView.prototype.renderAdminBlock = function renderAdminBlock() { var _getObjectWithMutatio2 = this.getObjectWithMutations(), birthday = _getObjectWithMutatio2.birthday; birthday = birthday && (0, _moment2.default)(birthday).isValid() ? (0, _moment2.default)(birthday).format("YYYY-MM-DD") : birthday; // birthday = birthday && moment(birthday).isValid() ? moment(birthday).toLocaleString() : birthday; return _react2.default.createElement( 'div', { style: { marginTop: 30 } }, _react2.default.createElement( _Grid2.default, { container: true, spacing: 8 }, _react2.default.createElement( _Grid2.default, { item: true, xs: 12, sm: 6, md: 4, lg: 3 }, this.getTextField({ label: "Дата рождения", name: "birthday", type: "date", value: birthday || "дд.мм.гггг" }) ), _react2.default.createElement( _Grid2.default, { item: true, xs: 12, sm: 6, md: 4, lg: 3 }, this.getTextField({ label: "Паспорт", name: "passport" }) ), _react2.default.createElement( _Grid2.default, { item: true, xs: 12, sm: 6, md: 4, lg: 3 }, this.getTextField({ label: "E-mail", name: "email" }) ), _react2.default.createElement( _Grid2.default, { item: true, xs: 12, sm: 6, md: 4, lg: 3 }, this.getTextField({ label: "Телефон", name: "phone" }) ), _react2.default.createElement( _Grid2.default, { item: true, xs: 12, sm: 6 }, this.getTextField({ label: "Адрес", name: "address" }) ), _react2.default.createElement(_Grid2.default, { item: true, xs: 12 }), _react2.default.createElement( _Grid2.default, { item: true, xs: 12, md: 6 }, this.getTextField({ label: "Предпочтения", name: "preferences", multiline: true }) ), _react2.default.createElement( _Grid2.default, { item: true, xs: 12, md: 6 }, this.getTextField({ label: "Прочая полезная информация", name: "info", multiline: true }) ) ) ); }; UserPageView.prototype.renderDefaultView = function renderDefaultView() { var object = this.getObjectWithMutations(); var inEditMode = this.isInEditMode(); var id = object.id, username = object.username, fullname = object.fullname; var currentUser = this.context.user; var _ref7 = currentUser || {}; _objectDestructuringEmpty(_ref7); return _react2.default.createElement( _Grid2.default, { container: true }, _react2.default.createElement( _Grid2.default, { item: true, xs: 12, sm: 4, md: 3, lg: 2 }, this.renderAvatar() ), _react2.default.createElement( _Grid2.default, { item: true, xs: 12, sm: 6, md: 4 }, _react2.default.createElement(_Groups2.default, { user: object, inEditMode: inEditMode }) ), _react2.default.createElement( _Grid2.default, { item: true, xs: 12 }, this.renderAdminBlock() ) ); }; UserPageView.prototype.renderEditableView = function renderEditableView() { var object = this.getObjectWithMutations(); var inEditMode = this.isInEditMode(); var classes = this.props.classes; var currentUser = this.context.user; return _react2.default.createElement( _Grid2.default, { container: true }, _react2.default.createElement( _Grid2.default, { item: true, xs: 12, md: 4 }, this.renderAvatar(), _react2.default.createElement('input', { className: classes.invisible }), _react2.default.createElement('input', { type: 'password', className: classes.invisible }) ), _react2.default.createElement( _Grid2.default, { item: true, xs: 12, sm: 6, md: 4 }, _react2.default.createElement( _Grid2.default, { container: true, spacing: 8 }, _react2.default.createElement( _Grid2.default, { item: true, xs: 12 }, this.getTextField({ name: "fullname", label: "ФИО", helperText: "Укажите полное имя" }) ), _react2.default.createElement( _Grid2.default, { item: true, xs: 12 }, this.getTextField({ name: "username", label: "Логин", helperText: "" }) ), _react2.default.createElement( _Grid2.default, { item: true, xs: 12 }, this.getTextField({ name: "password", label: "Пароль", type: "password", helperText: "Укажите, если надо сменить" }) ) ) ), _react2.default.createElement( _Grid2.default, { item: true, xs: 12 }, this.renderAdminBlock() ) ); }; return UserPageView; }(_Editable2.default), _class.propTypes = _extends({}, _Editable2.default.propTypes, { classes: _propTypes2.default.object.isRequired }), _class.contextTypes = _extends({}, _Editable2.default.contextTypes, { loadApiData: _propTypes2.default.func.isRequired, setPageMeta: _propTypes2.default.func }), _temp2); exports.default = (0, _materialUi.withStyles)(styles)((0, _reactApollo.graphql)(_query.updateUserProcessor)(UserPageView));