Added more property viewers
This commit is contained in:
@@ -18,7 +18,6 @@ import { SpellSchema } from '/imports/api/properties/Spells.js';
|
||||
import { ContainerSchema } from '/imports/api/properties/Containers.js';
|
||||
import { ItemSchema } from '/imports/api/properties/Items.js';
|
||||
|
||||
|
||||
const librarySchemas = {
|
||||
action: ActionSchema,
|
||||
attribute: AttributeSchema,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import SimpleSchema from 'simpl-schema';
|
||||
import AdjustmentSchema from '/imports/api/creature/subSchemas/AdjustmentSchema.js';
|
||||
import StoredBuffSchema from '/imports/api/properties/Buffs.js';
|
||||
import { StoredBuffWithIdSchema } from '/imports/api/properties/Buffs.js';
|
||||
|
||||
/*
|
||||
* Actions are things a character can do
|
||||
@@ -58,7 +58,7 @@ let ActionSchema = new SimpleSchema({
|
||||
defaultValue: [],
|
||||
},
|
||||
'buffs.$': {
|
||||
type: StoredBuffSchema,
|
||||
type: StoredBuffWithIdSchema,
|
||||
},
|
||||
// Calculation of how many times this action can be used
|
||||
// Only set if this action tracks its own uses, rather than adjusting
|
||||
|
||||
@@ -2,10 +2,6 @@ import SimpleSchema from 'simpl-schema';
|
||||
import { EffectSchema } from '/imports/api/properties/Effects.js';
|
||||
|
||||
let BuffSchema = new SimpleSchema({
|
||||
_id: {
|
||||
type: String,
|
||||
regEx: SimpleSchema.RegEx.Id,
|
||||
},
|
||||
name: {
|
||||
type: String,
|
||||
optional: true,
|
||||
@@ -42,6 +38,13 @@ let StoredBuffSchema = new SimpleSchema({
|
||||
},
|
||||
}).extend(BuffSchema);
|
||||
|
||||
let StoredBuffWithIdSchema = new SimpleSchema({
|
||||
_id: {
|
||||
type: String,
|
||||
regEx: SimpleSchema.RegEx.Id,
|
||||
},
|
||||
}).extend(StoredBuffSchema);
|
||||
|
||||
let AppliedBuffSchema = new SimpleSchema({
|
||||
durationSpent: {
|
||||
type: Number,
|
||||
@@ -63,4 +66,4 @@ let AppliedBuffSchema = new SimpleSchema({
|
||||
},
|
||||
}).extend(BuffSchema);
|
||||
|
||||
export { AppliedBuffSchema, StoredBuffSchema };
|
||||
export { AppliedBuffSchema, StoredBuffSchema, StoredBuffWithIdSchema };
|
||||
|
||||
@@ -4,10 +4,6 @@ let FeatureSchema = new SimpleSchema({
|
||||
name: {
|
||||
type: String,
|
||||
},
|
||||
enabled: {
|
||||
type: Boolean,
|
||||
defaultValue: true,
|
||||
},
|
||||
description: {
|
||||
type: String,
|
||||
optional: true,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import SimpleSchema from 'simpl-schema';
|
||||
import AdjustmentSchema from '/imports/api/creature/subSchemas/AdjustmentSchema.js';
|
||||
import StoredBuffSchema from '/imports/api/properties/Buffs.js';
|
||||
import { StoredBuffWithIdSchema } from '/imports/api/properties/Buffs.js';
|
||||
|
||||
let RollChildrenSchema = new SimpleSchema({
|
||||
// The adjustments to be applied
|
||||
@@ -17,7 +17,7 @@ let RollChildrenSchema = new SimpleSchema({
|
||||
defaultValue: [],
|
||||
},
|
||||
'buffs.$': {
|
||||
type: StoredBuffSchema,
|
||||
type: StoredBuffWithIdSchema,
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
@@ -40,8 +40,10 @@
|
||||
EffectViewer,
|
||||
},
|
||||
props: {
|
||||
model: Object,
|
||||
required: true,
|
||||
model: {
|
||||
type: Object,
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
numberToSignedString,
|
||||
|
||||
76
app/imports/ui/properties/viewers/BuffViewer.vue
Normal file
76
app/imports/ui/properties/viewers/BuffViewer.vue
Normal file
@@ -0,0 +1,76 @@
|
||||
<template lang="html">
|
||||
<div class="attribute-viewer">
|
||||
<div v-if="model.value !== undefined">
|
||||
<div class="display-3" v-if="model.damage !== undefined">
|
||||
{{model.value - model.damage}} / {{model.value}}
|
||||
</div>
|
||||
<div v-else>
|
||||
{{model.value}}
|
||||
</div>
|
||||
</div>
|
||||
<h1 class="display-1">
|
||||
{{model.name}}
|
||||
</h1>
|
||||
<effect-viewer
|
||||
class="mb-3"
|
||||
operation="base"
|
||||
v-for="effect in model.effects"
|
||||
:model="effect"
|
||||
/>
|
||||
<div v-if="model.duration">
|
||||
{{model.duration}}
|
||||
</div>
|
||||
<p v-if="model.description">
|
||||
{{model.description}}
|
||||
</p>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import numberToSignedString from '/imports/ui/utility/numberToSignedString.js';
|
||||
import EffectViewer from '/imports/ui/properties/viewers/EffectViewer.vue';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
EffectViewer,
|
||||
},
|
||||
props: {
|
||||
model: {
|
||||
type: Object,
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
numberToSignedString,
|
||||
},
|
||||
computed: {
|
||||
reset(){
|
||||
let reset = this.model.reset
|
||||
if (reset === 'shortRest'){
|
||||
return `Reset${
|
||||
this.model.resetMultiplier && ' x' + this.model.resetMultiplier
|
||||
} on a short rest`;
|
||||
} else if (reset === 'longRest'){
|
||||
return `Reset${
|
||||
this.model.resetMultiplier && ' x' + this.model.resetMultiplier
|
||||
} on a long rest`;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="css" scoped>
|
||||
.ability-value {
|
||||
font-weight: 600;
|
||||
font-size: 24px !important;
|
||||
color: rgba(0, 0, 0, 0.54);
|
||||
}
|
||||
.mod, .ability-value {
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
}
|
||||
.attribute-value {
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
33
app/imports/ui/properties/viewers/ClassLevelViewer.vue
Normal file
33
app/imports/ui/properties/viewers/ClassLevelViewer.vue
Normal file
@@ -0,0 +1,33 @@
|
||||
<template lang="html">
|
||||
<div class="class-level-viewer">
|
||||
<h1 class="display-1">
|
||||
{{model.name}}
|
||||
<span
|
||||
class="display-2"
|
||||
v-if="model.level"
|
||||
>
|
||||
{{model.level}}
|
||||
</span>
|
||||
</h1>
|
||||
<p class="my-2">
|
||||
<code>{{model.variableName}}</code>
|
||||
</p>
|
||||
<p class="my-2" v-if="model.baseClass">
|
||||
Base class: <code>{{model.baseClass}}</code>
|
||||
</p>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
model: {
|
||||
type: Object,
|
||||
required: true,
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="css" scoped>
|
||||
</style>
|
||||
36
app/imports/ui/properties/viewers/ContainerViewer.vue
Normal file
36
app/imports/ui/properties/viewers/ContainerViewer.vue
Normal file
@@ -0,0 +1,36 @@
|
||||
<template lang="html">
|
||||
<div class="container-viewer">
|
||||
<h1 class="display-1">
|
||||
{{model.name}}
|
||||
</h1>
|
||||
<div v-if="!model.carried" class="caption">
|
||||
Not carried
|
||||
</div>
|
||||
<div v-if="model.contentsWeightless" class="caption">
|
||||
Contents are weightless
|
||||
</div>
|
||||
<div>
|
||||
Weight: {{model.weight}} lbs
|
||||
</div>
|
||||
<div>
|
||||
Value: {{model.value}} gp
|
||||
</div>
|
||||
<p v-if="model.description">
|
||||
{{model.description}}
|
||||
</p>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
model: {
|
||||
type: Object,
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="css" scoped>
|
||||
</style>
|
||||
33
app/imports/ui/properties/viewers/DamageMultiplierViewer.vue
Normal file
33
app/imports/ui/properties/viewers/DamageMultiplierViewer.vue
Normal file
@@ -0,0 +1,33 @@
|
||||
<template lang="html">
|
||||
<div>
|
||||
<h1 class="display-1">
|
||||
{{model.name}}
|
||||
</h1>
|
||||
<div>
|
||||
{{model.damageType}} {{operation}}
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
model: {
|
||||
type: Object,
|
||||
required: true,
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
operation(){
|
||||
switch (this.model.value){
|
||||
case 0: return "immunity";
|
||||
case 0.5: return "resistance";
|
||||
case 2: return "vulnerability";
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="css" scoped>
|
||||
</style>
|
||||
36
app/imports/ui/properties/viewers/ExperienceViewer.vue
Normal file
36
app/imports/ui/properties/viewers/ExperienceViewer.vue
Normal file
@@ -0,0 +1,36 @@
|
||||
<template lang="html">
|
||||
<div class="experience-viewer">
|
||||
<h1 class="display-1" v-if="model.value">
|
||||
{{model.value}} XP
|
||||
</h1>
|
||||
<div class="headline layout row mb-3">
|
||||
<div>
|
||||
{{model.name}}
|
||||
</div>
|
||||
<v-spacer/>
|
||||
<div>
|
||||
{{model.worldDate}}
|
||||
</div>
|
||||
</div>
|
||||
<p>
|
||||
{{model.date}}
|
||||
</p>
|
||||
<p v-if="model.description">
|
||||
{{model.description}}
|
||||
</p>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
model: {
|
||||
type: Object,
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="css" scoped>
|
||||
</style>
|
||||
27
app/imports/ui/properties/viewers/FeatureViewer.vue
Normal file
27
app/imports/ui/properties/viewers/FeatureViewer.vue
Normal file
@@ -0,0 +1,27 @@
|
||||
<template lang="html">
|
||||
<div class="feature-viewer">
|
||||
<h1 class="display-1">
|
||||
{{model.name}}
|
||||
</h1>
|
||||
<div v-if="model.alwaysEnabled" class="caption">
|
||||
Always enabled
|
||||
</div>
|
||||
<p v-if="model.description">
|
||||
{{model.description}}
|
||||
</p>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
model: {
|
||||
type: Object,
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="css" scoped>
|
||||
</style>
|
||||
21
app/imports/ui/properties/viewers/FolderViewer.vue
Normal file
21
app/imports/ui/properties/viewers/FolderViewer.vue
Normal file
@@ -0,0 +1,21 @@
|
||||
<template lang="html">
|
||||
<div class="folder-viewer">
|
||||
<h1 class="display-1">
|
||||
{{model.name}}
|
||||
</h1>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
model: {
|
||||
type: Object,
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="css" scoped>
|
||||
</style>
|
||||
24
app/imports/ui/properties/viewers/NoteViewer.vue
Normal file
24
app/imports/ui/properties/viewers/NoteViewer.vue
Normal file
@@ -0,0 +1,24 @@
|
||||
<template lang="html">
|
||||
<div class="note-viewer">
|
||||
<h1 class="display-1">
|
||||
{{model.name}}
|
||||
</h1>
|
||||
<p v-if="model.description">
|
||||
{{model.description}}
|
||||
</p>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
model: {
|
||||
type: Object,
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="css" scoped>
|
||||
</style>
|
||||
@@ -1,15 +1,15 @@
|
||||
//import ActionViewer from '/imports/ui/properties/viewers/ActionViewer.vue';
|
||||
import AttributeViewer from '/imports/ui/properties/viewers/AttributeViewer.vue';
|
||||
//import BuffViewer from '/imports/ui/properties/viewers/BuffViewer.vue';
|
||||
//import ContainerViewer from '/imports/ui/properties/viewers/ContainerViewer.vue';
|
||||
//import ClassLevelViewer from '/imports/ui/properties/viewers/ClassLevelViewer.vue';
|
||||
//import DamageMultiplierViewer from '/imports/ui/properties/viewers/DamageMultiplierViewer.vue';
|
||||
//import EffectViewer from '/imports/ui/properties/viewers/EffectViewer.vue';
|
||||
//import ExperienceViewer from '/imports/ui/properties/viewers/ExperienceViewer.vue';
|
||||
//import FeatureViewer from '/imports/ui/properties/viewers/FeatureViewer.vue';
|
||||
//import FolderViewer from '/imports/ui/properties/viewers/FolderViewer.vue';
|
||||
import BuffViewer from '/imports/ui/properties/viewers/BuffViewer.vue';
|
||||
import ContainerViewer from '/imports/ui/properties/viewers/ContainerViewer.vue';
|
||||
import ClassLevelViewer from '/imports/ui/properties/viewers/ClassLevelViewer.vue';
|
||||
import DamageMultiplierViewer from '/imports/ui/properties/viewers/DamageMultiplierViewer.vue';
|
||||
import EffectViewer from '/imports/ui/properties/viewers/EffectViewer.vue';
|
||||
import ExperienceViewer from '/imports/ui/properties/viewers/ExperienceViewer.vue';
|
||||
import FeatureViewer from '/imports/ui/properties/viewers/FeatureViewer.vue';
|
||||
import FolderViewer from '/imports/ui/properties/viewers/FolderViewer.vue';
|
||||
//import ItemViewer from '/imports/ui/properties/viewers/ItemViewer.vue';
|
||||
//import NoteViewer from '/imports/ui/properties/viewers/NoteViewer.vue';
|
||||
import NoteViewer from '/imports/ui/properties/viewers/NoteViewer.vue';
|
||||
//import ProficiencyViewer from '/imports/ui/properties/viewers/ProficiencyViewer.vue';
|
||||
//import RollViewer from '/imports/ui/properties/viewers/RollViewer.vue';
|
||||
//import SkillViewer from '/imports/ui/properties/viewers/SkillViewer.vue';
|
||||
@@ -19,16 +19,16 @@ import AttributeViewer from '/imports/ui/properties/viewers/AttributeViewer.vue'
|
||||
export default {
|
||||
// action: ActionViewer,
|
||||
attribute: AttributeViewer,
|
||||
// buff: BuffViewer,
|
||||
// container: ContainerViewer,
|
||||
// classLevel: ClassLevelViewer,
|
||||
// damageMultiplier: DamageMultiplierViewer,
|
||||
// experience:ExperienceViewer,
|
||||
// effect: EffectViewer,
|
||||
// feature: FeatureViewer,
|
||||
// folder: FolderViewer,
|
||||
buff: BuffViewer,
|
||||
container: ContainerViewer,
|
||||
classLevel: ClassLevelViewer,
|
||||
damageMultiplier: DamageMultiplierViewer,
|
||||
experience: ExperienceViewer,
|
||||
effect: EffectViewer,
|
||||
feature: FeatureViewer,
|
||||
folder: FolderViewer,
|
||||
// item: ItemViewer,
|
||||
// note: NoteViewer,
|
||||
note: NoteViewer,
|
||||
// proficiency: ProficiencyViewer,
|
||||
// roll: RollViewer,
|
||||
// skill: SkillViewer,
|
||||
|
||||
Reference in New Issue
Block a user