From ed282dfea491856cf34706a4c8b7905997802a68 Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Mon, 15 Dec 2025 16:09:21 -0800 Subject: [PATCH] update getJobSkillIcon to accept skill object --- src/lib/components/job/JobSkillItem.svelte | 2 +- src/lib/components/job/JobSkillSlot.svelte | 2 +- .../database/jobs/tabs/JobSkillsTab.svelte | 262 +++++++++++++++++- src/lib/utils/images.ts | 17 +- 4 files changed, 270 insertions(+), 13 deletions(-) diff --git a/src/lib/components/job/JobSkillItem.svelte b/src/lib/components/job/JobSkillItem.svelte index 392d8c80..2b3a23b3 100644 --- a/src/lib/components/job/JobSkillItem.svelte +++ b/src/lib/components/job/JobSkillItem.svelte @@ -14,7 +14,7 @@ let { skill, onClick, disabled = false, variant = 'default', onRemove }: Props = $props() function getSkillIcon(skill: JobSkill): string { - return getJobSkillIcon(skill.slug) + return getJobSkillIcon(skill) } function getSkillColorClass(skill: JobSkill): string { diff --git a/src/lib/components/job/JobSkillSlot.svelte b/src/lib/components/job/JobSkillSlot.svelte index f3e9e7c8..2a0d5e07 100644 --- a/src/lib/components/job/JobSkillSlot.svelte +++ b/src/lib/components/job/JobSkillSlot.svelte @@ -27,7 +27,7 @@ }: Props = $props() const categoryColor = $derived(skill ? getSkillCategoryColor(skill) : '') - const skillIconUrl = $derived(skill?.slug ? getJobSkillIcon(skill.slug) : '') + const skillIconUrl = $derived(skill ? getJobSkillIcon(skill) : '') const isEditable = $derived(editable && !locked && available) const isUnavailable = $derived(!available) diff --git a/src/lib/features/database/jobs/tabs/JobSkillsTab.svelte b/src/lib/features/database/jobs/tabs/JobSkillsTab.svelte index f25d1e05..cd78f150 100644 --- a/src/lib/features/database/jobs/tabs/JobSkillsTab.svelte +++ b/src/lib/features/database/jobs/tabs/JobSkillsTab.svelte @@ -2,20 +2,37 @@
@@ -53,7 +110,12 @@ {:else if skillsQuery.isError}
Failed to load skills
{:else if !skillsQuery.data?.length} -
No skills found for this job
+
+

No skills found for this job

+ {#if canEdit} + + {/if} +
{:else} {#if hasSkills('main')}
@@ -61,7 +123,7 @@
{#each groupedSkills.main as skill}
- {skill.name.en} + {skill.name.en}
{skill.name.en} {#if skill.name.ja} @@ -71,6 +133,32 @@ {getSkillCategoryName(skill)} + {#if canEdit} + + + {#snippet child({ props })} +
{/each}
@@ -83,7 +171,7 @@
{#each groupedSkills.sub as skill}
- {skill.name.en} + {skill.name.en}
{skill.name.en} {#if skill.name.ja} @@ -93,6 +181,32 @@ {getSkillCategoryName(skill)} + {#if canEdit} + + + {#snippet child({ props })} +
{/each}
@@ -105,7 +219,7 @@
{#each groupedSkills.emp as skill}
- {skill.name.en} + {skill.name.en}
{skill.name.en} {#if skill.name.ja} @@ -115,6 +229,32 @@ {getSkillCategoryName(skill)} + {#if canEdit} + + + {#snippet child({ props })} +
{/each}
@@ -127,7 +267,7 @@
{#each groupedSkills.base as skill}
- {skill.name.en} + {skill.name.en}
{skill.name.en} {#if skill.name.ja} @@ -137,14 +277,69 @@ {getSkillCategoryName(skill)} + {#if canEdit} + + + {#snippet child({ props })} +
{/each}
{/if} + + {#if canEdit} +
+ +
+ {/if} {/if}
+ + + {#snippet children()} + + +

+ Are you sure you want to delete "{skillToDelete?.name?.en ?? 'this skill'}"? + This action cannot be undone. +

+
+ + {/snippet} +
+ diff --git a/src/lib/utils/images.ts b/src/lib/utils/images.ts index b8382aa4..f90614b5 100644 --- a/src/lib/utils/images.ts +++ b/src/lib/utils/images.ts @@ -255,10 +255,21 @@ export function getWeaponGridImage( /** * Get job skill icon URL + * Uses slug for the image path */ -export function getJobSkillIcon(slug: string | undefined): string { - if (!slug) return '/images/job-skills/default.png' - return `${getBasePath()}/job-skills/${slug}.png` +export function getJobSkillIcon(skill: { imageId?: string; slug?: string } | string | undefined): string { + if (!skill) return '/images/job-skills/default.png' + + // Handle string input (backward compatibility) + if (typeof skill === 'string') { + return `${getBasePath()}/job-skills/${skill}.png` + } + + // Use slug for the image path + if (skill.slug) { + return `${getBasePath()}/job-skills/${skill.slug}.png` + } + return '/images/job-skills/default.png' } /**