diff options
author | Santo Cariotti <santo@dcariotti.me> | 2021-03-23 21:30:34 +0100 |
---|---|---|
committer | Santo Cariotti <santo@dcariotti.me> | 2021-03-23 21:30:34 +0100 |
commit | 9bbff6134c7068567a7a38b2de13472bff4c73e9 (patch) | |
tree | 2a68867468ca56db3e08a3eda4bc63a5e933203f | |
parent | fa76107eeca937667e10648e9bccb4decd343268 (diff) |
feat: search page
-rw-r--r-- | src/router.js | 8 | ||||
-rw-r--r-- | src/store.js | 8 | ||||
-rw-r--r-- | src/views/Search.vue | 46 |
3 files changed, 59 insertions, 3 deletions
diff --git a/src/router.js b/src/router.js index 9363d15..9be8616 100644 --- a/src/router.js +++ b/src/router.js @@ -3,6 +3,7 @@ import VueRouter from 'vue-router' import Home from '@/views/Home.vue' import Commit from '@/views/Commit.vue' +import Search from '@/views/Search.vue' Vue.use(VueRouter) @@ -17,7 +18,12 @@ const routes = [ name: 'Commit', component: Commit, props: true - } + }, + { + path: '/search', + name: 'Search', + component: Search, + }, ] const router = new VueRouter({ diff --git a/src/store.js b/src/store.js index 98a4417..1afad67 100644 --- a/src/store.js +++ b/src/store.js @@ -69,9 +69,13 @@ export default new Vuex.Store({ }, actions: { // Get all commits from the api backend - async get_commits({commit}) { + async get_commits({commit}, query) { commit('loading_state', true) - await fetch(`${this.state.api}/commit/`) + let path = `${this.state.api}/commit/` + if(query) { + path += `?q=${query}` + } + await fetch(path) .then(async response => { commit('load_commits', await response.json()); }) diff --git a/src/views/Search.vue b/src/views/Search.vue new file mode 100644 index 0000000..c173567 --- /dev/null +++ b/src/views/Search.vue @@ -0,0 +1,46 @@ +<template lang="pug"> + main + header-blue + b-container(v-if="loading") + b-overlay(:show="true" spinner-large) + b-container(v-else) + .commit + h2 Commits found {{ commits.length }} + .commit(style="padding: 50px" v-if="loading") + b-overlay(:show="true" spinner-large) + commit-card( + v-else + v-for="i in commits" :key="i.hash" :data="i" + :author="emails[i.author_email]" + :committer="emails[i.committer_email]" + ) +</template> + +<script> +import HeaderBlue from '@/components/HeaderBlue'; +import Commit from '@/components/Commit'; + +export default { + name: "Commit", + props: ["hash"], + components: { + 'header-blue': HeaderBlue, + 'commit-card': Commit, + }, + mounted() { + this.$store.dispatch('get_commits', this.$route.query.q); + this.$store.dispatch('get_emails'); + }, + computed: { + loading: function() { + return this.$store.getters.loading; + }, + commits: function() { + return this.$store.getters.commits; + }, + emails: function() { + return this.$store.getters.emails; + }, + }, +} +</script> |