diff --git a/apps/frontend/components/home/view-switcher/Delves.svelte b/apps/frontend/components/home/view-switcher/Delves.svelte index b23d64a70..05d5d9dbf 100644 --- a/apps/frontend/components/home/view-switcher/Delves.svelte +++ b/apps/frontend/components/home/view-switcher/Delves.svelte @@ -1,5 +1,7 @@ @@ -23,14 +23,11 @@

Bountiful Delves

- {#each delves as { poiId, story } (poiId)} - {@const delve = delveMap[poiId]} - {#if delve} - - - - - {/if} + {#each delves as [delve, story, ranking] (story)} + + + + {/each}
{delve.name}{story}
{delve.name}{story}
diff --git a/apps/frontend/components/items/ItemsItem.svelte b/apps/frontend/components/items/ItemsItem.svelte index 27b8f3144..225803215 100644 --- a/apps/frontend/components/items/ItemsItem.svelte +++ b/apps/frontend/components/items/ItemsItem.svelte @@ -104,8 +104,11 @@ }; const statEnchants: Record = { + 7975: uiIcons.circleP, // Perception 7977: uiIcons.circleR, // Resourcefulness + 8003: uiIcons.circleF, // Finesse 8005: uiIcons.circleM, // Multicrafting + 8033: uiIcons.circleD, // Deftness 8035: uiIcons.circleI, // Ingenuity }; diff --git a/apps/frontend/data/delve.ts b/apps/frontend/data/delve.ts index 227875bd0..3006f99bb 100644 --- a/apps/frontend/data/delve.ts +++ b/apps/frontend/data/delve.ts @@ -4,6 +4,7 @@ export type Delve = { storyRanks: Record; }; +// Defaults, only used for initial settings creation export const delveMap: Record = { 8426: { name: 'Collegiate Calamity', diff --git a/apps/frontend/shared/components/forms/CheckboxInput.svelte b/apps/frontend/shared/components/forms/CheckboxInput.svelte index b3a07c8e3..c99be04e5 100644 --- a/apps/frontend/shared/components/forms/CheckboxInput.svelte +++ b/apps/frontend/shared/components/forms/CheckboxInput.svelte @@ -38,7 +38,7 @@ {name} type="checkbox" bind:checked={value} - onchange={(event) => onChange((event.target as HTMLInputElement).checked)} + onchange={(event) => onChange?.((event.target as HTMLInputElement).checked)} {disabled} /> = { [Language.deDE]: 'de', @@ -126,6 +127,15 @@ function createSettingsState() { } } + for (const [poiId, delve] of getNumberKeyedEntries(delveMap)) { + for (const [story, defaultRanking] of Object.entries(delve.storyRanks)) { + const storyKey = `${poiId}:${story}`; + if (newSettings.delveRankings[storyKey] === undefined) { + newSettings.delveRankings[storyKey] = defaultRanking; + } + } + } + if (Object.keys(newSettings.professions.collectingCharactersV2 || {}).length === 0) { for (const [professionId, characterId] of getNumberKeyedEntries( newSettings.professions.collectingCharacters || {} diff --git a/apps/frontend/shared/stores/settings/types/settings.ts b/apps/frontend/shared/stores/settings/types/settings.ts index b9ecac162..a6bfd70b9 100644 --- a/apps/frontend/shared/stores/settings/types/settings.ts +++ b/apps/frontend/shared/stores/settings/types/settings.ts @@ -12,6 +12,7 @@ export interface Settings { activeView: string; customGroups: SettingsCustomGroup[]; customTasks: SettingsTask[]; + delveRankings: Record; guildNames: Record; tags: SettingsTag[]; views: SettingsView[]; diff --git a/apps/frontend/user-home/components/settings/Routes.svelte b/apps/frontend/user-home/components/settings/Routes.svelte index aa4b42043..3affaa9e1 100644 --- a/apps/frontend/user-home/components/settings/Routes.svelte +++ b/apps/frontend/user-home/components/settings/Routes.svelte @@ -8,6 +8,7 @@ import AuctionsCustom from './sections/SettingsAuctionsCustom.svelte'; import Account from './sections/SettingsAccount.svelte'; import Collections from './sections/SettingsCollections.svelte'; + import Delves from './sections/SettingsDelves.svelte'; import History from './sections/SettingsHistory.svelte'; import HomeTable from '@/components/home/HomeTable.svelte'; import Layout from './sections/SettingsLayout.svelte'; @@ -33,6 +34,7 @@ '/auctions/custom': AuctionsCustom, '/auctions': Auctions, '/collections': Collections, + '/delves': Delves, '/history': History, '/leaderboard': Leaderboard, '/privacy': Privacy, diff --git a/apps/frontend/user-home/components/settings/Sidebar.svelte b/apps/frontend/user-home/components/settings/Sidebar.svelte index c629b7447..340e06839 100644 --- a/apps/frontend/user-home/components/settings/Sidebar.svelte +++ b/apps/frontend/user-home/components/settings/Sidebar.svelte @@ -72,6 +72,10 @@ name: 'Collections', slug: 'collections', }, + { + name: 'Delves', + slug: 'delves', + }, { name: 'History', slug: 'history', diff --git a/apps/frontend/user-home/components/settings/sections/SettingsDelves.svelte b/apps/frontend/user-home/components/settings/sections/SettingsDelves.svelte new file mode 100644 index 000000000..787fa2f44 --- /dev/null +++ b/apps/frontend/user-home/components/settings/sections/SettingsDelves.svelte @@ -0,0 +1,62 @@ + + + + +
+

Delves

+ +
+ {#each delves as [poiId, delve] (poiId)} + {@const stories = sortBy(Object.keys(delve.storyRanks))} +
+

{delve.name}

+ {#each stories as story (story)} + {@const storyKey = `${poiId}:${story}`} +
+
+ {story} +
+
+ +
+
+ {/each} +
+ {/each} +
+
diff --git a/packages/csharp-lib/Models/ApplicationUserSettings.cs b/packages/csharp-lib/Models/ApplicationUserSettings.cs index d94ac07dd..e78279f27 100644 --- a/packages/csharp-lib/Models/ApplicationUserSettings.cs +++ b/packages/csharp-lib/Models/ApplicationUserSettings.cs @@ -27,6 +27,7 @@ public class ApplicationUserSettings public Dictionary Accounts { get; set; } = new(); public List? CustomGroups { get; set; } = new(); public List? CustomTasks { get; set; } = new(); + public Dictionary DelveRankings { get; set; } = new(); public Dictionary GuildNames { get; set; } = new(); public List? Tags { get; set; } = new(); public List? Views { get; set; } = new(); @@ -141,6 +142,7 @@ public void Migrate() CustomGroups ??= new List(); CustomTasks ??= new(); + DelveRankings ??= new Dictionary(); Views ??= new List(); if (Views.Count == 0)