fix: default setting not updating with updated default settings (#466)

This commit is contained in:
Kristin Aoki
2024-03-28 15:00:16 -04:00
committed by GitHub
parent 4fa169556e
commit 905bea0d59
3 changed files with 57 additions and 15 deletions

View File

@@ -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,

View File

@@ -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;