Skip to content

Commit 7122e09

Browse files
committed
show skills corresponding to project
1 parent cf3a629 commit 7122e09

File tree

4 files changed

+34
-7
lines changed

4 files changed

+34
-7
lines changed

src/lib/components/projects/project.svelte

+5-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
import type { ProjectData } from "$lib/data/projects";
33
import { hover3dFactory } from "$lib/utils/hooks/transformHover3d";
44
5-
import Button, {Label} from '@smui/button'
5+
// import Button, {Label} from '@smui/button'
6+
7+
import { currentlySelectedProjectName } from '$lib/stores/project-skill-relation';
68
79
import { _ } from 'svelte-i18n';
810
import { slide } from "svelte/transition";
@@ -25,7 +27,8 @@
2527

2628
<div
2729
class="wrapper"
28-
30+
on:mouseenter={()=> currentlySelectedProjectName.set(projectData.name)}
31+
on:mouseleave={()=> currentlySelectedProjectName.set(null)}
2932
use:hover3dFactory(false)
3033
>
3134
<div id="previewplaceholder">

src/lib/components/skill.svelte

+9-3
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,21 @@
33
import type { SkillData } from '$lib/data/skills';
44
import { hover3dFactory } from '$lib/utils/hooks/transformHover3d';
55
6+
import { isActive } from '$lib/stores/project-skill-relation';
7+
8+
$: active = isActive(skill.name);
9+
610
export let skill: SkillData;
7-
let activated: boolean = false;
11+
let _activated: boolean = false;
12+
$: activated = _activated || $active;
13+
814
</script>
915

1016
<!-- svelte-ignore missing-declaration -->
1117
<div
1218
id="skill"
13-
on:mouseenter={(e) => (activated = true)}
14-
on:mouseleave={(e) => (activated = false)}
19+
on:mouseenter={(e) => (_activated = true)}
20+
on:mouseleave={(e) => (_activated = false)}
1521
use:hover3dFactory(true)
1622
class:activated
1723
>

src/lib/data/projects.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ export interface ProjectData {
44
iconUrl: string;
55
previewUrl: string;
66
description: Description;
7-
link: string
7+
link: string;
8+
relevantSkillNames: string[];
89
}
910

1011

@@ -17,7 +18,8 @@ const passCheck = {
1718
iconUrl: passCheckIcon,
1819
previewUrl: passCheckPreview,
1920
description: passCheckDescriptionComponent,
20-
link: 'https://play.google.com/store/apps/details?id=hannepps.tools.passwordchecker'
21+
link: 'https://play.google.com/store/apps/details?id=hannepps.tools.passwordchecker',
22+
relevantSkillNames: ['Android', 'Svelte', 'Git', 'GitHub', 'VS Code', 'TypeScript', 'Sass'],
2123
}
2224

2325

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import shownProjects from "$lib/data/projects";
2+
import { writable, derived } from "svelte/store";
3+
import type { Writable, Readable } from "svelte/store";
4+
5+
const currentlySelectedProjectName : Writable<string | null> = writable(null);
6+
7+
const activeSkillNames : Readable<string[]> = derived(currentlySelectedProjectName, ($currentlySelectedProjectName) => {
8+
if ($currentlySelectedProjectName === null) return [];
9+
const activeProject = shownProjects.find((project) => project.name === $currentlySelectedProjectName);
10+
if (activeProject === undefined) return [];
11+
return activeProject.relevantSkillNames;
12+
});
13+
14+
const isActive = (skillName: string) => derived(activeSkillNames, ($activeSkillNames) => $activeSkillNames.includes(skillName));
15+
16+
export { currentlySelectedProjectName, activeSkillNames, isActive };

0 commit comments

Comments
 (0)