-
-
Notifications
You must be signed in to change notification settings - Fork 43
/
CombatTechniquesListItem.tsx
93 lines (86 loc) · 3.04 KB
/
CombatTechniquesListItem.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import * as React from "react"
import { equals } from "../../../Data/Eq"
import { fmapF } from "../../../Data/Functor"
import { find, flength, intercalate, List } from "../../../Data/List"
import { fromMaybe, listToMaybe, mapMaybe, Maybe, maybe } from "../../../Data/Maybe"
import { lookupF } from "../../../Data/OrderedMap"
import { Record } from "../../../Data/Record"
import { NumIdName } from "../../Models/NumIdName"
import { AttributeCombined, AttributeCombinedA_ } from "../../Models/View/AttributeCombined"
import { CombatTechniqueWithRequirements, CombatTechniqueWithRequirementsA_ } from "../../Models/View/CombatTechniqueWithRequirements"
import { StaticData, StaticDataRecord } from "../../Models/Wiki/WikiModel"
import { ndash } from "../../Utilities/Chars"
import { pipe, pipe_ } from "../../Utilities/pipe"
import { SkillListItem } from "../Skills/SkillListItem"
const ACA_ = AttributeCombinedA_
const CTWRA = CombatTechniqueWithRequirements.A
const CTWRA_ = CombatTechniqueWithRequirementsA_
export interface CombatTechniqueListItemProps {
staticData: StaticDataRecord
attributes: List<Record<AttributeCombined>>
combatTechnique: Record<CombatTechniqueWithRequirements>
currentInfoId: Maybe<string>
isRemovingEnabled: boolean
addPoint: (id: string) => void
removePoint: (id: string) => void
selectForInfo: (id: string) => void
}
export const CombatTechniqueListItem: React.FC<CombatTechniqueListItemProps> = props => {
const {
attributes,
currentInfoId,
isRemovingEnabled,
staticData,
combatTechnique: ct,
selectForInfo,
addPoint,
removePoint,
} = props
const primary =
pipe_ (
CTWRA_.primary (ct),
mapMaybe ((id: string) => fmapF (find (pipe (ACA_.id, equals (id)))
(attributes))
(ACA_.short)),
intercalate ("/")
)
const customClassName =
flength (CTWRA_.primary (ct)) > 1
? "ATTR_6_8"
: fromMaybe ("") (listToMaybe (CTWRA_.primary (ct)))
const primaryClassName = `primary ${customClassName}`
return (
<SkillListItem
id={CTWRA_.id (ct)}
name={CTWRA_.name (ct)}
sr={CTWRA_.value (ct)}
ic={CTWRA_.ic (ct)}
checkDisabled
addPoint={addPoint}
addDisabled={!CTWRA.isIncreasable (ct)}
removePoint={removePoint}
removeDisabled={!isRemovingEnabled || !CTWRA.isDecreasable (ct)}
addValues={List (
{ className: primaryClassName, value: primary },
{ className: "at", value: CTWRA.at (ct) },
{ className: "atpa" },
{
className: "pa",
value: fromMaybe<string | number> (ndash) (CTWRA.pa (ct)),
}
)}
attributes={attributes}
staticData={staticData}
isRemovingEnabled={isRemovingEnabled}
selectForInfo={selectForInfo}
group={CTWRA_.gr (ct)}
getGroupName={
pipe (
lookupF (StaticData.A.combatTechniqueGroups (staticData)),
maybe (ndash) (NumIdName.A.name)
)
}
selectedForInfo={currentInfoId}
/>
)
}