mirror of
https://github.com/mudabbir-ahmad/Project-MAD-crudler.git
synced 2026-10-07 20:40:20 +00:00
Module View added, with images and moved view into reusable component for ModuleView. All activities done for week 2.
This commit is contained in:
1 parent
c18a531a9c
commit
2eacee759a
11 files changed
+84
-38
No files matched your search
@@ -1,5 +1,5 @@
|
||||
import { NavigationContainer } from "@react-navigation/native";
|
||||
import { createNativeStackNavigator } from "@react-navigation/native-stack";
|
||||
import {NavigationContainer} from "@react-navigation/native";
|
||||
import {createNativeStackNavigator} from "@react-navigation/native-stack";
|
||||
import ModuleListScreen from "./src/components/screens/ModuleListScreen";
|
||||
import ModuleModifyScreen from "./src/components/screens/ModuleModifyScreen";
|
||||
import ModuleViewScreen from "./src/components/screens/ModuleViewScreen";
|
||||
@@ -16,33 +16,33 @@ export const App = () => {
|
||||
<NavigationContainer>
|
||||
<Stack.Navigator
|
||||
initialRouteName='ModuleListScreen'
|
||||
screenOptions= {{
|
||||
headerStyle: { backgroundColor: "black" },
|
||||
screenOptions={{
|
||||
headerStyle: {backgroundColor: "black"},
|
||||
headerTintColor: "white"
|
||||
}}
|
||||
>
|
||||
<Stack.Screen
|
||||
name="ModuleListScreen"
|
||||
component={ModuleListScreen}
|
||||
options={{ title: 'List Modules' }}
|
||||
options={{title: 'List Modules'}}
|
||||
/>
|
||||
|
||||
<Stack.Screen
|
||||
name="ModuleAddScreen"
|
||||
component={ModuleAddScreen}
|
||||
options={{ title: 'Add Modules' }}
|
||||
options={{title: 'Add Modules'}}
|
||||
/>
|
||||
|
||||
<Stack.Screen
|
||||
name="ModuleViewScreen"
|
||||
component={ModuleViewScreen}
|
||||
options={{ title: 'View Modules' }}
|
||||
options={{title: 'View Modules'}}
|
||||
/>
|
||||
|
||||
<Stack.Screen
|
||||
name="ModuleModifyScreen"
|
||||
component={ModuleModifyScreen}
|
||||
options={{ title: 'Modify Modules' }}
|
||||
options={{title: 'Modify Modules'}}
|
||||
/>
|
||||
|
||||
</Stack.Navigator>
|
||||
|
||||
Generated
+7
-1
@@ -13,7 +13,8 @@
|
||||
"expo": "^54.0.20",
|
||||
"expo-status-bar": "~3.0.8",
|
||||
"react": "19.1.0",
|
||||
"react-native": "^0.81.5"
|
||||
"react-native": "^0.81.5",
|
||||
"react-native-fullwidth-image": "^0.1.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@0no-co/graphql.web": {
|
||||
@@ -7756,6 +7757,11 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/react-native-fullwidth-image": {
|
||||
"version": "0.1.3",
|
||||
"resolved": "https://registry.npmjs.org/react-native-fullwidth-image/-/react-native-fullwidth-image-0.1.3.tgz",
|
||||
"integrity": "sha512-nFe5EAEPlPaT1vw1abwnNmSZN9oLMzNXJAKKxeuWqPI9L7rGhXhpZH4KEBUzbqkk+58TjdT9d2bf070/GB4PGQ=="
|
||||
},
|
||||
"node_modules/react-native-is-edge-to-edge": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/react-native-is-edge-to-edge/-/react-native-is-edge-to-edge-1.2.1.tgz",
|
||||
|
||||
+2
-1
@@ -14,7 +14,8 @@
|
||||
"expo": "^54.0.20",
|
||||
"expo-status-bar": "~3.0.8",
|
||||
"react": "19.1.0",
|
||||
"react-native": "^0.81.5"
|
||||
"react-native": "^0.81.5",
|
||||
"react-native-fullwidth-image": "^0.1.3"
|
||||
},
|
||||
"private": true
|
||||
}
|
||||
@@ -1,12 +1,12 @@
|
||||
import {StyleSheet, Text, View, Pressable} from "react-native";
|
||||
|
||||
const ModuleItem = ({module, onSelect }) => {
|
||||
const ModuleItem = ({module, onSelect}) => {
|
||||
// Initialisation -------------
|
||||
// State ----------------------
|
||||
// Handlers -------------------
|
||||
// View -----------------------
|
||||
|
||||
return(
|
||||
return (
|
||||
<Pressable key={module.ModuleCode} onPress={() => onSelect(module)}>
|
||||
<View style={styles.modulesItem}>
|
||||
<Text style={styles.text}>
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
import {StyleSheet, ScrollView } from "react-native";
|
||||
import {StyleSheet, ScrollView} from "react-native";
|
||||
import ModuleItem from "./ModuleItem";
|
||||
import React from "react";
|
||||
|
||||
const ModuleList = ({modules, onSelect }) => {
|
||||
const ModuleList = ({modules, onSelect}) => {
|
||||
// Initialisation -------------
|
||||
// State ----------------------
|
||||
// Handlers -------------------
|
||||
// View -----------------------
|
||||
|
||||
return(
|
||||
return (
|
||||
<ScrollView style={styles.modulesContainer}>
|
||||
{modules.map((module) => {
|
||||
return(
|
||||
return (
|
||||
<ModuleItem
|
||||
module={module}
|
||||
key={module.ModuleCode}
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
import {StyleSheet, Text, View } from "react-native";
|
||||
import FullWidthImage from "react-native-fullwidth-image";
|
||||
|
||||
const ModuleView = ({module}) => {
|
||||
// Initialisation -------------
|
||||
// State ----------------------
|
||||
// Handlers -------------------
|
||||
// View -----------------------
|
||||
|
||||
return (<View style={styles.container}>
|
||||
<FullWidthImage source={{uri: module.ModuleImage}} style={styles.image}/>
|
||||
|
||||
<View style={styles.infoTray}>
|
||||
<Text style={styles.boldText}>View {module.ModuleCode} {module.ModuleName}</Text>
|
||||
<Text style={styles.text}>Level {module.ModuleLevel}</Text>
|
||||
<Text style={styles.Text}>
|
||||
{module.ModuleLeaderName} <Text style={styles.dimText}>(Module Leader)</Text>
|
||||
</Text>
|
||||
|
||||
</View>
|
||||
</View>);
|
||||
};
|
||||
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
container: {
|
||||
gap: 15,
|
||||
}, infoTray: {
|
||||
gap: 5,
|
||||
}, image: {
|
||||
borderRadius: 3,
|
||||
}, text: {
|
||||
fontSize: 16,
|
||||
}, boldText: {
|
||||
fontSize: 16, fontWeight: 'bold',
|
||||
}, dimText: {
|
||||
color: "grey",
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
export default ModuleView;
|
||||
@@ -1,5 +1,5 @@
|
||||
import { StatusBar } from "expo-status-bar";
|
||||
import { StyleSheet, View } from "react-native";
|
||||
import {StatusBar} from "expo-status-bar";
|
||||
import {StyleSheet, View} from "react-native";
|
||||
|
||||
const Screen = ({children}) => {
|
||||
// Initialisation -------------
|
||||
@@ -9,7 +9,7 @@ const Screen = ({children}) => {
|
||||
return (
|
||||
<View style={styles.screen}>
|
||||
{children}
|
||||
<StatusBar style="light" />
|
||||
<StatusBar style="light"/>
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { StyleSheet, Text } from "react-native";
|
||||
import {StyleSheet, Text} from "react-native";
|
||||
import Screen from "../layout/Screen";
|
||||
|
||||
export const ModuleAddScreen = () => {
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
import { useState } from "react";
|
||||
import { StyleSheet } from "react-native";
|
||||
import {useState} from "react";
|
||||
import {StyleSheet} from "react-native";
|
||||
import Screen from "../layout/Screen";
|
||||
import ModuleList from "../entity/modules/ModuleList";
|
||||
import initialModules from "../../data/modules.js";
|
||||
import RenderCount from "../UI/RenderCount";
|
||||
import ModuleViewScreen from "./ModuleViewScreen";
|
||||
|
||||
const ModuleListScreen = ({navigation}) => {
|
||||
// Initialisation -------------
|
||||
// let modules = initialModules;
|
||||
|
||||
// State ----------------------
|
||||
const [ modules, setModules] = useState(initialModules);
|
||||
const [modules, setModules] = useState(initialModules);
|
||||
|
||||
|
||||
// Handlers -------------------
|
||||
@@ -19,13 +18,13 @@ const ModuleListScreen = ({navigation}) => {
|
||||
const handleDelete = (module) =>
|
||||
setModules(modules.filter((item) => item.ModuleID !== module.ModuleID));
|
||||
|
||||
const handleSelect = (module) => navigation.navigate('ModuleViewScreen', { module });
|
||||
const handleSelect = (module) => navigation.navigate('ModuleViewScreen', {module});
|
||||
// View -----------------------
|
||||
|
||||
return (
|
||||
<Screen>
|
||||
<RenderCount />
|
||||
<ModuleList modules={modules} onSelect={handleSelect} />
|
||||
<RenderCount/>
|
||||
<ModuleList modules={modules} onSelect={handleSelect}/>
|
||||
</Screen>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { StyleSheet, Text } from "react-native";
|
||||
import {StyleSheet, Text} from "react-native";
|
||||
import Screen from "../layout/Screen";
|
||||
|
||||
export const ModuleModifyScreen = () => {
|
||||
|
||||
@@ -1,21 +1,19 @@
|
||||
import { StyleSheet, Text } from "react-native";
|
||||
import {StyleSheet} from "react-native";
|
||||
import Screen from "../layout/Screen";
|
||||
import ModuleView from "../entity/modules/ModuleView";
|
||||
|
||||
export const ModuleViewScreen = ({Navigate, route}) => {
|
||||
|
||||
export const ModuleViewScreen = ({ route }) => {
|
||||
// Initialisation -------------
|
||||
|
||||
const { module } = route.params;
|
||||
const {module} = route.params;
|
||||
|
||||
// State ----------------------
|
||||
// Handlers -------------------
|
||||
// View -----------------------
|
||||
return (
|
||||
<Screen style={styles.container}>
|
||||
<Text>
|
||||
View {module.ModuleCode} {module.ModuleName}
|
||||
</Text>
|
||||
</Screen>
|
||||
);
|
||||
return (<Screen>
|
||||
<ModuleView module={module}></ModuleView>
|
||||
</Screen>);
|
||||
};
|
||||
|
||||
const styles = StyleSheet.create({});
|
||||
|
||||
Reference in new issue
Block a user