mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-31 03:18:24 +00:00 
			
		
		
		
	Add ActionRunStatus component (#23259)
Related to: https://github.com/go-gitea/gitea/pull/23212#discussion_r1122856231 Decrease duplication of SvgIcon when display a run status svg. --------- Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
		
							
								
								
									
										30
									
								
								web_src/js/components/ActionRunStatus.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								web_src/js/components/ActionRunStatus.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | |||||||
|  | <template> | ||||||
|  |   <SvgIcon name="octicon-check-circle-fill" class="green" :size="size" :class-name="className" v-if="status === 'success'"/> | ||||||
|  |   <SvgIcon name="octicon-skip" class="ui text grey" :size="size" :class-name="className" v-else-if="status === 'skipped'"/> | ||||||
|  |   <SvgIcon name="octicon-clock" class="ui text yellow" :size="size" :class-name="className" v-else-if="status === 'waiting'"/> | ||||||
|  |   <SvgIcon name="octicon-blocked" class="ui text yellow" :size="size" :class-name="className" v-else-if="status === 'blocked'"/> | ||||||
|  |   <SvgIcon name="octicon-meter" class="ui text yellow" :size="size" :class-name="'job-status-rotate ' + className" v-else-if="status === 'running'"/> | ||||||
|  |   <SvgIcon name="octicon-x-circle-fill" class="red" :size="size" v-else/> | ||||||
|  | </template> | ||||||
|  |  | ||||||
|  | <script> | ||||||
|  | import {SvgIcon} from '../svg.js'; | ||||||
|  |  | ||||||
|  | export default { | ||||||
|  |   components: {SvgIcon}, | ||||||
|  |   props: { | ||||||
|  |     status: { | ||||||
|  |       type: String, | ||||||
|  |       required: true | ||||||
|  |     }, | ||||||
|  |     size: { | ||||||
|  |       type: Number, | ||||||
|  |       default: 16 | ||||||
|  |     }, | ||||||
|  |     className: { | ||||||
|  |       type: String, | ||||||
|  |       default: '' | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  | }; | ||||||
|  | </script> | ||||||
| @@ -2,10 +2,7 @@ | |||||||
|   <div class="action-view-container"> |   <div class="action-view-container"> | ||||||
|     <div class="action-view-header"> |     <div class="action-view-header"> | ||||||
|       <div class="action-info-summary"> |       <div class="action-info-summary"> | ||||||
|         <SvgIcon name="octicon-check-circle-fill" size="20" class="green" v-if="run.status === 'success'"/> |         <ActionRunStatus :status="run.status" :size="20"/> | ||||||
|         <SvgIcon name="octicon-clock" size="20" class="ui text yellow" v-else-if="run.status === 'waiting'"/> |  | ||||||
|         <SvgIcon name="octicon-meter" size="20" class="ui text yellow" class-name="job-status-rotate" v-else-if="run.status === 'running'"/> |  | ||||||
|         <SvgIcon name="octicon-x-circle-fill" size="20" class="red" v-else/> |  | ||||||
|         <div class="action-title"> |         <div class="action-title"> | ||||||
|           {{ run.title }} |           {{ run.title }} | ||||||
|         </div> |         </div> | ||||||
| @@ -23,12 +20,7 @@ | |||||||
|           <div class="job-brief-list"> |           <div class="job-brief-list"> | ||||||
|             <div class="job-brief-item" v-for="(job, index) in run.jobs" :key="job.id"> |             <div class="job-brief-item" v-for="(job, index) in run.jobs" :key="job.id"> | ||||||
|               <a class="job-brief-link" :href="run.link+'/jobs/'+index"> |               <a class="job-brief-link" :href="run.link+'/jobs/'+index"> | ||||||
|                 <SvgIcon name="octicon-check-circle-fill" class="green" v-if="job.status === 'success'"/> |                 <ActionRunStatus :status="job.status"/> | ||||||
|                 <SvgIcon name="octicon-skip" class="ui text grey" v-else-if="job.status === 'skipped'"/> |  | ||||||
|                 <SvgIcon name="octicon-clock" class="ui text yellow" v-else-if="job.status === 'waiting'"/> |  | ||||||
|                 <SvgIcon name="octicon-blocked" class="ui text yellow" v-else-if="job.status === 'blocked'"/> |  | ||||||
|                 <SvgIcon name="octicon-meter" class="ui text yellow" class-name="job-status-rotate" v-else-if="job.status === 'running'"/> |  | ||||||
|                 <SvgIcon name="octicon-x-circle-fill" class="red" v-else/> |  | ||||||
|                 <span class="ui text">{{ job.name }}</span> |                 <span class="ui text">{{ job.name }}</span> | ||||||
|               </a> |               </a> | ||||||
|               <button class="job-brief-rerun" @click="rerunJob(index)" v-if="job.canRerun"> |               <button class="job-brief-rerun" @click="rerunJob(index)" v-if="job.canRerun"> | ||||||
| @@ -54,12 +46,7 @@ | |||||||
|               <SvgIcon name="octicon-chevron-down" class="gt-mr-3" v-show="currentJobStepsStates[i].expanded"/> |               <SvgIcon name="octicon-chevron-down" class="gt-mr-3" v-show="currentJobStepsStates[i].expanded"/> | ||||||
|               <SvgIcon name="octicon-chevron-right" class="gt-mr-3" v-show="!currentJobStepsStates[i].expanded"/> |               <SvgIcon name="octicon-chevron-right" class="gt-mr-3" v-show="!currentJobStepsStates[i].expanded"/> | ||||||
|  |  | ||||||
|               <SvgIcon name="octicon-check-circle-fill" class="green gt-mr-3" v-if="jobStep.status === 'success'"/> |               <ActionRunStatus :status="jobStep.status" class="gt-mr-3"/> | ||||||
|               <SvgIcon name="octicon-skip" class="ui text grey gt-mr-3" v-else-if="jobStep.status === 'skipped'"/> |  | ||||||
|               <SvgIcon name="octicon-clock" class="ui text yellow gt-mr-3" v-else-if="jobStep.status === 'waiting'"/> |  | ||||||
|               <SvgIcon name="octicon-blocked" class="ui text yellow gt-mr-3" v-else-if="jobStep.status === 'blocked'"/> |  | ||||||
|               <SvgIcon name="octicon-meter" class="ui text yellow gt-mr-3" class-name="job-status-rotate" v-else-if="jobStep.status === 'running'"/> |  | ||||||
|               <SvgIcon name="octicon-x-circle-fill" class="red gt-mr-3 " v-else/> |  | ||||||
|  |  | ||||||
|               <span class="step-summary-msg">{{ jobStep.summary }}</span> |               <span class="step-summary-msg">{{ jobStep.summary }}</span> | ||||||
|               <span class="step-summary-dur">{{ jobStep.duration }}</span> |               <span class="step-summary-dur">{{ jobStep.duration }}</span> | ||||||
| @@ -76,6 +63,7 @@ | |||||||
|  |  | ||||||
| <script> | <script> | ||||||
| import {SvgIcon} from '../svg.js'; | import {SvgIcon} from '../svg.js'; | ||||||
|  | import ActionRunStatus from './ActionRunStatus.vue'; | ||||||
| import {createApp} from 'vue'; | import {createApp} from 'vue'; | ||||||
| import AnsiToHTML from 'ansi-to-html'; | import AnsiToHTML from 'ansi-to-html'; | ||||||
|  |  | ||||||
| @@ -85,6 +73,7 @@ const sfc = { | |||||||
|   name: 'RepoActionView', |   name: 'RepoActionView', | ||||||
|   components: { |   components: { | ||||||
|     SvgIcon, |     SvgIcon, | ||||||
|  |     ActionRunStatus, | ||||||
|   }, |   }, | ||||||
|   props: { |   props: { | ||||||
|     runIndex: String, |     runIndex: String, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user