|
|
@ -4,65 +4,38 @@ |
|
|
|
<div class="col-12"> |
|
|
|
<div class="col-12"> |
|
|
|
<div class="float-end" id="sort-buttons"> |
|
|
|
<div class="float-end" id="sort-buttons"> |
|
|
|
<div class="pixel-border-static" v-on:click="$store.commit('toggleGrouping')"> |
|
|
|
<div class="pixel-border-static" v-on:click="$store.commit('toggleGrouping')"> |
|
|
|
Group by category |
|
|
|
{{ $store.state.groupInventory ? 'Group by category' : 'List all'}} |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<div class="pixel-border-static" v-on:click="$store.commit('sortInventory')"> |
|
|
|
<div class="pixel-border-static" v-on:click="$store.commit('sortInventory')"> |
|
|
|
Sort {{ $store.state.inventorySortDesc ? 'Z-A' : 'A-Z' }} |
|
|
|
{{ $store.state.inventorySortDesc ? 'A-Z' : 'Z-A' }} |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="pixel-border-static" v-on:click="$store.commit('sortInventoryByQuantity')"> |
|
|
|
|
|
|
|
QNTY |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<template v-if="$store.state.groupInventory"> |
|
|
|
<template v-if="$store.state.groupInventory"> |
|
|
|
<template v-if="$store.getters.getSeedsInInventory.length > 0"> |
|
|
|
<template v-for="category in categories" v-bind:key="category.name"> |
|
|
|
<div class="col-12 inventory-header"> |
|
|
|
<template v-if="category.items.length > 0"> |
|
|
|
<h5>Seeds</h5> |
|
|
|
<div class="col-12 inventory-header"> |
|
|
|
</div> |
|
|
|
<h5>{{ category.name }}</h5> |
|
|
|
<div class="col-6" |
|
|
|
|
|
|
|
v-for="item in $store.getters.getSeedsInInventory" |
|
|
|
|
|
|
|
v-bind:key="item" |
|
|
|
|
|
|
|
data-bs-dismiss="modal"> |
|
|
|
|
|
|
|
<div :class="'inventory-item ' + getFrameClass(item.type)"> |
|
|
|
|
|
|
|
<div class="float-end"> |
|
|
|
|
|
|
|
<img :src="item.icon" :alt="item.name" class="item-icon"> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
{{ item.name }}<br/> |
|
|
|
|
|
|
|
x{{ item.quantity }} |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
</template> |
|
|
|
|
|
|
|
<template v-if="$store.getters.getFieldProductsInInventory.length > 0"> |
|
|
|
|
|
|
|
<div class="col-12 inventory-header"> |
|
|
|
|
|
|
|
<h5>Field products</h5> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="col-6" |
|
|
|
|
|
|
|
v-for="item in $store.getters.getFieldProductsInInventory" |
|
|
|
|
|
|
|
v-bind:key="item" |
|
|
|
|
|
|
|
data-bs-dismiss="modal"> |
|
|
|
|
|
|
|
<div :class="'inventory-item ' + getFrameClass(item.type)"> |
|
|
|
|
|
|
|
<div class="float-end"> |
|
|
|
|
|
|
|
<img :src="item.icon" :alt="item.name" class="item-icon"> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
{{ item.name }}<br/> |
|
|
|
|
|
|
|
x{{ item.quantity }} |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
</template> |
|
|
|
<div class="col-6" |
|
|
|
<template v-if="$store.getters.getAnimalProductsInInventory.length > 0"> |
|
|
|
v-for="item in category.items" |
|
|
|
<div class="col-12 inventory-header"> |
|
|
|
v-bind:key="item" |
|
|
|
<h5>Animal products</h5> |
|
|
|
data-bs-dismiss="modal"> |
|
|
|
</div> |
|
|
|
<div :class="'inventory-item ' + getFrameClass(item.type)" v-on:click="showItemInfo(item)"> |
|
|
|
<div class="col-6" |
|
|
|
<div class="float-end"> |
|
|
|
v-for="item in $store.getters.getAnimalProductsInInventory" |
|
|
|
<img :src="item.icon" :alt="item.name" class="item-icon"> |
|
|
|
v-bind:key="item" |
|
|
|
</div> |
|
|
|
data-bs-dismiss="modal"> |
|
|
|
{{ item.name }}<br/> |
|
|
|
<div :class="'inventory-item ' + getFrameClass(item.type)"> |
|
|
|
x{{ item.quantity }} |
|
|
|
<div class="float-end"> |
|
|
|
|
|
|
|
<img :src="item.icon" :alt="item.name" class="item-icon"> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
{{ item.name }}<br/> |
|
|
|
|
|
|
|
x{{ item.quantity }} |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
<template v-else> |
|
|
|
<template v-else> |
|
|
@ -70,7 +43,7 @@ |
|
|
|
v-for="item in $store.getters.getInventoryWithItemData" |
|
|
|
v-for="item in $store.getters.getInventoryWithItemData" |
|
|
|
v-bind:key="item" |
|
|
|
v-bind:key="item" |
|
|
|
data-bs-dismiss="modal"> |
|
|
|
data-bs-dismiss="modal"> |
|
|
|
<div :class="'inventory-item ' + getFrameClass(item.type)"> |
|
|
|
<div :class="'inventory-item ' + getFrameClass(item.type)" v-on:click="showItemInfo(item)"> |
|
|
|
<div class="float-end"> |
|
|
|
<div class="float-end"> |
|
|
|
<img :src="item.icon" :alt="item.name" class="item-icon"> |
|
|
|
<img :src="item.icon" :alt="item.name" class="item-icon"> |
|
|
|
</div> |
|
|
|
</div> |
|
|
@ -83,17 +56,98 @@ |
|
|
|
Your inventory is empty. |
|
|
|
Your inventory is empty. |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="modal fade" id="itemInfoModal" tabindex="-1" aria-labelledby="itemInfoModalLabel" aria-hidden="true"> |
|
|
|
|
|
|
|
<div class="modal-dialog modal-dialog-centered"> |
|
|
|
|
|
|
|
<div class="modal-content steel-border" v-if="selectedItem"> |
|
|
|
|
|
|
|
<div class="modal-header"> |
|
|
|
|
|
|
|
<div class="float-start"> |
|
|
|
|
|
|
|
<img :src="selectedItem.icon" :alt="selectedItem.name" class="item-icon"> |
|
|
|
|
|
|
|
{{ selectedItem.name }} |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="modal-body" v-if="selectedItem"> |
|
|
|
|
|
|
|
<div class="row"> |
|
|
|
|
|
|
|
<div class="col-12" v-if="selectedItem.description" v-html="selectedItem.description"> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="col-12" v-if="selectedItem.cropData"> |
|
|
|
|
|
|
|
<div class="float-end"> |
|
|
|
|
|
|
|
<img :src="selectedSeedFieldProductIcon" alt=""> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
<small class="text-muted">Seed info</small><br/> |
|
|
|
|
|
|
|
Sells for <span class="number-marker">{{ selectedItem.economy.sell }}$</span> when harvested.<br/> |
|
|
|
|
|
|
|
Takes <span class="number-marker">{{ selectedItem.cropData.timeToGrow }}</span> minutes to grow. |
|
|
|
|
|
|
|
<hr> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="col-12" v-if="selectedItem.cropData"> |
|
|
|
|
|
|
|
<div class="float-end"> |
|
|
|
|
|
|
|
<img :src="selectedSeedFieldProductIcon" alt=""> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
<small class="text-muted">Seed info</small><br/> |
|
|
|
|
|
|
|
Sells for <span class="number-marker">{{ selectedItem.economy.sell }}$</span> when harvested.<br/> |
|
|
|
|
|
|
|
Takes <span class="number-marker">{{ selectedItem.cropData.timeToGrow }}</span> minutes to grow. |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="modal-footer"> |
|
|
|
|
|
|
|
<div class="float-end"> |
|
|
|
|
|
|
|
<div class="btn-pixel" data-bs-dismiss="modal"> |
|
|
|
|
|
|
|
Close |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
|
|
<script> |
|
|
|
<script> |
|
|
|
import {ItemTypeFrameClasses} from "@/data/ItemTypes"; |
|
|
|
import {ItemTypeFrameClasses, ItemTypes} from "@/data/ItemTypes"; |
|
|
|
|
|
|
|
import {openModal} from "@/helpers"; |
|
|
|
|
|
|
|
import ItemService from "@/services/ItemService"; |
|
|
|
|
|
|
|
|
|
|
|
export default { |
|
|
|
export default { |
|
|
|
name: "InventoryView", |
|
|
|
name: "InventoryView", |
|
|
|
|
|
|
|
data() { |
|
|
|
|
|
|
|
return { |
|
|
|
|
|
|
|
selectedItem: null, |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
computed: { |
|
|
|
|
|
|
|
categories() { |
|
|
|
|
|
|
|
return [ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
name: 'Seeds', |
|
|
|
|
|
|
|
type: ItemTypes.Seeds, |
|
|
|
|
|
|
|
items: this.$store.getters.getSeedsInInventory |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
name: 'Field products', |
|
|
|
|
|
|
|
type: ItemTypes.FieldProducts, |
|
|
|
|
|
|
|
items: this.$store.getters.getFieldProductsInInventory |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
name: 'Animal products', |
|
|
|
|
|
|
|
type: ItemTypes.AnimalProducts, |
|
|
|
|
|
|
|
items: this.$store.getters.getAnimalProductsInInventory |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
] |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
selectedSeedFieldProductIcon() { |
|
|
|
|
|
|
|
let product = ItemService.getItemByID(this.selectedItem.cropData.product_id); |
|
|
|
|
|
|
|
return product.icon; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}, |
|
|
|
methods: { |
|
|
|
methods: { |
|
|
|
getFrameClass(type) { |
|
|
|
getFrameClass(type) { |
|
|
|
return ItemTypeFrameClasses[type]; |
|
|
|
return ItemTypeFrameClasses[type]; |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
showItemInfo(item) { |
|
|
|
|
|
|
|
this.selectedItem = item; |
|
|
|
|
|
|
|
openModal('itemInfoModal'); |
|
|
|
|
|
|
|
console.log(item); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -129,7 +183,7 @@ export default { |
|
|
|
color: white; |
|
|
|
color: white; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.pixel-border-static { |
|
|
|
#sort-buttons .pixel-border-static, #sort-buttons .pixel-border-red, #sort-buttons .pixel-border-green { |
|
|
|
margin-left: 0.3em; |
|
|
|
margin-left: 0.3em; |
|
|
|
display: inline-block; |
|
|
|
display: inline-block; |
|
|
|
background-color: white; |
|
|
|
background-color: white; |
|
|
|