From 46189c68df0ad430a509b6087f8a1740147ff11d Mon Sep 17 00:00:00 2001 From: Stefan Zermatten Date: Sat, 17 Oct 2020 13:42:24 +0200 Subject: [PATCH 1/6] All property forms now allow tags --- .../ui/properties/forms/AdjustmentForm.vue | 8 +++++ .../ui/properties/forms/AttributeForm.vue | 8 +++++ app/imports/ui/properties/forms/BuffForm.vue | 8 +++++ .../ui/properties/forms/ContainerForm.vue | 8 +++++ .../ui/properties/forms/DamageForm.vue | 10 ++++++ .../properties/forms/DamageMultiplierForm.vue | 8 +++++ app/imports/ui/properties/forms/ItemForm.vue | 12 +++---- app/imports/ui/properties/forms/NoteForm.vue | 8 +++++ .../ui/properties/forms/ProficiencyForm.vue | 8 +++++ .../ui/properties/forms/SavingThrowForm.vue | 10 ++++++ app/imports/ui/properties/forms/SkillForm.vue | 8 +++++ .../ui/properties/forms/SlotFillerForm.vue | 33 ++++++++----------- app/imports/ui/properties/forms/SlotForm.vue | 10 +++++- .../ui/properties/forms/SpellListForm.vue | 8 +++++ .../ui/properties/forms/ToggleForm.vue | 8 +++++ 15 files changed, 129 insertions(+), 26 deletions(-) diff --git a/app/imports/ui/properties/forms/AdjustmentForm.vue b/app/imports/ui/properties/forms/AdjustmentForm.vue index 23272baa..183a72c3 100644 --- a/app/imports/ui/properties/forms/AdjustmentForm.vue +++ b/app/imports/ui/properties/forms/AdjustmentForm.vue @@ -29,6 +29,14 @@ :menu-props="{auto: true, lazy: true}" @change="change('target', ...arguments)" /> + diff --git a/app/imports/ui/properties/forms/AttributeForm.vue b/app/imports/ui/properties/forms/AttributeForm.vue index c238df43..eab23559 100644 --- a/app/imports/ui/properties/forms/AttributeForm.vue +++ b/app/imports/ui/properties/forms/AttributeForm.vue @@ -65,6 +65,14 @@ name="Advanced" standalone > +
+
diff --git a/app/imports/ui/properties/forms/ContainerForm.vue b/app/imports/ui/properties/forms/ContainerForm.vue index 1435bf47..fcd5998a 100644 --- a/app/imports/ui/properties/forms/ContainerForm.vue +++ b/app/imports/ui/properties/forms/ContainerForm.vue @@ -55,6 +55,14 @@ name="Advanced" standalone > +
+
diff --git a/app/imports/ui/properties/forms/DamageMultiplierForm.vue b/app/imports/ui/properties/forms/DamageMultiplierForm.vue index b0baf772..feb29f0c 100644 --- a/app/imports/ui/properties/forms/DamageMultiplierForm.vue +++ b/app/imports/ui/properties/forms/DamageMultiplierForm.vue @@ -28,6 +28,14 @@ @change="change('value', ...arguments)" />
+ diff --git a/app/imports/ui/properties/forms/ItemForm.vue b/app/imports/ui/properties/forms/ItemForm.vue index 79ff3630..04250b6c 100644 --- a/app/imports/ui/properties/forms/ItemForm.vue +++ b/app/imports/ui/properties/forms/ItemForm.vue @@ -79,12 +79,6 @@ name="Advanced" standalone > - + + diff --git a/app/imports/ui/properties/forms/ProficiencyForm.vue b/app/imports/ui/properties/forms/ProficiencyForm.vue index e4bd20e4..769ffd68 100644 --- a/app/imports/ui/properties/forms/ProficiencyForm.vue +++ b/app/imports/ui/properties/forms/ProficiencyForm.vue @@ -27,6 +27,14 @@ @change="change('value', ...arguments)" /> + diff --git a/app/imports/ui/properties/forms/SavingThrowForm.vue b/app/imports/ui/properties/forms/SavingThrowForm.vue index c4ed3410..1f471a7f 100644 --- a/app/imports/ui/properties/forms/SavingThrowForm.vue +++ b/app/imports/ui/properties/forms/SavingThrowForm.vue @@ -21,6 +21,16 @@ :error-messages="errors.stat" @change="change('stat', ...arguments)" /> + diff --git a/app/imports/ui/properties/forms/SkillForm.vue b/app/imports/ui/properties/forms/SkillForm.vue index 57381ce6..27f22104 100644 --- a/app/imports/ui/properties/forms/SkillForm.vue +++ b/app/imports/ui/properties/forms/SkillForm.vue @@ -44,6 +44,14 @@ name="Advanced" standalone > +
+ - - -
+ + diff --git a/app/imports/ui/components/snackbars/snackboxStore.js b/app/imports/ui/components/snackbars/snackboxStore.js new file mode 100644 index 00000000..9ea306ef --- /dev/null +++ b/app/imports/ui/components/snackbars/snackboxStore.js @@ -0,0 +1,47 @@ +const snackbarStore = { + state: { + snackbars: [], + snackbarTimout: undefined, + }, + mutations: { + addSnackbar(state, value){ + state.snackbars.push(value) + }, + closeCurrentSnackbar (state){ + state.snackbars.shift(); + }, + cancelSnackbarTimeout (state){ + if(state.snackbarTimout){ + clearTimeout(state.snackbarTimout); + } + }, + setSnackbarTimout(state, value){ + state.snackbarTimout = value; + }, + }, + actions: { + snackbar({dispatch, commit}, value){ + // value = { + // text, + // showCloseButton, + // callback, + // callbackName + // } + commit('addSnackbar', value); + commit('setSnackbarTimout', setTimeout(() => { + dispatch('closeSnackbar'); + }, 5000)); + }, + closeSnackbar({dispatch, commit, state}){ + commit('closeCurrentSnackbar'); + commit('cancelSnackbarTimeout'); + if (state.snackbars.length){ + commit('setSnackbarTimout', setTimeout(() => { + dispatch('closeSnackbar'); + }, 5000)); + } + }, + } +}; + +export default snackbarStore; diff --git a/app/imports/ui/creature/character/CharacterSheet.vue b/app/imports/ui/creature/character/CharacterSheet.vue index 070f5919..fa3b7898 100644 --- a/app/imports/ui/creature/character/CharacterSheet.vue +++ b/app/imports/ui/creature/character/CharacterSheet.vue @@ -93,9 +93,6 @@ required: true, }, }, - data(){return { - snackbars: [], - }}, reactiveProvide: { name: 'context', include: ['creature', 'editPermission'], @@ -124,10 +121,10 @@ added(doc){ if (!that.$subReady.singleCharacter) return; if (that.$store.state.rightDrawer) return; - if (that.snackbars.some(o => o._id === doc._id)) return; - doc.open = true; - that.$store.commit('snackbar', { - doc + if (that.$store.state.snackbars.snackbars.some(o => o._id === doc._id)) return; + that.$store.dispatch('snackbar', { + text: doc.text, + showCloseButton: true, }); }, }); diff --git a/app/imports/ui/layouts/AppLayout.vue b/app/imports/ui/layouts/AppLayout.vue index fae76472..3bcf8676 100644 --- a/app/imports/ui/layouts/AppLayout.vue +++ b/app/imports/ui/layouts/AppLayout.vue @@ -67,31 +67,7 @@ name="rightDrawer" /> - - {{ snackbar.text.split(/\n+/).pop() }} - - {{ snackbar.callbackName }} - - - close - - + @@ -101,11 +77,13 @@ import DialogStack from '/imports/ui/dialogStack/DialogStack.vue'; import { theme, darkTheme } from '/imports/ui/theme.js'; import { mapMutations } from 'vuex'; + import Snackbars from '/imports/ui/components/snackbars/Snackbars.vue'; export default { components: { Sidebar, DialogStack, + Snackbars, }, data(){return { name: 'Home', diff --git a/app/imports/ui/vuexStore.js b/app/imports/ui/vuexStore.js index 5cafd273..605832fb 100644 --- a/app/imports/ui/vuexStore.js +++ b/app/imports/ui/vuexStore.js @@ -1,19 +1,19 @@ import Vue from 'vue'; import Vuex from 'vuex'; import dialogStackStore from '/imports/ui/dialogStack/dialogStackStore.js'; +import snackbarStore from '/imports/ui/components/snackbars/snackboxStore.js'; Vue.use(Vuex); const store = new Vuex.Store({ strict: process.env.NODE_ENV !== 'production', modules: { dialogStack: dialogStackStore, + snackbars: snackbarStore, }, state: { drawer: undefined, rightDrawer: undefined, pageTitle: undefined, - snackbars: [], - snackbarTimout: undefined, }, mutations: { toggleDrawer (state) { @@ -32,43 +32,7 @@ const store = new Vuex.Store({ state.pageTitle = value; document.title = value; }, - addSnackbar(state, value){ - value.open = true; - state.snackbars.push(value) - }, - closeCurrentSnackbar (state){ - state.snackbars.shift(); - }, - cancelSnackbarTimeout (state){ - if(state.snackbarTimout){ - clearTimeout(state.snackbarTimout); - } - }, - setSnackbarTimout(state, value){ - state.snackbarTimout = value; - }, }, - actions: { - snackbar({commit}, value){ - // value = { - // text, - // showCloseButton, - // callback, - // callbackName - // } - commit('addSnackbar', value); - }, - closeSnackbar({dispatch, commit, state}){ - commit('closeCurrentSnackbar'); - commit('cancelSnackbarTimeout'); - if (state.snackbars.length){ - commit('setSnackbarTimout'); - state.snackbarTimout = setTimeout(() => { - dispatch('closeSnackbar'); - }, 5000); - } - }, - } }); export default store; From ebab41838c2926354cfc2be095d1327aa5809ee0 Mon Sep 17 00:00:00 2001 From: Stefan Zermatten Date: Sat, 17 Oct 2020 16:56:23 +0200 Subject: [PATCH 3/6] Used tree node views in slot fill selection --- app/imports/ui/creature/character/CharacterSheet.vue | 1 - app/imports/ui/creature/slots/SlotFillDialog.vue | 12 ++++++------ .../properties/treeNodeViews/AdjustmentTreeNode.vue | 1 + .../properties/treeNodeViews/ClassLevelTreeNode.vue | 1 + .../ui/properties/treeNodeViews/DamageTreeNode.vue | 1 + .../ui/properties/treeNodeViews/DefaultTreeNode.vue | 1 + .../ui/properties/treeNodeViews/EffectTreeNode.vue | 1 + .../ui/properties/treeNodeViews/ItemTreeNode.vue | 3 ++- .../ui/properties/treeNodeViews/treeNodeViewMixin.js | 1 + 9 files changed, 14 insertions(+), 8 deletions(-) diff --git a/app/imports/ui/creature/character/CharacterSheet.vue b/app/imports/ui/creature/character/CharacterSheet.vue index fa3b7898..b73f5e5e 100644 --- a/app/imports/ui/creature/character/CharacterSheet.vue +++ b/app/imports/ui/creature/character/CharacterSheet.vue @@ -121,7 +121,6 @@ added(doc){ if (!that.$subReady.singleCharacter) return; if (that.$store.state.rightDrawer) return; - if (that.$store.state.snackbars.snackbars.some(o => o._id === doc._id)) return; that.$store.dispatch('snackbar', { text: doc.text, showCloseButton: true, diff --git a/app/imports/ui/creature/slots/SlotFillDialog.vue b/app/imports/ui/creature/slots/SlotFillDialog.vue index a2ddb9b5..7e758b27 100644 --- a/app/imports/ui/creature/slots/SlotFillDialog.vue +++ b/app/imports/ui/creature/slots/SlotFillDialog.vue @@ -19,7 +19,8 @@ style="max-width: 500px;" hover ripple - :class="{'primary theme--dark': node._id === (selectedNode && selectedNode._id)}" + :class="{'primary': node._id === (selectedNode && selectedNode._id)}" + :dark="node._id === (selectedNode && selectedNode._id)" @click="selectedNode = node" >

- - {{ getTitle(node) }}

{{ node.description }} @@ -108,14 +108,14 @@ import DialogBase from '/imports/ui/dialogStack/DialogBase.vue'; import { getPropertyName } from '/imports/constants/PROPERTIES.js'; import { parse, CompilationContext } from '/imports/parser/parser.js'; import PROPERTIES from '/imports/constants/PROPERTIES.js'; -import PropertyIcon from '/imports/ui/properties/shared/PropertyIcon.vue'; import ColumnLayout from '/imports/ui/components/ColumnLayout.vue'; +import TreeNodeView from '/imports/ui/properties/treeNodeViews/TreeNodeView.vue'; export default { components: { DialogBase, ColumnLayout, - PropertyIcon, + TreeNodeView, }, props:{ slotId: { diff --git a/app/imports/ui/properties/treeNodeViews/AdjustmentTreeNode.vue b/app/imports/ui/properties/treeNodeViews/AdjustmentTreeNode.vue index 200ab1b0..287c9e8f 100644 --- a/app/imports/ui/properties/treeNodeViews/AdjustmentTreeNode.vue +++ b/app/imports/ui/properties/treeNodeViews/AdjustmentTreeNode.vue @@ -1,6 +1,7 @@