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}
-
- | {delve.name} |
- {story} |
-
- {/if}
+ {#each delves as [delve, story, ranking] (story)}
+
+ | {delve.name} |
+ {story} |
+
{/each}
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}`}
+
+ {/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)