From b256d50c3fdb11d552aa70bd437817a1beb3da69 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Taneli=20Riihim=C3=A4ki?= <m3034@student.jamk.fi>
Date: Fri, 5 Jul 2019 15:03:26 +0300
Subject: [PATCH] ADD styling

---
 App.js                        |  18 ++++++++++--
 components/GameList.js        |  39 +++++++++++++++++++++++---
 components/LocationTracker.js |   3 ++
 components/Login.js           |  50 ++++++++++++++++++++++------------
 components/LoginForm.js       |  35 ++++++++++++++++++------
 components/RegisterForm.js    |  38 ++++++++++++++++++++------
 images/tacs-logo-neg.png      | Bin 0 -> 7676 bytes
 7 files changed, 143 insertions(+), 40 deletions(-)
 create mode 100644 images/tacs-logo-neg.png

diff --git a/App.js b/App.js
index 22f1e9a..9cdcbee 100755
--- a/App.js
+++ b/App.js
@@ -1,5 +1,5 @@
 import React, { Component } from "react";
-import { StyleSheet, View } from "react-native";
+import { StyleSheet, View, Image } from "react-native";
 
 import Login from "./components/Login";
 
@@ -8,6 +8,13 @@ export default class App extends Component {
     return (
       <View style={styles.container}>
         <View style={{ flex: 1, flexDirection: "column" }}>
+          <View style={styles.logoContainer}>
+            <Image
+              resizeMode="stretch"
+              style={styles.logo}
+              source={require("./images/tacs-logo-neg.png")}
+            />
+          </View>
           <Login />
         </View>
       </View>
@@ -21,6 +28,13 @@ const styles = StyleSheet.create({
     paddingHorizontal: 80,
     paddingVertical: 80,
     flex: 1,
-    backgroundColor: "#F5FCFF"
+    backgroundColor: "#1d1d1b"
+  },
+  logo: {
+    marginLeft: "auto",
+    marginRight: "auto"
+  },
+  logoContainer: {
+    padding: 20
   }
 });
diff --git a/components/GameList.js b/components/GameList.js
index 5c13c42..4436a38 100644
--- a/components/GameList.js
+++ b/components/GameList.js
@@ -58,6 +58,28 @@ class GameList extends Component {
       });
     await this.getFactions();
   }
+
+  getFactionMembers() {
+    fetch(`https://tacs-testing.cf:8443/game/${this.state.selectedGame.id}`, {
+      method: "GET",
+      headers: {
+        Accept: "application/json",
+        "Content-Type": "application/json"
+      }
+    })
+      .then(res => res.json())
+      .then(gameInfo => {
+        let newFactions = [{ factionName: "- -" }, ...gameInfo.factions];
+        this.setState({
+          factions: newFactions,
+          selectedFaction: newFactions[0]
+        });
+      })
+      .catch(error => {
+        console.log(error);
+      });
+  }
+
   // Get all the factions from the server
   getFactions() {
     fetch(`https://tacs-testing.cf:8443/game/${this.state.selectedGame.id}`, {
@@ -207,9 +229,13 @@ class GameList extends Component {
       timeout: 30000,
       maximumAge: 0
     };
-    navigator.geolocation.getCurrentPosition(
+    navigator.geolocation.watchPosition(
       position => {
-        console.log("Position : " + position);
+        console.log(
+          "Positio päivittyi: " +
+            position.coords.latitude +
+            position.coords.longitude
+        );
         this.setState({
           userLocation: {
             latitude: position.coords.latitude,
@@ -253,6 +279,7 @@ class GameList extends Component {
             <View style={styles.popupBottom}>
               <View style={styles.popupButton}>
                 <Button
+                  color="#424242"
                   onPress={() => {
                     this.joinFaction();
                     this.setPopupVisible(!this.state.passwordPopupVisible);
@@ -262,6 +289,7 @@ class GameList extends Component {
               </View>
               <View style={styles.popupButton}>
                 <Button
+                  color="#424242"
                   onPress={() => {
                     this.setPopupVisible(!this.state.passwordPopupVisible);
                   }}
@@ -319,9 +347,11 @@ class GameList extends Component {
 
 const styles = StyleSheet.create({
   picker: {
+    color: "#ffffff",
     paddingBottom: 30
   },
   pickerTitle: {
+    color: "#ffffff",
     paddingTop: 10,
     fontSize: 20
   },
@@ -335,10 +365,11 @@ const styles = StyleSheet.create({
   popup: {
     width: 300,
     height: "auto",
-    backgroundColor: "#fff",
+    backgroundColor: "#1d1d1b",
     padding: 20
   },
   popupTitle: {
+    color: "#ffffff",
     fontSize: 20,
     textAlign: "center"
   },
@@ -353,7 +384,7 @@ const styles = StyleSheet.create({
   popupInput: {
     margin: 20,
     padding: 5,
-    backgroundColor: "#e0e0e0"
+    backgroundColor: "#424242"
   }
 });
 
diff --git a/components/LocationTracker.js b/components/LocationTracker.js
index f40a770..d5490c6 100644
--- a/components/LocationTracker.js
+++ b/components/LocationTracker.js
@@ -7,6 +7,8 @@ const LocationTracker = props => {
       <Text style={styles.titleText}>Tracking:</Text>
       <View style={styles.switchContainer}>
         <Switch
+          thumbColor="#556023"
+          trackColor={{ false: "#424242", true: "#859b28" }}
           style={styles.switch}
           value={props.tracking}
           onValueChange={props.handleTrackingChange}
@@ -28,6 +30,7 @@ const styles = StyleSheet.create({
   },
   titleText: {
     fontSize: 40,
+    color: "#ffffff",
     fontWeight: "bold",
     textAlign: "center"
   }
diff --git a/components/Login.js b/components/Login.js
index 33179f4..0449e86 100644
--- a/components/Login.js
+++ b/components/Login.js
@@ -1,5 +1,5 @@
 import React, { Component, Fragment } from "react";
-import { View, Button, StyleSheet, AsyncStorage } from "react-native";
+import { View, Button, StyleSheet, AsyncStorage, Image } from "react-native";
 
 import LoginForm from "./LoginForm";
 import RegisterForm from "./RegisterForm";
@@ -71,26 +71,35 @@ class Login extends Component {
       <View className="container">
         <View className="navigation">
           {!this.state.username && (
-            <Button
-              id="loginButton"
-              onPress={() => this.toggleView("login")}
-              title="Login"
-            />
+            <View style={styles.buttonContainer}>
+              <Button
+                color="#424242"
+                id="loginButton"
+                onPress={() => this.toggleView("login")}
+                title="Login"
+              />
+            </View>
           )}
           {!this.state.username && (
-            <Button
-              id="registerButton"
-              onPress={() => this.toggleView("register")}
-              title="Register"
-            />
+            <View style={styles.buttonContainer}>
+              <Button
+                color="#424242"
+                id="registerButton"
+                onPress={() => this.toggleView("register")}
+                title="Register"
+              />
+            </View>
           )}
           {this.state.username && (
             <Fragment>
-              <Button
-                id="logoutButton"
-                onPress={this.handleLogout.bind(this)}
-                title="Logout"
-              />
+              <View style={styles.buttonContainer}>
+                <Button
+                  color="#424242"
+                  id="logoutButton"
+                  onPress={this.handleLogout.bind(this)}
+                  title="Logout"
+                />
+              </View>
               <GameList token={this.state.token} />
             </Fragment>
           )}
@@ -115,7 +124,14 @@ class Login extends Component {
 }
 
 const styles = StyleSheet.create({
-  container: {}
+  buttonContainer: {
+    padding: 5
+  },
+  logo: {
+    alignContent: "center",
+    alignItems: "center",
+    justifyContent: "center"
+  }
 });
 
 export default Login;
diff --git a/components/LoginForm.js b/components/LoginForm.js
index e8129d2..15877c4 100644
--- a/components/LoginForm.js
+++ b/components/LoginForm.js
@@ -63,7 +63,6 @@ export class LoginForm extends React.Component {
         <View className="sticky">
           <Text
             id="closeLoginFormX"
-            className="close"
             style={styles.close}
             onPress={this.handleView}
           >
@@ -71,8 +70,9 @@ export class LoginForm extends React.Component {
           </Text>
         </View>
         <View className="login">
-          <Text>Login</Text>
+          <Text style={styles.tooltipText}>Login</Text>
           <TextInput
+            style={styles.textInput}
             placeholder="Enter Username"
             value={this.state.username}
             onChangeText={username => this.setState({ username })}
@@ -81,6 +81,7 @@ export class LoginForm extends React.Component {
             required
           />
           <TextInput
+            style={styles.textInput}
             placeholder="Enter password"
             secureTextEntry={true}
             value={this.state.password}
@@ -88,11 +89,14 @@ export class LoginForm extends React.Component {
             id="loginPasswordInput"
             required
           />
-          <Button
-            id="submitLoginButton"
-            title="Submit"
-            onPress={this.handleLogin}
-          />
+          <View style={styles.buttonContainer}>
+            <Button
+              color="#424242"
+              id="submitLoginButton"
+              title="Submit"
+              onPress={this.handleLogin}
+            />
+          </View>
           <Text>{this.state.errorMsg}</Text>
         </View>
       </View>
@@ -102,8 +106,23 @@ export class LoginForm extends React.Component {
 
 const styles = StyleSheet.create({
   close: {
+    marginTop: 10,
+    marginLeft: 100,
+    marginRight: 100,
+    alignContent: "center",
     fontSize: 40,
-    textAlign: "center"
+    textAlign: "center",
+    backgroundColor: "#424242"
+  },
+  textInput: {
+    backgroundColor: "#424242",
+    margin: 5
+  },
+  tooltipText: {
+    color: "#ffffff"
+  },
+  buttonContainer: {
+    padding: 5
   }
 });
 
diff --git a/components/RegisterForm.js b/components/RegisterForm.js
index f9b0fb1..b7e83e2 100644
--- a/components/RegisterForm.js
+++ b/components/RegisterForm.js
@@ -74,17 +74,14 @@ export class RegisterForm extends React.Component {
     return (
       <View className="fade-main">
         <View className="sticky">
-          <Text
-            className="close"
-            onPress={this.handleView}
-            style={styles.close}
-          >
+          <Text onPress={this.handleView} style={styles.close}>
             ×
           </Text>
         </View>
         <View className="login">
-          <Text>Register New User</Text>
+          <Text style={styles.tooltipText}>Register New User</Text>
           <TextInput
+            style={styles.textInput}
             placeholder="Enter Username"
             value={this.state.username}
             onChangeText={username => this.setState({ username })}
@@ -92,6 +89,7 @@ export class RegisterForm extends React.Component {
             required
           />
           <TextInput
+            style={styles.textInput}
             placeholder="Enter password"
             secureTextEntry={true}
             value={this.state.password}
@@ -99,14 +97,21 @@ export class RegisterForm extends React.Component {
             required
           />
           <TextInput
+            style={styles.textInput}
             placeholder="Verify password"
             secureTextEntry={true}
             value={this.state.password2}
             onChangeText={password2 => this.setState({ password2 })}
             required
           />
-          <Button title="Submit" onPress={this.handleRegister} />
-          <Text>{this.state.errorMsg}</Text>
+          <View style={styles.buttonContainer}>
+            <Button
+              color="#424242"
+              title="Submit"
+              onPress={this.handleRegister}
+            />
+          </View>
+          <Text style={styles.tooltipText}>{this.state.errorMsg}</Text>
         </View>
       </View>
     );
@@ -115,8 +120,23 @@ export class RegisterForm extends React.Component {
 
 const styles = StyleSheet.create({
   close: {
+    marginTop: 10,
+    marginLeft: 100,
+    marginRight: 100,
+    alignContent: "center",
     fontSize: 40,
-    textAlign: "center"
+    textAlign: "center",
+    backgroundColor: "#424242"
+  },
+  textInput: {
+    backgroundColor: "#424242",
+    margin: 5
+  },
+  tooltipText: {
+    color: "#ffffff"
+  },
+  buttonContainer: {
+    padding: 5
   }
 });
 
diff --git a/images/tacs-logo-neg.png b/images/tacs-logo-neg.png
new file mode 100644
index 0000000000000000000000000000000000000000..e0940e2dead5354bb113b0edef6e1d22a99671ae
GIT binary patch
literal 7676
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
S&gtKu7SPtvgH)^8MgJd6&4L;L

literal 0
HcmV?d00001

-- 
GitLab