Skip to content

Commit 48d6b84

Browse files
committed
Link Frontend and Backend
Able to Add Questions TODO: - Delete and Update Questions
1 parent afe1c5b commit 48d6b84

File tree

4 files changed

+49
-18
lines changed

4 files changed

+49
-18
lines changed

peer-prep/src/Components/QuestionList/Question.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ export const Question = ({question, i}) => {
2222
</div>
2323
<div className= {selected === i ? "q-content-show": "q-content"}>
2424
<div className="q-tags">
25-
<div className="q-tag">{question.difficulty}</div>
26-
<div className="q-tag">{question.topic}</div>
25+
<div className="q-tag">{question.complexity}</div>
26+
<div className="q-tag">{question.category}</div>
2727
</div>
2828
<div className="q-description">{question.description}</div>
2929
</div>
Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
1-
import React, { useState, useEffect} from 'react'
1+
import React, { useState, useEffect } from 'react'
22
import { QuestionForm } from './QuestionForm'
3-
import {Question} from './Question'
3+
import { Question } from './Question'
44
import './QuestionList.css'
55

6+
import QuestionModel from '../../DataModel/Question'
7+
import { setupQuestionDatabase, retrieveQuestionDatabase, updateLocalQuestionDatabase } from "../../Utility/localStorage"
8+
69
export const Questions = () => {
10+
// Initializing Database
11+
setupQuestionDatabase();
12+
13+
const [database, setDatabase] = useState(retrieveQuestionDatabase());
714
const [qId, setQId] = useState(0);
815
const [isAddQ, setAddQ] = useState(false);
916
const [qs, setQs] = useState([])
@@ -12,9 +19,24 @@ export const Questions = () => {
1219
}
1320

1421
const addQuestion = (qTitle, qDifficulty, qTopic, qDescription) => {
15-
setQs([...qs, {id: qId, title: qTitle, difficulty: qDifficulty,
16-
topic: qTopic, description: qDescription}]);
22+
// Add in Database and Upload into Storage
23+
let newQuestion = new QuestionModel(qId, qTitle, qDescription, qDifficulty, qTopic);
24+
database.addQuestion(newQuestion);
25+
updateLocalQuestionDatabase(database);
26+
27+
// Update States
28+
setQs(Array.from(database.database));
29+
setQId(Array.from(database.database).length);
30+
31+
// setQs([...qs, {id: qId, title: qTitle, difficulty: qDifficulty,
32+
// topic: qTopic, description: qDescription}]);
1733
}
34+
35+
// To load data on mount
36+
useEffect(() => {
37+
setQs(Array.from(database.database));
38+
setQId(Array.from(database.database).length);
39+
}, [])
1840

1941
useEffect(() => console.log(qs), [qs]);
2042

@@ -23,19 +45,16 @@ export const Questions = () => {
2345
<div className="q-wrapper">
2446
<div className="accordion">
2547
{qs.map((q, i) => (
26-
<Question question = {q} key = {q.id} i = {i}/>
48+
<Question key = {q[0]} question = {q[1]} i = {i}/>
2749
))}
2850
</div>
2951

30-
{isAddQ === false ? <div></div> : <QuestionForm qId = {qId} addQuestion = {addQuestion}
31-
setAddQ = {setAddQ}/>}
52+
{isAddQ === false ? <div></div> :
53+
<QuestionForm qId = {qId} addQuestion = {addQuestion} setAddQ = {setAddQ}/>}
3254
<div className="add-q-btn" onClick = {() => {
3355
setQId(qId + 1);
3456
setAddQ(true);
3557
}}> Add question</div>
3658
</div>
37-
38-
39-
4059
)
4160
}

peer-prep/src/DataModel/QuestionDatabase.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ class QuestionDatabase {
55
this.database = new Map();
66
}
77

8+
setDatabase(database) {
9+
this.database = database;
10+
}
11+
812
addQuestion(questionToAdd) {
913
if (!this.isDuplicateQuestion(questionToAdd)) {
1014
this.database.set(questionToAdd.id, questionToAdd);
@@ -36,7 +40,7 @@ class QuestionDatabase {
3640
return true;
3741
}
3842

39-
questionList = this.getAllQuestions();
43+
var questionList = this.getAllQuestions();
4044

4145
for (var i = 0; i < questionList.length; i++) {
4246
if (questionToCheck.title === questionList[i].title) {
Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,23 @@
11
import QuestionDatabase from "../DataModel/QuestionDatabase";
22

3-
function updateQuestionDatabase(updatedDatabase) {
4-
localStorage.setItem("questions", updatedDatabase)
3+
function updateLocalQuestionDatabase(updatedDatabase) {
4+
const data = JSON.stringify(Array.from(updatedDatabase.database.entries()));
5+
localStorage.setItem("questions", data);
56
}
67

78
function retrieveQuestionDatabase() {
8-
return localStorage.getItem("questions");
9+
let questionDatabase = new QuestionDatabase();
10+
questionDatabase.setDatabase(new Map(JSON.parse(localStorage.getItem("questions"))))
11+
12+
return questionDatabase;
913
}
1014

1115
function setupQuestionDatabase() {
12-
localStorage.setItem("questions", QuestionDatabase());
16+
var data = localStorage.getItem("questions");
17+
18+
if(!data) {
19+
localStorage.setItem("questions", new QuestionDatabase())
20+
};
1321
}
1422

15-
export { setupQuestionDatabase, retrieveQuestionDatabase, updateQuestionDatabase };
23+
export { setupQuestionDatabase, retrieveQuestionDatabase, updateLocalQuestionDatabase };

0 commit comments

Comments
 (0)