diff --git a/src/lib/utils.ts b/src/lib/utils.ts index d3d0eef..fc08c9d 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -78,3 +78,10 @@ export function calculateMarketPrice( return Math.round(-m * shopScoreRemainder + maxPrice); } } + +export function getProjectLinkType(editorFileType: string | null, editorUrl: string | null, uploadedFileUrl: string | null): string { + if (editorFileType === 'url' && editorUrl?.includes('cad.onshape.com')) return 'onshape'; + if (editorFileType === 'url' && editorUrl?.includes('autodesk360.com')) return 'fusion-link'; + if (editorFileType === 'upload' && uploadedFileUrl?.endsWith('.f3d')) return 'fusion-file'; + return 'unknown'; +} diff --git a/src/routes/dashboard/admin/review/+page.server.ts b/src/routes/dashboard/admin/review/+page.server.ts index 1abf3bf..0a38355 100644 --- a/src/routes/dashboard/admin/review/+page.server.ts +++ b/src/routes/dashboard/admin/review/+page.server.ts @@ -12,7 +12,7 @@ export async function load({ locals }) { throw error(403, { message: 'oi get out' }); } - const projects = await getProjects(['submitted'], [], []); + const projects = await getProjects(['submitted'], [], [], []); const allProjects = await db .select({ @@ -61,14 +61,18 @@ export const actions = { return parseInt(userId.toString()); }); - const projects = await getProjects(statusFilter, projectFilter, userFilter); + const typeFilter = data.getAll('type') as string[]; + + + const projects = await getProjects(statusFilter, projectFilter, userFilter, typeFilter); return { projects, fields: { status: statusFilter, project: projectFilter, - user: userFilter + user: userFilter, + type: typeFilter } }; } @@ -77,7 +81,8 @@ export const actions = { async function getProjects( statusFilter: (typeof project.status._.data)[], projectFilter: number[], - userFilter: number[] + userFilter: number[], + typeFilter: string[] ) { return await db .select({ @@ -86,8 +91,11 @@ async function getProjects( name: project.name, description: project.description, url: project.url, - createdAt: project.createdAt, - status: project.status + editorFileType: project.editorFileType, + editorUrl: project.editorUrl, + uploadedFileUrl: project.uploadedFileUrl, + status: project.status, + createdAt: project.createdAt }, user: { id: user.id, @@ -112,6 +120,9 @@ async function getProjects( project.name, project.description, project.url, + project.editorFileType, + project.editorUrl, + project.uploadedFileUrl, project.createdAt, project.status, user.id, diff --git a/src/routes/dashboard/admin/review/+page.svelte b/src/routes/dashboard/admin/review/+page.svelte index 2f5c3e8..5847fc3 100644 --- a/src/routes/dashboard/admin/review/+page.svelte +++ b/src/routes/dashboard/admin/review/+page.svelte @@ -1,7 +1,7 @@ @@ -42,7 +49,7 @@ }; }} > -
+ Type: {getProjectLinkType(project.project.editorFileType, project.project.editorUrl, project.project.uploadedFileUrl)} +
{project.devlogCount} journal{project.devlogCount !== 1 ? 's' : ''} ∙ {Math.floor( project.timeSpent / 60 diff --git a/src/routes/dashboard/admin/review/[id]/+page.svelte b/src/routes/dashboard/admin/review/[id]/+page.svelte index e7206f5..ac51e4d 100644 --- a/src/routes/dashboard/admin/review/[id]/+page.svelte +++ b/src/routes/dashboard/admin/review/[id]/+page.svelte @@ -3,7 +3,7 @@ import Devlog from '$lib/components/Devlog.svelte'; import Head from '$lib/components/Head.svelte'; import { enhance } from '$app/forms'; - import { projectStatuses } from '$lib/utils.js'; + import { projectStatuses, getProjectLinkType} from '$lib/utils.js'; import ProjectLinks from '$lib/components/ProjectLinks.svelte'; import Spinny3DPreview from '$lib/components/Spinny3DPreview.svelte'; import { Download } from '@lucide/svelte'; @@ -49,6 +49,7 @@ uploadedFileUrl={data.project.project.uploadedFileUrl} />
Type: {getProjectLinkType(data.project.project.editorFileType, data.project.project.editorUrl, data.project.project.uploadedFileUrl)}