add: detailed item page proto

v0.3
rrr-marble 4 years ago
parent c773b42182
commit f9c2518a02

@ -1,20 +1,95 @@
<template> <template>
<div> <div class="flex md6 lg4">
<va-card id="preview" class="content-container"></va-card> <va-inner-loading loading>
<va-card id="description" class="content-container"></va-card> <va-card id="preview" class="content-container">
<va-card id="details" class="content-container"></va-card> <img
<va-card id="map" class="content-container"></va-card> :src="`${this.baseURL}/static/previews/${this.itemDetails.fadr}+/${this.itemDetails.internal_id}.bmp`"
<va-card id="contact" class="content-container"></va-card> :alt="`${this.itemDetails.description}`"
/>
</va-card>
</va-inner-loading>
<va-card id="description" class="content-container">
<va-card-title>Description</va-card-title>
<va-card-content>{{ itemDetails.description }}</va-card-content>
</va-card>
<div class="flex md6 lg4">
<va-card id="details" class="content-container">
<va-card-title>Details</va-card-title>
<va-card-content>
<div class="va-table-responsive">
<table class="va-table va-table--striped">
<tbody>
<tr
v-for="[key, value] of Object.entries(this.itemDetails).filter(([k, _v]) => !(this.hidden.includes(k)))"
>
<td>{{ key }}</td>
<td>{{ value }}</td>
</tr>
</tbody>
</table>
</div>
</va-card-content>
</va-card>
</div>
<va-card id="map" class="content-container">
<map-component />
</va-card>
<va-card id="contact" class="content-container">
<va-card-title>Contact Sales Representative</va-card-title>
</va-card>
</div> </div>
</template> </template>
<script> <script>
import MapComponent from "./MapComponent.vue";
export default { export default {
name: "item-details", name: "item-details",
data() {
return {
itemDetails: {},
hidden: [
"fadr",
"internal_id",
"x_coord",
"y_coord",
"owner",
"ownercontacts",
"id"
],
itemPreview: {},
baseURL: "http://localhost:8080",
};
},
methods: {
async fetchItemDetails() {
const baseURL = "http://localhost:8080/api/v1";
fetch(`${baseURL}/item/${this.$route.params.id}`)
.then(res => res.json())
.then(data => this.itemDetails = data)
.catch((e) => console.log(e));
},
async fetchItemPreview() {
const baseURL = "http://localhost:8080/api/v1";
fetch(`${baseURL}/static/previews/${this.itemDetails.fadr}+/${this.itemDetails.internal_id}.bmp`)
.then(res => res.json())
.then(data => this.itemPreview = data)
.catch((e) => console.log(e));
}
},
created() {
this.fetchItemDetails();
},
components: { MapComponent }
} }
</script> </script>
<style lang="css"> <style lang="css" scoped>
.va-table-responsive {
overflow: auto;
--va-card-display: flex;
}
</style> </style>

@ -20,7 +20,9 @@ import {
VaListItemSection, VaListItemSection,
VaListItemLabel, VaListItemLabel,
VaCard, VaCard,
VaCardContent VaCardTitle,
VaCardContent,
VaInnerLoading,
} from 'vuestic-ui' } from 'vuestic-ui'
import 'vuestic-ui/dist/styles/essential.css' import 'vuestic-ui/dist/styles/essential.css'
import 'vuestic-ui/dist/styles/grid.css' import 'vuestic-ui/dist/styles/grid.css'
@ -55,7 +57,9 @@ app.use(createVuesticEssential({
VaListItemSection, VaListItemSection,
VaListItemLabel, VaListItemLabel,
VaCard, VaCard,
VaCardTitle,
VaCardContent, VaCardContent,
VaInnerLoading,
} }
})); }));

@ -23,39 +23,40 @@ export default {
sidebarItems: [ sidebarItems: [
{ {
title: "Preview", title: "Preview",
icon: "fact_check", icon: "image",
route: "item-details", route: "item-details",
hash: "#preview", hash: "#preview",
}, },
{ {
title: "Description", title: "Description",
icon: "dashboard", icon: "description",
route: "item-details", route: "item-details",
hash: "#description", hash: "#description",
}, },
{ {
title: "Details", title: "Details",
icon: "file_upload", icon: "summarize",
route: "item-details", route: "item-details",
hash: "#details", hash: "#details",
}, },
{ {
title: "Map", title: "Map",
icon: "file_upload", icon: "map",
route: "item-details", route: "item-details",
hash: "#map", hash: "#map",
}, },
{ {
title: "Contact", title: "Contact",
icon: "file_upload", icon: "contact_page",
route: "item-details", route: "item-details",
hash: "#contact", hash: "#contact",
}, },
], ],
itemDetails: {},
} }
}, },
} }
</script> </script>

Loading…
Cancel
Save