meteor-interface
Version:
Simple Content Management System to generate your administration interface for Meteor and React.
116 lines (94 loc) • 4.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _reactMeteorData = require("meteor/react-meteor-data");
var _slugify = _interopRequireDefault(require("slugify"));
var _reactRouterDom = require("react-router-dom");
var _DynamicImporter = _interopRequireDefault(require("../../../utils/DynamicImporter"));
var _LoadingComponent = _interopRequireDefault(require("../../components/LoadingComponent"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _extends() { _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; }; return _extends.apply(this, arguments); }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
var ContentList = (0, _DynamicImporter.default)(function () {
return new Promise(function (resolve) {
require.ensure([], function (require) {
resolve(require('../pages/ContentList'));
});
});
});
var params = new ReactiveVar({
page: 1,
search: ''
});
var ContentBalancer = function ContentBalancer(_ref) {
var _ref$collection = _ref.collection,
collection = _ref$collection === void 0 ? {} : _ref$collection,
_ref$config = _ref.config,
config = _ref$config === void 0 ? {} : _ref$config,
root = _ref.root,
rest = _objectWithoutProperties(_ref, ["collection", "config", "root"]);
if (collection.single) {
var match = rest.match,
_rest$list = rest.list,
list = _rest$list === void 0 ? {} : _rest$list,
ready = rest.ready;
var collectionSlug = match.params.collectionSlug;
if (!ready) {
return _react.default.createElement(_LoadingComponent.default, null);
}
if (list._id) {
return _react.default.createElement(_reactRouterDom.Redirect, {
to: "".concat(root, "/collections/").concat(collectionSlug, "/").concat(list._id)
});
}
return _react.default.createElement(_reactRouterDom.Redirect, {
to: "".concat(root, "/collections/").concat(collectionSlug, "/new")
});
}
return _react.default.createElement(ContentList, _extends({
params: params,
collection: collection
}, rest, {
config: config,
root: root
}));
};
var _default = (0, _reactMeteorData.withTracker)(function (_ref2) {
var _sort;
var match = _ref2.match,
config = _ref2.config;
var _config$collections = config.collections,
collections = _config$collections === void 0 ? [] : _config$collections;
var collectionSlug = match.params.collectionSlug;
var collection = null;
collections.map(function (coll) {
var slug = (0, _slugify.default)(coll.label, {
lower: true
});
if (slug === collectionSlug) {
collection = coll;
}
});
var subscriptionName = collection.single ? "interface.single.".concat(collectionSlug) : "interface.all.".concat(collectionSlug);
var subscription = Meteor.subscribe(subscriptionName, params.get());
var ready = subscription.ready();
var firstField = collection.fields[0].name;
var number = Counts.get("count-all-".concat((0, _slugify.default)(collection.label, {
lower: true
})));
var list = collection.single ? collection.mongo.findOne({}) : collection.mongo.find({}, {
sort: (_sort = {}, _defineProperty(_sort, firstField, 1), _defineProperty(_sort, "_id", 1), _sort)
}).fetch();
return {
collection: collection,
ready: ready,
list: list,
firstField: firstField,
number: number
};
})(ContentBalancer);
exports.default = _default;