@pie-element/fraction-model 4.3.4-next.0 → 5.0.0-beta.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/card-bar.js +45 -66
- package/configure/lib/card-bar.js.map +1 -1
- package/configure/lib/defaults.js +4 -5
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/index.js +127 -193
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/main.js +216 -276
- package/configure/lib/main.js.map +1 -1
- package/configure/lib/model-options.js +119 -196
- package/configure/lib/model-options.js.map +1 -1
- package/configure/lib/number-text-field.js +31 -90
- package/configure/lib/number-text-field.js.map +1 -1
- package/configure/package.json +9 -6
- package/controller/lib/defaults.js +2 -3
- package/controller/lib/defaults.js.map +1 -1
- package/controller/lib/index.js +66 -111
- package/controller/lib/index.js.map +1 -1
- package/controller/package.json +2 -2
- package/lib/answer-fraction.js +94 -159
- package/lib/answer-fraction.js.map +1 -1
- package/lib/fraction-model-chart.js +140 -219
- package/lib/fraction-model-chart.js.map +1 -1
- package/lib/index.js +68 -108
- package/lib/index.js.map +1 -1
- package/lib/main.js +150 -204
- package/lib/main.js.map +1 -1
- package/package.json +14 -14
package/lib/index.js
CHANGED
|
@@ -1,131 +1,91 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
Object.defineProperty(exports, "FractionModelChart", {
|
|
9
8
|
enumerable: true,
|
|
10
|
-
get: function
|
|
11
|
-
return _fractionModelChart
|
|
9
|
+
get: function () {
|
|
10
|
+
return _fractionModelChart.default;
|
|
12
11
|
}
|
|
13
12
|
});
|
|
14
|
-
exports
|
|
15
|
-
|
|
16
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
17
|
-
|
|
18
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
19
|
-
|
|
20
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
21
|
-
|
|
22
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
23
|
-
|
|
24
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
25
|
-
|
|
26
|
-
var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
|
|
27
|
-
|
|
13
|
+
exports.default = void 0;
|
|
28
14
|
var _react = _interopRequireDefault(require("react"));
|
|
29
|
-
|
|
30
|
-
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
31
|
-
|
|
15
|
+
var _client = require("react-dom/client");
|
|
32
16
|
var _piePlayerEvents = require("@pie-framework/pie-player-events");
|
|
33
|
-
|
|
34
17
|
var _main = _interopRequireDefault(require("./main"));
|
|
35
|
-
|
|
36
18
|
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
37
|
-
|
|
38
19
|
var _mathRendering = require("@pie-lib/math-rendering");
|
|
39
|
-
|
|
40
20
|
var _fractionModelChart = _interopRequireDefault(require("./fraction-model-chart"));
|
|
21
|
+
// Export FractionModelChart for use in configure
|
|
41
22
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
(
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
23
|
+
class FractionModel extends HTMLElement {
|
|
24
|
+
constructor() {
|
|
25
|
+
super();
|
|
26
|
+
this._root = null;
|
|
27
|
+
}
|
|
28
|
+
set model(m) {
|
|
29
|
+
this._model = m;
|
|
30
|
+
this._render();
|
|
31
|
+
}
|
|
32
|
+
get model() {
|
|
33
|
+
return this._model;
|
|
34
|
+
}
|
|
35
|
+
set session(s) {
|
|
36
|
+
this._session = s;
|
|
37
|
+
this._render();
|
|
38
|
+
}
|
|
39
|
+
get session() {
|
|
40
|
+
return this._session;
|
|
54
41
|
}
|
|
55
42
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
key: "session",
|
|
68
|
-
get: function get() {
|
|
69
|
-
return this._session;
|
|
70
|
-
}
|
|
71
|
-
/*
|
|
72
|
-
* Method to check if student answered the question
|
|
73
|
-
* @param {session} session contains the session object
|
|
74
|
-
* @param {model} model contains the model object
|
|
75
|
-
* */
|
|
76
|
-
,
|
|
77
|
-
set: function set(s) {
|
|
78
|
-
this._session = s;
|
|
79
|
-
|
|
80
|
-
this._render();
|
|
81
|
-
}
|
|
82
|
-
}, {
|
|
83
|
-
key: "isSessionComplete",
|
|
84
|
-
value: function isSessionComplete(session, model) {
|
|
85
|
-
var answers = session && session.answers;
|
|
86
|
-
var configComplete = model.allowedStudentConfig ? answers.noOfModel > 0 && answers.partsPerModel > 0 : true;
|
|
87
|
-
var responseComplete = Array.isArray(answers.response) && answers.response.length > 0;
|
|
88
|
-
return configComplete && responseComplete;
|
|
89
|
-
}
|
|
90
|
-
/*
|
|
91
|
-
* Session change event handler
|
|
92
|
-
* @param {session} session contains the session object
|
|
93
|
-
* */
|
|
94
|
-
|
|
95
|
-
}, {
|
|
96
|
-
key: "onSessionChange",
|
|
97
|
-
value: function onSessionChange(session) {
|
|
98
|
-
this._session.answers = session && session.answers;
|
|
99
|
-
var complete = this.isSessionComplete(this._session, this._model);
|
|
100
|
-
this.dispatchEvent(new _piePlayerEvents.SessionChangedEvent(this.tagName.toLowerCase(), complete));
|
|
101
|
-
}
|
|
102
|
-
}, {
|
|
103
|
-
key: "connectedCallback",
|
|
104
|
-
value: function connectedCallback() {
|
|
105
|
-
this._render();
|
|
106
|
-
}
|
|
107
|
-
}, {
|
|
108
|
-
key: "_render",
|
|
109
|
-
value: function _render() {
|
|
110
|
-
var _this = this;
|
|
111
|
-
|
|
112
|
-
if (this._model && this._session) {
|
|
113
|
-
var model = (0, _cloneDeep["default"])(this._model);
|
|
114
|
-
|
|
115
|
-
var el = /*#__PURE__*/_react["default"].createElement(_main["default"], {
|
|
116
|
-
model: model,
|
|
117
|
-
session: this._session,
|
|
118
|
-
onSessionChange: this.onSessionChange.bind(this)
|
|
119
|
-
});
|
|
43
|
+
/*
|
|
44
|
+
* Method to check if student answered the question
|
|
45
|
+
* @param {session} session contains the session object
|
|
46
|
+
* @param {model} model contains the model object
|
|
47
|
+
* */
|
|
48
|
+
isSessionComplete(session, model) {
|
|
49
|
+
const answers = session && session.answers;
|
|
50
|
+
const configComplete = model.allowedStudentConfig ? answers.noOfModel > 0 && answers.partsPerModel > 0 : true;
|
|
51
|
+
const responseComplete = Array.isArray(answers.response) && answers.response.length > 0;
|
|
52
|
+
return configComplete && responseComplete;
|
|
53
|
+
}
|
|
120
54
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
55
|
+
/*
|
|
56
|
+
* Session change event handler
|
|
57
|
+
* @param {session} session contains the session object
|
|
58
|
+
* */
|
|
59
|
+
onSessionChange(session) {
|
|
60
|
+
this._session.answers = session && session.answers;
|
|
61
|
+
const complete = this.isSessionComplete(this._session, this._model);
|
|
62
|
+
this.dispatchEvent(new _piePlayerEvents.SessionChangedEvent(this.tagName.toLowerCase(), complete));
|
|
63
|
+
}
|
|
64
|
+
connectedCallback() {
|
|
65
|
+
this._render();
|
|
66
|
+
}
|
|
67
|
+
_render() {
|
|
68
|
+
if (this._model && this._session) {
|
|
69
|
+
let model = (0, _cloneDeep.default)(this._model);
|
|
70
|
+
const el = /*#__PURE__*/_react.default.createElement(_main.default, {
|
|
71
|
+
model,
|
|
72
|
+
session: this._session,
|
|
73
|
+
onSessionChange: this.onSessionChange.bind(this)
|
|
74
|
+
});
|
|
75
|
+
if (!this._root) {
|
|
76
|
+
this._root = (0, _client.createRoot)(this);
|
|
124
77
|
}
|
|
78
|
+
this._root.render(el);
|
|
79
|
+
queueMicrotask(() => {
|
|
80
|
+
(0, _mathRendering.renderMath)(this);
|
|
81
|
+
});
|
|
125
82
|
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
83
|
+
}
|
|
84
|
+
disconnectedCallback() {
|
|
85
|
+
if (this._root) {
|
|
86
|
+
this._root.unmount();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
exports.default = FractionModel;
|
|
131
91
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_client","_piePlayerEvents","_main","_cloneDeep","_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/cloneDeep';\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
|
@@ -1,89 +1,67 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
|
-
exports
|
|
9
|
-
|
|
10
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
-
|
|
12
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
-
|
|
14
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
15
|
-
|
|
16
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
|
-
|
|
18
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
19
|
-
|
|
20
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
21
|
-
|
|
7
|
+
exports.default = exports.Main = void 0;
|
|
22
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
23
|
-
|
|
24
9
|
var _react = _interopRequireDefault(require("react"));
|
|
25
|
-
|
|
26
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
27
|
-
|
|
28
|
-
var _styles = require("@material-ui/core/styles");
|
|
29
|
-
|
|
11
|
+
var _styles = require("@mui/material/styles");
|
|
30
12
|
var _answerFraction = _interopRequireDefault(require("./answer-fraction"));
|
|
31
|
-
|
|
32
13
|
var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/correct-answer-toggle"));
|
|
33
|
-
|
|
34
14
|
var _fractionModelChart = _interopRequireDefault(require("./fraction-model-chart"));
|
|
35
|
-
|
|
36
15
|
var _configUi = require("@pie-lib/config-ui");
|
|
37
|
-
|
|
38
16
|
var _renderUi = require("@pie-lib/render-ui");
|
|
39
|
-
|
|
40
17
|
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
(0, _classCallCheck2["default"])(this, Main);
|
|
59
|
-
_this = _super.call(this, props);
|
|
60
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "callOnSessionChange", function () {
|
|
61
|
-
var onSessionChange = _this.props.onSessionChange;
|
|
62
|
-
|
|
18
|
+
const ModelPreview = (0, _styles.styled)('div')({
|
|
19
|
+
padding: '16px'
|
|
20
|
+
});
|
|
21
|
+
const TitleContainer = (0, _styles.styled)('div')({
|
|
22
|
+
textAlign: 'center',
|
|
23
|
+
fontSize: '20px'
|
|
24
|
+
});
|
|
25
|
+
class Main extends _react.default.Component {
|
|
26
|
+
constructor(props) {
|
|
27
|
+
super(props);
|
|
28
|
+
/**
|
|
29
|
+
* Function to trigger when session value change for fraction model
|
|
30
|
+
*/
|
|
31
|
+
(0, _defineProperty2.default)(this, "callOnSessionChange", () => {
|
|
32
|
+
const {
|
|
33
|
+
onSessionChange
|
|
34
|
+
} = this.props;
|
|
63
35
|
if (onSessionChange) {
|
|
64
|
-
onSessionChange(
|
|
36
|
+
onSessionChange(this.state.session);
|
|
65
37
|
}
|
|
66
38
|
});
|
|
67
|
-
|
|
68
|
-
|
|
39
|
+
/**
|
|
40
|
+
* Function to generate answers for preview selection
|
|
41
|
+
* @param {object} model contains model object for fraction model
|
|
42
|
+
* @returns answer model
|
|
43
|
+
*/
|
|
44
|
+
(0, _defineProperty2.default)(this, "generateAnswers", model => {
|
|
45
|
+
const answers = {
|
|
69
46
|
response: []
|
|
70
47
|
};
|
|
71
|
-
|
|
72
48
|
if (model.allowedStudentConfig) {
|
|
73
49
|
answers.noOfModel = '', answers.partsPerModel = '';
|
|
74
50
|
}
|
|
75
|
-
|
|
76
51
|
return answers;
|
|
77
52
|
});
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
53
|
+
/**
|
|
54
|
+
* Function to trigger when answer change from preview
|
|
55
|
+
* @param {object} newAnswers contains updated answer model
|
|
56
|
+
*/
|
|
57
|
+
(0, _defineProperty2.default)(this, "onAnswerChange", newAnswers => {
|
|
58
|
+
let oldSession = (0, _cloneDeep.default)(this.state.session);
|
|
59
|
+
let newSession = {
|
|
60
|
+
...this.state.session,
|
|
82
61
|
answers: newAnswers
|
|
83
|
-
}
|
|
84
|
-
|
|
62
|
+
};
|
|
85
63
|
if (newAnswers.response.length > 0) {
|
|
86
|
-
|
|
64
|
+
this.setState({
|
|
87
65
|
answerChangeDialog: {
|
|
88
66
|
open: true,
|
|
89
67
|
oldSession: oldSession,
|
|
@@ -92,166 +70,134 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
92
70
|
}
|
|
93
71
|
});
|
|
94
72
|
} else {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
};
|
|
99
|
-
}, _this.callOnSessionChange);
|
|
73
|
+
this.setState(state => ({
|
|
74
|
+
session: newSession
|
|
75
|
+
}), this.callOnSessionChange);
|
|
100
76
|
}
|
|
101
77
|
});
|
|
102
|
-
|
|
103
|
-
|
|
78
|
+
/*
|
|
79
|
+
* Function to toggle correct answer
|
|
80
|
+
* @param {boolean} show contains boolean value to show correct answer
|
|
81
|
+
* */
|
|
82
|
+
(0, _defineProperty2.default)(this, "toggleShowCorrect", show => {
|
|
83
|
+
this.setState({
|
|
104
84
|
showCorrect: show
|
|
105
85
|
});
|
|
106
86
|
});
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
87
|
+
/*
|
|
88
|
+
* Function to trigger when response change from preview
|
|
89
|
+
* @param {object} response contains updated response model
|
|
90
|
+
* */
|
|
91
|
+
(0, _defineProperty2.default)(this, "onResponseChange", response => {
|
|
92
|
+
this.setState(state => ({
|
|
93
|
+
session: {
|
|
94
|
+
...state.session,
|
|
95
|
+
answers: {
|
|
96
|
+
...state.session.answers,
|
|
97
|
+
response
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}), this.callOnSessionChange);
|
|
117
101
|
});
|
|
118
|
-
|
|
102
|
+
/*
|
|
103
|
+
* Method to generate random key
|
|
104
|
+
* */
|
|
105
|
+
(0, _defineProperty2.default)(this, "generateRandomKey", () => {
|
|
119
106
|
return Math.floor(Math.random() * 10000);
|
|
120
107
|
});
|
|
121
|
-
|
|
122
|
-
session:
|
|
123
|
-
|
|
124
|
-
|
|
108
|
+
this.state = {
|
|
109
|
+
session: {
|
|
110
|
+
...props.session,
|
|
111
|
+
answers: props.session && props.session.answers || this.generateAnswers(props.model)
|
|
112
|
+
},
|
|
125
113
|
showCorrect: false,
|
|
126
114
|
answerChangeDialog: {
|
|
127
115
|
open: false,
|
|
128
116
|
text: ''
|
|
129
117
|
}
|
|
130
118
|
};
|
|
131
|
-
|
|
132
|
-
_this.callOnSessionChange();
|
|
133
|
-
|
|
134
|
-
return _this;
|
|
119
|
+
this.callOnSessionChange();
|
|
135
120
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
},
|
|
212
|
-
onClose: function onClose() {
|
|
213
|
-
_this2.setState(function (prevState) {
|
|
214
|
-
return {
|
|
215
|
-
session: prevState.answerChangeDialog.oldSession,
|
|
216
|
-
answerChangeDialog: {
|
|
217
|
-
open: false
|
|
218
|
-
}
|
|
219
|
-
};
|
|
220
|
-
}, _this2.callOnSessionChange);
|
|
221
|
-
},
|
|
222
|
-
onConfirmText: 'OK',
|
|
223
|
-
onCloseText: 'Cancel'
|
|
224
|
-
})));
|
|
225
|
-
}
|
|
226
|
-
}]);
|
|
227
|
-
return Main;
|
|
228
|
-
}(_react["default"].Component);
|
|
229
|
-
|
|
121
|
+
render() {
|
|
122
|
+
const {
|
|
123
|
+
model
|
|
124
|
+
} = this.props;
|
|
125
|
+
const {
|
|
126
|
+
showCorrect,
|
|
127
|
+
session,
|
|
128
|
+
answerChangeDialog
|
|
129
|
+
} = this.state;
|
|
130
|
+
const {
|
|
131
|
+
prompt,
|
|
132
|
+
title,
|
|
133
|
+
correctness = {},
|
|
134
|
+
extraCSSRules,
|
|
135
|
+
language
|
|
136
|
+
} = model;
|
|
137
|
+
const showCorrectAnswerToggle = correctness.correctness && correctness.correctness !== 'correct';
|
|
138
|
+
const fractionModelChartKey = this.generateRandomKey();
|
|
139
|
+
return /*#__PURE__*/_react.default.createElement(_renderUi.UiLayout, {
|
|
140
|
+
extraCSSRules: extraCSSRules
|
|
141
|
+
}, /*#__PURE__*/_react.default.createElement(ModelPreview, null, /*#__PURE__*/_react.default.createElement(TitleContainer, null, /*#__PURE__*/_react.default.createElement(_renderUi.PreviewPrompt, {
|
|
142
|
+
className: "prompt",
|
|
143
|
+
prompt: title,
|
|
144
|
+
tagName: "h3"
|
|
145
|
+
})), /*#__PURE__*/_react.default.createElement(_renderUi.PreviewPrompt, {
|
|
146
|
+
className: "prompt",
|
|
147
|
+
prompt: prompt,
|
|
148
|
+
tagName: "p"
|
|
149
|
+
}), /*#__PURE__*/_react.default.createElement(_correctAnswerToggle.default, {
|
|
150
|
+
language: language,
|
|
151
|
+
show: showCorrectAnswerToggle,
|
|
152
|
+
toggled: showCorrect,
|
|
153
|
+
onToggle: this.toggleShowCorrect
|
|
154
|
+
}), /*#__PURE__*/_react.default.createElement(_answerFraction.default, {
|
|
155
|
+
model: model,
|
|
156
|
+
showCorrect: showCorrect,
|
|
157
|
+
disabled: model.view,
|
|
158
|
+
onAnswerChange: this.onAnswerChange,
|
|
159
|
+
answers: session.answers
|
|
160
|
+
}), /*#__PURE__*/_react.default.createElement(_fractionModelChart.default, {
|
|
161
|
+
key: fractionModelChartKey,
|
|
162
|
+
disabled: model.view,
|
|
163
|
+
value: showCorrect ? model.correctResponse : session.answers.response,
|
|
164
|
+
modelType: model.modelTypeSelected,
|
|
165
|
+
noOfModels: showCorrect ? model.maxModelSelected : model.allowedStudentConfig ? session.answers.noOfModel : model.maxModelSelected,
|
|
166
|
+
partsPerModel: showCorrect ? model.partsPerModel : model.allowedStudentConfig ? session.answers.partsPerModel : model.partsPerModel,
|
|
167
|
+
showLabel: model.showGraphLabels,
|
|
168
|
+
onChange: this.onResponseChange
|
|
169
|
+
}), /*#__PURE__*/_react.default.createElement(_configUi.AlertDialog, {
|
|
170
|
+
open: answerChangeDialog.open,
|
|
171
|
+
title: "Warning",
|
|
172
|
+
text: answerChangeDialog.text,
|
|
173
|
+
onConfirm: () => {
|
|
174
|
+
let newSession = this.state.answerChangeDialog.newSession;
|
|
175
|
+
newSession.answers.response = [];
|
|
176
|
+
this.setState(() => ({
|
|
177
|
+
session: newSession,
|
|
178
|
+
answerChangeDialog: {
|
|
179
|
+
open: false
|
|
180
|
+
}
|
|
181
|
+
}), this.callOnSessionChange);
|
|
182
|
+
},
|
|
183
|
+
onClose: () => {
|
|
184
|
+
this.setState(prevState => ({
|
|
185
|
+
session: prevState.answerChangeDialog.oldSession,
|
|
186
|
+
answerChangeDialog: {
|
|
187
|
+
open: false
|
|
188
|
+
}
|
|
189
|
+
}), this.callOnSessionChange);
|
|
190
|
+
},
|
|
191
|
+
onConfirmText: 'OK',
|
|
192
|
+
onCloseText: 'Cancel'
|
|
193
|
+
})));
|
|
194
|
+
}
|
|
195
|
+
}
|
|
230
196
|
exports.Main = Main;
|
|
231
|
-
(0, _defineProperty2
|
|
232
|
-
model: _propTypes
|
|
233
|
-
session: _propTypes
|
|
234
|
-
onSessionChange: _propTypes
|
|
197
|
+
(0, _defineProperty2.default)(Main, "propTypes", {
|
|
198
|
+
model: _propTypes.default.object,
|
|
199
|
+
session: _propTypes.default.object,
|
|
200
|
+
onSessionChange: _propTypes.default.func.isRequired
|
|
235
201
|
});
|
|
236
|
-
|
|
237
|
-
var styles = function styles() {
|
|
238
|
-
return {
|
|
239
|
-
previewHeading: {
|
|
240
|
-
fontWeight: '400',
|
|
241
|
-
fontSize: '24px',
|
|
242
|
-
margin: '14px 0'
|
|
243
|
-
},
|
|
244
|
-
modelPreview: {
|
|
245
|
-
padding: '16px'
|
|
246
|
-
},
|
|
247
|
-
titleContainer: {
|
|
248
|
-
textAlign: 'center',
|
|
249
|
-
fontSize: '20px'
|
|
250
|
-
}
|
|
251
|
-
};
|
|
252
|
-
};
|
|
253
|
-
|
|
254
|
-
var _default = (0, _styles.withStyles)(styles)(Main);
|
|
255
|
-
|
|
256
|
-
exports["default"] = _default;
|
|
202
|
+
var _default = exports.default = Main;
|
|
257
203
|
//# sourceMappingURL=main.js.map
|