summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSanto Cariotti <santo@dcariotti.me>2021-03-23 21:30:34 +0100
committerSanto Cariotti <santo@dcariotti.me>2021-03-23 21:30:34 +0100
commit9bbff6134c7068567a7a38b2de13472bff4c73e9 (patch)
tree2a68867468ca56db3e08a3eda4bc63a5e933203f /src
parentfa76107eeca937667e10648e9bccb4decd343268 (diff)
feat: search page
Diffstat (limited to 'src')
-rw-r--r--src/router.js8
-rw-r--r--src/store.js8
-rw-r--r--src/views/Search.vue46
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>