From 2023ba8ccd3b6aaf787a392f81dea0706cfa1cf9 Mon Sep 17 00:00:00 2001 From: Ruidy Nemausat Date: Tue, 25 Feb 2020 18:53:28 +0100 Subject: [PATCH] fetch allUsers in ProjectController, combined in project viewmodel,fixed user model checkboxes --- client/package-lock.json | 10 ++++++ client/package.json | 4 ++- client/src/VM/ProjectVM.ts | 4 ++- client/src/components/UsersModal.tsx | 33 +++++--------------- client/src/components/UsersModalEntry.tsx | 11 +++++-- client/src/controllers/ProjectController.tsx | 23 ++++++++++++-- client/src/pages/ProjectPage.tsx | 2 ++ 7 files changed, 54 insertions(+), 33 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index a28c305..2aff520 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -1626,6 +1626,11 @@ "@types/testing-library__dom": "*" } }, + "@types/underscore": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.9.4.tgz", + "integrity": "sha512-CjHWEMECc2/UxOZh0kpiz3lEyX2Px3rQS9HzD20lxMvx571ivOBQKeLnqEjxUY0BMgp6WJWo/pQLRBwMW5v4WQ==" + }, "@types/yargs": { "version": "13.0.8", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.8.tgz", @@ -12539,6 +12544,11 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz", "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==" }, + "underscore": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.2.tgz", + "integrity": "sha512-D39qtimx0c1fI3ya1Lnhk3E9nONswSKhnffBI0gME9C99fYOkNi04xs8K6pePLhvl1frbDemkaBQ5ikWllR2HQ==" + }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", diff --git a/client/package.json b/client/package.json index 92714bf..b827484 100644 --- a/client/package.json +++ b/client/package.json @@ -11,12 +11,14 @@ "@types/react": "^16.9.19", "@types/react-dom": "^16.9.5", "@types/react-router-dom": "^5.1.3", + "@types/underscore": "^1.9.4", "history": "^4.10.1", "react": "^16.12.0", "react-dom": "^16.12.0", "react-router-dom": "^5.1.2", "react-scripts": "3.3.1", - "typescript": "^3.7.5" + "typescript": "^3.7.5", + "underscore": "^1.9.2" }, "scripts": { "start": "react-scripts start", diff --git a/client/src/VM/ProjectVM.ts b/client/src/VM/ProjectVM.ts index 717a233..c44a9f7 100644 --- a/client/src/VM/ProjectVM.ts +++ b/client/src/VM/ProjectVM.ts @@ -12,17 +12,19 @@ export default class ProjectVM { public value: number; public tickets: Ticket[]; public users: User[]; + public allUsers: User[]; public ticketsTotalCount: number; public ticketsDone: number; public remainingDays: number; public files: AppFile[]; public activities: Activity[]; - public constructor(project: Project) { + public constructor(project: Project, allUsers: User[]) { this.id = project.id; this.title = project.title; this.description = project.description; this.users = project.users; + this.allUsers = allUsers; this.value = project.progression; this.tickets = project.tickets; this.ticketsTotalCount = diff --git a/client/src/components/UsersModal.tsx b/client/src/components/UsersModal.tsx index 8a0f581..08800cf 100644 --- a/client/src/components/UsersModal.tsx +++ b/client/src/components/UsersModal.tsx @@ -8,16 +8,22 @@ import { get, put } from "../utils/http"; import { Constants } from "../utils/Constants"; import { UsersModalEntry } from "./UsersModalEntry"; import { useParams } from "react-router-dom"; +import _ from "underscore"; interface IProps { show: boolean; handleClose: () => void; users: User[]; + allUsers: User[]; } -export const UsersModal: FC = ({ show, handleClose, users }) => { +export const UsersModal: FC = ({ + show, + handleClose, + users, + allUsers +}) => { const [filterText, setFilterText] = useState(""); - const [allUsers, setAllUsers] = useState([]); const [members, setMembers] = useState(users); const { id } = useParams(); @@ -39,29 +45,6 @@ export const UsersModal: FC = ({ show, handleClose, users }) => { console.log(response); }; - async function httpGet(): Promise { - try { - const response: HttpResponse = await get( - `${Constants.usersURI}` - ); - if (response.parsedBody !== undefined) { - setAllUsers((response.parsedBody as unknown) as User[]); - } - } catch (ex) { - // setHasError(true); - // setError(ex); - } - } - - useEffect(() => { - // if (id !== undefined) { - httpGet(); - // } else { - // setHasError(true); - // setError("Bad Request"); - // } - }, []); - return (
diff --git a/client/src/components/UsersModalEntry.tsx b/client/src/components/UsersModalEntry.tsx index 9b1f0be..f571285 100644 --- a/client/src/components/UsersModalEntry.tsx +++ b/client/src/components/UsersModalEntry.tsx @@ -1,5 +1,6 @@ import React, { FC } from "react"; import { User } from "../types/User"; +import _ from "underscore"; interface IProps { setMembers: React.Dispatch>; @@ -8,6 +9,10 @@ interface IProps { } export const UsersModalEntry: FC = ({ user, setMembers, members }) => { + console.log(members); + const match: (id: string) => boolean = (id: string) => { + return Boolean(members.find(m => m.id === id)); + }; return (