Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
e531fb0
14/02-2
Dhanushit419 Feb 14, 2024
e031447
15/02
Dhanushit419 Feb 15, 2024
4a67108
15/02 2
Dhanushit419 Feb 15, 2024
a6a87d7
Some changes in dependencies version
Yuvaraj787 Feb 16, 2024
a378620
Merge branch 'dhanush' into yuvaraj
Yuvaraj787 Feb 16, 2024
88cd71a
notification page added and axios
Dhanushit419 Feb 16, 2024
d17b29d
After merging with dhanush branch
Yuvaraj787 Feb 16, 2024
a6fea5f
Merge remote-tracking branch 'origin/yuvaraj' into Dhanush
Dhanushit419 Feb 16, 2024
f54e386
merged 16/02
Dhanushit419 Feb 16, 2024
f74180f
changed route
Yuvaraj787 Feb 16, 2024
82fd251
Merge remote-tracking branch 'origin/dhanush' into yuvaraj
Yuvaraj787 Feb 16, 2024
d337331
Added profile page
Yuvaraj787 Feb 16, 2024
0b305ee
working on atendence
Dhanushit419 Feb 16, 2024
3aa05c0
Merge remote-tracking branch 'origin/yuvaraj' into Dhanush
Dhanushit419 Feb 16, 2024
5427c36
Integrated with backend and added inside college locations
Yuvaraj787 Feb 17, 2024
c88b38e
working on attendence
Dhanushit419 Feb 17, 2024
ae99b37
Merge remote-tracking branch 'origin/yuvaraj' into Dhanush
Dhanushit419 Feb 17, 2024
04d4a17
Many design and functionalies added like login and logout identification
Yuvaraj787 Feb 17, 2024
106de7b
bunk managing
Dhanushit419 Feb 18, 2024
b7527c7
so many changes
Yuvaraj787 Feb 18, 2024
d40f899
Merge remote-tracking branch 'origin/yuvaraj' into Dhanush
Dhanushit419 Feb 18, 2024
b323d4c
Some changes and added IT department location
Yuvaraj787 Feb 22, 2024
a591b98
Merge remote-tracking branch 'origin/dhanush' into yuvaraj
Yuvaraj787 Feb 22, 2024
7586f41
So many changes
Yuvaraj787 Feb 25, 2024
b21f8bf
25/02
Dhanushit419 Feb 25, 2024
478e9a4
Merge remote-tracking branch 'origin/yuvaraj' into Dhanush
Dhanushit419 Feb 25, 2024
df065cd
Console.log removed
Yuvaraj787 Feb 26, 2024
6ec8889
schedule integrated with backend
Yuvaraj787 Feb 27, 2024
ba39778
bunk manager completed,working on courses
Dhanushit419 Feb 27, 2024
d99adaa
Some changes
Yuvaraj787 Feb 29, 2024
a07218c
Merge remote-tracking branch 'origin/yuvaraj' into Dhanush
Dhanushit419 Feb 29, 2024
c679d48
console
Dhanushit419 Feb 29, 2024
dda38ef
Merge remote-tracking branch 'origin/yuvaraj' into Dhanush
Dhanushit419 Feb 29, 2024
dbdd262
many changes
Yuvaraj787 Mar 1, 2024
cf8620d
Merge remote-tracking branch 'origin/dhanush' into yuvaraj
Yuvaraj787 Mar 1, 2024
d6cc517
Notification added
Yuvaraj787 Mar 5, 2024
910a379
changes
Dhanushit419 Mar 21, 2024
69c7396
40% implementation
Yuvaraj787 Mar 21, 2024
3fd79be
merge
Dhanushit419 Mar 21, 2024
48dd78f
changes
Dhanushit419 Mar 21, 2024
f9682f0
merge kaga
Dhanushit419 Mar 21, 2024
ca1683d
schedule added for staff
Dhanushit419 Mar 23, 2024
14ed0c8
Free hours fetching
Yuvaraj787 Mar 23, 2024
d8bf379
after merge in dhanush house
Yuvaraj787 Mar 23, 2024
3a2b8f6
Added attendance
Dhanushit419 Mar 28, 2024
f334615
myside changes
Yuvaraj787 Mar 28, 2024
a0f401c
Merge remote-tracking branch 'origin/dhanush' into yuvaraj
Yuvaraj787 Mar 28, 2024
294cc06
merge
Dhanushit419 Mar 28, 2024
70ba062
sync
Yuvaraj787 Mar 29, 2024
a94128d
Merge remote-tracking branch 'origin/dhanush' into yuvaraj
Yuvaraj787 Mar 29, 2024
d736c74
change venue
Dhanushit419 Mar 29, 2024
cc7b076
chjanges
Dhanushit419 Mar 29, 2024
f07c754
after merges
Dhanushit419 Mar 29, 2024
33b0149
Hectic day
Yuvaraj787 Mar 29, 2024
9b3bec3
att for student
Dhanushit419 Mar 29, 2024
21c4aa0
merge
Dhanushit419 Mar 29, 2024
7d6a813
git merged with dhanush
Yuvaraj787 Mar 29, 2024
eee8f97
loading added
Yuvaraj787 Mar 31, 2024
436e917
bunk
Dhanushit419 Mar 31, 2024
466bd0f
change pw going on
Dhanushit419 Mar 31, 2024
8a9c9f4
after collapse
Yuvaraj787 Apr 16, 2024
65612ff
16/04
Dhanushit419 Apr 16, 2024
61c2aaf
before merge not so
Yuvaraj787 Apr 16, 2024
5ae15ed
after merge
Dhanushit419 Apr 16, 2024
88ae26b
merged with dhanush
Yuvaraj787 Apr 16, 2024
4c7be31
infos
Dhanushit419 Apr 16, 2024
9870d26
final changes
Dhanushit419 Apr 24, 2024
aed41e3
excel download finished - frontend
Yuvaraj787 Apr 27, 2024
0d31959
final
Dhanushit419 Apr 29, 2024
26bafa7
finall
Dhanushit419 May 6, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions %ProgramData%/Microsoft/Windows/UUS/State/_active.uusver
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1215.2401.19022.0
9 changes: 9 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [

]
}
304 changes: 289 additions & 15 deletions App.js
Original file line number Diff line number Diff line change
@@ -1,25 +1,299 @@
import 'react-native-gesture-handler'
import 'react-native-gesture-handler';
import { NavigationContainer } from "@react-navigation/native";
import { Ionicons, FontAwesome5 } from '@expo/vector-icons';
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
// import { NavigationContainer } from '@react-navigation/native';
// import { createNativeStackNavigator } from '@react-navigation/native-stack';
import Login from "./Pages/login"
import { View } from 'react-native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import { createStackNavigator } from '@react-navigation/stack';
import { TouchableOpacity, View, Text, StyleSheet } from "react-native";
import { Entypo } from '@expo/vector-icons';
import React, { useState, useEffect, createContext, useContext } from 'react'
// import SkeletonContent from 'react-native-skeleton-content'
import Login from "./Pages/login";
import ChangePw from "./Pages/changePw"
import AddCourse from "./Pages/AddCourse";
import DashBoard from "./Pages/Dashboard";
import StaffDashBoard from "./Pages/StaffDashBoard"
import SignUp from "./Pages/Signup";
import Notification from './Pages/Notifications';
import Profile from "./Pages/Profile";
import Attendence from './Pages/AttendenceManager';
import ipAddr from "./functions/ip_addr";
import axios from 'axios';
import StaffLogin from "./Pages/staffLogin"
import StaffProfile from "./Pages/StaffProfile"
import StaffAttendence from "./Pages/StaffAtt"
import AttendanceDisplay from './Pages/AttDisplay';
import * as Device from 'expo-device';
import AsyncStorage from '@react-native-async-storage/async-storage';
import Schedule from './Pages/Schedule';
import CoursesDisplay from './Pages/coursesDisplay';
import registerNNPushToken from 'native-notify';
import { registerIndieID, unregisterIndieDevice } from 'native-notify';

// import { registerForPushNotificationsAsync } from './functions/notify_sender';

const BottomTab = createBottomTabNavigator()
const Stack = createNativeStackNavigator();


const BottomTab = createBottomTabNavigator();
const Stack = createStackNavigator();
const LogContext = createContext(null);

export default function App() {
registerNNPushToken(19717, '6cGVSWyXY5RoTiF9pUgfiS');
const [isLoggedIn, setLoggedIn] = useState(false);
const [isStaffLoggedIn, setStaffLoggedIn] = useState(false);

const [loading, setLoading] = useState(true);
const [expoPushToken, setExpoPushToken] = useState('');
const makeItTrue = () => {
setStaffLoggedIn(true);
}

useEffect(() => {
var tok, roll;
async function fetch() {
try {
tok = await AsyncStorage.getItem("token");
roll = await AsyncStorage.getItem("roll");
} catch (err) {
console.log("Error in app.js token and roll fetching : ", err.message)
}
if (!tok) {
setLoggedIn(false);
setLoading(false);
console.log("INFO : No Auth token", tok)
return;
}
console.log("INFO: Auth Token is present")
axios({
url: "http://" + ipAddr + ":3000/auth/verify",
method: "POST",
params: { token: tok }
}).then(res => {
console.log("token verifiction finish")
console.log(res.data)
if (res.data.success) {
if (res.data.isFaculty) {
setStaffLoggedIn(true);
} else {
setLoggedIn(true);
}
}
setLoading(false);
}).catch(err => {
console.log("ERROR: In verifying token", err.message);
setLoading(false);
})
}
fetch();

}, [])
return (
<NavigationContainer>
<BottomTab.Navigator initialRouteName='Login'>
<BottomTab.Screen name="Login" component={Login} />
<BottomTab.Screen name="Add Couse" component={AddCourse} />
</BottomTab.Navigator>
</NavigationContainer>
loading ? <Loading /> :
<>
<LogContext.Provider value={[setLoggedIn, makeItTrue, setStaffLoggedIn]}>
{
isStaffLoggedIn ?
<NavigationContainer>
<AfterLoginStaff />
</NavigationContainer>
: (isLoggedIn ?
<NavigationContainer>
<AfterLogin />
</NavigationContainer>
:
<NavigationContainer>
<BeforeLogin />
</NavigationContainer>)
}
</LogContext.Provider>
</>
)
}

export { LogContext }

function Loading() {
return (
<View style={styles.loadingContainer}>
<Text style={styles.loadingText}>Loading...</Text>
</View>
)
}

function AfterLoginStaff() {
return (
<>
<Stack.Navigator
screenOptions={({ navigation }) => ({
headerRight: () => (
<TouchableOpacity
style={{ marginRight: 30, marginTop: 10 }}
onPress={() => {
console.log("Notification Pressed");
navigation.navigate("Notification");
}}
>
<Ionicons name="notifications" size={24} color="black" />
</TouchableOpacity>
)
})}
>
<Stack.Screen name="Main" component={MainScreenStaffs} options={{ headerShown: false }} />
<Stack.Screen name="Notification" component={Notification} />
<Stack.Screen name="CourseDisplay" component={CoursesDisplay} options={{ headerTitle: "My Courses" }} />
<Stack.Screen name="Attendence" component={Attendence} />
<Stack.Screen name="Dashboard" component={DashBoard} />
<Stack.Screen name="Schedule" component={Schedule} />
<Stack.Screen name="StaffAttendance" component={StaffAttendence} />
<Stack.Screen name="ChangePw" component={ChangePw} options={{ headerTitle: "Change Password" }} />



</Stack.Navigator>
</>
)
}


function AfterLogin() {
return (
<>
<Stack.Navigator
screenOptions={({ navigation }) => ({
headerRight: () => (
<TouchableOpacity
style={{ marginRight: 30, marginTop: 10 }}
onPress={() => {
console.log("Notification Pressed");
navigation.navigate("Notification");
}}
>
<Ionicons name="notifications" size={24} color="black" />
</TouchableOpacity>
)
})}
>
<Stack.Screen name="Main" component={MainScreen} options={{ headerShown: false }} />
<Stack.Screen name="Notification" component={Notification} options={{ headerTitle: "Notification" }} />
<Stack.Screen name="AddCourse" component={AddCourse} options={{ headerTitle: "Add a Course" }} />
<Stack.Screen name="CourseDisplay" component={CoursesDisplay} options={{ headerTitle: "My Courses" }} />
<Stack.Screen name="Attendence" component={Attendence} options={{ headerTitle: "Bunk Manager" }} />
<Stack.Screen name="AttendenceDisplay" component={AttendanceDisplay} options={{ headerTitle: "My Attendance" }} />
<Stack.Screen name="Dashboard" component={DashBoard} />
<Stack.Screen name="Schedule" component={Schedule} />
<Stack.Screen name="ChangePw" component={ChangePw} options={{ headerTitle: "Change Password" }} />
</Stack.Navigator>
</>
)
}

function MainScreenStaffs() {
return (
<BottomTab.Navigator initialRouteName='StaffDashboard'>
<BottomTab.Screen
name="StaffDashboard"
component={StaffDashBoard}
// children={()=><DashBoard />}
options={{
tabBarLabel: "Staff Dashboard",
tabBarIcon: () => (<Ionicons name="ios-analytics" size={20} />),
headerShown: true,
headerTitle: "Staff Dashboard"
}}
/>
<BottomTab.Screen
name="Profile"
component={StaffProfile}
options={{
tabBarLabel: "Profile",
tabBarIcon: () => (<Ionicons name="ios-person" size={20} />),
headerShown: true,
headerTitle: "Profile"
}}
/>
</BottomTab.Navigator>
);
}

function MainScreen() {
return (
<BottomTab.Navigator initialRouteName='Dashboard'>
<BottomTab.Screen
name="Dashboard"
component={DashBoard}
// children={()=><DashBoard />}
options={{
tabBarLabel: "Dashboard",
tabBarIcon: () => (<Ionicons name="ios-analytics" size={20} />),
headerShown: true,
headerTitle: "Dashboard"
}}
/>
<BottomTab.Screen
name="Profile"
component={Profile}
options={{
tabBarLabel: "Profile",
tabBarIcon: () => (<Ionicons name="ios-person" size={20} />),
headerShown: true,
headerTitle: "Profile"
}}
/>
</BottomTab.Navigator>
);
}

function BeforeLogin() {
return (
<BottomTab.Navigator initialRouteName='Login'>

<BottomTab.Screen
name="Login"
component={Login}
// children={() => <Login />}
options={{
tabBarLabel: "Student Login",
tabBarIcon: () => (<Entypo name="login" size={20} color="black" />),
headerShown: true,
headerTitle: "Student Login",
}}
/>
<BottomTab.Screen
name="Signup"
component={SignUp}
options={{
tabBarLabel: "Signup",
tabBarIcon: () => (<Ionicons name="person-add-sharp" size={20} />),
headerShown: true,
headerTitle: "Register"
}}
/>
<BottomTab.Screen
name="StaffLogin"
component={StaffLogin}
// children={() => <Login />}
options={{
tabBarLabel: "Staff Login",
tabBarIcon: () => (<FontAwesome5 name="chalkboard-teacher" size={20} color="black" />),
headerShown: true,
headerTitle: "Staff Login",
}}
/>
</BottomTab.Navigator>
)
}



}
const styles = StyleSheet.create({
loadingContainer: {
display: "flex",
justifyContent: "center",
alignItems: "center",
height: "100%"
},
loadingText: {
fontSize: 22,
fontWeight: "bold"
}
})
10 changes: 10 additions & 0 deletions Components/Schedule.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[
{"courseNo": 13,"Hour":"1","Subject":"SRP Lab","staff":"Jasmine","location":"KP"},
{"courseNo": 13,"Hour":"2","Subject":"SRP Lab","staff":"Jasmine","location":"KP"},
{"courseNo": 13,"Hour":"3","Subject":"Social Network Analysis","staff":"Mala","location":"KP"},
{"courseNo": 13,"Hour":"4","Subject":"Social Network Analysis","staff":"Mala","location":"KP"},
{"courseNo": 13,"Hour":"5","Subject":"IOT ","staff":"Selvi Ravindran","location":"KP"},
{"courseNo": 13,"Hour":"6","Subject":"IOT ","staff":"Selvi Ravindran","location":"KP"},
{"courseNo": 13,"Hour":"7","Subject":"SRP Lab","staff":"Jasmine","location":"KP"},
{"courseNo": 13,"Hour":"8","Subject":"SRP Lab","staff":"Jasmine","location":"KP"}
]
44 changes: 44 additions & 0 deletions Components/Skeleton.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import { View } from "react-native";
import { StyleSheet } from "react-native";
const CardSkeleton = () => {
return (
<View style={styles.container}>
{/* Placeholder card content */}
<View style={styles.placeholder} />
<View style={styles.placeholder} />
<View style={styles.placeholder} />
</View>
);
};

const styles = StyleSheet.create({
container: {
backgroundColor: '#F6F6F6',
borderRadius: 13,
padding: 16,
marginBottom: 16,
marginTop: 50,
},
placeholder: {
backgroundColor: '#ccc',
height: 16,
borderRadius: 4,
marginBottom: 8,
},
card: {
backgroundColor: '#FFFFFF',
borderRadius: 8,
padding: 16,
marginHorizontal: 16,
marginBottom: 16,
marginTop: 50,
shadowColor: '#000',
shadowOpacity: 0.1,
shadowOffset: { width: 0, height: 2 },
shadowRadius: 4,
elevation: 2,
}
})


export default CardSkeleton
Loading