aboutsummaryrefslogtreecommitdiff
path: root/diplomacy/web/src/gui/components/navigation.jsx
diff options
context:
space:
mode:
authornotoraptor <notoraptor@users.noreply.github.com>2019-07-17 15:16:43 -0400
committerPhilip Paquette <pcpaquette@gmail.com>2019-07-17 15:16:43 -0400
commit2701df1e3b03c7c605ccf212a02987d53fbd0609 (patch)
treed3637573d8585e32914c33cbd03ec0baf9c68ae3 /diplomacy/web/src/gui/components/navigation.jsx
parente9872eea32d4f66b9c7ca8c14d530c18f6c18506 (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/navigation.jsx')
-rw-r--r--diplomacy/web/src/gui/components/navigation.jsx61
1 files changed, 61 insertions, 0 deletions
diff --git a/diplomacy/web/src/gui/components/navigation.jsx b/diplomacy/web/src/gui/components/navigation.jsx
new file mode 100644
index 0000000..5d961bc
--- /dev/null
+++ b/diplomacy/web/src/gui/components/navigation.jsx
@@ -0,0 +1,61 @@
+import React from "react";
+import Octicon, {Person} from "@githubprimer/octicons-react";
+import PropTypes from "prop-types";
+
+export class Navigation extends React.Component {
+ render() {
+ const hasNavigation = this.props.navigation && this.props.navigation.length;
+ if (hasNavigation) {
+ return (
+ <div className={'title row'}>
+ <div className={'col align-self-center'}>
+ <strong>{this.props.title}</strong>
+ {this.props.afterTitle ? this.props.afterTitle : ''}
+ </div>
+ <div className={'col-sm-1'}>
+ {(!hasNavigation && (
+ <div className={'float-right'}>
+ <strong>
+ <u className={'mr-2'}>{this.props.username}</u>
+ <Octicon icon={Person}/>
+ </strong>
+ </div>
+ )) || (
+ <div className="dropdown float-right">
+ <button className="btn btn-secondary dropdown-toggle" type="button"
+ id="dropdownMenuButton" data-toggle="dropdown"
+ aria-haspopup="true" aria-expanded="false">
+ {(this.props.username && (
+ <span>
+ <u className={'mr-2'}>{this.props.username}</u>
+ <Octicon icon={Person}/>
+ </span>
+ )) || 'Menu'}
+ </button>
+ <div className="dropdown-menu dropdown-menu-right"
+ aria-labelledby="dropdownMenuButton">
+ {this.props.navigation.map((nav, index) => {
+ const navTitle = nav[0];
+ const navAction = nav[1];
+ return <span key={index} className="dropdown-item"
+ onClick={navAction}>{navTitle}</span>;
+ })}
+ </div>
+ </div>
+ )}
+ </div>
+ </div>
+ );
+ }
+ return (
+ <div className={'title'}><strong>{this.props.title}</strong></div>
+ );
+ }
+}
+
+Navigation.propTypes = {
+ title: PropTypes.string.isRequired,
+ afterTitle: PropTypes.object,
+ navigation: PropTypes.array,
+ username: PropTypes.string,
+};