diff options
| -rw-r--r-- | frontend/app/page.tsx | 45 | ||||
| -rw-r--r-- | frontend/lib/overview.ts | 7 |
2 files changed, 1 insertions, 51 deletions
diff --git a/frontend/app/page.tsx b/frontend/app/page.tsx index 971216c..7ccb781 100644 --- a/frontend/app/page.tsx +++ b/frontend/app/page.tsx @@ -13,7 +13,7 @@ import { TickerHeader } from "@/components/prism/TickerHeader"; import { TopBar } from "@/components/prism/TopBar"; import { ApiError, api } from "@/lib/api"; import { deltaClass, fmtCurrency, fmtLarge, fmtNumber, fmtPct } from "@/lib/format"; -import { availableFieldSummary, buildKpis, limitIndices, marketClock, OVERVIEW_NAV_ITEMS, signalTone, unavailableFields } from "@/lib/overview"; +import { buildKpis, limitIndices, marketClock, OVERVIEW_NAV_ITEMS, signalTone } from "@/lib/overview"; import type { HistoryPoint, MarketIndex, SearchResult, TickerOverview, WatchlistResponse } from "@/types/api"; type LoadState = "idle" | "loading" | "ready" | "invalid" | "error"; @@ -53,8 +53,6 @@ function OverviewClient() { const isSaved = selectedTicker ? watchlistSymbols.has(selectedTicker) : false; const marketCards = useMemo(() => limitIndices(market), [market]); const kpis = useMemo(() => (overview ? buildKpis(overview) : []), [overview]); - const missingFields = useMemo(() => (overview ? unavailableFields(overview) : []), [overview]); - useEffect(() => { const timer = window.setInterval(() => setClockSnapshot(marketClock()), 60_000); return () => window.clearInterval(timer); @@ -314,7 +312,6 @@ function OverviewClient() { <SignalCard overview={overview} /> </div> <div className="psm-column"> - <DataStatusCard overview={overview} missingFields={missingFields} /> <ProfileCard overview={overview} /> <ShortInterestCard overview={overview} /> <StatsCard overview={overview} /> @@ -425,46 +422,6 @@ function SignalCard({ overview }: { overview: TickerOverview }) { ); } -function DataStatusCard({ overview, missingFields }: { overview: TickerOverview; missingFields: string[] }) { - const entries = Object.entries(overview.meta.sources).slice(0, 6); - const visibleMissing = missingFields.slice(0, 4); - const hiddenMissingCount = Math.max(0, missingFields.length - visibleMissing.length); - - return ( - <section className="psm-card"> - <div className="psm-card-head"> - <div> - <div className="psm-eyebrow">Coverage</div> - <h2 className="psm-card-title">Coverage</h2> - </div> - <span className={`psm-status-chip${overview.meta.is_partial ? " partial" : ""}`}>{overview.meta.status}</span> - </div> - <p className="psm-quality-copy">{availableFieldSummary(overview)}</p> - {overview.meta.is_partial ? ( - <div className="psm-stack"> - {missingFields.length ? visibleMissing.map((field) => <span key={field} className="psm-field-tag missing">{field}</span>) : null} - {hiddenMissingCount ? <span className="psm-field-tag missing">+{hiddenMissingCount} more</span> : null} - </div> - ) : null} - <div className="psm-source-list"> - {entries.length ? ( - entries.map(([field, source]) => ( - <div className="psm-source-row" key={field}> - <span className="psm-source-key">{field}</span> - <span className="psm-source-value">{source}</span> - </div> - )) - ) : ( - <div className="psm-source-row"> - <span className="psm-source-key">Sources</span> - <span className="psm-source-value">Unavailable</span> - </div> - )} - </div> - </section> - ); -} - function ProfileCard({ overview }: { overview: TickerOverview }) { return ( <section className="psm-card"> diff --git a/frontend/lib/overview.ts b/frontend/lib/overview.ts index 36a3c64..1529933 100644 --- a/frontend/lib/overview.ts +++ b/frontend/lib/overview.ts @@ -91,13 +91,6 @@ export function unavailableFields(overview: TickerOverview): string[] { .map(([field]) => field); } -export function availableFieldSummary(overview: TickerOverview): string { - const fields = Object.values(overview.meta.field_availability); - if (!fields.length) return "Availability metadata unavailable"; - const available = fields.filter(Boolean).length; - return `${available} of ${fields.length} tracked fields filled`; -} - export function watchlistSubtitle(item: WatchlistItem): string { return new Date(item.created_at).toLocaleDateString(undefined, { month: "short", |
