fix: default setting not updating with updated default settings (#466)
This commit is contained in:
@@ -1,4 +1,9 @@
|
||||
import { XMLParser } from 'fast-xml-parser';
|
||||
import _ from 'lodash-es';
|
||||
|
||||
import {
|
||||
ShowAnswerTypesKeys,
|
||||
} from '../../../data/constants/problem';
|
||||
import { popuplateItem } from './SettingsParser';
|
||||
|
||||
const SETTING_KEYS = [
|
||||
@@ -17,23 +22,30 @@ class ReactStateSettingsParser {
|
||||
|
||||
getSettings() {
|
||||
let settings = {};
|
||||
const { defaultSettings } = this.problem;
|
||||
const stateSettings = this.problem.settings;
|
||||
|
||||
settings = popuplateItem(settings, 'number', 'max_attempts', stateSettings.scoring.attempts, true);
|
||||
const numberOfAttemptsChoice = [
|
||||
ShowAnswerTypesKeys.AFTER_SOME_NUMBER_OF_ATTEMPTS,
|
||||
ShowAnswerTypesKeys.AFTER_ALL_ATTEMPTS,
|
||||
ShowAnswerTypesKeys.AFTER_ALL_ATTEMPTS_OR_CORRECT,
|
||||
];
|
||||
|
||||
settings = popuplateItem(settings, 'number', 'max_attempts', stateSettings.scoring.attempts, defaultSettings?.maxAttempts, true);
|
||||
settings = popuplateItem(settings, 'weight', 'weight', stateSettings.scoring);
|
||||
settings = popuplateItem(settings, 'on', 'showanswer', stateSettings.showAnswer);
|
||||
settings = popuplateItem(settings, 'afterAttempts', 'attempts_before_showanswer_button', stateSettings.showAnswer);
|
||||
settings = popuplateItem(settings, 'showResetButton', 'show_reset_button', stateSettings);
|
||||
settings = popuplateItem(settings, 'on', 'showanswer', stateSettings.showAnswer, defaultSettings?.showanswer);
|
||||
if (_.includes(numberOfAttemptsChoice, stateSettings.showAnswer.on)) {
|
||||
settings = popuplateItem(settings, 'afterAttempts', 'attempts_before_showanswer_button', stateSettings.showAnswer);
|
||||
}
|
||||
settings = popuplateItem(settings, 'showResetButton', 'show_reset_button', stateSettings, defaultSettings?.showResetButton);
|
||||
settings = popuplateItem(settings, 'timeBetween', 'submission_wait_seconds', stateSettings);
|
||||
settings = popuplateItem(settings, 'randomization', 'rerandomize', stateSettings);
|
||||
settings = popuplateItem(settings, 'randomization', 'rerandomize', stateSettings, defaultSettings?.rerandomize);
|
||||
|
||||
return settings;
|
||||
}
|
||||
|
||||
parseRawOlxSettings() {
|
||||
const rawOlxSettings = this.getSettings();
|
||||
// console.log(rawOlxSettings);
|
||||
// console.log(this.rawOLX);
|
||||
const parserOptions = {
|
||||
ignoreAttributes: false,
|
||||
alwaysCreateTextNode: true,
|
||||
|
||||
@@ -2,10 +2,11 @@ import _ from 'lodash-es';
|
||||
|
||||
import { ShowAnswerTypes, RandomizationTypesKeys } from '../../../data/constants/problem';
|
||||
|
||||
export const popuplateItem = (parentObject, itemName, statekey, metadata, allowNull = false) => {
|
||||
export const popuplateItem = (parentObject, itemName, statekey, metadata, defaultValue = null, allowNull = false) => {
|
||||
let parent = parentObject;
|
||||
const item = _.get(metadata, itemName, null);
|
||||
if (!_.isNil(item) || allowNull) {
|
||||
const equalsDefault = item === defaultValue;
|
||||
if ((!_.isNil(item) || allowNull) && !equalsDefault) {
|
||||
parent = { ...parentObject, [statekey]: item };
|
||||
}
|
||||
return parent;
|
||||
|
||||
Reference in New Issue
Block a user