diff --git a/frontend/src/components/AccountEditModal.vue b/frontend/src/components/AccountEditModal.vue new file mode 100644 index 0000000..f86930d --- /dev/null +++ b/frontend/src/components/AccountEditModal.vue @@ -0,0 +1,74 @@ + + + diff --git a/frontend/src/views/AccountsView.vue b/frontend/src/views/AccountsView.vue index 09924a4..348d04f 100644 --- a/frontend/src/views/AccountsView.vue +++ b/frontend/src/views/AccountsView.vue @@ -4,6 +4,7 @@ import { api, jsonBody } from '../api' import { fmtTs, fmtIso, fmtDate, fmtClock } from '../utils/format' import ImportModal from '../components/ImportModal.vue' import UpstreamModal from '../components/UpstreamModal.vue' +import AccountEditModal from '../components/AccountEditModal.vue' import Icon from '../components/Icon.vue' const rows = ref([]) @@ -13,6 +14,15 @@ const showImport = ref(false) const showUpstream = ref(false) const editingUpstream = ref(null) function editUpstream(a) { editingUpstream.value = a; showUpstream.value = true } +const editingAccount = ref(null) +function editAccount(a) { editingAccount.value = a } +// Reflect the saved values in the table without a full reload. +function applyEdit(payload) { + const row = editingAccount.value + if (!row) return + if (payload.weight != null) row.weight = payload.weight + if (payload.concurrency != null) row.concurrency = payload.concurrency +} const typeFilter = ref('') // '' | 'openai' | 'adobe' | 'runway' | 'leonardo' const statusFilter = ref('') // '' | 'active' | 'quota' | 'disabled' @@ -101,13 +111,6 @@ const pageNumbers = computed(() => { let pendingTimer = null -// Inline-edit an account field (weight / concurrency) → PATCH /tokens/{pool}/{id}. -async function saveField(row, field, value) { - const v = Number(value) - if (Number.isNaN(v)) return - await api(`/tokens/${row.pool}/${row.id}`, jsonBody('PATCH', { [field]: v })) -} - async function loadAccounts() { loading.value = true quotaStatus.value = '' @@ -463,19 +466,14 @@ onMounted(loadAccounts) :class="a.remaining > 0 ? 'text-emerald-300' : 'text-rose-300'">{{ a.remaining }}{{ a.type === 'grok' ? '%' : '' }} - - - + + + {{ a.weight ?? 0 }} - - - - {{ a.type === 'grok' ? 10 : 1 }} + + + {{ a.concurrency || 1 }} + {{ a.type === 'grok' ? 10 : 1 }} @@ -528,6 +526,9 @@ onMounted(loadAccounts)
+ @@ -558,6 +559,7 @@ onMounted(loadAccounts) + diff --git a/frontend/src/views/LogsView.vue b/frontend/src/views/LogsView.vue index 88f3253..c9d1212 100644 --- a/frontend/src/views/LogsView.vue +++ b/frontend/src/views/LogsView.vue @@ -303,7 +303,6 @@ const sourcePill = (s) => ({
- {{ e.error }}