From 2701df1e3b03c7c605ccf212a02987d53fbd0609 Mon Sep 17 00:00:00 2001
From: notoraptor <notoraptor@users.noreply.github.com>
Date: Wed, 17 Jul 2019 15:16:43 -0400
Subject: [web] Make button "Delete all" remove only orders from current se…
 (#49)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

- 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.
---
 diplomacy/web/src/gui/components/navigation.jsx | 61 +++++++++++++++++++++++++
 1 file changed, 61 insertions(+)
 create mode 100644 diplomacy/web/src/gui/components/navigation.jsx

(limited to 'diplomacy/web/src/gui/components/navigation.jsx')

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,
+};
-- 
cgit v1.2.3

