Skip to content
Merged

Deploy #1738

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
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@

<style lang="scss">
td {
--image-border-width: 2px;
--padding-left: 0;
--padding-right: 0;
--width: 2rem;

word-spacing: -0.2ch;
Expand All @@ -18,11 +21,12 @@

{#each settingsState.activeView.homeItems as itemId (itemId)}
{@const itemIdString = itemId.toString()}
{@const item = wowthingData.items.items[itemId]}
<td
class="sortable sorted-{getSortState(itemIdString)}"
class="sortable sorted-{getSortState(itemIdString)} quality{item?.quality || 1}-border"
data-tooltip={wowthingData.items.items[itemId].name}
onclick={() => setSortState(itemIdString)}
>
<WowthingImage name="item/{itemId}" size={16} border={1} />
<WowthingImage name="item/{itemId}" size={16} border={2} />
</td>
{/each}
145 changes: 13 additions & 132 deletions apps/frontend/components/home/table/row/HomeTableRowProfessionsV2.svelte
Original file line number Diff line number Diff line change
@@ -1,19 +1,11 @@
<script lang="ts">
import { getCharacterTableContext } from '@/components/character-table/context';
import { Constants } from '@/data/constants';
import { imageStrings } from '@/data/icons';
import { expansionProfessionConcentration } from '@/data/professions/cooldowns';
import { professionMoxie } from '@/data/professions/moxie';
import { Region } from '@/enums/region';
import { settingsState } from '@/shared/state/settings.svelte';
import { wowthingData } from '@/shared/stores/data';
import { timeStore } from '@/shared/stores/time';
import { componentTooltip } from '@/shared/utils/tooltips/component-tooltip.svelte';
import { getCurrencyData } from '@/utils/characters/get-currency-data';
import type { CharacterProps } from '@/types/props';

import Tooltip from '@/components/tooltips/professions/TooltipProfessions.svelte';
import WowthingImage from '@/shared/components/images/sources/WowthingImage.svelte';
import Profession from './HomeTableRowProfessionsV2Profession.svelte';

let { character }: CharacterProps = $props();

Expand Down Expand Up @@ -49,18 +41,6 @@
(fields.includes('concentration') && anyConcentration[1] ? 1 : 0) +
(fields.includes('moxie') && anyMoxie[1] ? 1 : 0),
]);

function statusClass(fullIsBad: boolean, percent: number) {
if (percent >= 100) {
return fullIsBad ? 'status-fail' : 'status-success';
} else if (percent >= 75) {
return fullIsBad ? 'status-warn' : 'status-shrug';
} else if (percent > 25 && percent < 75) {
return fullIsBad ? 'status-shrug' : 'status-warn';
} else {
return fullIsBad ? 'status-success' : 'status-fail';
}
}
</script>

<style lang="scss">
Expand All @@ -78,125 +58,26 @@
.professions {
display: grid;
width: 100%;
}
.profession {
align-items: center;
align-self: center;
display: grid;
flex-wrap: nowrap;
gap: 0.4rem;
grid-template-columns: repeat(var(--columns), var(--profession-width));
padding: 0 0.3rem;

> * {
width: var(--profession-width);
}
}
a {
--image-margin-top: 0;

align-items: center;
color: var(--color-body-text);
display: flex;
justify-content: space-between;
}
.concentration,
.moxie {
align-items: center;
display: flex;
gap: 0.2rem;
justify-content: space-between;

&:not(:first-child) {
--image-margin-top: 0;
:global(> :not(:first-child)) {
border-left: 1px solid var(--border-color);
}
}
</style>

<td class="b-l">
<div class="professions" style:grid-template-columns="{columnCounts[0]}fr {columnCounts[1]}fr">
{#each professions as [profession, charProfession, current], index (profession.id)}
{@const currentSkill = charProfession?.skillCurrent || 0}
<div
class="profession"
class:b-l={index > 0}
style:--columns={columnCounts[index]}
data-id={profession.id}
>
<a
href="#/characters/{Region[character.realm.region].toLowerCase()}-{character
.realm.slug}/{character.name}/professions/{profession.slug}"
use:componentTooltip={{
component: Tooltip,
props: {
character,
profession,
},
}}
>
<WowthingImage name={imageStrings[profession.slug]} size={20} border={1} />
<span
class:status-fail={!current || currentSkill === 0}
class:status-success={current &&
currentSkill > 0 &&
currentSkill >= charProfession.skillMax}
>
{currentSkill || '---'}
</span>
</a>

{#if current}
{#each fields as field (field)}
{#if field === 'concentration' && anyConcentration[index]}
{@const concCurrency = wowthingData.static.currencyById.get(
concentrationData[profession.id]
)}
{#if concCurrency}
{@const { amount, percent, tooltip } = getCurrencyData(
$timeStore,
character,
concCurrency
)}
{@const status = statusClass(
settingsState.value.professions.fullConcentrationIsBad,
percent
)}
<div class="concentration {status}" data-tooltip={tooltip}>
<WowthingImage
name="currency/{concCurrency.id}"
size={20}
border={1}
/>
<span>{amount}</span>
</div>
{:else}
<div class="concentration"></div>
{/if}
{:else if field === 'moxie' && anyMoxie[index]}
{@const moxieCurrency = wowthingData.static.currencyById.get(
professionMoxie[profession.id]
)}
{#if moxieCurrency}
{@const { amount, tooltip } = getCurrencyData(
$timeStore,
character,
moxieCurrency
)}
<div class="moxie" data-tooltip={tooltip}>
<WowthingImage
name="currency/{moxieCurrency.id}"
size={20}
border={1}
/>
<span>{amount}</span>
</div>
{:else}
<div class="moxie"></div>
{/if}
{/if}
{/each}
{/if}
</div>
<Profession
columns={columnCounts[index]}
showConcentration={anyConcentration[index]}
showMoxie={anyMoxie[index]}
{character}
{charProfession}
{fields}
{profession}
{current}
/>
{/each}
</div>
</td>
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
<script lang="ts">
import { Constants } from '@/data/constants';
import { imageStrings } from '@/data/icons';
import { expansionProfessionConcentration } from '@/data/professions/cooldowns';
import { professionMoxie } from '@/data/professions/moxie';
import { Region } from '@/enums/region';
import { settingsState } from '@/shared/state/settings.svelte';
import { timeState } from '@/shared/state/time.svelte';
import { wowthingData } from '@/shared/stores/data';
import { componentTooltip } from '@/shared/utils/tooltips/component-tooltip.svelte';
import { getCurrencyData } from '@/utils/characters/get-currency-data';
import type { StaticDataProfession } from '@/shared/stores/static/types';
import type { CharacterSubProfession } from '@/types';
import type { CharacterProps } from '@/types/props';

import Tooltip from '@/components/tooltips/professions/TooltipProfessions.svelte';
import WowthingImage from '@/shared/components/images/sources/WowthingImage.svelte';

type Props = CharacterProps & {
charProfession: CharacterSubProfession;
columns: number;
current: boolean;
fields: string[];
profession: StaticDataProfession;
showConcentration: boolean;
showMoxie: boolean;
};
let {
character,
charProfession,
columns,
current,
fields,
profession,
showConcentration,
showMoxie,
}: Props = $props();

const concentrationData = expansionProfessionConcentration[Constants.expansion];

let currentSkill = $derived(charProfession.skillCurrent || 0);

let concCurrency = $derived(
wowthingData.static.currencyById.get(concentrationData[profession.id])
);
let concData = $derived(
concCurrency && getCurrencyData(timeState.slowTime, character, concCurrency)
);

let moxieCurrency = $derived(
wowthingData.static.currencyById.get(professionMoxie[profession.id])
);
let moxieData = $derived(
moxieCurrency && getCurrencyData(timeState.slowTime, character, moxieCurrency)
);

function statusClass(fullIsBad: boolean, percent: number) {
if (percent >= 100) {
return fullIsBad ? 'status-fail' : 'status-success';
} else if (percent >= 75) {
return fullIsBad ? 'status-warn' : 'status-shrug';
} else if (percent > 25 && percent < 75) {
return fullIsBad ? 'status-shrug' : 'status-warn';
} else {
return fullIsBad ? 'status-success' : 'status-fail';
}
}
</script>

<style lang="scss">
.profession {
align-items: center;
align-self: center;
display: grid;
flex-wrap: nowrap;
gap: 0.4rem;
grid-template-columns: repeat(var(--columns), var(--profession-width));
padding: 0 0.3rem;

> * {
width: var(--profession-width);
}
}
a {
--image-margin-top: 0;

align-items: center;
color: var(--color-body-text);
display: flex;
justify-content: space-between;
}
.concentration,
.moxie {
align-items: center;
display: flex;
gap: 0.2rem;
justify-content: space-between;

&:not(:first-child) {
--image-margin-top: 0;
}
}
</style>

<div class="profession" style:--columns={columns} data-id={profession.id}>
<a
href="#/characters/{Region[character.realm.region].toLowerCase()}-{character.realm
.slug}/{character.name}/professions/{profession.slug}"
use:componentTooltip={{
component: Tooltip,
props: {
character,
profession,
},
}}
>
<WowthingImage name={imageStrings[profession.slug]} size={20} border={1} />
<span
class:status-fail={!current || currentSkill === 0}
class:status-success={current &&
currentSkill > 0 &&
currentSkill >= charProfession.skillMax}
>
{currentSkill || '---'}
</span>
</a>

{#if current}
{#each fields as field (field)}
{#if field === 'concentration' && showConcentration}
{#if concData}
{@const { amount, percent, tooltip } = concData}
{@const status = statusClass(
settingsState.value.professions.fullConcentrationIsBad,
percent
)}
<div class="concentration {status}" data-tooltip={tooltip}>
<WowthingImage name="currency/{concCurrency.id}" size={20} border={1} />
<span>{amount}</span>
</div>
{:else}
<div class="concentration"></div>
{/if}
{:else if field === 'moxie' && showMoxie}
{#if moxieData}
{@const { amount, tooltip } = moxieData}
<div class="moxie" data-tooltip={tooltip}>
<WowthingImage name="currency/{moxieCurrency.id}" size={20} border={1} />
<span>{amount}</span>
</div>
{:else}
<div class="moxie"></div>
{/if}
{/if}
{/each}
{/if}
</div>
26 changes: 14 additions & 12 deletions apps/frontend/data/tasks/11-midnight/delves.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,18 +30,20 @@ export const midDelves: Task = {
subChoresAnyOrder: true,
questReset: DbResetType.Weekly,
questResetForced: true,
subChores: [
{
key: 'get',
name: 'Get Bounty',
questIds: [86371],
},
{
key: 'use',
name: 'Use Bounty',
questIds: [92887],
},
],
questIds: [86371],
// This seems wrong, I got no tracking quest for using the map or looting the box
// subChores: [
// {
// key: 'get',
// name: 'Get Bounty',
// questIds: [86371],
// },
// {
// key: 'use',
// name: 'Use Bounty',
// questIds: [92887],
// },
// ],
},
{
key: 'gilded',
Expand Down
Loading
Loading