From 0afb086155c9c8ce885531c1ccc1afe14965b967 Mon Sep 17 00:00:00 2001 From: Made Baruna Date: Tue, 20 Sep 2022 14:44:32 +0700 Subject: [PATCH] Adjust item list Fix #311 --- src/routes/_index/item.svelte | 56 ++++++++++++++++++++++++++++------- src/routes/items.svelte | 42 +++++++++++++++++++++++--- src/service-worker.js | 6 +++- 3 files changed, 88 insertions(+), 16 deletions(-) diff --git a/src/routes/_index/item.svelte b/src/routes/_index/item.svelte index 8d99cbdb..8539a7ba 100644 --- a/src/routes/_index/item.svelte +++ b/src/routes/_index/item.svelte @@ -12,21 +12,47 @@ const dispatch = createEventDispatcher(); let today = getCurrentDay(); - let characterItems = {}; + let characterItems = []; let weaponItems = {}; + const order = { + teachings_of_freedom: 0, + teachings_of_prosperity: 1, + teachings_of_transience: 2, + teachings_of_admonition: 3, + teachings_of_resistance: 4, + teachings_of_diligence: 5, + teachings_of_elegance: 6, + teachings_of_ingenuity: 7, + teachings_of_ballad: 8, + teachings_of_gold: 9, + teachings_of_light: 10, + teachings_of_praxis: 11, + }; + function parseTalentBook() { const _characters = {}; const _weapons = {}; for (const [_, character] of Object.entries(characters)) { + const isTraveler = character.id.startsWith('traveler'); const item = character.material.book[0]; - if (!item.day.includes(today)) continue; - - if (_characters[item.id] === undefined) { - _characters[item.id] = []; + if (!isTraveler) { + if (!item.day.includes(today)) continue; + if (_characters[item.id] === undefined) { + _characters[item.id] = []; + } + _characters[item.id].push(character.id); + } else { + for (let i = 0; i <= 2; i++) { + const e = character.material.book[i]; + if (!e.day.includes(today)) continue; + if (_characters[e.parent] === undefined) { + _characters[e.parent] = []; + } + _characters[e.parent].push(character.id); + } } - _characters[item.id].push(character.id); } for (const [_, weapon] of Object.entries(weaponList)) { @@ -41,7 +67,7 @@ } } - characterItems = _characters; + characterItems = Object.entries(_characters).sort((a, b) => order[a[0]] - order[b[0]]); weaponItems = _weapons; } @@ -69,22 +95,30 @@
{$t('home.items.sunday')}
{:else} - {#each Object.entries(characterItems) as [id, characters]} + {#each characterItems as [id, characters]} @@ -93,7 +127,7 @@ diff --git a/src/routes/items.svelte b/src/routes/items.svelte index b0408e9e..d5f30c0f 100644 --- a/src/routes/items.svelte +++ b/src/routes/items.svelte @@ -71,9 +71,24 @@ }; charactersDays = { - monday_thursday: {}, - tuesday_friday: {}, - wednesday_saturday: {}, + monday_thursday: { + teachings_of_freedom: [], + teachings_of_prosperity: [], + teachings_of_transience: [], + teachings_of_admonition: [], + }, + tuesday_friday: { + teachings_of_resistance: [], + teachings_of_diligence: [], + teachings_of_elegance: [], + teachings_of_ingenuity: [], + }, + wednesday_saturday: { + teachings_of_ballad: [], + teachings_of_gold: [], + teachings_of_light: [], + teachings_of_praxis: [], + }, }; weaponsDays = { @@ -98,6 +113,17 @@ } charactersDays[item.day.join('_')][item.id].push(character.id); + if (character.id.startsWith('traveler')) { + for (let i = 1; i <= 2; i++) { + const e = character.material.book[i]; + const parent = itemList[e.parent]; + if (charactersDays[parent.day.join('_')][parent.id] === undefined) { + charactersDays[parent.day.join('_')][parent.id] = []; + } + charactersDays[parent.day.join('_')][parent.id].push(character.id); + } + } + const ascension = character.ascension[1]; for (const item of ascension.items) { if (item.amount) { @@ -217,7 +243,7 @@ + {#if char.startsWith('traveler')} + + {/if} {/each} diff --git a/src/service-worker.js b/src/service-worker.js index cd74a927..d5932869 100644 --- a/src/service-worker.js +++ b/src/service-worker.js @@ -7,7 +7,11 @@ const IMAGE_CACHE = `cacheimg${IMAGE_CACHE_VER}`; const IMAGE_URL = `${self.location.origin}/images/`; -const changelog = ['Update excel import to support other language', 'Update character guides']; +const changelog = [ + 'Adjust item list for traveler', + 'Update excel import to support other language', + 'Update character guides', +]; const channel = new BroadcastChannel('paimonmoe-sw');
{id} {#each characters as char} - + {char} + {#if char.startsWith('traveler')} + + {/if} {/each}
{#each Object.entries(weaponItems) as [id, _]} - {id} + {id} {/each}