-
Notifications
You must be signed in to change notification settings - Fork 0
User Dashboard
- Stores user punch in and out time.
- Total work time.
- Allocate new task and track the timings.
- Analyzed view of task and project timings.
- User login authentication.
Application can be used in various companies where user works under some projects.
Required inputs:
- Email address
- Password
Login authentication performed using Rest API.
Future scope: Initialize punch-in/out based on user presence on a WiFi zone (working location). Wifi MAC address should match with office Wifi MAC address (Set by admin).
Two conditions in initial load:
1. Opening first time on that date:
- Update Punch in time
- Start punch in timer
- Start any task from the schedule or add new task
- Update start time of task
- Start task timer
2. Date already exist
- Fetch previous timings of task and work time
- Start task and punch in/out timer
- Update database
Database will be updated in these five situations:
- While opening application
- Application moves to background
- Application moves to foreground
- Transition between application pages
- Application terminated
Required inputs:
- Task name
- Task Description (Optional)
- Project name
Actions:
- Save task: Stores to the database all above fields except start time
- Start task: Stores to the database with start time
1. Day Activity View:
- Displays all the tasks with respect to date
- Representation in the form of single horizontal bar graph
- X- axis label: from 8AM to 8PM
- X- axis value: single horizontal bar graph represents user task timings
2. Week Activities View:
- Displays all the tasks with respect to week
- Representation in the form of vertical bar graph
- X- axis label: from Monday to Sunday
- Y- axis values: vertical bar graph represents user work timings
- By clicking bar, page should move to the day activity view
3. Month Activities View:
- Displays all the tasks with respect to month
- Representation in the form of calendar
- Each day will contains circle view which will describe total work time on that date
- By clicking day in the calendar, page should move to the day activity view
- Filter tasks based on projects
- Sort tasks based on task, task duration and projects
Entities
1. Projects (Table Name: projects)
- projectId - Int (Auto Increment)
- projectName - String
- projectIconUrl - String
- totalTime - Int
- startDate - Date
- endDate - Date
2. PunchInOutTime (Table Name: punchInOutTime)
- punchId - Int (Auto Increment)
- date - Date
- punchInTime - Int
- punchOut Time - Int
- totalTime - Int
- isUserInBreak - Bool
- workStartTime - Int
3. Tasks (Table Name: tasks)
- taskId - Int (Auto Increment)
- projectId - Int (Refers to project -> projectId)
- taskName - String
- taskDescription - String
- startTime - Int
- endTime - Int
- startDate - Date
- endDate - Date
- totalTime - Int
- isWorkInProgress - Bool
- workStartTime - Int
4. BreakInformation (Table Name: breakInformation)
- breakId - Int (Auto Increment)
- taskId - Int (Refers to tasks -> taskId)
- date - Date
- startTime - Int
- endTime - Int
All timings are stored in seconds for example, 12:00:00 AM as 0, 12:01:00 AM as 60, 08:00:00 AM as 28800, etc.
Integer storage makes easy to calculate work and task timing with respect to the date.
Project table updated from admin panel and remaining 3 tables updated in client application.
Entity data handled by 4 different classes:
- ProjectDBController for Projects
- UserTimesDBController for PunchInOutTime
- TasksDBController for Task
- TaskDBController for BreakInformation
These 4 classes provides functionality to store, retrieve, update and delete the database.
![]()
![]()
![]()