Skip to content
Snippets Groups Projects
Commit dcba2978 authored by Bernard Roland (Student Com20)'s avatar Bernard Roland (Student Com20)
Browse files

Replaced simple minute display with timely formatted values

parent f199a21d
No related branches found
No related tags found
No related merge requests found
...@@ -2,11 +2,12 @@ ...@@ -2,11 +2,12 @@
import { useCallback, useEffect, useState } from "react"; import { useCallback, useEffect, useState } from "react";
import { TaskAssignment } from "adapters/task"; import { TaskAssignment } from "adapters/task";
import { durationFor, formatDuration } from "timely";
import Popup from 'components/ui/Popup'; import Popup from 'components/ui/Popup';
import Button from 'components/ui/Button'; import Button from 'components/ui/Button';
import { PossibleMember } from "components/forms/TaskForm";
import TimeInput from "components/ui/TimeInput"; import TimeInput from "components/ui/TimeInput";
import { PossibleMember } from "components/forms/TaskForm";
import './assignees-form.scss'; import './assignees-form.scss';
...@@ -56,7 +57,9 @@ export default function AssigneesForm({ assignees, members, onNew, onDelete }: P ...@@ -56,7 +57,9 @@ export default function AssigneesForm({ assignees, members, onNew, onDelete }: P
<div className="person"> <div className="person">
{members.find(member => member.id === assignee.user)?.label} {members.find(member => member.id === assignee.user)?.label}
</div> </div>
<div className="time">{assignee.time} min</div> <div className="time">{
formatDuration(durationFor(assignee.time, 'minute'), 'second', 2, true)
}</div>
<div className="delete" onClick={() => removeAssignee(assignee.user)}> <div className="delete" onClick={() => removeAssignee(assignee.user)}>
<span className="material-icons"> <span className="material-icons">
clear clear
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
import { useCallback, useEffect, useState } from 'react'; import { useCallback, useEffect, useState } from 'react';
import { TaskRequirement } from 'adapters/task'; import { TaskRequirement } from 'adapters/task';
import { durationFor, formatDuration } from 'timely';
import { PossibleRole } from 'components/forms/TaskForm'; import { PossibleRole } from 'components/forms/TaskForm';
import Popup from 'components/ui/Popup'; import Popup from 'components/ui/Popup';
...@@ -52,7 +53,9 @@ export default function RequirementsForm({ roles, requirements, onNew, onDelete ...@@ -52,7 +53,9 @@ export default function RequirementsForm({ roles, requirements, onNew, onDelete
requirements.map((requirement) => ( requirements.map((requirement) => (
<div className="requirement" key={requirement.role}> <div className="requirement" key={requirement.role}>
<div>{roles.find(role => role.id === requirement.role)?.label}</div> <div>{roles.find(role => role.id === requirement.role)?.label}</div>
<div>{requirement.time} min</div> <div>{
formatDuration(durationFor(requirement.time, 'minute'), 'second', 2, true)
}</div>
<div className="delete" onClick={() => removeRequirement(requirement.role)}> <div className="delete" onClick={() => removeRequirement(requirement.role)}>
<span className="material-icons"> <span className="material-icons">
clear clear
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
.formatted { .formatted {
flex: 0 0 auto; flex: 0 0 auto;
content: 'min';
min-width: 75px; min-width: 75px;
white-space: nowrap; white-space: nowrap;
text-align: center; text-align: center;
......
import { AssignedUser } from 'adapters/user'; import { AssignedUser } from 'adapters/user';
import { durationFor, formatDuration } from 'timely';
import UserList from 'components/layout/UserList'; import UserList from 'components/layout/UserList';
import LoadingScreen from 'components/ui/LoadingScreen'; import LoadingScreen from 'components/ui/LoadingScreen';
...@@ -16,7 +17,9 @@ export default function TaskAssignees({ assignees }: Props) { ...@@ -16,7 +17,9 @@ export default function TaskAssignees({ assignees }: Props) {
? ( ? (
<UserList <UserList
users={assignees} users={assignees}
info={user => user.time + " min"} info={user =>
formatDuration(durationFor(user.time, 'minute'), 'second', 2, true)
}
/> />
) )
: <LoadingScreen /> : <LoadingScreen />
......
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import { durationFor, formatDuration } from 'timely';
import { getTeams, Team } from 'adapters/team'; import { getTeams, Team } from 'adapters/team';
import { getPossibleTasks, Task } from 'adapters/task'; import { getPossibleTasks, Task } from 'adapters/task';
import { getCurrentUser, getUserTasks, User } from 'adapters/user'; import { getCurrentUser, getUserTasks, User } from 'adapters/user';
...@@ -46,20 +47,18 @@ export default function Tasks() { ...@@ -46,20 +47,18 @@ export default function Tasks() {
tasks.length > 0 tasks.length > 0
? ( ? (
<div className="tasks-list"> <div className="tasks-list">
{ {tasks.map((task) => {
tasks const time = task.assigned.find(assignee => assignee.user === user.id)?.time ?? 0;
.map((task) => ( return (
<TaskComponent <TaskComponent
key={task.id} key={task.id}
task={task} task={task}
subtitle={ subtitle={
task.assigned formatDuration(durationFor(time, 'minute'), 'second', 2, true)
.find(assignee => assignee.user === user.id)?.time }
+ ' min' />
} )
/> })}
))
}
</div> </div>
) )
: (<div className="task-error">No open tasks found</div>) : (<div className="task-error">No open tasks found</div>)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment