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/message_view.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/message_view.jsx')
-rw-r--r-- | diplomacy/web/src/gui/components/message_view.jsx | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/diplomacy/web/src/gui/components/message_view.jsx b/diplomacy/web/src/gui/components/message_view.jsx new file mode 100644 index 0000000..927ff52 --- /dev/null +++ b/diplomacy/web/src/gui/components/message_view.jsx @@ -0,0 +1,67 @@ +// ============================================================================== +// 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'; + +export class MessageView extends React.Component { + // message + render() { + const message = this.props.message; + const owner = this.props.owner; + const id = this.props.id ? {id: this.props.id} : {}; + const messagesLines = message.message.replace('\r\n', '\n') + .replace('\r', '\n') + .replace('<br>', '\n') + .replace('<br/>', '\n') + .split('\n'); + let onClick = null; + const classNames = ['game-message', 'row']; + if (owner === message.sender) + classNames.push('message-sender'); + else { + classNames.push('message-recipient'); + if (message.read || this.props.read) + classNames.push('message-read'); + onClick = this.props.onClick ? {onClick: () => this.props.onClick(message)} : {}; + } + return ( + <div className={'game-message-wrapper' + ( + this.props.phase && this.props.phase !== message.phase ? ' other-phase' : ' new-phase')} + {...id}> + <div className={classNames.join(' ')} {...onClick}> + <div className="message-header col-md-auto text-md-right text-center"> + {message.phase} + </div> + <div className="message-content col-md"> + {messagesLines.map((line, lineIndex) => <div key={lineIndex}>{ + line.replace(/(<([^>]+)>)/ig, "") + }</div>)} + </div> + </div> + </div> + ); + } +} + +MessageView.propTypes = { + message: PropTypes.object, + phase: PropTypes.string, + owner: PropTypes.string, + onClick: PropTypes.func, + id: PropTypes.string, + read: PropTypes.bool +}; |