react-admin-ui
Version:
React Admin Panel based on material-ui interface Edit
474 lines (371 loc) • 19.6 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.handleDelete = exports.handleEditFail = exports.handleEditSuccess = exports.handleEdit = exports.handleCreateFail = exports.handleCreateSuccess = exports.handleCreate = exports.show = exports.list = undefined;
var _regenerator = require('babel-runtime/regenerator');
var _regenerator2 = _interopRequireDefault(_regenerator);
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
var _assign = require('babel-runtime/core-js/object/assign');
var _assign2 = _interopRequireDefault(_assign);
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _typeof2 = require('babel-runtime/helpers/typeof');
var _typeof3 = _interopRequireDefault(_typeof2);
var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
var _reactIsomorphicTools = require('react-isomorphic-tools');
var _reduxForm = require('redux-form');
var _reactRouterRedux = require('react-router-redux');
var _snackbar = require('../actions/snackbar');
var _isJson = require('is-json');
var _isJson2 = _interopRequireDefault(_isJson);
var _lib = require('../lib');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var list = function list(_ref) {
var fetchToState = _ref.fetchToState,
params = _ref.params,
_ref$location$query = _ref.location.query,
queryFilters = _ref$location$query.filters,
query = (0, _objectWithoutProperties3.default)(_ref$location$query, ['filters']);
var entity = (0, _lib.getEntity)(params.name);
if (!entity) {
throw {
code: '303',
to: '/',
type: 'redirect'
};
}
var baseUrl = entity.url,
_entity$actions$list = entity.actions.list,
listUrl = _entity$actions$list.url,
listParams = _entity$actions$list.params;
var args = {};
var filters = queryFilters && (0, _isJson2.default)(queryFilters) ? JSON.parse(queryFilters) : undefined;
switch (typeof listUrl === 'undefined' ? 'undefined' : (0, _typeof3.default)(listUrl)) {
case 'function':
{
var result = listUrl(params, (0, _extends3.default)({}, query, { filters: filters }));
args = (typeof result === 'undefined' ? 'undefined' : (0, _typeof3.default)(result)) == 'object' ? result : {
url: result,
params: (0, _assign2.default)(query, listParams, { filters: filters })
};
}
break;
case 'string':
args = {
url: listUrl,
params: (0, _assign2.default)(query, listParams, { filters: filters })
};
break;
default:
args = {
url: baseUrl,
params: (0, _assign2.default)(query, listParams, { filters: filters })
};
break;
}
return fetchToState(args.url, {
params: args.params,
key: params.name + 'List'
});
};
var show = function show(_ref2) {
var fetchToState = _ref2.fetchToState,
params = _ref2.params,
query = _ref2.location.query;
var entity = (0, _lib.getEntity)(params.name);
if (!entity) {
throw {
code: '303',
to: '/',
type: 'redirect'
};
}
return fetchToState(typeof entity.actions.show.url == 'function' ? entity.actions.show.url(params) : entity.url + '/' + params.id, {
params: (0, _assign2.default)((0, _extends3.default)({}, query.params), entity.actions.show.params),
key: params.name + 'Show'
});
};
var handleCreate = function handleCreate(form, dispatch, props) {
var _props$entity$actions = props.entity.actions.create,
wrapper = _props$entity$actions.wrapper,
url = _props$entity$actions.url,
_props$entity$actions2 = _props$entity$actions.params,
params = _props$entity$actions2 === undefined ? {} : _props$entity$actions2,
result = _props$entity$actions.result;
var _params = wrapper ? (0, _assign2.default)(params, (0, _defineProperty3.default)({}, wrapper, form)) : (0, _assign2.default)(form, params);
return (0, _reactIsomorphicTools.fetcher)(typeof url == 'function' ? url(props.params, props.query) : url, {
params: typeof result == 'function' ? result(_params) : _params,
method: 'POST'
});
};
var handleCreateSuccess = function () {
var _ref3 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee(result, dispatch, props) {
var _props$entity, _props$entity$actions3, _props$entity$actions4, redirect, handleSubmitSuccessBeforeHook, handleSubmitSuccessAfterHook, _props$entity$id, id, name, prefix;
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.prev = 0;
_props$entity = props.entity, _props$entity$actions3 = _props$entity.actions.create, _props$entity$actions4 = _props$entity$actions3.redirect, redirect = _props$entity$actions4 === undefined ? 'list' : _props$entity$actions4, handleSubmitSuccessBeforeHook = _props$entity$actions3.handleSubmitSuccessBeforeHook, handleSubmitSuccessAfterHook = _props$entity$actions3.handleSubmitSuccessAfterHook, _props$entity$id = _props$entity.id, id = _props$entity$id === undefined ? 'id' : _props$entity$id, name = _props$entity.name, prefix = props.prefix;
if (!handleSubmitSuccessBeforeHook) {
_context.next = 5;
break;
}
_context.next = 5;
return handleSubmitSuccessBeforeHook(result, dispatch, props);
case 5:
dispatch((0, _snackbar.open)('successCreated', 'Successfully created'));
_context.next = 8;
return list({
fetchToState: function fetchToState(url, params) {
return dispatch((0, _reactIsomorphicTools.fetchToState)(url, params));
},
params: props.params,
location: { query: props.query }
});
case 8:
dispatch((0, _snackbar.open)('listUpdated', 'List has been updated'));
if (!result[id]) {
_context.next = 22;
break;
}
_context.t0 = redirect;
_context.next = _context.t0 === 'show' ? 13 : _context.t0 === 'edit' ? 15 : _context.t0 === 'create' ? 17 : 19;
break;
case 13:
dispatch((0, _reactRouterRedux.push)(prefix + '/' + name + '/' + result[id]));
return _context.abrupt('break', 20);
case 15:
dispatch((0, _reactRouterRedux.push)(prefix + '/' + name + '/' + result[id] + '/edit'));
return _context.abrupt('break', 20);
case 17:
dispatch((0, _reactRouterRedux.push)(prefix + '/' + name + '/create'));
return _context.abrupt('break', 20);
case 19:
dispatch((0, _reactRouterRedux.push)(prefix + '/' + name));
case 20:
_context.next = 23;
break;
case 22:
dispatch((0, _reactRouterRedux.push)(prefix + '/' + name));
case 23:
if (!handleSubmitSuccessAfterHook) {
_context.next = 26;
break;
}
_context.next = 26;
return handleSubmitSuccessAfterHook(result, dispatch, props);
case 26:
_context.next = 31;
break;
case 28:
_context.prev = 28;
_context.t1 = _context['catch'](0);
console.log(_context.t1);
// const message = error && error.error && error.error.message || 'Error creation'
// dispatch(open('errorCreation', message, 5000))
// throw new SubmissionError({error})
case 31:
case 'end':
return _context.stop();
}
}
}, _callee, undefined, [[0, 28]]);
}));
return function handleCreateSuccess(_x, _x2, _x3) {
return _ref3.apply(this, arguments);
};
}();
var handleCreateFail = function () {
var _ref4 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee2(props, dispatch, _ref5) {
var error = _ref5.error;
var message;
return _regenerator2.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
message = error && error.error && error.error.message || 'Error creation';
dispatch((0, _snackbar.open)('errorCreation', message, 5000));
throw new _reduxForm.SubmissionError({ error: error });
case 3:
case 'end':
return _context2.stop();
}
}
}, _callee2, undefined);
}));
return function handleCreateFail(_x4, _x5, _x6) {
return _ref4.apply(this, arguments);
};
}();
var handleEdit = function handleEdit(form, dispatch, props) {
var _props$entity$actions5 = props.entity.actions.edit,
wrapper = _props$entity$actions5.wrapper,
_props$entity$actions6 = _props$entity$actions5.params,
params = _props$entity$actions6 === undefined ? {} : _props$entity$actions6,
url = _props$entity$actions5.url,
_props$entity$actions7 = _props$entity$actions5.method,
method = _props$entity$actions7 === undefined ? 'PUT' : _props$entity$actions7,
result = _props$entity$actions5.result;
var _params = wrapper ? (0, _assign2.default)(params, (0, _defineProperty3.default)({}, wrapper, form)) : (0, _assign2.default)(form, params);
return (0, _reactIsomorphicTools.fetcher)(typeof url == 'function' ? url(props.params, props.query) : props.entity.url + '/' + props.params.id, {
params: typeof result == 'function' ? result(_params) : _params,
method: method
});
};
var handleEditSuccess = function () {
var _ref6 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee3(result, dispatch, props) {
var _props$entity2, _props$entity2$id, id, name, _props$entity2$action, _props$entity2$action2, redirect, handleSubmitSuccessBeforeHook, handleSubmitSuccessAfterHook, params, prefix, query, error, message;
return _regenerator2.default.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
_context3.prev = 0;
_props$entity2 = props.entity, _props$entity2$id = _props$entity2.id, id = _props$entity2$id === undefined ? 'id' : _props$entity2$id, name = _props$entity2.name, _props$entity2$action = _props$entity2.actions, _props$entity2$action2 = _props$entity2$action.redirect, redirect = _props$entity2$action2 === undefined ? 'list' : _props$entity2$action2, handleSubmitSuccessBeforeHook = _props$entity2$action.handleSubmitSuccessBeforeHook, handleSubmitSuccessAfterHook = _props$entity2$action.handleSubmitSuccessAfterHook, params = props.params, prefix = props.prefix, query = props.query;
if (!handleSubmitSuccessBeforeHook) {
_context3.next = 5;
break;
}
_context3.next = 5;
return handleSubmitSuccessBeforeHook(result, dispatch, props);
case 5:
dispatch((0, _snackbar.open)('successEdit', 'Successfully saved'));
_context3.next = 8;
return show({ fetchToState: function fetchToState(url, params) {
return dispatch((0, _reactIsomorphicTools.fetchToState)(url, params));
}, location: { query: query }, params: params });
case 8:
_context3.next = 10;
return list({ fetchToState: function fetchToState(url, params) {
return dispatch((0, _reactIsomorphicTools.fetchToState)(url, params));
}, location: { query: query }, params: params });
case 10:
dispatch((0, _snackbar.open)('listUpdated', 'List and Show have been updated'));
if (!result[id]) {
_context3.next = 22;
break;
}
_context3.t0 = redirect;
_context3.next = _context3.t0 === 'list' ? 15 : _context3.t0 === 'show' ? 17 : _context3.t0 === 'stay' ? 19 : 20;
break;
case 15:
dispatch((0, _reactRouterRedux.push)(prefix + '/' + name));
return _context3.abrupt('break', 20);
case 17:
dispatch((0, _reactRouterRedux.push)(prefix + '/' + name + '/' + result[id]));
return _context3.abrupt('break', 20);
case 19:
return _context3.abrupt('break', 20);
case 20:
_context3.next = 23;
break;
case 22:
dispatch((0, _reactRouterRedux.push)(prefix + '/' + name));
case 23:
if (!handleSubmitSuccessAfterHook) {
_context3.next = 26;
break;
}
_context3.next = 26;
return handleSubmitSuccessAfterHook(result, dispatch, props);
case 26:
_context3.next = 34;
break;
case 28:
_context3.prev = 28;
_context3.t1 = _context3['catch'](0);
error = _context3.t1.error;
message = error && error.error && error.error.message || 'Error while saving';
dispatch((0, _snackbar.open)('errorSaving', message, 5000));
throw new _reduxForm.SubmissionError({ error: error });
case 34:
case 'end':
return _context3.stop();
}
}
}, _callee3, undefined, [[0, 28]]);
}));
return function handleEditSuccess(_x7, _x8, _x9) {
return _ref6.apply(this, arguments);
};
}();
var handleEditFail = function () {
var _ref8 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee4(props, dispatch, _ref9) {
var error = _ref9.error;
var message;
return _regenerator2.default.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
message = error && error.error && error.error.message || 'Error while saving';
dispatch((0, _snackbar.open)('errorSaving', message, 5000));
throw new _reduxForm.SubmissionError({ error: error });
case 3:
case 'end':
return _context4.stop();
}
}
}, _callee4, undefined);
}));
return function handleEditFail(_x10, _x11, _x12) {
return _ref8.apply(this, arguments);
};
}();
var handleDelete = function handleDelete(id, name, del, query, prefix) {
return function () {
var _ref10 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee5(dispatch) {
return _regenerator2.default.wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
_context5.prev = 0;
_context5.next = 3;
return (0, _reactIsomorphicTools.fetcher)(del.url({ id: id }, query), {
method: 'DELETE'
});
case 3:
dispatch((0, _reactIsomorphicTools.closeModal)('confirmDelete'));
dispatch((0, _snackbar.open)('itemDelete', 'Successfully deleted'));
_context5.next = 7;
return list({
fetchToState: function fetchToState(url, params) {
return dispatch((0, _reactIsomorphicTools.fetchToState)(url, params));
},
params: { name: name },
location: { query: query }
});
case 7:
dispatch((0, _snackbar.open)('listUpdated', 'List has been updated'));
dispatch((0, _reactRouterRedux.push)(prefix + '/' + name));
_context5.next = 14;
break;
case 11:
_context5.prev = 11;
_context5.t0 = _context5['catch'](0);
dispatch((0, _snackbar.open)('errorDeleting', 'Error deleting'));
case 14:
case 'end':
return _context5.stop();
}
}
}, _callee5, undefined, [[0, 11]]);
}));
return function (_x13) {
return _ref10.apply(this, arguments);
};
}();
};
exports.list = list;
exports.show = show;
exports.handleCreate = handleCreate;
exports.handleCreateSuccess = handleCreateSuccess;
exports.handleCreateFail = handleCreateFail;
exports.handleEdit = handleEdit;
exports.handleEditSuccess = handleEditSuccess;
exports.handleEditFail = handleEditFail;
exports.handleDelete = handleDelete;