diff --git a/app/imports/ui/creature/character/characterSheetTabs/InventoryTab.vue b/app/imports/ui/creature/character/characterSheetTabs/InventoryTab.vue index 1b79ed03..4fb921e4 100644 --- a/app/imports/ui/creature/character/characterSheetTabs/InventoryTab.vue +++ b/app/imports/ui/creature/character/characterSheetTabs/InventoryTab.vue @@ -15,7 +15,7 @@ - {{ creature.denormalizedStats.weightCarried || 0 }} lb + {{ weightCarried }} lb @@ -107,6 +107,7 @@ import ItemList from '/imports/ui/properties/components/inventory/ItemList.vue'; import getParentRefByTag from '/imports/api/creature/creatureProperties/methods/getParentRefByTag.js'; import BUILT_IN_TAGS from '/imports/constants/BUILT_IN_TAGS.js'; import CoinValue from '/imports/ui/components/CoinValue.vue'; +import stripFloatingPointOddities from '/imports/ui/utility/stripFloatingPointOddities.js'; export default { components: { @@ -207,6 +208,11 @@ export default { containerIds(){ return this.containers.map(container => container._id); }, + weightCarried(){ + return stripFloatingPointOddities( + this.creature.denormalizedStats.weightCarried || 0 + ); + }, }, methods: { clickProperty(_id){ diff --git a/app/imports/ui/properties/components/inventory/ContainerCard.vue b/app/imports/ui/properties/components/inventory/ContainerCard.vue index 7838a746..22492234 100644 --- a/app/imports/ui/properties/components/inventory/ContainerCard.vue +++ b/app/imports/ui/properties/components/inventory/ContainerCard.vue @@ -17,7 +17,7 @@ > $vuetify.icons.weight - {{ (model.contentsWeightless ? 0 : model.contentsWeight || 0) + (model.weight || 0) }} + {{ weight }} @@ -49,6 +49,7 @@ import ToolbarCard from '/imports/ui/components/ToolbarCard.vue'; import ItemList from '/imports/ui/properties/components/inventory/ItemList.vue'; import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties.js'; import CoinValue from '/imports/ui/components/CoinValue.vue'; +import stripFloatingPointOddities from '/imports/ui/utility/stripFloatingPointOddities.js'; export default { components: { @@ -62,6 +63,20 @@ export default { required: true, }, }, + computed: { + weight(){ + const contentWeight = this.model.contentsWeightless ? + 0 : + this.model.contentsWeight || 0; + const ownWeight = this.model.weight || 0; + return stripFloatingPointOddities(contentWeight + ownWeight); + }, + value(){ + const contentValue = this.model.contentsValue || 0; + const ownValue = this.model.value || 0; + return contentValue + ownValue; + } + }, methods: { clickContainer(_id){ this.$store.commit('pushDialogStack', { diff --git a/app/imports/ui/properties/viewers/ItemViewer.vue b/app/imports/ui/properties/viewers/ItemViewer.vue index b6adc5ee..32beb2bf 100644 --- a/app/imports/ui/properties/viewers/ItemViewer.vue +++ b/app/imports/ui/properties/viewers/ItemViewer.vue @@ -134,6 +134,7 @@ import propertyViewerMixin from '/imports/ui/properties/viewers/shared/propertyV import CoinValue from '/imports/ui/components/CoinValue.vue'; import IncrementButton from '/imports/ui/components/IncrementButton.vue'; import adjustQuantity from '/imports/api/creature/creatureProperties/methods/adjustQuantity.js'; +import stripFloatingPointOddities from '/imports/ui/utility/stripFloatingPointOddities.js'; export default { components:{ @@ -146,10 +147,10 @@ export default { }, computed:{ totalValue(){ - return this.model.value * this.model.quantity; + return stripFloatingPointOddities(this.model.value * this.model.quantity); }, totalWeight(){ - return this.model.weight * this.model.quantity; + return stripFloatingPointOddities(this.model.weight * this.model.quantity); }, }, methods: { diff --git a/app/imports/ui/utility/stripFloatingPointOddities.js b/app/imports/ui/utility/stripFloatingPointOddities.js new file mode 100644 index 00000000..8e55685c --- /dev/null +++ b/app/imports/ui/utility/stripFloatingPointOddities.js @@ -0,0 +1,3 @@ +export default function stripFloatingPointOddities(num, precision = 12){ + return +parseFloat(num.toPrecision(precision)) +}