Projecteer Update : Dashboard design, User Joins Team and Other Additions

in #utopian-io5 years ago (edited)

Since the last update I have been working on new features in projecteer particularly in the dashboard main view and team management for the projects.

On the dashboard UI, I implemented a fixed sidenav and navbar. I also added counters that will help determine the total number of projects, tasks and teams added by all registered users in the app.

The counters were added in order to help users keep tabs on newly added projects by other users in case they might be interested in collaborating with other users on their projects by joining the project team and taking on tasks.

Alongside these counters on the dashboard I added one separate button after each counter so that users can actually access the list of all projects/teams and tasks.

In the interface for viewing all added projects from all users I implemented features that will allow users view the project detail for each project as well as tasks listed under the project and details of the team handling the project.

In the interface for viewing all added tasks from all users I implemented features that will allow users view the task detail for each task. I implemented the same feature for the interface for viewing all added teams from all users.

I also added a feature that allows users to join project teams if they haven't in the interface for viewing team details.

Repository

https://github.com/olatundeee/projecteer

About Projecteer

To know more about what projecteer is about you can check out the introduction post for more information

https://steemit.com/utopian-io/@gotgame/project-introduction-projecteer-an-awesome-project-management-tool-for-remote-teams-and-creatives

New Features

Dashboard

Project/Task/Team Counter & View User Projects/Task/Teams

On the user dashboard, I have three counters for projects,task and teams respectively.

I made a call to project/tasks/teams service respectively from the dashboard component to return all the documents in each concerned database and record the length of each returned array.

projecteer-update-2-1.PNG

projecteer-update-2-2.PNG

projecteer-update-2-3.PNG

From the services I made the required calls to the api for the needed data.

projecteer-update-2-4.PNG

projecteer-update-2-5.PNG

projecteer-update-2-6.PNG

In the backend, I fetch all the requested data from the set routes and return a response object containing the requested data.

The data returned by the api is displayed on the dashboard in wells.

projecteer-update-2-7.PNG

Also on the dashboard I added tabs that allow the user to view basic details about their projects/task and teams.

I implemented them by sending requests to the backend and displaying the response as a dashboard feed containing a list of projects/tasks and teams added by the currently logged in user as opposed to all users which was implemented earlier.

projecteer-update-2-8.PNG

In the respective services I sent http requests to the backend and retrieved all the data needed relating to the specific user.

projecteer-update-2-9.PNG

projecteer-update-2-10.PNG

projecteer-update-2-11.PNG

View Every Project

On the dashboard if a user clicks on the first button to the left view all projects the view will navigate to a interface where all projects added by every user will be displayed.

Webp.net-gifmaker.gif

In the component I sent data to the service in order to receive a response containing the projects array which will be displayed

projecteer-update-2-13.PNG

In projects service I made a request to the backend with http request which returns all the data needed.

View Every Task

Beside the button used to view all projects I added another button for viewing a list of all tasks added by all registered users.

When a user clicks on view all tasks button the view navigates to the interface for viewing all added tasks

Webp.net-gifmaker (1).gif

In the dashboard, I added a router link to the button that points at view-every-task component.

projecteer-update-2-15.PNG

Upon initialization of view-every-task component a call is made to the tasks service which will in turn send a http request will fetch all added tasks from the api.

projecteer-update-2-16.PNG

View Every Team

From the dashboard if a user clicks the last button to the right just beside view all tasks button the view will navigate to a interface where the user can view a list of teams added by all registered users.

Webp.net-gifmaker (2).gif

In view-every-team component, upon initialization, a call is made to the teams service which will in turn send a http request will fetch all added teams from the api.

projecteer-update-2-18.PNG

View Every Project Interface

On the interface for viewing every project added by all users I implemented the following features per project.

  • Viewing project details
  • Viewing project tasks
  • Viewing team details for a project
Viewing project details

By clicking on the details button the user will navigate to a page where they can view view detailed information about the chosen project.

Webp.net-gifmaker (3).gif

In view-every-project component I implemented this feature by first storing the chosen project information in local storage and redirecting to the project details component and displaying the data there.

projecteer-update-2-20.PNG

Viewing project tasks

On view every project interface if a user clicks on the second button that says view tasks the view will navigate to a page where the user can view a list of tasks added under the chosen project.

Webp.net-gifmaker (4).gif

In view-every-project component I implemented this feature by storing the project name and project id in local storage and navigating to the tasks list page.

projecteer-update-2-22.PNG

Viewing team details for a project

The last button to the right in view-every-project will navigate the user to a page where they can view the details of the team working on that particular project.

Webp.net-gifmaker (6).gif

I implemented this feature by storing the project name and project id in local storage and navigating to the team details page.

projecteer-update-2-24.PNG

View Every Task Interface

In view-every-task I added a button that will allow users navigate to the task detail page where they can view all available details on any chosen task.

Clicking on details will redirect the router to task-details component.

Webp.net-gifmaker (7).gif

In view-every-task component I implemented this feature by storing all the task data in local storage and navigating to the task details page.

projecteer-update-2-25.PNG

View Every Team Interface

In view-every-team I added a button that will allow users navigate to the team detail page where they can view all available details on any chosen team.

Clicking on team details button will navigate the view to teams component where the user can view the details of the chosen team.

Webp.net-gifmaker (8).gif

In view-every-team component I implemented this feature by storing all the team data in local storage and navigating to the team detail page.

projecteer-update-2-26.PNG

projecteer-update-2-27.PNG

User Joins Team and Team Membership Confirmation

On initialization of the team detail page, some checks are run by the application to determine whether the currently logged in user is a team member of the team being viewed.

In teams component I ran the following checks on page load

  • If the currently logged in user is the same person as the team lead the the user is automatically a team member.

projecteer-update-2-28.PNG

  • The next check makes a call to team service which in turn makes a http request to the api to check if the currently logged in user is stored as a team member on the database.

projecteer-update-2-29.PNG

If it is determined that the user is a team member a disabled button joined will be displayed showing that user has already joined the team.

projecteer-update-2-23.PNG

If it is determined otherwise that user is not a team member a button join team will be displayed instead while joined will not be displayed.

projecteer-update-2-30.PNG

Clicking join team will change the membership status for the currently logged in user in that team which will prompt joined to be displayed and join teamtaken out of display.

Webp.net-gifmaker (9).gif

Commits

How to contribute?

You can contribute to the project by forking and cloning the github repo(link shared at the top), running npm install in the project root directory(backend) and client directory to install all dependencies.

To start the backend server navigate to the root directory and run the following command

SET DEBUG=projecteer:* & npm start

To start the frontend server navigate to the client directory in the project folder and run the following command

npm start

Before working on the project kindly contact me by sending an email to [email protected].

GitHub Account
https://github.com/olatundeee


Sponsored ( Powered by dclick )

dclick-imagead

Sort:  

Thank you for your contribution. A lot of work has been done in this contribution, and the post is of very high quality. Few thoughts about the code :

  1. If possible do not try to use !important in CSS, it will make a problem later.
  2. In the client/src/app/dash-view/dash-view.component.ts component, I can see you have subscribe to a lot of observables in ngOnInit, it would be better to unsubscribe too in ngOnDestroy otherwise there will be a memory leak.
  3. I don't think so you required isNotTeamLead variable when you have isTeamLead, you can set isTeamLead to true or false based on if the current user is team lead or not.
  4. I can see a lot of console.log for logging, try to use better loggin mechanism.

If you need any clarification about the given score, please ask.


Your contribution has been evaluated according to Utopian policies and guidelines, as well as a predefined set of questions pertaining to the category.

To view those questions and the relevant answers related to your post, click here.


Need help? Chat with us on Discord.

[utopian-moderator]

Thank you for your review, @codingdefined! Keep up the good work!

Hey, @gotgame!

Thanks for contributing on Utopian.
We’re already looking forward to your next contribution!

Get higher incentives and support Utopian.io!
Simply set @utopian.pay as a 5% (or higher) payout beneficiary on your contribution post (via SteemPlus or Steeditor).

Want to chat? Join us on Discord https://discord.gg/h52nFrV.

Vote for Utopian Witness!

Hi, @gotgame!

You just got a 0.19% upvote from SteemPlus!
To get higher upvotes, earn more SteemPlus Points (SPP). On your Steemit wallet, check your SPP balance and click on "How to earn SPP?" to find out all the ways to earn.
If you're not using SteemPlus yet, please check our last posts in here to see the many ways in which SteemPlus can improve your Steem experience on Steemit and Busy.

Hi @gotgame!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your post is eligible for our upvote, thanks to our collaboration with @utopian-io!
Feel free to join our @steem-ua Discord server

Hello, as a member of @steemdunk you have received a free courtesy boost! Steemdunk is an automated curation platform that is easy to use and built for the community. Join us at https://steemdunk.xyz

Upvote this comment to support the bot and increase your future rewards!

Coin Marketplace

STEEM 0.17
TRX 0.13
JST 0.027
BTC 60482.94
ETH 2613.04
USDT 1.00
SBD 2.63