diff --git a/frontend/package.json b/frontend/package.json index 62e0c59bac9b..1e99e85206c9 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -21,7 +21,7 @@ "@stripe/stripe-js": "^9.0.1", "@tanstack/vue-virtual": "^3.13.23", "@vueuse/core": "^10.7.0", - "axios": "^1.18.0", + "axios": "^1.20.0", "chart.js": "^4.4.1", "dompurify": "^3.4.14", "driver.js": "^1.4.0", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 6498b0ecd364..fd9a5b034956 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -30,8 +30,8 @@ importers: specifier: ^10.7.0 version: 10.11.1(vue@3.5.26(typescript@5.6.3)) axios: - specifier: ^1.18.0 - version: 1.18.1 + specifier: ^1.20.0 + version: 1.20.0 chart.js: specifier: ^4.4.1 version: 4.5.1 @@ -1861,8 +1861,8 @@ packages: peerDependencies: postcss: '>=8.5.18' - axios@1.18.1: - resolution: {integrity: sha512-3nTvFlvpn9Zu/RkHUqtc7/+al4UpRW5az71ap5zccp6e8RAYEzhMTecX8Dz1wWDYrPpUoB1HAQEGEAEvUr7S9g==} + axios@1.20.0: + resolution: {integrity: sha512-r8aOh8j9cGKpgQAqpzrUHnSIc6a59Y3Xf/cv8sy1DrHCkZHzQGEuoq1tARk6qSyDdtQGSDgpb9kFlruzPvrgwg==} babel-plugin-macros@3.1.0: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} @@ -6491,7 +6491,7 @@ snapshots: postcss: 8.5.23 postcss-value-parser: 4.2.0 - axios@1.18.1: + axios@1.20.0: dependencies: follow-redirects: 1.16.0 form-data: 4.0.6 diff --git a/frontend/src/components/admin/usage/UsageTable.vue b/frontend/src/components/admin/usage/UsageTable.vue index ff0e836c30b6..37e887a9fa81 100644 --- a/frontend/src/components/admin/usage/UsageTable.vue +++ b/frontend/src/components/admin/usage/UsageTable.vue @@ -60,25 +60,25 @@ class="break-all" :class="i === 0 ? 'font-medium text-gray-900 dark:text-white' : 'text-gray-500 dark:text-gray-400'" :style="i > 0 ? `padding-left: ${i * 0.75}rem` : ''"> - ↳{{ step }} + ↳
- {{ row.model }} +
- ↳{{ row.upstream_model }} + ↳
- {{ row.model }} +
- ↳ {{ t('usage.upstreamResponseModel') }}:{{ row.upstream_response_model }} + ↳ {{ t('usage.upstreamResponseModel') }}:{{ ' ' }} + flatThemeActive.value ? modelWrapParts(value) : [value == null ? '' : String(value)] + /** Compute the account-billed cost for display: (account_stats_cost ?? total_cost) * rate_multiplier */ function accountBilled(row: { total_cost?: number | null; account_stats_cost?: number | null; account_rate_multiplier?: number | null }): number { const base = row.account_stats_cost != null ? row.account_stats_cost : (row.total_cost ?? 0) diff --git a/frontend/src/components/common/DataTable.vue b/frontend/src/components/common/DataTable.vue index 9709ce44765e..0a08c89c062f 100644 --- a/frontend/src/components/common/DataTable.vue +++ b/frontend/src/components/common/DataTable.vue @@ -118,51 +118,108 @@ />
- - {{ column.label }} - - + + + + +
+
- - - + + {{ part.label }} + + +
+
@@ -173,7 +230,7 @@
- +
@@ -233,9 +290,10 @@ /> - @@ -251,6 +310,41 @@ ? column.formatter(item.row[column.key], item.row) : item.row[column.key] }} + +
+
+ {{ column.cellLabel }} +
+ + {{ column.formatter + ? column.formatter(item.row[column.key], item.row) + : item.row[column.key] }} + +
+
+
+ {{ part.cellLabel === true ? part.label : part.cellLabel }} +
+ + {{ part.formatter + ? part.formatter(item.row[part.key], item.row) + : item.row[part.key] }} + +
+
+
@@ -265,10 +359,11 @@