clean up import pages and auto-generate wiki urls
- remove duplicate basic info sections (now in metadata) - auto-populate wikiJa and kamigame from nameJp - wikiJa: "Name (Rarity)" - kamigame: characters use name only, others prepend rarity
This commit is contained in:
parent
764f85400a
commit
fd25e8f9ba
3 changed files with 54 additions and 95 deletions
|
|
@ -13,6 +13,7 @@
|
|||
buildGamewithUrl,
|
||||
buildKamigameUrl
|
||||
} from '$lib/utils/external-links'
|
||||
import { getRarityPrefix } from '$lib/utils/rarity'
|
||||
|
||||
// Components
|
||||
import CharacterUncapSection from '$lib/features/database/characters/sections/CharacterUncapSection.svelte'
|
||||
|
|
@ -85,6 +86,23 @@
|
|||
// Get selected entity data
|
||||
const selectedEntity = $derived(selectedWikiPage ? entities.get(selectedWikiPage) : null)
|
||||
|
||||
// Auto-generate wiki URLs when Name (JP) or Rarity changes
|
||||
$effect(() => {
|
||||
if (!selectedWikiPage) return
|
||||
const formData = formDataByPage[selectedWikiPage]
|
||||
if (!formData) return
|
||||
|
||||
const nameJp = formData.nameJp
|
||||
const rarity = formData.rarity
|
||||
|
||||
if (nameJp) {
|
||||
// Auto-generate wikiJa: "Name (JP) (SSR)"
|
||||
formData.wikiJa = `${nameJp} (${getRarityPrefix(rarity)})`
|
||||
// Auto-generate kamigame: "Name (JP)" for characters (no rarity prefix)
|
||||
formData.kamigame = nameJp
|
||||
}
|
||||
})
|
||||
|
||||
// Entity tabs for TabbedEntitySelector
|
||||
const entityTabs = $derived<EntityTab[]>(
|
||||
Array.from(entities.entries()).map(([wikiPage, entity]) => ({
|
||||
|
|
@ -451,43 +469,6 @@
|
|||
{@const suggestions = selectedEntity.suggestions}
|
||||
{@const dismissed = dismissedByPage[selectedWikiPage] ?? new Set<string>()}
|
||||
<section class="details">
|
||||
<!-- Basic Info: Name fields needed for import (not in MetadataSection) -->
|
||||
<DetailsContainer title="Basic Info">
|
||||
<SuggestionDetailItem
|
||||
label="Name (EN)"
|
||||
bind:value={formDataByPage[selectedWikiPage].name}
|
||||
editable={true}
|
||||
type="text"
|
||||
placeholder="Character name"
|
||||
suggestion={suggestions?.nameEn}
|
||||
dismissedSuggestion={dismissed.has('name')}
|
||||
onAcceptSuggestion={() => handleAcceptSuggestion('name', suggestions?.nameEn)}
|
||||
onDismissSuggestion={() => handleDismissSuggestion('name')}
|
||||
/>
|
||||
<SuggestionDetailItem
|
||||
label="Name (JP)"
|
||||
bind:value={formDataByPage[selectedWikiPage].nameJp}
|
||||
editable={true}
|
||||
type="text"
|
||||
placeholder="キャラクター名"
|
||||
suggestion={suggestions?.nameJp}
|
||||
dismissedSuggestion={dismissed.has('nameJp')}
|
||||
onAcceptSuggestion={() => handleAcceptSuggestion('nameJp', suggestions?.nameJp)}
|
||||
onDismissSuggestion={() => handleDismissSuggestion('nameJp')}
|
||||
/>
|
||||
<SuggestionDetailItem
|
||||
label="Granblue ID"
|
||||
bind:value={formDataByPage[selectedWikiPage].granblueId}
|
||||
editable={true}
|
||||
type="text"
|
||||
placeholder="3040001000"
|
||||
suggestion={suggestions?.granblueId}
|
||||
dismissedSuggestion={dismissed.has('granblueId')}
|
||||
onAcceptSuggestion={() => handleAcceptSuggestion('granblueId', suggestions?.granblueId)}
|
||||
onDismissSuggestion={() => handleDismissSuggestion('granblueId')}
|
||||
/>
|
||||
</DetailsContainer>
|
||||
|
||||
<CharacterMetadataSection
|
||||
character={emptyCharacter}
|
||||
editMode={true}
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
buildGamewithUrl,
|
||||
buildKamigameUrl
|
||||
} from '$lib/utils/external-links'
|
||||
import { getRarityPrefix } from '$lib/utils/rarity'
|
||||
|
||||
// Components
|
||||
import SummonUncapSection from '$lib/features/database/summons/sections/SummonUncapSection.svelte'
|
||||
|
|
@ -84,6 +85,23 @@
|
|||
// Get selected entity data
|
||||
const selectedEntity = $derived(selectedWikiPage ? entities.get(selectedWikiPage) : null)
|
||||
|
||||
// Auto-generate wiki URLs when Name (JP) or Rarity changes
|
||||
$effect(() => {
|
||||
if (!selectedWikiPage) return
|
||||
const formData = formDataByPage[selectedWikiPage]
|
||||
if (!formData) return
|
||||
|
||||
const nameJp = formData.nameJp
|
||||
const rarity = formData.rarity
|
||||
|
||||
if (nameJp) {
|
||||
// Auto-generate wikiJa: "Name (JP) (SSR)"
|
||||
formData.wikiJa = `${nameJp} (${getRarityPrefix(rarity)})`
|
||||
// Auto-generate kamigame: "SSRName (JP)" for summons
|
||||
formData.kamigame = `${getRarityPrefix(rarity)}${nameJp}`
|
||||
}
|
||||
})
|
||||
|
||||
// Entity tabs for TabbedEntitySelector
|
||||
const entityTabs = $derived<EntityTab[]>(
|
||||
Array.from(entities.entries()).map(([wikiPage, entity]) => ({
|
||||
|
|
@ -430,39 +448,6 @@
|
|||
{@const suggestions = selectedEntity.suggestions}
|
||||
{@const dismissed = dismissedByPage[selectedWikiPage] ?? new Set<string>()}
|
||||
<section class="details">
|
||||
<DetailsContainer title="Basic Info">
|
||||
<SuggestionDetailItem
|
||||
label="Name (EN)"
|
||||
bind:value={formDataByPage[selectedWikiPage].name}
|
||||
editable={true}
|
||||
type="text"
|
||||
placeholder="Summon name"
|
||||
suggestion={suggestions?.nameEn}
|
||||
dismissedSuggestion={dismissed.has('name')}
|
||||
onAcceptSuggestion={() => handleAcceptSuggestion('name', suggestions?.nameEn)}
|
||||
onDismissSuggestion={() => handleDismissSuggestion('name')}
|
||||
/>
|
||||
<SuggestionDetailItem
|
||||
label="Name (JP)"
|
||||
bind:value={formDataByPage[selectedWikiPage].nameJp}
|
||||
editable={true}
|
||||
type="text"
|
||||
placeholder="召喚石名"
|
||||
suggestion={suggestions?.nameJp}
|
||||
dismissedSuggestion={dismissed.has('nameJp')}
|
||||
onAcceptSuggestion={() => handleAcceptSuggestion('nameJp', suggestions?.nameJp)}
|
||||
onDismissSuggestion={() => handleDismissSuggestion('nameJp')}
|
||||
/>
|
||||
<DetailItem
|
||||
label="Summon ID"
|
||||
sublabel="Internal game identifier (if known)"
|
||||
bind:value={formDataByPage[selectedWikiPage].summonId}
|
||||
editable={true}
|
||||
type="text"
|
||||
placeholder="Optional"
|
||||
/>
|
||||
</DetailsContainer>
|
||||
|
||||
<SummonMetadataSection
|
||||
summon={emptySummon}
|
||||
editMode={true}
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
buildGamewithUrl,
|
||||
buildKamigameUrl
|
||||
} from '$lib/utils/external-links'
|
||||
import { getRarityPrefix } from '$lib/utils/rarity'
|
||||
|
||||
// Components
|
||||
import WeaponUncapSection from '$lib/features/database/weapons/sections/WeaponUncapSection.svelte'
|
||||
|
|
@ -84,6 +85,23 @@
|
|||
// Get selected entity data
|
||||
const selectedEntity = $derived(selectedWikiPage ? entities.get(selectedWikiPage) : null)
|
||||
|
||||
// Auto-generate wiki URLs when Name (JP) or Rarity changes
|
||||
$effect(() => {
|
||||
if (!selectedWikiPage) return
|
||||
const formData = formDataByPage[selectedWikiPage]
|
||||
if (!formData) return
|
||||
|
||||
const nameJp = formData.nameJp
|
||||
const rarity = formData.rarity
|
||||
|
||||
if (nameJp) {
|
||||
// Auto-generate wikiJa: "Name (JP) (SSR)"
|
||||
formData.wikiJa = `${nameJp} (${getRarityPrefix(rarity)})`
|
||||
// Auto-generate kamigame: "SSRName (JP)" for weapons
|
||||
formData.kamigame = `${getRarityPrefix(rarity)}${nameJp}`
|
||||
}
|
||||
})
|
||||
|
||||
// Entity tabs for TabbedEntitySelector
|
||||
const entityTabs = $derived<EntityTab[]>(
|
||||
Array.from(entities.entries()).map(([wikiPage, entity]) => ({
|
||||
|
|
@ -444,31 +462,6 @@
|
|||
{@const suggestions = selectedEntity.suggestions}
|
||||
{@const dismissed = dismissedByPage[selectedWikiPage] ?? new Set<string>()}
|
||||
<section class="details">
|
||||
<DetailsContainer title="Basic Info">
|
||||
<SuggestionDetailItem
|
||||
label="Name (EN)"
|
||||
bind:value={formDataByPage[selectedWikiPage].name}
|
||||
editable={true}
|
||||
type="text"
|
||||
placeholder="Weapon name"
|
||||
suggestion={suggestions?.nameEn}
|
||||
dismissedSuggestion={dismissed.has('name')}
|
||||
onAcceptSuggestion={() => handleAcceptSuggestion('name', suggestions?.nameEn)}
|
||||
onDismissSuggestion={() => handleDismissSuggestion('name')}
|
||||
/>
|
||||
<SuggestionDetailItem
|
||||
label="Name (JP)"
|
||||
bind:value={formDataByPage[selectedWikiPage].nameJp}
|
||||
editable={true}
|
||||
type="text"
|
||||
placeholder="武器名"
|
||||
suggestion={suggestions?.nameJp}
|
||||
dismissedSuggestion={dismissed.has('nameJp')}
|
||||
onAcceptSuggestion={() => handleAcceptSuggestion('nameJp', suggestions?.nameJp)}
|
||||
onDismissSuggestion={() => handleDismissSuggestion('nameJp')}
|
||||
/>
|
||||
</DetailsContainer>
|
||||
|
||||
<WeaponMetadataSection
|
||||
weapon={emptyWeapon}
|
||||
editMode={true}
|
||||
|
|
|
|||
Loading…
Reference in a new issue