@pie-element/fraction-model 5.0.0-next.43 → 5.1.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/configure/lib/defaults.js +3 -0
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/model-options.js +3 -3
- package/configure/lib/model-options.js.map +1 -1
- package/configure/package.json +6 -6
- package/controller/lib/index.js +3 -3
- package/controller/lib/index.js.map +1 -1
- package/controller/package.json +3 -6
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/lib/main.js +2 -2
- package/lib/main.js.map +1 -1
- package/package.json +11 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","names":["model","correctResponse","title","prompt","modelTypeSelected","maxModelSelected","partsPerModel","allowedStudentConfig","showGraphLabels","configuration","baseInputConfiguration","
|
|
1
|
+
{"version":3,"file":"defaults.js","names":["model","correctResponse","title","prompt","modelTypeSelected","maxModelSelected","partsPerModel","allowedStudentConfig","showGraphLabels","configuration","baseInputConfiguration","h3","disabled","audio","video","image","textAlign","showParagraphs","separateParagraphs","label","settings","enabled","inputConfiguration","modelOptions","maxOfModel","min","max","default","modelTypeChoices","value","mathMlOptions","mmlOutput","mmlEditing","language","languageChoices","options","spellCheck","settingsPanelDisabled"],"sources":["../src/defaults.js"],"sourcesContent":["export default {\n model: {\n correctResponse: [],\n title: '',\n prompt: '',\n modelTypeSelected: 'bar',\n maxModelSelected: 1,\n partsPerModel: 5,\n allowedStudentConfig: false,\n showGraphLabels: false,\n },\n configuration: {\n baseInputConfiguration: {\n h3: { disabled: true },\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n textAlign: { disabled: true },\n showParagraphs: { disabled: false },\n separateParagraphs: { disabled: true },\n },\n title: {\n label: 'Title',\n settings: true,\n enabled: true,\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n },\n prompt: {\n label: 'Question',\n settings: true,\n enabled: true,\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n },\n modelOptions: {\n maxOfModel: {\n min: 1,\n max: 9,\n default: 1,\n },\n partsPerModel: {\n min: 1,\n max: 9,\n default: 5,\n },\n modelTypeChoices: [\n { value: 'bar', label: 'Bar' },\n { value: 'pie', label: 'Pie' },\n ],\n },\n mathMlOptions: {\n mmlOutput: false,\n mmlEditing: false,\n },\n language: {\n settings: false,\n label: 'Specify Language',\n enabled: false,\n },\n languageChoices: {\n label: 'Language Choices',\n options: [],\n },\n spellCheck: {\n label: 'Spellcheck',\n settings: false,\n enabled: true,\n },\n settingsPanelDisabled: true,\n },\n};\n"],"mappings":";;;;;;iCAAe;EACbA,KAAK,EAAE;IACLC,eAAe,EAAE,EAAE;IACnBC,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE,EAAE;IACVC,iBAAiB,EAAE,KAAK;IACxBC,gBAAgB,EAAE,CAAC;IACnBC,aAAa,EAAE,CAAC;IAChBC,oBAAoB,EAAE,KAAK;IAC3BC,eAAe,EAAE;EACnB,CAAC;EACDC,aAAa,EAAE;IACbC,sBAAsB,EAAE;MACtBC,EAAE,EAAE;QAAEC,QAAQ,EAAE;MAAK,CAAC;MACtBC,KAAK,EAAE;QAAED,QAAQ,EAAE;MAAM,CAAC;MAC1BE,KAAK,EAAE;QAAEF,QAAQ,EAAE;MAAM,CAAC;MAC1BG,KAAK,EAAE;QAAEH,QAAQ,EAAE;MAAM,CAAC;MAC1BI,SAAS,EAAE;QAAEJ,QAAQ,EAAE;MAAK,CAAC;MAC7BK,cAAc,EAAE;QAAEL,QAAQ,EAAE;MAAM,CAAC;MACnCM,kBAAkB,EAAE;QAAEN,QAAQ,EAAE;MAAK;IACvC,CAAC;IACDV,KAAK,EAAE;MACLiB,KAAK,EAAE,OAAO;MACdC,QAAQ,EAAE,IAAI;MACdC,OAAO,EAAE,IAAI;MACbC,kBAAkB,EAAE;QAClBT,KAAK,EAAE;UAAED,QAAQ,EAAE;QAAM,CAAC;QAC1BE,KAAK,EAAE;UAAEF,QAAQ,EAAE;QAAM,CAAC;QAC1BG,KAAK,EAAE;UAAEH,QAAQ,EAAE;QAAM;MAC3B;IACF,CAAC;IACDT,MAAM,EAAE;MACNgB,KAAK,EAAE,UAAU;MACjBC,QAAQ,EAAE,IAAI;MACdC,OAAO,EAAE,IAAI;MACbC,kBAAkB,EAAE;QAClBT,KAAK,EAAE;UAAED,QAAQ,EAAE;QAAM,CAAC;QAC1BE,KAAK,EAAE;UAAEF,QAAQ,EAAE;QAAM,CAAC;QAC1BG,KAAK,EAAE;UAAEH,QAAQ,EAAE;QAAM;MAC3B;IACF,CAAC;IACDW,YAAY,EAAE;MACZC,UAAU,EAAE;QACVC,GAAG,EAAE,CAAC;QACNC,GAAG,EAAE,CAAC;QACNC,OAAO,EAAE;MACX,CAAC;MACDrB,aAAa,EAAE;QACbmB,GAAG,EAAE,CAAC;QACNC,GAAG,EAAE,CAAC;QACNC,OAAO,EAAE;MACX,CAAC;MACDC,gBAAgB,EAAE,CAChB;QAAEC,KAAK,EAAE,KAAK;QAAEV,KAAK,EAAE;MAAM,CAAC,EAC9B;QAAEU,KAAK,EAAE,KAAK;QAAEV,KAAK,EAAE;MAAM,CAAC;IAElC,CAAC;IACDW,aAAa,EAAE;MACbC,SAAS,EAAE,KAAK;MAChBC,UAAU,EAAE;IACd,CAAC;IACDC,QAAQ,EAAE;MACRb,QAAQ,EAAE,KAAK;MACfD,KAAK,EAAE,kBAAkB;MACzBE,OAAO,EAAE;IACX,CAAC;IACDa,eAAe,EAAE;MACff,KAAK,EAAE,kBAAkB;MACzBgB,OAAO,EAAE;IACX,CAAC;IACDC,UAAU,EAAE;MACVjB,KAAK,EAAE,YAAY;MACnBC,QAAQ,EAAE,KAAK;MACfC,OAAO,EAAE;IACX,CAAC;IACDgB,qBAAqB,EAAE;EACzB;AACF,CAAC","ignoreList":[]}
|
|
@@ -14,7 +14,7 @@ var _Select = _interopRequireDefault(require("@mui/material/Select"));
|
|
|
14
14
|
var _MenuItem = _interopRequireDefault(require("@mui/material/MenuItem"));
|
|
15
15
|
var _cardBar = _interopRequireDefault(require("./card-bar"));
|
|
16
16
|
var _configUi = require("@pie-lib/config-ui");
|
|
17
|
-
var
|
|
17
|
+
var _lodashEs = require("lodash-es");
|
|
18
18
|
const GroupInline = (0, _styles.styled)('div')({
|
|
19
19
|
alignItems: 'center',
|
|
20
20
|
display: 'flex',
|
|
@@ -76,8 +76,8 @@ class ModelOptions extends _react.default.Component {
|
|
|
76
76
|
model,
|
|
77
77
|
onChange
|
|
78
78
|
} = this.props;
|
|
79
|
-
const oldModel = (0,
|
|
80
|
-
let newModel = (0,
|
|
79
|
+
const oldModel = (0, _lodashEs.cloneDeep)(model);
|
|
80
|
+
let newModel = (0, _lodashEs.cloneDeep)(model);
|
|
81
81
|
let showDiag = false;
|
|
82
82
|
if (key === 'max') {
|
|
83
83
|
newModel.maxModelSelected = value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-options.js","names":["_react","_interopRequireDefault","require","_propTypes","_numberTextField","_styles","_Select","_MenuItem","_cardBar","_configUi","
|
|
1
|
+
{"version":3,"file":"model-options.js","names":["_react","_interopRequireDefault","require","_propTypes","_numberTextField","_styles","_Select","_MenuItem","_cardBar","_configUi","_lodashEs","GroupInline","styled","alignItems","display","gap","Group","margin","InputLabel","marginBottom","StyledSelect","Select","width","height","verticalAlign","paddingLeft","CheckboxContainer","marginLeft","CheckboxLabel","ModelOptions","React","Component","constructor","props","_defineProperty2","default","value","model","onChange","modelTypeSelected","target","changeMaxModel","change","bind","changePartModel","studentConfig","key","event","oldModel","cloneDeep","newModel","showDiag","maxModelSelected","partsPerModel","allowedStudentConfig","render","modelOptions","maxOfModel","modelTypeChoices","createElement","header","handleSelect","MenuProps","transitionDuration","enter","exit","map","choice","index","label","MiniField","min","max","name","Checkbox","checked","exports","PropTypes","object","isRequired","func","_default"],"sources":["../src/model-options.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { MiniField } from './number-text-field';\nimport { styled } from '@mui/material/styles';\nimport Select from '@mui/material/Select';\nimport MenuItem from '@mui/material/MenuItem';\nimport CardBar from './card-bar';\nimport { Checkbox } from '@pie-lib/config-ui';\nimport { cloneDeep } from 'lodash-es';\n\nconst GroupInline = styled('div')({\n alignItems: 'center',\n display: 'flex',\n gap: '20px',\n});\n\nconst Group = styled('div')({\n margin: '12px 0',\n});\n\nconst InputLabel = styled('label')({\n display: 'block',\n marginBottom: '4px',\n});\n\nconst StyledSelect = styled(Select)({\n width: '80px',\n alignItems: 'center',\n height: '40px',\n verticalAlign: 'top',\n marginBottom: '8px',\n '& .MuiSelect-select': {\n paddingLeft: '10px',\n },\n});\n\nconst CheckboxContainer = styled('div')({\n marginLeft: '-15px',\n});\n\nconst CheckboxLabel = styled('span')({\n verticalAlign: 'middle',\n});\n\nexport class ModelOptions extends React.Component {\n static propTypes = {\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func,\n modelOptions: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.changeMaxModel = this.change.bind(this, 'max');\n this.changePartModel = this.change.bind(this, 'part');\n this.studentConfig = this.change.bind(this, 'student-config');\n }\n\n /**\n * Function to trigger when DOM elements value change for Number type\n * @param {string} key contains key of element\n * @param {object} event contains event object\n * @param {string} value contains value of DOM element\n */\n change(key, event, value) {\n const { model, onChange } = this.props;\n const oldModel = cloneDeep(model);\n let newModel = cloneDeep(model);\n let showDiag = false;\n if (key === 'max') {\n newModel.maxModelSelected = value;\n showDiag = true;\n } else if (key === 'part') {\n newModel.partsPerModel = value;\n showDiag = true;\n } else if (key === 'student-config') {\n newModel.allowedStudentConfig = value;\n showDiag = false;\n }\n onChange(oldModel, newModel, showDiag);\n }\n\n /**\n * Function to trigger on change of dropdown value model type\n * @param {string} value contains selection value\n */\n handleSelect = (value) => {\n const { model, onChange } = this.props;\n model.modelTypeSelected = value?.target.value;\n onChange(model, { ...model }, false);\n };\n\n render() {\n const { model, modelOptions } = this.props;\n const { maxOfModel, partsPerModel, modelTypeChoices } = modelOptions;\n\n return (\n <div>\n <CardBar header=\"Configure Fraction Model\"></CardBar>\n <br />\n <GroupInline>\n <Group>\n <InputLabel>Model Type</InputLabel>\n <StyledSelect\n onChange={this.handleSelect}\n value={model.modelTypeSelected}\n MenuProps={{\n transitionDuration: { enter: 225, exit: 195 }\n }}\n >\n {modelTypeChoices.map((choice, index) => (\n <MenuItem key={'item_' + index} value={choice.value}>\n {choice.label}\n </MenuItem>\n ))}\n </StyledSelect>\n </Group>\n <Group>\n <InputLabel>Max # of Models</InputLabel>\n <MiniField\n min={maxOfModel.min}\n max={maxOfModel.max}\n value={model.maxModelSelected}\n name=\"max-model\"\n onChange={this.changeMaxModel}\n />\n </Group>\n <Group>\n <InputLabel>Parts per Model</InputLabel>\n <MiniField\n min={partsPerModel.min}\n max={partsPerModel.max}\n value={model.partsPerModel}\n name=\"model-parts\"\n onChange={this.changePartModel}\n />\n </Group>\n </GroupInline>\n <CheckboxContainer>\n <Checkbox onChange={this.studentConfig} checked={model.allowedStudentConfig} label={''} />\n <CheckboxLabel>Allow student to configure number of models and parts per model</CheckboxLabel>\n </CheckboxContainer>\n </div>\n );\n }\n}\n\nexport default ModelOptions;\n"],"mappings":"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","ignoreList":[]}
|
package/configure/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/fraction-model-configure",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "4.
|
|
4
|
+
"version": "4.1.0-next.0",
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"module": "src/index.js",
|
|
@@ -11,13 +11,13 @@
|
|
|
11
11
|
"@mui/icons-material": "^7.3.4",
|
|
12
12
|
"@mui/material": "^7.3.4",
|
|
13
13
|
"@pie-framework/pie-configure-events": "^1.3.0",
|
|
14
|
-
"@pie-lib/config-ui": "12.1.1-next.
|
|
15
|
-
"@pie-lib/editable-html-tip-tap": "1.1.1-next.
|
|
14
|
+
"@pie-lib/config-ui": "12.1.1-next.3",
|
|
15
|
+
"@pie-lib/editable-html-tip-tap": "1.1.1-next.3",
|
|
16
16
|
"debug": "^4.1.1",
|
|
17
|
-
"lodash": "^4.17.
|
|
17
|
+
"lodash-es": "^4.17.23",
|
|
18
18
|
"prop-types": "^15.8.1",
|
|
19
|
-
"react": "18.
|
|
20
|
-
"react-dom": "18.
|
|
19
|
+
"react": "18.3.1",
|
|
20
|
+
"react-dom": "18.3.1"
|
|
21
21
|
},
|
|
22
22
|
"author": "",
|
|
23
23
|
"license": "ISC"
|
package/controller/lib/index.js
CHANGED
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.validate = exports.outcome = exports.model = exports.getResponseCorrectness = exports.createDefaultModel = exports.createCorrectResponseSession = void 0;
|
|
8
|
-
var
|
|
8
|
+
var _lodashEs = require("lodash-es");
|
|
9
9
|
var _defaults = _interopRequireDefault(require("./defaults"));
|
|
10
10
|
/*
|
|
11
11
|
* Function to check the correctness of the response
|
|
@@ -58,7 +58,7 @@ const getOutComeScore = (question, env, answers = {}) => {
|
|
|
58
58
|
* @returns {Promise} returns the score
|
|
59
59
|
*/
|
|
60
60
|
const outcome = (model, session, env) => new Promise(resolve => {
|
|
61
|
-
if (!session || (0,
|
|
61
|
+
if (!session || (0, _lodashEs.isEmpty)(session)) {
|
|
62
62
|
resolve({
|
|
63
63
|
score: 0,
|
|
64
64
|
empty: true
|
|
@@ -133,7 +133,7 @@ const model = (question, session, env) => {
|
|
|
133
133
|
session = session || {};
|
|
134
134
|
const model = createDefaultModel(question);
|
|
135
135
|
let correctness, score;
|
|
136
|
-
if ((!session || (0,
|
|
136
|
+
if ((!session || (0, _lodashEs.isEmpty)(session)) && env.mode === 'evaluate') {
|
|
137
137
|
correctness = 'unanswered';
|
|
138
138
|
score = '0%';
|
|
139
139
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_isEmpty","_interopRequireDefault","require","_defaults","getResponseCorrectness","model","answers","env","correct","allowedStudentConfig","partsPerModel","partialFillCheck","response","numeratorCheck","correctResponse","exports","getCorrectness","question","mode","getOutComeScore","correctness","outcome","session","Promise","resolve","isEmpty","score","empty","undefined","completed","correctNumerator","responseNumerator","i","length","value","partialModelCount","forEach","selection","createDefaultModel","defaults","correctInfo","out","view","Object","assign","createCorrectResponseSession","role","maxModelSelected","noOfModel","id","validate","config","errors"],"sources":["../src/index.js"],"sourcesContent":["import isEmpty from 'lodash/isEmpty';\nimport defaults from './defaults';\n\n/*\n * Function to check the correctness of the response\n * @param {model} model contains the model object\n * @param {answers} answers contains the answers object\n * @param {env} env contains the environment object\n * @returns {string} returns the correctness of the response\n * */\nexport const getResponseCorrectness = (model, answers, env = {}) => {\n let correct;\n if (model.allowedStudentConfig) {\n correct = !!(\n answers.partsPerModel === model.partsPerModel &&\n partialFillCheck(answers.response, model.partsPerModel) &&\n numeratorCheck(model.correctResponse, answers.response)\n );\n } else {\n correct = !!(\n partialFillCheck(answers.response, model.partsPerModel) && numeratorCheck(model.correctResponse, answers.response)\n );\n }\n return correct ? 'correct' : 'incorrect';\n};\n\n/*\n * Function to get the correctness of the response\n * @param {question} question contains the question object\n * @param {env} env contains the environment object\n * @param {answers} answers contains the answers object\n * @returns {string} returns the correctness\n * */\nconst getCorrectness = (question, env, answers = {}) => {\n if (env.mode === 'evaluate') {\n return getResponseCorrectness(question, answers, env);\n }\n};\n\n/*\n * Function to get the outcome score\n * @param {question} question contains the question object\n * @param {env} env contains the environment object\n * @param {answers} answers contains the answers object\n * @returns {number} returns the score\n * */\nconst getOutComeScore = (question, env, answers = {}) => {\n const correctness = getCorrectness(question, env, answers);\n return correctness === 'correct' ? 1 : 0;\n};\n\n/*\n * Function to check outcome of the session\n * @param {model} model contains the model object\n * @param {session} session contains the session object\n * @param {env} env contains the environment object\n * @returns {Promise} returns the score\n */\nexport const outcome = (model, session, env) =>\n new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n } else {\n if (env.mode !== 'evaluate') {\n resolve({ score: undefined, completed: undefined });\n } else {\n resolve({ score: getOutComeScore(model, env, session.answers) });\n }\n }\n });\n\n/*\n * Function to check if the numerator of the response matches the numerator of the correct response\n * @param {correctResponse} correctResponse contains the correct response object\n * @param {response} response contains the response object\n * @returns {boolean} returns true if the numerators match\n * */\nconst numeratorCheck = (correctResponse, response) => {\n let correctNumerator = 0;\n let responseNumerator = 0;\n for (let i = 0; i < correctResponse.length; i++) {\n correctNumerator += correctResponse[i].value;\n }\n for (let i = 0; i < response.length; i++) {\n responseNumerator += response[i].value;\n }\n return correctNumerator === responseNumerator;\n};\n\n/*\n * Function to check if the response contains more than one partially-filled model\n * @param {response} response contains the response object\n * @param {partsPerModel} partsPerModel contains the number of parts per model\n * */\nconst partialFillCheck = (response, partsPerModel) => {\n if (response.length > 0) {\n let partialModelCount = 0;\n response.forEach((selection) => {\n if (selection.value !== partsPerModel) {\n partialModelCount++;\n }\n });\n return partialModelCount <= 1;\n } else {\n return false;\n }\n};\n\n/*\n * Function to create a default model\n * @param {model} model contains the model object\n * */\nexport const createDefaultModel = (model = {}) => ({\n ...defaults.model,\n ...model,\n});\n\n/*\n * Return the model object\n * */\nexport const model = (question, session, env) => {\n return new Promise((resolve) => {\n session = session || {};\n const model = createDefaultModel(question);\n let correctness, score;\n if ((!session || isEmpty(session)) && env.mode === 'evaluate') {\n correctness = 'unanswered';\n score = '0%';\n } else {\n correctness = getCorrectness(model, env, session && session.answers);\n score = `${getOutComeScore(model, env, session && session.answers) * 100}%`;\n }\n const correctInfo = {\n score,\n correctness,\n };\n const out = {\n env,\n ...model,\n view: env.mode === 'view' || env.mode === 'evaluate',\n };\n if (env.mode === 'evaluate') {\n Object.assign(out, {\n correctness: correctInfo,\n });\n }\n resolve(out);\n });\n};\n\n/*\n * Function to create a correct response session\n * @param {model} model contains the model object\n * @param {env} env contains the environment object\n * @returns {Promise} returns the correct response session\n * */\nexport const createCorrectResponseSession = (model, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { correctResponse, maxModelSelected, partsPerModel } = model;\n resolve({\n answers: {\n response: correctResponse,\n noOfModel: maxModelSelected,\n partsPerModel,\n },\n id: '1',\n });\n } else {\n resolve(null);\n }\n });\n};\n\n/*\n * Function to validate the model\n * @param {model} model contains the model object\n * @param {config} config contains the config object\n * */\nexport const validate = (model = {}, config = {}) => {\n const errors = {};\n if (model.correctResponse.length === 0) {\n errors.correctResponse = 'To save the item, at least one section must be marked as correct.';\n }\n if (model.correctResponse.length > 0) {\n let partialModelCount = 0;\n model.correctResponse.forEach((selection) => {\n if (selection.value !== model.partsPerModel) {\n partialModelCount++;\n }\n });\n if (partialModelCount > 1) {\n errors.correctResponse = 'The correct answer should include no more than one partially-filled model';\n }\n }\n return errors;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["_lodashEs","require","_defaults","_interopRequireDefault","getResponseCorrectness","model","answers","env","correct","allowedStudentConfig","partsPerModel","partialFillCheck","response","numeratorCheck","correctResponse","exports","getCorrectness","question","mode","getOutComeScore","correctness","outcome","session","Promise","resolve","isEmpty","score","empty","undefined","completed","correctNumerator","responseNumerator","i","length","value","partialModelCount","forEach","selection","createDefaultModel","defaults","correctInfo","out","view","Object","assign","createCorrectResponseSession","role","maxModelSelected","noOfModel","id","validate","config","errors"],"sources":["../src/index.js"],"sourcesContent":["import { isEmpty } from 'lodash-es';\nimport defaults from './defaults';\n\n/*\n * Function to check the correctness of the response\n * @param {model} model contains the model object\n * @param {answers} answers contains the answers object\n * @param {env} env contains the environment object\n * @returns {string} returns the correctness of the response\n * */\nexport const getResponseCorrectness = (model, answers, env = {}) => {\n let correct;\n if (model.allowedStudentConfig) {\n correct = !!(\n answers.partsPerModel === model.partsPerModel &&\n partialFillCheck(answers.response, model.partsPerModel) &&\n numeratorCheck(model.correctResponse, answers.response)\n );\n } else {\n correct = !!(\n partialFillCheck(answers.response, model.partsPerModel) && numeratorCheck(model.correctResponse, answers.response)\n );\n }\n return correct ? 'correct' : 'incorrect';\n};\n\n/*\n * Function to get the correctness of the response\n * @param {question} question contains the question object\n * @param {env} env contains the environment object\n * @param {answers} answers contains the answers object\n * @returns {string} returns the correctness\n * */\nconst getCorrectness = (question, env, answers = {}) => {\n if (env.mode === 'evaluate') {\n return getResponseCorrectness(question, answers, env);\n }\n};\n\n/*\n * Function to get the outcome score\n * @param {question} question contains the question object\n * @param {env} env contains the environment object\n * @param {answers} answers contains the answers object\n * @returns {number} returns the score\n * */\nconst getOutComeScore = (question, env, answers = {}) => {\n const correctness = getCorrectness(question, env, answers);\n return correctness === 'correct' ? 1 : 0;\n};\n\n/*\n * Function to check outcome of the session\n * @param {model} model contains the model object\n * @param {session} session contains the session object\n * @param {env} env contains the environment object\n * @returns {Promise} returns the score\n */\nexport const outcome = (model, session, env) =>\n new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n } else {\n if (env.mode !== 'evaluate') {\n resolve({ score: undefined, completed: undefined });\n } else {\n resolve({ score: getOutComeScore(model, env, session.answers) });\n }\n }\n });\n\n/*\n * Function to check if the numerator of the response matches the numerator of the correct response\n * @param {correctResponse} correctResponse contains the correct response object\n * @param {response} response contains the response object\n * @returns {boolean} returns true if the numerators match\n * */\nconst numeratorCheck = (correctResponse, response) => {\n let correctNumerator = 0;\n let responseNumerator = 0;\n for (let i = 0; i < correctResponse.length; i++) {\n correctNumerator += correctResponse[i].value;\n }\n for (let i = 0; i < response.length; i++) {\n responseNumerator += response[i].value;\n }\n return correctNumerator === responseNumerator;\n};\n\n/*\n * Function to check if the response contains more than one partially-filled model\n * @param {response} response contains the response object\n * @param {partsPerModel} partsPerModel contains the number of parts per model\n * */\nconst partialFillCheck = (response, partsPerModel) => {\n if (response.length > 0) {\n let partialModelCount = 0;\n response.forEach((selection) => {\n if (selection.value !== partsPerModel) {\n partialModelCount++;\n }\n });\n return partialModelCount <= 1;\n } else {\n return false;\n }\n};\n\n/*\n * Function to create a default model\n * @param {model} model contains the model object\n * */\nexport const createDefaultModel = (model = {}) => ({\n ...defaults.model,\n ...model,\n});\n\n/*\n * Return the model object\n * */\nexport const model = (question, session, env) => {\n return new Promise((resolve) => {\n session = session || {};\n const model = createDefaultModel(question);\n let correctness, score;\n if ((!session || isEmpty(session)) && env.mode === 'evaluate') {\n correctness = 'unanswered';\n score = '0%';\n } else {\n correctness = getCorrectness(model, env, session && session.answers);\n score = `${getOutComeScore(model, env, session && session.answers) * 100}%`;\n }\n const correctInfo = {\n score,\n correctness,\n };\n const out = {\n env,\n ...model,\n view: env.mode === 'view' || env.mode === 'evaluate',\n };\n if (env.mode === 'evaluate') {\n Object.assign(out, {\n correctness: correctInfo,\n });\n }\n resolve(out);\n });\n};\n\n/*\n * Function to create a correct response session\n * @param {model} model contains the model object\n * @param {env} env contains the environment object\n * @returns {Promise} returns the correct response session\n * */\nexport const createCorrectResponseSession = (model, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { correctResponse, maxModelSelected, partsPerModel } = model;\n resolve({\n answers: {\n response: correctResponse,\n noOfModel: maxModelSelected,\n partsPerModel,\n },\n id: '1',\n });\n } else {\n resolve(null);\n }\n });\n};\n\n/*\n * Function to validate the model\n * @param {model} model contains the model object\n * @param {config} config contains the config object\n * */\nexport const validate = (model = {}, config = {}) => {\n const errors = {};\n if (model.correctResponse.length === 0) {\n errors.correctResponse = 'To save the item, at least one section must be marked as correct.';\n }\n if (model.correctResponse.length > 0) {\n let partialModelCount = 0;\n model.correctResponse.forEach((selection) => {\n if (selection.value !== model.partsPerModel) {\n partialModelCount++;\n }\n });\n if (partialModelCount > 1) {\n errors.correctResponse = 'The correct answer should include no more than one partially-filled model';\n }\n }\n return errors;\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAC,sBAAA,CAAAF,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMG,sBAAsB,GAAGA,CAACC,KAAK,EAAEC,OAAO,EAAEC,GAAG,GAAG,CAAC,CAAC,KAAK;EAClE,IAAIC,OAAO;EACX,IAAIH,KAAK,CAACI,oBAAoB,EAAE;IAC9BD,OAAO,GAAG,CAAC,EACTF,OAAO,CAACI,aAAa,KAAKL,KAAK,CAACK,aAAa,IAC7CC,gBAAgB,CAACL,OAAO,CAACM,QAAQ,EAAEP,KAAK,CAACK,aAAa,CAAC,IACvDG,cAAc,CAACR,KAAK,CAACS,eAAe,EAAER,OAAO,CAACM,QAAQ,CAAC,CACxD;EACH,CAAC,MAAM;IACLJ,OAAO,GAAG,CAAC,EACTG,gBAAgB,CAACL,OAAO,CAACM,QAAQ,EAAEP,KAAK,CAACK,aAAa,CAAC,IAAIG,cAAc,CAACR,KAAK,CAACS,eAAe,EAAER,OAAO,CAACM,QAAQ,CAAC,CACnH;EACH;EACA,OAAOJ,OAAO,GAAG,SAAS,GAAG,WAAW;AAC1C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AANAO,OAAA,CAAAX,sBAAA,GAAAA,sBAAA;AAOA,MAAMY,cAAc,GAAGA,CAACC,QAAQ,EAAEV,GAAG,EAAED,OAAO,GAAG,CAAC,CAAC,KAAK;EACtD,IAAIC,GAAG,CAACW,IAAI,KAAK,UAAU,EAAE;IAC3B,OAAOd,sBAAsB,CAACa,QAAQ,EAAEX,OAAO,EAAEC,GAAG,CAAC;EACvD;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMY,eAAe,GAAGA,CAACF,QAAQ,EAAEV,GAAG,EAAED,OAAO,GAAG,CAAC,CAAC,KAAK;EACvD,MAAMc,WAAW,GAAGJ,cAAc,CAACC,QAAQ,EAAEV,GAAG,EAAED,OAAO,CAAC;EAC1D,OAAOc,WAAW,KAAK,SAAS,GAAG,CAAC,GAAG,CAAC;AAC1C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,OAAO,GAAGA,CAAChB,KAAK,EAAEiB,OAAO,EAAEf,GAAG,KACzC,IAAIgB,OAAO,CAAEC,OAAO,IAAK;EACvB,IAAI,CAACF,OAAO,IAAI,IAAAG,iBAAO,EAACH,OAAO,CAAC,EAAE;IAChCE,OAAO,CAAC;MAAEE,KAAK,EAAE,CAAC;MAAEC,KAAK,EAAE;IAAK,CAAC,CAAC;EACpC,CAAC,MAAM;IACL,IAAIpB,GAAG,CAACW,IAAI,KAAK,UAAU,EAAE;MAC3BM,OAAO,CAAC;QAAEE,KAAK,EAAEE,SAAS;QAAEC,SAAS,EAAED;MAAU,CAAC,CAAC;IACrD,CAAC,MAAM;MACLJ,OAAO,CAAC;QAAEE,KAAK,EAAEP,eAAe,CAACd,KAAK,EAAEE,GAAG,EAAEe,OAAO,CAAChB,OAAO;MAAE,CAAC,CAAC;IAClE;EACF;AACF,CAAC,CAAC;;AAEJ;AACA;AACA;AACA;AACA;AACA;AALAS,OAAA,CAAAM,OAAA,GAAAA,OAAA;AAMA,MAAMR,cAAc,GAAGA,CAACC,eAAe,EAAEF,QAAQ,KAAK;EACpD,IAAIkB,gBAAgB,GAAG,CAAC;EACxB,IAAIC,iBAAiB,GAAG,CAAC;EACzB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGlB,eAAe,CAACmB,MAAM,EAAED,CAAC,EAAE,EAAE;IAC/CF,gBAAgB,IAAIhB,eAAe,CAACkB,CAAC,CAAC,CAACE,KAAK;EAC9C;EACA,KAAK,IAAIF,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGpB,QAAQ,CAACqB,MAAM,EAAED,CAAC,EAAE,EAAE;IACxCD,iBAAiB,IAAInB,QAAQ,CAACoB,CAAC,CAAC,CAACE,KAAK;EACxC;EACA,OAAOJ,gBAAgB,KAAKC,iBAAiB;AAC/C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAMpB,gBAAgB,GAAGA,CAACC,QAAQ,EAAEF,aAAa,KAAK;EACpD,IAAIE,QAAQ,CAACqB,MAAM,GAAG,CAAC,EAAE;IACvB,IAAIE,iBAAiB,GAAG,CAAC;IACzBvB,QAAQ,CAACwB,OAAO,CAAEC,SAAS,IAAK;MAC9B,IAAIA,SAAS,CAACH,KAAK,KAAKxB,aAAa,EAAE;QACrCyB,iBAAiB,EAAE;MACrB;IACF,CAAC,CAAC;IACF,OAAOA,iBAAiB,IAAI,CAAC;EAC/B,CAAC,MAAM;IACL,OAAO,KAAK;EACd;AACF,CAAC;;AAED;AACA;AACA;AACA;AACO,MAAMG,kBAAkB,GAAGA,CAACjC,KAAK,GAAG,CAAC,CAAC,MAAM;EACjD,GAAGkC,iBAAQ,CAAClC,KAAK;EACjB,GAAGA;AACL,CAAC,CAAC;;AAEF;AACA;AACA;AAFAU,OAAA,CAAAuB,kBAAA,GAAAA,kBAAA;AAGO,MAAMjC,KAAK,GAAGA,CAACY,QAAQ,EAAEK,OAAO,EAAEf,GAAG,KAAK;EAC/C,OAAO,IAAIgB,OAAO,CAAEC,OAAO,IAAK;IAC9BF,OAAO,GAAGA,OAAO,IAAI,CAAC,CAAC;IACvB,MAAMjB,KAAK,GAAGiC,kBAAkB,CAACrB,QAAQ,CAAC;IAC1C,IAAIG,WAAW,EAAEM,KAAK;IACtB,IAAI,CAAC,CAACJ,OAAO,IAAI,IAAAG,iBAAO,EAACH,OAAO,CAAC,KAAKf,GAAG,CAACW,IAAI,KAAK,UAAU,EAAE;MAC7DE,WAAW,GAAG,YAAY;MAC1BM,KAAK,GAAG,IAAI;IACd,CAAC,MAAM;MACLN,WAAW,GAAGJ,cAAc,CAACX,KAAK,EAAEE,GAAG,EAAEe,OAAO,IAAIA,OAAO,CAAChB,OAAO,CAAC;MACpEoB,KAAK,GAAG,GAAGP,eAAe,CAACd,KAAK,EAAEE,GAAG,EAAEe,OAAO,IAAIA,OAAO,CAAChB,OAAO,CAAC,GAAG,GAAG,GAAG;IAC7E;IACA,MAAMkC,WAAW,GAAG;MAClBd,KAAK;MACLN;IACF,CAAC;IACD,MAAMqB,GAAG,GAAG;MACVlC,GAAG;MACH,GAAGF,KAAK;MACRqC,IAAI,EAAEnC,GAAG,CAACW,IAAI,KAAK,MAAM,IAAIX,GAAG,CAACW,IAAI,KAAK;IAC5C,CAAC;IACD,IAAIX,GAAG,CAACW,IAAI,KAAK,UAAU,EAAE;MAC3ByB,MAAM,CAACC,MAAM,CAACH,GAAG,EAAE;QACjBrB,WAAW,EAAEoB;MACf,CAAC,CAAC;IACJ;IACAhB,OAAO,CAACiB,GAAG,CAAC;EACd,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AALA1B,OAAA,CAAAV,KAAA,GAAAA,KAAA;AAMO,MAAMwC,4BAA4B,GAAGA,CAACxC,KAAK,EAAEE,GAAG,KAAK;EAC1D,OAAO,IAAIgB,OAAO,CAAEC,OAAO,IAAK;IAC9B,IAAIjB,GAAG,CAACW,IAAI,KAAK,UAAU,IAAIX,GAAG,CAACuC,IAAI,KAAK,YAAY,EAAE;MACxD,MAAM;QAAEhC,eAAe;QAAEiC,gBAAgB;QAAErC;MAAc,CAAC,GAAGL,KAAK;MAClEmB,OAAO,CAAC;QACNlB,OAAO,EAAE;UACPM,QAAQ,EAAEE,eAAe;UACzBkC,SAAS,EAAED,gBAAgB;UAC3BrC;QACF,CAAC;QACDuC,EAAE,EAAE;MACN,CAAC,CAAC;IACJ,CAAC,MAAM;MACLzB,OAAO,CAAC,IAAI,CAAC;IACf;EACF,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJAT,OAAA,CAAA8B,4BAAA,GAAAA,4BAAA;AAKO,MAAMK,QAAQ,GAAGA,CAAC7C,KAAK,GAAG,CAAC,CAAC,EAAE8C,MAAM,GAAG,CAAC,CAAC,KAAK;EACnD,MAAMC,MAAM,GAAG,CAAC,CAAC;EACjB,IAAI/C,KAAK,CAACS,eAAe,CAACmB,MAAM,KAAK,CAAC,EAAE;IACtCmB,MAAM,CAACtC,eAAe,GAAG,mEAAmE;EAC9F;EACA,IAAIT,KAAK,CAACS,eAAe,CAACmB,MAAM,GAAG,CAAC,EAAE;IACpC,IAAIE,iBAAiB,GAAG,CAAC;IACzB9B,KAAK,CAACS,eAAe,CAACsB,OAAO,CAAEC,SAAS,IAAK;MAC3C,IAAIA,SAAS,CAACH,KAAK,KAAK7B,KAAK,CAACK,aAAa,EAAE;QAC3CyB,iBAAiB,EAAE;MACrB;IACF,CAAC,CAAC;IACF,IAAIA,iBAAiB,GAAG,CAAC,EAAE;MACzBiB,MAAM,CAACtC,eAAe,GAAG,2EAA2E;IACtG;EACF;EACA,OAAOsC,MAAM;AACf,CAAC;AAACrC,OAAA,CAAAmC,QAAA,GAAAA,QAAA","ignoreList":[]}
|
package/controller/package.json
CHANGED
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/fraction-model-controller",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "4.
|
|
4
|
+
"version": "4.1.0-next.0",
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"module": "src/index.js",
|
|
8
8
|
"dependencies": {
|
|
9
|
-
"@pie-lib/text-select": "2.1.1-next.
|
|
9
|
+
"@pie-lib/text-select": "2.1.1-next.1",
|
|
10
10
|
"debug": "^4.1.1",
|
|
11
|
-
"lodash": "^4.17.
|
|
12
|
-
},
|
|
13
|
-
"devDependencies": {
|
|
14
|
-
"lodash": "^4.17.15"
|
|
11
|
+
"lodash-es": "^4.17.23"
|
|
15
12
|
},
|
|
16
13
|
"author": "",
|
|
17
14
|
"license": "ISC"
|
package/lib/index.js
CHANGED
|
@@ -15,7 +15,7 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
15
15
|
var _client = require("react-dom/client");
|
|
16
16
|
var _piePlayerEvents = require("@pie-framework/pie-player-events");
|
|
17
17
|
var _main = _interopRequireDefault(require("./main"));
|
|
18
|
-
var
|
|
18
|
+
var _lodashEs = require("lodash-es");
|
|
19
19
|
var _mathRendering = require("@pie-lib/math-rendering");
|
|
20
20
|
var _fractionModelChart = _interopRequireDefault(require("./fraction-model-chart"));
|
|
21
21
|
// Export FractionModelChart for use in configure
|
|
@@ -66,7 +66,7 @@ class FractionModel extends HTMLElement {
|
|
|
66
66
|
}
|
|
67
67
|
_render() {
|
|
68
68
|
if (this._model && this._session) {
|
|
69
|
-
let model = (0,
|
|
69
|
+
let model = (0, _lodashEs.cloneDeep)(this._model);
|
|
70
70
|
const el = /*#__PURE__*/_react.default.createElement(_main.default, {
|
|
71
71
|
model,
|
|
72
72
|
session: this._session,
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_client","_piePlayerEvents","_main","
|
|
1
|
+
{"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_client","_piePlayerEvents","_main","_lodashEs","_mathRendering","_fractionModelChart","FractionModel","HTMLElement","constructor","_root","model","m","_model","_render","session","s","_session","isSessionComplete","answers","configComplete","allowedStudentConfig","noOfModel","partsPerModel","responseComplete","Array","isArray","response","length","onSessionChange","complete","dispatchEvent","SessionChangedEvent","tagName","toLowerCase","connectedCallback","cloneDeep","el","React","createElement","Main","bind","createRoot","render","queueMicrotask","renderMath","disconnectedCallback","unmount","exports","default"],"sources":["../src/index.js"],"sourcesContent":["import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { SessionChangedEvent } from '@pie-framework/pie-player-events';\nimport Main from './main';\nimport { cloneDeep } from 'lodash-es';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport FractionModelChart from './fraction-model-chart';\n\n// Export FractionModelChart for use in configure\nexport { FractionModelChart };\n\nexport default class FractionModel extends HTMLElement {\n constructor() {\n super();\n this._root = null;\n }\n\n set model(m) {\n this._model = m;\n this._render();\n }\n\n get model() {\n return this._model;\n }\n\n set session(s) {\n this._session = s;\n this._render();\n }\n\n get session() {\n return this._session;\n }\n\n /*\n * Method to check if student answered the question\n * @param {session} session contains the session object\n * @param {model} model contains the model object\n * */\n isSessionComplete(session, model) {\n const answers = session && session.answers;\n const configComplete = model.allowedStudentConfig ? answers.noOfModel > 0 && answers.partsPerModel > 0 : true;\n const responseComplete = Array.isArray(answers.response) && answers.response.length > 0;\n return configComplete && responseComplete;\n }\n\n /*\n * Session change event handler\n * @param {session} session contains the session object\n * */\n onSessionChange(session) {\n this._session.answers = session && session.answers;\n const complete = this.isSessionComplete(this._session, this._model);\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), complete));\n }\n\n connectedCallback() {\n this._render();\n }\n\n _render() {\n if (this._model && this._session) {\n let model = cloneDeep(this._model);\n const el = React.createElement(Main, {\n model,\n session: this._session,\n onSessionChange: this.onSessionChange.bind(this),\n });\n\n if (!this._root) {\n this._root = createRoot(this);\n }\n this._root.render(el);\n queueMicrotask(() => {\n renderMath(this);\n });\n }\n }\n\n disconnectedCallback() {\n if (this._root) {\n this._root.unmount();\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/lib/main.js
CHANGED
|
@@ -14,7 +14,7 @@ var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/correct-answ
|
|
|
14
14
|
var _fractionModelChart = _interopRequireDefault(require("./fraction-model-chart"));
|
|
15
15
|
var _configUi = require("@pie-lib/config-ui");
|
|
16
16
|
var _renderUi = require("@pie-lib/render-ui");
|
|
17
|
-
var
|
|
17
|
+
var _lodashEs = require("lodash-es");
|
|
18
18
|
const ModelPreview = (0, _styles.styled)('div')({
|
|
19
19
|
padding: '16px'
|
|
20
20
|
});
|
|
@@ -55,7 +55,7 @@ class Main extends _react.default.Component {
|
|
|
55
55
|
* @param {object} newAnswers contains updated answer model
|
|
56
56
|
*/
|
|
57
57
|
(0, _defineProperty2.default)(this, "onAnswerChange", newAnswers => {
|
|
58
|
-
let oldSession = (0,
|
|
58
|
+
let oldSession = (0, _lodashEs.cloneDeep)(this.state.session);
|
|
59
59
|
let newSession = {
|
|
60
60
|
...this.state.session,
|
|
61
61
|
answers: newAnswers
|
package/lib/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","names":["_react","_interopRequireDefault","require","_propTypes","_styles","_answerFraction","_correctAnswerToggle","_fractionModelChart","_configUi","_renderUi","_cloneDeep","ModelPreview","styled","padding","TitleContainer","textAlign","fontSize","Main","React","Component","constructor","props","_defineProperty2","default","onSessionChange","state","session","model","answers","response","allowedStudentConfig","noOfModel","partsPerModel","newAnswers","oldSession","cloneDeep","newSession","length","setState","answerChangeDialog","open","text","callOnSessionChange","show","showCorrect","Math","floor","random","generateAnswers","render","prompt","title","correctness","extraCSSRules","language","showCorrectAnswerToggle","fractionModelChartKey","generateRandomKey","createElement","UiLayout","PreviewPrompt","className","tagName","toggled","onToggle","toggleShowCorrect","disabled","view","onAnswerChange","key","value","correctResponse","modelType","modelTypeSelected","noOfModels","maxModelSelected","showLabel","showGraphLabels","onChange","onResponseChange","AlertDialog","onConfirm","onClose","prevState","onConfirmText","onCloseText","exports","PropTypes","object","func","isRequired","_default"],"sources":["../src/main.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport AnswerFraction from './answer-fraction';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport FractionModelChart from './fraction-model-chart';\nimport { AlertDialog } from '@pie-lib/config-ui';\nimport { PreviewPrompt, UiLayout } from '@pie-lib/render-ui';\nimport cloneDeep from 'lodash/cloneDeep';\n\nconst ModelPreview = styled('div')({\n padding: '16px',\n});\n\nconst TitleContainer = styled('div')({\n textAlign: 'center',\n fontSize: '20px',\n});\n\nexport class Main extends React.Component {\n static propTypes = {\n model: PropTypes.object,\n session: PropTypes.object,\n onSessionChange: PropTypes.func.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n session: {\n ...props.session,\n answers: (props.session && props.session.answers) || this.generateAnswers(props.model),\n },\n showCorrect: false,\n answerChangeDialog: {\n open: false,\n text: '',\n },\n };\n this.callOnSessionChange();\n }\n\n /**\n * Function to trigger when session value change for fraction model\n */\n callOnSessionChange = () => {\n const { onSessionChange } = this.props;\n if (onSessionChange) {\n onSessionChange(this.state.session);\n }\n };\n\n /**\n * Function to generate answers for preview selection\n * @param {object} model contains model object for fraction model\n * @returns answer model\n */\n generateAnswers = (model) => {\n const answers = {\n response: [],\n };\n if (model.allowedStudentConfig) {\n (answers.noOfModel = ''), (answers.partsPerModel = '');\n }\n return answers;\n };\n\n /**\n * Function to trigger when answer change from preview\n * @param {object} newAnswers contains updated answer model\n */\n onAnswerChange = (newAnswers) => {\n let oldSession = cloneDeep(this.state.session);\n let newSession = {\n ...this.state.session,\n answers: newAnswers,\n };\n if (newAnswers.response.length > 0) {\n this.setState({\n answerChangeDialog: {\n open: true,\n oldSession: oldSession,\n newSession: newSession,\n text: 'Changing either the Number of Models or Parts per Model will remove added answer. Are you sure you want to continue?',\n },\n });\n } else {\n this.setState(\n (state) => ({\n session: newSession,\n }),\n this.callOnSessionChange,\n );\n }\n };\n\n /*\n * Function to toggle correct answer\n * @param {boolean} show contains boolean value to show correct answer\n * */\n toggleShowCorrect = (show) => {\n this.setState({ showCorrect: show });\n };\n\n /*\n * Function to trigger when response change from preview\n * @param {object} response contains updated response model\n * */\n onResponseChange = (response) => {\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n answers: {\n ...state.session.answers,\n response,\n },\n },\n }),\n this.callOnSessionChange,\n );\n };\n\n /*\n * Method to generate random key\n * */\n generateRandomKey = () => {\n return Math.floor(Math.random() * 10000);\n };\n\n render() {\n const { model } = this.props;\n const { showCorrect, session, answerChangeDialog } = this.state;\n const { prompt, title, correctness = {}, extraCSSRules, language } = model;\n const showCorrectAnswerToggle = correctness.correctness && correctness.correctness !== 'correct';\n const fractionModelChartKey = this.generateRandomKey();\n\n return (\n <UiLayout extraCSSRules={extraCSSRules}>\n <ModelPreview>\n <TitleContainer>\n <PreviewPrompt className=\"prompt\" prompt={title} tagName=\"h3\" />\n </TitleContainer>\n <PreviewPrompt className=\"prompt\" prompt={prompt} tagName=\"p\" />\n\n <CorrectAnswerToggle\n language={language}\n show={showCorrectAnswerToggle}\n toggled={showCorrect}\n onToggle={this.toggleShowCorrect}\n />\n\n <AnswerFraction\n model={model}\n showCorrect={showCorrect}\n disabled={model.view}\n onAnswerChange={this.onAnswerChange}\n answers={session.answers}\n />\n\n <FractionModelChart\n key={fractionModelChartKey}\n disabled={model.view}\n value={showCorrect ? model.correctResponse : session.answers.response}\n modelType={model.modelTypeSelected}\n noOfModels={\n showCorrect\n ? model.maxModelSelected\n : model.allowedStudentConfig\n ? session.answers.noOfModel\n : model.maxModelSelected\n }\n partsPerModel={\n showCorrect\n ? model.partsPerModel\n : model.allowedStudentConfig\n ? session.answers.partsPerModel\n : model.partsPerModel\n }\n showLabel={model.showGraphLabels}\n onChange={this.onResponseChange}\n ></FractionModelChart>\n\n <AlertDialog\n open={answerChangeDialog.open}\n title=\"Warning\"\n text={answerChangeDialog.text}\n onConfirm={() => {\n let newSession = this.state.answerChangeDialog.newSession;\n newSession.answers.response = [];\n this.setState(\n () => ({\n session: newSession,\n answerChangeDialog: { open: false },\n }),\n this.callOnSessionChange,\n );\n }}\n onClose={() => {\n this.setState(\n (prevState) => ({\n session: prevState.answerChangeDialog.oldSession,\n answerChangeDialog: { open: false },\n }),\n this.callOnSessionChange,\n );\n }}\n onConfirmText={'OK'}\n onCloseText={'Cancel'}\n />\n </ModelPreview>\n </UiLayout>\n );\n }\n}\n\nexport default Main;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"main.js","names":["_react","_interopRequireDefault","require","_propTypes","_styles","_answerFraction","_correctAnswerToggle","_fractionModelChart","_configUi","_renderUi","_lodashEs","ModelPreview","styled","padding","TitleContainer","textAlign","fontSize","Main","React","Component","constructor","props","_defineProperty2","default","onSessionChange","state","session","model","answers","response","allowedStudentConfig","noOfModel","partsPerModel","newAnswers","oldSession","cloneDeep","newSession","length","setState","answerChangeDialog","open","text","callOnSessionChange","show","showCorrect","Math","floor","random","generateAnswers","render","prompt","title","correctness","extraCSSRules","language","showCorrectAnswerToggle","fractionModelChartKey","generateRandomKey","createElement","UiLayout","PreviewPrompt","className","tagName","toggled","onToggle","toggleShowCorrect","disabled","view","onAnswerChange","key","value","correctResponse","modelType","modelTypeSelected","noOfModels","maxModelSelected","showLabel","showGraphLabels","onChange","onResponseChange","AlertDialog","onConfirm","onClose","prevState","onConfirmText","onCloseText","exports","PropTypes","object","func","isRequired","_default"],"sources":["../src/main.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport AnswerFraction from './answer-fraction';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport FractionModelChart from './fraction-model-chart';\nimport { AlertDialog } from '@pie-lib/config-ui';\nimport { PreviewPrompt, UiLayout } from '@pie-lib/render-ui';\nimport { cloneDeep } from 'lodash-es';\n\nconst ModelPreview = styled('div')({\n padding: '16px',\n});\n\nconst TitleContainer = styled('div')({\n textAlign: 'center',\n fontSize: '20px',\n});\n\nexport class Main extends React.Component {\n static propTypes = {\n model: PropTypes.object,\n session: PropTypes.object,\n onSessionChange: PropTypes.func.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n session: {\n ...props.session,\n answers: (props.session && props.session.answers) || this.generateAnswers(props.model),\n },\n showCorrect: false,\n answerChangeDialog: {\n open: false,\n text: '',\n },\n };\n this.callOnSessionChange();\n }\n\n /**\n * Function to trigger when session value change for fraction model\n */\n callOnSessionChange = () => {\n const { onSessionChange } = this.props;\n if (onSessionChange) {\n onSessionChange(this.state.session);\n }\n };\n\n /**\n * Function to generate answers for preview selection\n * @param {object} model contains model object for fraction model\n * @returns answer model\n */\n generateAnswers = (model) => {\n const answers = {\n response: [],\n };\n if (model.allowedStudentConfig) {\n (answers.noOfModel = ''), (answers.partsPerModel = '');\n }\n return answers;\n };\n\n /**\n * Function to trigger when answer change from preview\n * @param {object} newAnswers contains updated answer model\n */\n onAnswerChange = (newAnswers) => {\n let oldSession = cloneDeep(this.state.session);\n let newSession = {\n ...this.state.session,\n answers: newAnswers,\n };\n if (newAnswers.response.length > 0) {\n this.setState({\n answerChangeDialog: {\n open: true,\n oldSession: oldSession,\n newSession: newSession,\n text: 'Changing either the Number of Models or Parts per Model will remove added answer. Are you sure you want to continue?',\n },\n });\n } else {\n this.setState(\n (state) => ({\n session: newSession,\n }),\n this.callOnSessionChange,\n );\n }\n };\n\n /*\n * Function to toggle correct answer\n * @param {boolean} show contains boolean value to show correct answer\n * */\n toggleShowCorrect = (show) => {\n this.setState({ showCorrect: show });\n };\n\n /*\n * Function to trigger when response change from preview\n * @param {object} response contains updated response model\n * */\n onResponseChange = (response) => {\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n answers: {\n ...state.session.answers,\n response,\n },\n },\n }),\n this.callOnSessionChange,\n );\n };\n\n /*\n * Method to generate random key\n * */\n generateRandomKey = () => {\n return Math.floor(Math.random() * 10000);\n };\n\n render() {\n const { model } = this.props;\n const { showCorrect, session, answerChangeDialog } = this.state;\n const { prompt, title, correctness = {}, extraCSSRules, language } = model;\n const showCorrectAnswerToggle = correctness.correctness && correctness.correctness !== 'correct';\n const fractionModelChartKey = this.generateRandomKey();\n\n return (\n <UiLayout extraCSSRules={extraCSSRules}>\n <ModelPreview>\n <TitleContainer>\n <PreviewPrompt className=\"prompt\" prompt={title} tagName=\"h3\" />\n </TitleContainer>\n <PreviewPrompt className=\"prompt\" prompt={prompt} tagName=\"p\" />\n\n <CorrectAnswerToggle\n language={language}\n show={showCorrectAnswerToggle}\n toggled={showCorrect}\n onToggle={this.toggleShowCorrect}\n />\n\n <AnswerFraction\n model={model}\n showCorrect={showCorrect}\n disabled={model.view}\n onAnswerChange={this.onAnswerChange}\n answers={session.answers}\n />\n\n <FractionModelChart\n key={fractionModelChartKey}\n disabled={model.view}\n value={showCorrect ? model.correctResponse : session.answers.response}\n modelType={model.modelTypeSelected}\n noOfModels={\n showCorrect\n ? model.maxModelSelected\n : model.allowedStudentConfig\n ? session.answers.noOfModel\n : model.maxModelSelected\n }\n partsPerModel={\n showCorrect\n ? model.partsPerModel\n : model.allowedStudentConfig\n ? session.answers.partsPerModel\n : model.partsPerModel\n }\n showLabel={model.showGraphLabels}\n onChange={this.onResponseChange}\n ></FractionModelChart>\n\n <AlertDialog\n open={answerChangeDialog.open}\n title=\"Warning\"\n text={answerChangeDialog.text}\n onConfirm={() => {\n let newSession = this.state.answerChangeDialog.newSession;\n newSession.answers.response = [];\n this.setState(\n () => ({\n session: newSession,\n answerChangeDialog: { open: false },\n }),\n this.callOnSessionChange,\n );\n }}\n onClose={() => {\n this.setState(\n (prevState) => ({\n session: prevState.answerChangeDialog.oldSession,\n answerChangeDialog: { open: false },\n }),\n this.callOnSessionChange,\n );\n }}\n onConfirmText={'OK'}\n onCloseText={'Cancel'}\n />\n </ModelPreview>\n </UiLayout>\n );\n }\n}\n\nexport default Main;\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/fraction-model",
|
|
3
|
+
"repository": {
|
|
4
|
+
"type": "git",
|
|
5
|
+
"url": "https://github.com/pie-framework/pie-elements"
|
|
6
|
+
},
|
|
3
7
|
"publishConfig": {
|
|
4
8
|
"access": "public"
|
|
5
9
|
},
|
|
6
|
-
"
|
|
7
|
-
"version": "5.0.0-next.43+4249fa78f",
|
|
10
|
+
"version": "5.1.0-next.0+20d879b",
|
|
8
11
|
"description": "",
|
|
9
12
|
"dependencies": {
|
|
10
13
|
"@emotion/react": "^11.14.0",
|
|
@@ -12,11 +15,11 @@
|
|
|
12
15
|
"@mui/icons-material": "^7.3.4",
|
|
13
16
|
"@mui/material": "^7.3.4",
|
|
14
17
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
15
|
-
"@pie-lib/config-ui": "12.1.1-next.
|
|
16
|
-
"@pie-lib/correct-answer-toggle": "3.1.1-next.
|
|
17
|
-
"@pie-lib/math-rendering": "4.1.1-next.
|
|
18
|
-
"@pie-lib/render-ui": "5.1.1-next.
|
|
19
|
-
"@pie-lib/test-utils": "1.1.1-next.
|
|
18
|
+
"@pie-lib/config-ui": "12.1.1-next.3",
|
|
19
|
+
"@pie-lib/correct-answer-toggle": "3.1.1-next.1",
|
|
20
|
+
"@pie-lib/math-rendering": "4.1.1-next.1",
|
|
21
|
+
"@pie-lib/render-ui": "5.1.1-next.1",
|
|
22
|
+
"@pie-lib/test-utils": "1.1.1-next.1",
|
|
20
23
|
"prop-types": "^15.8.1",
|
|
21
24
|
"react": "18.3.1",
|
|
22
25
|
"react-dom": "18.3.1",
|
|
@@ -24,7 +27,7 @@
|
|
|
24
27
|
},
|
|
25
28
|
"author": "",
|
|
26
29
|
"license": "ISC",
|
|
27
|
-
"gitHead": "
|
|
30
|
+
"gitHead": "20d879b8b8fa74decf5028d860d54cd09cbdf051",
|
|
28
31
|
"scripts": {
|
|
29
32
|
"postpublish": "../../scripts/postpublish"
|
|
30
33
|
},
|