diff options
author | Santo Cariotti <santo@dcariotti.me> | 2021-03-24 20:51:40 +0100 |
---|---|---|
committer | Santo Cariotti <santo@dcariotti.me> | 2021-03-24 20:51:40 +0100 |
commit | b8b7cd6876f72c6de16e47e8f5b5c4a3f5674560 (patch) | |
tree | 62825a0b60991682d5c6b401b195fe7f833c535d /src | |
parent | 452a0553aec3e7ae6de1421a3d2f18e5dc198d8f (diff) |
feat: add repo page
Diffstat (limited to 'src')
-rw-r--r-- | src/router.js | 7 | ||||
-rw-r--r-- | src/sass/_commit.sass | 2 | ||||
-rw-r--r-- | src/sass/main.sass | 3 | ||||
-rw-r--r-- | src/store.js | 10 | ||||
-rw-r--r-- | src/views/Repository.vue | 59 |
5 files changed, 81 insertions, 0 deletions
diff --git a/src/router.js b/src/router.js index 9be8616..0cfdc1e 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 Repository from '@/views/Repository.vue' import Search from '@/views/Search.vue' Vue.use(VueRouter) @@ -20,6 +21,12 @@ const routes = [ props: true }, { + path: '/repo/:user/:name', + name: 'Repository', + component: Repository, + props: true + }, + { path: '/search', name: 'Search', component: Search, diff --git a/src/sass/_commit.sass b/src/sass/_commit.sass index e3f3b2a..cc7312d 100644 --- a/src/sass/_commit.sass +++ b/src/sass/_commit.sass @@ -6,6 +6,8 @@ margin: 0 &:not(.no-hover):hover background-color: darken(#fbfcfc, 3%) + span.secondary + color: $secondary .head > div span diff --git a/src/sass/main.sass b/src/sass/main.sass index deab05d..ed7484c 100644 --- a/src/sass/main.sass +++ b/src/sass/main.sass @@ -11,3 +11,6 @@ body flex-direction: column-reverse > div margin-bottom: 42px + +.open-github + float: right diff --git a/src/store.js b/src/store.js index 1afad67..1483402 100644 --- a/src/store.js +++ b/src/store.js @@ -111,6 +111,16 @@ export default new Vuex.Store({ commit('load_commit', await response.json()); }) }, + // Get all commits from a repository + async get_repo_commits({commit}, data) { + commit('loading_state', true) + let path = `${this.state.api}/commit/?repository_user=${data.user}&repository_name=${data.name}` + await fetch(path) + .then(async response => { + commit('load_commits', await response.json()); + }) + commit('loading_state', false) + }, // Get email async get_email({commit}, data) { await fetch(`${this.state.api}/email/search/?q=${data.email}`) diff --git a/src/views/Repository.vue b/src/views/Repository.vue new file mode 100644 index 0000000..ade55d3 --- /dev/null +++ b/src/views/Repository.vue @@ -0,0 +1,59 @@ +<template lang="pug"> + main + header-blue + b-container(v-if="loading") + b-overlay(:show="true" spinner-large) + b-container(v-else) + .commit.no-hover + h1 {{ user }}/ + span.secondary {{ name }} + b-button.open-github( + :href="'https://github.com/'+user+'/'+name" + variant="outline-dark" target="_new" + ) Open on GitHub + i.fab.fa-github + section(v-if="commits.length > 0") + .commit.no-hover + h2 Commits found {{ (commits.length == 1000)?"1000+":commits.length }} + commit-card( + v-for="i in commits" :key="i.hash" :data="i" + :author="emails[i.author_email]" + :committer="emails[i.committer_email]" + :expand="true" + ) +</template> + +<script> +import HeaderBlue from '@/components/HeaderBlue'; +import Commit from '@/components/Commit'; + +export default { + name: "Repository", + props: ["user", "name"], + components: { + 'header-blue': HeaderBlue, + 'commit-card': Commit, + }, + data() { + return { + error404: false + } + }, + async mounted() { + this.$store.dispatch('set_loading', true); + this.$store.dispatch('get_repo_commits', {user: this.user, name: this.name}); + 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> |