diff --git a/web/src/features/model-prices/ModelPriceDrawer.vue b/web/src/features/model-prices/ModelPriceDrawer.vue index 8ddbe157..17b7d198 100644 --- a/web/src/features/model-prices/ModelPriceDrawer.vue +++ b/web/src/features/model-prices/ModelPriceDrawer.vue @@ -235,7 +235,9 @@ onBeforeUnmount(clearRequest)
  • {{ group.name }} - {{ group.enabled ? t('models.tree.groupEnabled') : t('models.tree.groupDisabled') }} + {{ + group.enabled ? t('models.detail.groupEnabled') : t('models.detail.groupDisabled') + }}
  • diff --git a/web/src/features/models/ModelCatalogFacts.vue b/web/src/features/models/ModelCatalogFacts.vue new file mode 100644 index 00000000..077c7f54 --- /dev/null +++ b/web/src/features/models/ModelCatalogFacts.vue @@ -0,0 +1,160 @@ + + + + + diff --git a/web/src/features/models/ModelCollection.vue b/web/src/features/models/ModelCollection.vue new file mode 100644 index 00000000..ae8e8172 --- /dev/null +++ b/web/src/features/models/ModelCollection.vue @@ -0,0 +1,457 @@ + + + + + diff --git a/web/src/features/models/ModelDetailPanel.vue b/web/src/features/models/ModelDetailPanel.vue new file mode 100644 index 00000000..b0ca775a --- /dev/null +++ b/web/src/features/models/ModelDetailPanel.vue @@ -0,0 +1,359 @@ + + + + + diff --git a/web/src/features/models/ModelSummaryStrip.vue b/web/src/features/models/ModelSummaryStrip.vue new file mode 100644 index 00000000..b2ff23ea --- /dev/null +++ b/web/src/features/models/ModelSummaryStrip.vue @@ -0,0 +1,183 @@ + + + + + diff --git a/web/src/features/models/ModelTreeCollection.vue b/web/src/features/models/ModelTreeCollection.vue deleted file mode 100644 index aa42a827..00000000 --- a/web/src/features/models/ModelTreeCollection.vue +++ /dev/null @@ -1,372 +0,0 @@ - - - - - diff --git a/web/src/features/models/ModelTreePriceRow.vue b/web/src/features/models/ModelTreePriceRow.vue deleted file mode 100644 index 39c4080d..00000000 --- a/web/src/features/models/ModelTreePriceRow.vue +++ /dev/null @@ -1,501 +0,0 @@ - - - - - diff --git a/web/src/features/models/ModelsView.vue b/web/src/features/models/ModelsView.vue index 8ccc319d..1ce77379 100644 --- a/web/src/features/models/ModelsView.vue +++ b/web/src/features/models/ModelsView.vue @@ -21,7 +21,6 @@ import CollectionFilterBar from '@/components/collection/CollectionFilterBar.vue import LedgerSheet from '@/components/layout/LedgerSheet.vue' import PageFrame from '@/components/layout/PageFrame.vue' import AppButton from '@/components/ui/AppButton.vue' -import AppDateTime from '@/components/ui/AppDateTime.vue' import AppSearchInput from '@/components/ui/AppSearchInput.vue' import AppSelect from '@/components/ui/AppSelect.vue' import EmptyState from '@/components/ui/EmptyState.vue' @@ -29,13 +28,13 @@ import InlineFeedback from '@/components/ui/InlineFeedback.vue' import PageHeader from '@/components/ui/PageHeader.vue' import PaginationBar from '@/components/ui/PaginationBar.vue' import QueryFeedback from '@/components/ui/QueryFeedback.vue' -import StatusBadge from '@/components/ui/StatusBadge.vue' import ModelPriceDrawer from '@/features/model-prices/ModelPriceDrawer.vue' -import ModelTreeCollection from './ModelTreeCollection.vue' +import ModelCollection from './ModelCollection.vue' +import ModelSummaryStrip from './ModelSummaryStrip.vue' const client = useApiClient() -const { locale, n, t } = useI18n() +const { n, t } = useI18n() const searchDraft = ref('') const appliedSearch = ref() const groupStatus = ref('enabled') @@ -81,14 +80,6 @@ const pricingStatusOptions = computed(() => label: t(`models.filters.pricingStatus.${value}`), })), ) -const catalogTone = computed(() => { - if (!data.value?.catalog.available) return 'neutral' as const - return data.value.catalog.error_code ? ('warning' as const) : ('success' as const) -}) -const catalogLabel = computed(() => { - if (!data.value?.catalog.available) return t('models.catalog.unavailable') - return data.value.catalog.error_code ? t('models.catalog.stale') : t('models.catalog.available') -}) watch( [() => data.value?.pagination.total_pages, page, () => modelsQuery.isPlaceholderData.value], @@ -140,8 +131,8 @@ function resetConditions(): void { page.value = 1 } -function editScope(scope: ModelPriceBranchDto, trigger: HTMLElement): void { - selected.value = scope +function editBranch(branch: ModelPriceBranchDto, trigger: HTMLElement): void { + selected.value = branch restoreFocus = trigger drawerOpen.value = true } @@ -211,46 +202,7 @@ onBeforeUnmount(() => searchDebounce.cancel()) @retry="modelsQuery.refetch()" /> - - {{ t('models.context') }} - - -
    -
    -
    -
    {{ t('models.summary.clientModels') }}
    -
    {{ n(data.summary.client_model_count) }}
    -
    -
    -
    {{ t('models.summary.upstreamModels') }}
    -
    {{ n(data.summary.upstream_model_count) }}
    -
    -
    -
    {{ t('models.summary.prices') }}
    -
    {{ n(data.summary.price_count) }}
    -
    -
    -
    {{ t('models.summary.pendingPrices') }}
    -
    {{ n(data.summary.pending_price_count) }}
    -
    -
    -
    {{ t('models.summary.unreferencedPrices') }}
    -
    {{ n(data.summary.unreferenced_price_count) }}
    -
    -
    -
    - {{ catalogLabel }} - - {{ t('models.catalog.lastSuccess') }} - - - - {{ t('models.catalog.lastCheck') }} - - - {{ data.catalog.error_code }} -
    -
    + searchDebounce.cancel()) />