mirror of
https://github.com/CorentinTh/it-tools.git
synced 2025-04-26 09:46:15 -04:00
feat: contributors + changelogs in about page
Signed-off-by: Corentin Thomasset <corentin.thomasset74@gmail.com>
This commit is contained in:
parent
b013903c41
commit
fba0701df2
5 changed files with 146 additions and 14 deletions
49
src/components/GithubContributors.vue
Normal file
49
src/components/GithubContributors.vue
Normal 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>
|
|
@ -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>
|
Loading…
Add table
Add a link
Reference in a new issue