Commit 897d94ae authored by Adithya Kahawanugoda's avatar Adithya Kahawanugoda

Merge branch 'arithmatic-activity-config' into 'master'

arithmetic configs added

See merge request !30
parents 99358509 2d10a14e
...@@ -332,12 +332,13 @@ def predictShapePattern(): ...@@ -332,12 +332,13 @@ def predictShapePattern():
return jsonify(response) return jsonify(response)
# Reasoning IQ evaluation # Reasoning IQ evaluation
@app.route('/predictReasoning', methods = ['POST','GET']) @app.route('/predictPictureConcept', methods = ['POST','GET'])
@cross_origin() @cross_origin()
def predictReasoning(): def predictPictureConcept():
if request.method == 'POST': if request.method == 'POST':
file = request.files.get('file') file = request.files.get('file')
questionIndex = request.form.get('questionIndex') questionIndex = request.form.get('questionIndex')
candidateID = request.form.get('candidateID')
print(questionIndex) print(questionIndex)
if file is None or file.filename == "": if file is None or file.filename == "":
return jsonify({'error: no file'}) return jsonify({'error: no file'})
...@@ -349,6 +350,7 @@ def predictReasoning(): ...@@ -349,6 +350,7 @@ def predictReasoning():
data = {'prediction': prediction} data = {'prediction': prediction}
db.db['reasoningIQScore'].insert_one({ db.db['reasoningIQScore'].insert_one({
"activityName": "Picture Concept", "activityName": "Picture Concept",
"candidateID": candidateID,
"questionIndex": questionIndex, "questionIndex": questionIndex,
"transcription": prediction, "transcription": prediction,
}) })
...@@ -357,6 +359,32 @@ def predictReasoning(): ...@@ -357,6 +359,32 @@ def predictReasoning():
return jsonify({'error: Error during pipeline execution'}) return jsonify({'error: Error during pipeline execution'})
return jsonify({'result: test'}) return jsonify({'result: test'})
@app.route('/predictArithmetic', methods = ['POST','GET'])
@cross_origin()
def predictArithmetic():
if request.method == 'POST':
file = request.files.get('file')
questionIndex = request.form.get('questionIndex')
candidateID = request.form.get('candidateID')
print(questionIndex)
if file is None or file.filename == "":
return jsonify({'error: no file'})
try:
file.save("./"+file.filename)
prediction = transform_audio(file.filename)
data = {'prediction': prediction}
db.db['reasoningIQScore'].insert_one({
"activityName": "Arithmetic",
"candidateID": candidateID,
"questionIndex": questionIndex,
"transcription": prediction,
})
return jsonify(data)
except:
return jsonify({'error: Error during pipeline execution'})
return jsonify({'result: test'})
@app.route('/mentalChromScores', methods=['POST']) @app.route('/mentalChromScores', methods=['POST'])
@cross_origin() @cross_origin()
......
...@@ -80,6 +80,9 @@ const EthicalClearenceScreen = () => { ...@@ -80,6 +80,9 @@ const EthicalClearenceScreen = () => {
await API.post("parents/", JSON.stringify(payload), headerConfig) await API.post("parents/", JSON.stringify(payload), headerConfig)
.then((res) => { .then((res) => {
if (res.status === 200) { if (res.status === 200) {
if (localStorage) {
localStorage.setItem("candidateID", childCandidate);
}
setParentName(""); setParentName("");
setchildCandidate(""); setchildCandidate("");
setParentSignature(""); setParentSignature("");
......
import React from "react"; import React, { useState, useEffect } from "react";
import { useState, useEffect } from "react";
import "./Arithmetic.css"; import "./Arithmetic.css";
import Timer from "../timer/Timer"; import Timer from "../timer/Timer";
import { RecordingHandler } from "../recorder/Recorder";
const Arithmetic = ({ nextActivity }) => { const Arithmetic = ({ nextActivity }) => {
const [img, setImgs] = useState(0);
const [allCompleted, setAllCompleted] = useState(false); const [allCompleted, setAllCompleted] = useState(false);
const [activityIndex, setActivityIndex] = useState(1);
const imgSrcArray = [ const imgSrcArray = [
"https://i.ibb.co/10pQ5gp/image-27.png", "https://i.ibb.co/10pQ5gp/image-27.png",
"https://i.ibb.co/kgyNs4Z/arithmatic4.png", "https://i.ibb.co/4KGpx50/Screenshot-2022-10-10-232236.jpg",
"https://i.ibb.co/Bckx5FR/arithmatic3.png", "https://i.ibb.co/Bckx5FR/arithmatic3.png",
]; ];
const imgSrc = imgSrcArray[img];
const [time, setTime] = useState({
seconds: 0,
});
const [isCancelled, setIsCancelled] = useState(false);
useEffect(() => {
const calculateTime = () => {
setTimeout(() => {
let nSeconds = time.seconds;
let nMinutes = time.minutes;
let nHours = time.hours;
nSeconds++;
!isCancelled &&
setTime({ seconds: nSeconds, minutes: nMinutes, hours: nHours });
}, 1000);
};
calculateTime();
console.log(time);
if (time.seconds === 30) {
if (img < imgSrcArray.length - 1) {
setImgs(img + 1);
} else {
setAllCompleted(true);
}
time.seconds = 0; const switchActivityHandler = () => {
if (activityIndex < 3) {
let activityNo = activityIndex + 1;
setActivityIndex(activityNo);
} else {
setAllCompleted(true);
} }
}); };
useEffect(() => {
RecordingHandler(`AR.wav`, activityIndex, "ar");
}, [activityIndex]);
return ( return (
<div> <div>
...@@ -48,7 +31,7 @@ const Arithmetic = ({ nextActivity }) => { ...@@ -48,7 +31,7 @@ const Arithmetic = ({ nextActivity }) => {
<div className="arithmetic-img-container w-5/6 h-4/6 m-auto p-11 mb-9 mt-9"> <div className="arithmetic-img-container w-5/6 h-4/6 m-auto p-11 mb-9 mt-9">
<img <img
alt="img-row-item" alt="img-row-item"
src={imgSrc} src={imgSrcArray[activityIndex - 1]}
className="arithmetic-img-item" className="arithmetic-img-item"
/> />
</div> </div>
...@@ -74,29 +57,7 @@ const Arithmetic = ({ nextActivity }) => { ...@@ -74,29 +57,7 @@ const Arithmetic = ({ nextActivity }) => {
</button> </button>
)} )}
{!allCompleted && <Timer />} {!allCompleted && <Timer switchActivity={switchActivityHandler} />}
{!allCompleted && (
<div>
{/* <button
className="float-right bg-transparent hover:bg-blue-500 text-blue-700 font-semibold hover:text-white py-2 px-4 border border-blue-500 hover:border-transparent rounded"
onClick={() => {
}}
>
Next
</button> */}
{/* <button
className="float-right bg-transparent hover:bg-blue-500 text-blue-700 font-semibold hover:text-white py-2 px-4 border border-blue-500 hover:border-transparent rounded"
onClick={() => {
RecordingHandler("PC1.flac"); //pass activity(PC), question(1) names with flac extension
}}
>
Start Rec
</button>{" "}
{" "}
*/}
</div>
)}
</div> </div>
); );
}; };
......
...@@ -122,8 +122,7 @@ const PictureConcept = ({ nextActivity }) => { ...@@ -122,8 +122,7 @@ const PictureConcept = ({ nextActivity }) => {
}; };
useEffect(() => { useEffect(() => {
// console.log(activityIndex); RecordingHandler(`PC.wav`, activityIndex, "pc");
// RecordingHandler(`PC.wav`, activityIndex);
}, [activityIndex]); }, [activityIndex]);
return ( return (
......
import * as RecordRTC from "recordrtc"; import * as RecordRTC from "recordrtc";
import axios from "axios";
import baseURL from "../../../../config/api";
import API from "../../../../config/api"; import API from "../../../../config/api";
export const RecordingHandler = async (fileName, questionIndex) => { export const RecordingHandler = async (
fileName,
questionIndex,
activityName
) => {
let stream = await navigator.mediaDevices.getUserMedia({ let stream = await navigator.mediaDevices.getUserMedia({
video: false, video: false,
audio: true, audio: true,
...@@ -21,23 +23,27 @@ export const RecordingHandler = async (fileName, questionIndex) => { ...@@ -21,23 +23,27 @@ export const RecordingHandler = async (fileName, questionIndex) => {
await recorder.stop(function () { await recorder.stop(function () {
let blob = recorder.blob; let blob = recorder.blob;
processRecording(blob, fileName, questionIndex); processRecording(blob, fileName, questionIndex, activityName);
}); });
stream.getTracks().forEach(function (track) { stream.getTracks().forEach(function (track) {
track.stop(); track.stop();
}); });
}; };
const processRecording = (blob, fileName, questionIndex) => { const processRecording = (blob, fileName, questionIndex, activityName) => {
let recordedFile = new File([blob], fileName); let recordedFile = new File([blob], fileName);
uploadRecording(recordedFile, fileName, questionIndex); uploadRecording(recordedFile, fileName, questionIndex, activityName);
}; };
const uploadRecording = async (file, fileName, questionIndex) => { const uploadRecording = async (file, fileName, questionIndex, activityName) => {
let data = new FormData(); let data = new FormData();
console.log(questionIndex); let candidateID = 0;
if (localStorage) {
candidateID = localStorage.getItem("candidateID");
}
data.append("file", file, fileName); data.append("file", file, fileName);
data.append("questionIndex", questionIndex); data.append("questionIndex", questionIndex);
data.append("candidateID", candidateID);
const config = { const config = {
headers: { headers: {
...@@ -46,11 +52,22 @@ const uploadRecording = async (file, fileName, questionIndex) => { ...@@ -46,11 +52,22 @@ const uploadRecording = async (file, fileName, questionIndex) => {
}, },
}; };
await API.post(`predictReasoning`, data, config) // if (activityName === "pc") {
.then((res) => { // await API.post(`predictPictureConcept`, data, config)
console.log(res, "DONE" + new Date().toISOString); // .then((res) => {
}) // console.log(res, "DONE" + new Date().toISOString);
.catch((err) => { // })
console.log(err, "ERROR" + new Date().toISOString); // .catch((err) => {
}); // console.log(err, "ERROR" + new Date().toISOString);
// });
// }
// if (activityName === "ar") {
// await API.post(`predictArithmetic`, data, config)
// .then((res) => {
// console.log(res, "DONE" + new Date().toISOString);
// })
// .catch((err) => {
// console.log(err, "ERROR" + new Date().toISOString);
// });
// }
}; };
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment