From 452b2ba0b0de1c7208b688e9f458839533a950d6 Mon Sep 17 00:00:00 2001 From: Benjamin Kane Date: Wed, 28 Feb 2024 12:38:19 -0600 Subject: [PATCH 1/3] add estimated dataset count for index page --- app/packages/app/src/pages/IndexPage.tsx | 7 ++----- app/schema.graphql | 1 + fiftyone/server/query.py | 13 ++++++++++--- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/app/packages/app/src/pages/IndexPage.tsx b/app/packages/app/src/pages/IndexPage.tsx index 967d4962a5..6c3a572421 100644 --- a/app/packages/app/src/pages/IndexPage.tsx +++ b/app/packages/app/src/pages/IndexPage.tsx @@ -1,11 +1,10 @@ -import { Snackbar } from "@fiftyone/core"; +import { Snackbar, Starter } from "@fiftyone/core"; import React from "react"; import { usePreloadedQuery } from "react-relay"; import { graphql } from "relay-runtime"; import Nav from "../components/Nav"; import { Route } from "../routing"; import { IndexPageQuery } from "./__generated__/IndexPageQuery.graphql"; -import { Starter } from "@fiftyone/core"; const IndexPageQueryNode = graphql` query IndexPageQuery($search: String = "", $count: Int, $cursor: String) { @@ -16,9 +15,7 @@ const IndexPageQueryNode = graphql` multicolorKeypoints showSkeletons } - allDatasets: datasets(search: "") { - total - } + allDatasets: estimatedDatasetCount ...NavFragment ...configFragment } diff --git a/app/schema.graphql b/app/schema.graphql index 7d1214e488..f098d257ec 100644 --- a/app/schema.graphql +++ b/app/schema.graphql @@ -600,6 +600,7 @@ type Query { context: String! dev: Boolean! doNotTrack: Boolean! + estimatedDatasetCount: Int! samples( dataset: String! view: BSONArray! diff --git a/fiftyone/server/query.py b/fiftyone/server/query.py index 3e6f40a006..0db5110c80 100644 --- a/fiftyone/server/query.py +++ b/fiftyone/server/query.py @@ -5,6 +5,7 @@ | `voxel51.com `_ | """ + from dataclasses import asdict from datetime import date, datetime from enum import Enum @@ -409,6 +410,10 @@ def dev(self) -> bool: def do_not_track(self) -> bool: return fo.config.do_not_track + @gql.field + async def estimated_dataset_count(self, info: Info = None) -> int: + return await info.context.db.datasets.estimated_document_count() + dataset: Dataset = gql.field(resolver=Dataset.resolver) datasets: Connection[Dataset, str] = gql.field( resolver=get_paginator_resolver( @@ -676,9 +681,11 @@ def _assign_estimated_counts(dataset: Dataset, fo_dataset: fo.Dataset): setattr( dataset, "estimated_frame_count", - fo_dataset._frame_collection.estimated_document_count() - if fo_dataset._frame_collection_name - else None, + ( + fo_dataset._frame_collection.estimated_document_count() + if fo_dataset._frame_collection_name + else None + ), ) From 2686a61b6be8ae5484cf11b8c8317004acced91b Mon Sep 17 00:00:00 2001 From: Benjamin Kane Date: Fri, 22 Mar 2024 12:44:36 -0400 Subject: [PATCH 2/3] rm total --- app/packages/app/src/pages/IndexPage.tsx | 2 +- .../__generated__/IndexPageQuery.graphql.ts | 52 +++++++------------ 2 files changed, 20 insertions(+), 34 deletions(-) diff --git a/app/packages/app/src/pages/IndexPage.tsx b/app/packages/app/src/pages/IndexPage.tsx index 6c3a572421..33c1294f3c 100644 --- a/app/packages/app/src/pages/IndexPage.tsx +++ b/app/packages/app/src/pages/IndexPage.tsx @@ -23,7 +23,7 @@ const IndexPageQueryNode = graphql` const IndexPage: Route = ({ prepared }) => { const queryRef = usePreloadedQuery(IndexPageQueryNode, prepared); - const totalDatasets = queryRef?.allDatasets?.total; + const totalDatasets = queryRef?.allDatasets ?? 0; return ( <> diff --git a/app/packages/app/src/pages/__generated__/IndexPageQuery.graphql.ts b/app/packages/app/src/pages/__generated__/IndexPageQuery.graphql.ts index 2bc7989fad..8045f5ae23 100644 --- a/app/packages/app/src/pages/__generated__/IndexPageQuery.graphql.ts +++ b/app/packages/app/src/pages/__generated__/IndexPageQuery.graphql.ts @@ -1,5 +1,5 @@ /** - * @generated SignedSource<> + * @generated SignedSource<<8700e7785b68e24cfbd420ff77f331b6>> * @lightSyntaxTransform * @nogrep */ @@ -17,9 +17,7 @@ export type IndexPageQuery$variables = { search?: string | null; }; export type IndexPageQuery$data = { - readonly allDatasets: { - readonly total: number | null; - }; + readonly allDatasets: number; readonly config: { readonly colorBy: ColorBy; readonly colorPool: ReadonlyArray; @@ -86,31 +84,13 @@ v7 = { "storageKey": null }, v8 = { - "alias": null, + "alias": "allDatasets", "args": null, "kind": "ScalarField", - "name": "total", + "name": "estimatedDatasetCount", "storageKey": null }, -v9 = { - "alias": "allDatasets", - "args": [ - { - "kind": "Literal", - "name": "search", - "value": "" - } - ], - "concreteType": "DatasetStrConnection", - "kind": "LinkedField", - "name": "datasets", - "plural": false, - "selections": [ - (v8/*: any*/) - ], - "storageKey": "datasets(search:\"\")" -}, -v10 = [ +v9 = [ { "kind": "Variable", "name": "after", @@ -154,7 +134,7 @@ return { ], "storageKey": null }, - (v9/*: any*/), + (v8/*: any*/), { "args": null, "kind": "FragmentSpread", @@ -286,16 +266,22 @@ return { ], "storageKey": null }, - (v9/*: any*/), + (v8/*: any*/), { "alias": null, - "args": (v10/*: any*/), + "args": (v9/*: any*/), "concreteType": "DatasetStrConnection", "kind": "LinkedField", "name": "datasets", "plural": false, "selections": [ - (v8/*: any*/), + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "total", + "storageKey": null + }, { "alias": null, "args": null, @@ -376,7 +362,7 @@ return { }, { "alias": null, - "args": (v10/*: any*/), + "args": (v9/*: any*/), "filters": [ "search" ], @@ -431,16 +417,16 @@ return { ] }, "params": { - "cacheID": "48daf769c05cc9baadf930a245bcdfaa", + "cacheID": "99ec35167438b14de474254554413684", "id": null, "metadata": {}, "name": "IndexPageQuery", "operationKind": "query", - "text": "query IndexPageQuery(\n $search: String = \"\"\n $count: Int\n $cursor: String\n) {\n config {\n colorBy\n colorPool\n colorscale\n multicolorKeypoints\n showSkeletons\n }\n allDatasets: datasets(search: \"\") {\n total\n }\n ...NavFragment\n ...configFragment\n}\n\nfragment NavDatasets on Query {\n datasets(search: $search, first: $count, after: $cursor) {\n total\n edges {\n cursor\n node {\n name\n id\n __typename\n }\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n}\n\nfragment NavFragment on Query {\n ...NavDatasets\n ...NavGA\n teamsSubmission\n}\n\nfragment NavGA on Query {\n context\n dev\n doNotTrack\n uid\n version\n}\n\nfragment configFragment on Query {\n config {\n colorBy\n colorPool\n colorscale\n gridZoom\n lightningThreshold\n loopVideos\n multicolorKeypoints\n notebookHeight\n plugins\n showConfidence\n showIndex\n showLabel\n showSkeletons\n showTooltip\n sidebarMode\n theme\n timezone\n useFrameNumber\n }\n colorscale\n}\n" + "text": "query IndexPageQuery(\n $search: String = \"\"\n $count: Int\n $cursor: String\n) {\n config {\n colorBy\n colorPool\n colorscale\n multicolorKeypoints\n showSkeletons\n }\n allDatasets: estimatedDatasetCount\n ...NavFragment\n ...configFragment\n}\n\nfragment NavDatasets on Query {\n datasets(search: $search, first: $count, after: $cursor) {\n total\n edges {\n cursor\n node {\n name\n id\n __typename\n }\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n}\n\nfragment NavFragment on Query {\n ...NavDatasets\n ...NavGA\n teamsSubmission\n}\n\nfragment NavGA on Query {\n context\n dev\n doNotTrack\n uid\n version\n}\n\nfragment configFragment on Query {\n config {\n colorBy\n colorPool\n colorscale\n gridZoom\n lightningThreshold\n loopVideos\n multicolorKeypoints\n notebookHeight\n plugins\n showConfidence\n showIndex\n showLabel\n showSkeletons\n showTooltip\n sidebarMode\n theme\n timezone\n useFrameNumber\n }\n colorscale\n}\n" } }; })(); -(node as any).hash = "d84cfaac426f2730610de9dd1814da58"; +(node as any).hash = "0e29568fa34b45baaa1d820d64dbe63f"; export default node; From 42348735ba5513898d388413270d37c9e4e0c5d3 Mon Sep 17 00:00:00 2001 From: Benjamin Kane Date: Fri, 22 Mar 2024 12:45:37 -0400 Subject: [PATCH 3/3] lint --- app/packages/app/src/pages/IndexPage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/packages/app/src/pages/IndexPage.tsx b/app/packages/app/src/pages/IndexPage.tsx index 33c1294f3c..b5a596080d 100644 --- a/app/packages/app/src/pages/IndexPage.tsx +++ b/app/packages/app/src/pages/IndexPage.tsx @@ -23,7 +23,7 @@ const IndexPageQueryNode = graphql` const IndexPage: Route = ({ prepared }) => { const queryRef = usePreloadedQuery(IndexPageQueryNode, prepared); - const totalDatasets = queryRef?.allDatasets ?? 0; + const totalDatasets = queryRef.allDatasets; return ( <>