From df33d3a951934bfe280ef32a6e1fe1bc7a3e2417 Mon Sep 17 00:00:00 2001 From: pikiou Date: Wed, 11 May 2022 09:15:59 +0200 Subject: [PATCH] Add knowledge identification requirement and unknown filter --- src/components/Knowledge/BoxList.tsx | 47 ++++++++++++++++----- src/components/Knowledge/styles.module.scss | 7 +++ src/pages/Knowledge/KnowledgesPage.tsx | 25 +++++++---- 3 files changed, 60 insertions(+), 19 deletions(-) diff --git a/src/components/Knowledge/BoxList.tsx b/src/components/Knowledge/BoxList.tsx index 80b418a..51c7784 100644 --- a/src/components/Knowledge/BoxList.tsx +++ b/src/components/Knowledge/BoxList.tsx @@ -1,4 +1,4 @@ -import React, { memo } from "react" +import React, { memo, useState } from "react" import { useSelector } from "react-redux" import styles from "./styles.module.scss" import BoxItem from "./BoxItem" @@ -11,20 +11,45 @@ import { const BoxList: React.FC = (): JSX.Element | null => { const detailedBoxes = useSelector(selectSortedUniqueDetailedBoxes) const [volunteerKnowledge, saveVolunteerKnowledge] = useVolunteerKnowledge() + const [showUnknownOnly, setShowUnknownOnly] = useState(false) + + const onShowUnknownOnly = (e: React.ChangeEvent) => + setShowUnknownOnly(e.target.checked) if (!detailedBoxes || detailedBoxes.length === 0) return null + const boxesToShow = detailedBoxes.filter( + (box) => + !box || + !showUnknownOnly || + !volunteerKnowledge || + (!volunteerKnowledge.ok.includes(box.gameId) && + !volunteerKnowledge.bof.includes(box.gameId) && + !volunteerKnowledge.niet.includes(box.gameId)) + ) + return ( - +
+ +
    + {boxesToShow.map((detailedBox: any) => ( + + ))} +
+
) } diff --git a/src/components/Knowledge/styles.module.scss b/src/components/Knowledge/styles.module.scss index d9eb008..6ed755c 100755 --- a/src/components/Knowledge/styles.module.scss +++ b/src/components/Knowledge/styles.module.scss @@ -1,6 +1,13 @@ @import "../../theme/variables"; @import "../../theme/mixins"; +.showUnknownOnlyLabel { + text-align: left; + display: inline-block; + margin-bottom: 10px; + width: 280px; +} + .boxList { padding: 0; list-style: none; diff --git a/src/pages/Knowledge/KnowledgesPage.tsx b/src/pages/Knowledge/KnowledgesPage.tsx index 3dd5b60..5293f0e 100644 --- a/src/pages/Knowledge/KnowledgesPage.tsx +++ b/src/pages/Knowledge/KnowledgesPage.tsx @@ -1,22 +1,31 @@ import { FC, memo } from "react" +import { useSelector } from "react-redux" import { RouteComponentProps } from "react-router-dom" import { Helmet } from "react-helmet" import { AppThunk } from "../../store" import styles from "./styles.module.scss" import { BoxList, KnowledgeIntro, fetchForKnowledge } from "../../components" +import { selectUserJwtToken } from "../../store/auth" export type Props = RouteComponentProps -const KnowledgesPage: FC = (): JSX.Element => ( -
-
- - - +const KnowledgesPage: FC = (): JSX.Element => { + const jwtToken = useSelector(selectUserJwtToken) + if (jwtToken === undefined) return

Loading...

+ if (!jwtToken) { + return
Besoin d'être identifié
+ } + return ( +
+
+ + + +
-
-) + ) +} // Fetch server-side data here export const loadData = (): AppThunk[] => [...fetchForKnowledge.map((f) => f())]