diff --git a/app/imports/api/library/LibraryNodes.js b/app/imports/api/library/LibraryNodes.js index e5bc5606..cde82a88 100644 --- a/app/imports/api/library/LibraryNodes.js +++ b/app/imports/api/library/LibraryNodes.js @@ -45,21 +45,26 @@ const insertNode = new ValidatedMethod({ }, }); -const updateNode = new ValidatedMethod({ - name: 'LibraryNodes.methods.update', - validate({_id, update}){ - let fields = getModifierFields(update); - return !fields.hasAny([ - 'type', - 'order', - 'parent', - 'ancestors', - ]); +const updateLibraryNode = new ValidatedMethod({ + name: 'LibraryNodes.methods.set', + validate({_id, path, value, ack}){ + if (!_id) return false; + switch (path[0]){ + case 'type': + case 'order': + case 'parent': + case 'ancestors': + return false; + } }, - run({_id, update}) { + run({_id, path, value, ack}) { let node = LibraryNodes.findOne(_id); assertNodeEditPermission(node, this.userId); - return LibraryNodes.update(_id, update); + return LibraryNodes.update(_id, { + $set: {[path.join('.')]: value}, + }, { + selector: {type: node.type}, + }, error => ack && ack(error)); }, }); @@ -93,4 +98,4 @@ function libraryNodesToTree(ancestorId){ } export default LibraryNodes; -export { LibraryNodeSchema, insertNode, updateNode, libraryNodesToTree }; +export { LibraryNodeSchema, insertNode, updateLibraryNode, libraryNodesToTree }; diff --git a/app/imports/ui/StoryBook.vue b/app/imports/ui/StoryBook.vue index ecf826ac..b791a6eb 100644 --- a/app/imports/ui/StoryBook.vue +++ b/app/imports/ui/StoryBook.vue @@ -44,7 +44,7 @@ import ColorPicker from '/imports/ui/components/ColorPicker.Story.vue'; import ColumnLayout from "/imports/ui/components/ColumnLayout.Story.vue"; import DialogStack from '/imports/ui/dialogStack/DialogStack.Story.vue'; - import EffectEditExpansionList from '/imports/ui/properties/effects/EffectEditExpansionList.Story.vue'; + import EffectEditExpansionList from '/imports/ui/properties/viewers/shared/effects/EffectEditExpansionList.Story.vue'; import FeatureCard from '/imports/ui/properties/features/FeatureCard.Story.vue'; import HealthBar from '/imports/ui/properties/attributes/HealthBar.Story.vue'; import HitDiceListTile from '/imports/ui/properties/attributes/HitDiceListTile.Story.vue'; diff --git a/app/imports/ui/dialogStack/DialogComponentIndex.js b/app/imports/ui/dialogStack/DialogComponentIndex.js index efd5296a..5a63f32f 100644 --- a/app/imports/ui/dialogStack/DialogComponentIndex.js +++ b/app/imports/ui/dialogStack/DialogComponentIndex.js @@ -5,6 +5,7 @@ import FeatureCreationDialog from '/imports/ui/properties/features/FeatureCreati import FeatureDialogContainer from '/imports/ui/properties/features/FeatureDialogContainer.vue'; import LibraryCreationDialog from '/imports/ui/library/LibraryCreationDialog.vue'; import LibraryNodeCreationDialog from '/imports/ui/library/LibraryNodeCreationDialog.vue'; +import LibraryNodeEditDialog from '/imports/ui/library/LibraryNodeEditDialog.vue'; import SkillDialogContainer from '/imports/ui/properties/skills/SkillDialogContainer.vue'; export default { @@ -15,5 +16,6 @@ export default { FeatureDialogContainer, LibraryCreationDialog, LibraryNodeCreationDialog, + LibraryNodeEditDialog, SkillDialogContainer, }; diff --git a/app/imports/ui/library/LibraryNodeEditDialog.vue b/app/imports/ui/library/LibraryNodeEditDialog.vue index 05be1db5..7fd7968e 100644 --- a/app/imports/ui/library/LibraryNodeEditDialog.vue +++ b/app/imports/ui/library/LibraryNodeEditDialog.vue @@ -1,14 +1,18 @@