Skip to content
Merged

Deploy #1825

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 2 additions & 8 deletions apps/frontend/components/home/HomeTable.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import { Constants } from '@/data/constants';
import { settingsState } from '@/shared/state/settings.svelte';
import { sharedState } from '@/shared/state/shared.svelte';
import { removedHomeChoices } from '@/user-home/components/settings/data';
import { delegatedTooltips } from './utils/delegated-tooltips';

import CharacterTable from '@/components/character-table/CharacterTable.svelte';
Expand All @@ -11,7 +12,6 @@
import RowCovenant from './table/row/HomeTableRowCovenant.svelte';
import RowCurrencies from './table/row/HomeTableRowCurrencies.svelte';
import RowCurrentLocation from './table/row/HomeTableRowCurrentLocation.svelte';
import RowDailies from './table/row/HomeTableRowDailies.svelte';
import RowGear from './table/row/HomeTableRowGear.svelte';
import RowGold from './table/row/HomeTableRowGold.svelte';
import RowGoldWorldQuests from './table/row/HomeTableRowGoldWorldQuests.svelte';
Expand Down Expand Up @@ -73,18 +73,12 @@
<RowBagSpace {character} />
{:else if field === 'bestItemLevel'}
<RowBestItemLevel {character} />
{:else if field === 'callings'}
<RowDailies expansion={8} {character} />
{:else if field === 'covenant'}
<RowCovenant {character} />
{:else if field === 'currencies'}
<RowCurrencies {character} />
{:else if field === 'currentLocation'}
<RowCurrentLocation {character} />
{:else if field === 'emissariesBfa'}
<RowDailies expansion={7} {character} />
{:else if field === 'emissariesLegion'}
<RowDailies expansion={6} {character} />
{:else if field === 'gear'}
<RowGear {character} />
{:else if field === 'gold'}
Expand Down Expand Up @@ -155,7 +149,7 @@
<RowVaultRaid {character} />
{:else if field === 'vaultWorld'}
<RowVaultWorld {character} />
{:else}
{:else if !removedHomeChoices.has(field)}
<td>&nbsp;</td>
{/if}
{/each}
Expand Down
16 changes: 2 additions & 14 deletions apps/frontend/components/home/table/HomeTableGroupHead.svelte
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<script lang="ts">
import sumBy from 'lodash/sumBy';

import { iconStrings } from '@/data/icons';
import { iconLibrary } from '@/shared/icons';
import { browserState } from '@/shared/state/browser.svelte';
import { sharedState } from '@/shared/state/shared.svelte';
import { settingsState } from '@/shared/state/settings.svelte';
import { removedHomeChoices } from '@/user-home/components/settings/data';
import type { Character } from '@/types';
import type { GroupByContext } from '@/utils/get-character-group-func';

Expand Down Expand Up @@ -140,24 +140,12 @@
data-tooltip="Best Item Level"
onclick={() => setSortState()}>Best</td
>
{:else if field === 'callings'}
<td data-tooltip="Shadowlands Callings">
<IconifyWrapper icon={iconStrings['calendar-quest']} /> SL
</td>
{:else if field === 'covenant'}
<HeadCovenant />
{:else if field === 'currencies'}
<HeadCurrencies {getSortState} {setSortState} />
{:else if field === 'currentLocation'}
<HeadCurrentLocation {getSortState} {setSortState} />
{:else if field === 'emissariesBfa'}
<td data-tooltip="Battle for Azeroth Emissaries">
<IconifyWrapper icon={iconStrings['calendar-quest']} /> BfA
</td>
{:else if field === 'emissariesLegion'}
<td data-tooltip="Legion Emissaries">
<IconifyWrapper icon={iconStrings['calendar-quest']} /> Legion
</td>
{:else if field === 'gear'}
<td>Gear</td>
{:else if field === 'gold'}
Expand Down Expand Up @@ -258,7 +246,7 @@
<td class="sortable sorted-{getSortState()}" onclick={() => setSortState()}
>World <IconifyWrapper icon={iconLibrary.mdiSafeSquareOutline} /></td
>
{:else}
{:else if !removedHomeChoices.has(field)}
<td>&nbsp;</td>
{/if}
{/each}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import { timeState } from '@/shared/state/time.svelte';
import { componentTooltip } from '@/shared/utils/tooltips';
import { zoneMap } from '@/user-home/components/world-quests/data';
import { dynamicDataStore } from '@/user-home/stores/dynamicData';
import { dynamicDataStore } from '@/user-home/stores/dynamicData.svelte';
import { userState } from '@/user-home/state/user';
import { getNumberKeyedEntries } from '@/utils/get-number-keyed-entries';
import type { CharacterProps } from '@/types/props';
Expand Down
2 changes: 1 addition & 1 deletion apps/frontend/components/home/view-switcher/Delves.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import { settingsState } from '@/shared/state/settings.svelte';
import { componentTooltip } from '@/shared/utils/tooltips';
import { userState } from '@/user-home/state/user';
import { dynamicDataStore } from '@/user-home/stores/dynamicData';
import { dynamicDataStore } from '@/user-home/stores/dynamicData.svelte';

import DelvesTooltip from './DelvesTooltip.svelte';
import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte';
Expand Down
17 changes: 17 additions & 0 deletions apps/frontend/components/tooltips/task/TooltipTaskRow.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@

import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte';
import ParsedText from '@/shared/components/parsed-text/ParsedText.svelte';
import { timeState } from '@/shared/state/time.svelte';
import { toNiceDuration } from '@/utils/formatting';

type Props = {
characterId: number;
Expand Down Expand Up @@ -47,6 +49,14 @@
ret.push(currentSet);
}

if (task.sortByExpiry) {
for (const choreSet of ret) {
choreSet.sort((a, b) => {
return a.expiresAt.diff(b.expiresAt).toMillis();
});
}
}

return ret;
});

Expand Down Expand Up @@ -162,6 +172,13 @@
<IconifyWrapper icon={uiIcons.squareA} cls="status-shrug" />
{/if}

{#if task.showExpiry}
{@const remaining = charTaskChore.expiresAt
.diff(timeState.slowTime)
.toMillis()}
<code>[{toNiceDuration(remaining, { useNbsp: false })}]</code>
{/if}

<ParsedText text={charTaskChore.name} />
</td>
<td class="status">
Expand Down
2 changes: 1 addition & 1 deletion apps/frontend/components/zone-maps/ZoneMapsThing.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import { userQuestStore } from '@/stores';
import { zoneMapState } from '@/stores/local-storage/zone-map';
import { userState } from '@/user-home/state/user';
import { dynamicDataStore } from '@/user-home/stores/dynamicData';
import { dynamicDataStore } from '@/user-home/stores/dynamicData.svelte';
import { getInstanceFarm } from '@/utils/get-instance-farm';
import { getFarmIcon } from '@/utils/zone-maps';
import type { FarmStatus } from '@/types';
Expand Down
1 change: 1 addition & 0 deletions apps/frontend/data/currencies.ts
Original file line number Diff line number Diff line change
Expand Up @@ -464,6 +464,7 @@ export const currencyItems: Record<number, number[]> = {
// Midnight - Season 2
126412: [
274476, // Spark of Tides
280562, // Ascendant Venomstone
269862, // Thalassian Token of Merit
null,
276547, // Afflicted Soul
Expand Down
26 changes: 26 additions & 0 deletions apps/frontend/data/holidays.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { Holiday } from '@/enums/holiday';
import { getNumberKeyedEntries } from '@/utils/get-number-keyed-entries';

export const holidayMinimumLevel: Record<number, number> = {
// Timewalking: TBC
Expand Down Expand Up @@ -277,3 +278,28 @@ export const fancyHolidays: FancyHoliday[] = [
everything: 'anniversary',
},
];

export const callingQuestToHoliday: Record<number, Holiday> = {
60458: Holiday.CallingAnimaSalvage,
60415: Holiday.CallingRareResources,
60454: Holiday.CallingStormTheMaw,
60391: Holiday.CallingAidingArdenweald,
60392: Holiday.CallingAidingBastion,
60395: Holiday.CallingAidingMaldraxxus,
60400: Holiday.CallingAidingRevendreth,
60424: Holiday.CallingCallArdenweald,
60426: Holiday.CallingCallBastion,
60430: Holiday.CallingCallMaldraxxus,
60434: Holiday.CallingCallRevendreth,
60439: Holiday.CallingChallengesArdenweald,
60442: Holiday.CallingChallengesBastion,
60447: Holiday.CallingChallengesMaldraxxus,
60450: Holiday.CallingChallengesRevendreth,
60403: Holiday.CallingTrainingArdenweald,
60405: Holiday.CallingTrainingBastion,
60407: Holiday.CallingTrainingMaldraxxus,
60412: Holiday.CallingTrainingRevendreth,
};
export const holidayToCallingQuest = Object.fromEntries(
getNumberKeyedEntries(callingQuestToHoliday).map(([questId, holiday]) => [holiday, questId])
);
2 changes: 2 additions & 0 deletions apps/frontend/data/tasks/06-legion/emissaryQuests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ export const legionEmissaryQuests: Task = {
key: 'legionEmissaryQuests',
name: '[Legion] Emissaries',
shortName: 'Leg',
showExpiry: true,
showSeparate: true,
sortByExpiry: true,
chores: [
{
key: 'courtFarondis',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ export const bfaEmissaryQuests: Task = {
key: 'bfaEmissaryQuests',
name: '[BfA] Emissaries',
shortName: 'BfA',
showExpiry: true,
showSeparate: true,
sortByExpiry: true,
chores: [
{
key: 'champions',
Expand Down
134 changes: 134 additions & 0 deletions apps/frontend/data/tasks/08-shadowlands/callings.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
import { DbResetType } from '@/shared/stores/db/enums';
import type { Chore, Task } from '@/types/tasks';
import { threeDayDecorator } from '../utils';
import { Holiday } from '@/enums/holiday';
import { holidayToCallingQuest } from '@/data/holidays';
import { dynamicDataStore } from '@/user-home/stores/dynamicData.svelte';

export const callingChoreData = (holiday: Holiday, questIds: number[]): Partial<Chore> => {
const callingQuestId = holidayToCallingQuest[holiday];
return {
noTooltipIcon: true,
questReset: DbResetType.Custom,
questResetForced: true,
questIds,
requiredHolidays: [holiday],
customExpiryFunc: (chore, char, scannedAt, questIds) => {
const dynamicData = dynamicDataStore.getCached(char.region);
const activeEmissaryQuests = Object.values(dynamicData.emissaryQuests).flat();
return activeEmissaryQuests.find((eq) => eq.questId === callingQuestId)?.expiresAt;
},
decorationFunc: threeDayDecorator,
};
};

export const slCallings: Task = {
key: 'slCallings',
name: '[SL] Callings',
shortName: 'SL',
minimumLevel: 60,
showExpiry: true,
showSeparate: true,
sortByExpiry: true,
chores: [
{
key: 'animaSalvage',
name: 'Anima Salvage',
...callingChoreData(Holiday.CallingAnimaSalvage, [60457, 60458, 60459, 60460]),
},
{
key: 'rareResources',
name: 'Rare Resources',
...callingChoreData(Holiday.CallingRareResources, [60414, 60415, 60416, 60417]),
},
{
key: 'stormTheMaw',
name: 'Storm the Maw',
...callingChoreData(Holiday.CallingStormTheMaw, [60452, 60454, 60455, 60456]),
},

{
key: 'aidingArdenweald',
name: 'Ardenweald Aiding',
...callingChoreData(Holiday.CallingAidingArdenweald, [60381, 60389, 60390, 60391]),
},
{
key: 'callArdenweald',
name: 'Ardenweald Call',
...callingChoreData(Holiday.CallingCallArdenweald, [60419, 60422, 60423, 60424]),
},
{
key: 'challengesArdenweald',
name: 'Ardenweald Challenges',
...callingChoreData(Holiday.CallingChallengesArdenweald, [60438, 60439, 60440, 60441]),
},
{
key: 'trainingArdenweald',
name: 'Ardenweald Training',
...callingChoreData(Holiday.CallingTrainingArdenweald, [60388, 60401, 60402, 60403]),
},

{
key: 'aidingBastion',
name: 'Bastion Aiding',
...callingChoreData(Holiday.CallingAidingBastion, [60384, 60392, 60393, 60394]),
},
{
key: 'callBastion',
name: 'Bastion Call',
...callingChoreData(Holiday.CallingCallBastion, [60418, 60425, 60426, 60427]),
},
{
key: 'challengesBastion',
name: 'Bastion Challenges',
...callingChoreData(Holiday.CallingChallengesBastion, [60437, 60442, 60443, 60444]),
},
{
key: 'trainingBastion',
name: 'Bastion Training',
...callingChoreData(Holiday.CallingTrainingBastion, [60387, 60404, 60405, 60406]),
},

{
key: 'aidingMaldraxxus',
name: 'Maldraxxus Aiding',
...callingChoreData(Holiday.CallingAidingMaldraxxus, [60383, 60395, 60396, 60397]),
},
{
key: 'callMaldraxxus',
name: 'Maldraxxus Call',
...callingChoreData(Holiday.CallingCallMaldraxxus, [60420, 60429, 60430, 60431]),
},
{
key: 'challengesMaldraxxus',
name: 'Maldraxxus Challenges',
...callingChoreData(Holiday.CallingChallengesMaldraxxus, [60436, 60445, 60446, 60447]),
},
{
key: 'trainingMaldraxxus',
name: 'Maldraxxus Training',
...callingChoreData(Holiday.CallingTrainingMaldraxxus, [60386, 60407, 60408, 60409]),
},

{
key: 'aidingRevendreth',
name: 'Revendreth Aiding',
...callingChoreData(Holiday.CallingAidingRevendreth, [60382, 60398, 60400, 60401]),
},
{
key: 'callRevendreth',
name: 'Revendreth Call',
...callingChoreData(Holiday.CallingCallRevendreth, [60421, 60432, 60433, 60434]),
},
{
key: 'challengesRevendreth',
name: 'Revendreth Challenges',
...callingChoreData(Holiday.CallingChallengesRevendreth, [60435, 60448, 60449, 60450]),
},
{
key: 'trainingRevendreth',
name: 'Revendreth Training',
...callingChoreData(Holiday.CallingTrainingRevendreth, [60385, 60410, 60411, 60412]),
},
],
};
3 changes: 2 additions & 1 deletion apps/frontend/data/tasks/08-shadowlands/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { slCallings } from './callings';
import { slChores } from './chores';
import { slCovenants } from './covenants';

export const slTasks = [slChores, slCovenants];
export const slTasks = [slChores, slCovenants, slCallings];
2 changes: 1 addition & 1 deletion apps/frontend/data/tasks/11-midnight/12-0.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { Constants } from '@/data/constants';
import { aliasedIcons, iconLibrary, uiIcons } from '@/shared/icons';
import { timeState } from '@/shared/state/time.svelte';
import { DbResetType } from '@/shared/stores/db/enums';
import { dynamicDataStore } from '@/user-home/stores/dynamicData';
import { dynamicDataStore } from '@/user-home/stores/dynamicData.svelte';
import type { Character } from '@/types';
import type { Chore, Task } from '@/types/tasks';
import { twoWeekDecorator } from './utils';
Expand Down
2 changes: 1 addition & 1 deletion apps/frontend/data/tasks/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { emissaryQuestToHoliday, holidayToReputations } from '@/data/reputation'
import { Expansion } from '@/enums/expansion';
import { timeState } from '@/shared/state/time.svelte';
import { DbResetType } from '@/shared/stores/db/enums';
import { dynamicDataStore } from '@/user-home/stores/dynamicData';
import { dynamicDataStore } from '@/user-home/stores/dynamicData.svelte';
import type { Holiday } from '@/enums/holiday';
import type { Chore } from '@/types/tasks';

Expand Down
Loading
Loading