Skip to content

User Dashboard

Sachin Kumar K edited this page Nov 15, 2019 · 16 revisions

1. Introduction

1.1 Features

  • Stores user punch in and out time
  • Total work time
  • Allocate new task and track the timings
  • Analyzed view of task and project
  • User login authentication

1.2 Product Scope

Application can be used in various companies where user works under projects.

2. Descriptions

2.1 Login Authentication

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).

2.2 Activity Track

Two conditions in initial load:

1. Opening first time on current date:

  • Check previous working day's punch_out_time. If it is null ask user to update it.
  • 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

2.3 Add New Task

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

2.4 User Activities

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

2.5 Filter and Sort

  1. Filter tasks based on projects
  2. Sort tasks based on task, task duration and projects

3. Design and Implementation

3.1 Core Data Design

Entities

1. Projects (Table Name: Projects)

  • project_id - Int
  • project_name - String
  • project_icon_url - URL
  • total_time - Int
  • start_date - Date
  • project_color : STRING (hexa decimal number)
  • percentage_finished : Int

2. Modules (Table Name: Modules)

  • module_id - Int
  • project_id - Int (Refers to Projects -> projectId)
  • name - String

3. Punch In/Out Time (Table Name: Punch_in_out_time)

  • punch_in_time - Date
  • punch_out_time - Date

4. Tasks (Table Name: Tasks)

  • local_task_id - Int (Auto increment)
  • server_task_id - Int
  • project_id - Int (Refers to Projects -> projectId)
  • task_name - String
  • task_description - String
  • start_time - Date
  • end_time - Date
  • is_work_in_progress - Bool

5. Tasks Time (Table Name: Tasks_time)

  • time_id - Int (Auto Increment)
  • taskId - Int (Refers to Tasks -> task_id)
  • date - Date
  • start_time - Int (seconds)
  • end_time - Int (seconds)

Tasks 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:

  1. ProjectDBController for Projects
  2. UserTimesDBController for PunchInOutTime
  3. TasksDBController for Task
  4. TaskDBController for BreakInformation

These 4 classes provides functionality to store, retrieve, update and delete the database.

3.2 Dataflow Diagram

3.3 Sequence Diagram

User Interface