2022-09-22 07:10:08 -04:00
|
|
|
<template>
|
|
|
|
<div class="container-fluid">
|
|
|
|
<Navbar :user="user" />
|
|
|
|
<div class="container">
|
|
|
|
<router-view v-if="user"></router-view>
|
|
|
|
<Login :secret="secret" v-model:client="client" v-model:user="user" />
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
import Navbar from './Navbar.vue';
|
|
|
|
import Login from './Login.vue';
|
|
|
|
import RouteSchedule from './RouteSchedule.vue';
|
|
|
|
import RoutePatientLookup from './RoutePatientLookup.vue';
|
|
|
|
import RoutePatientDetail from './RoutePatientDetail.vue';
|
2022-09-23 23:59:55 -04:00
|
|
|
import RouteRecall from './RouteRecall.vue';
|
2022-09-22 07:10:08 -04:00
|
|
|
|
|
|
|
export default {
|
|
|
|
components: {
|
|
|
|
Navbar, Login
|
|
|
|
},
|
|
|
|
props: {
|
|
|
|
secret: String
|
|
|
|
},
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
client: null,
|
|
|
|
user: null,
|
|
|
|
heartbeat: null,
|
|
|
|
banner: '',
|
|
|
|
authenticated: false
|
|
|
|
};
|
|
|
|
},
|
|
|
|
computed: {
|
|
|
|
store: () => store
|
|
|
|
},
|
|
|
|
watch: {
|
|
|
|
async client(value) {
|
|
|
|
if(this.heartbeat) window.clearInterval(this.heartbeat);
|
|
|
|
else {
|
|
|
|
[
|
|
|
|
{ path: '/', component: RouteSchedule, props: { client: this.client } },
|
|
|
|
{ path: '/patient', component: RoutePatientLookup, props: { client: this.client } },
|
|
|
|
{ path: '/patient/:id', component: RoutePatientDetail, props: { client: this.client } },
|
2022-09-23 23:59:55 -04:00
|
|
|
{ path: '/recall', component: RouteRecall, props: { client: this.client } },
|
2022-09-22 07:10:08 -04:00
|
|
|
].forEach(route => this.$root.$router.addRoute(route));
|
|
|
|
await this.$root.$router.replace(this.$route);
|
|
|
|
}
|
|
|
|
this.heartbeat = await value.heartbeat();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
</script>
|