added validateTicket Method, UserModal updates memberslist

This commit is contained in:
Ruidy Nemausat 2020-02-27 19:17:31 +01:00
parent e4fe81a45c
commit 97b45fcd2d
6 changed files with 28 additions and 16 deletions

View file

@ -50,3 +50,4 @@
- [ ] think about public/private DTO's constructor, getters and setters - [ ] think about public/private DTO's constructor, getters and setters
- [x] write dtos without circular dependencies - [x] write dtos without circular dependencies
- [ ] use dtoRequest for PutProjects - [ ] use dtoRequest for PutProjects
- [ ] render avatarlist after UserModal Update

View file

@ -6,13 +6,13 @@ interface IProps {
title: string; title: string;
remainingDays: string; remainingDays: string;
validateTicket: (event: MouseEvent) => void; validateTicket: (event: MouseEvent) => void;
archiveTicket: (event: MouseEvent) => void; // archiveTicket: (event: MouseEvent) => void;
} }
export const HorizontalCard: FC<IProps> = ({ export const HorizontalCard: FC<IProps> = ({
title, title,
remainingDays, remainingDays,
archiveTicket, // archiveTicket,
validateTicket validateTicket
}) => { }) => {
return ( return (
@ -34,11 +34,11 @@ export const HorizontalCard: FC<IProps> = ({
check check
</i> </i>
</Link> </Link>
<Link to="#"> {/* <Link to="#">
<i className="material-icons" onClick={archiveTicket}> <i className="material-icons" onClick={archiveTicket}>
archive archive
</i> </i>
</Link> </Link> */}
</div> </div>
</div> </div>
</div> </div>

View file

@ -7,6 +7,7 @@ import { AppFile } from "../types/AppFile";
import { Route, useRouteMatch, Redirect } from "react-router-dom"; import { Route, useRouteMatch, Redirect } from "react-router-dom";
import { ActivityList } from "./ActivityList"; import { ActivityList } from "./ActivityList";
import { Activity } from "../types/Activity"; import { Activity } from "../types/Activity";
import { NewTicketModal } from "./NewTicketModal";
interface IProps { interface IProps {
tickets: Ticket[]; tickets: Ticket[];
@ -26,6 +27,7 @@ export const TabRouter: FC<IProps> = ({
return ( return (
<> <>
<div className="row"> <div className="row">
<NewTicketModal handleClose={() => {}} show={true} />
<TabRouterHeader tabNames={tabNames} /> <TabRouterHeader tabNames={tabNames} />
<Redirect from={url} to={`${url}/tickets`} /> <Redirect from={url} to={`${url}/tickets`} />

View file

@ -3,6 +3,9 @@ import { Ticket } from "../types/Ticket";
import { FloatingButton } from "./FloatingButton"; import { FloatingButton } from "./FloatingButton";
import { HorizontalCard } from "./HorizontalCard"; import { HorizontalCard } from "./HorizontalCard";
import { FilterBar } from "./FilterBar"; import { FilterBar } from "./FilterBar";
import { put } from "../utils/http";
import { HttpResponse } from "../types/HttpResponse";
import { Constants } from "../utils/Constants";
type TicketListProps = { type TicketListProps = {
tickets: Ticket[]; tickets: Ticket[];
@ -13,8 +16,8 @@ export const TicketList: FC<TicketListProps> = ({ tickets }) => {
const clearFilterText: (e: MouseEvent) => void = (e: MouseEvent) => { const clearFilterText: (e: MouseEvent) => void = (e: MouseEvent) => {
setFilterText(""); setFilterText("");
}; };
const archiveTicket = () => {}; // const archiveTicket = () => {};
const validateTicket = () => {};
const onClick: (e: MouseEvent) => void = (e: MouseEvent) => { const onClick: (e: MouseEvent) => void = (e: MouseEvent) => {
e.preventDefault(); e.preventDefault();
}; };
@ -42,16 +45,24 @@ export const TicketList: FC<TicketListProps> = ({ tickets }) => {
<div className="col s12 grey"> <div className="col s12 grey">
<ul> <ul>
{tickets {tickets
.filter(t => .filter(
t.title.toLowerCase().includes(filterText.toLowerCase()) t =>
t.status !== "Done" &&
t.title.toLowerCase().includes(filterText.toLowerCase())
) )
.map((t: Ticket) => ( .map((t: Ticket) => (
<li key={t.id}> <li key={t.id}>
<HorizontalCard <HorizontalCard
title={t.title} title={t.title}
remainingDays={t.plannedEnding} remainingDays={t.plannedEnding}
validateTicket={validateTicket} validateTicket={async (e: MouseEvent) => {
archiveTicket={archiveTicket} e.preventDefault();
await put<HttpResponse<Ticket>>(
`${Constants.ticketsURI}/${t.id}/closed`,
{}
);
}}
// archiveTicket={archiveTicket}
/> />
</li> </li>
))} ))}

View file

@ -37,15 +37,14 @@ export const UsersModal: FC<IProps> = ({
e: FormEvent e: FormEvent
) => { ) => {
e.preventDefault(); e.preventDefault();
await patch<User[]>(
const response: HttpResponse<User[]> = await patch<User[]>(
`${Constants.projectsURI}/${id}/members`, `${Constants.projectsURI}/${id}/members`,
members members.map(m => m.id)
); );
console.log(response); handleClose();
}; };
console.log(allUsers);
useEffect(() => {});
return ( return (
<Modal show={show} handleClose={handleClose}> <Modal show={show} handleClose={handleClose}>
<div className="row valign-wrapper blue"> <div className="row valign-wrapper blue">

View file

@ -9,7 +9,6 @@ interface IProps {
} }
export const UsersModalEntry: FC<IProps> = ({ user, setMembers, members }) => { export const UsersModalEntry: FC<IProps> = ({ user, setMembers, members }) => {
console.log(members);
const match: (id: string) => boolean = (id: string) => { const match: (id: string) => boolean = (id: string) => {
return Boolean(members.find(m => m.id === id)); return Boolean(members.find(m => m.id === id));
}; };