feat: contributors + changelogs in about page

Signed-off-by: Corentin Thomasset <corentin.thomasset74@gmail.com>
This commit is contained in:
Corentin Thomasset 2020-06-08 00:31:07 +02:00
parent b013903c41
commit fba0701df2
5 changed files with 146 additions and 14 deletions

View file

@ -0,0 +1,49 @@
<template>
<div class="github-contributor">
<div v-if="loading" class="text-center pt-3 pb-3">
<v-progress-circular indeterminate />
</div>
<v-list v-else class="pa-0">
<v-list-item v-for="(contributor, i) in contributors" :key="i" :href="contributor.html_url">
<v-list-item-avatar>
<v-img :src="contributor.avatar_url"></v-img>
</v-list-item-avatar>
<v-list-item-content>
{{contributor.login}}
</v-list-item-content>
</v-list-item>
</v-list>
</div>
</template>
<script>
const baseUrl = 'https://api.github.com/repos/$repo$/contributors'
import axios from 'axios'
export default {
name: "GithubContributors",
props: ['repo'],
data: () => ({
contributors: [],
loading: true,
hasError: false
}),
mounted() {
const url = baseUrl.replace('$repo$', this.repo)
axios
.get(url)
.then(({data}) => {
this.contributors = data.sort((a, b) => a.contributions - b.contributions)
this.loading = false
})
.catch(() => this.hasError = true)
}
}
</script>
<style scoped>
</style>

View file

@ -1,19 +1,73 @@
<template>
<v-card class="single-card">
<v-card-title>About</v-card-title>
<v-card-text>
<Abstract />
</v-card-text>
</v-card>
<div>
<v-row justify="center" align="center">
<v-col cols="12" xl="12">
<v-card class="single-card">
<v-card-title>About</v-card-title>
<v-card-text>
<Abstract/>
</v-card-text>
</v-card>
</v-col>
</v-row>
<v-row justify="center" >
<v-col cols="12" md="5" sm="12">
<v-card>
<v-card-title>Contributors</v-card-title>
<github-contributors repo="CorentinTh/it-tools"/>
</v-card>
</v-col>
<v-col cols="12" md="7" sm="12">
<v-card>
<v-card-title>Changelog</v-card-title>
<v-card-text>
<div v-for="(section, i) in changelog" :key="i">
<h2>{{section.title}}</h2>
<ul>
<li v-for="(log, i) in section.logs" :key="i"> {{log}}</li>
</ul>
<br>
</div>
</v-card-text>
</v-card>
</v-col>
</v-row>
</div>
</template>
<script>
import Abstract from "../components/Abstract";
import Abstract from "../components/Abstract";
import GithubContributors from "../components/GithubContributors";
import changelog from "../../CHANGELOG.md"
export default {
name: "About",
components : {
Abstract
},
}
export default {
name: "About",
data: () => ({
changelog: []
}),
mounted() {
this.changelog = ('##' + changelog.replace(/^(.*?)##/s, ''))
.split('\n')
.filter(v => v !== '')
.reduce((sections, v) => {
v = v.trim();
if(v.startsWith('##')){
sections.push({
title: v.replace(/^##/, '').trim(),
logs: []
})
}else {
sections.slice(-1)[0].logs.push(v.replace(/^-/, '').trim())
}
return sections
}, []);
console.log(this.changelog);
},
components: {
Abstract,
GithubContributors
},
}
</script>