Files
optolith-client/js/views/items/InventoryListItem.js
T
Lukas Obermann 0602f421ba Cleaned up SCSS and character sheet print
- Normalized many SCSS files as deep as possible
- Fixed print css to display all 6 pages
- Fixed sheet header to match original sheet header
- Fixed issue with range property for ranged items
2016-12-26 16:16:49 +13:00

176 lines
5.2 KiB
JavaScript

import IconButton from '../../components/IconButton';
import { Item } from '../../utils/DataUtils';
import { get } from '../../stores/ListStore';
import InventoryActions from '../../actions/InventoryActions';
import InventoryStore from '../../stores/InventoryStore';
import React, { Component, PropTypes } from 'react';
import TooltipToggle from '../../components/TooltipToggle';
const GROUPS = ['Nahkampfwaffen', 'Fernkampfwaffen', 'Rüstungen', 'Munition', 'Waffenzubehör', 'Kleidung', 'Reisebedarf und Werkzeuge', 'Beleuchtung', 'Verbandzeug und Heilmittel', 'Behältnisse', 'Seile und Ketten', 'Diebeswerkzeug', 'Handwerkszeug', 'Orientierungshilfen', 'Schmuck', 'Edelsteine und Feingestein', 'Schreibwaren', 'Bücher', 'Magische Artefakte', 'Alchimica', 'Gifte', 'Heilkräuter', 'Musikinstrumente', 'Genussmittel und Luxus', 'Tiere', 'Tierbedarf', 'Forbewegungsmittel'];
export default class InventoryListItem extends Component {
static propTypes = {
add: PropTypes.bool,
data: PropTypes.instanceOf(Item).isRequired,
};
edit = () => InventoryActions.showItemEditor(Item.prepareDataForEditor(InventoryStore.get(this.props.data.id)));
delete = () => InventoryActions.removeFromList(this.props.data.id);
add = () => InventoryActions.addToList(this.props.data);
render() {
const { add, data: { gr, name, number, price, weight, where, combattechnique, damageDiceNumber, damageDiceSides, damageFlat, damageBonus, at, pa, reach, length, reloadtime, range, ammunition, pro, enc, addpenalties } } = this.props;
const numberValue = number > 1 ? number : null;
return (
<TooltipToggle content={
<div className="inventory-item">
<h4><span>{name}</span><span>{numberValue}</span></h4>
{ gr === 4 ? <p className="ammunition">Munition</p> : null}
{ [4,5].includes(gr) ? <table className="melee">
<tbody>
<tr>
<td>Gewicht</td>
<td>{weight} Stn</td>
</tr>
<tr>
<td>Preis</td>
<td>{price} S</td>
</tr>
</tbody>
</table> : null}
{ gr === 1 ? <table className="melee">
<tbody>
<tr>
<td>Kampftechnik</td>
<td>{get(combattechnique).name}</td>
</tr>
<tr>
<td>TP</td>
<td>{damageDiceNumber}W{damageDiceSides}{damageFlat > 0 ? '+' : null}{damageFlat !== 0 ? damageFlat : null}</td>
</tr>
<tr>
<td>L+S</td>
<td>{get(combattechnique).primary.map(attr => get(attr).short).join('/')} {damageBonus}</td>
</tr>
<tr>
<td>AT/PA-Mod</td>
<td>{at > 0 ? '+' : null}{at}/{pa > 0 ? '+' : null}{pa}</td>
</tr>
<tr>
<td>RW</td>
<td>{['Kurz','Mittel','Lang'][reach - 1]}</td>
</tr>
<tr>
<td>Gewicht</td>
<td>{weight} Stn</td>
</tr>
<tr>
<td>Länge</td>
<td>{length} HF</td>
</tr>
<tr>
<td>Preis</td>
<td>{price} S</td>
</tr>
</tbody>
</table> : null}
{ gr === 2 ? <table className="ranged">
<tbody>
<tr>
<td>Kampftechnik</td>
<td>{get(combattechnique).name}</td>
</tr>
<tr>
<td>TP</td>
<td>{damageDiceNumber}W{damageDiceSides}{damageFlat > 0 ? '+' : null}{damageFlat !== 0 ? damageFlat : null}</td>
</tr>
<tr>
<td>LZ</td>
<td>{reloadtime}</td>
</tr>
<tr>
<td>RW</td>
<td>{range.join('/')}</td>
</tr>
<tr>
<td>Munitionstyp</td>
<td>{(InventoryStore.getTemplate(ammunition) || {}).name}</td>
</tr>
<tr>
<td>Gewicht</td>
<td>{weight} Stn</td>
</tr>
<tr>
<td>Länge</td>
<td>{length} HF</td>
</tr>
<tr>
<td>Preis</td>
<td>{price} S</td>
</tr>
</tbody>
</table> : null}
{ gr === 3 ? <table className="armor">
<tbody>
<tr>
<td>RS</td>
<td>{pro}</td>
</tr>
<tr>
<td>BE</td>
<td>{enc}</td>
</tr>
<tr>
<td>Gewicht</td>
<td>{weight} Stn</td>
</tr>
<tr>
<td>Preis</td>
<td>{price} S</td>
</tr>
</tbody>
</table> : null}
{ gr === 3 ? <p className="armor">
Zus. Abzüge: {addpenalties ? '-1 GS, -1 INI' : '-'}
</p> : null}
</div>
} margin={11}>
{add ? (
<tr>
<td className="name">{name}</td>
<td className="inc">
<IconButton
icon="&#xE145;"
onClick={this.add}
/>
</td>
</tr>
):(
<tr>
<td className="type">{GROUPS[gr - 1]}</td>
<td className="number">{numberValue}</td>
<td className="name">{name}</td>
<td className="price">{price} S</td>
<td className="weight">{weight} Stn</td>
<td className="where">{where}</td>
<td className="inc">
<IconButton
icon="&#xE254;"
onClick={this.edit}
/>
<IconButton
icon="&#xE872;"
onClick={this.delete}
/>
</td>
</tr>
)}
</TooltipToggle>
);
}
}