simplified newticketform

This commit is contained in:
Ruidy Nemausat 2020-03-03 20:58:19 +01:00
parent 0b4b605280
commit ec53a6edb6
6 changed files with 33 additions and 68 deletions

View file

@ -1,33 +1,21 @@
import React, { FC, useState, ChangeEvent, useEffect, FormEvent } from "react"; import React, { FC, useState, useEffect, FormEvent } from "react";
import { useParams } from "react-router-dom";
import { Modal } from "./Modal"; import { Modal } from "./Modal";
import { NewTicketTabRouter } from "./NewTicketTabRouter";
import { User } from "../types/User";
import { Ticket } from "../types/Ticket"; import { Ticket } from "../types/Ticket";
import { patch, post } from "../utils/http"; import { post } from "../utils/http";
import { Constants } from "../utils/Constants"; import { Constants } from "../utils/Constants";
import { Project } from "../types/Project";
import { HttpResponse } from "../types/HttpResponse"; import { HttpResponse } from "../types/HttpResponse";
import { NewTicketForm } from "./NewTicketForm";
interface IProps { interface IProps {
show: boolean; show: boolean;
handleClose(): void; handleClose(): void;
allUsers: User[];
} }
export const NewTicketModal: FC<IProps> = ({ show, handleClose, allUsers }) => { export const NewTicketModal: FC<IProps> = ({ show, handleClose }) => {
const [filterText, setFilterText] = useState<string>("");
const { id } = useParams();
const [title, setTitle] = useState(""); const [title, setTitle] = useState("");
const [description, setDescription] = useState(""); const [description, setDescription] = useState("");
const [endingDate, setEndingDate] = useState(""); const [endingDate, setEndingDate] = useState("");
const handleChange: (e: ChangeEvent<HTMLInputElement>) => void = (
e: ChangeEvent<HTMLInputElement>
) => {
setFilterText(e.target.value);
};
const handleSubmit: (event: FormEvent<HTMLFormElement>) => void = async ( const handleSubmit: (event: FormEvent<HTMLFormElement>) => void = async (
e: FormEvent e: FormEvent
) => { ) => {
@ -39,12 +27,12 @@ export const NewTicketModal: FC<IProps> = ({ show, handleClose, allUsers }) => {
creatorId: "20bf4b2a-7209-4826-96cd-29c2bc937a94", creatorId: "20bf4b2a-7209-4826-96cd-29c2bc937a94",
projectId: 1 projectId: 1
}; };
console.log(newTicket); // console.log(newTicket);
const response: HttpResponse<Ticket> = await post<Ticket>( const response: HttpResponse<Ticket> = await post<Ticket>(
`${Constants.ticketsURI}`, `${Constants.ticketsURI}`,
newTicket newTicket
); );
console.log(response.parsedBody); // console.log(response.parsedBody);
handleClose(); handleClose();
}; };
@ -68,9 +56,7 @@ export const NewTicketModal: FC<IProps> = ({ show, handleClose, allUsers }) => {
<form onSubmit={handleSubmit}> <form onSubmit={handleSubmit}>
<div className="row"> <div className="row">
<NewTicketTabRouter <NewTicketForm
tabNames={["Details", "Members"]}
users={allUsers}
title={title} title={title}
setTitle={setTitle} setTitle={setTitle}
description={description} description={description}

View file

@ -1,14 +1,10 @@
import React, { FC } from "react"; import React, { FC } from "react";
import { Route, useRouteMatch, Redirect } from "react-router-dom"; import { useRouteMatch } from "react-router-dom";
import { TabRouterHeader } from "./TabRouterHeader"; import { TabRouterHeader } from "./TabRouterHeader";
import { NewTicketForm } from "./NewTicketForm"; import { NewTicketForm } from "./NewTicketForm";
import { MemberList } from "./MemberList";
import { User } from "../types/User";
import { Ticket } from "../types/Ticket";
interface IProps { interface IProps {
tabNames: string[]; tabNames: string[];
users: User[];
description: string; description: string;
setDescription: React.Dispatch<React.SetStateAction<string>>; setDescription: React.Dispatch<React.SetStateAction<string>>;
title: string; title: string;
@ -19,7 +15,6 @@ interface IProps {
export const NewTicketTabRouter: FC<IProps> = ({ export const NewTicketTabRouter: FC<IProps> = ({
tabNames, tabNames,
users,
description, description,
setDescription, setDescription,
title, title,
@ -33,22 +28,14 @@ export const NewTicketTabRouter: FC<IProps> = ({
<div className="row"> <div className="row">
<TabRouterHeader tabNames={tabNames} /> <TabRouterHeader tabNames={tabNames} />
<Redirect from={url} to={`${url}/details`} /> <NewTicketForm
title={title}
<Route path={`${url}/details`}> setTitle={setTitle}
<NewTicketForm description={description}
title={title} setDescription={setDescription}
setTitle={setTitle} endingDate={endingDate}
description={description} setEndingDate={setEndingDate}
setDescription={setDescription} />
endingDate={endingDate}
setEndingDate={setEndingDate}
/>
</Route>
<Route path={`${url}/members`}>
<MemberList users={users} />
</Route>
</div> </div>
</> </>
); );

View file

@ -3,11 +3,10 @@ import { Route, useRouteMatch, Redirect } from "react-router-dom";
import { TabRouterHeader } from "./TabRouterHeader"; import { TabRouterHeader } from "./TabRouterHeader";
import { TicketList } from "./TicketList"; import { TicketList } from "./TicketList";
import { FileList } from "./AppFileList"; import { FileList } from "./AppFileList";
import { ActivityList } from "./ActivityList"; // import { ActivityList } from "./ActivityList";
import { Ticket } from "../types/Ticket"; import { Ticket } from "../types/Ticket";
import { AppFile } from "../types/AppFile"; import { AppFile } from "../types/AppFile";
import { Activity } from "../types/Activity"; import { Activity } from "../types/Activity";
import { User } from "../types/User";
interface IProps { interface IProps {
tickets: Ticket[]; tickets: Ticket[];
@ -15,15 +14,13 @@ interface IProps {
tabNames: string[]; tabNames: string[];
files: AppFile[]; files: AppFile[];
activities: Activity[]; activities: Activity[];
allUsers: User[];
} }
export const TabRouter: FC<IProps> = ({ export const TabRouter: FC<IProps> = ({
tickets, tickets,
tabNames, tabNames,
files, files,
activities, activities
allUsers
}) => { }) => {
const { url } = useRouteMatch(); const { url } = useRouteMatch();
@ -35,16 +32,16 @@ export const TabRouter: FC<IProps> = ({
<Redirect from={url} to={`${url}/tickets`} /> <Redirect from={url} to={`${url}/tickets`} />
<Route path={`${url}/tickets`}> <Route path={`${url}/tickets`}>
<TicketList tickets={tickets} users={allUsers} /> <TicketList tickets={tickets} />
</Route> </Route>
<Route path={`${url}/files`}> <Route path={`${url}/files`}>
<FileList files={files} /> <FileList files={files} />
</Route> </Route>
<Route path={`${url}/activity`}> {/* <Route path={`${url}/activity`}>
<ActivityList activities={activities} /> <ActivityList activities={activities} />
</Route> </Route> */}
</div> </div>
</> </>
); );

View file

@ -3,7 +3,6 @@ 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 { User } from "../types/User";
import { HttpResponse } from "../types/HttpResponse"; import { HttpResponse } from "../types/HttpResponse";
import { put } from "../utils/http"; import { put } from "../utils/http";
import { Constants } from "../utils/Constants"; import { Constants } from "../utils/Constants";
@ -11,15 +10,13 @@ import { NewTicketModal } from "./NewTicketModal";
type TicketListProps = { type TicketListProps = {
tickets: Ticket[]; tickets: Ticket[];
users: User[];
}; };
export const TicketList: FC<TicketListProps> = ({ tickets, users }) => { export const TicketList: FC<TicketListProps> = ({ tickets }) => {
const [filterText, setFilterText] = useState<string>(""); const [filterText, setFilterText] = useState<string>("");
const clearFilterText: (e: MouseEvent) => void = (e: MouseEvent) => { const clearFilterText: (e: MouseEvent) => void = (e: MouseEvent) => {
setFilterText(""); setFilterText("");
}; };
// const archiveTicket = () => {};
const onClick: (e: MouseEvent) => void = (e: MouseEvent) => { const onClick: (e: MouseEvent) => void = (e: MouseEvent) => {
e.preventDefault(); e.preventDefault();
@ -45,7 +42,6 @@ export const TicketList: FC<TicketListProps> = ({ tickets, users }) => {
setShowNew(false); setShowNew(false);
}} }}
show={showNew} show={showNew}
allUsers={users}
/> />
<h3>Tickets</h3> <h3>Tickets</h3>
<FloatingButton <FloatingButton
@ -59,7 +55,7 @@ export const TicketList: FC<TicketListProps> = ({ tickets, users }) => {
clearFilterText={clearFilterText} clearFilterText={clearFilterText}
/> />
</div> </div>
<div className="col s12 grey"> <div className="col s12 grey lighten-1">
<ul> <ul>
{filteredTickets.length === 0 ? ( {filteredTickets.length === 0 ? (
<HorizontalCard /> <HorizontalCard />
@ -76,7 +72,6 @@ export const TicketList: FC<TicketListProps> = ({ tickets, users }) => {
{} {}
); );
}} }}
// archiveTicket={archiveTicket}
/> />
)) ))
)} )}

View file

@ -12,7 +12,7 @@ export const UsersModalEntry: FC<IProps> = ({ user, setMembers, members }) => {
return Boolean(members.find(m => m.id === id)); return Boolean(members.find(m => m.id === id));
}; };
return ( return (
<div className="row"> <div className="valign-wrapper">
<label htmlFor={user.id}> <label htmlFor={user.id}>
<input <input
id={user.id} id={user.id}
@ -27,15 +27,16 @@ export const UsersModalEntry: FC<IProps> = ({ user, setMembers, members }) => {
/> />
<span> <span>
{user.fullName} {user.fullName}
<img {" "}
className="circle"
src={user.picture}
width="32vh"
height="32vh"
alt={user.fullName}
/>
</span> </span>
</label> </label>
<img
className="circle"
src={user.picture}
width="32vh"
height="32vh"
alt={user.fullName}
/>
</div> </div>
); );
}; };

View file

@ -26,7 +26,7 @@ export const ProjectPage: FC<IProps> = ({ viewModel }) => {
activities activities
} = viewModel; } = viewModel;
const tabNames: string[] = ["Tickets", "Files", "Activity"]; const tabNames: string[] = ["Tickets", "Files"]; //, "Activity"];
const [showModal, setShowModal] = useState<boolean>(false); const [showModal, setShowModal] = useState<boolean>(false);
return ( return (
@ -59,7 +59,6 @@ export const ProjectPage: FC<IProps> = ({ viewModel }) => {
tickets={tickets} tickets={tickets}
files={files} files={files}
activities={activities} activities={activities}
allUsers={allUsers}
/> />
</div> </div>
</div> </div>