Skip to content

Commit

Permalink
showcase rework
Browse files Browse the repository at this point in the history
  • Loading branch information
Lucas-Jacobsen committed Dec 1, 2023
1 parent dbfe8d6 commit 054a189
Show file tree
Hide file tree
Showing 20 changed files with 756 additions and 466 deletions.
223 changes: 135 additions & 88 deletions App.tsx
Original file line number Diff line number Diff line change
@@ -1,136 +1,183 @@
import React, { useState } from 'react';
import { ImageBackground, StyleSheet,View, Dimensions , Text, Button, Alert, Pressable, TextInput} from 'react-native';
import { Table, TableWrapper, Row, Rows, Col, Cols, Cell } from 'react-native-table-component';
import MapView, {PROVIDER_GOOGLE} from 'react-native-maps';
import {NavigationContainer} from '@react-navigation/native';
import {createNativeStackNavigator, NativeStackScreenProps} from '@react-navigation/native-stack';
import { RootStackParamList } from './types';
import { Header } from 'react-native/Libraries/NewAppScreen';
import { Image } from 'expo-image';
import RiderMain from './src/screens/Rider/RiderMain';
import DriverMain from './src/screens/Driver/screens/DriverMain';
import AdminMain from './src/screens/Admin/screens/AdminMain'

import React, { useState } from "react";
import {
ImageBackground,
StyleSheet,
View,
Dimensions,
Text,
Button,
Alert,
Pressable,
TextInput,
} from "react-native";
import {
Table,
TableWrapper,
Row,
Rows,
Col,
Cols,
Cell,
} from "react-native-table-component";
import MapView, { PROVIDER_GOOGLE } from "react-native-maps";
import { NavigationContainer } from "@react-navigation/native";
import {
createNativeStackNavigator,
NativeStackScreenProps,
} from "@react-navigation/native-stack";
import { RootStackParamList } from "./types";
import { Header } from "react-native/Libraries/NewAppScreen";
import { Image } from "expo-image";
import RiderMain from "./src/screens/Rider/RiderMain";
import DriverMain from "./src/screens/Driver/screens/DriverMain";
import AdminMain from "./src/screens/Admin/screens/AdminMain";
import { loadedShuttleData } from "./src/datasource/dataLoader";
import { Shuttle } from "./src/models/Shuttle";

const Stack = createNativeStackNavigator<RootStackParamList>();
const { width, height } = Dimensions.get("window");
const bImage = '../shuttleu/src/assets/vecteezy_minimal-background-purple-color-and-there-are-two-lines-on_12847530_386.jpg';
const bImage =
"../shuttleu/src/assets/vecteezy_minimal-background-purple-color-and-there-are-two-lines-on_12847530_386.jpg";

export default function App() {


return (
<NavigationContainer>
<Stack.Navigator screenOptions={{headerShown: false}}>
<Stack.Screen name="Login" component={Login} options={{title: 'Login'}} />
<Stack.Screen name="RiderMain" component={RiderMain} options={{title: 'RiderMain'}} />
<Stack.Screen name="DriverMain" component={DriverMain} options={{title: 'DriverMain'}} />
<Stack.Screen name="AdminMain" component={AdminMain} options={{title: 'DriverMain'}} />

<Stack.Navigator screenOptions={{ headerShown: false }}>
<Stack.Screen
name="Login"
component={Login}
options={{ title: "Login" }}
/>
<Stack.Screen
name="RiderMain"
component={RiderMain}
options={{ title: "RiderMain" }}
/>
<Stack.Screen
name="DriverMain"
component={DriverMain}
options={{ title: "DriverMain" }}
/>
<Stack.Screen
name="AdminMain"
component={AdminMain}
options={{ title: "DriverMain" }}
/>
</Stack.Navigator>
</NavigationContainer>


);
}

type LoginProps = NativeStackScreenProps<RootStackParamList, "Login">;

const Login: React.FC<LoginProps> = (props) =>{
const [shuttleCode, setShuttleCode] = useState<string>('');
const Login: React.FC<LoginProps> = (props) => {
const [shuttleCode, setShuttleCode] = React.useState<string>("");

const handleDriverMainClick = () => {
if (shuttleCode === '') {
// Show an alert if the shuttle code is empty
Alert.alert('Please enter a shuttle code');
if (shuttleCode && isShuttleCodeValid(shuttleCode)) {
const selectedShuttle = loadedShuttleData.find(
(shuttle) => shuttle.code === shuttleCode
);
if (selectedShuttle) {
props.navigation.push("DriverMain");
} else {
Alert.alert("Shuttle not found");
}
} else {
// Navigate to DriverMain with the shuttleCode
props.navigation.push('DriverMain');
Alert.alert("Please enter a valid shuttle code");
}
};

return(
<View style={styles.container}>
<ImageBackground source={require(bImage)} resizeMode="stretch" style={styles.bImage}>
<Image
style={styles.image}
source={require('./src/assets/Control-V-removebg-preview.png')}
contentFit="cover"
placeholder="Logo"
></Image>


<Pressable style={styles.button} onPress={() => props.navigation.push("RiderMain")}><Text style={styles.text}>Rider Main</Text></Pressable>

<Pressable style={styles.button} onPress={() => props.navigation.push("DriverMain")}><Text style={styles.text}>Driver Main </Text></Pressable>
<TextInput
style={styles.input}
placeholder="Enter Shuttle Code"
onChangeText={(text) => setShuttleCode(text)}
value={shuttleCode}
/>
<Pressable style={styles.button} onPress={() => props.navigation.push("AdminMain")}><Text style={styles.text}>Admin Main</Text></Pressable>
const isShuttleCodeValid = (code: string): boolean => {
return loadedShuttleData.some((shuttle) => shuttle.code === code);
};
return (
<View style={styles.container}>
<ImageBackground
source={require(bImage)}
resizeMode="stretch"
style={styles.bImage}
>
<Image
style={styles.image}
source={require("./src/assets/Control-V-removebg-preview.png")}
contentFit="cover"
placeholder="Logo"
></Image>


<Pressable
style={styles.button}
onPress={() => props.navigation.push("RiderMain")}
>
<Text style={styles.text}>Rider Main</Text>
</Pressable>

</ImageBackground>
</View>
);};
<Pressable style={styles.button} onPress={handleDriverMainClick}>
<Text style={styles.text}>Driver Main </Text>
</Pressable>
<TextInput
style={styles.input}
placeholder="Enter Shuttle Code"
onChangeText={(text) => setShuttleCode(text)}
value={shuttleCode}
/>
<Pressable
style={styles.button}
onPress={() => props.navigation.push("AdminMain")}
>
<Text style={styles.text}>Admin Main</Text>
</Pressable>
</ImageBackground>
</View>
);
};

const styles = StyleSheet.create({
container:{
alignItems: 'center',
container: {
alignItems: "center",
backgroundColor: "#f1f1f1",
flex: 1,

},
header:{
},
header: {
fontSize: 30,
marginTop: 50,
textAlign: 'center'


textAlign: "center",
},
image:{
image: {
width: 342,
height: 116 ,
resizeMode: 'cover',
marginTop: 100

},
button:{
alignItems: 'center',
justifyContent: 'center',
height: 116,
resizeMode: "cover",
marginTop: 100,
},
button: {
alignItems: "center",
justifyContent: "center",
paddingVertical: 12,
paddingHorizontal: 32,
borderRadius: 25,
borderColor: 'grey',
borderColor: "grey",
borderWidth: 2.5,
elevation: 3,
width: 300,
marginTop: 50,

},
text: {
fontSize: 36,
lineHeight: 50,
fontWeight: '400',
fontWeight: "400",
letterSpacing: 0.25,
color: 'black',
color: "black",
},
bImage:{
bImage: {
height: height,
width: width,
alignItems:'center',


alignItems: "center",
},
input: {
height: 40, // Adjust the height as needed
borderColor: 'gray', // Border color
borderWidth: 1, // Border width
height: 40, // Adjust the height as needed
borderColor: "gray", // Border color
borderWidth: 1, // Border width
paddingHorizontal: 10, // Horizontal padding
marginTop: 10,
}


marginTop: 10,
},
});
File renamed without changes.
33 changes: 17 additions & 16 deletions src/dataLoader.tsx → src/datasource/dataLoader.tsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
import data from './data.json'
import { Bldg } from './models/bldg';
import { Shuttle } from './models/Shuttle';
import ShuttleTripData from './models/ShuttleTripData';
import { Trip } from './models/Trip';
import data from "./data.json";
import { Bldg } from "../models/bldg";
import { Shuttle } from "../models/Shuttle";
import ShuttleTripData from "../models/ShuttleTripData";
import { Trip } from "../models/Trip";

// Read data from data.json


// Extract data from JSON
const { sampleList, sampleData, sampleTrips, sampleBuildings } = data;

Expand All @@ -22,16 +21,18 @@ export const loadedShuttleData: Shuttle[] = sampleList.map((item: any) => {
);
});

export const loadedShuttleTripData: ShuttleTripData[] = sampleData.map((item: any) => {
return {
shuttleId: item.shuttleId,
lat: item.lat,
lon: item.lon,
dropoff: item.dropoff,
pax: item.pax,
dur: item.dur,
};
});
export const loadedShuttleTripData: ShuttleTripData[] = sampleData.map(
(item: any) => {
return {
shuttleId: item.shuttleId,
lat: item.lat,
lon: item.lon,
dropoff: item.dropoff,
pax: item.pax,
dur: item.dur,
};
}
);

export const loadedTripData: Trip[] = sampleTrips.map((item: any) => {
return new Trip(
Expand Down
1 change: 1 addition & 0 deletions src/models/Trip.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,5 @@ export class Trip {
this.pax = pax;
this.dur = dur;
}

}
2 changes: 1 addition & 1 deletion src/screens/Admin/screens/AdminInventory.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import {
FlatList,
} from "react-native";
import { Row, Rows, Table } from "react-native-table-component";
import { loadedShuttleData, loadedTripData } from "../../../dataLoader";
import { loadedShuttleData, loadedTripData } from "../../../datasource/dataLoader";

const { width, height } = Dimensions.get("window");

Expand Down
6 changes: 3 additions & 3 deletions src/screens/Admin/screens/AdminLogs.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import {
FlatList,
} from "react-native";
import { Row, Rows, Table } from "react-native-table-component";
import { loadedTripData } from "../../../dataLoader";
import { loadedTripData } from "../../../datasource/dataLoader";

const { width, height } = Dimensions.get("window");

Expand All @@ -26,8 +26,8 @@ const ViewShuttleLogs = () => {
<View style={styles.row}>
<Text style={styles.headerCell}>id</Text>
<Text style={styles.headerCell}>Shuttle</Text>
<Text style={styles.headerCell}>Pickup</Text>
<Text style={styles.headerCell}>Dropoff</Text>
<Text style={styles.headerCell}>Bldg-Pickup</Text>
<Text style={styles.headerCell}>Bldg-Dropoff</Text>
<Text style={styles.headerCell}>Passengers</Text>
<Text style={styles.headerCell}>Durration</Text>
</View>
Expand Down
Loading

0 comments on commit 054a189

Please sign in to comment.