feat: contributors + changelogs in about page
Signed-off-by: Corentin Thomasset <corentin.thomasset74@gmail.com>
This commit is contained in:
		
							parent
							
								
									b013903c41
								
							
						
					
					
						commit
						fba0701df2
					
				
							
								
								
									
										23
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										23
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -10051,6 +10051,29 @@ | |||||||
|         "unpipe": "1.0.0" |         "unpipe": "1.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "raw-loader": { | ||||||
|  |       "version": "4.0.1", | ||||||
|  |       "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.1.tgz", | ||||||
|  |       "integrity": "sha512-baolhQBSi3iNh1cglJjA0mYzga+wePk7vdEX//1dTFd+v4TsQlQE0jitJSNF1OIP82rdYulH7otaVmdlDaJ64A==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "loader-utils": "^2.0.0", | ||||||
|  |         "schema-utils": "^2.6.5" | ||||||
|  |       }, | ||||||
|  |       "dependencies": { | ||||||
|  |         "loader-utils": { | ||||||
|  |           "version": "2.0.0", | ||||||
|  |           "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", | ||||||
|  |           "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "big.js": "^5.2.2", | ||||||
|  |             "emojis-list": "^3.0.0", | ||||||
|  |             "json5": "^2.1.2" | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "read-pkg": { |     "read-pkg": { | ||||||
|       "version": "5.2.0", |       "version": "5.2.0", | ||||||
|       "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", |       "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", | ||||||
|  | |||||||
| @ -36,6 +36,7 @@ | |||||||
|     "less": "^3.0.4", |     "less": "^3.0.4", | ||||||
|     "less-loader": "^5.0.0", |     "less-loader": "^5.0.0", | ||||||
|     "lint-staged": "^9.5.0", |     "lint-staged": "^9.5.0", | ||||||
|  |     "raw-loader": "^4.0.1", | ||||||
|     "sass": "^1.19.0", |     "sass": "^1.19.0", | ||||||
|     "sass-loader": "^8.0.0", |     "sass-loader": "^8.0.0", | ||||||
|     "vue-cli-plugin-vuetify": "~2.0.5", |     "vue-cli-plugin-vuetify": "~2.0.5", | ||||||
|  | |||||||
							
								
								
									
										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> | <template> | ||||||
|  |     <div> | ||||||
|  |         <v-row justify="center" align="center"> | ||||||
|  |             <v-col cols="12" xl="12"> | ||||||
|                 <v-card class="single-card"> |                 <v-card class="single-card"> | ||||||
|                     <v-card-title>About</v-card-title> |                     <v-card-title>About</v-card-title> | ||||||
|                     <v-card-text> |                     <v-card-text> | ||||||
|       <Abstract /> |                         <Abstract/> | ||||||
|                     </v-card-text> |                     </v-card-text> | ||||||
|                 </v-card> |                 </v-card> | ||||||
| </template> |             </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> | <script> | ||||||
|     import Abstract from "../components/Abstract"; |     import Abstract from "../components/Abstract"; | ||||||
|  |     import GithubContributors from "../components/GithubContributors"; | ||||||
|  |     import changelog from "../../CHANGELOG.md" | ||||||
| 
 | 
 | ||||||
|     export default { |     export default { | ||||||
|         name: "About", |         name: "About", | ||||||
|     components : { |         data: () => ({ | ||||||
|       Abstract |             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> | </script> | ||||||
| @ -6,6 +6,11 @@ module.exports = { | |||||||
|   ], |   ], | ||||||
|   configureWebpack: () => { |   configureWebpack: () => { | ||||||
|     return { |     return { | ||||||
|  |       module:{ | ||||||
|  |         rules: [ | ||||||
|  |           { test: /\.md$/, use: 'raw-loader' } | ||||||
|  |         ] | ||||||
|  |       }, | ||||||
|       plugins: [ |       plugins: [ | ||||||
|         new webpack.DefinePlugin({ |         new webpack.DefinePlugin({ | ||||||
|           'process.env': { |           'process.env': { | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user