diff --git a/app/imports/api/creature/creatureCollections.js b/app/imports/api/creature/creatureCollections.js
new file mode 100644
index 00000000..a0c8c903
--- /dev/null
+++ b/app/imports/api/creature/creatureCollections.js
@@ -0,0 +1,45 @@
+import Actions from '/imports/api/creature/properties/Actions.js';
+import Attacks from '/imports/api/creature/properties/Attacks.js';
+import Attributes from '/imports/api/creature/properties/Attributes.js';
+import Buffs from '/imports/api/creature/properties/Buffs.js';
+import Bundles from '/imports/api/creature/properties/Bundles.js';
+import Classes from '/imports/api/creature/properties/Classes.js';
+import Conditions from '/imports/api/creature/properties/Conditions.js';
+import CustomBuffs from '/imports/api/creature/properties/CustomBuffs.js';
+import DamageMultipliers from '/imports/api/creature/properties/DamageMultipliers.js';
+import Effects from '/imports/api/creature/properties/Effects.js';
+import Experiences from '/imports/api/creature/properties/Experiences.js';
+import Features from '/imports/api/creature/properties/Features.js';
+import Notes from '/imports/api/creature/properties/Notes.js';
+import Proficiencies from '/imports/api/creature/properties/Proficiencies.js';
+import Skills from '/imports/api/creature/properties/Skills.js';
+import SpellLists from '/imports/api/creature/properties/SpellLists.js';
+import Spells from '/imports/api/creature/properties/Spells.js';
+import Containers from '/imports/api/inventory/Containers.js';
+import Items from '/imports/api/inventory/Items.js';
+
+// All theses collections have the field {charId: String}
+// Collate them here in case we need to do something on all the collections of
+// a creature
+
+export default [
+ Actions,
+ Attacks,
+ Attributes,
+ Buffs,
+ Bundles,
+ Classes,
+ Conditions,
+ CustomBuffs,
+ DamageMultipliers,
+ Effects,
+ Experiences,
+ Features,
+ Notes,
+ Proficiencies,
+ Skills,
+ SpellLists,
+ Spells,
+ Containers,
+ Items,
+];
diff --git a/app/imports/api/creature/getDefaultCharacterDocs.js b/app/imports/api/creature/getDefaultCharacterDocs.js
index e3cc41df..31592518 100644
--- a/app/imports/api/creature/getDefaultCharacterDocs.js
+++ b/app/imports/api/creature/getDefaultCharacterDocs.js
@@ -8,7 +8,7 @@ const setParent = function(charId){
group: "default",
};
return doc => {
- doc.parent = parent;
+ doc.parent = doc.parent || parent;
doc.charId = charId;
};
};
@@ -102,6 +102,7 @@ const getDefaultCharacterDocs = function(charId, {
const strippedCls = cls.replace(/\s+/g, '')
const classId = Random.id();
docs.classes = [{
+ _id: classId,
charId,
level,
name: cls,
diff --git a/app/imports/api/creature/properties/Attributes.js b/app/imports/api/creature/properties/Attributes.js
index 7b2d918d..08a1686a 100644
--- a/app/imports/api/creature/properties/Attributes.js
+++ b/app/imports/api/creature/properties/Attributes.js
@@ -20,15 +20,16 @@ attributeSchema = schema({
// The nice-to-read name
name: {
type: String,
- index: 1,
},
// The technical, lowercase, single-word name used in formulae
variableName: {
type: String,
+ index: 1,
},
// Attributes need to store their order to keep the sheet consistent
order: {
type: SimpleSchema.Integer,
+ // Indexed because we update order in bulk using the current order as a query
index: 1,
},
type: {
diff --git a/app/imports/ui/character/CharacterSheet.vue b/app/imports/ui/character/CharacterSheet.vue
index 43aa19a4..08f41cc4 100644
--- a/app/imports/ui/character/CharacterSheet.vue
+++ b/app/imports/ui/character/CharacterSheet.vue
@@ -8,9 +8,28 @@
refresh
{{character.name}}
+
+
+ Stats
+
+
+ Tree
+
+
-
+
+
+
+
+
+
+
+
@@ -24,6 +43,7 @@
import { mapMutations } from "vuex";
import theme from '/imports/ui/theme.js';
import StatsTab from '/imports/ui/character/StatsTab.vue';
+ import CharacterTreeView from '/imports/ui/character/CharacterTreeView.vue';
import { recomputeCreature } from '/imports/api/creature/creatureComputation.js'
export default {
@@ -33,6 +53,7 @@
},
components: {
StatsTab,
+ CharacterTreeView,
},
watch: {
charId(newValue){
@@ -41,6 +62,7 @@
},
data(){return {
theme,
+ tab: 1,
}},
methods: {
...mapMutations([
diff --git a/app/imports/ui/character/CharacterTreeView.vue b/app/imports/ui/character/CharacterTreeView.vue
new file mode 100644
index 00000000..e03693be
--- /dev/null
+++ b/app/imports/ui/character/CharacterTreeView.vue
@@ -0,0 +1,85 @@
+
+
+
+
+ {{item.name}}: {{item.value}}
+
+
+ {{item.name}}: {{item.stat}} {{item.operation}} {{item.result}}
+
+
+ {{item.name}}
+
+
+
+
+
+
+
+