Skip to content

Commit cca9a84

Browse files
Adds bank page to display all questions
1 parent e114fce commit cca9a84

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import React, { useState } from "react";
2+
import { QnTable } from "../../components/QnTable/QnTable.component";
3+
import { FilterBar } from "../../components/QnFilter/QnFilter.component";
4+
import { VStack } from "@chakra-ui/react";
5+
import { QnFilter } from "../../models/Quesiton.model";
6+
import { Question } from "../../models/Quesiton.model";
7+
import { dummyQn } from "../../data/sampleqn";
8+
9+
const filterQn = (questions: Question[], filter: QnFilter) => {
10+
return questions.filter((qn) => {
11+
if (filter.difficultyFilter) {
12+
if (
13+
qn.difficulty > filter.difficultyFilter[1] ||
14+
qn.difficulty < filter.difficultyFilter[0]
15+
)
16+
return false;
17+
}
18+
19+
if (filter.tagFilter && filter.tagFilter.size) {
20+
if (qn.categories.every((tag) => !filter.tagFilter?.has(tag))) {
21+
return false;
22+
}
23+
}
24+
25+
if (filter.qnFilter) {
26+
if (qn.displayedQuestion.toLowerCase().indexOf(filter.qnFilter) === -1) {
27+
return false;
28+
}
29+
}
30+
31+
return true;
32+
});
33+
};
34+
35+
const BankPage = () => {
36+
const allQuestion = dummyQn;
37+
const [filter, changeFilter] = useState<QnFilter>({});
38+
const [filteredQn, setFilteredQn] = useState<Question[]>(
39+
filterQn(allQuestion, filter)
40+
);
41+
const onFilterChange = (newFilter: QnFilter) => {
42+
changeFilter(newFilter);
43+
setFilteredQn(filterQn(allQuestion, newFilter));
44+
};
45+
return (
46+
<VStack spacing="3">
47+
<FilterBar onFilterChange={onFilterChange} />
48+
49+
<QnTable filteredQn={filteredQn} pageSize={7}></QnTable>
50+
</VStack>
51+
);
52+
};
53+
54+
export default BankPage;

0 commit comments

Comments
 (0)