@pie-element/charting 7.1.2-next.36 → 7.1.2-next.41
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.
|
@@ -7,7 +7,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
|
|
|
7
7
|
Object.defineProperty(exports, "__esModule", {
|
|
8
8
|
value: true
|
|
9
9
|
});
|
|
10
|
-
exports["default"] = exports.CorrectResponse = void 0;
|
|
10
|
+
exports.getUpdatedCategories = exports["default"] = exports.CorrectResponse = void 0;
|
|
11
11
|
|
|
12
12
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
13
|
|
|
@@ -39,6 +39,8 @@ var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
|
|
|
39
39
|
|
|
40
40
|
var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
|
|
41
41
|
|
|
42
|
+
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
43
|
+
|
|
42
44
|
var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
|
|
43
45
|
|
|
44
46
|
var _excluded = ["editable", "interactive", "deletable"],
|
|
@@ -147,6 +149,45 @@ var removeCategory = function removeCategory(correctAnswer, data, positionToRemo
|
|
|
147
149
|
return addCategoryProps(correctAnswerData, data);
|
|
148
150
|
};
|
|
149
151
|
|
|
152
|
+
var getUpdatedCategories = function getUpdatedCategories(nextProps, prevProps, prevState) {
|
|
153
|
+
var nextData = nextProps && nextProps.model && nextProps.model.data || [];
|
|
154
|
+
var data = prevProps && prevProps.model && prevProps.model.data || [];
|
|
155
|
+
var nextCorrectAnswerDataCopy = (0, _cloneDeep["default"])(nextProps && nextProps.model && nextProps.model.correctAnswer && nextProps.model.correctAnswer.data || []);
|
|
156
|
+
var categoriesCopy = (0, _cloneDeep["default"])(prevState ? prevState.categories : []);
|
|
157
|
+
var nextCategories = []; // Handle categories insertion in Define Chart
|
|
158
|
+
|
|
159
|
+
if (nextData.length > data.length) {
|
|
160
|
+
nextCategories = insertCategory(nextCorrectAnswerDataCopy, nextData);
|
|
161
|
+
return nextCategories;
|
|
162
|
+
} // Handle categories removal from Define Chart
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
if (nextData.length < data.length) {
|
|
166
|
+
var removedIndex = data.findIndex(function (item, index) {
|
|
167
|
+
return item.index !== index;
|
|
168
|
+
});
|
|
169
|
+
removedIndex = removedIndex === -1 ? nextData.length : removedIndex;
|
|
170
|
+
nextCategories = removeCategory(categoriesCopy, nextData, removedIndex);
|
|
171
|
+
return nextCategories;
|
|
172
|
+
} // Handle category value or label changes in Define Chart
|
|
173
|
+
// Handle categories update in Define Correct Response Chart
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
nextCategories = updateCorrectResponseData(nextCorrectAnswerDataCopy, nextData);
|
|
177
|
+
nextCorrectAnswerDataCopy.forEach(function (answer, currentIndex) {
|
|
178
|
+
var dataExists = currentIndex < nextData.length;
|
|
179
|
+
nextCorrectAnswerDataCopy[currentIndex] = {
|
|
180
|
+
editable: dataExists ? nextData[currentIndex].editable : true,
|
|
181
|
+
interactive: dataExists ? nextData[currentIndex].interactive : true,
|
|
182
|
+
label: dataExists && nextData[currentIndex].editable ? answer.label : dataExists ? nextData[currentIndex].label : answer.label,
|
|
183
|
+
value: dataExists && nextData[currentIndex].interactive ? answer.value : dataExists ? nextData[currentIndex].value : answer.value
|
|
184
|
+
};
|
|
185
|
+
});
|
|
186
|
+
return nextCategories;
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
exports.getUpdatedCategories = getUpdatedCategories;
|
|
190
|
+
|
|
150
191
|
var CorrectResponse = /*#__PURE__*/function (_React$Component) {
|
|
151
192
|
(0, _inherits2["default"])(CorrectResponse, _React$Component);
|
|
152
193
|
|
|
@@ -185,75 +226,9 @@ var CorrectResponse = /*#__PURE__*/function (_React$Component) {
|
|
|
185
226
|
}
|
|
186
227
|
|
|
187
228
|
(0, _createClass2["default"])(CorrectResponse, [{
|
|
188
|
-
key: "getUpdatedCategories",
|
|
189
|
-
value: function getUpdatedCategories(nextProps) {
|
|
190
|
-
var prevProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.props;
|
|
191
|
-
var prevState = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.state;
|
|
192
|
-
var nextData = nextProps.model.data || [];
|
|
193
|
-
var data = prevProps.model.data || [];
|
|
194
|
-
var nextCorrectAnswerData = nextProps.model.correctAnswer.data || [];
|
|
195
|
-
var categories = prevState ? prevState.categories : [];
|
|
196
|
-
var nextCategories = [];
|
|
197
|
-
|
|
198
|
-
if (nextData.length > data.length) {
|
|
199
|
-
nextCategories = insertCategory(nextCorrectAnswerData, nextData);
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
if (nextData.length < data.length) {
|
|
203
|
-
var removedIndex = nextData.length; // we need to remove the category from the correct answer data and categories, from the same index it was removed from the data
|
|
204
|
-
// index is a property of the nextData category
|
|
205
|
-
|
|
206
|
-
for (var index = 0; index < nextData.length; index++) {
|
|
207
|
-
if (nextData[index].index !== index) {
|
|
208
|
-
removedIndex = index;
|
|
209
|
-
break;
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
(this.props.model.correctAnswer.data || []).splice(removedIndex, 1);
|
|
214
|
-
nextCategories = removeCategory(categories, nextData, removedIndex);
|
|
215
|
-
return nextCategories;
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
if (nextCorrectAnswerData.length > 0 && !(0, _isEqual["default"])(nextCorrectAnswerData, this.props.model.correctAnswer.data)) {
|
|
219
|
-
nextCategories = nextCorrectAnswerData.map(function (correct, index) {
|
|
220
|
-
return _objectSpread(_objectSpread({}, correct), {}, {
|
|
221
|
-
editable: index < data.length ? data[index].editable : true,
|
|
222
|
-
interactive: index < data.length ? data[index].interactive : true
|
|
223
|
-
});
|
|
224
|
-
});
|
|
225
|
-
} else if ((0, _isEmpty["default"])(nextCategories)) {
|
|
226
|
-
nextCategories = updateCorrectResponseData(nextCorrectAnswerData, nextData);
|
|
227
|
-
nextCorrectAnswerData.map(function (answer, currentIndex) {
|
|
228
|
-
var dataExists = currentIndex < nextData.length;
|
|
229
|
-
var label;
|
|
230
|
-
var value;
|
|
231
|
-
|
|
232
|
-
if (dataExists) {
|
|
233
|
-
label = nextData[currentIndex].editable ? answer.label : nextData[currentIndex].label;
|
|
234
|
-
value = nextData[currentIndex].interactive ? answer.value : nextData[currentIndex].value;
|
|
235
|
-
} else {
|
|
236
|
-
label = answer.label;
|
|
237
|
-
value = answer.value;
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
nextCorrectAnswerData[currentIndex] = {
|
|
241
|
-
label: label,
|
|
242
|
-
value: value
|
|
243
|
-
};
|
|
244
|
-
});
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
if (!(0, _isEqual["default"])(nextCategories, data) || !(0, _isEqual["default"])(nextCorrectAnswerData, prevProps.model.correctAnswer.data) || !(0, _isEqual["default"])(nextCategories, categories) || (0, _isEmpty["default"])(nextCategories) && (0, _isEmpty["default"])(data)) {
|
|
248
|
-
return nextCategories;
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
return null;
|
|
252
|
-
}
|
|
253
|
-
}, {
|
|
254
229
|
key: "componentDidMount",
|
|
255
230
|
value: function componentDidMount() {
|
|
256
|
-
var initialCategories =
|
|
231
|
+
var initialCategories = getUpdatedCategories(this.props, this.props, null);
|
|
257
232
|
this.setState({
|
|
258
233
|
categories: initialCategories || updateCorrectResponseData(this.props.model.correctAnswer.data, this.props.model.data)
|
|
259
234
|
});
|
|
@@ -261,15 +236,7 @@ var CorrectResponse = /*#__PURE__*/function (_React$Component) {
|
|
|
261
236
|
}, {
|
|
262
237
|
key: "componentDidUpdate",
|
|
263
238
|
value: function componentDidUpdate(prevProps, prevState) {
|
|
264
|
-
var
|
|
265
|
-
|
|
266
|
-
var nextCategories = this.getUpdatedCategories(this.props, prevProps, prevState); // this check is needed when all the categories are removed from Chart1
|
|
267
|
-
|
|
268
|
-
if ((nextCategories === null || nextCategories === void 0 ? void 0 : nextCategories.length) === 0 && ((_this$state$categorie = this.state.categories) === null || _this$state$categorie === void 0 ? void 0 : _this$state$categorie.length) === 0 && prevProps.model.data.length > 0) {
|
|
269
|
-
this.setState({
|
|
270
|
-
categories: nextCategories
|
|
271
|
-
});
|
|
272
|
-
}
|
|
239
|
+
var nextCategories = getUpdatedCategories(this.props, prevProps, prevState);
|
|
273
240
|
|
|
274
241
|
if (nextCategories && !(0, _isEqual["default"])(nextCategories, this.state.categories)) {
|
|
275
242
|
this.changeData(nextCategories);
|
|
@@ -281,8 +248,6 @@ var CorrectResponse = /*#__PURE__*/function (_React$Component) {
|
|
|
281
248
|
}, {
|
|
282
249
|
key: "render",
|
|
283
250
|
value: function render() {
|
|
284
|
-
var _this2 = this;
|
|
285
|
-
|
|
286
251
|
var _this$props2 = this.props,
|
|
287
252
|
classes = _this$props2.classes,
|
|
288
253
|
model = _this$props2.model,
|
|
@@ -325,9 +290,7 @@ var CorrectResponse = /*#__PURE__*/function (_React$Component) {
|
|
|
325
290
|
charts: charts,
|
|
326
291
|
data: categories,
|
|
327
292
|
title: model.title,
|
|
328
|
-
onDataChange:
|
|
329
|
-
return _this2.changeData(data);
|
|
330
|
-
},
|
|
293
|
+
onDataChange: this.changeData,
|
|
331
294
|
addCategoryEnabled: model.addCategoryEnabled,
|
|
332
295
|
categoryDefaultLabel: studentNewCategoryDefaultLabel,
|
|
333
296
|
error: error,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/correct-response.jsx"],"names":["styles","theme","container","marginBottom","spacing","unit","display","flex","button","marginTop","cursor","background","palette","grey","padding","width","borderRadius","column","chartError","border","error","main","errorText","fontSize","typography","color","paddingTop","title","addCategoryProps","correctAnswer","data","map","correct","index","editable","length","interactive","deletable","updateCorrectResponseData","correctAnswerData","correctResponseDefinition","forEach","category","currentIndex","label","value","missingCategories","slice","concat","insertCategory","positionToInsert","categoryToInsert","splice","removeCategory","positionToRemove","CorrectResponse","props","model","onChange","keepAttrs","state","categories","nextProps","prevProps","prevState","nextData","nextCorrectAnswerData","nextCategories","removedIndex","answer","dataExists","initialCategories","getUpdatedCategories","setState","changeData","classes","charts","studentNewCategoryDefaultLabel","correctAnswerErrors","mathMlOptions","domain","range","identicalError","categoriesError","name","chartType","graph","addCategoryEnabled","React","Component","PropTypes","object","isRequired","string","func","array"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { Chart } from '@pie-lib/pie-toolbox/charting';\nimport isEqual from 'lodash/isEqual';\nimport isEmpty from 'lodash/isEmpty';\n\nimport Typography from '@material-ui/core/Typography';\n\nconst styles = (theme) => ({\n container: {\n marginBottom: theme.spacing.unit * 2.5,\n display: 'flex',\n flex: 1,\n },\n button: {\n marginTop: theme.spacing.unit * 3,\n cursor: 'pointer',\n background: theme.palette.grey[200],\n padding: theme.spacing.unit * 2,\n width: 'fit-content',\n borderRadius: '4px',\n },\n column: {\n flex: 1,\n },\n chartError: {\n border: `2px solid ${theme.palette.error.main}`,\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n title: {\n marginBottom: theme.spacing.unit,\n },\n});\n\nconst addCategoryProps = (correctAnswer, data) =>\n correctAnswer.map((correct, index) => ({\n ...correct,\n editable: index < data.length ? data[index].editable : true,\n interactive: index < data.length ? data[index].interactive : true,\n deletable: index >= data.length ? true : false,\n }));\n\nconst updateCorrectResponseData = (correctAnswer, data) => {\n if (!correctAnswer) {\n return data;\n }\n\n const correctAnswerData = [...correctAnswer];\n let correctResponseDefinition = [];\n\n (data || []).forEach((category, currentIndex) => {\n const editable = category.editable;\n const interactive = category.interactive;\n const label = editable && correctAnswer[currentIndex]?.label ? correctAnswer[currentIndex].label : category.label;\n const value =\n (interactive && correctAnswer[currentIndex]?.value) || (interactive && correctAnswer[currentIndex]?.value == 0)\n ? correctAnswer[currentIndex].value\n : category.value;\n\n correctResponseDefinition[currentIndex] = {\n label: label,\n value: value,\n editable: category.editable,\n interactive: category.interactive,\n };\n });\n\n if (correctResponseDefinition.length < correctAnswer.length) {\n const missingCategories = (correctAnswerData || []).slice(correctResponseDefinition.length, correctAnswer.length);\n\n return addCategoryProps((correctResponseDefinition || []).concat(missingCategories), data);\n }\n\n return correctResponseDefinition;\n};\n\nconst insertCategory = (correctAnswer, data) => {\n const positionToInsert = data.length - 1;\n // eslint-disable-next-line no-unused-vars\n const { editable, interactive, deletable, ...categoryToInsert } = data[data.length - 1];\n\n (correctAnswer || []).splice(positionToInsert, 0, categoryToInsert);\n const correctAnswerData = [...correctAnswer];\n\n return addCategoryProps(correctAnswerData, data);\n};\n\nconst removeCategory = (correctAnswer, data, positionToRemove) => {\n (correctAnswer || []).splice(positionToRemove, 1);\n const correctAnswerData = [...correctAnswer];\n\n return addCategoryProps(correctAnswerData, data);\n};\n\nexport class CorrectResponse extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n correctAnswerErrors: PropTypes.object,\n studentNewCategoryDefaultLabel: PropTypes.string,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n charts: PropTypes.array,\n error: PropTypes.string,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n categories: [],\n };\n }\n\n changeData = (data) => {\n const { model, onChange } = this.props;\n const { correctAnswer } = model || {};\n\n onChange({\n ...model,\n correctAnswer: {\n ...correctAnswer,\n // eslint-disable-next-line no-unused-vars\n data: data.map(({ interactive, editable, index, ...keepAttrs }) => keepAttrs),\n },\n });\n };\n\n getUpdatedCategories(nextProps, prevProps = this.props, prevState = this.state) {\n const nextData = nextProps.model.data || [];\n const data = prevProps.model.data || [];\n const nextCorrectAnswerData = nextProps.model.correctAnswer.data || [];\n const categories = prevState ? prevState.categories : [];\n\n let nextCategories = [];\n if (nextData.length > data.length) {\n nextCategories = insertCategory(nextCorrectAnswerData, nextData);\n }\n\n if (nextData.length < data.length) {\n let removedIndex = nextData.length;\n\n // we need to remove the category from the correct answer data and categories, from the same index it was removed from the data\n // index is a property of the nextData category\n for (let index = 0; index < nextData.length; index++) {\n if (nextData[index].index !== index) {\n removedIndex = index;\n break;\n }\n }\n\n (this.props.model.correctAnswer.data || []).splice(removedIndex, 1);\n nextCategories = removeCategory(categories, nextData, removedIndex);\n return nextCategories;\n }\n\n if (nextCorrectAnswerData.length > 0 && !isEqual(nextCorrectAnswerData, this.props.model.correctAnswer.data)) {\n nextCategories = nextCorrectAnswerData.map((correct, index) => ({\n ...correct,\n editable: index < data.length ? data[index].editable : true,\n interactive: index < data.length ? data[index].interactive : true,\n }));\n } else if (isEmpty(nextCategories)) {\n nextCategories = updateCorrectResponseData(nextCorrectAnswerData, nextData);\n\n nextCorrectAnswerData.map((answer, currentIndex) => {\n const dataExists = currentIndex < nextData.length;\n let label;\n let value;\n\n if (dataExists) {\n label = nextData[currentIndex].editable ? answer.label : nextData[currentIndex].label;\n value = nextData[currentIndex].interactive ? answer.value : nextData[currentIndex].value;\n } else {\n label = answer.label;\n value = answer.value;\n }\n\n nextCorrectAnswerData[currentIndex] = {\n label: label,\n value: value,\n };\n });\n }\n\n if (\n !isEqual(nextCategories, data) ||\n !isEqual(nextCorrectAnswerData, prevProps.model.correctAnswer.data) ||\n !isEqual(nextCategories, categories) ||\n (isEmpty(nextCategories) && isEmpty(data))\n ) {\n return nextCategories;\n }\n\n return null;\n }\n\n componentDidMount() {\n const initialCategories = this.getUpdatedCategories(this.props, this.props, null);\n\n this.setState({\n categories:\n initialCategories || updateCorrectResponseData(this.props.model.correctAnswer.data, this.props.model.data),\n });\n }\n\n componentDidUpdate(prevProps, prevState) {\n const nextCategories = this.getUpdatedCategories(this.props, prevProps, prevState);\n\n // this check is needed when all the categories are removed from Chart1\n if (nextCategories?.length === 0 && this.state.categories?.length === 0 && prevProps.model.data.length > 0) {\n this.setState({ categories: nextCategories });\n }\n\n if (nextCategories && !isEqual(nextCategories, this.state.categories)) {\n this.changeData(nextCategories);\n this.setState({ categories: nextCategories });\n }\n }\n\n render() {\n const { classes, model, charts, error, studentNewCategoryDefaultLabel, correctAnswerErrors, mathMlOptions = {} } = this.props;\n const { categories } = this.state;\n const { domain = {}, range = {} } = model || {};\n const { identicalError, categoriesError } = correctAnswerErrors || {};\n\n return (\n <div>\n <div className={classes.title}>Define Correct Response</div>\n <div className={classes.container}>\n <div className={classes.column} key=\"graph\">\n <Typography component=\"div\" type=\"body1\">\n <span>Use the tools below to define the correct answer.</span>\n </Typography>\n\n <div\n key={`correct-response-graph-${model.correctAnswer.name}`}\n className={identicalError || categoriesError ? classes.chartError : ''}\n >\n <Chart\n chartType={model.chartType}\n size={model.graph}\n domain={domain}\n range={range}\n charts={charts}\n data={categories}\n title={model.title}\n onDataChange={(data) => this.changeData(data)}\n addCategoryEnabled={model.addCategoryEnabled}\n categoryDefaultLabel={studentNewCategoryDefaultLabel}\n error={error}\n mathMlOptions={mathMlOptions}\n />\n </div>\n\n {(identicalError || categoriesError) && (\n <Typography component=\"div\" type=\"body1\" className={classes.errorText}>\n <span>{identicalError || categoriesError}</span>\n </Typography>\n )}\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(CorrectResponse);\n"],"file":"correct-response.js"}
|
|
1
|
+
{"version":3,"sources":["../src/correct-response.jsx"],"names":["styles","theme","container","marginBottom","spacing","unit","display","flex","button","marginTop","cursor","background","palette","grey","padding","width","borderRadius","column","chartError","border","error","main","errorText","fontSize","typography","color","paddingTop","title","addCategoryProps","correctAnswer","data","map","correct","index","editable","length","interactive","deletable","updateCorrectResponseData","correctAnswerData","correctResponseDefinition","forEach","category","currentIndex","label","value","missingCategories","slice","concat","insertCategory","positionToInsert","categoryToInsert","splice","removeCategory","positionToRemove","getUpdatedCategories","nextProps","prevProps","prevState","nextData","model","nextCorrectAnswerDataCopy","categoriesCopy","categories","nextCategories","removedIndex","findIndex","item","answer","dataExists","CorrectResponse","props","onChange","keepAttrs","state","initialCategories","setState","changeData","classes","charts","studentNewCategoryDefaultLabel","correctAnswerErrors","mathMlOptions","domain","range","identicalError","categoriesError","name","chartType","graph","addCategoryEnabled","React","Component","PropTypes","object","isRequired","string","func","array"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { Chart } from '@pie-lib/pie-toolbox/charting';\nimport isEqual from 'lodash/isEqual';\nimport isEmpty from 'lodash/isEmpty';\nimport cloneDeep from 'lodash/cloneDeep';\n\nimport Typography from '@material-ui/core/Typography';\n\nconst styles = (theme) => ({\n container: {\n marginBottom: theme.spacing.unit * 2.5,\n display: 'flex',\n flex: 1,\n },\n button: {\n marginTop: theme.spacing.unit * 3,\n cursor: 'pointer',\n background: theme.palette.grey[200],\n padding: theme.spacing.unit * 2,\n width: 'fit-content',\n borderRadius: '4px',\n },\n column: {\n flex: 1,\n },\n chartError: {\n border: `2px solid ${theme.palette.error.main}`,\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n title: {\n marginBottom: theme.spacing.unit,\n },\n});\n\nconst addCategoryProps = (correctAnswer, data) =>\n correctAnswer.map((correct, index) => ({\n ...correct,\n editable: index < data.length ? data[index].editable : true,\n interactive: index < data.length ? data[index].interactive : true,\n deletable: index >= data.length ? true : false,\n }));\n\nconst updateCorrectResponseData = (correctAnswer, data) => {\n if (!correctAnswer) {\n return data;\n }\n\n const correctAnswerData = [...correctAnswer];\n let correctResponseDefinition = [];\n\n (data || []).forEach((category, currentIndex) => {\n const editable = category.editable;\n const interactive = category.interactive;\n const label = editable && correctAnswer[currentIndex]?.label ? correctAnswer[currentIndex].label : category.label;\n const value =\n (interactive && correctAnswer[currentIndex]?.value) || (interactive && correctAnswer[currentIndex]?.value == 0)\n ? correctAnswer[currentIndex].value\n : category.value;\n\n correctResponseDefinition[currentIndex] = {\n label: label,\n value: value,\n editable: category.editable,\n interactive: category.interactive,\n };\n });\n\n if (correctResponseDefinition.length < correctAnswer.length) {\n const missingCategories = (correctAnswerData || []).slice(correctResponseDefinition.length, correctAnswer.length);\n\n return addCategoryProps((correctResponseDefinition || []).concat(missingCategories), data);\n }\n\n return correctResponseDefinition;\n};\n\nconst insertCategory = (correctAnswer, data) => {\n const positionToInsert = data.length - 1;\n // eslint-disable-next-line no-unused-vars\n const { editable, interactive, deletable, ...categoryToInsert } = data[data.length - 1];\n\n (correctAnswer || []).splice(positionToInsert, 0, categoryToInsert);\n const correctAnswerData = [...correctAnswer];\n\n return addCategoryProps(correctAnswerData, data);\n};\n\nconst removeCategory = (correctAnswer, data, positionToRemove) => {\n (correctAnswer || []).splice(positionToRemove, 1);\n const correctAnswerData = [...correctAnswer];\n\n return addCategoryProps(correctAnswerData, data);\n};\n\nexport const getUpdatedCategories = (nextProps, prevProps, prevState) => {\n const nextData = (nextProps && nextProps.model && nextProps.model.data) || [];\n const data = (prevProps && prevProps.model && prevProps.model.data) || [];\n const nextCorrectAnswerDataCopy = cloneDeep((nextProps && nextProps.model && nextProps.model.correctAnswer && nextProps.model.correctAnswer.data) || []);\n\n const categoriesCopy = cloneDeep(prevState ? prevState.categories : []);\n\n let nextCategories = [];\n\n // Handle categories insertion in Define Chart\n if (nextData.length > data.length) {\n nextCategories = insertCategory(nextCorrectAnswerDataCopy, nextData);\n return nextCategories;\n }\n\n // Handle categories removal from Define Chart\n if (nextData.length < data.length) {\n let removedIndex = data.findIndex((item, index) => item.index !== index);\n removedIndex = removedIndex === -1 ? nextData.length : removedIndex;\n\n nextCategories = removeCategory(categoriesCopy, nextData, removedIndex);\n return nextCategories;\n }\n\n // Handle category value or label changes in Define Chart\n // Handle categories update in Define Correct Response Chart\n nextCategories = updateCorrectResponseData(nextCorrectAnswerDataCopy, nextData);\n\n nextCorrectAnswerDataCopy.forEach((answer, currentIndex) => {\n const dataExists = currentIndex < nextData.length;\n nextCorrectAnswerDataCopy[currentIndex] = {\n editable: dataExists ? nextData[currentIndex].editable : true,\n interactive: dataExists ? nextData[currentIndex].interactive : true,\n label:\n dataExists && nextData[currentIndex].editable\n ? answer.label\n : dataExists\n ? nextData[currentIndex].label\n : answer.label,\n value:\n dataExists && nextData[currentIndex].interactive\n ? answer.value\n : dataExists\n ? nextData[currentIndex].value\n : answer.value,\n };\n });\n\n return nextCategories;\n};\n\nexport class CorrectResponse extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n correctAnswerErrors: PropTypes.object,\n studentNewCategoryDefaultLabel: PropTypes.string,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n charts: PropTypes.array,\n error: PropTypes.string,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n categories: [],\n };\n }\n\n changeData = (data) => {\n const { model, onChange } = this.props;\n const { correctAnswer } = model || {};\n\n onChange({\n ...model,\n correctAnswer: {\n ...correctAnswer,\n // eslint-disable-next-line no-unused-vars\n data: data.map(({ interactive, editable, index, ...keepAttrs }) => keepAttrs),\n },\n });\n };\n\n componentDidMount() {\n const initialCategories = getUpdatedCategories(this.props, this.props, null);\n\n this.setState({\n categories:\n initialCategories || updateCorrectResponseData(this.props.model.correctAnswer.data, this.props.model.data),\n });\n }\n\n componentDidUpdate(prevProps, prevState) {\n const nextCategories = getUpdatedCategories(this.props, prevProps, prevState);\n\n if (nextCategories && !isEqual(nextCategories, this.state.categories)) {\n this.changeData(nextCategories);\n this.setState({ categories: nextCategories });\n }\n }\n\n render() {\n const {\n classes,\n model,\n charts,\n error,\n studentNewCategoryDefaultLabel,\n correctAnswerErrors,\n mathMlOptions = {},\n } = this.props;\n const { categories } = this.state;\n\n const { domain = {}, range = {} } = model || {};\n const { identicalError, categoriesError } = correctAnswerErrors || {};\n\n return (\n <div>\n <div className={classes.title}>Define Correct Response</div>\n <div className={classes.container}>\n <div className={classes.column} key=\"graph\">\n <Typography component=\"div\" type=\"body1\">\n <span>Use the tools below to define the correct answer.</span>\n </Typography>\n\n <div\n key={`correct-response-graph-${model.correctAnswer.name}`}\n className={identicalError || categoriesError ? classes.chartError : ''}\n >\n <Chart\n chartType={model.chartType}\n size={model.graph}\n domain={domain}\n range={range}\n charts={charts}\n data={categories}\n title={model.title}\n onDataChange={this.changeData}\n addCategoryEnabled={model.addCategoryEnabled}\n categoryDefaultLabel={studentNewCategoryDefaultLabel}\n error={error}\n mathMlOptions={mathMlOptions}\n />\n </div>\n\n {(identicalError || categoriesError) && (\n <Typography component=\"div\" type=\"body1\" className={classes.errorText}>\n <span>{identicalError || categoriesError}</span>\n </Typography>\n )}\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(CorrectResponse);\n"],"file":"correct-response.js"}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"repository": "pie-framework/pie-elements",
|
|
7
|
-
"version": "7.1.2-next.
|
|
7
|
+
"version": "7.1.2-next.41+5df7e6058",
|
|
8
8
|
"description": "",
|
|
9
9
|
"scripts": {
|
|
10
10
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
},
|
|
23
23
|
"author": "",
|
|
24
24
|
"license": "ISC",
|
|
25
|
-
"gitHead": "
|
|
25
|
+
"gitHead": "5df7e6058fb9bcf5e85669aaa15a0465f3612e72",
|
|
26
26
|
"main": "lib/index.js",
|
|
27
27
|
"module": "src/index.js"
|
|
28
28
|
}
|