From 8539356b9ef790103af694e6c29a754b76be766a Mon Sep 17 00:00:00 2001 From: Stefan Zermatten Date: Fri, 21 Aug 2020 16:04:31 +0200 Subject: [PATCH] Added UI to prepare spells --- .../components/spells/SpellList.vue | 2 + .../components/spells/SpellListCard.vue | 61 ++++++++++++++++++- .../components/spells/SpellListTile.vue | 20 ++++++ app/imports/ui/properties/forms/SpellForm.vue | 17 +++--- .../ui/properties/forms/SpellListForm.vue | 5 ++ .../ui/properties/viewers/SpellListViewer.vue | 2 +- 6 files changed, 97 insertions(+), 10 deletions(-) diff --git a/app/imports/ui/properties/components/spells/SpellList.vue b/app/imports/ui/properties/components/spells/SpellList.vue index f14372a4..d5ecd025 100644 --- a/app/imports/ui/properties/components/spells/SpellList.vue +++ b/app/imports/ui/properties/components/spells/SpellList.vue @@ -27,6 +27,7 @@ class="item" :data-id="`spell-list-tile-${spell._id}`" :model="spell" + :preparing-spells="preparingSpells" @click="clickProperty(spell._id)" /> @@ -71,6 +72,7 @@ export default { type: Object, required: true, }, + preparingSpells: Boolean, }, data(){ return { dataSpells: [], diff --git a/app/imports/ui/properties/components/spells/SpellListCard.vue b/app/imports/ui/properties/components/spells/SpellListCard.vue index 8c69990b..199126f0 100644 --- a/app/imports/ui/properties/components/spells/SpellListCard.vue +++ b/app/imports/ui/properties/components/spells/SpellListCard.vue @@ -9,10 +9,48 @@ {{ model.name }} + + + + + + + + + {{ numPrepared }}/{{ model.maxPreparedResult }} spells prepared + + + @@ -28,9 +66,15 @@ export default { SpellList, }, props: { - model: Object, + model: { + type: Object, + required: true, + }, organize: Boolean, }, + data(){ return { + preparingSpells: false, + }}, meteor: { spells(){ return getActiveProperties({ @@ -46,6 +90,21 @@ export default { }, }); }, + numPrepared(){ + return getActiveProperties({ + ancestorId: this.model._id, + filter: { + type: 'spell', + prepared: true, + alwaysPrepared: {$ne: true}, + }, + }).length; + }, + preparedError(){ + let numPrepared = this.numPrepared; + let maxPrepared = this.model.maxPreparedResult; + return numPrepared !== maxPrepared + }, }, methods: { clickSpellList(_id){ diff --git a/app/imports/ui/properties/components/spells/SpellListTile.vue b/app/imports/ui/properties/components/spells/SpellListTile.vue index e74c46c2..4046f732 100644 --- a/app/imports/ui/properties/components/spells/SpellListTile.vue +++ b/app/imports/ui/properties/components/spells/SpellListTile.vue @@ -19,7 +19,15 @@ + @@ -31,8 +39,13 @@ diff --git a/app/imports/ui/properties/forms/SpellForm.vue b/app/imports/ui/properties/forms/SpellForm.vue index 3a10f4cb..133cce6b 100644 --- a/app/imports/ui/properties/forms/SpellForm.vue +++ b/app/imports/ui/properties/forms/SpellForm.vue @@ -1,14 +1,6 @@ diff --git a/app/imports/ui/properties/viewers/SpellListViewer.vue b/app/imports/ui/properties/viewers/SpellListViewer.vue index b8cbce8a..afcb35cd 100644 --- a/app/imports/ui/properties/viewers/SpellListViewer.vue +++ b/app/imports/ui/properties/viewers/SpellListViewer.vue @@ -4,7 +4,7 @@