Vulcan/packages/nova-categories/lib/custom_fields.js

57 lines
1.4 KiB
JavaScript
Raw Normal View History

2016-06-23 11:40:35 +09:00
import Posts from "meteor/nova:posts";
2015-05-17 15:38:02 +09:00
Posts.addField(
{
fieldName: 'categories',
fieldSchema: {
type: Array,
2016-02-25 17:44:43 +09:00
control: "checkboxgroup",
optional: true,
insertableBy: ['members'],
editableBy: ['members'],
viewableBy: ['guests'],
form: {
noselect: true,
type: "bootstrap-category",
2015-10-20 14:34:24 +09:00
order: 50,
options: function (formProps) {
// catch the ApolloClient from the form props
const {client} = formProps;
// get the current data of the store
const apolloData = client.store.getState().apollo.data;
// filter these data based on their typename: we are interested in the categories data
const categories = _.filter(apolloData, (object, key) => {
return object.__typename === 'Category'
});
// give the form component (here: checkboxgroup) exploitable data
const categoriesOptions = categories.map(function (category) {
return {
value: category._id,
label: category.name
};
});
return categoriesOptions;
}
},
// publish: true,
// join: {
// joinAs: "categoriesArray",
// collection: () => Categories
// },
resolveAs: 'categories: [Category]'
}
},
{
fieldName: 'categories.$',
fieldSchema: {
type: String,
optional: true,
},
},
);