import { Button, InputNumber, Select, Table } from "antd"; import { observable } from "mobx"; import { observer } from "mobx-react"; import React from "react"; import { Item } from "../../domain"; import { itemStore } from "../../stores/ItemStore"; import './WantedItemsComponent.css'; @observer export class WantedItemsComponent extends React.Component { @observable private wantedItems: Array = []; render() { // Make sure render is called on updates. this.wantedItems.slice(0, 0); return (

Wanted Items

wanted.item.name} pagination={false} > title="Amount" dataIndex="amount" render={(_, wanted) => ( )} /> render={(_, wanted) => (
); } private addWanted = (itemName: string) => { let added = this.wantedItems.find(w => w.item.name === itemName); if (!added) { const item = itemStore.items.find(i => i.name === itemName)!; this.wantedItems.push(new WantedItem(item, 1)); } }; private removeWanted = (wanted: WantedItem) => () => { const i = this.wantedItems.findIndex(w => w === wanted); if (i !== -1) { this.wantedItems.splice(i, 1); } }; } class WantedItem { @observable item: Item; @observable amount: number; constructor(item: Item, amount: number) { this.item = item; this.amount = amount; } } @observer class WantedAmountCell extends React.Component<{ wantedItem: WantedItem }> { render() { const wanted = this.props.wantedItem; return ( ); } private wantedAmountChanged = (value?: number) => { if (value && value >= 1) { this.props.wantedItem.amount = value; } } }