@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
JavaScript
'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));