|
36 | 36 | </template> |
37 | 37 | </el-table-column> |
38 | 38 | <el-table-column prop="sync_status" label="Status"></el-table-column> |
| 39 | + <el-table-column |
| 40 | + label="options"> |
| 41 | + <template #default="scope"> |
| 42 | + <div class="flex items-center justify-start gap-[8px]"> |
| 43 | + <CsgButton |
| 44 | + v-if="scope.row.sync_status === 'failed'" |
| 45 | + class="btn btn-link-color btn-md" |
| 46 | + @click="retry(scope.row)" |
| 47 | + :name="$t('endpoints.playground.retry')" /> |
| 48 | + <CsgButton |
| 49 | + v-if="scope.row.sync_status === 'inprogress'" |
| 50 | + class="btn btn-link-color btn-md" |
| 51 | + @click="cancelSync(scope.row)" |
| 52 | + :name="$t('all.cancel')" /> |
| 53 | + </div> |
| 54 | + </template> |
| 55 | + </el-table-column> |
39 | 56 | </el-table> |
40 | 57 |
|
41 | 58 | <el-pagination v-model:current-page="page" :page-size="per" layout="prev, pager, next" :total="total" |
@@ -76,6 +93,39 @@ const onSubmit = () => { |
76 | 93 | createSyncSetting() |
77 | 94 | } |
78 | 95 |
|
| 96 | +const retry = async (item) => { |
| 97 | + useFetchApi(`/${item.repo_type}s/${item.path}/mirror/sync`, { |
| 98 | + method: 'POST', |
| 99 | + }).then(({ data, error }) => { |
| 100 | + if (data.value) { |
| 101 | + ElMessage.success('Sync started successfully') |
| 102 | + } else { |
| 103 | + ElMessage.error(error.value?.msg || 'Failed to start sync') |
| 104 | + } |
| 105 | + }).catch(error => { |
| 106 | + ElMessage.error(error.message || 'Failed to start sync') |
| 107 | + }) |
| 108 | +} |
| 109 | +
|
| 110 | +const cancelSync = async (item) => { |
| 111 | + const cancelEndpoint = `/lfs_sync/cancel` |
| 112 | + const { data, error } = await useFetchApi(cancelEndpoint, { |
| 113 | + method: 'POST', |
| 114 | + headers: { |
| 115 | + 'Content-Type': 'application/json' |
| 116 | + }, |
| 117 | + body: JSON.stringify({ |
| 118 | + mirror_id: item.id |
| 119 | + }) |
| 120 | + }).json() |
| 121 | + if (data.value) { |
| 122 | + ElMessage.success('Sync cancelled successfully') |
| 123 | + fetchSyncRecords(); |
| 124 | + } else { |
| 125 | + ElMessage.warning(error.value.msg) |
| 126 | + } |
| 127 | +} |
| 128 | +
|
79 | 129 | const createSyncSetting = async () => { |
80 | 130 | const createEndpoint = '/sync/client_setting' |
81 | 131 | const { data, error } = await useFetchApi(createEndpoint, { |
|
0 commit comments