Skip to content

Commit 3d2a3fc

Browse files
Merge pull request #17 from PrincessMadMath/Feature/MissingSpellInfo
Feature/missing spell info
2 parents a90ea47 + 81e6355 commit 3d2a3fc

File tree

7 files changed

+7807
-4133
lines changed

7 files changed

+7807
-4133
lines changed

src/components/Spells/ComponentIcon.jsx

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,11 @@ import React from 'react'
44
/* Style */
55
import './style/Component.css';
66

7-
function isComponentEnabled(component, requiredComponent) {
8-
if (requiredComponent.toLowerCase().includes(component.toLowerCase())) {
9-
return true;
10-
} else {
11-
return false;
12-
}
13-
}
7+
148

159
const ComponentIcon = (prop) => {
1610
return (
17-
<div className={ "component-item " + (isComponentEnabled(prop.valueToCheck, prop.requiredValue)
11+
<div className={ "component-item " + (prop.isRequired
1812
? ""
1913
: "component-disabled") }>
2014
<img src={ prop.icon } className="component-logo" alt={ prop.alternative } />

src/components/Spells/Components.jsx

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,28 +13,28 @@ import verbal from './icon/verbal.svg';
1313
import somatic from './icon/somatic.svg';
1414
import material from './icon/material.svg';
1515

16-
const Components = ({spellToRender}) => {
16+
const Components = ({components}) => {
1717

1818
return (
1919
<div>
2020
<div className="component-list">
21-
<ComponentIcon valueToCheck="concentration" requiredValue={ spellToRender.Duration } icon={ concentration } alternative="Concentration" />
22-
<ComponentIcon valueToCheck="v" requiredValue={ spellToRender.Components } icon={ verbal } alternative="Verbal" />
23-
<ComponentIcon valueToCheck="s" requiredValue={ spellToRender.Components } icon={ somatic } alternative="Somatic" />
24-
<ComponentIcon valueToCheck="m" requiredValue={ spellToRender.Components } icon={ material } alternative="Meterial" />
21+
<ComponentIcon isRequired={ components.concentration } icon={ concentration } alternative="Concentration" />
22+
<ComponentIcon isRequired={ components.verbal } icon={ verbal } alternative="Verbal" />
23+
<ComponentIcon isRequired={ components.somatic } icon={ somatic } alternative="Somatic" />
24+
<ComponentIcon isRequired={ components.material }icon={ material } alternative="Meterial" />
2525
</div>
2626
</div>
2727
);
2828

2929
}
3030

3131
Components.propTypes = {
32-
spellToRender: React
33-
.PropTypes
34-
.shape({
35-
Duration: React.PropTypes.string.isRequired,
36-
Components: React.PropTypes.string.isRequired
37-
})
32+
components: React.PropTypes.shape({
33+
concentration: React.PropTypes.bool.isRequired,
34+
somatic: React.PropTypes.bool.isRequired,
35+
verbal: React.PropTypes.bool.isRequired,
36+
material: React.PropTypes.bool.isRequired,
37+
})
3838
};
3939

4040
export default Components;

src/components/Spells/SpellInfo.jsx

Lines changed: 33 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/* Utils */
22
import React from 'react';
3+
import { Grid, Row, Col } from 'react-bootstrap';
34

45
/* Components */
56
import Components from './Components'
@@ -20,24 +21,36 @@ const SpellInfo = ({spellToRender}) => {
2021

2122
return (
2223
<div className="information-box">
23-
<h1 className="spell-title">{ spellToRender.Name }</h1>
24-
<div className="spell-components">
25-
<Components spellToRender={ spellToRender } />
26-
</div>
24+
<Grid bsClass="grid">
25+
<Row>
26+
<Col xs={ 12 } sm={ 8 }>
27+
<h1 className="spell-title">{ spellToRender.name }</h1>
28+
<div className="spell-type">
29+
<span>{ spellToRender.type }</span>
30+
<span>{ spellToRender.canBeRitual && " (ritual)" } </span>
31+
</div>
32+
</Col>
33+
<Col xs={ 12 } sm={ 4 }>
34+
<div className="spell-components">
35+
<Components components={ spellToRender.components } />
36+
</div>
37+
</Col>
38+
</Row>
39+
</Grid>
2740
<div className="spell-quick-info">
2841
<p>
29-
<b>Range:</b>
30-
{ spellToRender.Range }
42+
<b>Range: </b>
43+
{ spellToRender.range }
3144
<br/>
32-
<b>Duration:</b>
33-
{ spellToRender.Duration }
45+
<b>Duration: </b>
46+
{ spellToRender.duration }
3447
<br/>
35-
<b>Casting time:</b>
36-
{ spellToRender.CastingTime }
48+
<b>Casting time: </b>
49+
{ spellToRender.castingTime }
3750
<br/>
3851
</p>
3952
</div>
40-
<p className="spell-description" dangerouslySetInnerHTML={ createMarkup(spellToRender.Description) } />
53+
<p className="spell-description" dangerouslySetInnerHTML={ createMarkup(spellToRender.description) } />
4154
</div>
4255
);
4356

@@ -46,15 +59,15 @@ const SpellInfo = ({spellToRender}) => {
4659

4760
SpellInfo.propType = {
4861
spellToRender: React.PropTypes.shape({
49-
Level: React.PropTypes.number.isRequired,
50-
Name: React.PropTypes.string.isRequired,
51-
Type: React.PropTypes.string.isRequired,
52-
CastingTime: React.PropTypes.string.isRequired,
53-
Range: React.PropTypes.string.isRequired,
54-
Components: React.PropTypes.string.isRequired,
55-
Duration: React.PropTypes.string.isRequired,
56-
Description: React.PropTypes.string.isRequired,
57-
Class: React.PropTypes.arrayOf(React.PropTypes.string).isRequired
62+
level: React.PropTypes.number.isRequired,
63+
name: React.PropTypes.string.isRequired,
64+
type: React.PropTypes.string.isRequired,
65+
castingTime: React.PropTypes.string.isRequired,
66+
range: React.PropTypes.string.isRequired,
67+
components: React.PropTypes.string.isRequired,
68+
duration: React.PropTypes.string.isRequired,
69+
description: React.PropTypes.string.isRequired,
70+
class: React.PropTypes.arrayOf(React.PropTypes.string).isRequired
5871
}).isRequired
5972
};
6073

src/components/Spells/SpellsList.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class SpellsList extends Component {
2222
{ this.props.spellsToRender
2323
.map(function(value) {
2424
return (
25-
<LazyLoad key={ value.Name } height={ 200 } offset={ 500 }>
25+
<LazyLoad key={ value.name } height={ 200 } offset={ 500 }>
2626
<SpellInfo spellToRender={ value }></SpellInfo>
2727
</LazyLoad>
2828
);
@@ -35,7 +35,7 @@ class SpellsList extends Component {
3535
SpellsList.propType = {
3636
spellsToRender: React.PropTypes.arrayOf(
3737
React.PropTypes.shape({
38-
Name: React.PropTypes.string.isRequired,
38+
name: React.PropTypes.string.isRequired,
3939
})
4040
).isRequired
4141
};

src/components/Spells/style/Component.css

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ To style the spells components (vocal, somatic...)
2727
/* Create circle border */
2828
border-style: solid;
2929
border-color: #0A0;
30-
border-radius: 35px;
31-
width: 35px;
32-
height: 35px;
30+
border-radius: 38px;
31+
width: 38px;
32+
height: 38px;
3333
}
3434

3535

@@ -51,7 +51,7 @@ To style the spells components (vocal, somatic...)
5151

5252
/*Logo inside component*/
5353
.component-logo {
54-
height: 30px;
54+
height: 28px;
5555
display: block;
5656
margin: auto;
5757
}

src/components/Spells/style/Spell.css

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,9 @@ Adjustement for spell information box
1515
display: inline;
1616
}
1717

18-
.spell-components {
19-
float: right;
20-
}
21-
22-
/*If small screen put components below*/
23-
@media (max-width: 550px) {
24-
.spell-components {
25-
float: none;
26-
}
18+
/*Make the little description under title in italic*/
19+
.spell-type{
20+
font-style: italic;
21+
margin-bottom: 10px;
2722
}
2823

0 commit comments

Comments
 (0)