summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSanto Cariotti <santo@dcariotti.me>2021-03-24 20:51:40 +0100
committerSanto Cariotti <santo@dcariotti.me>2021-03-24 20:51:40 +0100
commitb8b7cd6876f72c6de16e47e8f5b5c4a3f5674560 (patch)
tree62825a0b60991682d5c6b401b195fe7f833c535d /src
parent452a0553aec3e7ae6de1421a3d2f18e5dc198d8f (diff)
feat: add repo page
Diffstat (limited to 'src')
-rw-r--r--src/router.js7
-rw-r--r--src/sass/_commit.sass2
-rw-r--r--src/sass/main.sass3
-rw-r--r--src/store.js10
-rw-r--r--src/views/Repository.vue59
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>