@pie-element/charting 2.7.3-next.137 → 2.7.3-next.1372

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.
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.getLabelValues = exports.getGridValues = exports.applyConstraints = exports.VALID_LABEL_VALUES = void 0;
9
+
10
+ var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
11
+
12
+ // this file is almost duplicated from graphing/configure/src/utils.js; the same logic must be used in charting
13
+ var VALID_GRID_VALUES = [0.01, 0.02, 0.04, 0.05, 0.0625, 0.1, 0.125, 0.2, 0.25, 0.5, 1, 2, 3, 4, 5, 8, 10, 12, 15, 20, 40, 50, 64, 100, 500, 1000]; // same as VALID_GRID_VALUES but next values are excluded: 0.04, 0.0625, 0.125, 3, 4, 8, 12, 15, 40, 64
14
+
15
+ var PREFERRED_VALID_GRID_VALUES = [0.01, 0.02, 0.05, 0.1, 0.2, 0.25, 0.5, 1, 2, 5, 10, 20, 50, 100, 500, 1000];
16
+ var VALID_LABEL_VALUES = {
17
+ '0.01': [0, 0.01, 0.02, 0.04, 0.05, 0.1],
18
+ '0.02': [0, 0.02, 0.04, 0.1],
19
+ '0.04': [0, 0.04, 0.08, 0.16, 0.2],
20
+ '0.05': [0, 0.05, 0.1, 0.2, 0.25],
21
+ '0.0625': [0, 0.0625, 0.125, 0.25, 0.5],
22
+ '0.1': [0, 0.1, 0.2, 0.4, 0.5, 1],
23
+ '0.125': [0, 0.125, 0.25, 0.5, 1],
24
+ '0.2': [0, 0.2, 0.5, 0.1],
25
+ '0.25': [0, 0.25, 0.5, 1, 2],
26
+ '0.5': [0, 0.5, 1, 2],
27
+ '1': [0, 1, 2, 4, 5, 10],
28
+ '2': [0, 2, 4, 8, 10],
29
+ '3': [0, 3, 6, 12, 15],
30
+ '4': [0, 4, 8, 16, 20],
31
+ '5': [0, 5, 10, 20, 25],
32
+ '8': [0, 8, 16, 32, 40, 64],
33
+ '10': [0, 10, 20, 40, 50, 100],
34
+ '12': [0, 12, 24],
35
+ '15': [0, 15, 30, 60],
36
+ '20': [0, 20, 40, 80, 100],
37
+ '40': [0, 40, 80, 160, 200],
38
+ '50': [0, 50, 100, 200, 250],
39
+ '64': [0, 64, 128],
40
+ '100': [0, 100, 200, 400, 500],
41
+ '500': [0, 500, 1000, 2500],
42
+ '1000': [0, 1000, 2000, 4000, 5000]
43
+ };
44
+ exports.VALID_LABEL_VALUES = VALID_LABEL_VALUES;
45
+
46
+ var getGridValues = function getGridValues(axis, size) {
47
+ var prefferedValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
48
+ var minValue = 10 * (axis.max - axis.min) / size;
49
+ var maxValue = minValue * 10;
50
+ var values = prefferedValues ? PREFERRED_VALID_GRID_VALUES : VALID_GRID_VALUES;
51
+ return values.filter(function (value) {
52
+ return value >= minValue && value <= maxValue;
53
+ });
54
+ };
55
+
56
+ exports.getGridValues = getGridValues;
57
+
58
+ var getLabelValues = function getLabelValues(value) {
59
+ return VALID_LABEL_VALUES[value] || [];
60
+ };
61
+
62
+ exports.getLabelValues = getLabelValues;
63
+
64
+ var applyConstraints = function applyConstraints(axis, size, oldGridValues, oldLabelValues) {
65
+ var gridValues = getGridValues(axis, size);
66
+ var labelValues = getLabelValues(axis.step || 1);
67
+
68
+ if (!(0, _isEqual["default"])(oldGridValues, gridValues) && !gridValues.includes(axis.step)) {
69
+ var preferredValues = getGridValues(axis, size, true);
70
+ var lowestValue = preferredValues[0] || 1;
71
+ axis.step = lowestValue;
72
+ labelValues = getLabelValues(lowestValue);
73
+
74
+ if (!labelValues.includes(axis.labelStep)) {
75
+ axis.labelStep = lowestValue;
76
+ }
77
+
78
+ return {
79
+ gridValues: gridValues,
80
+ labelValues: labelValues
81
+ };
82
+ }
83
+
84
+ if (!(0, _isEqual["default"])(oldLabelValues, labelValues) && !labelValues.includes(axis.labelStep)) {
85
+ axis.labelStep = axis.step;
86
+ }
87
+
88
+ return {
89
+ gridValues: gridValues,
90
+ labelValues: labelValues
91
+ };
92
+ };
93
+
94
+ exports.applyConstraints = applyConstraints;
95
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils.js"],"names":["VALID_GRID_VALUES","PREFERRED_VALID_GRID_VALUES","VALID_LABEL_VALUES","getGridValues","axis","size","prefferedValues","minValue","max","min","maxValue","values","filter","value","getLabelValues","applyConstraints","oldGridValues","oldLabelValues","gridValues","labelValues","step","includes","preferredValues","lowestValue","labelStep"],"mappings":"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","sourcesContent":["// this file is almost duplicated from graphing/configure/src/utils.js; the same logic must be used in charting\nimport isEqual from 'lodash/isEqual';\n\nconst VALID_GRID_VALUES = [\n 0.01, 0.02, 0.04, 0.05, 0.0625, 0.1, 0.125, 0.2, 0.25, 0.5,\n 1, 2, 3, 4, 5, 8, 10, 12, 15, 20, 40, 50, 64, 100, 500, 1000\n];\n\n// same as VALID_GRID_VALUES but next values are excluded: 0.04, 0.0625, 0.125, 3, 4, 8, 12, 15, 40, 64\nconst PREFERRED_VALID_GRID_VALUES = [ 0.01, 0.02, 0.05, 0.1, 0.2, 0.25, 0.5, 1, 2, 5, 10, 20, 50, 100, 500, 1000 ];\n\nexport const VALID_LABEL_VALUES = {\n '0.01': [0, 0.01, 0.02, 0.04, 0.05, 0.1],\n '0.02': [0, 0.02, 0.04, 0.1],\n '0.04': [0, 0.04, 0.08, 0.16, 0.2],\n '0.05': [0, 0.05, 0.1, 0.2, 0.25],\n '0.0625': [0, 0.0625, 0.125, 0.25, 0.5],\n '0.1': [0, 0.1, 0.2, 0.4, 0.5, 1],\n '0.125': [0, 0.125, 0.25, 0.5, 1],\n '0.2': [0, 0.2, 0.5, 0.1],\n '0.25': [0, 0.25, 0.5, 1, 2],\n '0.5': [0, 0.5, 1, 2],\n '1': [0, 1, 2, 4, 5, 10],\n '2': [0, 2, 4, 8, 10],\n '3': [0, 3, 6, 12, 15],\n '4': [0, 4, 8, 16, 20],\n '5': [0, 5, 10, 20, 25],\n '8': [0, 8, 16, 32, 40, 64],\n '10': [0, 10, 20, 40, 50, 100],\n '12': [0, 12, 24],\n '15': [0, 15, 30, 60],\n '20': [0, 20, 40, 80, 100],\n '40': [0, 40, 80, 160, 200],\n '50': [0, 50, 100, 200, 250],\n '64': [0, 64, 128],\n '100': [0, 100, 200, 400, 500],\n '500': [0, 500, 1000, 2500],\n '1000': [0, 1000, 2000, 4000, 5000]\n};\n\nexport const getGridValues = (axis, size, prefferedValues = false) => {\n const minValue = 10 * (axis.max - axis.min) / size;\n const maxValue = minValue * 10;\n const values = prefferedValues ? PREFERRED_VALID_GRID_VALUES : VALID_GRID_VALUES;\n\n return values.filter(value => value >= minValue && value <= maxValue);\n};\n\nexport const getLabelValues = value => VALID_LABEL_VALUES[value] || [];\n\nexport const applyConstraints = (axis, size, oldGridValues, oldLabelValues) => {\n const gridValues = getGridValues(axis, size);\n let labelValues = getLabelValues(axis.step || 1);\n\n if (!isEqual(oldGridValues, gridValues) && !gridValues.includes(axis.step)) {\n const preferredValues = getGridValues(axis, size, true);\n const lowestValue = preferredValues[0] || 1;\n\n axis.step = lowestValue;\n labelValues = getLabelValues(lowestValue);\n\n if (!labelValues.includes(axis.labelStep)) {\n axis.labelStep = lowestValue;\n }\n\n return { gridValues, labelValues };\n }\n\n if (!isEqual(oldLabelValues, labelValues) && !labelValues.includes(axis.labelStep)) {\n axis.labelStep = axis.step;\n }\n\n return { gridValues, labelValues };\n};"],"file":"utils.js"}
@@ -1,17 +1,18 @@
1
1
  {
2
2
  "name": "@pie-element/charting-configure",
3
3
  "private": true,
4
- "version": "2.1.25",
4
+ "version": "5.0.0",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
8
8
  "author": "",
9
9
  "dependencies": {
10
10
  "@material-ui/core": "^3.9.2",
11
- "@pie-framework/pie-configure-events": "^1.2.0",
12
- "@pie-lib/charting": "^4.5.10",
13
- "@pie-lib/config-ui": "^10.10.2",
14
- "@pie-lib/editable-html": "^7.17.2",
11
+ "@pie-framework/pie-configure-events": "^1.3.0",
12
+ "@pie-lib/charting": "^5.3.0",
13
+ "@pie-lib/config-ui": "^11.0.20",
14
+ "@pie-lib/editable-html": "^9.2.2",
15
+ "@pie-lib/math-rendering": "^2.5.0",
15
16
  "classnames": "^2.2.5",
16
17
  "debug": "^4.1.1",
17
18
  "prop-types": "^15.6.2",
@@ -3,6 +3,68 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [2.2.24](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-controller@2.2.23...@pie-element/charting-controller@2.2.24) (2022-06-13)
7
+
8
+ **Note:** Version bump only for package @pie-element/charting-controller
9
+
10
+
11
+
12
+
13
+
14
+ ## [2.2.23](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-controller@2.2.22...@pie-element/charting-controller@2.2.23) (2022-05-30)
15
+
16
+ **Note:** Version bump only for package @pie-element/charting-controller
17
+
18
+
19
+
20
+
21
+
22
+ ## [2.2.22](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-controller@2.2.21...@pie-element/charting-controller@2.2.22) (2022-01-10)
23
+
24
+ **Note:** Version bump only for package @pie-element/charting-controller
25
+
26
+
27
+
28
+
29
+
30
+ ## [2.2.18](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-controller@2.2.16...@pie-element/charting-controller@2.2.18) (2021-11-11)
31
+
32
+ **Note:** Version bump only for package @pie-element/charting-controller
33
+
34
+
35
+
36
+
37
+
38
+ ## [2.2.17](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-controller@2.2.16...@pie-element/charting-controller@2.2.17) (2021-11-11)
39
+
40
+ **Note:** Version bump only for package @pie-element/charting-controller
41
+
42
+
43
+
44
+
45
+
46
+ ## [2.2.16](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-controller@2.2.14...@pie-element/charting-controller@2.2.16) (2021-08-05)
47
+
48
+
49
+ ### Bug Fixes
50
+
51
+ * force bump ([5ea7295](https://github.com/pie-framework/pie-elements/commit/5ea7295e4755fbc492a76e7ec69e5fc35b196919))
52
+
53
+
54
+
55
+
56
+
57
+ ## [2.2.14](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-controller@2.2.13...@pie-element/charting-controller@2.2.14) (2021-06-29)
58
+
59
+
60
+ ### Bug Fixes
61
+
62
+ * **charting:** Fixed student cannot edit category labels when required - PD-535 ([#596](https://github.com/pie-framework/pie-elements/issues/596)) ([5eb6c56](https://github.com/pie-framework/pie-elements/commit/5eb6c5638615e1186a54aa522670e1e7d5154b5c))
63
+
64
+
65
+
66
+
67
+
6
68
  ## [2.2.13](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-controller@2.2.10...@pie-element/charting-controller@2.2.13) (2021-03-03)
7
69
 
8
70
  **Note:** Version bump only for package @pie-element/charting-controller
@@ -5,9 +5,13 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
+ exports.getScore = exports.filterCategories = exports.createCorrectResponseSession = exports.checkLabelsEquality = void 0;
8
9
  exports.model = model;
10
+ exports.normalize = void 0;
9
11
  exports.outcome = outcome;
10
- exports.createCorrectResponseSession = exports.filterCategories = exports.getScore = exports.normalize = exports.setCorrectness = exports.checkLabelsEquality = void 0;
12
+ exports.setCorrectness = void 0;
13
+
14
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
15
 
12
16
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
17
 
@@ -19,9 +23,12 @@ var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
19
23
 
20
24
  var _controllerUtils = require("@pie-lib/controller-utils");
21
25
 
22
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
26
+ var _excluded = ["deletable"],
27
+ _excluded2 = ["correctness"];
28
+
29
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
23
30
 
24
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
31
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
25
32
 
26
33
  var log = (0, _debug["default"])('@pie-element:graphing:controller');
27
34
 
@@ -51,7 +58,6 @@ exports.setCorrectness = setCorrectness;
51
58
  var normalize = function normalize(question) {
52
59
  return _objectSpread({
53
60
  addCategoryEnabled: true,
54
- editCategoryEnabled: true,
55
61
  promptEnabled: true,
56
62
  rationaleEnabled: true,
57
63
  teacherInstructionsEnabled: true,
@@ -66,8 +72,7 @@ var getScore = function getScore(question, session) {
66
72
  var correctAnswer = question.correctAnswer,
67
73
  _question$data = question.data,
68
74
  initialData = _question$data === void 0 ? [] : _question$data,
69
- scoringType = question.scoringType,
70
- editCategoryEnabled = question.editCategoryEnabled;
75
+ scoringType = question.scoringType;
71
76
 
72
77
  var isPartialScoring = _controllerUtils.partialScoring.enabled({
73
78
  partialScoring: scoringType !== undefined ? scoringType === 'partial scoring' : scoringType
@@ -77,7 +82,7 @@ var getScore = function getScore(question, session) {
77
82
  _ref$data = _ref.data,
78
83
  correctAnswers = _ref$data === void 0 ? [] : _ref$data;
79
84
 
80
- var defaultAnswers = filterCategories(initialData, editCategoryEnabled);
85
+ var defaultAnswers = filterCategories(initialData);
81
86
  var answers = setCorrectness(session && session.answer || defaultAnswers, isPartialScoring);
82
87
  var result = 0;
83
88
 
@@ -177,13 +182,11 @@ var getScore = function getScore(question, session) {
177
182
 
178
183
  exports.getScore = getScore;
179
184
 
180
- var filterCategories = function filterCategories(categories, editable) {
181
- return categories ? categories.map(function (category) {
182
- return _objectSpread(_objectSpread({}, category), {}, {
183
- deletable: false,
184
- editable: editable,
185
- initial: true
186
- });
185
+ var filterCategories = function filterCategories(categories) {
186
+ return categories ? categories.map(function (_ref2) {
187
+ var deletable = _ref2.deletable,
188
+ rest = (0, _objectWithoutProperties2["default"])(_ref2, _excluded);
189
+ return rest;
187
190
  }) : [];
188
191
  };
189
192
 
@@ -197,7 +200,6 @@ function model(question, session, env) {
197
200
  chartType = normalizedQuestion.chartType,
198
201
  data = normalizedQuestion.data,
199
202
  domain = normalizedQuestion.domain,
200
- editCategoryEnabled = normalizedQuestion.editCategoryEnabled,
201
203
  graph = normalizedQuestion.graph,
202
204
  prompt = normalizedQuestion.prompt,
203
205
  promptEnabled = normalizedQuestion.promptEnabled,
@@ -217,9 +219,8 @@ function model(question, session, env) {
217
219
  addCategoryEnabled: addCategoryEnabled,
218
220
  categoryDefaultLabel: categoryDefaultLabel,
219
221
  chartType: chartType,
220
- data: filterCategories(data, editCategoryEnabled),
222
+ data: filterCategories(data),
221
223
  domain: domain,
222
- editCategoryEnabled: editCategoryEnabled,
223
224
  graph: graph,
224
225
  prompt: promptEnabled ? prompt : null,
225
226
  range: range,
@@ -230,14 +231,23 @@ function model(question, session, env) {
230
231
  disabled: env.mode !== 'gather',
231
232
  scoringType: scoringType
232
233
  };
233
-
234
- if (env.mode === 'evaluate' || env.mode === 'view') {
235
- base.correctedAnswer = filterCategories(getScore(normalizedQuestion, session, env).answers, false);
234
+ var answers = filterCategories(getScore(normalizedQuestion, session, env).answers);
235
+
236
+ if (env.mode === 'view') {
237
+ base.correctedAnswer = answers.map(function (_ref3) {
238
+ var correctness = _ref3.correctness,
239
+ rest = (0, _objectWithoutProperties2["default"])(_ref3, _excluded2);
240
+ return _objectSpread(_objectSpread({}, rest), {}, {
241
+ interactive: false
242
+ });
243
+ });
236
244
  base.addCategoryEnabled = false;
237
245
  }
238
246
 
239
247
  if (env.mode === 'evaluate') {
248
+ base.correctedAnswer = answers;
240
249
  base.correctAnswer = correctAnswer;
250
+ base.addCategoryEnabled = false;
241
251
  }
242
252
 
243
253
  if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {
@@ -266,8 +276,17 @@ var createCorrectResponseSession = function createCorrectResponseSession(questio
266
276
  return new Promise(function (resolve) {
267
277
  if (env.mode !== 'evaluate' && env.role === 'instructor') {
268
278
  var correctAnswer = question.correctAnswer;
279
+ var answers = correctAnswer && correctAnswer.data; // for IBX preview mode
280
+
281
+ if (env.mode === 'gather') {
282
+ var data = question.data;
283
+ answers = (correctAnswer && correctAnswer.data || []).map(function (answer, index) {
284
+ return _objectSpread(_objectSpread({}, data[index]), answer);
285
+ });
286
+ }
287
+
269
288
  resolve({
270
- answer: correctAnswer && correctAnswer.data,
289
+ answer: answers,
271
290
  id: '1'
272
291
  });
273
292
  } else {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["log","lowerCase","string","toLowerCase","checkLabelsEquality","givenAnswerLabel","correctAnswerLabel","setCorrectness","answers","partialScoring","map","answer","correctness","value","label","normalize","question","addCategoryEnabled","editCategoryEnabled","promptEnabled","rationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","getScore","session","env","correctAnswer","data","initialData","scoringType","isPartialScoring","enabled","undefined","correctAnswers","defaultAnswers","filterCategories","result","maxScore","score","scoreForLabelAndValueEditable","corrAnswer","forEach","index","defaultAnswer","editable","interactive","length","slice","parseFloat","toFixed","categories","category","deletable","initial","model","Promise","resolve","normalizedQuestion","categoryDefaultLabel","chartType","domain","graph","prompt","range","rationale","title","teacherInstructions","correctInfo","base","size","disabled","mode","correctedAnswer","role","outcome","empty","createCorrectResponseSession","id"],"mappings":"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","sourcesContent":["import debug from 'debug';\nimport isEmpty from 'lodash/isEmpty';\n\nimport { partialScoring } from '@pie-lib/controller-utils';\n\nconst log = debug('@pie-element:graphing:controller');\n\nconst lowerCase = string => (string || '').toLowerCase();\n\nexport const checkLabelsEquality = (givenAnswerLabel, correctAnswerLabel) =>\n lowerCase(givenAnswerLabel) === lowerCase(correctAnswerLabel);\n\nexport const setCorrectness = (answers, partialScoring) => answers ? answers.map(answer => ({\n ...answer,\n correctness: {\n value: partialScoring ? 'incorrect' : 'correct',\n label: partialScoring ? 'incorrect' : 'correct'\n }\n})) : [];\n\n\nexport const normalize = question => ({\n addCategoryEnabled: true,\n editCategoryEnabled: true,\n promptEnabled: true,\n rationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n ...question,\n});\n\nexport const getScore = (question, session, env = {}) => {\n const { correctAnswer, data: initialData = [], scoringType, editCategoryEnabled } = question;\n\n const isPartialScoring = partialScoring.enabled(\n { partialScoring: scoringType !== undefined ? scoringType === 'partial scoring' : scoringType },\n env\n );\n\n const { data: correctAnswers = [] } = correctAnswer || {};\n const defaultAnswers = filterCategories(initialData, editCategoryEnabled);\n\n let answers = setCorrectness((session && session.answer) || defaultAnswers, isPartialScoring);\n\n let result = 0;\n\n if (isPartialScoring) {\n // if score type is \"partial scoring\"\n // maxScore is calculated based on the correct response\n // score is calculated based on the given response\n let maxScore = 0;\n let score = 0;\n\n const scoreForLabelAndValueEditable = (answer, corrAnswer) => {\n const { value, label } = answer;\n\n maxScore += 2;\n\n if (value === corrAnswer.value) {\n score += 1;\n answer.correctness.value = 'correct';\n }\n\n if (checkLabelsEquality(label, corrAnswer.label)) {\n score += 1;\n answer.correctness.label = 'correct';\n }\n };\n\n // if given answer has more categories than the correct answers, the \"extra\" will be ignored\n correctAnswers.forEach((corrAnswer, index) => {\n const defaultAnswer = defaultAnswers[index];\n const answer = answers[index];\n\n // if there is a corresponding category at the same position in the given answer\n if (answer) {\n // if there is a corresponding category at the same position in the default answer\n if (defaultAnswer) {\n // if category's label (in default answer) was not editable\n // it means that this category values only one point (only the value can be changed)\n if (!defaultAnswer.editable && answer.interactive) {\n maxScore += 1;\n\n if (answer.value === corrAnswer.value) {\n score += 1;\n answer.correctness.value = 'correct';\n }\n answer.correctness.label = 'correct';\n\n // if category's label (in default answer) was editable\n // it means that this category values 2 points (both label and value can be changed)\n } else if (defaultAnswer.editable && answer.interactive) {\n scoreForLabelAndValueEditable(answer, corrAnswer);\n } else if (!answer.interactive) {\n answer.correctness.value = 'correct';\n answer.correctness.label = 'correct';\n }\n } else {\n // if there is not a corresponding category at the same position in the default answer\n scoreForLabelAndValueEditable(answer, corrAnswer);\n }\n } else {\n // if there is not a corresponding category at the same position in the given answer\n // it means that the given answer has less categories than the correct answer\n maxScore += 2;\n }\n });\n\n result = maxScore ? score / maxScore : 0;\n } else {\n // if scoring type is \"all or nothing\"\n // the length on correct answers and length of given answer have to match\n result = correctAnswers.length === answers.length ? 1 : 0;\n\n if (result) {\n // if there is at least one difference between the correct answer and the given answer\n // the result will be incorrect\n correctAnswers.forEach((corrAnswer, index) => {\n const { value, label } = answers[index];\n\n if (value !== corrAnswer.value) {\n result = 0;\n answers[index].correctness.value = 'incorrect';\n }\n if (lowerCase(label) !== lowerCase(corrAnswer.label)) {\n result = 0;\n answers[index].correctness.label = 'incorrect';\n }\n });\n } else {\n answers = [\n ...answers.slice(0, correctAnswers.length),\n ...setCorrectness(answers.slice(correctAnswers.length), true)\n ];\n }\n }\n\n return {\n score: parseFloat(result.toFixed(2)),\n answers\n };\n};\n\nexport const filterCategories = (categories, editable) => categories ? categories.map(category => ({\n ...category,\n deletable: false,\n editable,\n initial: true\n})) : [];\n\nexport function model(question, session, env) {\n return new Promise(resolve => {\n const normalizedQuestion = normalize(question);\n const {\n addCategoryEnabled,\n categoryDefaultLabel,\n chartType,\n data,\n domain,\n editCategoryEnabled,\n graph,\n prompt,\n promptEnabled,\n range,\n rationale,\n title,\n rationaleEnabled,\n teacherInstructions,\n teacherInstructionsEnabled,\n correctAnswer,\n scoringType\n } = normalizedQuestion;\n\n const correctInfo = { correctness: 'incorrect', score: '0%' };\n\n const base = {\n addCategoryEnabled,\n categoryDefaultLabel,\n chartType,\n data: filterCategories(data, editCategoryEnabled),\n domain,\n editCategoryEnabled,\n graph,\n prompt: promptEnabled ? prompt : null,\n range,\n rationale,\n title,\n size: graph,\n correctness: correctInfo,\n disabled: env.mode !== 'gather',\n scoringType\n };\n\n if (env.mode === 'evaluate' || env.mode === 'view') {\n base.correctedAnswer = filterCategories(getScore(normalizedQuestion, session, env).answers, false);\n base.addCategoryEnabled = false;\n }\n\n if (env.mode === 'evaluate') {\n base.correctAnswer = correctAnswer;\n }\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n base.rationale = rationaleEnabled ? rationale : null;\n base.teacherInstructions = teacherInstructionsEnabled ? teacherInstructions : null;\n } else {\n base.rationale = null;\n base.teacherInstructions = null;\n }\n\n log('base: ', base);\n resolve(base);\n });\n}\n\nexport function outcome(model, session, env) {\n return new Promise(resolve => {\n resolve({\n score: getScore(model, session, env).score,\n empty: !session || isEmpty(session)\n });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise(resolve => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { correctAnswer } = question;\n\n resolve({\n answer: correctAnswer && correctAnswer.data,\n id: '1'\n });\n } else {\n return resolve(null);\n }\n });\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["log","lowerCase","string","toLowerCase","checkLabelsEquality","givenAnswerLabel","correctAnswerLabel","setCorrectness","answers","partialScoring","map","answer","correctness","value","label","normalize","question","addCategoryEnabled","promptEnabled","rationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","getScore","session","env","correctAnswer","data","initialData","scoringType","isPartialScoring","enabled","undefined","correctAnswers","defaultAnswers","filterCategories","result","maxScore","score","scoreForLabelAndValueEditable","corrAnswer","forEach","index","defaultAnswer","editable","interactive","length","slice","parseFloat","toFixed","categories","deletable","rest","model","Promise","resolve","normalizedQuestion","categoryDefaultLabel","chartType","domain","graph","prompt","range","rationale","title","teacherInstructions","correctInfo","base","size","disabled","mode","correctedAnswer","role","outcome","empty","createCorrectResponseSession","id"],"mappings":"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","sourcesContent":["import debug from 'debug';\nimport isEmpty from 'lodash/isEmpty';\n\nimport { partialScoring } from '@pie-lib/controller-utils';\n\nconst log = debug('@pie-element:graphing:controller');\n\nconst lowerCase = string => (string || '').toLowerCase();\n\nexport const checkLabelsEquality = (givenAnswerLabel, correctAnswerLabel) =>\n lowerCase(givenAnswerLabel) === lowerCase(correctAnswerLabel);\n\nexport const setCorrectness = (answers, partialScoring) => answers ? answers.map(answer => ({\n ...answer,\n correctness: {\n value: partialScoring ? 'incorrect' : 'correct',\n label: partialScoring ? 'incorrect' : 'correct'\n }\n})) : [];\n\n\nexport const normalize = question => ({\n addCategoryEnabled: true,\n promptEnabled: true,\n rationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n ...question,\n});\n\nexport const getScore = (question, session, env = {}) => {\n const { correctAnswer, data: initialData = [], scoringType } = question;\n\n const isPartialScoring = partialScoring.enabled(\n { partialScoring: scoringType !== undefined ? scoringType === 'partial scoring' : scoringType },\n env\n );\n\n const { data: correctAnswers = [] } = correctAnswer || {};\n const defaultAnswers = filterCategories(initialData);\n\n let answers = setCorrectness((session && session.answer) || defaultAnswers, isPartialScoring);\n\n let result = 0;\n\n if (isPartialScoring) {\n // if score type is \"partial scoring\"\n // maxScore is calculated based on the correct response\n // score is calculated based on the given response\n let maxScore = 0;\n let score = 0;\n\n const scoreForLabelAndValueEditable = (answer, corrAnswer) => {\n const { value, label } = answer;\n\n maxScore += 2;\n\n if (value === corrAnswer.value) {\n score += 1;\n answer.correctness.value = 'correct';\n }\n\n if (checkLabelsEquality(label, corrAnswer.label)) {\n score += 1;\n answer.correctness.label = 'correct';\n }\n };\n\n // if given answer has more categories than the correct answers, the \"extra\" will be ignored\n correctAnswers.forEach((corrAnswer, index) => {\n const defaultAnswer = defaultAnswers[index];\n const answer = answers[index];\n\n // if there is a corresponding category at the same position in the given answer\n if (answer) {\n // if there is a corresponding category at the same position in the default answer\n if (defaultAnswer) {\n // if category's label (in default answer) was not editable\n // it means that this category values only one point (only the value can be changed)\n if (!defaultAnswer.editable && answer.interactive) {\n maxScore += 1;\n\n if (answer.value === corrAnswer.value) {\n score += 1;\n answer.correctness.value = 'correct';\n }\n answer.correctness.label = 'correct';\n\n // if category's label (in default answer) was editable\n // it means that this category values 2 points (both label and value can be changed)\n } else if (defaultAnswer.editable && answer.interactive) {\n scoreForLabelAndValueEditable(answer, corrAnswer);\n } else if (!answer.interactive) {\n answer.correctness.value = 'correct';\n answer.correctness.label = 'correct';\n }\n } else {\n // if there is not a corresponding category at the same position in the default answer\n scoreForLabelAndValueEditable(answer, corrAnswer);\n }\n } else {\n // if there is not a corresponding category at the same position in the given answer\n // it means that the given answer has less categories than the correct answer\n maxScore += 2;\n }\n });\n\n result = maxScore ? score / maxScore : 0;\n } else {\n // if scoring type is \"all or nothing\"\n // the length on correct answers and length of given answer have to match\n result = correctAnswers.length === answers.length ? 1 : 0;\n\n if (result) {\n // if there is at least one difference between the correct answer and the given answer\n // the result will be incorrect\n correctAnswers.forEach((corrAnswer, index) => {\n const { value, label } = answers[index];\n\n if (value !== corrAnswer.value) {\n result = 0;\n answers[index].correctness.value = 'incorrect';\n }\n if (lowerCase(label) !== lowerCase(corrAnswer.label)) {\n result = 0;\n answers[index].correctness.label = 'incorrect';\n }\n });\n } else {\n answers = [\n ...answers.slice(0, correctAnswers.length),\n ...setCorrectness(answers.slice(correctAnswers.length), true)\n ];\n }\n }\n\n return {\n score: parseFloat(result.toFixed(2)),\n answers\n };\n};\n\nexport const filterCategories = (categories) => categories ? categories.map(({deletable, ...rest}) => rest) : [];\n\nexport function model(question, session, env) {\n return new Promise(resolve => {\n const normalizedQuestion = normalize(question);\n const {\n addCategoryEnabled,\n categoryDefaultLabel,\n chartType,\n data,\n domain,\n graph,\n prompt,\n promptEnabled,\n range,\n rationale,\n title,\n rationaleEnabled,\n teacherInstructions,\n teacherInstructionsEnabled,\n correctAnswer,\n scoringType\n } = normalizedQuestion;\n\n const correctInfo = { correctness: 'incorrect', score: '0%' };\n\n const base = {\n addCategoryEnabled,\n categoryDefaultLabel,\n chartType,\n data: filterCategories(data),\n domain,\n graph,\n prompt: promptEnabled ? prompt : null,\n range,\n rationale,\n title,\n size: graph,\n correctness: correctInfo,\n disabled: env.mode !== 'gather',\n scoringType\n };\n\n const answers = filterCategories(getScore(normalizedQuestion, session, env).answers);\n\n if (env.mode === 'view') {\n base.correctedAnswer = answers.map(({correctness, ...rest}) => {\n return { ...rest, interactive: false };\n });\n\n base.addCategoryEnabled = false;\n }\n\n if (env.mode === 'evaluate') {\n base.correctedAnswer = answers;\n base.correctAnswer = correctAnswer;\n base.addCategoryEnabled = false;\n }\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n base.rationale = rationaleEnabled ? rationale : null;\n base.teacherInstructions = teacherInstructionsEnabled ? teacherInstructions : null;\n } else {\n base.rationale = null;\n base.teacherInstructions = null;\n }\n\n log('base: ', base);\n resolve(base);\n });\n}\n\nexport function outcome(model, session, env) {\n return new Promise(resolve => {\n resolve({\n score: getScore(model, session, env).score,\n empty: !session || isEmpty(session)\n });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise(resolve => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { correctAnswer } = question;\n\n let answers = correctAnswer && correctAnswer.data;\n\n // for IBX preview mode\n if (env.mode === 'gather') {\n const {data} = question;\n\n answers = (correctAnswer && correctAnswer.data || []).map((answer, index) => {\n return {\n ...data[index],\n ...answer\n };\n });\n }\n\n resolve({\n answer: answers,\n id: '1'\n });\n } else {\n return resolve(null);\n }\n });\n};\n"],"file":"index.js"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pie-element/charting-controller",
3
3
  "private": true,
4
- "version": "2.2.14",
4
+ "version": "2.2.24",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
@@ -35,6 +35,79 @@
35
35
  }
36
36
  }
37
37
  },
38
+ "spellCheck": {
39
+ "title": "ConfigureProp",
40
+ "type": "object",
41
+ "properties": {
42
+ "settings": {
43
+ "description": "Indicates if the item has to be displayed in the Settings Panel",
44
+ "type": "boolean",
45
+ "title": "settings"
46
+ },
47
+ "label": {
48
+ "description": "Indicates the label for the item that has to be displayed in the Settings Panel",
49
+ "type": "string",
50
+ "title": "label"
51
+ }
52
+ }
53
+ },
54
+ "titlePlaceholder": {
55
+ "title": "ConfigureProp",
56
+ "type": "object",
57
+ "properties": {
58
+ "settings": {
59
+ "description": "Indicates if the item has to be displayed in the Settings Panel",
60
+ "type": "boolean",
61
+ "title": "settings"
62
+ },
63
+ "label": {
64
+ "description": "Indicates the label for the item that has to be displayed in the Settings Panel",
65
+ "type": "string",
66
+ "title": "label"
67
+ }
68
+ }
69
+ },
70
+ "labelsPlaceholders": {
71
+ "title": "LabelsPlaceholderConfigProp",
72
+ "type": "object",
73
+ "properties": {
74
+ "top": {
75
+ "description": "This value is empty for charting. The property exist in order to be consistent with graphing configuration.",
76
+ "type": "string",
77
+ "title": "top"
78
+ },
79
+ "right": {
80
+ "description": "This value is empty for charting. The property exist in order to be consistent with graphing configuration.",
81
+ "type": "string",
82
+ "title": "right"
83
+ },
84
+ "bottom": {
85
+ "description": "Indicates the placeholder for the bottom label",
86
+ "type": "string",
87
+ "title": "bottom"
88
+ },
89
+ "left": {
90
+ "description": "Indicates the placeholder for the left label",
91
+ "type": "string",
92
+ "title": "left"
93
+ },
94
+ "settings": {
95
+ "description": "Indicates if the item has to be displayed in the Settings Panel",
96
+ "type": "boolean",
97
+ "title": "settings"
98
+ },
99
+ "label": {
100
+ "description": "Indicates the label for the item that has to be displayed in the Settings Panel",
101
+ "type": "string",
102
+ "title": "label"
103
+ },
104
+ "enabled": {
105
+ "description": "Indicates the value of the item if it affects config-ui\n(eg.: if item is a switch and displaying an input on the config-ui depends on the switch value: on/off)",
106
+ "type": "boolean",
107
+ "title": "enabled"
108
+ }
109
+ }
110
+ },
38
111
  "scoringType": {
39
112
  "title": "ConfigureProp",
40
113
  "type": "object",
@@ -104,6 +177,64 @@
104
177
  }
105
178
  }
106
179
  },
180
+ "maxImageWidth": {
181
+ "title": "ConfigureMaxImageDimensionsProp",
182
+ "type": "object",
183
+ "properties": {
184
+ "teacherInstructions": {
185
+ "description": "Indicates the max dimension for images in teacher instructions",
186
+ "type": "number",
187
+ "title": "teacherInstructions"
188
+ },
189
+ "prompt": {
190
+ "description": "Indicates the max dimension for images in prompt - this is also the default dimension for all other input fields if it's not specified",
191
+ "type": "number",
192
+ "title": "prompt"
193
+ },
194
+ "rationale": {
195
+ "description": "Indicates the max dimension for images in rationale",
196
+ "type": "number",
197
+ "title": "rationale"
198
+ }
199
+ }
200
+ },
201
+ "maxImageHeight": {
202
+ "title": "ConfigureMaxImageDimensionsProp",
203
+ "type": "object",
204
+ "properties": {
205
+ "teacherInstructions": {
206
+ "description": "Indicates the max dimension for images in teacher instructions",
207
+ "type": "number",
208
+ "title": "teacherInstructions"
209
+ },
210
+ "prompt": {
211
+ "description": "Indicates the max dimension for images in prompt - this is also the default dimension for all other input fields if it's not specified",
212
+ "type": "number",
213
+ "title": "prompt"
214
+ },
215
+ "rationale": {
216
+ "description": "Indicates the max dimension for images in rationale",
217
+ "type": "number",
218
+ "title": "rationale"
219
+ }
220
+ }
221
+ },
222
+ "withRubric": {
223
+ "title": "ConfigureProp",
224
+ "type": "object",
225
+ "properties": {
226
+ "settings": {
227
+ "description": "Indicates if the item has to be displayed in the Settings Panel",
228
+ "type": "boolean",
229
+ "title": "settings"
230
+ },
231
+ "label": {
232
+ "description": "Indicates the label for the item that has to be displayed in the Settings Panel",
233
+ "type": "string",
234
+ "title": "label"
235
+ }
236
+ }
237
+ },
107
238
  "showPrompt": {
108
239
  "description": "Determines whether prompt field will be displayed or not",
109
240
  "default": true,
@@ -140,6 +271,47 @@
140
271
  }
141
272
  }
142
273
  },
274
+ "LabelsPlaceholderConfigProp": {
275
+ "title": "LabelsPlaceholderConfigProp",
276
+ "type": "object",
277
+ "properties": {
278
+ "top": {
279
+ "description": "This value is empty for charting. The property exist in order to be consistent with graphing configuration.",
280
+ "type": "string",
281
+ "title": "top"
282
+ },
283
+ "right": {
284
+ "description": "This value is empty for charting. The property exist in order to be consistent with graphing configuration.",
285
+ "type": "string",
286
+ "title": "right"
287
+ },
288
+ "bottom": {
289
+ "description": "Indicates the placeholder for the bottom label",
290
+ "type": "string",
291
+ "title": "bottom"
292
+ },
293
+ "left": {
294
+ "description": "Indicates the placeholder for the left label",
295
+ "type": "string",
296
+ "title": "left"
297
+ },
298
+ "settings": {
299
+ "description": "Indicates if the item has to be displayed in the Settings Panel",
300
+ "type": "boolean",
301
+ "title": "settings"
302
+ },
303
+ "label": {
304
+ "description": "Indicates the label for the item that has to be displayed in the Settings Panel",
305
+ "type": "string",
306
+ "title": "label"
307
+ },
308
+ "enabled": {
309
+ "description": "Indicates the value of the item if it affects config-ui\n(eg.: if item is a switch and displaying an input on the config-ui depends on the switch value: on/off)",
310
+ "type": "boolean",
311
+ "title": "enabled"
312
+ }
313
+ }
314
+ },
143
315
  "ConfigurePropWithEnabled": {
144
316
  "title": "ConfigurePropWithEnabled",
145
317
  "type": "object",
@@ -160,6 +332,27 @@
160
332
  "title": "enabled"
161
333
  }
162
334
  }
335
+ },
336
+ "ConfigureMaxImageDimensionsProp": {
337
+ "title": "ConfigureMaxImageDimensionsProp",
338
+ "type": "object",
339
+ "properties": {
340
+ "teacherInstructions": {
341
+ "description": "Indicates the max dimension for images in teacher instructions",
342
+ "type": "number",
343
+ "title": "teacherInstructions"
344
+ },
345
+ "prompt": {
346
+ "description": "Indicates the max dimension for images in prompt - this is also the default dimension for all other input fields if it's not specified",
347
+ "type": "number",
348
+ "title": "prompt"
349
+ },
350
+ "rationale": {
351
+ "description": "Indicates the max dimension for images in rationale",
352
+ "type": "number",
353
+ "title": "rationale"
354
+ }
355
+ }
163
356
  }
164
357
  },
165
358
  "$schema": "http://json-schema.org/draft-07/schema#"