mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-26 12:27:06 +00:00 
			
		
		
		
	 e7d6f74450
			
		
	
	e7d6f74450
	
	
	
		
			
			- Updated all dependencies - Fixed new CSS lint errors, specifically tested the RepoActivityTopAuthors.vue change - Regenerated SVGs
		
			
				
	
	
		
			109 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <script lang="ts" setup>
 | |
| // @ts-expect-error - module exports no types
 | |
| import {VueBarGraph} from 'vue-bar-graph';
 | |
| import {computed, onMounted, shallowRef, useTemplateRef} from 'vue';
 | |
| 
 | |
| const colors = shallowRef({
 | |
|   barColor: 'green',
 | |
|   textColor: 'black',
 | |
|   textAltColor: 'white',
 | |
| });
 | |
| 
 | |
| type ActivityAuthorData = {
 | |
|   avatar_link: string;
 | |
|   commits: number;
 | |
|   home_link: string;
 | |
|   login: string;
 | |
|   name: string;
 | |
| }
 | |
| 
 | |
| const activityTopAuthors: Array<ActivityAuthorData> = window.config.pageData.repoActivityTopAuthors || [];
 | |
| 
 | |
| const graphPoints = computed(() => {
 | |
|   return activityTopAuthors.map((item) => {
 | |
|     return {
 | |
|       value: item.commits,
 | |
|       label: item.name,
 | |
|     };
 | |
|   });
 | |
| });
 | |
| 
 | |
| const graphAuthors = computed(() => {
 | |
|   return activityTopAuthors.map((item, idx: number) => {
 | |
|     return {
 | |
|       position: idx + 1,
 | |
|       ...item,
 | |
|     };
 | |
|   });
 | |
| });
 | |
| 
 | |
| const graphWidth = computed(() => {
 | |
|   return activityTopAuthors.length * 40;
 | |
| });
 | |
| 
 | |
| const styleElement = useTemplateRef('styleElement');
 | |
| const altStyleElement = useTemplateRef('altStyleElement');
 | |
| 
 | |
| onMounted(() => {
 | |
|   const refStyle = window.getComputedStyle(styleElement.value);
 | |
|   const refAltStyle = window.getComputedStyle(altStyleElement.value);
 | |
| 
 | |
|   colors.value = {
 | |
|     barColor: refStyle.backgroundColor,
 | |
|     textColor: refStyle.color,
 | |
|     textAltColor: refAltStyle.color,
 | |
|   };
 | |
| });
 | |
| </script>
 | |
| 
 | |
| <template>
 | |
|   <div>
 | |
|     <div class="activity-bar-graph tw-w-0 tw-h-0" ref="styleElement"/>
 | |
|     <div class="activity-bar-graph-alt tw-w-0 tw-h-0" ref="altStyleElement"/>
 | |
|     <vue-bar-graph
 | |
|       :points="graphPoints"
 | |
|       :show-x-axis="true"
 | |
|       :show-y-axis="false"
 | |
|       :show-values="true"
 | |
|       :width="graphWidth"
 | |
|       :bar-color="colors.barColor"
 | |
|       :text-color="colors.textColor"
 | |
|       :text-alt-color="colors.textAltColor"
 | |
|       :height="100"
 | |
|       :label-height="20"
 | |
|     >
 | |
|       <template #label="opt">
 | |
|         <g v-for="(author, idx) in graphAuthors" :key="author.position">
 | |
|           <a
 | |
|             v-if="opt.bar.index === idx && author.home_link"
 | |
|             :href="author.home_link"
 | |
|           >
 | |
|             <image
 | |
|               :x="`${opt.bar.midPoint - 10}px`"
 | |
|               :y="`${opt.bar.yLabel}px`"
 | |
|               height="20"
 | |
|               width="20"
 | |
|               :href="author.avatar_link"
 | |
|             />
 | |
|           </a>
 | |
|           <image
 | |
|             v-else-if="opt.bar.index === idx"
 | |
|             :x="`${opt.bar.midPoint - 10}px`"
 | |
|             :y="`${opt.bar.yLabel}px`"
 | |
|             height="20"
 | |
|             width="20"
 | |
|             :href="author.avatar_link"
 | |
|           />
 | |
|         </g>
 | |
|       </template>
 | |
|       <template #title="opt">
 | |
|         <tspan v-for="(author, idx) in graphAuthors" :key="author.position">
 | |
|           <tspan v-if="opt.bar.index === idx">
 | |
|             {{ author.name }}
 | |
|           </tspan>
 | |
|         </tspan>
 | |
|       </template>
 | |
|     </vue-bar-graph>
 | |
|   </div>
 | |
| </template>
 |