@pie-element/number-line 7.4.1-next.7 → 7.5.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/CHANGELOG.md +17 -0
- package/configure/CHANGELOG.md +17 -0
- package/configure/lib/index.js +24 -2
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/main.js +31 -17
- package/configure/lib/main.js.map +1 -1
- package/configure/package.json +2 -1
- package/docs/demo/generate.js +33 -35
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,23 @@
|
|
|
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
|
+
# [7.5.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/number-line@7.4.0...@pie-element/number-line@7.5.0) (2024-02-02)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* store model copy and reset model after configuration gets set PD-3370 ([be8b8d9](https://github.com/pie-framework/pie-elements/commit/be8b8d9ee24a0073a72ee98b9a4fea10bd6223ec))
|
|
12
|
+
* update model before making the language checks ([d305e91](https://github.com/pie-framework/pie-elements/commit/d305e916023bdd1f3b0d9aebc33b9ed8f9040fb9))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* use model copy in PLAYER environments to reset model after set configuration PD-3370 ([8a7ef36](https://github.com/pie-framework/pie-elements/commit/8a7ef3663d39ec444f91705b632ea25785d0e66f))
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
6
23
|
# [7.4.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/number-line@7.3.8...@pie-element/number-line@7.4.0) (2024-01-30)
|
|
7
24
|
|
|
8
25
|
|
package/configure/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,23 @@
|
|
|
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
|
+
# [6.5.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/number-line-configure@6.4.0...@pie-element/number-line-configure@6.5.0) (2024-02-02)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* store model copy and reset model after configuration gets set PD-3370 ([be8b8d9](https://github.com/pie-framework/pie-elements/commit/be8b8d9ee24a0073a72ee98b9a4fea10bd6223ec))
|
|
12
|
+
* update model before making the language checks ([d305e91](https://github.com/pie-framework/pie-elements/commit/d305e916023bdd1f3b0d9aebc33b9ed8f9040fb9))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* use model copy in PLAYER environments to reset model after set configuration PD-3370 ([8a7ef36](https://github.com/pie-framework/pie-elements/commit/8a7ef3663d39ec444f91705b632ea25785d0e66f))
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
6
23
|
# [6.4.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/number-line-configure@6.3.8...@pie-element/number-line-configure@6.4.0) (2024-01-30)
|
|
7
24
|
|
|
8
25
|
|
package/configure/lib/index.js
CHANGED
|
@@ -37,6 +37,8 @@ var defaults = _interopRequireWildcard(require("./defaults"));
|
|
|
37
37
|
|
|
38
38
|
var math = _interopRequireWildcard(require("mathjs"));
|
|
39
39
|
|
|
40
|
+
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
41
|
+
|
|
40
42
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
41
43
|
|
|
42
44
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -89,6 +91,15 @@ var NumberLine = /*#__PURE__*/function (_HTMLElement) {
|
|
|
89
91
|
|
|
90
92
|
(0, _classCallCheck2["default"])(this, NumberLine);
|
|
91
93
|
_this = _super.call(this);
|
|
94
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "resetModelAfterConfigurationIsSet", function () {
|
|
95
|
+
if (_this.hasPlayerAsParent) {
|
|
96
|
+
if (_this._modelCopy) {
|
|
97
|
+
_this._model = _this._modelCopy;
|
|
98
|
+
} else {
|
|
99
|
+
delete _this._modelCopy;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
});
|
|
92
103
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChange", function (o) {
|
|
93
104
|
_this._model = _objectSpread(_objectSpread({}, _this._model), o);
|
|
94
105
|
|
|
@@ -97,7 +108,16 @@ var NumberLine = /*#__PURE__*/function (_HTMLElement) {
|
|
|
97
108
|
_this._rerender();
|
|
98
109
|
});
|
|
99
110
|
_this._model = NumberLine.createDefaultModel();
|
|
100
|
-
_this._configuration = defaults.configuration;
|
|
111
|
+
_this._configuration = defaults.configuration; // In environments that use pie-player-components, model is set before configuration.
|
|
112
|
+
// This is the reason why sometimes the model gets altered non-reversible
|
|
113
|
+
// (altered using default configuration instead of client configuration, because at that point client configuration was not set yet)
|
|
114
|
+
// Therefore, in such environments, we will make sure to keep a modelCopy (initialised in set model) and use it to reset
|
|
115
|
+
// the model in set configuration (resetModelAfterConfigurationIsSet) if set configuration is ever called
|
|
116
|
+
|
|
117
|
+
var pieAuthors = document.querySelectorAll('pie-author');
|
|
118
|
+
_this.hasPlayerAsParent = Array.from(pieAuthors).some(function (author) {
|
|
119
|
+
return author.contains((0, _assertThisInitialized2["default"])(_this));
|
|
120
|
+
});
|
|
101
121
|
return _this;
|
|
102
122
|
}
|
|
103
123
|
|
|
@@ -105,6 +125,7 @@ var NumberLine = /*#__PURE__*/function (_HTMLElement) {
|
|
|
105
125
|
key: "model",
|
|
106
126
|
set: function set(m) {
|
|
107
127
|
this._model = NumberLine.createDefaultModel(m);
|
|
128
|
+
this._modelCopy = (0, _cloneDeep["default"])(this._model);
|
|
108
129
|
|
|
109
130
|
this._rerender();
|
|
110
131
|
}
|
|
@@ -116,7 +137,8 @@ var NumberLine = /*#__PURE__*/function (_HTMLElement) {
|
|
|
116
137
|
|
|
117
138
|
var newConfiguration = _objectSpread(_objectSpread({}, defaults.configuration), c);
|
|
118
139
|
|
|
119
|
-
this._configuration = newConfiguration;
|
|
140
|
+
this._configuration = newConfiguration;
|
|
141
|
+
this.resetModelAfterConfigurationIsSet(); // if language:enabled is true, then the corresponding default item model should include a language value;
|
|
120
142
|
// if it is false, then the language field should be omitted from the item model.
|
|
121
143
|
// if a default item model includes a language value (e.g., en_US) and the corresponding authoring view settings have language:settings = true,
|
|
122
144
|
// then (a) language:enabled should also be true, and (b) that default language value should be represented in languageChoices[] (as a key).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["updateTicks","model","graph","domain","labelStep","ticks","minor","major","min","Number","toFixed","max","match","fraction","step","math","evaluate","NumberLine","o","_model","dispatchEvent","ModelUpdatedEvent","_rerender","createDefaultModel","_configuration","defaults","configuration","m","c","newConfiguration","language","enabled","languageChoices","options","length","value","settings","find","option","push","label","handler","InsertSoundEvent","src","done","DeleteSoundEvent","element","React","createElement","Main","onChange","uploadSoundSupport","add","insertSound","bind","onDeleteSound","ReactDOM","render","HTMLElement","normalizedModel"],"mappings":"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","sourcesContent":["import Main from './main';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { ModelUpdatedEvent, InsertSoundEvent, DeleteSoundEvent } from '@pie-framework/pie-configure-events';\nimport * as defaults from './defaults';\nimport * as math from 'mathjs';\n\n// this function is duplicated in controller; at some point, use the same shared function\nconst updateTicks = (model) => {\n const { graph: { domain, labelStep, ticks = {} } = {} } = model;\n const { minor, major } = ticks;\n\n if (domain) {\n domain.min = Number((domain.min || 0).toFixed(2));\n domain.max = Number((domain.max || 0).toFixed(2));\n }\n\n if (labelStep && typeof labelStep === 'string' && labelStep.match(/^[1-9][0-9]*\\/[1-9][0-9]*$/g)) {\n model.graph.fraction = true;\n\n // update the ticks frequency and label value to match the label step if needed\n const step = math.evaluate(labelStep);\n\n if (step !== major) {\n ticks.major = step;\n ticks.minor = step / (major / minor);\n }\n }\n\n return model;\n};\n\nexport default class NumberLine extends HTMLElement {\n static createDefaultModel = (model = {}) => {\n const c = defaults.configuration;\n let language = model.language || '';\n\n if (!language && c.language && c.language.enabled) {\n if (c.languageChoices?.options?.length) {\n language = c.languageChoices.options[0].value;\n }\n }\n\n const normalizedModel = {\n ...defaults.model,\n ...model,\n language,\n };\n\n return updateTicks(normalizedModel);\n };\n\n constructor() {\n super();\n this._model = NumberLine.createDefaultModel();\n this._configuration = defaults.configuration;\n }\n\n set model(m) {\n this._model = NumberLine.createDefaultModel(m);\n this._rerender();\n }\n\n set configuration(c) {\n const newConfiguration = {\n ...defaults.configuration,\n ...c,\n };\n\n this._configuration = newConfiguration;\n\n // if language:enabled is true, then the corresponding default item model should include a language value;\n // if it is false, then the language field should be omitted from the item model.\n // if a default item model includes a language value (e.g., en_US) and the corresponding authoring view settings have language:settings = true,\n // then (a) language:enabled should also be true, and (b) that default language value should be represented in languageChoices[] (as a key).\n if (newConfiguration?.language?.enabled) {\n if (newConfiguration?.languageChoices?.options?.length) {\n this._model.language = newConfiguration?.languageChoices.options[0].value;\n }\n } else if (newConfiguration.language.settings && this._model.language) {\n this._configuration.language.enabled = true;\n\n if (!this._configuration.languageChoices.options || !this._configuration.languageChoices.options.length) {\n this._configuration.languageChoices.options = [];\n }\n\n // check if the language is already included in the languageChoices.options array\n // and if not, then add it.\n if (!this._configuration.languageChoices.options.find((option) => option.value === this._model.language)) {\n this._configuration.languageChoices.options.push({\n value: this._model.language,\n label: this._model.language,\n });\n }\n } else {\n delete this._model.language;\n }\n\n this._rerender();\n }\n\n onChange = (o) => {\n this._model = { ...this._model, ...o };\n\n this.dispatchEvent(new ModelUpdatedEvent(this._model));\n\n this._rerender();\n };\n\n insertSound(handler) {\n this.dispatchEvent(new InsertSoundEvent(handler));\n }\n\n onDeleteSound(src, done) {\n this.dispatchEvent(new DeleteSoundEvent(src, done));\n }\n\n _rerender() {\n let element = React.createElement(Main, {\n model: this._model,\n configuration: this._configuration,\n onChange: this.onChange,\n uploadSoundSupport: {\n add: this.insertSound.bind(this),\n delete: this.onDeleteSound.bind(this),\n },\n });\n\n ReactDOM.render(element, this);\n }\n}\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["updateTicks","model","graph","domain","labelStep","ticks","minor","major","min","Number","toFixed","max","match","fraction","step","math","evaluate","NumberLine","hasPlayerAsParent","_modelCopy","_model","o","dispatchEvent","ModelUpdatedEvent","_rerender","createDefaultModel","_configuration","defaults","configuration","pieAuthors","document","querySelectorAll","Array","from","some","author","contains","m","c","newConfiguration","resetModelAfterConfigurationIsSet","language","enabled","languageChoices","options","length","value","settings","find","option","push","label","handler","InsertSoundEvent","src","done","DeleteSoundEvent","element","React","createElement","Main","onChange","uploadSoundSupport","add","insertSound","bind","onDeleteSound","ReactDOM","render","HTMLElement","normalizedModel"],"mappings":"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","sourcesContent":["import Main from './main';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { ModelUpdatedEvent, InsertSoundEvent, DeleteSoundEvent } from '@pie-framework/pie-configure-events';\nimport * as defaults from './defaults';\nimport * as math from 'mathjs';\nimport cloneDeep from 'lodash/cloneDeep';\n\n// this function is duplicated in controller; at some point, use the same shared function\nconst updateTicks = (model) => {\n const { graph: { domain, labelStep, ticks = {} } = {} } = model;\n const { minor, major } = ticks;\n\n if (domain) {\n domain.min = Number((domain.min || 0).toFixed(2));\n domain.max = Number((domain.max || 0).toFixed(2));\n }\n\n if (labelStep && typeof labelStep === 'string' && labelStep.match(/^[1-9][0-9]*\\/[1-9][0-9]*$/g)) {\n model.graph.fraction = true;\n\n // update the ticks frequency and label value to match the label step if needed\n const step = math.evaluate(labelStep);\n\n if (step !== major) {\n ticks.major = step;\n ticks.minor = step / (major / minor);\n }\n }\n\n return model;\n};\n\nexport default class NumberLine extends HTMLElement {\n static createDefaultModel = (model = {}) => {\n const c = defaults.configuration;\n let language = model.language || '';\n\n if (!language && c.language && c.language.enabled) {\n if (c.languageChoices?.options?.length) {\n language = c.languageChoices.options[0].value;\n }\n }\n\n const normalizedModel = {\n ...defaults.model,\n ...model,\n language,\n };\n\n return updateTicks(normalizedModel);\n };\n\n constructor() {\n super();\n this._model = NumberLine.createDefaultModel();\n this._configuration = defaults.configuration;\n\n // In environments that use pie-player-components, model is set before configuration.\n // This is the reason why sometimes the model gets altered non-reversible\n // (altered using default configuration instead of client configuration, because at that point client configuration was not set yet)\n // Therefore, in such environments, we will make sure to keep a modelCopy (initialised in set model) and use it to reset\n // the model in set configuration (resetModelAfterConfigurationIsSet) if set configuration is ever called\n const pieAuthors = document.querySelectorAll('pie-author');\n this.hasPlayerAsParent = Array.from(pieAuthors).some(author => author.contains(this));\n }\n\n set model(m) {\n this._model = NumberLine.createDefaultModel(m);\n this._modelCopy = cloneDeep(this._model);\n\n this._rerender();\n }\n\n resetModelAfterConfigurationIsSet = () => {\n if (this.hasPlayerAsParent) {\n if (this._modelCopy) {\n this._model = this._modelCopy;\n } else {\n delete this._modelCopy;\n }\n }\n }\n\n set configuration(c) {\n const newConfiguration = {\n ...defaults.configuration,\n ...c,\n };\n\n this._configuration = newConfiguration;\n\n this.resetModelAfterConfigurationIsSet();\n\n // if language:enabled is true, then the corresponding default item model should include a language value;\n // if it is false, then the language field should be omitted from the item model.\n // if a default item model includes a language value (e.g., en_US) and the corresponding authoring view settings have language:settings = true,\n // then (a) language:enabled should also be true, and (b) that default language value should be represented in languageChoices[] (as a key).\n if (newConfiguration?.language?.enabled) {\n if (newConfiguration?.languageChoices?.options?.length) {\n this._model.language = newConfiguration?.languageChoices.options[0].value;\n }\n } else if (newConfiguration.language.settings && this._model.language) {\n this._configuration.language.enabled = true;\n\n if (!this._configuration.languageChoices.options || !this._configuration.languageChoices.options.length) {\n this._configuration.languageChoices.options = [];\n }\n\n // check if the language is already included in the languageChoices.options array\n // and if not, then add it.\n if (!this._configuration.languageChoices.options.find((option) => option.value === this._model.language)) {\n this._configuration.languageChoices.options.push({\n value: this._model.language,\n label: this._model.language,\n });\n }\n } else {\n delete this._model.language;\n }\n\n this._rerender();\n }\n\n onChange = (o) => {\n this._model = { ...this._model, ...o };\n\n this.dispatchEvent(new ModelUpdatedEvent(this._model));\n\n this._rerender();\n };\n\n insertSound(handler) {\n this.dispatchEvent(new InsertSoundEvent(handler));\n }\n\n onDeleteSound(src, done) {\n this.dispatchEvent(new DeleteSoundEvent(src, done));\n }\n\n _rerender() {\n let element = React.createElement(Main, {\n model: this._model,\n configuration: this._configuration,\n onChange: this.onChange,\n uploadSoundSupport: {\n add: this.insertSound.bind(this),\n delete: this.onDeleteSound.bind(this),\n },\n });\n\n ReactDOM.render(element, this);\n }\n}\n"],"file":"index.js"}
|
package/configure/lib/main.js
CHANGED
|
@@ -67,6 +67,8 @@ var _defaults = require("./defaults");
|
|
|
67
67
|
|
|
68
68
|
var _utils = require("./utils");
|
|
69
69
|
|
|
70
|
+
var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
|
|
71
|
+
|
|
70
72
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
71
73
|
|
|
72
74
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -189,11 +191,22 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
189
191
|
|
|
190
192
|
var _super = _createSuper(Main);
|
|
191
193
|
|
|
192
|
-
function Main(
|
|
194
|
+
function Main(_props) {
|
|
193
195
|
var _this;
|
|
194
196
|
|
|
195
197
|
(0, _classCallCheck2["default"])(this, Main);
|
|
196
|
-
_this = _super.call(this,
|
|
198
|
+
_this = _super.call(this, _props);
|
|
199
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "checkAndAdjustHeight", function (props) {
|
|
200
|
+
var _props$model$graph = props.model.graph,
|
|
201
|
+
availableTypes = _props$model$graph.availableTypes,
|
|
202
|
+
maxNumberOfPoints = _props$model$graph.maxNumberOfPoints;
|
|
203
|
+
|
|
204
|
+
var height = _this.getAdjustedHeight(availableTypes, maxNumberOfPoints);
|
|
205
|
+
|
|
206
|
+
_this.graphChange({
|
|
207
|
+
height: height
|
|
208
|
+
});
|
|
209
|
+
});
|
|
197
210
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "graphChange", function (obj) {
|
|
198
211
|
var _this$props = _this.props,
|
|
199
212
|
model = _this$props.model,
|
|
@@ -544,12 +557,6 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
544
557
|
correctResponse: correctResponse
|
|
545
558
|
});
|
|
546
559
|
});
|
|
547
|
-
var _props$model$graph = props.model.graph,
|
|
548
|
-
_availableTypes = _props$model$graph.availableTypes,
|
|
549
|
-
_maxNumberOfPoints = _props$model$graph.maxNumberOfPoints;
|
|
550
|
-
|
|
551
|
-
var _height = _this.getAdjustedHeight(_availableTypes, _maxNumberOfPoints);
|
|
552
|
-
|
|
553
560
|
_this.state = {
|
|
554
561
|
dialog: {
|
|
555
562
|
open: false,
|
|
@@ -561,24 +568,31 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
561
568
|
}
|
|
562
569
|
};
|
|
563
570
|
|
|
564
|
-
_this.
|
|
565
|
-
height: _height
|
|
566
|
-
});
|
|
571
|
+
_this.checkAndAdjustHeight(_props);
|
|
567
572
|
|
|
568
573
|
return _this;
|
|
569
574
|
}
|
|
570
575
|
|
|
571
576
|
(0, _createClass2["default"])(Main, [{
|
|
577
|
+
key: "componentDidUpdate",
|
|
578
|
+
value: function componentDidUpdate(prevProps, prevState, snapshot) {
|
|
579
|
+
var _this$props8;
|
|
580
|
+
|
|
581
|
+
if (!(0, _isEqual["default"])(prevProps === null || prevProps === void 0 ? void 0 : prevProps.configuration, (_this$props8 = this.props) === null || _this$props8 === void 0 ? void 0 : _this$props8.configuration)) {
|
|
582
|
+
this.checkAndAdjustHeight(this.props);
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
}, {
|
|
572
586
|
key: "render",
|
|
573
587
|
value: function render() {
|
|
574
588
|
var _this2 = this;
|
|
575
589
|
|
|
576
|
-
var _this$
|
|
577
|
-
classes = _this$
|
|
578
|
-
model = _this$
|
|
579
|
-
_onChange = _this$
|
|
580
|
-
configuration = _this$
|
|
581
|
-
uploadSoundSupport = _this$
|
|
590
|
+
var _this$props9 = this.props,
|
|
591
|
+
classes = _this$props9.classes,
|
|
592
|
+
model = _this$props9.model,
|
|
593
|
+
_onChange = _this$props9.onChange,
|
|
594
|
+
configuration = _this$props9.configuration,
|
|
595
|
+
uploadSoundSupport = _this$props9.uploadSoundSupport;
|
|
582
596
|
|
|
583
597
|
var _ref8 = configuration || {},
|
|
584
598
|
_ref8$contentDimensio = _ref8.contentDimensions,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/main.jsx"],"names":["trimModel","model","feedback","undefined","prompt","teacherInstructions","graph","title","disabled","correctResponse","ticksModel","tickIntervalType","integerTick","fractionTick","decimalTick","fractionLabel","decimalLabel","data","minorLimits","minorValues","majorValues","lineIsSwitched","dataConverter","switchGraphLine","toGraphFormat","toSessionFormat","styles","theme","maxNumberOfPoints","width","checkbox","marginTop","spacing","unit","marginBottom","row","display","flexWrap","paddingRight","pointTypeChooser","margin","promptContainer","paddingTop","tooltip","fontSize","typography","whiteSpace","maxWidth","inlineFlexContainer","resetButton","errorText","color","palette","error","main","flexRow","alignItems","gap","description","toPointType","response","rest","pointType","direction","leftPoint","rightPoint","type","toUpperCase","Main","props","obj","onChange","respIndex","forEach","correctResp","key","domainPosition","domain","min","max","size","push","length","setState","correctAnswerDialog","open","text","indices","reloadTicksData","ticks","assignTicksModelToGraph","height","graphChange","tickUtils","getMinorLimits","generateMinorValues","initTickModel","minor","decimal","fraction","math","number","indexOf","Number","isInteger","firstInteger","find","el","index","reduce","a","b","Math","abs","ceil","generateMajorValuesForMinor","major","currIndex","ticksData","out","buildTickData","filter","x","tickStep","labelStep","availableTypes","onlyPFAvailable","Object","entries","value","e","floor","isAvailableTypesGreaterThanMaxElements","dialog","getAdjustedHeight","maxElements","availableTypeCount","object","snapElements","initialElements","arrows","defaultModel","position","update","Set","map","v","some","d","pop","state","classes","configuration","uploadSoundSupport","contentDimensions","instruction","mathMlOptions","numberLineDimensions","maxMaxElements","hidePointConfigButtons","availableTools","errors","spellCheckEnabled","toolbarEditorPosition","correctResponseError","domainError","maxError","pointsError","promptError","teacherInstructionsError","widthError","validationMessage","initialModel","toolbarOpts","label","settings","language","marginLeft","changeTicks","widthEnabled","step","changeSize","changeArrows","changeGraphTitle","exhibitOnly","availableTypesChange","changeMaxNoOfPoints","moveCorrectResponse","deleteCorrectResponse","addCorrectResponse","clearCorrectResponse","undoCorrectResponse","React","Component","PropTypes","isRequired","func","name"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { FormSection, InputContainer, AlertDialog, layout } from '@pie-lib/pie-toolbox/config-ui';\nimport { EditableHtml } from '@pie-lib/pie-toolbox/editable-html';\nimport { NumberLineComponent, dataConverter, tickUtils } from '@pie-element/number-line';\nimport NumberTextField from './number-text-field';\nimport CardBar from './card-bar';\nimport Size from './size';\nimport PropTypes from 'prop-types';\nimport Domain from './domain';\nimport Arrows from './arrows';\nimport PointConfig from './point-config';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { withStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport * as math from 'mathjs';\nimport Ticks from './ticks';\nimport { model as defaultModel } from './defaults';\nimport { generateValidationMessage } from './utils';\n\nconst trimModel = (model) => ({\n ...model,\n feedback: undefined,\n prompt: undefined,\n teacherInstructions: undefined,\n graph: { ...model.graph, title: undefined, disabled: true },\n correctResponse: undefined,\n});\n\n// Object holding information related to tick and label interval values.\nlet ticksModel = {\n tickIntervalType: 'Decimal',\n integerTick: 0,\n fractionTick: '0/1',\n decimalTick: 0,\n fractionLabel: '0/1',\n decimalLabel: 0,\n};\n// Object holding data related to possible values for ticks and label interval in array.\nlet data = {\n minorLimits: {},\n minorValues: {},\n majorValues: {},\n};\n\nconst { lineIsSwitched, switchGraphLine, toGraphFormat, toSessionFormat } = dataConverter;\n\nconst styles = (theme) => ({\n maxNumberOfPoints: {\n width: '150px',\n },\n checkbox: {\n marginTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n row: {\n display: 'flex',\n flexWrap: 'wrap',\n '& > *': {\n paddingRight: theme.spacing.unit * 2,\n },\n },\n pointTypeChooser: {\n margin: `${theme.spacing.unit * 2.5}px 0`,\n },\n promptContainer: {\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n width: '100%',\n },\n title: {\n marginBottom: theme.spacing.unit * 4,\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n inlineFlexContainer: {\n display: 'inline-flex',\n },\n resetButton: {\n marginBottom: theme.spacing.unit * 2.5,\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 description: {\n marginBottom: theme.spacing.unit * 2.5,\n },\n});\n\nexport const toPointType = (response) => {\n function rest(response) {\n if (response.pointType) {\n if (response.direction) {\n return `${response.pointType[0]}${response.direction[0]}`;\n }\n\n return response.pointType[0];\n }\n\n return `${response.leftPoint[0]}${response.rightPoint[0]}`;\n }\n\n return `${response.type[0]}${rest(response)}`.toUpperCase();\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 onChange: PropTypes.func.isRequired,\n uploadSoundSupport: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n const {\n model: {\n graph: { availableTypes, maxNumberOfPoints },\n },\n } = props;\n const height = this.getAdjustedHeight(availableTypes, maxNumberOfPoints);\n this.state = {\n dialog: {\n open: false,\n text: '',\n },\n correctAnswerDialog: {\n open: false,\n text: '',\n },\n };\n this.graphChange({ height });\n }\n\n graphChange = (obj) => {\n const { model, onChange } = this.props;\n const graph = { ...model.graph, ...obj };\n let respIndex = [];\n model.correctResponse.forEach((correctResp, key) => {\n if (\n correctResp.domainPosition < graph.domain.min ||\n correctResp.domainPosition > graph.domain.max ||\n (correctResp.size &&\n (correctResp.domainPosition + correctResp.size < graph.domain.min ||\n correctResp.domainPosition + correctResp.size > graph.domain.max))\n ) {\n respIndex.push(key);\n }\n });\n if (respIndex.length > 0) {\n this.setState({\n correctAnswerDialog: {\n open: true,\n text:\n 'This\\n' +\n 'change would make it impossible for students to plot one or more elements in the current\\n' +\n 'correct answer. If you proceed, all such elements will be removed from the correct\\n' +\n 'answer.',\n indices: respIndex,\n graph: model.graph,\n },\n });\n }\n this.reloadTicksData(graph.domain, graph.width, graph.ticks);\n this.assignTicksModelToGraph(graph);\n onChange({ graph });\n };\n\n changeSize = ({ width, height }) => this.graphChange({ width, height });\n\n /*\n * This function gets called whenever the min, max or width for number line is changed\n * and it calculates ticks and label values and stores in ticks model.\n * @param domain containing min and max values.\n * @param width represents number line width\n * @param ticks represnt current values for minor and major.\n * */\n reloadTicksData = (domain, width, ticks) => {\n //check correct response\n const { model } = this.props;\n const graph = { ...model.graph };\n\n data.minorLimits = tickUtils.getMinorLimits(domain, width);\n data.minorValues = tickUtils.generateMinorValues(data.minorLimits);\n data.majorValues = {};\n const initTickModel = () => {\n if (ticks.tickIntervalType) ticksModel.tickIntervalType = ticks.tickIntervalType;\n //setting minor values\n if (ticks.minor < data.minorLimits.min || ticks.minor > data.minorLimits.max) {\n ticksModel.decimalTick = data.minorValues.decimal[0];\n ticksModel.fractionTick = data.minorValues.fraction[0];\n } else {\n ticksModel.decimalTick = math.number(ticks.minor);\n ticksModel.fractionTick = data.minorValues.fraction[data.minorValues.decimal.indexOf(ticksModel.decimalTick)];\n }\n if (Number.isInteger(ticksModel.decimalTick)) {\n ticksModel.integerTick = math.number(ticksModel.decimalTick);\n } else {\n const firstInteger = data.minorValues.decimal.find(function (el) {\n return Number.isInteger(el);\n });\n if (firstInteger) {\n const index = data.minorValues.decimal.indexOf(firstInteger);\n ticksModel.integerTick = math.number(firstInteger);\n if (ticksModel.tickIntervalType === 'Integer') {\n ticksModel.fractionTick = data.minorValues.fraction[index];\n ticksModel.decimalTick = data.minorValues.decimal[index];\n }\n } else {\n if (ticksModel.tickIntervalType === 'Integer') {\n ticksModel.tickIntervalType = 'Fraction';\n ticksModel.decimalTick = data.minorValues.decimal[data.minorValues.decimal.length - 1];\n ticksModel.fractionTick = data.minorValues.fraction[data.minorValues.fraction.length - 1];\n }\n ticksModel.integerTick = data.minorValues.decimal.reduce((a, b) => {\n return Math.abs(b - ticksModel.decimalTick) < Math.abs(a - ticksModel.decimalTick) ? b : a;\n });\n if (!Number.isInteger(ticksModel.integerTick)) {\n ticksModel.integerTick = math.ceil(ticksModel.integerTick);\n }\n }\n }\n //setting major values\n data.majorValues = tickUtils.generateMajorValuesForMinor(ticksModel.decimalTick, data.minorValues);\n if (!ticks.major) {\n ticksModel.decimalLabel = data.majorValues.decimal[0];\n ticksModel.fractionLabel = data.majorValues.fraction[0];\n } else {\n ticksModel.decimalLabel = math.number(ticks.major);\n if (data.majorValues.decimal.indexOf(ticksModel.decimalLabel) === -1) {\n let currIndex = 0;\n if (ticksModel.tickIntervalType === 'Integer') {\n currIndex = 4;\n } else {\n currIndex = data.majorValues.decimal.length - 1;\n }\n while (currIndex !== 0) {\n let ticksData = { minor: ticksModel.decimalTick, major: data.majorValues.decimal[currIndex] };\n let out = tickUtils.buildTickData(domain, width, ticksData, { fraction: undefined });\n if (out.filter((x) => x.type === 'major').length > 1) {\n break;\n } else {\n currIndex = currIndex - 1;\n }\n }\n ticksModel.decimalLabel = data.majorValues.decimal[currIndex];\n ticksModel.fractionLabel = data.majorValues.fraction[currIndex];\n } else {\n ticksModel.fractionLabel =\n data.majorValues.fraction[data.majorValues.decimal.indexOf(ticksModel.decimalLabel)];\n }\n }\n };\n initTickModel();\n };\n\n /*\n * This function updates calculated ticks values to graph model.\n * @param graph object\n * */\n assignTicksModelToGraph = (graph) => {\n graph.ticks.minor = ticksModel.decimalTick;\n graph.ticks.major = ticksModel.decimalLabel;\n graph.ticks.tickIntervalType = ticksModel.tickIntervalType;\n graph.ticks.tickStep = ticksModel.fractionTick;\n graph.ticks.labelStep = ticksModel.fractionLabel;\n };\n\n getAdjustedHeight = (availableTypes, maxNumberOfPoints) => {\n let onlyPFAvailable = true;\n Object.entries(availableTypes || {}).forEach(([type, value]) => {\n if (type !== 'PF' && value) {\n onlyPFAvailable = false;\n return;\n }\n });\n return maxNumberOfPoints && (maxNumberOfPoints === 1 || onlyPFAvailable)\n ? 100\n : 50 + (maxNumberOfPoints || 20) * 25;\n };\n\n changeMaxNoOfPoints = (e, maxNumberOfPoints) => {\n maxNumberOfPoints = Math.floor(maxNumberOfPoints);\n if (this.isAvailableTypesGreaterThanMaxElements(this.props.model.graph.availableTypes, maxNumberOfPoints)) {\n this.setState({\n dialog: {\n open: true,\n text: 'To use this value, you must first remove one or more elements from the available types.',\n },\n });\n return;\n }\n if (this.props.model.correctResponse.length > maxNumberOfPoints) {\n this.setState({\n dialog: {\n open: true,\n text: 'To use this value, you must first remove one or more elements from the correct answers.',\n },\n });\n return;\n }\n const {\n model: {\n graph: { availableTypes },\n },\n } = this.props;\n const height = this.getAdjustedHeight(availableTypes, maxNumberOfPoints);\n\n this.graphChange({ maxNumberOfPoints, height });\n };\n\n /*\n * Validation check on wether available type of dot plot is greater than max elements allowed to plot.\n * @param availableTypes array of string.\n * @param maxElements number of max elements to use set by user.\n * @return boolean.\n * */\n isAvailableTypesGreaterThanMaxElements = (availableTypes, maxElements) => {\n let availableTypeCount = 0;\n Object.entries(availableTypes || {}).forEach(([type, value]) => {\n if (value) {\n availableTypeCount = availableTypeCount + 1;\n }\n });\n return availableTypeCount > maxElements;\n };\n\n changeGraphTitle = (title) => this.graphChange({ title });\n\n /*\n * Gets triggered whenever ticks related data is changed by user.\n * */\n changeTicks = (object) => {\n const { model, onChange } = this.props;\n const { ticks } = model.graph;\n ticks.minor = object.ticksModel.decimalTick;\n ticks.major = object.ticksModel.decimalLabel;\n ticks.tickIntervalType = object.ticksModel.tickIntervalType;\n ticks.tickStep = object.ticksModel.fractionTick;\n ticks.labelStep = object.ticksModel.fractionLabel;\n const correctResponse = tickUtils.snapElements(model.graph.domain, ticks, model.correctResponse);\n const initialElements = tickUtils.snapElements(model.graph.domain, ticks, model.graph.initialElements);\n const graph = { ...model.graph, ticks, initialElements };\n this.reloadTicksData(graph.domain, graph.width, graph.ticks);\n this.assignTicksModelToGraph(graph);\n onChange({ graph, correctResponse });\n };\n\n changeArrows = (arrows) => this.graphChange({ arrows });\n\n setDefaults = () => {\n const {\n graph: { availableTypes, maxNumberOfPoints },\n } = defaultModel;\n const height = this.getAdjustedHeight(availableTypes, maxNumberOfPoints);\n const graph = { ...cloneDeep(defaultModel.graph), height };\n\n this.props.onChange({ graph });\n };\n\n moveCorrectResponse = (index, el, position) => {\n el.position = position;\n\n const { onChange, model } = this.props;\n const update = toSessionFormat(el.type === 'line' && lineIsSwitched(el) ? switchGraphLine(el) : el);\n const correctResponse = [...model.correctResponse];\n correctResponse[index] = update;\n\n onChange({ correctResponse });\n };\n\n availableTypesChange = (availableTypes) => {\n const { model, onChange } = this.props;\n const {\n correctResponse,\n graph: { maxNumberOfPoints },\n } = model;\n\n let availableTypeCount = 0;\n Object.entries(availableTypes || {}).forEach(([type, value]) => {\n if (value) {\n availableTypeCount = availableTypeCount + 1;\n }\n });\n if (maxNumberOfPoints < availableTypeCount) {\n this.props.model.graph.maxNumberOfPoints = availableTypeCount;\n }\n\n new Set(correctResponse.map(toPointType)).forEach((pointType) => {\n availableTypes[pointType] = true;\n });\n\n const height = this.getAdjustedHeight(availableTypes, this.props.model.graph.maxNumberOfPoints);\n const graph = { ...model.graph, availableTypes, height };\n\n onChange({ graph });\n };\n\n deleteCorrectResponse = (indices) => {\n const { model, onChange } = this.props;\n const correctResponse = model.correctResponse.filter((v, index) => !indices.some((d) => d === index));\n\n onChange({ correctResponse });\n };\n\n addCorrectResponse = (data) => {\n const { model, onChange } = this.props;\n const correctResponse = [...model.correctResponse];\n correctResponse.push(toSessionFormat(data));\n\n onChange({ correctResponse });\n };\n\n clearCorrectResponse = () => {\n const { onChange } = this.props;\n\n onChange({ correctResponse: [] });\n };\n\n undoCorrectResponse = () => {\n const { model, onChange } = this.props;\n const correctResponse = [...model.correctResponse];\n correctResponse.pop();\n onChange({ correctResponse });\n };\n\n render() {\n const { classes, model, onChange, configuration, uploadSoundSupport } = this.props;\n const {\n contentDimensions = {},\n instruction = {},\n teacherInstructions = {},\n prompt = {},\n mathMlOptions = {},\n numberLineDimensions = {},\n maxMaxElements = 20,\n hidePointConfigButtons = false,\n availableTools = ['PF'],\n } = configuration || {};\n const { errors = {}, graph, spellCheckEnabled, toolbarEditorPosition } = model || {};\n this.reloadTicksData(graph.domain, graph.width, graph.ticks);\n const { dialog, correctAnswerDialog } = this.state;\n const {\n correctResponseError,\n domainError,\n maxError,\n pointsError,\n prompt: promptError,\n teacherInstructions: teacherInstructionsError,\n widthError,\n } = errors || {};\n const validationMessage = generateValidationMessage();\n\n const correctResponse = cloneDeep(model.correctResponse || []).map(toGraphFormat);\n\n const initialModel = cloneDeep(model);\n initialModel['disabled'] = true;\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n return (\n <layout.ConfigLayout dimensions={contentDimensions} hideSettings={true} settings={null}>\n <Typography component=\"div\" type=\"body1\" className={classes.description}>\n {instruction.label}\n </Typography>\n\n {teacherInstructions.settings && (\n <InputContainer label={teacherInstructions.label} className={classes.promptContainer}>\n <EditableHtml\n className={classes.teacherInstructions}\n markup={model.teacherInstructions}\n onChange={(teacherInstructions) => onChange({ teacherInstructions })}\n nonEmpty={false}\n disableUnderline\n error={teacherInstructionsError}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {teacherInstructionsError && <div className={classes.errorText}>{teacherInstructionsError}</div>}\n </InputContainer>\n )}\n\n {prompt.settings && (\n <InputContainer label={prompt.label} className={classes.promptContainer}>\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={(prompt) => onChange({ prompt })}\n nonEmpty={false}\n disableUnderline\n error={promptError}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {promptError && <div className={classes.errorText}>{promptError}</div>}\n </InputContainer>\n )}\n\n <CardBar\n header=\"Set Up Number Line\"\n info={\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} style={{ marginLeft: '8px' }} />\n </Tooltip>\n }\n >\n Set up the number line by entering the domain and number of tick marks to display. Labels on the number line\n can be edited or removed by clicking on the label.\n </CardBar>\n\n <div className={classes.row}>\n <Domain domain={graph.domain} errors={errors} onChange={(domain) => this.graphChange({ domain })} />\n </div>\n\n {maxError && <div className={classes.errorText}>{maxError}</div>}\n {domainError && <div className={classes.errorText}>{domainError}</div>}\n\n <div>\n <FormSection>\n <Ticks ticksModel={ticksModel} data={data} onChange={this.changeTicks} />\n </FormSection>\n </div>\n\n <div className={classes.flexRow}>\n {model.widthEnabled && (\n <Size\n size={graph}\n min={numberLineDimensions.min}\n max={numberLineDimensions.max}\n step={numberLineDimensions.step}\n onChange={this.changeSize}\n />\n )}\n <div></div>\n <Arrows arrows={graph.arrows} onChange={this.changeArrows} />\n </div>\n\n {widthError && <div className={classes.errorText}>{widthError}</div>}\n\n <NumberLineComponent\n onMoveElement={() => {}}\n onDeleteElements={() => {}}\n onAddElement={() => {}}\n onClearElements={() => {}}\n onUndoElement={() => {}}\n minWidth={numberLineDimensions.min}\n maxWidth={numberLineDimensions.max}\n model={trimModel(initialModel)}\n />\n\n <FormSection label={'Title'} className={classes.title}>\n <EditableHtml\n markup={graph.title || ''}\n onChange={this.changeGraphTitle}\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 spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n </FormSection>\n\n {!graph.exhibitOnly && (\n <React.Fragment>\n <CardBar header=\"Define Tool Set and Correct Response\">\n Select answer type and place it on the number line. Intersecting points, line segments and/or rays will\n appear above the number line. <i>Note: A maximum of 20 points, line segments or rays may be plotted.</i>\n </CardBar>\n\n <CardBar header=\"Available Tools\" mini>\n Click on the input options to be displayed to the students. All inputs will display by default.\n </CardBar>\n\n <div className={classes.pointTypeChooser}>\n <PointConfig\n onSelectionChange={this.availableTypesChange}\n selection={graph.availableTypes}\n availableTools={availableTools}\n hideButtons={hidePointConfigButtons}\n />\n </div>\n\n <FormSection className={classes.flexRow}>\n <label>Max No of Elements</label>\n <NumberTextField\n className={classes.maxNumberOfPoints}\n min={1}\n max={maxMaxElements}\n onlyIntegersAllowed={true}\n value={graph.maxNumberOfPoints}\n onChange={this.changeMaxNoOfPoints}\n />\n {pointsError && <div className={classes.errorText}>{pointsError}</div>}\n </FormSection>\n\n <label>Correct Answer</label>\n\n <NumberLineComponent\n onMoveElement={this.moveCorrectResponse}\n onDeleteElements={this.deleteCorrectResponse}\n onAddElement={this.addCorrectResponse}\n onClearElements={this.clearCorrectResponse}\n onUndoElement={this.undoCorrectResponse}\n minWidth={numberLineDimensions.min}\n maxWidth={numberLineDimensions.max}\n answer={correctResponse}\n //strip feedback for this model\n model={trimModel(model)}\n />\n {correctResponseError && <div className={classes.errorText}>{correctResponseError}</div>}\n </React.Fragment>\n )}\n <AlertDialog\n open={dialog.open}\n title=\"Warning\"\n text={dialog.text}\n onConfirm={() => this.setState({ dialog: { open: false } })}\n />\n <AlertDialog\n open={correctAnswerDialog.open}\n title=\"Warning\"\n text={correctAnswerDialog.text}\n onConfirm={() => {\n let indices = this.state.correctAnswerDialog.indices;\n if (indices && indices.length > 0) {\n this.deleteCorrectResponse(indices);\n }\n this.setState({ correctAnswerDialog: { open: false } });\n }}\n onClose={() => {\n const graph = this.state.correctAnswerDialog.graph;\n this.reloadTicksData(graph.domain, graph.width, graph.ticks);\n this.assignTicksModelToGraph(graph);\n onChange({ graph });\n this.setState({ correctAnswerDialog: { 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":["trimModel","model","feedback","undefined","prompt","teacherInstructions","graph","title","disabled","correctResponse","ticksModel","tickIntervalType","integerTick","fractionTick","decimalTick","fractionLabel","decimalLabel","data","minorLimits","minorValues","majorValues","lineIsSwitched","dataConverter","switchGraphLine","toGraphFormat","toSessionFormat","styles","theme","maxNumberOfPoints","width","checkbox","marginTop","spacing","unit","marginBottom","row","display","flexWrap","paddingRight","pointTypeChooser","margin","promptContainer","paddingTop","tooltip","fontSize","typography","whiteSpace","maxWidth","inlineFlexContainer","resetButton","errorText","color","palette","error","main","flexRow","alignItems","gap","description","toPointType","response","rest","pointType","direction","leftPoint","rightPoint","type","toUpperCase","Main","props","availableTypes","height","getAdjustedHeight","graphChange","obj","onChange","respIndex","forEach","correctResp","key","domainPosition","domain","min","max","size","push","length","setState","correctAnswerDialog","open","text","indices","reloadTicksData","ticks","assignTicksModelToGraph","tickUtils","getMinorLimits","generateMinorValues","initTickModel","minor","decimal","fraction","math","number","indexOf","Number","isInteger","firstInteger","find","el","index","reduce","a","b","Math","abs","ceil","generateMajorValuesForMinor","major","currIndex","ticksData","out","buildTickData","filter","x","tickStep","labelStep","onlyPFAvailable","Object","entries","value","e","floor","isAvailableTypesGreaterThanMaxElements","dialog","maxElements","availableTypeCount","object","snapElements","initialElements","arrows","defaultModel","position","update","Set","map","v","some","d","pop","state","checkAndAdjustHeight","prevProps","prevState","snapshot","configuration","classes","uploadSoundSupport","contentDimensions","instruction","mathMlOptions","numberLineDimensions","maxMaxElements","hidePointConfigButtons","availableTools","errors","spellCheckEnabled","toolbarEditorPosition","correctResponseError","domainError","maxError","pointsError","promptError","teacherInstructionsError","widthError","validationMessage","initialModel","toolbarOpts","label","settings","language","marginLeft","changeTicks","widthEnabled","step","changeSize","changeArrows","changeGraphTitle","exhibitOnly","availableTypesChange","changeMaxNoOfPoints","moveCorrectResponse","deleteCorrectResponse","addCorrectResponse","clearCorrectResponse","undoCorrectResponse","React","Component","PropTypes","isRequired","func","name"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { FormSection, InputContainer, AlertDialog, layout } from '@pie-lib/pie-toolbox/config-ui';\nimport { EditableHtml } from '@pie-lib/pie-toolbox/editable-html';\nimport { NumberLineComponent, dataConverter, tickUtils } from '@pie-element/number-line';\nimport NumberTextField from './number-text-field';\nimport CardBar from './card-bar';\nimport Size from './size';\nimport PropTypes from 'prop-types';\nimport Domain from './domain';\nimport Arrows from './arrows';\nimport PointConfig from './point-config';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { withStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport * as math from 'mathjs';\nimport Ticks from './ticks';\nimport { model as defaultModel } from './defaults';\nimport { generateValidationMessage } from './utils';\nimport isEqual from 'lodash/isEqual';\n\nconst trimModel = (model) => ({\n ...model,\n feedback: undefined,\n prompt: undefined,\n teacherInstructions: undefined,\n graph: { ...model.graph, title: undefined, disabled: true },\n correctResponse: undefined,\n});\n\n// Object holding information related to tick and label interval values.\nlet ticksModel = {\n tickIntervalType: 'Decimal',\n integerTick: 0,\n fractionTick: '0/1',\n decimalTick: 0,\n fractionLabel: '0/1',\n decimalLabel: 0,\n};\n// Object holding data related to possible values for ticks and label interval in array.\nlet data = {\n minorLimits: {},\n minorValues: {},\n majorValues: {},\n};\n\nconst { lineIsSwitched, switchGraphLine, toGraphFormat, toSessionFormat } = dataConverter;\n\nconst styles = (theme) => ({\n maxNumberOfPoints: {\n width: '150px',\n },\n checkbox: {\n marginTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n row: {\n display: 'flex',\n flexWrap: 'wrap',\n '& > *': {\n paddingRight: theme.spacing.unit * 2,\n },\n },\n pointTypeChooser: {\n margin: `${theme.spacing.unit * 2.5}px 0`,\n },\n promptContainer: {\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n width: '100%',\n },\n title: {\n marginBottom: theme.spacing.unit * 4,\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n inlineFlexContainer: {\n display: 'inline-flex',\n },\n resetButton: {\n marginBottom: theme.spacing.unit * 2.5,\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 description: {\n marginBottom: theme.spacing.unit * 2.5,\n },\n});\n\nexport const toPointType = (response) => {\n function rest(response) {\n if (response.pointType) {\n if (response.direction) {\n return `${response.pointType[0]}${response.direction[0]}`;\n }\n\n return response.pointType[0];\n }\n\n return `${response.leftPoint[0]}${response.rightPoint[0]}`;\n }\n\n return `${response.type[0]}${rest(response)}`.toUpperCase();\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 onChange: PropTypes.func.isRequired,\n uploadSoundSupport: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n dialog: {\n open: false,\n text: '',\n },\n correctAnswerDialog: {\n open: false,\n text: '',\n },\n };\n\n this.checkAndAdjustHeight(props);\n }\n\n checkAndAdjustHeight = (props) => {\n const {\n model: {\n graph: { availableTypes, maxNumberOfPoints },\n },\n } = props;\n\n const height = this.getAdjustedHeight(availableTypes, maxNumberOfPoints);\n this.graphChange({ height });\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (!isEqual(prevProps?.configuration, this.props?.configuration)) {\n this.checkAndAdjustHeight(this.props);\n }\n }\n\n graphChange = (obj) => {\n const { model, onChange } = this.props;\n const graph = { ...model.graph, ...obj };\n let respIndex = [];\n model.correctResponse.forEach((correctResp, key) => {\n if (\n correctResp.domainPosition < graph.domain.min ||\n correctResp.domainPosition > graph.domain.max ||\n (correctResp.size &&\n (correctResp.domainPosition + correctResp.size < graph.domain.min ||\n correctResp.domainPosition + correctResp.size > graph.domain.max))\n ) {\n respIndex.push(key);\n }\n });\n if (respIndex.length > 0) {\n this.setState({\n correctAnswerDialog: {\n open: true,\n text:\n 'This\\n' +\n 'change would make it impossible for students to plot one or more elements in the current\\n' +\n 'correct answer. If you proceed, all such elements will be removed from the correct\\n' +\n 'answer.',\n indices: respIndex,\n graph: model.graph,\n },\n });\n }\n this.reloadTicksData(graph.domain, graph.width, graph.ticks);\n this.assignTicksModelToGraph(graph);\n onChange({ graph });\n };\n\n changeSize = ({ width, height }) => this.graphChange({ width, height });\n\n /*\n * This function gets called whenever the min, max or width for number line is changed\n * and it calculates ticks and label values and stores in ticks model.\n * @param domain containing min and max values.\n * @param width represents number line width\n * @param ticks represnt current values for minor and major.\n * */\n reloadTicksData = (domain, width, ticks) => {\n //check correct response\n const { model } = this.props;\n const graph = { ...model.graph };\n\n data.minorLimits = tickUtils.getMinorLimits(domain, width);\n data.minorValues = tickUtils.generateMinorValues(data.minorLimits);\n data.majorValues = {};\n const initTickModel = () => {\n if (ticks.tickIntervalType) ticksModel.tickIntervalType = ticks.tickIntervalType;\n //setting minor values\n if (ticks.minor < data.minorLimits.min || ticks.minor > data.minorLimits.max) {\n ticksModel.decimalTick = data.minorValues.decimal[0];\n ticksModel.fractionTick = data.minorValues.fraction[0];\n } else {\n ticksModel.decimalTick = math.number(ticks.minor);\n ticksModel.fractionTick = data.minorValues.fraction[data.minorValues.decimal.indexOf(ticksModel.decimalTick)];\n }\n if (Number.isInteger(ticksModel.decimalTick)) {\n ticksModel.integerTick = math.number(ticksModel.decimalTick);\n } else {\n const firstInteger = data.minorValues.decimal.find(function (el) {\n return Number.isInteger(el);\n });\n if (firstInteger) {\n const index = data.minorValues.decimal.indexOf(firstInteger);\n ticksModel.integerTick = math.number(firstInteger);\n if (ticksModel.tickIntervalType === 'Integer') {\n ticksModel.fractionTick = data.minorValues.fraction[index];\n ticksModel.decimalTick = data.minorValues.decimal[index];\n }\n } else {\n if (ticksModel.tickIntervalType === 'Integer') {\n ticksModel.tickIntervalType = 'Fraction';\n ticksModel.decimalTick = data.minorValues.decimal[data.minorValues.decimal.length - 1];\n ticksModel.fractionTick = data.minorValues.fraction[data.minorValues.fraction.length - 1];\n }\n ticksModel.integerTick = data.minorValues.decimal.reduce((a, b) => {\n return Math.abs(b - ticksModel.decimalTick) < Math.abs(a - ticksModel.decimalTick) ? b : a;\n });\n if (!Number.isInteger(ticksModel.integerTick)) {\n ticksModel.integerTick = math.ceil(ticksModel.integerTick);\n }\n }\n }\n //setting major values\n data.majorValues = tickUtils.generateMajorValuesForMinor(ticksModel.decimalTick, data.minorValues);\n if (!ticks.major) {\n ticksModel.decimalLabel = data.majorValues.decimal[0];\n ticksModel.fractionLabel = data.majorValues.fraction[0];\n } else {\n ticksModel.decimalLabel = math.number(ticks.major);\n if (data.majorValues.decimal.indexOf(ticksModel.decimalLabel) === -1) {\n let currIndex = 0;\n if (ticksModel.tickIntervalType === 'Integer') {\n currIndex = 4;\n } else {\n currIndex = data.majorValues.decimal.length - 1;\n }\n while (currIndex !== 0) {\n let ticksData = { minor: ticksModel.decimalTick, major: data.majorValues.decimal[currIndex] };\n let out = tickUtils.buildTickData(domain, width, ticksData, { fraction: undefined });\n if (out.filter((x) => x.type === 'major').length > 1) {\n break;\n } else {\n currIndex = currIndex - 1;\n }\n }\n ticksModel.decimalLabel = data.majorValues.decimal[currIndex];\n ticksModel.fractionLabel = data.majorValues.fraction[currIndex];\n } else {\n ticksModel.fractionLabel =\n data.majorValues.fraction[data.majorValues.decimal.indexOf(ticksModel.decimalLabel)];\n }\n }\n };\n initTickModel();\n };\n\n /*\n * This function updates calculated ticks values to graph model.\n * @param graph object\n * */\n assignTicksModelToGraph = (graph) => {\n graph.ticks.minor = ticksModel.decimalTick;\n graph.ticks.major = ticksModel.decimalLabel;\n graph.ticks.tickIntervalType = ticksModel.tickIntervalType;\n graph.ticks.tickStep = ticksModel.fractionTick;\n graph.ticks.labelStep = ticksModel.fractionLabel;\n };\n\n getAdjustedHeight = (availableTypes, maxNumberOfPoints) => {\n let onlyPFAvailable = true;\n Object.entries(availableTypes || {}).forEach(([type, value]) => {\n if (type !== 'PF' && value) {\n onlyPFAvailable = false;\n return;\n }\n });\n return maxNumberOfPoints && (maxNumberOfPoints === 1 || onlyPFAvailable)\n ? 100\n : 50 + (maxNumberOfPoints || 20) * 25;\n };\n\n changeMaxNoOfPoints = (e, maxNumberOfPoints) => {\n maxNumberOfPoints = Math.floor(maxNumberOfPoints);\n if (this.isAvailableTypesGreaterThanMaxElements(this.props.model.graph.availableTypes, maxNumberOfPoints)) {\n this.setState({\n dialog: {\n open: true,\n text: 'To use this value, you must first remove one or more elements from the available types.',\n },\n });\n return;\n }\n if (this.props.model.correctResponse.length > maxNumberOfPoints) {\n this.setState({\n dialog: {\n open: true,\n text: 'To use this value, you must first remove one or more elements from the correct answers.',\n },\n });\n return;\n }\n const {\n model: {\n graph: { availableTypes },\n },\n } = this.props;\n const height = this.getAdjustedHeight(availableTypes, maxNumberOfPoints);\n\n this.graphChange({ maxNumberOfPoints, height });\n };\n\n /*\n * Validation check on wether available type of dot plot is greater than max elements allowed to plot.\n * @param availableTypes array of string.\n * @param maxElements number of max elements to use set by user.\n * @return boolean.\n * */\n isAvailableTypesGreaterThanMaxElements = (availableTypes, maxElements) => {\n let availableTypeCount = 0;\n Object.entries(availableTypes || {}).forEach(([type, value]) => {\n if (value) {\n availableTypeCount = availableTypeCount + 1;\n }\n });\n return availableTypeCount > maxElements;\n };\n\n changeGraphTitle = (title) => this.graphChange({ title });\n\n /*\n * Gets triggered whenever ticks related data is changed by user.\n * */\n changeTicks = (object) => {\n const { model, onChange } = this.props;\n const { ticks } = model.graph;\n ticks.minor = object.ticksModel.decimalTick;\n ticks.major = object.ticksModel.decimalLabel;\n ticks.tickIntervalType = object.ticksModel.tickIntervalType;\n ticks.tickStep = object.ticksModel.fractionTick;\n ticks.labelStep = object.ticksModel.fractionLabel;\n const correctResponse = tickUtils.snapElements(model.graph.domain, ticks, model.correctResponse);\n const initialElements = tickUtils.snapElements(model.graph.domain, ticks, model.graph.initialElements);\n const graph = { ...model.graph, ticks, initialElements };\n this.reloadTicksData(graph.domain, graph.width, graph.ticks);\n this.assignTicksModelToGraph(graph);\n onChange({ graph, correctResponse });\n };\n\n changeArrows = (arrows) => this.graphChange({ arrows });\n\n setDefaults = () => {\n const {\n graph: { availableTypes, maxNumberOfPoints },\n } = defaultModel;\n const height = this.getAdjustedHeight(availableTypes, maxNumberOfPoints);\n const graph = { ...cloneDeep(defaultModel.graph), height };\n\n this.props.onChange({ graph });\n };\n\n moveCorrectResponse = (index, el, position) => {\n el.position = position;\n\n const { onChange, model } = this.props;\n const update = toSessionFormat(el.type === 'line' && lineIsSwitched(el) ? switchGraphLine(el) : el);\n const correctResponse = [...model.correctResponse];\n correctResponse[index] = update;\n\n onChange({ correctResponse });\n };\n\n availableTypesChange = (availableTypes) => {\n const { model, onChange } = this.props;\n const {\n correctResponse,\n graph: { maxNumberOfPoints },\n } = model;\n\n let availableTypeCount = 0;\n Object.entries(availableTypes || {}).forEach(([type, value]) => {\n if (value) {\n availableTypeCount = availableTypeCount + 1;\n }\n });\n if (maxNumberOfPoints < availableTypeCount) {\n this.props.model.graph.maxNumberOfPoints = availableTypeCount;\n }\n\n new Set(correctResponse.map(toPointType)).forEach((pointType) => {\n availableTypes[pointType] = true;\n });\n\n const height = this.getAdjustedHeight(availableTypes, this.props.model.graph.maxNumberOfPoints);\n const graph = { ...model.graph, availableTypes, height };\n\n onChange({ graph });\n };\n\n deleteCorrectResponse = (indices) => {\n const { model, onChange } = this.props;\n const correctResponse = model.correctResponse.filter((v, index) => !indices.some((d) => d === index));\n\n onChange({ correctResponse });\n };\n\n addCorrectResponse = (data) => {\n const { model, onChange } = this.props;\n const correctResponse = [...model.correctResponse];\n correctResponse.push(toSessionFormat(data));\n\n onChange({ correctResponse });\n };\n\n clearCorrectResponse = () => {\n const { onChange } = this.props;\n\n onChange({ correctResponse: [] });\n };\n\n undoCorrectResponse = () => {\n const { model, onChange } = this.props;\n const correctResponse = [...model.correctResponse];\n correctResponse.pop();\n onChange({ correctResponse });\n };\n\n render() {\n const { classes, model, onChange, configuration, uploadSoundSupport } = this.props;\n const {\n contentDimensions = {},\n instruction = {},\n teacherInstructions = {},\n prompt = {},\n mathMlOptions = {},\n numberLineDimensions = {},\n maxMaxElements = 20,\n hidePointConfigButtons = false,\n availableTools = ['PF'],\n } = configuration || {};\n const { errors = {}, graph, spellCheckEnabled, toolbarEditorPosition } = model || {};\n this.reloadTicksData(graph.domain, graph.width, graph.ticks);\n const { dialog, correctAnswerDialog } = this.state;\n const {\n correctResponseError,\n domainError,\n maxError,\n pointsError,\n prompt: promptError,\n teacherInstructions: teacherInstructionsError,\n widthError,\n } = errors || {};\n const validationMessage = generateValidationMessage();\n\n const correctResponse = cloneDeep(model.correctResponse || []).map(toGraphFormat);\n\n const initialModel = cloneDeep(model);\n initialModel['disabled'] = true;\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n return (\n <layout.ConfigLayout dimensions={contentDimensions} hideSettings={true} settings={null}>\n <Typography component=\"div\" type=\"body1\" className={classes.description}>\n {instruction.label}\n </Typography>\n\n {teacherInstructions.settings && (\n <InputContainer label={teacherInstructions.label} className={classes.promptContainer}>\n <EditableHtml\n className={classes.teacherInstructions}\n markup={model.teacherInstructions}\n onChange={(teacherInstructions) => onChange({ teacherInstructions })}\n nonEmpty={false}\n disableUnderline\n error={teacherInstructionsError}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {teacherInstructionsError && <div className={classes.errorText}>{teacherInstructionsError}</div>}\n </InputContainer>\n )}\n\n {prompt.settings && (\n <InputContainer label={prompt.label} className={classes.promptContainer}>\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={(prompt) => onChange({ prompt })}\n nonEmpty={false}\n disableUnderline\n error={promptError}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {promptError && <div className={classes.errorText}>{promptError}</div>}\n </InputContainer>\n )}\n\n <CardBar\n header=\"Set Up Number Line\"\n info={\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} style={{ marginLeft: '8px' }} />\n </Tooltip>\n }\n >\n Set up the number line by entering the domain and number of tick marks to display. Labels on the number line\n can be edited or removed by clicking on the label.\n </CardBar>\n\n <div className={classes.row}>\n <Domain domain={graph.domain} errors={errors} onChange={(domain) => this.graphChange({ domain })} />\n </div>\n\n {maxError && <div className={classes.errorText}>{maxError}</div>}\n {domainError && <div className={classes.errorText}>{domainError}</div>}\n\n <div>\n <FormSection>\n <Ticks ticksModel={ticksModel} data={data} onChange={this.changeTicks} />\n </FormSection>\n </div>\n\n <div className={classes.flexRow}>\n {model.widthEnabled && (\n <Size\n size={graph}\n min={numberLineDimensions.min}\n max={numberLineDimensions.max}\n step={numberLineDimensions.step}\n onChange={this.changeSize}\n />\n )}\n <div></div>\n <Arrows arrows={graph.arrows} onChange={this.changeArrows} />\n </div>\n\n {widthError && <div className={classes.errorText}>{widthError}</div>}\n\n <NumberLineComponent\n onMoveElement={() => {}}\n onDeleteElements={() => {}}\n onAddElement={() => {}}\n onClearElements={() => {}}\n onUndoElement={() => {}}\n minWidth={numberLineDimensions.min}\n maxWidth={numberLineDimensions.max}\n model={trimModel(initialModel)}\n />\n\n <FormSection label={'Title'} className={classes.title}>\n <EditableHtml\n markup={graph.title || ''}\n onChange={this.changeGraphTitle}\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 spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n </FormSection>\n\n {!graph.exhibitOnly && (\n <React.Fragment>\n <CardBar header=\"Define Tool Set and Correct Response\">\n Select answer type and place it on the number line. Intersecting points, line segments and/or rays will\n appear above the number line. <i>Note: A maximum of 20 points, line segments or rays may be plotted.</i>\n </CardBar>\n\n <CardBar header=\"Available Tools\" mini>\n Click on the input options to be displayed to the students. All inputs will display by default.\n </CardBar>\n\n <div className={classes.pointTypeChooser}>\n <PointConfig\n onSelectionChange={this.availableTypesChange}\n selection={graph.availableTypes}\n availableTools={availableTools}\n hideButtons={hidePointConfigButtons}\n />\n </div>\n\n <FormSection className={classes.flexRow}>\n <label>Max No of Elements</label>\n <NumberTextField\n className={classes.maxNumberOfPoints}\n min={1}\n max={maxMaxElements}\n onlyIntegersAllowed={true}\n value={graph.maxNumberOfPoints}\n onChange={this.changeMaxNoOfPoints}\n />\n {pointsError && <div className={classes.errorText}>{pointsError}</div>}\n </FormSection>\n\n <label>Correct Answer</label>\n\n <NumberLineComponent\n onMoveElement={this.moveCorrectResponse}\n onDeleteElements={this.deleteCorrectResponse}\n onAddElement={this.addCorrectResponse}\n onClearElements={this.clearCorrectResponse}\n onUndoElement={this.undoCorrectResponse}\n minWidth={numberLineDimensions.min}\n maxWidth={numberLineDimensions.max}\n answer={correctResponse}\n //strip feedback for this model\n model={trimModel(model)}\n />\n {correctResponseError && <div className={classes.errorText}>{correctResponseError}</div>}\n </React.Fragment>\n )}\n <AlertDialog\n open={dialog.open}\n title=\"Warning\"\n text={dialog.text}\n onConfirm={() => this.setState({ dialog: { open: false } })}\n />\n <AlertDialog\n open={correctAnswerDialog.open}\n title=\"Warning\"\n text={correctAnswerDialog.text}\n onConfirm={() => {\n let indices = this.state.correctAnswerDialog.indices;\n if (indices && indices.length > 0) {\n this.deleteCorrectResponse(indices);\n }\n this.setState({ correctAnswerDialog: { open: false } });\n }}\n onClose={() => {\n const graph = this.state.correctAnswerDialog.graph;\n this.reloadTicksData(graph.domain, graph.width, graph.ticks);\n this.assignTicksModelToGraph(graph);\n onChange({ graph });\n this.setState({ correctAnswerDialog: { 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,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/number-line-configure",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "6.
|
|
4
|
+
"version": "6.5.0",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "src/index.js",
|
|
7
7
|
"dependencies": {
|
|
8
8
|
"@material-ui/core": "^3.9.2",
|
|
9
9
|
"@pie-framework/pie-configure-events": "^1.3.0",
|
|
10
10
|
"@pie-lib/pie-toolbox": "1.5.7",
|
|
11
|
+
"lodash": "^4.17.15",
|
|
11
12
|
"react": "^16.8.1",
|
|
12
13
|
"react-dom": "^16.8.1"
|
|
13
14
|
}
|
package/docs/demo/generate.js
CHANGED
|
@@ -1,41 +1,39 @@
|
|
|
1
1
|
exports.model = (id, element) => ({
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
{
|
|
5
|
-
pointType: 'full',
|
|
6
|
-
type: 'point',
|
|
7
|
-
domainPosition: 0,
|
|
8
|
-
},
|
|
2
|
+
"correctResponse": [
|
|
3
|
+
{ "type": "point", "pointType": "full", "domainPosition": 0 }
|
|
9
4
|
],
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
arrows: {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
},
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
5
|
+
"feedback": {
|
|
6
|
+
"correct": { "type": "default", "default": "Correct" },
|
|
7
|
+
"partial": { "type": "default", "default": "Nearly" },
|
|
8
|
+
"incorrect": { "type": "default", "default": "Incorrect" }
|
|
9
|
+
},
|
|
10
|
+
"prompt": "",
|
|
11
|
+
"widthEnabled": true,
|
|
12
|
+
"graph": {
|
|
13
|
+
"title": "",
|
|
14
|
+
"arrows": { "left": true, "right": true },
|
|
15
|
+
"width": 500,
|
|
16
|
+
"domain": { "min": -5, "max": 5 },
|
|
17
|
+
"ticks": { "minor": 1, "major": 2, "labelStep": '2', "tickIntervalType": 'Integer', "tickStep": '1' },
|
|
18
|
+
"initialElements": [],
|
|
19
|
+
"maxNumberOfPoints": 30,
|
|
20
|
+
"showMinorTicks": true,
|
|
21
|
+
"snapPerTick": 1,
|
|
22
|
+
"tickLabelOverrides": [],
|
|
23
|
+
"initialType": "PF",
|
|
24
|
+
"exhibitOnly": false,
|
|
25
|
+
"availableTypes": {
|
|
26
|
+
"PF": true,
|
|
27
|
+
"LFF": true,
|
|
28
|
+
"LEF": true,
|
|
29
|
+
"LFE": true,
|
|
30
|
+
"LEE": true,
|
|
31
|
+
"RFN": true,
|
|
32
|
+
"RFP": true,
|
|
33
|
+
"REN": true,
|
|
34
|
+
"REP": true
|
|
35
|
+
}
|
|
35
36
|
},
|
|
36
|
-
widthEnabled: true,
|
|
37
37
|
id,
|
|
38
|
-
teacherInstructions: '',
|
|
39
|
-
prompt: '',
|
|
40
38
|
element,
|
|
41
39
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/number-line",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.5.0",
|
|
4
4
|
"repository": "pie-framework/pie-elements",
|
|
5
5
|
"description": "",
|
|
6
6
|
"publishConfig": {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
},
|
|
24
24
|
"author": "pie framework developers",
|
|
25
25
|
"license": "ISC",
|
|
26
|
-
"gitHead": "
|
|
26
|
+
"gitHead": "fe6e2bced73f3f75bdda97eefa0c3241849425f7",
|
|
27
27
|
"scripts": {
|
|
28
28
|
"postpublish": "../../scripts/postpublish"
|
|
29
29
|
},
|