diff --git a/src/client/components/Dashboard/LibraryStatistics.tsx b/src/client/components/Dashboard/LibraryStatistics.tsx index 8e6aa8c..68a8b21 100644 --- a/src/client/components/Dashboard/LibraryStatistics.tsx +++ b/src/client/components/Dashboard/LibraryStatistics.tsx @@ -4,6 +4,7 @@ import { GetLibraryStatisticsQuery, DirectorySize } from "../../graphql/generate type Stats = Omit & { comicDirectorySize: DirectorySize; + comicsMissingFiles: number; }; /** Props for {@link LibraryStatistics}. */ @@ -23,7 +24,7 @@ export const LibraryStatistics = ({ stats }: LibraryStatisticsProps): ReactEleme const facet = stats.statistics?.[0]; if (!facet) return null; - const { issues, issuesWithComicInfoXML, fileTypes, publisherWithMostComicsInLibrary, fileLessComics } = facet; + const { issues, issuesWithComicInfoXML, fileTypes, publisherWithMostComicsInLibrary } = facet; const topPublisher = publisherWithMostComicsInLibrary?.[0]; return ( @@ -36,28 +37,26 @@ export const LibraryStatistics = ({ stats }: LibraryStatisticsProps): ReactEleme
{/* Total records in database */} -
+
In database
-
+
{stats.totalDocuments} comics
{/* Missing files */} - {fileLessComics && fileLessComics.length > 0 && ( -
-
Missing files
-
- {fileLessComics.length} -
-
- )} +
+
Missing files
+
+ {stats.comicsMissingFiles} +
+
{/* Disk space consumed */} {stats.comicDirectorySize.totalSizeInGB != null && ( -
+
Size on disk
-
+
{stats.comicDirectorySize.totalSizeInGB.toFixed(2)} GB
@@ -66,14 +65,14 @@ export const LibraryStatistics = ({ stats }: LibraryStatisticsProps): ReactEleme {/* Tagging coverage */}
{issues && issues.length > 0 && ( -
- {issues.length} +
+ {issues.length} tagged with ComicVine
)} {issuesWithComicInfoXML && issuesWithComicInfoXML.length > 0 && ( -
- {issuesWithComicInfoXML.length} +
+ {issuesWithComicInfoXML.length} with ComicInfo.xml
)} @@ -85,7 +84,7 @@ export const LibraryStatistics = ({ stats }: LibraryStatisticsProps): ReactEleme {fileTypes.map((ft) => ( {ft.data.length} {ft.id} @@ -95,7 +94,7 @@ export const LibraryStatistics = ({ stats }: LibraryStatisticsProps): ReactEleme {/* Publisher with most issues */} {topPublisher && ( -
+
{topPublisher.id} {" has the most issues "} {topPublisher.count} diff --git a/src/client/graphql/generated.ts b/src/client/graphql/generated.ts index 14c0c90..babedec 100644 --- a/src/client/graphql/generated.ts +++ b/src/client/graphql/generated.ts @@ -526,6 +526,7 @@ export type LocgMetadataInput = { export type LibraryStatistics = { __typename?: 'LibraryStatistics'; comicDirectorySize: DirectorySize; + comicsMissingFiles: Scalars['Int']['output']; statistics: Array; totalDocuments: Scalars['Int']['output']; }; @@ -1302,7 +1303,7 @@ export type GetVolumeGroupsQuery = { __typename?: 'Query', getComicBookGroups: A export type GetLibraryStatisticsQueryVariables = Exact<{ [key: string]: never; }>; -export type GetLibraryStatisticsQuery = { __typename?: 'Query', getLibraryStatistics: { __typename?: 'LibraryStatistics', totalDocuments: number, comicDirectorySize: { __typename?: 'DirectorySize', fileCount: number, totalSizeInGB: number }, statistics: Array<{ __typename?: 'StatisticsFacet', fileTypes?: Array<{ __typename?: 'FileTypeStats', id: string, data: Array }> | null, issues?: Array<{ __typename?: 'IssueStats', data: Array, id?: { __typename?: 'VolumeInfo', id?: number | null, name?: string | null } | null }> | null, fileLessComics?: Array<{ __typename?: 'Comic', id: string }> | null, issuesWithComicInfoXML?: Array<{ __typename?: 'Comic', id: string }> | null, publisherWithMostComicsInLibrary?: Array<{ __typename?: 'PublisherStats', id: string, count: number }> | null }> } }; +export type GetLibraryStatisticsQuery = { __typename?: 'Query', getLibraryStatistics: { __typename?: 'LibraryStatistics', totalDocuments: number, comicsMissingFiles: number, comicDirectorySize: { __typename?: 'DirectorySize', fileCount: number, totalSizeInGB: number }, statistics: Array<{ __typename?: 'StatisticsFacet', fileTypes?: Array<{ __typename?: 'FileTypeStats', id: string, data: Array }> | null, issues?: Array<{ __typename?: 'IssueStats', data: Array, id?: { __typename?: 'VolumeInfo', id?: number | null, name?: string | null } | null }> | null, fileLessComics?: Array<{ __typename?: 'Comic', id: string }> | null, issuesWithComicInfoXML?: Array<{ __typename?: 'Comic', id: string }> | null, publisherWithMostComicsInLibrary?: Array<{ __typename?: 'PublisherStats', id: string, count: number }> | null }> } }; export type GetWeeklyPullListQueryVariables = Exact<{ input: WeeklyPullListInput; @@ -1943,6 +1944,7 @@ export const GetLibraryStatisticsDocument = ` query GetLibraryStatistics { getLibraryStatistics { totalDocuments + comicsMissingFiles comicDirectorySize { fileCount totalSizeInGB diff --git a/src/client/graphql/queries/dashboard.graphql b/src/client/graphql/queries/dashboard.graphql index 5cf4cff..2699f7f 100644 --- a/src/client/graphql/queries/dashboard.graphql +++ b/src/client/graphql/queries/dashboard.graphql @@ -179,6 +179,7 @@ query GetVolumeGroups { query GetLibraryStatistics { getLibraryStatistics { totalDocuments + comicsMissingFiles comicDirectorySize { fileCount totalSizeInGB diff --git a/tailwind.config.ts b/tailwind.config.ts index 58ad7fc..b6902a2 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -14,6 +14,7 @@ module.exports = { uncompressed: "#FFF3E0", imported: "#d8dab0", missing: "#fee2e2", + info: "#cdd9eb", }, }, },