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