Filter out resolved markets from daily movers

This commit is contained in:
James Grugett 2022-10-13 13:49:43 -05:00
parent 546b0231e7
commit 9e4f41253f
4 changed files with 16 additions and 17 deletions

View File

@ -12,8 +12,9 @@ import { formatNumericProbability } from 'common/pseudo-numeric'
export function ProfitChangeTable(props: {
contracts: CPMMBinaryContract[]
metrics: ContractMetrics[]
maxRows?: number
}) {
const { contracts, metrics } = props
const { contracts, metrics, maxRows } = props
const contractProfit = metrics.map(
(m) => [m.contractId, m.from?.day.profit ?? 0] as const
@ -27,7 +28,7 @@ export function ProfitChangeTable(props: {
positiveProfit.map(([contractId]) =>
contracts.find((c) => c.id === contractId)
)
)
).slice(0, maxRows)
const negativeProfit = sortBy(
contractProfit.filter(([, profit]) => profit < 0),
@ -37,7 +38,7 @@ export function ProfitChangeTable(props: {
negativeProfit.map(([contractId]) =>
contracts.find((c) => c.id === contractId)
)
)
).slice(0, maxRows)
if (positive.length === 0 && negative.length === 0)
return <div className="px-4 text-gray-500">None</div>

View File

@ -47,10 +47,7 @@ export const usePrefetchUsers = (userIds: string[]) => {
)
}
export const useUserContractMetricsByProfit = (
userId: string,
count: number
) => {
export const useUserContractMetricsByProfit = (userId: string, count = 50) => {
const positiveResult = useFirestoreQueryData<ContractMetrics>(
['contract-metrics-descending', userId, count],
getUserContractMetricsQuery(userId, count, 'desc')
@ -71,10 +68,13 @@ export const useUserContractMetricsByProfit = (
if (!positiveResult.data || !negativeResult.data || !contracts)
return undefined
const filteredContracts = filterDefined(contracts) as CPMMBinaryContract[]
const filteredMetrics = metrics.filter(
(m) => m.from && Math.abs(m.from.day.profit) >= 0.5
)
const filteredContracts = filterDefined(contracts).filter(
(c) => !c.isResolved
) as CPMMBinaryContract[]
const filteredMetrics = metrics
.filter((m) => m.from && Math.abs(m.from.day.profit) >= 0.5)
.filter((m) => filteredContracts.find((c) => c.id === m.contractId))
return { contracts: filteredContracts, metrics: filteredMetrics }
}

View File

@ -28,7 +28,7 @@ export default function DailyMovers() {
function ProbChangesWrapper(props: { userId: string }) {
const { userId } = props
const data = useUserContractMetricsByProfit(userId, 50)
const data = useUserContractMetricsByProfit(userId)
if (!data) return <LoadingIndicator />

View File

@ -95,8 +95,7 @@ export default function Home() {
}, [user, sections])
const contractMetricsByProfit = useUserContractMetricsByProfit(
user?.id ?? '_',
3
user?.id ?? '_'
)
const trendingContracts = useTrendingContracts(6)
@ -494,7 +493,7 @@ function DailyMoversSection(props: {
return (
<Col className="gap-2">
<SectionHeader label="Daily movers" href="/daily-movers" />
<ProfitChangeTable contracts={contracts} metrics={metrics} />
<ProfitChangeTable contracts={contracts} metrics={metrics} maxRows={3} />
</Col>
)
}
@ -530,8 +529,7 @@ export function DailyProfit(props: { user: User | null | undefined }) {
const { user } = props
const contractMetricsByProfit = useUserContractMetricsByProfit(
user?.id ?? '_',
100
user?.id ?? '_'
)
const profit = sum(
contractMetricsByProfit?.metrics.map((m) =>