pre-fill summon ID from wiki data in batch import
This commit is contained in:
parent
6e6121cb71
commit
37f2178d4a
2 changed files with 25 additions and 18 deletions
|
|
@ -590,6 +590,7 @@ export interface SummonSuggestions {
|
||||||
nameEn?: string
|
nameEn?: string
|
||||||
nameJp?: string
|
nameJp?: string
|
||||||
granblueId?: string
|
granblueId?: string
|
||||||
|
summonId?: string
|
||||||
rarity?: number
|
rarity?: number
|
||||||
element?: number
|
element?: number
|
||||||
minHp?: number
|
minHp?: number
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
import { goto } from '$app/navigation'
|
import { goto } from '$app/navigation'
|
||||||
import { entityAdapter, type SummonSuggestions } from '$lib/api/adapters/entity.adapter'
|
import { entityAdapter, type SummonSuggestions } from '$lib/api/adapters/entity.adapter'
|
||||||
import { fetchWikiPages, buildWikiDataMap } from '$lib/api/wiki'
|
import { fetchWikiPages, buildWikiDataMap } from '$lib/api/wiki'
|
||||||
import { getSummonImage, getPlaceholderImage } from '$lib/utils/images'
|
import { getGameCdnSummonImage, getPlaceholderImage } from '$lib/utils/images'
|
||||||
|
|
||||||
// Components
|
// Components
|
||||||
import SummonUncapSection from '$lib/features/database/summons/sections/SummonUncapSection.svelte'
|
import SummonUncapSection from '$lib/features/database/summons/sections/SummonUncapSection.svelte'
|
||||||
|
|
@ -80,7 +80,7 @@
|
||||||
granblueId: entity.granblueId,
|
granblueId: entity.granblueId,
|
||||||
status: entity.status,
|
status: entity.status,
|
||||||
imageUrl: entity.granblueId
|
imageUrl: entity.granblueId
|
||||||
? getSummonImage(entity.granblueId, 'square')
|
? getGameCdnSummonImage(entity.granblueId)
|
||||||
: getPlaceholderImage('summon', 'square'),
|
: getPlaceholderImage('summon', 'square'),
|
||||||
error: entity.error,
|
error: entity.error,
|
||||||
saved: savedEntities.has(wikiPage)
|
saved: savedEntities.has(wikiPage)
|
||||||
|
|
@ -93,7 +93,7 @@
|
||||||
name: suggestions?.nameEn ?? '',
|
name: suggestions?.nameEn ?? '',
|
||||||
nameJp: suggestions?.nameJp ?? '',
|
nameJp: suggestions?.nameJp ?? '',
|
||||||
granblue_id: suggestions?.granblueId ?? '',
|
granblue_id: suggestions?.granblueId ?? '',
|
||||||
summonId: '',
|
summonId: suggestions?.summonId ?? '',
|
||||||
rarity: suggestions?.rarity ?? 3,
|
rarity: suggestions?.rarity ?? 3,
|
||||||
element: suggestions?.element ?? 0,
|
element: suggestions?.element ?? 0,
|
||||||
series: '',
|
series: '',
|
||||||
|
|
@ -283,7 +283,9 @@
|
||||||
savedEntities = new Set(savedEntities)
|
savedEntities = new Set(savedEntities)
|
||||||
|
|
||||||
// Select next unsaved entity
|
// Select next unsaved entity
|
||||||
const unsaved = entityTabs.find((e) => !savedEntities.has(e.wikiPage) && e.status === 'success')
|
const unsaved = entityTabs.find(
|
||||||
|
(e) => !savedEntities.has(e.wikiPage) && e.status === 'success'
|
||||||
|
)
|
||||||
if (unsaved) {
|
if (unsaved) {
|
||||||
selectedWikiPage = unsaved.wikiPage
|
selectedWikiPage = unsaved.wikiPage
|
||||||
}
|
}
|
||||||
|
|
@ -345,17 +347,12 @@
|
||||||
|
|
||||||
<!-- Input phase -->
|
<!-- Input phase -->
|
||||||
{#if entities.size === 0}
|
{#if entities.size === 0}
|
||||||
<div class="input-phase">
|
<form class="input-phase" onsubmit={(e) => { e.preventDefault(); fetchWikiData(); }}>
|
||||||
<p class="hint">Enter up to 10 wiki page names to import data</p>
|
<p class="hint">Enter up to 10 wiki page names to import data</p>
|
||||||
<div class="wiki-inputs">
|
<div class="wiki-inputs">
|
||||||
{#each wikiPagesInputs as _, index}
|
{#each wikiPagesInputs as _, index}
|
||||||
<div class="input-row">
|
<div class="input-row">
|
||||||
<Input
|
<Input bind:value={wikiPagesInputs[index]} placeholder="Bahamut" contained fullWidth />
|
||||||
bind:value={wikiPagesInputs[index]}
|
|
||||||
placeholder="Bahamut"
|
|
||||||
contained
|
|
||||||
fullWidth
|
|
||||||
/>
|
|
||||||
{#if wikiPagesInputs.length > 1}
|
{#if wikiPagesInputs.length > 1}
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
|
|
@ -368,20 +365,24 @@
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
{/each}
|
{/each}
|
||||||
<Button variant="ghost" onclick={addInput}>
|
<Button
|
||||||
<Icon name="plus" size={16} />
|
variant="ghost"
|
||||||
Add another
|
type="button"
|
||||||
</Button>
|
onclick={addInput}
|
||||||
|
class="add-input-button"
|
||||||
|
leftIcon="plus"
|
||||||
|
size="small">Add another</Button
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
{#if fetchError}
|
{#if fetchError}
|
||||||
<p class="error">{fetchError}</p>
|
<p class="error">{fetchError}</p>
|
||||||
{/if}
|
{/if}
|
||||||
<div class="fetch-button">
|
<div class="fetch-button">
|
||||||
<Button variant="primary" onclick={fetchWikiData} disabled={isFetching}>
|
<Button variant="primary" type="submit" disabled={isFetching}>
|
||||||
{isFetching ? 'Fetching...' : 'Fetch data'}
|
{isFetching ? 'Fetching...' : 'Fetch data'}
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
{:else}
|
{:else}
|
||||||
<!-- Entity selector -->
|
<!-- Entity selector -->
|
||||||
<div class="entity-selector-container">
|
<div class="entity-selector-container">
|
||||||
|
|
@ -500,7 +501,8 @@
|
||||||
placeholder="YYYY-MM-DD"
|
placeholder="YYYY-MM-DD"
|
||||||
suggestion={suggestions?.releaseDate}
|
suggestion={suggestions?.releaseDate}
|
||||||
dismissedSuggestion={dismissed.has('releaseDate')}
|
dismissedSuggestion={dismissed.has('releaseDate')}
|
||||||
onAcceptSuggestion={() => handleAcceptSuggestion('releaseDate', suggestions?.releaseDate)}
|
onAcceptSuggestion={() =>
|
||||||
|
handleAcceptSuggestion('releaseDate', suggestions?.releaseDate)}
|
||||||
onDismissSuggestion={() => handleDismissSuggestion('releaseDate')}
|
onDismissSuggestion={() => handleDismissSuggestion('releaseDate')}
|
||||||
/>
|
/>
|
||||||
{#if formData.flb}
|
{#if formData.flb}
|
||||||
|
|
@ -619,6 +621,10 @@
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
:global(.wiki-inputs .add-input-button) {
|
||||||
|
width: fit-content;
|
||||||
|
}
|
||||||
|
|
||||||
.remove-button {
|
.remove-button {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue