Save job and job skill to party
This commit is contained in:
parent
1cb9d6c843
commit
6070164150
2 changed files with 59 additions and 7 deletions
|
|
@ -165,6 +165,42 @@ const CharacterGrid = (props: Props) => {
|
||||||
setIncoming(undefined)
|
setIncoming(undefined)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Methods: Saving job and job skills
|
||||||
|
const saveJob = function (job: Job) {
|
||||||
|
console.log("Save job!")
|
||||||
|
if (party.id && appState.party.editable) {
|
||||||
|
api.endpoints.parties.update(
|
||||||
|
party.id,
|
||||||
|
{
|
||||||
|
party: { job_id: job ? job.id : "" },
|
||||||
|
},
|
||||||
|
headers
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const saveJobSkill = function (skill: JobSkill, position: number) {
|
||||||
|
if (party.id && appState.party.editable) {
|
||||||
|
const positionedKey = `skill${position}_id`
|
||||||
|
|
||||||
|
let skillObject: {
|
||||||
|
[key: string]: string | undefined
|
||||||
|
skill1_id?: string
|
||||||
|
skill2_id?: string
|
||||||
|
skill3_id?: string
|
||||||
|
} = {}
|
||||||
|
|
||||||
|
skillObject[positionedKey] = skill.id
|
||||||
|
api.endpoints.parties.update(
|
||||||
|
party.id,
|
||||||
|
{
|
||||||
|
party: skillObject,
|
||||||
|
},
|
||||||
|
headers
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Methods: Helpers
|
// Methods: Helpers
|
||||||
function characterUncapLevel(character: Character) {
|
function characterUncapLevel(character: Character) {
|
||||||
let uncapLevel
|
let uncapLevel
|
||||||
|
|
@ -256,7 +292,11 @@ const CharacterGrid = (props: Props) => {
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<div id="CharacterGrid">
|
<div id="CharacterGrid">
|
||||||
<JobSection editable={party.editable} />
|
<JobSection
|
||||||
|
editable={party.editable}
|
||||||
|
saveJob={saveJob}
|
||||||
|
saveSkill={saveJobSkill}
|
||||||
|
/>
|
||||||
<CharacterConflictModal
|
<CharacterConflictModal
|
||||||
open={modalOpen}
|
open={modalOpen}
|
||||||
incomingCharacter={incoming}
|
incomingCharacter={incoming}
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,8 @@ import "./index.scss"
|
||||||
// Props
|
// Props
|
||||||
interface Props {
|
interface Props {
|
||||||
editable: boolean
|
editable: boolean
|
||||||
|
saveJob: (job: Job) => void
|
||||||
|
saveSkill: (skill: JobSkill, position: number) => void
|
||||||
}
|
}
|
||||||
|
|
||||||
const JobSection = (props: Props) => {
|
const JobSection = (props: Props) => {
|
||||||
|
|
@ -38,14 +40,23 @@ const JobSection = (props: Props) => {
|
||||||
})
|
})
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (job) appState.party.job = job
|
if (job) {
|
||||||
|
appState.party.job = job
|
||||||
|
setBaseSkills(job)
|
||||||
|
}
|
||||||
}, [job])
|
}, [job])
|
||||||
|
|
||||||
function receiveJob(job?: Job) {
|
function receiveJob(job?: Job) {
|
||||||
console.log(`Receiving job! Row ${job?.row}: ${job?.name.en}`)
|
console.log(`Receiving job! Row ${job?.row}: ${job?.name.en}`)
|
||||||
if (job) {
|
if (job) {
|
||||||
setJob(job)
|
setJob(job)
|
||||||
|
props.saveJob(job)
|
||||||
|
setBaseSkills(job)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setBaseSkills(job?: Job) {
|
||||||
|
if (job) {
|
||||||
const baseSkills = appState.jobSkills.filter(
|
const baseSkills = appState.jobSkills.filter(
|
||||||
(skill) => skill.job.id === job.id && skill.main
|
(skill) => skill.job.id === job.id && skill.main
|
||||||
)
|
)
|
||||||
|
|
@ -95,7 +106,11 @@ const JobSection = (props: Props) => {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateObject(object: SearchableObject, position: number) {}
|
function updateObject(object: SearchableObject, position: number) {
|
||||||
|
const skill = object as JobSkill
|
||||||
|
|
||||||
|
props.saveSkill(skill, position)
|
||||||
|
}
|
||||||
|
|
||||||
// Render: JSX components
|
// Render: JSX components
|
||||||
return (
|
return (
|
||||||
|
|
@ -105,10 +120,7 @@ const JobSection = (props: Props) => {
|
||||||
<div className="Overlay" />
|
<div className="Overlay" />
|
||||||
</div>
|
</div>
|
||||||
<div className="JobDetails">
|
<div className="JobDetails">
|
||||||
<JobDropdown
|
<JobDropdown currentJob={party.job?.id} onChange={receiveJob} />
|
||||||
currentJob={party.job ? party.job.id : undefined}
|
|
||||||
onChange={receiveJob}
|
|
||||||
/>
|
|
||||||
<ul className="JobSkills">
|
<ul className="JobSkills">
|
||||||
{[...Array(numSkills)].map((e, i) => (
|
{[...Array(numSkills)].map((e, i) => (
|
||||||
<li key={`job-${i}`}>
|
<li key={`job-${i}`}>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue