2016-08-08 11:18:21 +09:00
|
|
|
import Telescope from './config.js';
|
|
|
|
|
2016-10-29 14:17:57 +09:00
|
|
|
SimpleSchema.extendOptions({
|
|
|
|
viewableIf: Match.Optional(Function),
|
|
|
|
insertableIf: Match.Optional(Function),
|
|
|
|
editableIf: Match.Optional(Function)
|
|
|
|
});
|
|
|
|
|
2015-05-10 13:37:42 +09:00
|
|
|
/**
|
2016-04-09 09:41:20 +09:00
|
|
|
* @summary Meteor Collections.
|
2015-05-10 13:37:42 +09:00
|
|
|
* @class Mongo.Collection
|
|
|
|
*/
|
|
|
|
|
2015-04-24 09:28:50 +09:00
|
|
|
/**
|
2016-04-09 09:41:20 +09:00
|
|
|
* @summary @summary Add an additional field (or an array of fields) to a schema.
|
2015-05-18 18:32:54 +09:00
|
|
|
* @param {Object|Object[]} field
|
2015-04-24 09:28:50 +09:00
|
|
|
*/
|
2015-05-18 18:32:54 +09:00
|
|
|
Mongo.Collection.prototype.addField = function (fieldOrFieldArray) {
|
2015-04-24 09:28:50 +09:00
|
|
|
|
|
|
|
var collection = this;
|
|
|
|
var fieldSchema = {};
|
2015-05-01 18:22:00 +02:00
|
|
|
|
2015-05-18 18:32:54 +09:00
|
|
|
var fieldArray = Array.isArray(fieldOrFieldArray) ? fieldOrFieldArray : [fieldOrFieldArray];
|
|
|
|
|
|
|
|
// loop over fields and add them to schema
|
|
|
|
fieldArray.forEach(function (field) {
|
|
|
|
fieldSchema[field.fieldName] = field.fieldSchema;
|
|
|
|
});
|
2015-04-24 09:28:50 +09:00
|
|
|
|
|
|
|
// add field schema to collection schema
|
|
|
|
collection.attachSchema(fieldSchema);
|
2015-05-01 18:22:00 +02:00
|
|
|
};
|
2015-04-27 09:55:29 +09:00
|
|
|
|
2015-04-27 10:30:47 +09:00
|
|
|
/**
|
2016-04-09 09:41:20 +09:00
|
|
|
* @summary Remove a field from a schema.
|
2015-04-27 10:30:47 +09:00
|
|
|
* @param {String} fieldName
|
|
|
|
*/
|
2015-05-10 13:37:42 +09:00
|
|
|
Mongo.Collection.prototype.removeField = function (fieldName) {
|
2015-04-27 10:30:47 +09:00
|
|
|
|
|
|
|
var collection = this;
|
|
|
|
var schema = _.omit(collection.simpleSchema()._schema, fieldName);
|
|
|
|
|
|
|
|
// add field schema to collection schema
|
|
|
|
collection.attachSchema(schema, {replace: true});
|
2015-05-01 18:22:00 +02:00
|
|
|
};
|
2015-04-27 10:30:47 +09:00
|
|
|
|
2015-04-27 09:55:29 +09:00
|
|
|
/**
|
2016-04-09 09:41:20 +09:00
|
|
|
* @summary Global schemas object. Note: not reactive, won't be updated after initialization
|
2015-04-27 09:55:29 +09:00
|
|
|
* @namespace Telescope.schemas
|
|
|
|
*/
|
2015-04-28 17:15:53 +09:00
|
|
|
Telescope.schemas = {};
|
|
|
|
|
2015-06-05 10:55:52 +09:00
|
|
|
SimpleSchema.prototype.getProfileFields = function () {
|
|
|
|
var schema = this._schema;
|
|
|
|
var fields = _.filter(_.keys(schema), function (fieldName) {
|
|
|
|
var field = schema[fieldName];
|
|
|
|
return !!field.profile;
|
|
|
|
});
|
|
|
|
return fields;
|
2016-04-21 15:09:03 +09:00
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @summary Get a list of a schema's private fields
|
|
|
|
* @namespace Telescope.schemas
|
|
|
|
*/
|
|
|
|
Mongo.Collection.prototype.getPrivateFields = function () {
|
|
|
|
var schema = this.simpleSchema()._schema;
|
|
|
|
var fields = _.filter(_.keys(schema), function (fieldName) {
|
|
|
|
var field = schema[fieldName];
|
|
|
|
return field.publish !== true;
|
|
|
|
});
|
|
|
|
return fields;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @summary Get a list of a schema's public fields
|
|
|
|
* @namespace Telescope.schemas
|
|
|
|
*/
|
|
|
|
Mongo.Collection.prototype.getPublicFields = function () {
|
|
|
|
var schema = this.simpleSchema()._schema;
|
|
|
|
var fields = _.filter(_.keys(schema), function (fieldName) {
|
|
|
|
var field = schema[fieldName];
|
|
|
|
return field.publish === true;
|
|
|
|
});
|
|
|
|
return fields;
|
|
|
|
};
|
|
|
|
|