@pie-element/fraction-model 2.1.2-next.9 → 2.1.2
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/CHANGELOG.md +11 -0
- package/configure/CHANGELOG.md +11 -0
- package/configure/lib/defaults.js +2 -2
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/main.js +7 -7
- package/configure/lib/main.js.map +1 -1
- package/configure/package.json +3 -6
- package/controller/CHANGELOG.md +11 -0
- package/controller/lib/defaults.js +1 -1
- package/controller/lib/defaults.js.map +1 -1
- package/controller/package.json +2 -2
- package/docs/config-schema.json +1 -1
- package/docs/config-schema.json.md +2 -2
- package/docs/demo/generate.js +1 -1
- package/docs/pie-schema.json +2 -2
- package/docs/pie-schema.json.md +1 -1
- package/lib/answer-fraction.js +14 -1
- package/lib/answer-fraction.js.map +1 -1
- package/lib/fraction-model-chart.js +16 -1
- package/lib/fraction-model-chart.js.map +1 -1
- package/lib/main.js +2 -2
- package/lib/main.js.map +1 -1
- package/package.json +3 -6
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [2.1.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/fraction-model@2.1.1...@pie-element/fraction-model@2.1.2) (2024-10-09)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **fraction-model:** change question property to prompt for TTS issue | SC-32705 ([4087f88](https://github.com/pie-framework/pie-elements/commit/4087f884813c64b83e3190aa447c8b2ac7771a71))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
## [2.1.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/fraction-model@2.1.0...@pie-element/fraction-model@2.1.1) (2024-10-03)
|
|
7
18
|
|
|
8
19
|
|
package/configure/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [2.0.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/fraction-model-configure@2.0.3...@pie-element/fraction-model-configure@2.0.4) (2024-10-09)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **fraction-model:** change question property to prompt for TTS issue | SC-32705 ([4087f88](https://github.com/pie-framework/pie-elements/commit/4087f884813c64b83e3190aa447c8b2ac7771a71))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
## [2.0.3](https://github.com/pie-framework/pie-elements/compare/@pie-element/fraction-model-configure@2.0.2...@pie-element/fraction-model-configure@2.0.3) (2024-10-03)
|
|
7
18
|
|
|
8
19
|
|
|
@@ -8,7 +8,7 @@ var _default = {
|
|
|
8
8
|
model: {
|
|
9
9
|
correctResponse: [],
|
|
10
10
|
title: '',
|
|
11
|
-
|
|
11
|
+
prompt: '',
|
|
12
12
|
modelTypeSelected: 'bar',
|
|
13
13
|
maxModelSelected: 1,
|
|
14
14
|
partsPerModel: 5,
|
|
@@ -43,7 +43,7 @@ var _default = {
|
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
},
|
|
46
|
-
|
|
46
|
+
prompt: {
|
|
47
47
|
label: 'Question',
|
|
48
48
|
settings: true,
|
|
49
49
|
enabled: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/defaults.js"],"names":["model","correctResponse","title","
|
|
1
|
+
{"version":3,"sources":["../src/defaults.js"],"names":["model","correctResponse","title","prompt","modelTypeSelected","maxModelSelected","partsPerModel","allowedStudentConfig","showGraphLabels","configuration","baseInputConfiguration","audio","disabled","video","image","label","settings","enabled","inputConfiguration","modelOptions","maxOfModel","min","max","modelTypeChoices","value","mathMlOptions","mmlOutput","mmlEditing","language","languageChoices","options","spellCheck","settingsPanelDisabled"],"mappings":";;;;;;eAAe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,eAAe,EAAE,EADZ;AAELC,IAAAA,KAAK,EAAE,EAFF;AAGLC,IAAAA,MAAM,EAAE,EAHH;AAILC,IAAAA,iBAAiB,EAAE,KAJd;AAKLC,IAAAA,gBAAgB,EAAE,CALb;AAMLC,IAAAA,aAAa,EAAE,CANV;AAOLC,IAAAA,oBAAoB,EAAE,KAPjB;AAQLC,IAAAA,eAAe,EAAE;AARZ,GADM;AAWbC,EAAAA,aAAa,EAAE;AACbC,IAAAA,sBAAsB,EAAE;AACtBC,MAAAA,KAAK,EAAE;AAAEC,QAAAA,QAAQ,EAAE;AAAZ,OADe;AAEtBC,MAAAA,KAAK,EAAE;AAAED,QAAAA,QAAQ,EAAE;AAAZ,OAFe;AAGtBE,MAAAA,KAAK,EAAE;AAAEF,QAAAA,QAAQ,EAAE;AAAZ;AAHe,KADX;AAMbV,IAAAA,KAAK,EAAE;AACLa,MAAAA,KAAK,EAAE,OADF;AAELC,MAAAA,QAAQ,EAAE,IAFL;AAGLC,MAAAA,OAAO,EAAE,IAHJ;AAILC,MAAAA,kBAAkB,EAAE;AAClBP,QAAAA,KAAK,EAAE;AAAEC,UAAAA,QAAQ,EAAE;AAAZ,SADW;AAElBC,QAAAA,KAAK,EAAE;AAAED,UAAAA,QAAQ,EAAE;AAAZ,SAFW;AAGlBE,QAAAA,KAAK,EAAE;AAAEF,UAAAA,QAAQ,EAAE;AAAZ;AAHW;AAJf,KANM;AAgBbT,IAAAA,MAAM,EAAE;AACNY,MAAAA,KAAK,EAAE,UADD;AAENC,MAAAA,QAAQ,EAAE,IAFJ;AAGNC,MAAAA,OAAO,EAAE,IAHH;AAINC,MAAAA,kBAAkB,EAAE;AAClBP,QAAAA,KAAK,EAAE;AAAEC,UAAAA,QAAQ,EAAE;AAAZ,SADW;AAElBC,QAAAA,KAAK,EAAE;AAAED,UAAAA,QAAQ,EAAE;AAAZ,SAFW;AAGlBE,QAAAA,KAAK,EAAE;AAAEF,UAAAA,QAAQ,EAAE;AAAZ;AAHW;AAJd,KAhBK;AA0BbO,IAAAA,YAAY,EAAE;AACZC,MAAAA,UAAU,EAAE;AACVC,QAAAA,GAAG,EAAE,CADK;AAEVC,QAAAA,GAAG,EAAE,CAFK;AAGV,mBAAS;AAHC,OADA;AAMZhB,MAAAA,aAAa,EAAE;AACbe,QAAAA,GAAG,EAAE,CADQ;AAEbC,QAAAA,GAAG,EAAE,CAFQ;AAGb,mBAAS;AAHI,OANH;AAWZC,MAAAA,gBAAgB,EAAE,CAChB;AAAEC,QAAAA,KAAK,EAAE,KAAT;AAAgBT,QAAAA,KAAK,EAAE;AAAvB,OADgB,EAEhB;AAAES,QAAAA,KAAK,EAAE,KAAT;AAAgBT,QAAAA,KAAK,EAAE;AAAvB,OAFgB;AAXN,KA1BD;AA0CbU,IAAAA,aAAa,EAAE;AACbC,MAAAA,SAAS,EAAE,KADE;AAEbC,MAAAA,UAAU,EAAE;AAFC,KA1CF;AA8CbC,IAAAA,QAAQ,EAAE;AACRZ,MAAAA,QAAQ,EAAE,KADF;AAERD,MAAAA,KAAK,EAAE,kBAFC;AAGRE,MAAAA,OAAO,EAAE;AAHD,KA9CG;AAmDbY,IAAAA,eAAe,EAAE;AACfd,MAAAA,KAAK,EAAE,kBADQ;AAEfe,MAAAA,OAAO,EAAE;AAFM,KAnDJ;AAuDbC,IAAAA,UAAU,EAAE;AACVhB,MAAAA,KAAK,EAAE,YADG;AAEVC,MAAAA,QAAQ,EAAE,KAFA;AAGVC,MAAAA,OAAO,EAAE;AAHC,KAvDC;AA4Dbe,IAAAA,qBAAqB,EAAE;AA5DV;AAXF,C","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 audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\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"],"file":"defaults.js"}
|
package/configure/lib/main.js
CHANGED
|
@@ -149,8 +149,8 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
149
149
|
contentDimensions = _ref$contentDimension === void 0 ? {} : _ref$contentDimension,
|
|
150
150
|
_ref$title = _ref.title,
|
|
151
151
|
title = _ref$title === void 0 ? {} : _ref$title,
|
|
152
|
-
_ref$
|
|
153
|
-
|
|
152
|
+
_ref$prompt = _ref.prompt,
|
|
153
|
+
prompt = _ref$prompt === void 0 ? {} : _ref$prompt,
|
|
154
154
|
_ref$modelOptions = _ref.modelOptions,
|
|
155
155
|
modelOptions = _ref$modelOptions === void 0 ? {} : _ref$modelOptions,
|
|
156
156
|
_ref$mathMlOptions = _ref.mathMlOptions,
|
|
@@ -201,18 +201,18 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
201
201
|
}],
|
|
202
202
|
mathMlOptions: mathMlOptions
|
|
203
203
|
})), /*#__PURE__*/_react["default"].createElement(_configUi.FormSection, {
|
|
204
|
-
label: (
|
|
204
|
+
label: (prompt === null || prompt === void 0 ? void 0 : prompt.label) || 'Question',
|
|
205
205
|
className: classes.label
|
|
206
206
|
}, /*#__PURE__*/_react["default"].createElement(_editableHtml.EditableHtml, {
|
|
207
|
-
markup: model.
|
|
207
|
+
markup: model.prompt || '',
|
|
208
208
|
minHeight: 60,
|
|
209
|
-
onChange: function onChange(
|
|
209
|
+
onChange: function onChange(prompt) {
|
|
210
210
|
return _onChange({
|
|
211
|
-
|
|
211
|
+
prompt: prompt
|
|
212
212
|
});
|
|
213
213
|
},
|
|
214
214
|
toolbarOpts: toolbarOpts,
|
|
215
|
-
pluginProps: getPluginProps(
|
|
215
|
+
pluginProps: getPluginProps(prompt === null || prompt === void 0 ? void 0 : prompt.inputConfiguration),
|
|
216
216
|
spellCheck: spellCheckEnabled,
|
|
217
217
|
uploadSoundSupport: uploadSoundSupport,
|
|
218
218
|
languageCharactersProps: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/main.jsx"],"names":["styles","theme","label","marginBottom","spacing","unit","tooltip","fontSize","typography","whiteSpace","maxWidth","errorText","color","palette","error","main","paddingTop","flexRow","display","alignItems","gap","errorMessage","marginTop","modelError","border","Main","props","correctResponse","model","onChange","oldModel","newModel","showDiag","length","setState","correctAnswerChangeDialog","open","text","Math","floor","random","state","classes","configuration","uploadSoundSupport","baseInputConfiguration","contentDimensions","title","question","modelOptions","mathMlOptions","errors","spellCheckEnabled","toolbarEditorPosition","toolbarOpts","position","getPluginProps","fractionModelChartKey","generateRandomKey","inputConfiguration","language","onModelOptionsChange","marginLeft","modelTypeSelected","maxModelSelected","partsPerModel","showGraphLabels","onCorrectAnswerChange","React","Component","PropTypes","object","isRequired","onConfigurationChanged","func","name"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { FormSection, layout, AlertDialog } from '@pie-lib/pie-toolbox/config-ui';\nimport { EditableHtml } from '@pie-lib/pie-toolbox/editable-html';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport CardBar from './card-bar';\nimport ModelOptions from './model-options';\nimport { FractionModelChart } from '@pie-element/fraction-model';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Info from '@material-ui/icons/Info';\n\nconst styles = (theme) => ({\n label: {\n marginBottom: theme.spacing.unit * 4,\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n flexRow: {\n display: 'flex',\n alignItems: 'center',\n gap: '10px',\n },\n errorMessage: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n marginTop: theme.spacing.unit,\n },\n modelError: {\n border: `2px solid ${theme.palette.error.main}`,\n },\n});\n\nexport class Main extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n uploadSoundSupport: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n correctAnswerChangeDialog: {\n open: false,\n text: '',\n },\n };\n }\n\n /*\n * Method to handle correct answer change\n * @param {array} correctResponse - correct response\n * */\n onCorrectAnswerChange = (correctResponse) => {\n const { model, onChange } = this.props;\n model.correctResponse = correctResponse;\n onChange({ ...model });\n };\n\n /*\n * Method to handle model options change\n * @param {object} oldModel - old model\n * @param {object} newModel - new model\n * @param {boolean} showDiag - show dialog or not\n * */\n onModelOptionsChange = (oldModel, newModel, showDiag) => {\n const { onChange } = this.props;\n if (showDiag && oldModel.correctResponse.length > 0) {\n this.setState({\n correctAnswerChangeDialog: {\n open: true,\n oldModel: oldModel,\n newModel: newModel,\n text: 'Changing either the Number of Models or Parts per Model will remove added correct answer. Are you sure you want to continue?',\n },\n });\n } else {\n onChange({ ...newModel });\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 { classes, model, onChange, configuration, uploadSoundSupport } = this.props;\n const {\n baseInputConfiguration = {},\n contentDimensions = {},\n title = {},\n question = {},\n modelOptions = {},\n mathMlOptions = {},\n } = configuration || {};\n\n const { errors = {}, spellCheckEnabled, toolbarEditorPosition } = model || {};\n\n const { correctAnswerChangeDialog } = this.state;\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n const getPluginProps = (props = {}) => ({\n ...baseInputConfiguration,\n ...props,\n });\n\n const fractionModelChartKey = this.generateRandomKey();\n\n return (\n <layout.ConfigLayout dimensions={contentDimensions} hideSettings={true}>\n <CardBar header=\"Set Up\"></CardBar>\n\n <FormSection label={title?.label || 'Title'} className={classes.label}>\n <EditableHtml\n className={classes.title}\n markup={model.title || ''}\n onChange={(title) => onChange({ title })}\n toolbarOpts={toolbarOpts}\n activePlugins={[\n 'bold',\n 'html',\n 'italic',\n 'underline',\n 'strikethrough',\n 'image',\n 'math',\n 'languageCharacters',\n 'responseArea',\n ]}\n pluginProps={getPluginProps(title?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n </FormSection>\n\n <FormSection label={question?.label || 'Question'} className={classes.label}>\n <EditableHtml\n markup={model.question || ''}\n minHeight={60}\n onChange={(question) => onChange({ question })}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(question?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n </FormSection>\n\n <FormSection>\n <ModelOptions model={model} onChange={this.onModelOptionsChange} modelOptions={modelOptions} />\n </FormSection>\n\n <FormSection>\n <CardBar\n header=\"Correct Answer\"\n info={\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={'The correct answer should include no more than one partially-filled model'}\n >\n <Info fontSize={'small'} color={'primary'} style={{ marginLeft: '8px' }} />\n </Tooltip>\n }\n ></CardBar>\n\n <br />\n <label className={classes.label}>\n Click/touch the number of parts to represent the correct fraction model\n </label>\n <br />\n\n <div className={errors.correctResponse && classes.modelError}>\n <FractionModelChart\n key={fractionModelChartKey}\n value={model.correctResponse}\n modelType={model.modelTypeSelected}\n noOfModels={model.maxModelSelected}\n partsPerModel={model.partsPerModel}\n showLabel={model.showGraphLabels}\n onChange={this.onCorrectAnswerChange}\n ></FractionModelChart>\n </div>\n\n {errors.correctResponse && <div className={classes.errorMessage}>{errors.correctResponse}</div>}\n </FormSection>\n\n <AlertDialog\n open={correctAnswerChangeDialog.open}\n title=\"Warning\"\n text={correctAnswerChangeDialog.text}\n onConfirm={() => {\n let newModel = this.state.correctAnswerChangeDialog.newModel;\n newModel.correctResponse = [];\n onChange({ ...newModel });\n this.setState({\n correctAnswerChangeDialog: { open: false },\n });\n }}\n onClose={() => {\n const oldModel = this.state.correctAnswerChangeDialog.oldModel;\n onChange({ ...oldModel });\n this.setState({ correctAnswerChangeDialog: { open: false } });\n }}\n onConfirmText={'OK'}\n onCloseText={'Cancel'}\n />\n </layout.ConfigLayout>\n );\n }\n}\n\nexport default withStyles(styles, { name: 'Main' })(Main);\n"],"file":"main.js"}
|
|
1
|
+
{"version":3,"sources":["../src/main.jsx"],"names":["styles","theme","label","marginBottom","spacing","unit","tooltip","fontSize","typography","whiteSpace","maxWidth","errorText","color","palette","error","main","paddingTop","flexRow","display","alignItems","gap","errorMessage","marginTop","modelError","border","Main","props","correctResponse","model","onChange","oldModel","newModel","showDiag","length","setState","correctAnswerChangeDialog","open","text","Math","floor","random","state","classes","configuration","uploadSoundSupport","baseInputConfiguration","contentDimensions","title","prompt","modelOptions","mathMlOptions","errors","spellCheckEnabled","toolbarEditorPosition","toolbarOpts","position","getPluginProps","fractionModelChartKey","generateRandomKey","inputConfiguration","language","onModelOptionsChange","marginLeft","modelTypeSelected","maxModelSelected","partsPerModel","showGraphLabels","onCorrectAnswerChange","React","Component","PropTypes","object","isRequired","onConfigurationChanged","func","name"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { FormSection, layout, AlertDialog } from '@pie-lib/pie-toolbox/config-ui';\nimport { EditableHtml } from '@pie-lib/pie-toolbox/editable-html';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport CardBar from './card-bar';\nimport ModelOptions from './model-options';\nimport { FractionModelChart } from '@pie-element/fraction-model';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Info from '@material-ui/icons/Info';\n\nconst styles = (theme) => ({\n label: {\n marginBottom: theme.spacing.unit * 4,\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n flexRow: {\n display: 'flex',\n alignItems: 'center',\n gap: '10px',\n },\n errorMessage: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n marginTop: theme.spacing.unit,\n },\n modelError: {\n border: `2px solid ${theme.palette.error.main}`,\n },\n});\n\nexport class Main extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n uploadSoundSupport: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n correctAnswerChangeDialog: {\n open: false,\n text: '',\n },\n };\n }\n\n /*\n * Method to handle correct answer change\n * @param {array} correctResponse - correct response\n * */\n onCorrectAnswerChange = (correctResponse) => {\n const { model, onChange } = this.props;\n model.correctResponse = correctResponse;\n onChange({ ...model });\n };\n\n /*\n * Method to handle model options change\n * @param {object} oldModel - old model\n * @param {object} newModel - new model\n * @param {boolean} showDiag - show dialog or not\n * */\n onModelOptionsChange = (oldModel, newModel, showDiag) => {\n const { onChange } = this.props;\n if (showDiag && oldModel.correctResponse.length > 0) {\n this.setState({\n correctAnswerChangeDialog: {\n open: true,\n oldModel: oldModel,\n newModel: newModel,\n text: 'Changing either the Number of Models or Parts per Model will remove added correct answer. Are you sure you want to continue?',\n },\n });\n } else {\n onChange({ ...newModel });\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 { classes, model, onChange, configuration, uploadSoundSupport } = this.props;\n const {\n baseInputConfiguration = {},\n contentDimensions = {},\n title = {},\n prompt = {},\n modelOptions = {},\n mathMlOptions = {},\n } = configuration || {};\n\n const { errors = {}, spellCheckEnabled, toolbarEditorPosition } = model || {};\n\n const { correctAnswerChangeDialog } = this.state;\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n const getPluginProps = (props = {}) => ({\n ...baseInputConfiguration,\n ...props,\n });\n\n const fractionModelChartKey = this.generateRandomKey();\n\n return (\n <layout.ConfigLayout dimensions={contentDimensions} hideSettings={true}>\n <CardBar header=\"Set Up\"></CardBar>\n\n <FormSection label={title?.label || 'Title'} className={classes.label}>\n <EditableHtml\n className={classes.title}\n markup={model.title || ''}\n onChange={(title) => onChange({ title })}\n toolbarOpts={toolbarOpts}\n activePlugins={[\n 'bold',\n 'html',\n 'italic',\n 'underline',\n 'strikethrough',\n 'image',\n 'math',\n 'languageCharacters',\n 'responseArea',\n ]}\n pluginProps={getPluginProps(title?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n </FormSection>\n\n <FormSection label={prompt?.label || 'Question'} className={classes.label}>\n <EditableHtml\n markup={model.prompt || ''}\n minHeight={60}\n onChange={(prompt) => onChange({ prompt })}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(prompt?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n </FormSection>\n\n <FormSection>\n <ModelOptions model={model} onChange={this.onModelOptionsChange} modelOptions={modelOptions} />\n </FormSection>\n\n <FormSection>\n <CardBar\n header=\"Correct Answer\"\n info={\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={'The correct answer should include no more than one partially-filled model'}\n >\n <Info fontSize={'small'} color={'primary'} style={{ marginLeft: '8px' }} />\n </Tooltip>\n }\n ></CardBar>\n\n <br />\n <label className={classes.label}>\n Click/touch the number of parts to represent the correct fraction model\n </label>\n <br />\n\n <div className={errors.correctResponse && classes.modelError}>\n <FractionModelChart\n key={fractionModelChartKey}\n value={model.correctResponse}\n modelType={model.modelTypeSelected}\n noOfModels={model.maxModelSelected}\n partsPerModel={model.partsPerModel}\n showLabel={model.showGraphLabels}\n onChange={this.onCorrectAnswerChange}\n ></FractionModelChart>\n </div>\n\n {errors.correctResponse && <div className={classes.errorMessage}>{errors.correctResponse}</div>}\n </FormSection>\n\n <AlertDialog\n open={correctAnswerChangeDialog.open}\n title=\"Warning\"\n text={correctAnswerChangeDialog.text}\n onConfirm={() => {\n let newModel = this.state.correctAnswerChangeDialog.newModel;\n newModel.correctResponse = [];\n onChange({ ...newModel });\n this.setState({\n correctAnswerChangeDialog: { open: false },\n });\n }}\n onClose={() => {\n const oldModel = this.state.correctAnswerChangeDialog.oldModel;\n onChange({ ...oldModel });\n this.setState({ correctAnswerChangeDialog: { open: false } });\n }}\n onConfirmText={'OK'}\n onCloseText={'Cancel'}\n />\n </layout.ConfigLayout>\n );\n }\n}\n\nexport default withStyles(styles, { name: 'Main' })(Main);\n"],"file":"main.js"}
|
package/configure/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/fraction-model-configure",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "2.0.
|
|
4
|
+
"version": "2.0.4",
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"module": "src/index.js",
|
|
8
8
|
"dependencies": {
|
|
9
9
|
"@material-ui/core": "^3.9.2",
|
|
10
10
|
"@pie-framework/pie-configure-events": "^1.3.0",
|
|
11
|
-
"@pie-lib/pie-toolbox": "2.0.
|
|
11
|
+
"@pie-lib/pie-toolbox": "2.0.10",
|
|
12
12
|
"debug": "^3.1.0",
|
|
13
13
|
"lodash": "^4.17.15",
|
|
14
14
|
"prop-types": "^15.6.2",
|
|
@@ -16,8 +16,5 @@
|
|
|
16
16
|
"react-dom": "^16.8.1"
|
|
17
17
|
},
|
|
18
18
|
"author": "",
|
|
19
|
-
"license": "ISC"
|
|
20
|
-
"resolutions": {
|
|
21
|
-
"complex.js": "2.1.1"
|
|
22
|
-
}
|
|
19
|
+
"license": "ISC"
|
|
23
20
|
}
|
package/controller/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [2.0.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/fraction-model-controller@2.0.3...@pie-element/fraction-model-controller@2.0.4) (2024-10-09)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **fraction-model:** change question property to prompt for TTS issue | SC-32705 ([4087f88](https://github.com/pie-framework/pie-elements/commit/4087f884813c64b83e3190aa447c8b2ac7771a71))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
## [2.0.3](https://github.com/pie-framework/pie-elements/compare/@pie-element/fraction-model-controller@2.0.2...@pie-element/fraction-model-controller@2.0.3) (2024-10-03)
|
|
7
18
|
|
|
8
19
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/defaults.js"],"names":["model","correctResponse","title","
|
|
1
|
+
{"version":3,"sources":["../src/defaults.js"],"names":["model","correctResponse","title","prompt","modelTypeSelected","maxModelSelected","partsPerModel","allowedStudentConfig","showGraphLabels"],"mappings":";;;;;;AAAA;eACe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,eAAe,EAAE,EADZ;AAELC,IAAAA,KAAK,EAAE,EAFF;AAGLC,IAAAA,MAAM,EAAE,EAHH;AAILC,IAAAA,iBAAiB,EAAE,KAJd;AAKLC,IAAAA,gBAAgB,EAAE,CALb;AAMLC,IAAAA,aAAa,EAAE,CANV;AAOLC,IAAAA,oBAAoB,EAAE,KAPjB;AAQLC,IAAAA,eAAe,EAAE;AARZ;AADM,C","sourcesContent":["// Should be exactly the same as configure/defaults.js\nexport 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};\n"],"file":"defaults.js"}
|
package/controller/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/fraction-model-controller",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "2.0.
|
|
4
|
+
"version": "2.0.4",
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"module": "src/index.js",
|
|
8
8
|
"dependencies": {
|
|
9
|
-
"@pie-lib/pie-toolbox": "2.0.
|
|
9
|
+
"@pie-lib/pie-toolbox": "2.0.10",
|
|
10
10
|
"debug": "^3.1.0",
|
|
11
11
|
"lodash": "^4.17.15"
|
|
12
12
|
},
|
package/docs/config-schema.json
CHANGED
|
@@ -384,9 +384,9 @@ Indicates if the item has to be displayed in the Settings Panel
|
|
|
384
384
|
|
|
385
385
|
Indicates the label for the item that has to be displayed in the Settings Panel
|
|
386
386
|
|
|
387
|
-
# `
|
|
387
|
+
# `prompt` (object)
|
|
388
388
|
|
|
389
|
-
Properties of the `
|
|
389
|
+
Properties of the `prompt` object:
|
|
390
390
|
|
|
391
391
|
## `inputConfiguration` (object)
|
|
392
392
|
|
package/docs/demo/generate.js
CHANGED
package/docs/pie-schema.json
CHANGED
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"type": "string",
|
|
34
34
|
"title": "title"
|
|
35
35
|
},
|
|
36
|
-
"
|
|
36
|
+
"prompt": {
|
|
37
37
|
"description": "The question prompt or item stem",
|
|
38
38
|
"type": "string",
|
|
39
39
|
"title": "question"
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
"correctResponse",
|
|
93
93
|
"element",
|
|
94
94
|
"id",
|
|
95
|
-
"
|
|
95
|
+
"prompt",
|
|
96
96
|
"title"
|
|
97
97
|
],
|
|
98
98
|
"definitions": {
|
package/docs/pie-schema.json.md
CHANGED
package/lib/answer-fraction.js
CHANGED
|
@@ -54,13 +54,26 @@ var AnswerFraction = /*#__PURE__*/function (_React$Component) {
|
|
|
54
54
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
55
55
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onValueChange", function (key) {
|
|
56
56
|
return function (event) {
|
|
57
|
+
var _event$target;
|
|
58
|
+
|
|
59
|
+
var value = parseInt(event === null || event === void 0 ? void 0 : (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.value);
|
|
57
60
|
var _this$props = _this.props,
|
|
61
|
+
model = _this$props.model,
|
|
58
62
|
onAnswerChange = _this$props.onAnswerChange,
|
|
59
63
|
answers = _this$props.answers;
|
|
60
64
|
|
|
61
65
|
var newAnswers = _objectSpread({}, answers);
|
|
62
66
|
|
|
63
|
-
|
|
67
|
+
var min = 1;
|
|
68
|
+
var max = key === 'noOfModel' ? model.maxModelSelected : 9;
|
|
69
|
+
|
|
70
|
+
if (value > max) {
|
|
71
|
+
value = max;
|
|
72
|
+
} else if (value < min) {
|
|
73
|
+
value = min;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
newAnswers[key] = value;
|
|
64
77
|
onAnswerChange(newAnswers);
|
|
65
78
|
};
|
|
66
79
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/answer-fraction.jsx"],"names":["AnswerFraction","key","event","props","onAnswerChange","answers","newAnswers","
|
|
1
|
+
{"version":3,"sources":["../src/answer-fraction.jsx"],"names":["AnswerFraction","key","event","value","parseInt","target","props","model","onAnswerChange","answers","newAnswers","min","max","maxModelSelected","classes","showCorrect","disabled","allowedStudentConfig","groupInline","group","inputLabel","textField","onValueChange","noOfModel","partsPerModel","React","Component","PropTypes","object","isRequired","bool","func","styles","alignItems","display","gap","margin","marginBottom","width","maxHeight","height","fontSize"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { TextField } from '@material-ui/core';\n\nexport class AnswerFraction extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n disabled: PropTypes.bool.isRequired,\n showCorrect: PropTypes.bool.isRequired,\n onAnswerChange: PropTypes.func.isRequired,\n answers: PropTypes.object.isRequired,\n };\n\n /**\n * Function to trigger when value change from number selection\n * @param {string} key contains event change object\n * @returns updated answer change object\n */\n onValueChange = (key) => (event) => {\n let value = parseInt(event?.target?.value);\n const { model, onAnswerChange, answers } = this.props;\n const newAnswers = { ...answers };\n const min = 1;\n const max = (key === 'noOfModel') ? model.maxModelSelected : 9;\n if(value > max) {\n value = max;\n } else if(value < min) {\n value = min;\n }\n newAnswers[key] = value;\n onAnswerChange(newAnswers);\n };\n\n render() {\n const { model, classes, showCorrect, answers, disabled } = this.props;\n\n return (\n <div>\n {model.allowedStudentConfig && (\n <div className={classes.groupInline}>\n <div className={classes.group}>\n <label htmlFor={'preview_number-of-models'} className={classes.inputLabel}>\n Number of Models\n </label>\n <TextField\n className={classes.textField}\n id=\"preview_number-of-models\"\n inputProps={{ min: 1, max: model.maxModelSelected }}\n name=\"preview_number-of-models\"\n onChange={this.onValueChange('noOfModel')}\n type=\"number\"\n variant=\"outlined\"\n disabled={disabled}\n value={showCorrect ? model.maxModelSelected : answers.noOfModel}\n />\n </div>\n <div className={classes.group}>\n <label htmlFor={'preview_parts-per-model'} className={classes.inputLabel}>\n Parts per Model\n </label>\n <TextField\n className={classes.textField}\n id=\"preview_parts-per-model\"\n inputProps={{ min: 1, max: 9 }}\n name=\"preview_parts-per-model\"\n onChange={this.onValueChange('partsPerModel')}\n type=\"number\"\n variant=\"outlined\"\n disabled={disabled}\n value={showCorrect ? model.partsPerModel : answers.partsPerModel}\n />\n </div>\n </div>\n )}\n </div>\n );\n }\n}\n\nconst styles = () => ({\n groupInline: {\n alignItems: 'center',\n display: 'flex',\n gap: '20px',\n },\n group: {\n margin: '12px 0',\n },\n inputLabel: {\n display: 'block',\n marginBottom: '4px',\n },\n textField: {\n width: '120px',\n maxHeight: '40px',\n '& [class^=\"MuiInputBase-root\"]': {\n height: 40,\n fontSize: '14px',\n },\n },\n});\n\nexport default withStyles(styles)(AnswerFraction);\n"],"file":"answer-fraction.js"}
|
|
@@ -270,11 +270,12 @@ var FractionModelChart = function FractionModelChart(props) {
|
|
|
270
270
|
className: classes.barChartParentDiv
|
|
271
271
|
}, barItems);
|
|
272
272
|
};
|
|
273
|
+
|
|
274
|
+
var pieChartRef = (0, _react.useRef)(null);
|
|
273
275
|
/*
|
|
274
276
|
* Function to create and return pie fraction model
|
|
275
277
|
* */
|
|
276
278
|
|
|
277
|
-
|
|
278
279
|
var getPieFractionModel = function getPieFractionModel() {
|
|
279
280
|
var parentData = []; // Generate data for pie chart
|
|
280
281
|
|
|
@@ -325,6 +326,7 @@ var FractionModelChart = function FractionModelChart(props) {
|
|
|
325
326
|
}))));
|
|
326
327
|
});
|
|
327
328
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
329
|
+
ref: pieChartRef,
|
|
328
330
|
className: classes.pieChartParentDiv
|
|
329
331
|
}, pieItems);
|
|
330
332
|
}; //Render bar or pie models as per model type
|
|
@@ -333,6 +335,19 @@ var FractionModelChart = function FractionModelChart(props) {
|
|
|
333
335
|
if (modelType === 'bar') {
|
|
334
336
|
return getBarFractionModel();
|
|
335
337
|
} else if (modelType === 'pie') {
|
|
338
|
+
//Remove the last sector line of pie chart if parts per model is 1
|
|
339
|
+
(0, _react.useEffect)(function () {
|
|
340
|
+
if (pieChartRef !== null && pieChartRef !== void 0 && pieChartRef.current && partsPerModel === 1) {
|
|
341
|
+
var paths = pieChartRef.current.querySelectorAll('path');
|
|
342
|
+
|
|
343
|
+
if (paths.length > 0) {
|
|
344
|
+
paths.forEach(function (path) {
|
|
345
|
+
var d = path.getAttribute('d');
|
|
346
|
+
path.setAttribute('d', d.replaceAll('L 100,100', ''));
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
}, []);
|
|
336
351
|
return getPieFractionModel();
|
|
337
352
|
}
|
|
338
353
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/fraction-model-chart.js"],"names":["styles","theme","pieChartParentDiv","display","gridTemplateColumns","gap","padding","barChartParentDiv","sectorOutline","outline","FractionModelChart","props","handleChartClick","chartIndex","sectorIndex","parseInt","existingIndex","clickedIndexArray","findIndex","item","id","newClickedIndexArray","currentItem","value","filter","_","index","slice","onChange","setClickedIndexArray","handleChartMouseEnter","setHoveredIndex","handleChartMouseLeave","getSectorFill","hoveredIndex","selection","split","map","Number","selectionId","selectionValue","clickedItem","find","hoveredId","hoveredValue","renderCustomizedLabelForPie","cx","cy","midAngle","outerRadius","RADIAN","Math","PI","radius","x","cos","y","sin","toFixed","barWithBorder","fill","width","height","classes","modelType","noOfModels","partsPerModel","showLabel","disabled","getBarFractionModel","parentData","i","data","name","j","push","barItems","forEach","Object","keys","key","getPieFractionModel","Array","from","length","pieItems","entry"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport { Bar, BarChart, Cell, LabelList, Pie, PieChart, YAxis } from 'recharts';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = (theme) => ({\n pieChartParentDiv: {\n display: 'grid',\n gridTemplateColumns: '200px 200px 200px',\n gap: '10px',\n padding: '5px 0',\n },\n barChartParentDiv: {\n display: 'grid',\n gridTemplateColumns: '200px 200px 200px',\n gap: '20px',\n padding: '10px 0',\n },\n sectorOutline: {\n outline: 'none',\n },\n});\n\nconst FractionModelChart = (props) => {\n /*\n * Function to handle click event on chart\n * @param chartIndex: index of the chart\n * @param sectorIndex: index of the sector\n * */\n const handleChartClick = (chartIndex, sectorIndex) => {\n if (typeof sectorIndex === 'string') {\n sectorIndex = parseInt(sectorIndex);\n }\n const existingIndex = clickedIndexArray.findIndex((item) => item.id === chartIndex);\n let newClickedIndexArray;\n if (existingIndex >= 0) {\n const currentItem = clickedIndexArray[existingIndex];\n if (currentItem.value === sectorIndex) {\n newClickedIndexArray = clickedIndexArray.filter((_, index) => index !== existingIndex);\n } else {\n newClickedIndexArray = [\n ...clickedIndexArray.slice(0, existingIndex),\n { id: chartIndex, value: sectorIndex },\n ...clickedIndexArray.slice(existingIndex + 1),\n ];\n }\n } else {\n newClickedIndexArray = [...clickedIndexArray, { id: chartIndex, value: sectorIndex }];\n }\n onChange(newClickedIndexArray);\n setClickedIndexArray(newClickedIndexArray);\n };\n\n /*\n * Function to handle mouse enter event on chart\n * @param chartIndex: index of the chart\n * @param sectorIndex: index of the sector\n * */\n const handleChartMouseEnter = (chartIndex, sectorIndex) => {\n setHoveredIndex(chartIndex + '-' + sectorIndex);\n };\n\n /*\n * Function to handle mouse leave event on chart\n * @param chartIndex: index of the chart\n * @param sectorIndex: index of the sector\n * */\n const handleChartMouseLeave = (chartIndex, sectorIndex) => {\n setHoveredIndex(null);\n };\n\n /*\n * Function to get fill color for sector\n * @param hoveredIndex: hovered index\n * @param selection: selected index\n * */\n const getSectorFill = (hoveredIndex, selection) => {\n const [selectionId, selectionValue] = selection.split('-').map(Number);\n // Check for a matching clicked item\n const clickedItem = clickedIndexArray.find((item) => item.id === selectionId);\n if (clickedItem && selectionValue <= clickedItem.value) {\n return 'rgb(60, 73, 150, 0.6)';\n }\n // Check for a matching hovered index\n if (hoveredIndex) {\n const [hoveredId, hoveredValue] = hoveredIndex.split('-').map(Number);\n if (hoveredId === selectionId && hoveredValue >= selectionValue) {\n return 'rgb(0, 0, 0, 0.25)';\n }\n }\n return '#FFFFFF';\n };\n\n /*\n * Function to render label for pie chart\n * @param props: properties of the label\n * */\n const renderCustomizedLabelForPie = (props) => {\n const { cx, cy, midAngle, outerRadius, index } = props;\n const RADIAN = Math.PI / 180;\n // const radius = outerRadius * 0.5; //If you want to show label inside the pie\n const radius = outerRadius * 1.13;\n const x = cx + radius * Math.cos(-midAngle * RADIAN);\n const y = cy + radius * Math.sin(-midAngle * RADIAN);\n return (\n <text x={x} y={y} fill=\"#000000\" textAnchor={x > cx ? 'start' : 'end'} dominantBaseline=\"central\">\n {`${(index + 1).toFixed(0)}`}\n </text>\n );\n };\n\n /*\n * Function to create and return component for bar chart\n * */\n const barWithBorder = () => {\n return (props) => {\n const { fill, x, y, width, height } = props;\n return (\n <g>\n <rect x={x} y={y} width={width} height={height} stroke={'#000000'} fill={fill} />\n </g>\n );\n };\n };\n\n const {\n classes,\n value = [],\n modelType = 'bar',\n noOfModels = 0,\n partsPerModel = 0,\n showLabel = false,\n disabled = false,\n onChange,\n } = props;\n const [hoveredIndex, setHoveredIndex] = useState(null);\n const [clickedIndexArray, setClickedIndexArray] = useState(value);\n\n /*\n * Function to create and return bar fraction model\n * */\n const getBarFractionModel = () => {\n const parentData = [];\n // Generate data for bar chart\n for (let i = 1; i < noOfModels + 1; i++) {\n const data = [{ name: i }];\n for (let j = 1; j < partsPerModel + 1; j++) {\n data[0][`${j}`] = 1;\n }\n parentData.push(data);\n }\n let barItems = [];\n parentData.forEach((data, chartIndex) => {\n barItems.push(\n <BarChart width={200} height={30 * partsPerModel} data={data} key={`bar-chart-${chartIndex + 1}`}>\n <YAxis hide={true} type=\"number\" domain={[0, partsPerModel]} />\n {Object.keys(data[0]).map((key, index) => {\n if (key !== 'name') {\n return (\n <Bar\n dataKey={key}\n stackId=\"a\"\n key={`bar-${chartIndex + 1}-${index + 1}`}\n onClick={disabled ? null : () => handleChartClick(chartIndex + 1, key)}\n onMouseEnter={disabled ? null : () => handleChartMouseEnter(chartIndex + 1, key)}\n onMouseLeave={disabled ? null : () => handleChartMouseLeave(chartIndex + 1, key)}\n shape={barWithBorder()}\n isAnimationActive={false}\n fill={getSectorFill(hoveredIndex, `${chartIndex + 1}-${key}`)}\n >\n {showLabel && <LabelList position=\"left\" fill=\"#000000\" />}\n </Bar>\n );\n }\n })}\n </BarChart>,\n );\n });\n return <div className={classes.barChartParentDiv}>{barItems}</div>;\n };\n\n /*\n * Function to create and return pie fraction model\n * */\n const getPieFractionModel = () => {\n const parentData = [];\n // Generate data for pie chart\n for (let i = 1; i < noOfModels + 1; i++) {\n const data = Array.from({ length: partsPerModel }, (_, index) => ({\n name: `${index + 1}`,\n value: 1,\n }));\n parentData.push(data);\n }\n let pieItems = [];\n parentData.forEach((data, chartIndex) => {\n pieItems.push(\n <PieChart width={200} height={200} key={`pie-chart-${chartIndex}`}>\n <Pie\n data={data}\n key={`pie-${chartIndex + 1}`}\n fill=\"#FFFFFF\"\n stroke=\"#000000\"\n dataKey=\"value\"\n startAngle={90}\n endAngle={-270}\n isAnimationActive={false}\n labelLine={false}\n label={showLabel && renderCustomizedLabelForPie}\n >\n {data.map((entry, sectorIndex) => (\n <Cell\n className={classes.sectorOutline}\n key={`${chartIndex + 1}-${sectorIndex + 1}`}\n onClick={disabled ? null : () => handleChartClick(chartIndex + 1, sectorIndex + 1)}\n onMouseEnter={disabled ? null : () => handleChartMouseEnter(chartIndex + 1, sectorIndex + 1)}\n onMouseLeave={disabled ? null : () => handleChartMouseLeave(chartIndex + 1, sectorIndex + 1)}\n fill={getSectorFill(hoveredIndex, `${chartIndex + 1}-${sectorIndex + 1}`)}\n />\n ))}\n </Pie>\n </PieChart>,\n );\n });\n return <div className={classes.pieChartParentDiv}>{pieItems}</div>;\n };\n\n //Render bar or pie models as per model type\n if (modelType === 'bar') {\n return getBarFractionModel();\n } else if (modelType === 'pie') {\n return getPieFractionModel();\n }\n};\n\nexport default withStyles(styles)(FractionModelChart);\n"],"file":"fraction-model-chart.js"}
|
|
1
|
+
{"version":3,"sources":["../src/fraction-model-chart.js"],"names":["styles","theme","pieChartParentDiv","display","gridTemplateColumns","gap","padding","barChartParentDiv","sectorOutline","outline","FractionModelChart","props","handleChartClick","chartIndex","sectorIndex","parseInt","existingIndex","clickedIndexArray","findIndex","item","id","newClickedIndexArray","currentItem","value","filter","_","index","slice","onChange","setClickedIndexArray","handleChartMouseEnter","setHoveredIndex","handleChartMouseLeave","getSectorFill","hoveredIndex","selection","split","map","Number","selectionId","selectionValue","clickedItem","find","hoveredId","hoveredValue","renderCustomizedLabelForPie","cx","cy","midAngle","outerRadius","RADIAN","Math","PI","radius","x","cos","y","sin","toFixed","barWithBorder","fill","width","height","classes","modelType","noOfModels","partsPerModel","showLabel","disabled","getBarFractionModel","parentData","i","data","name","j","push","barItems","forEach","Object","keys","key","pieChartRef","getPieFractionModel","Array","from","length","pieItems","entry","current","paths","querySelectorAll","path","d","getAttribute","setAttribute","replaceAll"],"mappings":"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","sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\nimport { Bar, BarChart, Cell, LabelList, Pie, PieChart, YAxis } from 'recharts';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = (theme) => ({\n pieChartParentDiv: {\n display: 'grid',\n gridTemplateColumns: '200px 200px 200px',\n gap: '10px',\n padding: '5px 0',\n },\n barChartParentDiv: {\n display: 'grid',\n gridTemplateColumns: '200px 200px 200px',\n gap: '20px',\n padding: '10px 0',\n },\n sectorOutline: {\n outline: 'none',\n },\n});\n\nconst FractionModelChart = (props) => {\n /*\n * Function to handle click event on chart\n * @param chartIndex: index of the chart\n * @param sectorIndex: index of the sector\n * */\n const handleChartClick = (chartIndex, sectorIndex) => {\n if (typeof sectorIndex === 'string') {\n sectorIndex = parseInt(sectorIndex);\n }\n const existingIndex = clickedIndexArray.findIndex((item) => item.id === chartIndex);\n let newClickedIndexArray;\n if (existingIndex >= 0) {\n const currentItem = clickedIndexArray[existingIndex];\n if (currentItem.value === sectorIndex) {\n newClickedIndexArray = clickedIndexArray.filter((_, index) => index !== existingIndex);\n } else {\n newClickedIndexArray = [\n ...clickedIndexArray.slice(0, existingIndex),\n { id: chartIndex, value: sectorIndex },\n ...clickedIndexArray.slice(existingIndex + 1),\n ];\n }\n } else {\n newClickedIndexArray = [...clickedIndexArray, { id: chartIndex, value: sectorIndex }];\n }\n onChange(newClickedIndexArray);\n setClickedIndexArray(newClickedIndexArray);\n };\n\n /*\n * Function to handle mouse enter event on chart\n * @param chartIndex: index of the chart\n * @param sectorIndex: index of the sector\n * */\n const handleChartMouseEnter = (chartIndex, sectorIndex) => {\n setHoveredIndex(chartIndex + '-' + sectorIndex);\n };\n\n /*\n * Function to handle mouse leave event on chart\n * @param chartIndex: index of the chart\n * @param sectorIndex: index of the sector\n * */\n const handleChartMouseLeave = (chartIndex, sectorIndex) => {\n setHoveredIndex(null);\n };\n\n /*\n * Function to get fill color for sector\n * @param hoveredIndex: hovered index\n * @param selection: selected index\n * */\n const getSectorFill = (hoveredIndex, selection) => {\n const [selectionId, selectionValue] = selection.split('-').map(Number);\n // Check for a matching clicked item\n const clickedItem = clickedIndexArray.find((item) => item.id === selectionId);\n if (clickedItem && selectionValue <= clickedItem.value) {\n return 'rgb(60, 73, 150, 0.6)';\n }\n // Check for a matching hovered index\n if (hoveredIndex) {\n const [hoveredId, hoveredValue] = hoveredIndex.split('-').map(Number);\n if (hoveredId === selectionId && hoveredValue >= selectionValue) {\n return 'rgb(0, 0, 0, 0.25)';\n }\n }\n return '#FFFFFF';\n };\n\n /*\n * Function to render label for pie chart\n * @param props: properties of the label\n * */\n const renderCustomizedLabelForPie = (props) => {\n const { cx, cy, midAngle, outerRadius, index } = props;\n const RADIAN = Math.PI / 180;\n // const radius = outerRadius * 0.5; //If you want to show label inside the pie\n const radius = outerRadius * 1.13;\n const x = cx + radius * Math.cos(-midAngle * RADIAN);\n const y = cy + radius * Math.sin(-midAngle * RADIAN);\n return (\n <text x={x} y={y} fill=\"#000000\" textAnchor={x > cx ? 'start' : 'end'} dominantBaseline=\"central\">\n {`${(index + 1).toFixed(0)}`}\n </text>\n );\n };\n\n /*\n * Function to create and return component for bar chart\n * */\n const barWithBorder = () => {\n return (props) => {\n const { fill, x, y, width, height } = props;\n return (\n <g>\n <rect x={x} y={y} width={width} height={height} stroke={'#000000'} fill={fill} />\n </g>\n );\n };\n };\n\n const {\n classes,\n value = [],\n modelType = 'bar',\n noOfModels = 0,\n partsPerModel = 0,\n showLabel = false,\n disabled = false,\n onChange,\n } = props;\n const [hoveredIndex, setHoveredIndex] = useState(null);\n const [clickedIndexArray, setClickedIndexArray] = useState(value);\n\n /*\n * Function to create and return bar fraction model\n * */\n const getBarFractionModel = () => {\n const parentData = [];\n // Generate data for bar chart\n for (let i = 1; i < noOfModels + 1; i++) {\n const data = [{ name: i }];\n for (let j = 1; j < partsPerModel + 1; j++) {\n data[0][`${j}`] = 1;\n }\n parentData.push(data);\n }\n let barItems = [];\n parentData.forEach((data, chartIndex) => {\n barItems.push(\n <BarChart width={200} height={30 * partsPerModel} data={data} key={`bar-chart-${chartIndex + 1}`}>\n <YAxis hide={true} type=\"number\" domain={[0, partsPerModel]} />\n {Object.keys(data[0]).map((key, index) => {\n if (key !== 'name') {\n return (\n <Bar\n dataKey={key}\n stackId=\"a\"\n key={`bar-${chartIndex + 1}-${index + 1}`}\n onClick={disabled ? null : () => handleChartClick(chartIndex + 1, key)}\n onMouseEnter={disabled ? null : () => handleChartMouseEnter(chartIndex + 1, key)}\n onMouseLeave={disabled ? null : () => handleChartMouseLeave(chartIndex + 1, key)}\n shape={barWithBorder()}\n isAnimationActive={false}\n fill={getSectorFill(hoveredIndex, `${chartIndex + 1}-${key}`)}\n >\n {showLabel && <LabelList position=\"left\" fill=\"#000000\" />}\n </Bar>\n );\n }\n })}\n </BarChart>,\n );\n });\n return <div className={classes.barChartParentDiv}>{barItems}</div>;\n };\n\n const pieChartRef = useRef(null);\n \n /*\n * Function to create and return pie fraction model\n * */\n const getPieFractionModel = () => {\n const parentData = [];\n // Generate data for pie chart\n for (let i = 1; i < noOfModels + 1; i++) {\n const data = Array.from({ length: partsPerModel }, (_, index) => ({\n name: `${index + 1}`,\n value: 1,\n }));\n parentData.push(data);\n }\n let pieItems = [];\n parentData.forEach((data, chartIndex) => {\n pieItems.push(\n <PieChart width={200} height={200} key={`pie-chart-${chartIndex}`}>\n <Pie\n data={data}\n key={`pie-${chartIndex + 1}`}\n fill=\"#FFFFFF\"\n stroke=\"#000000\"\n dataKey=\"value\"\n startAngle={90}\n endAngle={-270}\n isAnimationActive={false}\n labelLine={false}\n label={showLabel && renderCustomizedLabelForPie}\n >\n {data.map((entry, sectorIndex) => (\n <Cell\n className={classes.sectorOutline}\n key={`${chartIndex + 1}-${sectorIndex + 1}`}\n onClick={disabled ? null : () => handleChartClick(chartIndex + 1, sectorIndex + 1)}\n onMouseEnter={disabled ? null : () => handleChartMouseEnter(chartIndex + 1, sectorIndex + 1)}\n onMouseLeave={disabled ? null : () => handleChartMouseLeave(chartIndex + 1, sectorIndex + 1)}\n fill={getSectorFill(hoveredIndex, `${chartIndex + 1}-${sectorIndex + 1}`)}\n />\n ))}\n </Pie>\n </PieChart>,\n );\n });\n return <div ref={pieChartRef} className={classes.pieChartParentDiv}>{pieItems}</div>;\n };\n\n //Render bar or pie models as per model type\n if (modelType === 'bar') {\n return getBarFractionModel();\n } else if (modelType === 'pie') {\n //Remove the last sector line of pie chart if parts per model is 1\n useEffect(() => {\n if (pieChartRef?.current && partsPerModel === 1){\n const paths = pieChartRef.current.querySelectorAll('path');\n if (paths.length > 0) {\n paths.forEach((path) => {\n let d = path.getAttribute('d');\n path.setAttribute('d', d.replaceAll('L 100,100', ''));\n });\n }\n }\n }, []);\n return getPieFractionModel();\n }\n};\n\nexport default withStyles(styles)(FractionModelChart);\n"],"file":"fraction-model-chart.js"}
|
package/lib/main.js
CHANGED
|
@@ -68,7 +68,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
68
68
|
};
|
|
69
69
|
|
|
70
70
|
if (model.allowedStudentConfig) {
|
|
71
|
-
answers.noOfModel =
|
|
71
|
+
answers.noOfModel = '', answers.partsPerModel = '';
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
return answers;
|
|
@@ -162,7 +162,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
162
162
|
}
|
|
163
163
|
}), /*#__PURE__*/_react["default"].createElement("p", {
|
|
164
164
|
dangerouslySetInnerHTML: {
|
|
165
|
-
__html: model.
|
|
165
|
+
__html: model.prompt
|
|
166
166
|
}
|
|
167
167
|
}), /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle.CorrectAnswerToggle, {
|
|
168
168
|
language: language,
|
package/lib/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/main.jsx"],"names":["Main","props","onSessionChange","state","session","model","answers","response","allowedStudentConfig","noOfModel","partsPerModel","newAnswers","oldSession","newSession","length","setState","answerChangeDialog","open","text","callOnSessionChange","show","showCorrect","Math","floor","random","generateAnswers","classes","correctness","language","showCorrectAnswerToggle","fractionModelChartKey","generateRandomKey","modelPreview","titleContainer","__html","title","question","toggleShowCorrect","view","onAnswerChange","correctResponse","modelTypeSelected","maxModelSelected","showGraphLabels","onResponseChange","prevState","React","Component","PropTypes","object","func","isRequired","styles","previewHeading","fontWeight","fontSize","margin","padding","textAlign"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport AnswerFraction from './answer-fraction';\nimport { CorrectAnswerToggle } from '@pie-lib/pie-toolbox/correct-answer-toggle';\nimport FractionModelChart from './fraction-model-chart';\nimport { AlertDialog } from '@pie-lib/pie-toolbox/config-ui';\nimport cloneDeep from 'lodash/cloneDeep';\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 = 0), (answers.partsPerModel = 0);\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, classes } = this.props;\n const { showCorrect, session, answerChangeDialog } = this.state;\n const { correctness = {}, language } = model;\n const showCorrectAnswerToggle = correctness.correctness && correctness.correctness !== 'correct';\n const fractionModelChartKey = this.generateRandomKey();\n\n return (\n <div>\n <div className={classes.modelPreview}>\n <h3 className={classes.titleContainer} dangerouslySetInnerHTML={{ __html: model.title }}></h3>\n <p dangerouslySetInnerHTML={{ __html: model.question }}></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 </div>\n </div>\n );\n }\n}\n\nconst styles = () => ({\n previewHeading: {\n fontWeight: '400',\n fontSize: '24px',\n margin: '14px 0',\n },\n modelPreview: {\n padding: '16px',\n },\n titleContainer: {\n textAlign: 'center',\n fontSize: '20px',\n },\n});\n\nexport default withStyles(styles)(Main);\n"],"file":"main.js"}
|
|
1
|
+
{"version":3,"sources":["../src/main.jsx"],"names":["Main","props","onSessionChange","state","session","model","answers","response","allowedStudentConfig","noOfModel","partsPerModel","newAnswers","oldSession","newSession","length","setState","answerChangeDialog","open","text","callOnSessionChange","show","showCorrect","Math","floor","random","generateAnswers","classes","correctness","language","showCorrectAnswerToggle","fractionModelChartKey","generateRandomKey","modelPreview","titleContainer","__html","title","prompt","toggleShowCorrect","view","onAnswerChange","correctResponse","modelTypeSelected","maxModelSelected","showGraphLabels","onResponseChange","prevState","React","Component","PropTypes","object","func","isRequired","styles","previewHeading","fontWeight","fontSize","margin","padding","textAlign"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport AnswerFraction from './answer-fraction';\nimport { CorrectAnswerToggle } from '@pie-lib/pie-toolbox/correct-answer-toggle';\nimport FractionModelChart from './fraction-model-chart';\nimport { AlertDialog } from '@pie-lib/pie-toolbox/config-ui';\nimport cloneDeep from 'lodash/cloneDeep';\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, classes } = this.props;\n const { showCorrect, session, answerChangeDialog } = this.state;\n const { correctness = {}, language } = model;\n const showCorrectAnswerToggle = correctness.correctness && correctness.correctness !== 'correct';\n const fractionModelChartKey = this.generateRandomKey();\n\n return (\n <div>\n <div className={classes.modelPreview}>\n <h3 className={classes.titleContainer} dangerouslySetInnerHTML={{ __html: model.title }}></h3>\n <p dangerouslySetInnerHTML={{ __html: model.prompt }}></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 </div>\n </div>\n );\n }\n}\n\nconst styles = () => ({\n previewHeading: {\n fontWeight: '400',\n fontSize: '24px',\n margin: '14px 0',\n },\n modelPreview: {\n padding: '16px',\n },\n titleContainer: {\n textAlign: 'center',\n fontSize: '20px',\n },\n});\n\nexport default withStyles(styles)(Main);\n"],"file":"main.js"}
|
package/package.json
CHANGED
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"repository": "pie-framework/pie-elements",
|
|
7
|
-
"version": "2.1.2
|
|
7
|
+
"version": "2.1.2",
|
|
8
8
|
"description": "",
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"@material-ui/core": "^3.9.2",
|
|
11
11
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
12
|
-
"@pie-lib/pie-toolbox": "2.0.
|
|
12
|
+
"@pie-lib/pie-toolbox": "2.0.10",
|
|
13
13
|
"prop-types": "^15.6.1",
|
|
14
14
|
"react": "^16.8.1",
|
|
15
15
|
"react-dom": "^16.8.1",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
},
|
|
18
18
|
"author": "",
|
|
19
19
|
"license": "ISC",
|
|
20
|
-
"gitHead": "
|
|
20
|
+
"gitHead": "e246e52c16b2b86f5afd5b2f6c18664e4ec91e5f",
|
|
21
21
|
"scripts": {
|
|
22
22
|
"postpublish": "../../scripts/postpublish"
|
|
23
23
|
},
|
|
@@ -25,8 +25,5 @@
|
|
|
25
25
|
"module": "src/index.js",
|
|
26
26
|
"exports": {
|
|
27
27
|
".": "./src/index.js"
|
|
28
|
-
},
|
|
29
|
-
"resolutions": {
|
|
30
|
-
"complex.js": "2.1.1"
|
|
31
28
|
}
|
|
32
29
|
}
|