@pie-element/match-list 1.15.0 → 1.15.1-beta.1
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/controller/package.json +3 -3
- package/package.json +7 -6
- package/controller/lib/defaults.js +0 -23
- package/controller/lib/defaults.js.map +0 -1
- package/controller/lib/index.js +0 -261
- package/controller/lib/index.js.map +0 -1
- package/lib/answer-area.js +0 -239
- package/lib/answer-area.js.map +0 -1
- package/lib/answer.js +0 -275
- package/lib/answer.js.map +0 -1
- package/lib/arrow.js +0 -99
- package/lib/arrow.js.map +0 -1
- package/lib/choices-list.js +0 -136
- package/lib/choices-list.js.map +0 -1
- package/lib/index.js +0 -132
- package/lib/index.js.map +0 -1
- package/lib/main.js +0 -194
- package/lib/main.js.map +0 -1
package/controller/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/match-list-controller",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "1.5.
|
|
4
|
+
"version": "1.5.23-beta.0",
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"module": "src/index.js",
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
"test": "./node_modules/.bin/jest"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@pie-lib/controller-utils": "^0.2.
|
|
13
|
-
"@pie-lib/feedback": "^0.4.
|
|
12
|
+
"@pie-lib/controller-utils": "^0.2.42",
|
|
13
|
+
"@pie-lib/feedback": "^0.4.42",
|
|
14
14
|
"debug": "^3.1.0",
|
|
15
15
|
"lodash": "^4.17.15"
|
|
16
16
|
},
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"repository": "pie-framework/pie-elements",
|
|
7
|
-
"version": "1.15.
|
|
7
|
+
"version": "1.15.1-beta.1+73223f303",
|
|
8
8
|
"description": "",
|
|
9
9
|
"scripts": {
|
|
10
10
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
@@ -14,12 +14,13 @@
|
|
|
14
14
|
"@material-ui/core": "^3.9.2",
|
|
15
15
|
"@material-ui/icons": "^3.0.2",
|
|
16
16
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
17
|
-
"@pie-lib/correct-answer-toggle": "^2.3.
|
|
18
|
-
"@pie-lib/drag": "^2.1.
|
|
19
|
-
"@pie-lib/math-rendering": "^2.5.
|
|
20
|
-
"@pie-lib/render-ui": "^4.
|
|
17
|
+
"@pie-lib/correct-answer-toggle": "^2.3.62",
|
|
18
|
+
"@pie-lib/drag": "^2.1.12",
|
|
19
|
+
"@pie-lib/math-rendering": "^2.5.12",
|
|
20
|
+
"@pie-lib/render-ui": "^4.14.12",
|
|
21
21
|
"classnames": "^2.2.5",
|
|
22
22
|
"debug": "^4.1.1",
|
|
23
|
+
"is-plain-object": "^5.0.0",
|
|
23
24
|
"lodash": "^4.17.10",
|
|
24
25
|
"prop-types": "^15.6.1",
|
|
25
26
|
"react": "^16.8.1",
|
|
@@ -28,7 +29,7 @@
|
|
|
28
29
|
},
|
|
29
30
|
"author": "",
|
|
30
31
|
"license": "ISC",
|
|
31
|
-
"gitHead": "
|
|
32
|
+
"gitHead": "73223f303ea31ca510b096d77e6fb06382b0f0c6",
|
|
32
33
|
"main": "lib/index.js",
|
|
33
34
|
"module": "src/index.js"
|
|
34
35
|
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports["default"] = void 0;
|
|
7
|
-
var _default = {
|
|
8
|
-
config: {
|
|
9
|
-
rows: [{
|
|
10
|
-
id: 1,
|
|
11
|
-
title: 'Question Text 1',
|
|
12
|
-
values: [false, false]
|
|
13
|
-
}, {
|
|
14
|
-
id: 2,
|
|
15
|
-
title: 'Question Text 2',
|
|
16
|
-
values: [false, false]
|
|
17
|
-
}],
|
|
18
|
-
layout: 3,
|
|
19
|
-
headers: ['Column 1', 'Column 2', 'Column 3']
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
exports["default"] = _default;
|
|
23
|
-
//# sourceMappingURL=defaults.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/defaults.js"],"names":["config","rows","id","title","values","layout","headers"],"mappings":";;;;;;eAAe;AACbA,EAAAA,MAAM,EAAE;AACNC,IAAAA,IAAI,EAAE,CACJ;AACEC,MAAAA,EAAE,EAAE,CADN;AAEEC,MAAAA,KAAK,EAAE,iBAFT;AAGEC,MAAAA,MAAM,EAAE,CAAC,KAAD,EAAQ,KAAR;AAHV,KADI,EAMJ;AACEF,MAAAA,EAAE,EAAE,CADN;AAEEC,MAAAA,KAAK,EAAE,iBAFT;AAGEC,MAAAA,MAAM,EAAE,CAAC,KAAD,EAAQ,KAAR;AAHV,KANI,CADA;AAaNC,IAAAA,MAAM,EAAE,CAbF;AAcNC,IAAAA,OAAO,EAAE,CAAC,UAAD,EAAa,UAAb,EAAyB,UAAzB;AAdH;AADK,C","sourcesContent":["export default {\n config: {\n rows: [\n {\n id: 1,\n title: 'Question Text 1',\n values: [false, false],\n },\n {\n id: 2,\n title: 'Question Text 2',\n values: [false, false],\n },\n ],\n layout: 3,\n headers: ['Column 1', 'Column 2', 'Column 3'],\n },\n};\n"],"file":"defaults.js"}
|
package/controller/lib/index.js
DELETED
|
@@ -1,261 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.createCorrectResponseSession = void 0;
|
|
9
|
-
exports.createDefaultModel = createDefaultModel;
|
|
10
|
-
exports.model = model;
|
|
11
|
-
exports.outcome = void 0;
|
|
12
|
-
|
|
13
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
14
|
-
|
|
15
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
16
|
-
|
|
17
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
18
|
-
|
|
19
|
-
var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
|
|
20
|
-
|
|
21
|
-
var _feedback = require("@pie-lib/feedback");
|
|
22
|
-
|
|
23
|
-
var _controllerUtils = require("@pie-lib/controller-utils");
|
|
24
|
-
|
|
25
|
-
var _debug = _interopRequireDefault(require("debug"));
|
|
26
|
-
|
|
27
|
-
var _defaults = _interopRequireDefault(require("./defaults"));
|
|
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; }
|
|
30
|
-
|
|
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; }
|
|
32
|
-
|
|
33
|
-
var log = (0, _debug["default"])('@pie-element:match-list:controller');
|
|
34
|
-
|
|
35
|
-
var getResponseCorrectness = function getResponseCorrectness(model, answers, env) {
|
|
36
|
-
var isPartialScoring = _controllerUtils.partialScoring.enabled(model, env);
|
|
37
|
-
|
|
38
|
-
var prompts = model.prompts;
|
|
39
|
-
|
|
40
|
-
if (!answers || Object.keys(answers).length === 0) {
|
|
41
|
-
return 'unanswered';
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
var totalCorrectAnswers = getTotalCorrect(model);
|
|
45
|
-
var correctAnswers = getCorrectSelected(prompts, answers);
|
|
46
|
-
|
|
47
|
-
if (totalCorrectAnswers === correctAnswers) {
|
|
48
|
-
return 'correct';
|
|
49
|
-
} else if (correctAnswers === 0) {
|
|
50
|
-
return 'incorrect';
|
|
51
|
-
} else if (isPartialScoring) {
|
|
52
|
-
return 'partial';
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
return 'incorrect';
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
var getCorrectness = function getCorrectness(question, env, answers) {
|
|
59
|
-
if (env.mode === 'evaluate') {
|
|
60
|
-
return getResponseCorrectness(question, answers, env);
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
var getCorrectSelected = function getCorrectSelected() {
|
|
65
|
-
var prompts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
66
|
-
var answers = arguments.length > 1 ? arguments[1] : undefined;
|
|
67
|
-
var correctAnswers = 0;
|
|
68
|
-
prompts.forEach(function (p) {
|
|
69
|
-
if (p.relatedAnswer === answers[p.id]) {
|
|
70
|
-
correctAnswers += 1;
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
return correctAnswers;
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
var getTotalCorrect = function getTotalCorrect(question) {
|
|
77
|
-
return question && question.prompts ? question.prompts.length : 0;
|
|
78
|
-
};
|
|
79
|
-
|
|
80
|
-
var getPartialScore = function getPartialScore(question, answers) {
|
|
81
|
-
var count = getCorrectSelected(question && question.prompts, answers);
|
|
82
|
-
var totalCorrect = getTotalCorrect(question);
|
|
83
|
-
return parseFloat((count / totalCorrect).toFixed(2));
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
var getOutComeScore = function getOutComeScore(question, env, answers) {
|
|
87
|
-
var correctness = getCorrectness(question, env, answers);
|
|
88
|
-
return correctness === 'correct' ? 1 : correctness === 'partial' && true ? getPartialScore(question, answers) : 0;
|
|
89
|
-
};
|
|
90
|
-
|
|
91
|
-
var outcome = function outcome(question, session, env) {
|
|
92
|
-
return new Promise(function (resolve) {
|
|
93
|
-
if (env.mode !== 'evaluate') {
|
|
94
|
-
resolve({
|
|
95
|
-
score: undefined,
|
|
96
|
-
completed: undefined
|
|
97
|
-
});
|
|
98
|
-
} else {
|
|
99
|
-
if (!session || (0, _isEmpty["default"])(session)) {
|
|
100
|
-
resolve({
|
|
101
|
-
score: 0,
|
|
102
|
-
empty: true
|
|
103
|
-
});
|
|
104
|
-
} else {
|
|
105
|
-
var out = {
|
|
106
|
-
score: getOutComeScore(question, env, session.value)
|
|
107
|
-
};
|
|
108
|
-
resolve(out);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
});
|
|
112
|
-
};
|
|
113
|
-
|
|
114
|
-
exports.outcome = outcome;
|
|
115
|
-
|
|
116
|
-
function createDefaultModel() {
|
|
117
|
-
var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
118
|
-
return new Promise(function (resolve) {
|
|
119
|
-
resolve(_objectSpread(_objectSpread({}, _defaults["default"]), model));
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
*
|
|
124
|
-
* @param {*} question
|
|
125
|
-
* @param {*} session
|
|
126
|
-
* @param {*} env
|
|
127
|
-
* @param {*} updateSession - optional - a function that will set the properties passed into it on the session.
|
|
128
|
-
*/
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
function model(question, session, env, updateSession) {
|
|
132
|
-
return new Promise( /*#__PURE__*/function () {
|
|
133
|
-
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(resolve) {
|
|
134
|
-
var correctness, correctResponse, score, correctInfo, shuffledValues, prompts, answers, us, lockChoiceOrder, fb;
|
|
135
|
-
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
136
|
-
while (1) {
|
|
137
|
-
switch (_context.prev = _context.next) {
|
|
138
|
-
case 0:
|
|
139
|
-
correctness = getCorrectness(question, env, session && session.value);
|
|
140
|
-
correctResponse = {};
|
|
141
|
-
score = "".concat(getOutComeScore(question, env, session && session.value) * 100, "%");
|
|
142
|
-
correctInfo = {
|
|
143
|
-
score: score,
|
|
144
|
-
correctness: correctness
|
|
145
|
-
};
|
|
146
|
-
shuffledValues = {};
|
|
147
|
-
prompts = question.prompts;
|
|
148
|
-
answers = question.answers;
|
|
149
|
-
|
|
150
|
-
us = function us(part) {
|
|
151
|
-
return function (id, element, update) {
|
|
152
|
-
return new Promise(function (resolve) {
|
|
153
|
-
shuffledValues[part] = update.shuffledValues;
|
|
154
|
-
resolve();
|
|
155
|
-
});
|
|
156
|
-
};
|
|
157
|
-
};
|
|
158
|
-
|
|
159
|
-
lockChoiceOrder = (0, _controllerUtils.lockChoices)(question, session, env);
|
|
160
|
-
|
|
161
|
-
if (lockChoiceOrder) {
|
|
162
|
-
_context.next = 16;
|
|
163
|
-
break;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
_context.next = 12;
|
|
167
|
-
return (0, _controllerUtils.getShuffledChoices)(prompts, {
|
|
168
|
-
shuffledValues: (session && session.shuffledValues || {}).prompts
|
|
169
|
-
}, us('prompts'), 'id');
|
|
170
|
-
|
|
171
|
-
case 12:
|
|
172
|
-
prompts = _context.sent;
|
|
173
|
-
_context.next = 15;
|
|
174
|
-
return (0, _controllerUtils.getShuffledChoices)(answers, {
|
|
175
|
-
shuffledValues: (session && session.shuffledValues || {}).answers
|
|
176
|
-
}, us('answers'), 'id');
|
|
177
|
-
|
|
178
|
-
case 15:
|
|
179
|
-
answers = _context.sent;
|
|
180
|
-
|
|
181
|
-
case 16:
|
|
182
|
-
if (!(0, _isEmpty["default"])(shuffledValues)) {
|
|
183
|
-
if (updateSession && typeof updateSession === 'function') {
|
|
184
|
-
updateSession(session.id, session.element, {
|
|
185
|
-
shuffledValues: shuffledValues
|
|
186
|
-
})["catch"](function (e) {
|
|
187
|
-
console.error('update session failed', e);
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
if (question && prompts) {
|
|
193
|
-
prompts.forEach(function (prompt) {
|
|
194
|
-
correctResponse[prompt.id] = prompt.relatedAnswer;
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
fb = env.mode === 'evaluate' ? (0, _feedback.getFeedbackForCorrectness)(correctInfo.correctness, question.feedback) : Promise.resolve(undefined);
|
|
199
|
-
fb.then(function (feedback) {
|
|
200
|
-
var base = {
|
|
201
|
-
config: _objectSpread(_objectSpread({}, question), {}, {
|
|
202
|
-
prompts: prompts,
|
|
203
|
-
answers: answers
|
|
204
|
-
}),
|
|
205
|
-
correctness: correctInfo,
|
|
206
|
-
feedback: feedback,
|
|
207
|
-
mode: env.mode
|
|
208
|
-
};
|
|
209
|
-
|
|
210
|
-
if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {
|
|
211
|
-
base.rationale = question.rationale;
|
|
212
|
-
} else {
|
|
213
|
-
base.rationale = null;
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
var out = Object.assign(base, {
|
|
217
|
-
correctResponse: correctResponse
|
|
218
|
-
});
|
|
219
|
-
log('out: ', out);
|
|
220
|
-
resolve(out);
|
|
221
|
-
});
|
|
222
|
-
|
|
223
|
-
case 20:
|
|
224
|
-
case "end":
|
|
225
|
-
return _context.stop();
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
}, _callee);
|
|
229
|
-
}));
|
|
230
|
-
|
|
231
|
-
return function (_x) {
|
|
232
|
-
return _ref.apply(this, arguments);
|
|
233
|
-
};
|
|
234
|
-
}());
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
var createCorrectResponseSession = function createCorrectResponseSession(question, env) {
|
|
238
|
-
return new Promise(function (resolve) {
|
|
239
|
-
if (env.mode !== 'evaluate' && env.role === 'instructor') {
|
|
240
|
-
var prompts = question.prompts,
|
|
241
|
-
answers = question.answers;
|
|
242
|
-
var value = {};
|
|
243
|
-
prompts.forEach(function (p) {
|
|
244
|
-
if (answers.filter(function (a) {
|
|
245
|
-
return a.id === p.relatedAnswer;
|
|
246
|
-
}).length) {
|
|
247
|
-
value[p.id] = p.relatedAnswer;
|
|
248
|
-
}
|
|
249
|
-
});
|
|
250
|
-
resolve({
|
|
251
|
-
value: value,
|
|
252
|
-
id: '1'
|
|
253
|
-
});
|
|
254
|
-
} else {
|
|
255
|
-
resolve(null);
|
|
256
|
-
}
|
|
257
|
-
});
|
|
258
|
-
};
|
|
259
|
-
|
|
260
|
-
exports.createCorrectResponseSession = createCorrectResponseSession;
|
|
261
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["log","getResponseCorrectness","model","answers","env","isPartialScoring","partialScoring","enabled","prompts","Object","keys","length","totalCorrectAnswers","getTotalCorrect","correctAnswers","getCorrectSelected","getCorrectness","question","mode","forEach","p","relatedAnswer","id","getPartialScore","count","totalCorrect","parseFloat","toFixed","getOutComeScore","correctness","outcome","session","Promise","resolve","score","undefined","completed","empty","out","value","createDefaultModel","defaults","updateSession","correctResponse","correctInfo","shuffledValues","us","part","element","update","lockChoiceOrder","e","console","error","prompt","fb","feedback","then","base","config","role","rationale","assign","createCorrectResponseSession","filter","a"],"mappings":"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","sourcesContent":["import isEmpty from 'lodash/isEmpty';\nimport { getFeedbackForCorrectness } from '@pie-lib/feedback';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/controller-utils';\nimport debug from 'debug';\n\nconst log = debug('@pie-element:match-list:controller');\n\nimport defaults from './defaults';\n\nconst getResponseCorrectness = (model, answers, env) => {\n const isPartialScoring = partialScoring.enabled(model, env);\n const prompts = model.prompts;\n\n if (!answers || Object.keys(answers).length === 0) {\n return 'unanswered';\n }\n\n const totalCorrectAnswers = getTotalCorrect(model);\n const correctAnswers = getCorrectSelected(prompts, answers);\n\n if (totalCorrectAnswers === correctAnswers) {\n return 'correct';\n } else if (correctAnswers === 0) {\n return 'incorrect';\n } else if (isPartialScoring) {\n return 'partial';\n }\n\n return 'incorrect';\n};\n\nconst getCorrectness = (question, env, answers) => {\n if (env.mode === 'evaluate') {\n return getResponseCorrectness(question, answers, env);\n }\n};\n\nconst getCorrectSelected = (prompts = [], answers) => {\n let correctAnswers = 0;\n\n prompts.forEach((p) => {\n if (p.relatedAnswer === answers[p.id]) {\n correctAnswers += 1;\n }\n });\n\n return correctAnswers;\n};\n\nconst getTotalCorrect = (question) => {\n return question && question.prompts ? question.prompts.length : 0;\n};\n\nconst getPartialScore = (question, answers) => {\n const count = getCorrectSelected(question && question.prompts, answers);\n const totalCorrect = getTotalCorrect(question);\n\n return parseFloat((count / totalCorrect).toFixed(2));\n};\n\nconst getOutComeScore = (question, env, answers) => {\n const correctness = getCorrectness(question, env, answers);\n\n return correctness === 'correct' ? 1 : correctness === 'partial' && true ? getPartialScore(question, answers) : 0;\n};\n\nexport const outcome = (question, session, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate') {\n resolve({ score: undefined, completed: undefined });\n } else {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n } else {\n const out = {\n score: getOutComeScore(question, env, session.value),\n };\n\n resolve(out);\n }\n }\n });\n};\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n}\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.\n */\nexport function model(question, session, env, updateSession) {\n return new Promise(async (resolve) => {\n const correctness = getCorrectness(question, env, session && session.value);\n const correctResponse = {};\n const score = `${getOutComeScore(question, env, session && session.value) * 100}%`;\n const correctInfo = {\n score,\n correctness,\n };\n\n const shuffledValues = {};\n let prompts = question.prompts;\n let answers = question.answers;\n\n const us = (part) => (id, element, update) => {\n return new Promise((resolve) => {\n shuffledValues[part] = update.shuffledValues;\n resolve();\n });\n };\n\n const lockChoiceOrder = lockChoices(question, session, env);\n\n if (!lockChoiceOrder) {\n prompts = await getShuffledChoices(\n prompts,\n { shuffledValues: ((session && session.shuffledValues) || {}).prompts },\n us('prompts'),\n 'id',\n );\n answers = await getShuffledChoices(\n answers,\n { shuffledValues: ((session && session.shuffledValues) || {}).answers },\n us('answers'),\n 'id',\n );\n }\n\n if (!isEmpty(shuffledValues)) {\n if (updateSession && typeof updateSession === 'function') {\n updateSession(session.id, session.element, {\n shuffledValues,\n }).catch((e) => {\n console.error('update session failed', e);\n });\n }\n }\n\n if (question && prompts) {\n prompts.forEach((prompt) => {\n correctResponse[prompt.id] = prompt.relatedAnswer;\n });\n }\n\n const fb =\n env.mode === 'evaluate'\n ? getFeedbackForCorrectness(correctInfo.correctness, question.feedback)\n : Promise.resolve(undefined);\n\n fb.then((feedback) => {\n const base = {\n config: {\n ...question,\n prompts,\n answers,\n },\n correctness: correctInfo,\n feedback,\n mode: env.mode,\n };\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n base.rationale = question.rationale;\n } else {\n base.rationale = null;\n }\n\n const out = Object.assign(base, {\n correctResponse,\n });\n\n log('out: ', out);\n resolve(out);\n });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { prompts, answers } = question;\n const value = {};\n\n prompts.forEach((p) => {\n if (answers.filter((a) => a.id === p.relatedAnswer).length) {\n value[p.id] = p.relatedAnswer;\n }\n });\n\n resolve({\n value,\n id: '1',\n });\n } else {\n resolve(null);\n }\n });\n};\n"],"file":"index.js"}
|
package/lib/answer-area.js
DELETED
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports["default"] = exports.AnswerArea = void 0;
|
|
9
|
-
|
|
10
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
-
|
|
12
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
-
|
|
14
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
15
|
-
|
|
16
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
|
-
|
|
18
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
19
|
-
|
|
20
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
21
|
-
|
|
22
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
23
|
-
|
|
24
|
-
var _react = _interopRequireDefault(require("react"));
|
|
25
|
-
|
|
26
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
27
|
-
|
|
28
|
-
var _styles = require("@material-ui/core/styles");
|
|
29
|
-
|
|
30
|
-
var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
|
|
31
|
-
|
|
32
|
-
var _isUndefined = _interopRequireDefault(require("lodash/isUndefined"));
|
|
33
|
-
|
|
34
|
-
var _reduce = _interopRequireDefault(require("lodash/reduce"));
|
|
35
|
-
|
|
36
|
-
var _arrow = _interopRequireDefault(require("./arrow"));
|
|
37
|
-
|
|
38
|
-
var _answer = _interopRequireDefault(require("./answer"));
|
|
39
|
-
|
|
40
|
-
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; }
|
|
41
|
-
|
|
42
|
-
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; }
|
|
43
|
-
|
|
44
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
45
|
-
|
|
46
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
47
|
-
|
|
48
|
-
var AnswerArea = /*#__PURE__*/function (_React$Component) {
|
|
49
|
-
(0, _inherits2["default"])(AnswerArea, _React$Component);
|
|
50
|
-
|
|
51
|
-
var _super = _createSuper(AnswerArea);
|
|
52
|
-
|
|
53
|
-
function AnswerArea() {
|
|
54
|
-
var _this;
|
|
55
|
-
|
|
56
|
-
(0, _classCallCheck2["default"])(this, AnswerArea);
|
|
57
|
-
|
|
58
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
59
|
-
args[_key] = arguments[_key];
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
_this = _super.call.apply(_super, [this].concat(args));
|
|
63
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getAnswerFromSession", function (promptId) {
|
|
64
|
-
var _this$props = _this.props,
|
|
65
|
-
model = _this$props.model,
|
|
66
|
-
session = _this$props.session,
|
|
67
|
-
showCorrect = _this$props.showCorrect;
|
|
68
|
-
var config = model.config;
|
|
69
|
-
var answerId = showCorrect ? config.prompts.find(function (p) {
|
|
70
|
-
return p.id === promptId;
|
|
71
|
-
}).relatedAnswer : session.value && session.value[promptId];
|
|
72
|
-
var answer = config.answers.find(function (answer) {
|
|
73
|
-
return answer.id === answerId;
|
|
74
|
-
});
|
|
75
|
-
return answer || {};
|
|
76
|
-
});
|
|
77
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getCorrectOrIncorrectMap", function () {
|
|
78
|
-
var _this$props2 = _this.props,
|
|
79
|
-
model = _this$props2.model,
|
|
80
|
-
session = _this$props2.session,
|
|
81
|
-
showCorrect = _this$props2.showCorrect;
|
|
82
|
-
var config = model.config;
|
|
83
|
-
var sessionValue = session.value || config.prompts.reduce(function (obj, prompt) {
|
|
84
|
-
obj[prompt.id] = undefined;
|
|
85
|
-
return obj;
|
|
86
|
-
}, {});
|
|
87
|
-
|
|
88
|
-
if (model.mode !== 'evaluate') {
|
|
89
|
-
return {};
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
if (showCorrect) {
|
|
93
|
-
return config.prompts.reduce(function (obj, prompt) {
|
|
94
|
-
obj[prompt.id] = true;
|
|
95
|
-
return obj;
|
|
96
|
-
}, {});
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
var correctPromptMap = config.prompts.reduce(function (obj, prompt) {
|
|
100
|
-
if (!(0, _isUndefined["default"])(prompt.relatedAnswer)) {
|
|
101
|
-
obj[prompt.id] = prompt.relatedAnswer;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
return obj;
|
|
105
|
-
}, {});
|
|
106
|
-
return (0, _reduce["default"])(sessionValue, function (obj, val, key) {
|
|
107
|
-
obj[key] = correctPromptMap[key] === sessionValue[key];
|
|
108
|
-
return obj;
|
|
109
|
-
}, {});
|
|
110
|
-
});
|
|
111
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "buildRows", function () {
|
|
112
|
-
var model = _this.props.model;
|
|
113
|
-
var config = model.config;
|
|
114
|
-
var prompts = config.prompts || [];
|
|
115
|
-
return prompts.map(function (prompt) {
|
|
116
|
-
var sessionAnswer = _this.getAnswerFromSession(prompt.id);
|
|
117
|
-
|
|
118
|
-
return _objectSpread(_objectSpread({}, prompt), {}, {
|
|
119
|
-
sessionAnswer: sessionAnswer
|
|
120
|
-
});
|
|
121
|
-
});
|
|
122
|
-
});
|
|
123
|
-
return _this;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
(0, _createClass2["default"])(AnswerArea, [{
|
|
127
|
-
key: "render",
|
|
128
|
-
value: function render() {
|
|
129
|
-
var _this$props3 = this.props,
|
|
130
|
-
classes = _this$props3.classes,
|
|
131
|
-
disabled = _this$props3.disabled,
|
|
132
|
-
_onPlaceAnswer = _this$props3.onPlaceAnswer,
|
|
133
|
-
instanceId = _this$props3.instanceId,
|
|
134
|
-
onRemoveAnswer = _this$props3.onRemoveAnswer;
|
|
135
|
-
var rows = this.buildRows();
|
|
136
|
-
var correctnessMap = this.getCorrectOrIncorrectMap();
|
|
137
|
-
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
138
|
-
className: classes.itemList
|
|
139
|
-
}, rows.map(function (_ref, index) {
|
|
140
|
-
var sessionAnswer = _ref.sessionAnswer,
|
|
141
|
-
title = _ref.title,
|
|
142
|
-
id = _ref.id;
|
|
143
|
-
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
144
|
-
className: classes.row,
|
|
145
|
-
style: {
|
|
146
|
-
display: 'flex'
|
|
147
|
-
},
|
|
148
|
-
key: index
|
|
149
|
-
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
150
|
-
className: classes.promptEntry,
|
|
151
|
-
dangerouslySetInnerHTML: {
|
|
152
|
-
__html: title
|
|
153
|
-
}
|
|
154
|
-
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
155
|
-
className: classes.arrowEntry
|
|
156
|
-
}, /*#__PURE__*/_react["default"].createElement(_arrow["default"], {
|
|
157
|
-
direction: "left"
|
|
158
|
-
}), /*#__PURE__*/_react["default"].createElement(_arrow["default"], null)), /*#__PURE__*/_react["default"].createElement(_answer["default"], {
|
|
159
|
-
key: index,
|
|
160
|
-
className: classes.answer,
|
|
161
|
-
index: index,
|
|
162
|
-
promptId: id,
|
|
163
|
-
correct: correctnessMap[id],
|
|
164
|
-
draggable: !(0, _isEmpty["default"])(sessionAnswer),
|
|
165
|
-
disabled: disabled,
|
|
166
|
-
instanceId: instanceId,
|
|
167
|
-
id: sessionAnswer.id,
|
|
168
|
-
onPlaceAnswer: function onPlaceAnswer(place, id) {
|
|
169
|
-
return _onPlaceAnswer(place, id);
|
|
170
|
-
},
|
|
171
|
-
title: sessionAnswer.title,
|
|
172
|
-
type: 'target',
|
|
173
|
-
onRemoveChoice: function onRemoveChoice() {
|
|
174
|
-
return onRemoveAnswer(id);
|
|
175
|
-
}
|
|
176
|
-
}));
|
|
177
|
-
}));
|
|
178
|
-
}
|
|
179
|
-
}]);
|
|
180
|
-
return AnswerArea;
|
|
181
|
-
}(_react["default"].Component);
|
|
182
|
-
|
|
183
|
-
exports.AnswerArea = AnswerArea;
|
|
184
|
-
(0, _defineProperty2["default"])(AnswerArea, "propTypes", {
|
|
185
|
-
classes: _propTypes["default"].object,
|
|
186
|
-
session: _propTypes["default"].object.isRequired,
|
|
187
|
-
showCorrect: _propTypes["default"].bool.isRequired,
|
|
188
|
-
disabled: _propTypes["default"].bool.isRequired,
|
|
189
|
-
onSessionChange: _propTypes["default"].func,
|
|
190
|
-
onRemoveAnswer: _propTypes["default"].func,
|
|
191
|
-
onPlaceAnswer: _propTypes["default"].func.isRequired,
|
|
192
|
-
instanceId: _propTypes["default"].string.isRequired,
|
|
193
|
-
model: _propTypes["default"].object.isRequired,
|
|
194
|
-
prompt: _propTypes["default"].string
|
|
195
|
-
});
|
|
196
|
-
|
|
197
|
-
var styles = function styles() {
|
|
198
|
-
return {
|
|
199
|
-
answer: {
|
|
200
|
-
flex: 1
|
|
201
|
-
},
|
|
202
|
-
arrowEntry: {
|
|
203
|
-
alignItems: 'normal',
|
|
204
|
-
display: 'flex',
|
|
205
|
-
height: 40,
|
|
206
|
-
margin: '10px 20px'
|
|
207
|
-
},
|
|
208
|
-
itemList: {
|
|
209
|
-
alignItems: 'flex-start',
|
|
210
|
-
display: 'flex',
|
|
211
|
-
flex: 1,
|
|
212
|
-
flexDirection: 'column',
|
|
213
|
-
justifyContent: 'space-between'
|
|
214
|
-
},
|
|
215
|
-
promptEntry: {
|
|
216
|
-
border: '1px solid #c2c2c2',
|
|
217
|
-
boxSizing: 'border-box',
|
|
218
|
-
flex: 1,
|
|
219
|
-
margin: '10px 0',
|
|
220
|
-
minHeight: 40,
|
|
221
|
-
overflow: 'hidden',
|
|
222
|
-
padding: 10,
|
|
223
|
-
textAlign: 'center',
|
|
224
|
-
width: '100%',
|
|
225
|
-
wordBreak: 'break-word'
|
|
226
|
-
},
|
|
227
|
-
row: {
|
|
228
|
-
alignItems: 'center',
|
|
229
|
-
display: 'flex',
|
|
230
|
-
justifyContent: 'space-between',
|
|
231
|
-
width: '100%'
|
|
232
|
-
}
|
|
233
|
-
};
|
|
234
|
-
};
|
|
235
|
-
|
|
236
|
-
var _default = (0, _styles.withStyles)(styles)(AnswerArea);
|
|
237
|
-
|
|
238
|
-
exports["default"] = _default;
|
|
239
|
-
//# sourceMappingURL=answer-area.js.map
|
package/lib/answer-area.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/answer-area.jsx"],"names":["AnswerArea","promptId","props","model","session","showCorrect","config","answerId","prompts","find","p","id","relatedAnswer","value","answer","answers","sessionValue","reduce","obj","prompt","undefined","mode","correctPromptMap","val","key","map","sessionAnswer","getAnswerFromSession","classes","disabled","onPlaceAnswer","instanceId","onRemoveAnswer","rows","buildRows","correctnessMap","getCorrectOrIncorrectMap","itemList","index","title","row","display","promptEntry","__html","arrowEntry","place","React","Component","PropTypes","object","isRequired","bool","onSessionChange","func","string","styles","flex","alignItems","height","margin","flexDirection","justifyContent","border","boxSizing","minHeight","overflow","padding","textAlign","width","wordBreak"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport isEmpty from 'lodash/isEmpty';\nimport isUndefined from 'lodash/isUndefined';\nimport reduce from 'lodash/reduce';\n\nimport Arrow from './arrow';\nimport DragAndDropAnswer from './answer';\n\nexport class AnswerArea extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n session: PropTypes.object.isRequired,\n showCorrect: PropTypes.bool.isRequired,\n disabled: PropTypes.bool.isRequired,\n onSessionChange: PropTypes.func,\n onRemoveAnswer: PropTypes.func,\n onPlaceAnswer: PropTypes.func.isRequired,\n instanceId: PropTypes.string.isRequired,\n model: PropTypes.object.isRequired,\n prompt: PropTypes.string,\n };\n\n getAnswerFromSession = (promptId) => {\n const { model, session, showCorrect } = this.props;\n const { config } = model;\n const answerId = showCorrect\n ? config.prompts.find((p) => p.id === promptId).relatedAnswer\n : session.value && session.value[promptId];\n const answer = config.answers.find((answer) => answer.id === answerId);\n\n return answer || {};\n };\n\n getCorrectOrIncorrectMap = () => {\n const { model, session, showCorrect } = this.props;\n const { config } = model;\n const sessionValue =\n session.value ||\n config.prompts.reduce((obj, prompt) => {\n obj[prompt.id] = undefined;\n return obj;\n }, {});\n\n if (model.mode !== 'evaluate') {\n return {};\n }\n\n if (showCorrect) {\n return config.prompts.reduce((obj, prompt) => {\n obj[prompt.id] = true;\n\n return obj;\n }, {});\n }\n\n const correctPromptMap = config.prompts.reduce((obj, prompt) => {\n if (!isUndefined(prompt.relatedAnswer)) {\n obj[prompt.id] = prompt.relatedAnswer;\n }\n\n return obj;\n }, {});\n\n return reduce(\n sessionValue,\n (obj, val, key) => {\n obj[key] = correctPromptMap[key] === sessionValue[key];\n\n return obj;\n },\n {},\n );\n };\n\n buildRows = () => {\n const { model } = this.props;\n const { config } = model;\n const prompts = config.prompts || [];\n\n return prompts.map((prompt) => {\n const sessionAnswer = this.getAnswerFromSession(prompt.id);\n\n return {\n ...prompt,\n sessionAnswer,\n };\n });\n };\n\n render() {\n const { classes, disabled, onPlaceAnswer, instanceId, onRemoveAnswer } = this.props;\n const rows = this.buildRows();\n const correctnessMap = this.getCorrectOrIncorrectMap();\n\n return (\n <div className={classes.itemList}>\n {rows.map(({ sessionAnswer, title, id }, index) => {\n return (\n <div\n className={classes.row}\n style={{\n display: 'flex',\n }}\n key={index}\n >\n <div className={classes.promptEntry} dangerouslySetInnerHTML={{ __html: title }} />\n <div className={classes.arrowEntry}>\n <Arrow direction=\"left\" />\n <Arrow />\n </div>\n <DragAndDropAnswer\n key={index}\n className={classes.answer}\n index={index}\n promptId={id}\n correct={correctnessMap[id]}\n draggable={!isEmpty(sessionAnswer)}\n disabled={disabled}\n instanceId={instanceId}\n id={sessionAnswer.id}\n onPlaceAnswer={(place, id) => onPlaceAnswer(place, id)}\n title={sessionAnswer.title}\n type={'target'}\n onRemoveChoice={() => onRemoveAnswer(id)}\n />\n </div>\n );\n })}\n </div>\n );\n }\n}\n\nconst styles = () => ({\n answer: {\n flex: 1,\n },\n arrowEntry: {\n alignItems: 'normal',\n display: 'flex',\n height: 40,\n margin: '10px 20px',\n },\n itemList: {\n alignItems: 'flex-start',\n display: 'flex',\n flex: 1,\n flexDirection: 'column',\n justifyContent: 'space-between',\n },\n promptEntry: {\n border: '1px solid #c2c2c2',\n boxSizing: 'border-box',\n flex: 1,\n margin: '10px 0',\n minHeight: 40,\n overflow: 'hidden',\n padding: 10,\n textAlign: 'center',\n width: '100%',\n wordBreak: 'break-word',\n },\n row: {\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%',\n },\n});\n\nexport default withStyles(styles)(AnswerArea);\n"],"file":"answer-area.js"}
|