Skip to content

Instantly share code, notes, and snippets.

@fbryo21
Created March 12, 2020 02:20
Show Gist options
  • Save fbryo21/63e254260e6806500f42037d84404358 to your computer and use it in GitHub Desktop.
Save fbryo21/63e254260e6806500f42037d84404358 to your computer and use it in GitHub Desktop.
an employee management app
import Vue from 'vue'
import Router from 'vue-router'
import Home from '@/components/Home'
import ViewEmployee from '@/components/ViewEmployee'
import NewEmployee from '@/components/NewEmployee'
import EditEmployee from '@/components/EditEmployee'
Vue.use(Router)
export default new Router({
routes: [
{
path: '/',
name: 'Home',
component: Home
},
{
path: '/new',
name: 'new-employee',
component: NewEmployee
},
{
path: '/:employee_id',
name: 'view-employee',
component: ViewEmployee
},
{
path: '/edit/:employee_id',
name: 'edit-employee',
component: EditEmployee
}
]
})
<template>
<div id="view-employee">
<ul class="collection with-header">
<li class="collection-header"><h4>{{name}}</h4></li>
<li class="collection-item">Employee ID#: {{employee_id}}</li>
<li class="collection-item">Department: {{dept}}</li>
<li class="collection-item">Position: {{position}}</li>
</ul>
<router-link to="/" class="btn grey">Back</router-link>
<button @click="deleteEmployee" class="btn red">Delete</button>
<div class="fixed-action-btn">
<router-link v-bind:to="{ name: 'edit-employee', params: { employee_id: employee_id }}" class="btn-floating btn-large red">
<i class="fa fa-pencil"></i>
</router-link>
</div>
</div>
</template>
<script>
import db from './firebaseInit'
export default {
name: 'view-employee',
data () {
return {
employee_id: null,
name: null,
dept: null,
position: null
}
},
beforeRouteEnter (to, from, next) {
db.collection('employees').where('employee_id', '==', to.params.employee_id).get().then((querySnapshot) => {
querySnapshot.forEach((doc) => {
next(vm => {
vm.employee_id = doc.data().employee_id
vm.name = doc.data().name
vm.dept = doc.data().dept
vm.position = doc.data().position
})
})
})
},
watch: {
'$route': 'fetchData'
},
methods: {
fetchData () {
db.collection('employees').where('employee_id', '==', this.$route.params.employee_id).get().then((querySnapshot) => {
querySnapshot.forEach((doc) => {
this.employee_id = doc.data().employee_id
this.name = doc.data().name
this.dept = doc.data().dept
this.position = doc.data().position
})
})
},
deleteEmployee () {
if(confirm ('Are you sure?')) {
db.collection('employees').where('employee_id', '==', this.$route.params.employee_id).get().then((querySnapshot) => {
querySnapshot.forEach((doc) => {
doc.ref.delete();
this.$router.push('/')
})
})
}
}
}
}
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment