From 4b43486c168e13dac5b4f9d7e23aaf1c8930c5bc Mon Sep 17 00:00:00 2001 From: Ruidy Nemausat Date: Fri, 21 Feb 2020 11:32:10 +0100 Subject: [PATCH] changed background color & enhanced filtering --- client/src/components/ActivityCollection.tsx | 22 ++++++++++++++------ client/src/components/ActivityList.tsx | 14 +++++++++---- client/src/components/AppFileList.tsx | 14 +++++++++---- client/src/components/FileCollection.tsx | 15 +++++++++---- client/src/components/FilterBar.tsx | 16 +++++++------- client/src/components/TicketList.tsx | 17 +++++++++++---- client/src/controllers/ProjectController.tsx | 2 +- client/src/utils/router.tsx | 2 +- 8 files changed, 71 insertions(+), 31 deletions(-) diff --git a/client/src/components/ActivityCollection.tsx b/client/src/components/ActivityCollection.tsx index 1a3e506..dc599dc 100644 --- a/client/src/components/ActivityCollection.tsx +++ b/client/src/components/ActivityCollection.tsx @@ -3,17 +3,27 @@ import { Activity } from "../types/Activity"; type IProps = { activities: Activity[]; + filterText: string; }; -export const ActivityCollection: FC = ({ activities }) => { +export const ActivityCollection: FC = ({ activities, filterText }) => { return ( <>
    - {activities.map((activity: Activity) => ( -
  • - -
  • - ))} + {activities + .filter( + a => + a.description.toLowerCase().includes(filterText.toLowerCase()) || + a.user.firstName + .toLowerCase() + .includes(filterText.toLowerCase()) || + a.ticket.title.toLowerCase().includes(filterText.toLowerCase()) + ) + .map((activity: Activity) => ( +
  • + +
  • + ))}
); diff --git a/client/src/components/ActivityList.tsx b/client/src/components/ActivityList.tsx index 969b7ff..5f597c0 100644 --- a/client/src/components/ActivityList.tsx +++ b/client/src/components/ActivityList.tsx @@ -1,4 +1,4 @@ -import React, { FC, useState, ChangeEvent } from "react"; +import React, { FC, useState, ChangeEvent, MouseEvent } from "react"; import { ActivityCollection } from "./ActivityCollection"; import { Activity } from "../types/Activity"; import { FilterBar } from "./FilterBar"; @@ -9,7 +9,9 @@ type IProps = { export const ActivityList: FC = ({ activities }) => { const [filterText, setFilterText] = useState(""); - + const clearFilterText: (e: MouseEvent) => void = (e: MouseEvent) => { + setFilterText(""); + }; const handleChange: (e: ChangeEvent) => void = ( e: ChangeEvent ) => { @@ -20,9 +22,13 @@ export const ActivityList: FC = ({ activities }) => { <>

Activity

- +
- + ); }; diff --git a/client/src/components/AppFileList.tsx b/client/src/components/AppFileList.tsx index 9f85093..fd4cd63 100644 --- a/client/src/components/AppFileList.tsx +++ b/client/src/components/AppFileList.tsx @@ -1,4 +1,4 @@ -import React, { FC, useState, ChangeEvent } from "react"; +import React, { FC, useState, ChangeEvent, MouseEvent } from "react"; import { AppFile } from "../types/AppFile"; import { FileCollection } from "./FileCollection"; import { InputFile } from "./InputFile"; @@ -10,7 +10,9 @@ type IProps = { export const FileList: FC = ({ files }) => { const [filterText, setFilterText] = useState(""); - + const clearFilterText: (e: MouseEvent) => void = (e: MouseEvent) => { + setFilterText(""); + }; const handleChange: (e: ChangeEvent) => void = ( e: ChangeEvent ) => { @@ -20,10 +22,14 @@ export const FileList: FC = ({ files }) => { <>

Files

- +
- + ); }; diff --git a/client/src/components/FileCollection.tsx b/client/src/components/FileCollection.tsx index 582fe92..114ae98 100644 --- a/client/src/components/FileCollection.tsx +++ b/client/src/components/FileCollection.tsx @@ -3,15 +3,22 @@ import { AppFile } from "../types/AppFile"; type IProps = { files: AppFile[]; + filterText: string; }; -export const FileCollection: FC = ({ files }) => { +export const FileCollection: FC = ({ files, filterText }) => { return ( <>
    - {files.map((file: AppFile) => ( - - ))} + {files + .filter( + f => + f.name.toLowerCase().includes(filterText.toLowerCase()) || + f.format.toLowerCase().includes(filterText.toLowerCase()) + ) + .map((file: AppFile) => ( + + ))}
); diff --git a/client/src/components/FilterBar.tsx b/client/src/components/FilterBar.tsx index 62754c7..a99b24e 100644 --- a/client/src/components/FilterBar.tsx +++ b/client/src/components/FilterBar.tsx @@ -1,12 +1,17 @@ -import React, { FC } from "react"; +import React, { FC, ChangeEvent, MouseEvent } from "react"; import { useRouteMatch } from "react-router-dom"; type IProps = { filterText: string; - handleChange: (e: React.ChangeEvent) => void; + handleChange: (e: ChangeEvent) => void; + clearFilterText: (e: MouseEvent) => void; }; -export const FilterBar: FC = ({ filterText, handleChange }) => { +export const FilterBar: FC = ({ + filterText, + handleChange, + clearFilterText +}) => { const { url } = useRouteMatch(); const placeholder: string = url.split("/")[3]; return ( @@ -26,13 +31,10 @@ export const FilterBar: FC = ({ filterText, handleChange }) => { - + close -
); diff --git a/client/src/components/TicketList.tsx b/client/src/components/TicketList.tsx index c810fcd..5864041 100644 --- a/client/src/components/TicketList.tsx +++ b/client/src/components/TicketList.tsx @@ -1,4 +1,4 @@ -import React, { FC, useState, ChangeEvent } from "react"; +import React, { FC, useState, ChangeEvent, MouseEvent } from "react"; import { Ticket } from "../types/Ticket"; import { FloatingButton } from "./FloatingButton"; import { HorizontalCard } from "./HorizontalCard"; @@ -9,9 +9,12 @@ type TicketListProps = { }; export const TicketList: FC = ({ tickets }) => { + const [filterText, setFilterText] = useState(""); + const clearFilterText: (e: MouseEvent) => void = (e: MouseEvent) => { + setFilterText(""); + }; const archiveTicket = () => {}; const validateTicket = () => {}; - const [filterText, setFilterText] = useState(""); const handleChange: (e: ChangeEvent) => void = ( e: ChangeEvent @@ -44,12 +47,18 @@ export const TicketList: FC = ({ tickets }) => {

Tickets

- +
    {tickets - .filter(t => t.title.includes(filterText)) + .filter(t => + t.title.toLowerCase().includes(filterText.toLowerCase()) + ) .map((t: Ticket) => (
  • { name: "Business Model Canvas", description: "Path to 1B$", size: 2100, - format: "pdf" + format: "png" } ]; diff --git a/client/src/utils/router.tsx b/client/src/utils/router.tsx index c2098ed..7f8078e 100644 --- a/client/src/utils/router.tsx +++ b/client/src/utils/router.tsx @@ -17,7 +17,7 @@ export const history = creacteHistory.createBrowserHistory(); export const AppRouter = () => { return ( -
    +
    {/*