Action cards now show their decendants

This commit is contained in:
Stefan Zermatten
2022-06-29 15:27:12 +02:00
parent f07f05ca2c
commit 00272e7b55
8 changed files with 71 additions and 5 deletions

View File

@@ -32,6 +32,8 @@ const LIBRARY_NODE_TREE_FIELDS = {
value: 1,
// Reference
cache: 1,
// Saving throw
dc: 1,
}
export { LIBRARY_NODE_TREE_FIELDS };

View File

@@ -14,6 +14,7 @@
@click.stop="$emit('selected', node._id)"
>
<v-btn
v-if="!startExpanded"
small
icon
:class="showExpanded ? 'rotate-90' : null"
@@ -26,6 +27,7 @@
</v-btn>
<div
class="layout align-center justify-start pr-1"
:class="{'ml-4': startExpanded}"
style="flex-grow: 0;"
>
<v-icon
@@ -56,6 +58,7 @@
:group="group"
:organize="organize"
:selected-node="selectedNode"
:start-expanded="startExpanded"
@reordered="e => $emit('reordered', e)"
@reorganized="e => $emit('reorganized', e)"
@selected="e => $emit('selected', e)"
@@ -112,10 +115,11 @@
type: Object,
default: undefined,
},
selected: Boolean,
selected: Boolean,
startExpanded: Boolean,
},
data(){return {
expanded: this.node._ancestorOfMatchedDocument ||
expanded: this.startExpanded || this.node._ancestorOfMatchedDocument ||
some(this.selectedNode?.ancestors, ref => ref.id === this.node._id) ||
false,
}},

View File

@@ -23,6 +23,7 @@
:ancestors-of-selected-node="ancestorsOfSelectedNode"
:organize="organize"
:lazy="lazy"
:start-expanded="startExpanded"
@selected="e => $emit('selected', e)"
@reordered="e => $emit('reordered', e)"
@reorganized="e => $emit('reorganized', e)"
@@ -58,9 +59,10 @@
type: Array,
default: () => [],
},
startExpanded: Boolean,
},
data(){ return {
expanded: false,
expanded: this.startExpanded || false,
displayedChildren: [],
}},
computed: {

View File

@@ -250,6 +250,7 @@
:model="action"
:data-id="action._id"
@click="clickProperty({_id: action._id})"
@sub-click="_id => clickTreeProperty({_id})"
/>
</div>
<div
@@ -515,6 +516,13 @@
elementId: `${_id}`,
data: {_id},
});
},
clickTreeProperty({_id}){
this.$store.commit('pushDialogStack', {
component: 'creature-property-dialog',
elementId: `tree-node-${_id}`,
data: {_id},
});
},
incrementChange(_id, {type, value}){
if (type === 'increment'){

View File

@@ -5,6 +5,7 @@
:group="group"
:organize="organize"
:selected-node="selectedNode"
:start-expanded="expanded"
@selected="e => $emit('selected', e)"
@reordered="reordered"
@reorganized="reorganized"
@@ -38,7 +39,8 @@
group: {
type: String,
default: 'creatureProperties'
}
},
expanded: Boolean,
},
meteor: {
children(){

View File

@@ -93,6 +93,14 @@
:markdown="model.summary.value || model.summary.text"
/>
</template>
<v-divder v-if="model.children && model.children.length" />
<creature-properties-tree
style="width: 100%;"
expanded
:root="{collection: 'creatureProperties', id: model._id}"
@length="childrenLength = $event"
@selected="e => $emit('sub-click', e)"
/>
</div>
<card-highlight :active="hovering" />
</v-card>
@@ -109,6 +117,7 @@ import RollPopup from '/imports/ui/components/RollPopup.vue';
import MarkdownText from '/imports/ui/components/MarkdownText.vue';
import {snackbar} from '/imports/ui/components/snackbars/SnackbarQueue.js';
import CardHighlight from '/imports/ui/components/CardHighlight.vue';
import CreaturePropertiesTree from '/imports/ui/creature/creatureProperties/CreaturePropertiesTree.vue';
export default {
components: {
@@ -117,7 +126,8 @@ export default {
MarkdownText,
PropertyIcon,
RollPopup,
CardHighlight
CardHighlight,
CreaturePropertiesTree,
},
inject: {
context: {

View File

@@ -0,0 +1,36 @@
<template lang="html">
<div class="layout align-center justify-start">
<property-icon
v-if="!hideIcon"
class="mr-2"
:model="model"
:color="model.color"
:class="selected && 'primary--text'"
/>
<div class="text-no-wrap text-truncate">
<template v-if="model.dc && Number.isFinite(model.dc.value)">
DC {{ model.dc.value }}
</template>
{{ title }}
</div>
</div>
</template>
<script lang="js">
import treeNodeViewMixin from '/imports/ui/properties/treeNodeViews/treeNodeViewMixin.js';
import PROPERTIES from '/imports/constants/PROPERTIES.js';
export default {
mixins: [treeNodeViewMixin],
computed: {
title() {
let model = this.model;
if (!model) return;
if (model.name) return model.name;
if (model.stat) return model.stat;
let prop = PROPERTIES[model.type]
return prop && prop.name;
}
}
}
</script>

View File

@@ -7,6 +7,7 @@ import EffectTreeNode from '/imports/ui/properties/treeNodeViews/EffectTreeNode.
import ClassLevelTreeNode from '/imports/ui/properties/treeNodeViews/ClassLevelTreeNode.vue';
import ProficiencyTreeNode from '/imports/ui/properties/treeNodeViews/ProficiencyTreeNode.vue';
import ReferenceTreeNode from '/imports/ui/properties/treeNodeViews/ReferenceTreeNode.vue';
import SavingThrowTreeNode from '/imports/ui/properties/treeNodeViews/SavingThrowTreeNode.vue';
export default {
default: DefaultTreeNode,
@@ -18,4 +19,5 @@ export default {
item: ItemTreeNode,
proficiency: ProficiencyTreeNode,
reference: ReferenceTreeNode,
savingThrow: SavingThrowTreeNode,
}