diff --git a/src/admin/insights/AdminAppInsights.tsx b/src/admin/insights/AdminAppInsights.tsx index 454ee3e8..a8981b2d 100644 --- a/src/admin/insights/AdminAppInsights.tsx +++ b/src/admin/insights/AdminAppInsights.tsx @@ -3,6 +3,7 @@ import { getUniqueCameras, getUniqueFilmSimulations, getUniqueFocalLengths, + getUniqueLenses, getUniqueRecipes, getUniqueTags, } from '@/photo/db/query'; @@ -26,23 +27,25 @@ export default async function AdminAppInsights() { { count: photosCountHidden }, photosCountOutdated, { count: photosCountPortrait }, - tags, + codeMeta, cameras, + lenses, + tags, recipes, filmSimulations, focalLengths, - codeMeta, ] = await Promise.all([ getPhotosMeta({ hidden: 'include' }), getPhotosMeta({ hidden: 'only' }), getOutdatedPhotosCount(), getPhotosMeta({ maximumAspectRatio: 0.9 }), - getUniqueTags(), + getGitHubMetaForCurrentApp(), getUniqueCameras(), + getUniqueLenses(), + getUniqueTags(), getUniqueRecipes(), getUniqueFilmSimulations(), getUniqueFocalLengths(), - getGitHubMetaForCurrentApp(), ]); const { isAiTextGenerationEnabled } = APP_CONFIGURATION; @@ -82,8 +85,9 @@ export default async function AdminAppInsights() { photosCount, photosCountHidden, photosCountOutdated, - tagsCount: tags.length, camerasCount: cameras.length, + lensesCount: lenses.length, + tagsCount: tags.length, recipesCount: recipes.length, filmSimulationsCount: filmSimulations.length, focalLengthsCount: focalLengths.length, diff --git a/src/admin/insights/AdminAppInsightsClient.tsx b/src/admin/insights/AdminAppInsightsClient.tsx index eb02c5ec..ad6b7b05 100644 --- a/src/admin/insights/AdminAppInsightsClient.tsx +++ b/src/admin/insights/AdminAppInsightsClient.tsx @@ -3,15 +3,11 @@ import ScoreCard from '@/components/ScoreCard'; import ScoreCardRow from '@/components/ScoreCardRow'; import { dateRangeForPhotos } from '@/photo'; -import PhotoFilmSimulationIcon from '@/simulation/PhotoFilmSimulationIcon'; -import { FaCamera } from 'react-icons/fa'; -import { FaTag } from 'react-icons/fa'; import { FaCircleInfo, FaRegCalendar } from 'react-icons/fa6'; import { HiMiniArrowsUpDown } from 'react-icons/hi2'; -import { HiOutlinePhotograph } from 'react-icons/hi'; import { MdAspectRatio } from 'react-icons/md'; import { PiWarningBold } from 'react-icons/pi'; -import { TbChecklist, TbCone, TbSparkles } from 'react-icons/tb'; +import { TbSparkles } from 'react-icons/tb'; import { BiGitBranch, BiGitCommit, BiLogoGithub } from 'react-icons/bi'; import { TEMPLATE_REPO_BRANCH, @@ -42,6 +38,13 @@ import { pluralize } from '@/utility/string'; import Tooltip from '@/components/Tooltip'; import { useAppState } from '@/state/AppState'; import ScoreCardContainer from '@/components/ScoreCardContainer'; +import IconLens from '@/components/icons/IconLens'; +import IconCamera from '@/components/icons/IconCamera'; +import IconRecipe from '@/components/icons/IconRecipe'; +import IconFilmSimulation from '@/components/icons/IconFilmSimulation'; +import IconFocalLength from '@/components/icons/IconFocalLength'; +import IconTag from '@/components/icons/IconTag'; +import IconPhoto from '@/components/icons/IconPhoto'; const DEBUG_COMMIT_SHA = '4cd29ed'; const DEBUG_COMMIT_MESSAGE = 'Long commit message for debugging purposes'; @@ -88,8 +91,9 @@ export default function AdminAppInsightsClient({ photosCount, photosCountHidden, photosCountOutdated, - tagsCount, camerasCount, + lensesCount, + tagsCount, recipesCount, filmSimulationsCount, focalLengthsCount, @@ -405,8 +409,8 @@ export default function AdminAppInsightsClient({ expandPath={PATH_ADMIN_OUTDATED} />} } content={<> @@ -416,29 +420,38 @@ export default function AdminAppInsightsClient({ /> {CATEGORY_VISIBILITY.map(category => { switch (category) { - case 'tags': - return } - content={pluralize(tagsCount, 'tag')} - />; case 'cameras': return } content={pluralize(camerasCount, 'camera')} />; + case 'lenses': + return } + content={pluralize(lensesCount, 'lens', 'lenses')} + />; + case 'tags': + return } + content={pluralize(tagsCount, 'tag')} + />; case 'recipes': return recipesCount > 0 ? } @@ -449,25 +462,22 @@ export default function AdminAppInsightsClient({ return filmSimulationsCount > 0 ? - - } + icon={} content={pluralize(filmSimulationsCount, 'film simulation')} /> : null; + case 'focal-lengths': + return } + content={pluralize(focalLengthsCount, 'focal length')} + />; } })} - } - content={pluralize(focalLengthsCount, 'focal length')} - /> {descriptionWithSpaces && } content={descriptionWithSpaces} />} diff --git a/src/admin/insights/index.ts b/src/admin/insights/index.ts index 216f0c43..e803346b 100644 --- a/src/admin/insights/index.ts +++ b/src/admin/insights/index.ts @@ -48,8 +48,9 @@ export interface PhotoStats { photosCount: number photosCountHidden: number photosCountOutdated: number - tagsCount: number camerasCount: number + lensesCount: number + tagsCount: number recipesCount: number filmSimulationsCount: number focalLengthsCount: number