<template> <div class="panel"> <side-bar :role="user.status" :active="active"> </side-bar> <div v-if="loading" class="page loading"> <spinner></spinner> </div> <home :user="user" v-else-if="active == 1" /> <new-estimate :user="user" :fees="fees" v-else-if="active == 2" /> <estimates :user="user" :fees="fees" v-else-if="active == 3" /> <settings :user="user" v-else-if="active == 4" /> <sign-out :user="user" v-else-if="active == 5" /> </div> </template> <script> import SideBar from "./sidebar.vue" import Spinner from "./spinner.vue" import Home from "./home.vue" import NewEstimate from "./new.vue" import Estimates from "./estimates.vue" import Settings from "./settings.vue" import SignOut from "./sign-out.vue" const user = { firstName: "test", lastName: "user", id: 12, status: 1, } // The default fees of a new loan. Percentage values take precedent over amounts const fees = [ { name: 'Processing fee', type: 'Lender Fees', amount: 500, perc: 0 }, { name: 'Underwriting fee', type: 'Lender Fees', amount: 500, perc: 0 }, { name: 'Credit Report', type: 'Services Required by Lender', amount: 52.50 }, { name: 'Appraisal', type: 'Services Required by Lender', amount: 52.50 }, { name: 'Title Services', type: 'Title Company', amount: 1000 }, { name: 'Lender\'s Title Insurance', type: 'Title Company', amount: 1599 }, { name: 'Owner\'s Title Insurance', type: 'Title Company', amount: 451.00 }, { name: 'Recording Charges', type: 'Government', amount: 99.00 }, { name: 'State Tax', type: 'Government', amount: 2411.00 }, ] // Used to check the current section of the app generally without a regex match // each time. function active() { if (this.hash == '' || this.hash == '#') { return 1 } else if (/^#new\/?/.exec(this.hash)) { return 2 } else if (/^#estimates\/?/.exec(this.hash)) { return 3 } else if (/^#settings\/?/.exec(this.hash)) { return 4 } else if (/^#sign-out\/?/.exec(this.hash)) { return 5 } else { return 0 } } export default { components: { SideBar, Spinner, Home, NewEstimate, Estimates, Settings, SignOut }, computed: { active }, data() { return { loading: false, user: user, hash: window.location.hash, fees: fees } }, created() { window.onhashchange = () => this.hash = window.location.hash } } </script>