admin-on-rest-fr05t1k
Version:
A frontend Framework for building admin applications on top of REST services, using ES6, React and Material UI
58 lines (45 loc) • 1.97 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.nameRelatedTo = exports.getReferences = exports.getIds = undefined;
var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
var _extends3 = require('babel-runtime/helpers/extends');
var _extends4 = _interopRequireDefault(_extends3);
var _dataActions = require('../../actions/dataActions');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var initialState = {};
exports.default = function () {
var previousState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
var _ref = arguments[1];
var type = _ref.type,
payload = _ref.payload,
meta = _ref.meta;
switch (type) {
case _dataActions.CRUD_GET_MANY_REFERENCE_SUCCESS:
return (0, _extends4.default)({}, previousState, (0, _defineProperty3.default)({}, meta.relatedTo, payload.data.map(function (record) {
return record.id;
})));
default:
return previousState;
}
};
var getIds = exports.getIds = function getIds(state, relatedTo) {
return state.admin.references.oneToMany[relatedTo];
};
var getReferences = exports.getReferences = function getReferences(state, reference, relatedTo) {
var ids = getIds(state, relatedTo);
if (typeof ids === 'undefined') return undefined;
return ids.map(function (id) {
return state.admin[reference].data[id];
}).filter(function (r) {
return typeof r !== 'undefined';
}).reduce(function (prev, record) {
prev[record.id] = record; // eslint-disable-line no-param-reassign
return prev;
}, {});
};
var nameRelatedTo = exports.nameRelatedTo = function nameRelatedTo(reference, id, resource, target) {
return resource + '_' + reference + '@' + target + '_' + id;
};