diff options
author | notoraptor <notoraptor@users.noreply.github.com> | 2019-07-17 15:16:43 -0400 |
---|---|---|
committer | Philip Paquette <pcpaquette@gmail.com> | 2019-07-17 15:16:43 -0400 |
commit | 2701df1e3b03c7c605ccf212a02987d53fbd0609 (patch) | |
tree | d3637573d8585e32914c33cbd03ec0baf9c68ae3 /diplomacy/web/src/gui/components/power_orders.jsx | |
parent | e9872eea32d4f66b9c7ca8c14d530c18f6c18506 (diff) |
[web] Make button "Delete all" remove only orders from current se… (#49)
- Make button "Delete all" remove only orders from current selected power.
- Reorganize code
- [web] Remove bugged and useless function gameReloaded() from game page.
- This function caused error `engine.getPhaseType is not a function` for
games with deadlines.
- Move function saveGameToDisk into its own file.
- [web] Add documentation to methods involved in orders management to help understand what happens.
- Move methods getServerOrders() from game GUI component to game engine object.
- Rename method onSetNoOrders to onSetEmptyOrdersSet.
- Rename property in PowerActionsForm: onNoOrders => onPass.
- [web] Update sending orders to send request clearOrders when local orders list is null.
- Renamed local file:
- components/power_order => power_orders
- forms/power_actions_form => power_order_creation_form
- Move power orders buttons bar to a separate file:
- components/power_orders_actions_bar
- [web] Improve messages about local/server defined orders.
Diffstat (limited to 'diplomacy/web/src/gui/components/power_orders.jsx')
-rw-r--r-- | diplomacy/web/src/gui/components/power_orders.jsx | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/diplomacy/web/src/gui/components/power_orders.jsx b/diplomacy/web/src/gui/components/power_orders.jsx new file mode 100644 index 0000000..b702a9d --- /dev/null +++ b/diplomacy/web/src/gui/components/power_orders.jsx @@ -0,0 +1,77 @@ +// ============================================================================== +// Copyright (C) 2019 - Philip Paquette, Steven Bocco +// +// This program is free software: you can redistribute it and/or modify it under +// the terms of the GNU Affero General Public License as published by the Free +// Software Foundation, either version 3 of the License, or (at your option) any +// later version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +// FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more +// details. +// +// You should have received a copy of the GNU Affero General Public License along +// with this program. If not, see <https://www.gnu.org/licenses/>. +// ============================================================================== +import React from "react"; +import PropTypes from 'prop-types'; +import {Button} from "./button"; + +export class PowerOrders extends React.Component { + render() { + const orderEntries = this.props.orders ? Object.entries(this.props.orders) : null; + let display = null; + if (orderEntries) { + if (orderEntries.length) { + orderEntries.sort((a, b) => a[1].order.localeCompare(b[1].order)); + display = ( + <div className={'container order-list'}> + {orderEntries.map((entry, index) => ( + <div + className={`row order-entry entry-${1 + index % 2} ` + (entry[1].local ? 'local' : 'server')} + key={index}> + <div className={'col align-self-center order'}> + <span className={'order-string'}>{entry[1].order}</span> + {entry[1].local ? '' : <span className={'order-mark'}> [S]</span>} + </div> + <div className={'col remove-button'}> + <Button title={'-'} onClick={() => this.props.onRemove(this.props.name, entry[1])}/> + </div> + </div> + ))} + </div> + ); + } else if (this.props.serverCount === 0) { + display = (<div className={'empty-orders'}>Empty orders set</div>); + } else { + display = (<div className={'empty-orders'}>Local empty orders set</div>); + } + } else { + if (this.props.serverCount < 0) { + display = <div className={'no-orders'}>No orders!</div>; + } else { + display = <div className={'empty-orders'}>Asking to unset orders</div>; + } + } + return ( + <div className={'power-orders'}> + <div className={'title'}> + <span className={'name'}>{this.props.name}</span> + <span className={this.props.wait ? 'wait' : 'no-wait'}> + {(this.props.wait ? ' ' : ' not') + ' waiting'} + </span> + </div> + {display} + </div> + ); + } +} + +PowerOrders.propTypes = { + wait: PropTypes.bool, + name: PropTypes.string, + orders: PropTypes.object, + serverCount: PropTypes.number, + onRemove: PropTypes.func, +}; |