aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryp053272023-03-06 23:35:24 +0900
committerGitHub2023-03-06 22:35:24 +0800
commitf0b0f22aeda60c77e377f8869f262217c1895ab8 (patch)
treeba47c35850dcf9fda2df10f2fa7ff10c6ad55298
parent68d7d772eb24dea258db01fe19d6042e07b223f9 (diff)
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>
-rw-r--r--web_src/js/components/ActionRunStatus.vue30
-rw-r--r--web_src/js/components/RepoActionView.vue21
2 files changed, 35 insertions, 16 deletions
diff --git a/web_src/js/components/ActionRunStatus.vue b/web_src/js/components/ActionRunStatus.vue
new file mode 100644
index 000000000..3717b6495
--- /dev/null
+++ b/web_src/js/components/ActionRunStatus.vue
@@ -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>
diff --git a/web_src/js/components/RepoActionView.vue b/web_src/js/components/RepoActionView.vue
index a5c12c754..aadc8369b 100644
--- a/web_src/js/components/RepoActionView.vue
+++ b/web_src/js/components/RepoActionView.vue
@@ -2,10 +2,7 @@
<div class="action-view-container">
<div class="action-view-header">
<div class="action-info-summary">
- <SvgIcon name="octicon-check-circle-fill" size="20" class="green" v-if="run.status === 'success'"/>
- <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/>
+ <ActionRunStatus :status="run.status" :size="20"/>
<div class="action-title">
{{ run.title }}
</div>
@@ -23,12 +20,7 @@
<div class="job-brief-list">
<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">
- <SvgIcon name="octicon-check-circle-fill" class="green" v-if="job.status === 'success'"/>
- <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/>
+ <ActionRunStatus :status="job.status"/>
<span class="ui text">{{ job.name }}</span>
</a>
<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-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'"/>
- <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/>
+ <ActionRunStatus :status="jobStep.status" class="gt-mr-3"/>
<span class="step-summary-msg">{{ jobStep.summary }}</span>
<span class="step-summary-dur">{{ jobStep.duration }}</span>
@@ -76,6 +63,7 @@
<script>
import {SvgIcon} from '../svg.js';
+import ActionRunStatus from './ActionRunStatus.vue';
import {createApp} from 'vue';
import AnsiToHTML from 'ansi-to-html';
@@ -85,6 +73,7 @@ const sfc = {
name: 'RepoActionView',
components: {
SvgIcon,
+ ActionRunStatus,
},
props: {
runIndex: String,