projectb/mark_calc.js
2023-10-12 10:18:33 +05:30

238 lines
6.4 KiB
JavaScript

function markCalculation() {
console.clear();
// Get jsonData from the Localstorage
var jsonString = localStorage.getItem('JSON_FOR_NAV');
console.log('jsonData markCalculation');
const jsonData = JSON.parse(jsonString);
console.log(jsonData);
//Section Level foreach
jsonData.sections.forEach(function(section, index) {
const random_no = Date.now();
var sectionMarks = section.section_marks;
var sectionAttemptAny = section.section_attempt_any;
var section_id = section.section_id;
console.log('sectionMarks : ' + sectionMarks);
console.log('sectionAttemptAny : ' + sectionAttemptAny);
console.log('section_id : ' + section_id);
//send a object for generateSingleQuestions() function using foreach and mark calc
var QuestionObjects = {
'sectionData': section,
'sectionRandomNo': random_no,
'sectionMarks': sectionMarks,
'sectionAttemptAny': sectionAttemptAny,
}
// generateSingleQuestions(section,random_no);
generateSingleQuestions(QuestionObjects);
});
}
//Function for Question Level foreach
// function generateSingleQuestions(section, random_no)
function generateSingleQuestions(QuestionObjects)
{
//set default value for reciveing questionObjects
var section = false;
var random_no = false;
//end of set default value for reciveing questionObjects
//set values from QuestionObjects param if exists
if(QuestionObjects.hasOwnProperty('sectionData'))
{
section = QuestionObjects.sectionData;
}
else if(QuestionObjects.hasOwnProperty('sectionRandomNo'))
{
random_no = QuestionObjects.sectionRandomNo;
}
//end of set values from QuestionObjects param if exists
section.questions.forEach(function(Question, index) {
const questionRandomNo = Date.now();
var questionTypeFormets = "";
if(Question.question_type)
{
questionTypeFormets = Question.question_type;
}
else
{
questionTypeFormets ='question_group';
}
//Questions Variables
var questionType = questionTypeFormets;
var questionMarks = Question.marks;
var question_Id = Question.question_Id;
// section mark divided by section attempt any
var sectionMarks = QuestionObjects.sectionMarks;
var sectionAttemptAny = QuestionObjects.sectionAttemptAny;
var sectionMarkDivideVale = sectionMarks / sectionAttemptAny;
//end of section mark divided by section attempt any
var questionAreaId = 'question_area_'+random_no;
if(questionType == 'text')
{
//this part for Text question only
var addTextQuestionId = question_Id.split("_")[1];
var textQuestionMarkField = document.getElementById('Text_Question_Marks_Id_'+ addTextQuestionId);
if(QuestionObjects.sectionAttemptAny !== "")
{
textQuestionMarkField.value = sectionMarkDivideVale;
}
else
{
textQuestionMarkField.value = "";
}
}
else if (questionType == 'group')
{
//this part for Choice question only
var addChoiceAreaId = question_Id.split("_")[1];
var choiceQuestionMarkField = document.getElementById('Choice_Question_Marks_Id_' + addChoiceAreaId);
if(QuestionObjects.sectionAttemptAny !== "")
{
console.log(choiceQuestionMarkField);
choiceQuestionMarkField.value = sectionMarkDivideVale;
choiceQuestionMarkField.disable = true;
}
else
{
choiceQuestionMarkField.value = "";
}
}
else if (questionType == 'question_group')
{
//the objects contain QuestionGroup Data for send generateGroupQuestion()
var QuestionGroupObjects = {
'questionGroupData': Question,
'sectionMarks': sectionMarkDivideVale,
'sectionAttemptAny': QuestionObjects.sectionAttemptAny,
}
generateGroupQuestion(QuestionGroupObjects); //function for forEach QuestionGroups and Questions
}
})
}
// function for QuestionGroups and QuestionGroup questions Level Foreach
// function generateGroupQuestion(Question, questionRandomNo)
function generateGroupQuestion(QuestionGroupObjects)
{
//set default value for reciveing questionObjects
var Question = false;
//end of set default value for reciveing questionObjects
//set values from QuestionObjects param if exists
if(QuestionGroupObjects.hasOwnProperty('questionGroupData'))
{
Question = QuestionGroupObjects.questionGroupData;
}
//end of set values from QuestionObjects param if exists
//QuestionGroup Variables
var group_marks = Question.group_marks;
var group_attempt_any = Question.group_attempt_any;
var question_group_id = Question.question_group_id;
console.log(question_group_id);
var QuestionGroup_ID = question_group_id.split("_")[3];
var Question_Group_Marks_Field = document.getElementById('Question_Group_Marks_Id_' + QuestionGroup_ID);
console.log(Question_Group_Marks_Field);
if(QuestionGroupObjects.sectionAttemptAny !== "")
{
// alert(QuestionGroupObjects.sectionMarks)
Question_Group_Marks_Field.value = QuestionGroupObjects.sectionMarks;
}
else
{
Question_Group_Marks_Field.value = "";
}
console.log('group_marks : ' + group_marks);
console.log('group_attempt_any : ' + group_attempt_any);
console.log('question_group_id : ' + question_group_id);
// QuestionGroup question Level Foreach
Question.questions.forEach(function(GroupQuestions, index) {
const QuestionGroupRandomNo = Date.now();
//QuestionGroup Questions Variables
var group_question_Type = GroupQuestions.question_type;
var group_question_marks = GroupQuestions.marks;
var group_question_id = GroupQuestions.question_Id;
// var questionGroupId = 'group_question_area_'+questionRandomNo;
if(group_question_Type == 'text')
{
console.log('group_question_Type : ' + group_question_Type);
console.log('group_question_marks : ' + group_question_marks);
console.log('group_question_id : ' + group_question_id);
}
else if(group_question_Type == 'group')
{
console.log('group_question_Type : ' + group_question_Type);
console.log('group_question_marks : ' + group_question_marks);
console.log('group_question_id : ' + group_question_id);
}
else
{
generateGroupQuestion(GroupQuestions, questionGroupId, QuestionGroupRandomNo); // function for 4 level QuestionGroup Handle
}
});
}