Moved properties schema, added 'removeProperty' method
This commit is contained in:
@@ -2,7 +2,7 @@ import SimpleSchema from 'simpl-schema';
|
||||
import schema from '/imports/api/schema.js';
|
||||
import AdjustmentSchema from '/imports/api/creature/subSchemas/AdjustmentSchema.js';
|
||||
import StoredBuffSchema from '/imports/api/creature/properties/Buffs.js';
|
||||
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
|
||||
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
|
||||
import ColorSchema from '/imports/api/creature/subSchemas/ColorSchema.js';
|
||||
|
||||
// Mixins
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
|
||||
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
|
||||
import ColorSchema from '/imports/api/creature/subSchemas/ColorSchema.js';
|
||||
import SimpleSchema from 'simpl-schema';
|
||||
import schema from '/imports/api/schema.js';
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import SimpleSchema from 'simpl-schema';
|
||||
import schema from '/imports/api/schema.js';
|
||||
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
|
||||
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
|
||||
import { EffectSchema } from '/imports/api/creature/properties/Effects.js';
|
||||
|
||||
// Mixins
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import SimpleSchema from 'simpl-schema';
|
||||
import schema from '/imports/api/schema.js';
|
||||
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
|
||||
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
|
||||
import VARIABLE_NAME_REGEX from '/imports/constants/VARIABLE_NAME_REGEX.js';
|
||||
|
||||
// Mixins
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import SimpleSchema from 'simpl-schema';
|
||||
import schema from '/imports/api/schema.js';
|
||||
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
|
||||
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
|
||||
import ColorSchema from "/imports/api/creature/subSchemas/ColorSchema.js";
|
||||
import VARIABLE_NAME_REGEX from '/imports/constants/VARIABLE_NAME_REGEX.js';
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import SimpleSchema from 'simpl-schema';
|
||||
import schema from '/imports/api/schema.js';
|
||||
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
|
||||
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
|
||||
import DAMAGE_TYPES from '/imports/constants/DAMAGE_TYPES.js';
|
||||
|
||||
// Mixins
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import SimpleSchema from 'simpl-schema';
|
||||
import schema from '/imports/api/schema.js';
|
||||
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
|
||||
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
|
||||
|
||||
// Mixins
|
||||
import recomputeCreatureMixin from '/imports/api/mixins/recomputeCreatureMixin.js';
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import SimpleSchema from 'simpl-schema';
|
||||
import schema from '/imports/api/schema.js';
|
||||
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
|
||||
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
|
||||
import recomputeCreatureXP from '/imports/api/creature/creatureComputation.js';
|
||||
|
||||
// Mixins
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import SimpleSchema from 'simpl-schema';
|
||||
import schema from '/imports/api/schema.js';
|
||||
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
|
||||
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
|
||||
import ColorSchema from '/imports/api/creature/subSchemas/ColorSchema.js';
|
||||
|
||||
// Mixins
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import SimpleSchema from 'simpl-schema';
|
||||
import schema from '/imports/api/schema.js';
|
||||
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
|
||||
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
|
||||
|
||||
// Mixins
|
||||
import creaturePermissionMixin from '/imports/api/mixins/creaturePermissionMixin.js';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import SimpleSchema from 'simpl-schema';
|
||||
import schema from '/imports/api/schema.js';
|
||||
import ColorSchema from "/imports/api/creature/subSchemas/ColorSchema.js";
|
||||
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
|
||||
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
|
||||
|
||||
// Mixins
|
||||
import creaturePermissionMixin from '/imports/api/mixins/creaturePermissionMixin.js';
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import SimpleSchema from 'simpl-schema';
|
||||
import schema from '/imports/api/schema.js';
|
||||
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
|
||||
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
|
||||
|
||||
// Mixins
|
||||
import recomputeCreatureMixin from '/imports/api/mixins/recomputeCreatureMixin.js';
|
||||
|
||||
64
app/imports/api/creature/properties/Properties.js
Normal file
64
app/imports/api/creature/properties/Properties.js
Normal file
@@ -0,0 +1,64 @@
|
||||
import SimpleSchema from 'simpl-schema';
|
||||
import SoftRemovableSchema from '/imports/api/parenting/SoftRemovableSchema.js';
|
||||
import ChildSchema from '/imports/api/parenting/ChildSchema.js';
|
||||
import softRemove from '/imports/api/parenting/softRemove.js';
|
||||
import getCollectionByName from '/imports/api/parenting/getCollectionByName.js';
|
||||
|
||||
// Mixins
|
||||
import recomputeCreatureMixin from '/imports/api/mixins/recomputeCreatureMixin.js';
|
||||
import creaturePermissionMixin from '/imports/api/mixins/creaturePermissionMixin.js';
|
||||
import simpleSchemaMixin from '/imports/api/mixins/simpleSchemaMixin.js';
|
||||
|
||||
const PropertySchema = new SimpleSchema({
|
||||
charId: {
|
||||
type: String,
|
||||
regEx: SimpleSchema.RegEx.Id,
|
||||
index: 1,
|
||||
optional: true,
|
||||
},
|
||||
name: {
|
||||
type: String,
|
||||
optional: true,
|
||||
},
|
||||
enabled: {
|
||||
type: Boolean,
|
||||
defaultValue: true,
|
||||
},
|
||||
order: {
|
||||
type: SimpleSchema.Integer,
|
||||
index: true,
|
||||
},
|
||||
});
|
||||
|
||||
PropertySchema.extend(SoftRemovableSchema);
|
||||
PropertySchema.extend(ChildSchema);
|
||||
|
||||
// Always recomputes the character, because we don't know the extent of the tree
|
||||
// that was removed with this document
|
||||
const softRemoveProperty = new ValidatedMethod({
|
||||
name: 'softRemoveProperty',
|
||||
mixins: [
|
||||
simpleSchemaMixin,
|
||||
recomputeCreatureMixin,
|
||||
creaturePermissionMixin,
|
||||
],
|
||||
getCharId({_id, collection}){
|
||||
let col = getCollectionByName(collection);
|
||||
let doc = col.findOne(_id, {fields: {charId: 1}});
|
||||
if (!doc || !doc.charId){
|
||||
throw new Meteor.Error(`Could not find charId of ${_id} in ${collection}`);
|
||||
} else {
|
||||
return doc.charId;
|
||||
}
|
||||
},
|
||||
permission: 'edit',
|
||||
schema: new SimpleSchema({
|
||||
_id: SimpleSchema.RegEx.Id,
|
||||
collection: String,
|
||||
}),
|
||||
run({_id, collection}){
|
||||
softRemove({_id, collection});
|
||||
},
|
||||
});
|
||||
|
||||
export { PropertySchema, softRemoveProperty };
|
||||
@@ -1,5 +1,5 @@
|
||||
import SimpleSchema from 'simpl-schema';
|
||||
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
|
||||
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
|
||||
import AdjustmentSchema from '/imports/api/creature/subSchemas/AdjustmentSchema.js';
|
||||
import StoredBuffSchema from '/imports/api/creature/properties/Buffs.js';
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import SimpleSchema from 'simpl-schema';
|
||||
import schema from '/imports/api/schema.js';
|
||||
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
|
||||
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
|
||||
import ColorSchema from '/imports/api/creature/subSchemas/ColorSchema.js';
|
||||
|
||||
// Mixins
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import SimpleSchema from 'simpl-schema';
|
||||
import schema from '/imports/api/schema.js';
|
||||
import ColorSchema from "/imports/api/creature/subSchemas/ColorSchema.js";
|
||||
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
|
||||
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
|
||||
|
||||
// Mixins
|
||||
import creaturePermissionMixin from '/imports/api/mixins/creaturePermissionMixin.js';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import ColorSchema from '/imports/api/creature/subSchemas/ColorSchema.js';
|
||||
import SimpleSchema from 'simpl-schema';
|
||||
import schema from '/imports/api/schema.js';
|
||||
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
|
||||
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
|
||||
|
||||
// Mixins
|
||||
import creaturePermissionMixin from '/imports/api/mixins/creaturePermissionMixin.js';
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
import updateAction from '/imports/api/creature/properties/Actions.js';
|
||||
import updateAttribute from '/imports/api/creature/properties/Attributes.js';
|
||||
import updateBuff from '/imports/api/creature/properties/Buffs.js';
|
||||
import updateClass from '/imports/api/creature/properties/Classes.js';
|
||||
import updateClassLevel from '/imports/api/creature/properties/ClassLevels.js';
|
||||
import updateDamageMultiplier from '/imports/api/creature/properties/DamageMultipliers.js';
|
||||
import updateEffect from '/imports/api/creature/properties/Effects.js';
|
||||
import updateExperience from '/imports/api/creature/properties/Experiences.js';
|
||||
import updateFeature from '/imports/api/creature/properties/Features.js';
|
||||
import updateFolder from '/imports/api/creature/properties/Folders.js';
|
||||
import updateNote from '/imports/api/creature/properties/Notes.js';
|
||||
import updateProficiency from '/imports/api/creature/properties/Proficiencies.js';
|
||||
import updateRoll from '/imports/api/creature/properties/Rolls.js';
|
||||
import updateSkill from '/imports/api/creature/properties/Skills.js';
|
||||
import updateSpellList from '/imports/api/creature/properties/SpellLists.js';
|
||||
import updateSpell from '/imports/api/creature/properties/Spells.js';
|
||||
|
||||
export default Object.freeze({
|
||||
actions: updateAction,
|
||||
attributes: updateAttribute,
|
||||
buffs: updateBuff,
|
||||
classs: updateClass,
|
||||
classLevels: updateClassLevel,
|
||||
damageMultipliers: updateDamageMultiplier,
|
||||
effects: updateEffect,
|
||||
experiences: updateExperience,
|
||||
features: updateFeature,
|
||||
folders: updateFolder,
|
||||
notes: updateNote,
|
||||
proficienciess: updateProficiency,
|
||||
rolls: updateRoll,
|
||||
skills: updateSkill,
|
||||
spellLists: updateSpellList,
|
||||
spells: updateSpell,
|
||||
});
|
||||
@@ -1,29 +0,0 @@
|
||||
import SimpleSchema from 'simpl-schema';
|
||||
import SoftRemovableSchema from '/imports/api/parenting/SoftRemovableSchema.js';
|
||||
import ChildSchema from '/imports/api/parenting/ChildSchema.js';
|
||||
|
||||
const PropertySchema = new SimpleSchema({
|
||||
charId: {
|
||||
type: String,
|
||||
regEx: SimpleSchema.RegEx.Id,
|
||||
index: 1,
|
||||
optional: true,
|
||||
},
|
||||
name: {
|
||||
type: String,
|
||||
optional: true,
|
||||
},
|
||||
enabled: {
|
||||
type: Boolean,
|
||||
defaultValue: true,
|
||||
},
|
||||
order: {
|
||||
type: SimpleSchema.Integer,
|
||||
index: true,
|
||||
},
|
||||
});
|
||||
|
||||
PropertySchema.extend(SoftRemovableSchema);
|
||||
PropertySchema.extend(ChildSchema);
|
||||
|
||||
export default PropertySchema;
|
||||
@@ -1,7 +1,7 @@
|
||||
import SimpleSchema from 'simpl-schema';
|
||||
import schema from '/imports/api/schema.js';
|
||||
import ColorSchema from "/imports/api/creature/subSchemas/ColorSchema.js";
|
||||
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
|
||||
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
|
||||
import ChildSchema from '/imports/api/parenting/ChildSchema.js';
|
||||
|
||||
//set up the collection for containers
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import SimpleSchema from 'simpl-schema';
|
||||
import schema from '/imports/api/schema.js';
|
||||
import ColorSchema from "/imports/api/creature/subSchemas/ColorSchema.js";
|
||||
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
|
||||
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
|
||||
import ChildSchema from '/imports/api/parenting/ChildSchema.js';
|
||||
|
||||
Items = new Mongo.Collection("items");
|
||||
|
||||
@@ -2,11 +2,11 @@ import getCollectionByName from '/imports/api/parenting/getCollectionByName.js';
|
||||
import updateDecendents from '/imports/api/parenting/parenting.js';
|
||||
|
||||
// 1 + n database hits
|
||||
export function softRemove({id, collection}){
|
||||
export function softRemove({_id, collection}){
|
||||
let removalDate = new Date();
|
||||
// Remove this document
|
||||
collection = getCollectionByName(collection);
|
||||
collection.update(id, {$set: {
|
||||
collection.update(_id, {$set: {
|
||||
removed: true,
|
||||
removedAt: removalDate,
|
||||
}, $unset: {
|
||||
@@ -15,15 +15,15 @@ export function softRemove({id, collection}){
|
||||
// Remove all the decendents that have not yet been removed, and set them to be
|
||||
// removed with this document
|
||||
updateDecendents({
|
||||
ancestorId: id,
|
||||
ancestorId: _id,
|
||||
filter: {removed: {$ne: true}},
|
||||
modifier: {$set: {
|
||||
removed: true,
|
||||
removedAt: removalDate,
|
||||
removedWith: id,
|
||||
removedWith: _id,
|
||||
}},
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
const restoreError = function(){
|
||||
throw new Meteor.Error('restore-failed',
|
||||
@@ -31,10 +31,10 @@ const restoreError = function(){
|
||||
);
|
||||
};
|
||||
|
||||
export function restore({id, collection}){
|
||||
export function restore({_id, collection}){
|
||||
collection = getCollectionByName(collection);
|
||||
let numUpdated = collection.update({
|
||||
_id: id,
|
||||
_id,
|
||||
removedWith: {$exists: false}
|
||||
}, { $unset: {
|
||||
removed: 1,
|
||||
@@ -42,9 +42,9 @@ export function restore({id, collection}){
|
||||
}});
|
||||
if (numUpdated === 0) restoreError();
|
||||
updateDecendents({
|
||||
ancestorId: id,
|
||||
ancestorId: _id,
|
||||
filter: {
|
||||
removedWith: id,
|
||||
removedWith: _id,
|
||||
},
|
||||
modifier: { $unset: {
|
||||
removed: 1,
|
||||
|
||||
Reference in New Issue
Block a user