@pie-element/multi-trait-rubric 5.0.0 → 6.0.1-esm.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/configure/CHANGELOG.md +8 -0
- package/configure/package.json +1 -1
- package/controller/CHANGELOG.md +8 -0
- package/controller/package.json +1 -1
- package/esm/configure.js +24797 -0
- package/esm/configure.js.map +1 -0
- package/esm/controller.js +221 -0
- package/esm/controller.js.map +1 -0
- package/esm/element.js +10254 -0
- package/esm/element.js.map +1 -0
- package/package.json +20 -3
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
2
|
+
try {
|
|
3
|
+
var info = gen[key](arg);
|
|
4
|
+
var value = info.value;
|
|
5
|
+
} catch (error) {
|
|
6
|
+
reject(error);
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
if (info.done) {
|
|
11
|
+
resolve(value);
|
|
12
|
+
} else {
|
|
13
|
+
Promise.resolve(value).then(_next, _throw);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function _asyncToGenerator(fn) {
|
|
18
|
+
return function () {
|
|
19
|
+
var self = this,
|
|
20
|
+
args = arguments;
|
|
21
|
+
return new Promise(function (resolve, reject) {
|
|
22
|
+
var gen = fn.apply(self, args);
|
|
23
|
+
|
|
24
|
+
function _next(value) {
|
|
25
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function _throw(err) {
|
|
29
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
_next(undefined);
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function _defineProperty(obj, key, value) {
|
|
38
|
+
if (key in obj) {
|
|
39
|
+
Object.defineProperty(obj, key, {
|
|
40
|
+
value: value,
|
|
41
|
+
enumerable: true,
|
|
42
|
+
configurable: true,
|
|
43
|
+
writable: true
|
|
44
|
+
});
|
|
45
|
+
} else {
|
|
46
|
+
obj[key] = value;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return obj;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
var defaults = {
|
|
53
|
+
addScaleEnabled: true,
|
|
54
|
+
description: false,
|
|
55
|
+
excludeZero: false,
|
|
56
|
+
halfScoring: false,
|
|
57
|
+
maxPointsEnabled: true,
|
|
58
|
+
pointLabels: true,
|
|
59
|
+
scales: [],
|
|
60
|
+
standards: false,
|
|
61
|
+
visibleToStudent: true
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
var markupToText = s => {
|
|
65
|
+
return (s || '').replace(/(<([^>]+)>)/ig, '');
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
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; }
|
|
69
|
+
|
|
70
|
+
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) { _defineProperty(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; }
|
|
71
|
+
function createDefaultModel() {
|
|
72
|
+
var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
73
|
+
return new Promise(resolve => resolve(_objectSpread(_objectSpread({}, defaults), model)));
|
|
74
|
+
}
|
|
75
|
+
var normalize = question => _objectSpread(_objectSpread({}, defaults), question);
|
|
76
|
+
/**
|
|
77
|
+
*
|
|
78
|
+
* @param {*} question
|
|
79
|
+
* @param {*} session
|
|
80
|
+
* @param {*} env
|
|
81
|
+
*/
|
|
82
|
+
|
|
83
|
+
function model(_x, _x2, _x3) {
|
|
84
|
+
return _model.apply(this, arguments);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
function _model() {
|
|
88
|
+
_model = _asyncToGenerator(function* (question, session, env) {
|
|
89
|
+
var normalizedQuestion = normalize(question);
|
|
90
|
+
|
|
91
|
+
if (!env.role || env.role === 'student') {
|
|
92
|
+
normalizedQuestion.visible = normalizedQuestion.visibleToStudent;
|
|
93
|
+
} else {
|
|
94
|
+
normalizedQuestion.visible = true;
|
|
95
|
+
} // todo update pie-ui instead of parsing this here:
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
var {
|
|
99
|
+
scales,
|
|
100
|
+
excludeZero
|
|
101
|
+
} = normalizedQuestion || {};
|
|
102
|
+
var parsedScales = (scales || []).map(scale => _objectSpread(_objectSpread({}, scale), {}, {
|
|
103
|
+
excludeZero
|
|
104
|
+
}));
|
|
105
|
+
return _objectSpread(_objectSpread({}, normalizedQuestion), {}, {
|
|
106
|
+
scales: parsedScales
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
return _model.apply(this, arguments);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
var getScore = () => 0;
|
|
113
|
+
/**
|
|
114
|
+
* @param {Object} model - the main model
|
|
115
|
+
* @param {*} session
|
|
116
|
+
* @param {Object} env
|
|
117
|
+
*/
|
|
118
|
+
|
|
119
|
+
function outcome() {
|
|
120
|
+
return new Promise(resolve => resolve({
|
|
121
|
+
score: 0,
|
|
122
|
+
empty: true
|
|
123
|
+
}));
|
|
124
|
+
}
|
|
125
|
+
var createCorrectResponseSession = (question, env) => {
|
|
126
|
+
return new Promise(resolve => {
|
|
127
|
+
if (env.mode !== 'evaluate' && env.role === 'instructor') {
|
|
128
|
+
resolve({
|
|
129
|
+
id: '1'
|
|
130
|
+
});
|
|
131
|
+
} else {
|
|
132
|
+
resolve(null);
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
}; // IMPORTANT! If you make any changes to this function, please make sure you also update complex-rubric/controller/validateMultiTraitRubric function!“.
|
|
136
|
+
|
|
137
|
+
var validate = (model, config) => {
|
|
138
|
+
var {
|
|
139
|
+
scales,
|
|
140
|
+
description = false,
|
|
141
|
+
pointLabels = false
|
|
142
|
+
} = model;
|
|
143
|
+
var errors = {};
|
|
144
|
+
var traitsErrors = {};
|
|
145
|
+
var scorePointsErrors = {};
|
|
146
|
+
(scales || []).forEach((scale, scaleIndex) => {
|
|
147
|
+
var {
|
|
148
|
+
traits = []
|
|
149
|
+
} = scale;
|
|
150
|
+
var {
|
|
151
|
+
scorePointsLabels = []
|
|
152
|
+
} = scale;
|
|
153
|
+
var scaleErrors = {};
|
|
154
|
+
var scorePointsLabelsErrors = {};
|
|
155
|
+
|
|
156
|
+
if (pointLabels) {
|
|
157
|
+
scorePointsLabels.forEach((scorePointLabel, scoreIndex) => {
|
|
158
|
+
if (!scorePointLabel || scorePointLabel === '<div></div>') {
|
|
159
|
+
scorePointsLabelsErrors[scoreIndex] = 'Points labels should not be empty.';
|
|
160
|
+
} else {
|
|
161
|
+
var identicalScorePointLabel = scorePointsLabels.slice(scoreIndex + 1).some(s => markupToText(s) === markupToText(scorePointLabel));
|
|
162
|
+
|
|
163
|
+
if (identicalScorePointLabel) {
|
|
164
|
+
scorePointsLabelsErrors[scoreIndex] = 'Points labels should be unique.';
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
if (Object.keys(scorePointsLabelsErrors).length > 0) {
|
|
171
|
+
scorePointsErrors[scaleIndex] = scorePointsLabelsErrors;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
traits.forEach((trait, traitIndex) => {
|
|
175
|
+
if (!trait.name || trait.name === '<div></div>') {
|
|
176
|
+
scaleErrors[traitIndex] = {
|
|
177
|
+
name: 'Trait names should not be empty.'
|
|
178
|
+
};
|
|
179
|
+
} else {
|
|
180
|
+
var identicalTraitName = traits.slice(traitIndex + 1).some(t => markupToText(t.name) === markupToText(trait.name));
|
|
181
|
+
|
|
182
|
+
if (identicalTraitName) {
|
|
183
|
+
scaleErrors[traitIndex] = {
|
|
184
|
+
name: 'Trait names should be unique.'
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
if (description && (!trait.description || trait.description === '<div></div>')) {
|
|
190
|
+
scaleErrors[traitIndex] = _objectSpread(_objectSpread({}, scaleErrors[traitIndex]), {}, {
|
|
191
|
+
description: 'Trait description should not be empty'
|
|
192
|
+
});
|
|
193
|
+
} else {
|
|
194
|
+
var identicalTraitDescr = traits.slice(traitIndex + 1).some(t => markupToText(t.description) === markupToText(trait.description));
|
|
195
|
+
|
|
196
|
+
if (description && identicalTraitDescr) {
|
|
197
|
+
scaleErrors[traitIndex] = _objectSpread(_objectSpread({}, scaleErrors[traitIndex]), {}, {
|
|
198
|
+
description: 'Trait descriptions should be unique.'
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
if (Object.keys(scaleErrors).length > 0) {
|
|
205
|
+
traitsErrors[scaleIndex] = scaleErrors;
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
|
|
209
|
+
if (Object.keys(traitsErrors).length > 0) {
|
|
210
|
+
errors.traitsErrors = traitsErrors;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
if (Object.keys(scorePointsErrors).length > 0) {
|
|
214
|
+
errors.scorePointsErrors = scorePointsErrors;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
return errors;
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
export { createCorrectResponseSession, createDefaultModel, getScore, model, normalize, outcome, validate };
|
|
221
|
+
//# sourceMappingURL=controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller.js","sources":["../../../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../controller/src/defaults.js","../controller/src/utils.js","../controller/src/index.js"],"sourcesContent":["function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","export default {\n addScaleEnabled: true,\n description: false,\n excludeZero: false,\n halfScoring: false,\n maxPointsEnabled: true,\n pointLabels: true,\n scales: [],\n standards: false,\n visibleToStudent: true,\n};\n","export const markupToText = (s) => {\n return (s || '').replace(/(<([^>]+)>)/ig, '');\n};\n","import defaults from './defaults';\nimport { markupToText } from './utils';\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => resolve({ ...defaults, ...model }));\n}\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n */\nexport async function model(question, session, env) {\n const normalizedQuestion = normalize(question);\n\n if (!env.role || env.role === 'student') {\n normalizedQuestion.visible = normalizedQuestion.visibleToStudent;\n } else {\n normalizedQuestion.visible = true;\n }\n\n // todo update pie-ui instead of parsing this here:\n const { scales, excludeZero } = normalizedQuestion || {};\n const parsedScales = (scales || []).map((scale) => ({ ...scale, excludeZero }));\n\n return {\n ...normalizedQuestion,\n scales: parsedScales,\n };\n}\n\nexport const getScore = () => 0;\n\n/**\n * @param {Object} model - the main model\n * @param {*} session\n * @param {Object} env\n */\nexport function outcome() {\n return new Promise((resolve) => resolve({ score: 0, empty: true }));\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n resolve({ id: '1' });\n } else {\n resolve(null);\n }\n });\n};\n\n// IMPORTANT! If you make any changes to this function, please make sure you also update complex-rubric/controller/validateMultiTraitRubric function!“.\nexport const validate = (model, config) => {\n const { scales, description = false, pointLabels = false } = model;\n const errors = {};\n const traitsErrors = {};\n const scorePointsErrors = {};\n\n (scales || []).forEach((scale, scaleIndex) => {\n const { traits = [] } = scale;\n const { scorePointsLabels = [] } = scale;\n const scaleErrors = {};\n const scorePointsLabelsErrors = {};\n\n if (pointLabels) {\n scorePointsLabels.forEach((scorePointLabel, scoreIndex) => {\n if (!scorePointLabel || scorePointLabel === '<div></div>') {\n scorePointsLabelsErrors[scoreIndex] = 'Points labels should not be empty.';\n } else {\n const identicalScorePointLabel = scorePointsLabels\n .slice(scoreIndex + 1)\n .some((s) => markupToText(s) === markupToText(scorePointLabel));\n\n if (identicalScorePointLabel) {\n scorePointsLabelsErrors[scoreIndex] = 'Points labels should be unique.';\n }\n }\n });\n }\n\n if (Object.keys(scorePointsLabelsErrors).length > 0) {\n scorePointsErrors[scaleIndex] = scorePointsLabelsErrors;\n }\n\n traits.forEach((trait, traitIndex) => {\n if (!trait.name || trait.name === '<div></div>') {\n scaleErrors[traitIndex] = { name: 'Trait names should not be empty.' };\n } else {\n const identicalTraitName = traits\n .slice(traitIndex + 1)\n .some((t) => markupToText(t.name) === markupToText(trait.name));\n\n if (identicalTraitName) {\n scaleErrors[traitIndex] = { name: 'Trait names should be unique.' };\n }\n }\n if (description && (!trait.description || trait.description === '<div></div>')) {\n scaleErrors[traitIndex] = { ...scaleErrors[traitIndex], description: 'Trait description should not be empty' };\n } else {\n const identicalTraitDescr = traits\n .slice(traitIndex + 1)\n .some((t) => markupToText(t.description) === markupToText(trait.description));\n\n if (description && identicalTraitDescr) {\n scaleErrors[traitIndex] = { ...scaleErrors[traitIndex], description: 'Trait descriptions should be unique.' };\n }\n }\n });\n if (Object.keys(scaleErrors).length > 0) {\n traitsErrors[scaleIndex] = scaleErrors;\n }\n });\n\n if (Object.keys(traitsErrors).length > 0) {\n errors.traitsErrors = traitsErrors;\n }\n\n if (Object.keys(scorePointsErrors).length > 0) {\n errors.scorePointsErrors = scorePointsErrors;\n }\n\n return errors;\n};\n"],"names":["addScaleEnabled","description","excludeZero","halfScoring","maxPointsEnabled","pointLabels","scales","standards","visibleToStudent","markupToText","s","replace","createDefaultModel","model","Promise","resolve","defaults","normalize","question","session","env","normalizedQuestion","role","visible","parsedScales","map","scale","getScore","outcome","score","empty","createCorrectResponseSession","mode","id","validate","config","errors","traitsErrors","scorePointsErrors","forEach","scaleIndex","traits","scorePointsLabels","scaleErrors","scorePointsLabelsErrors","scorePointLabel","scoreIndex","identicalScorePointLabel","slice","some","Object","keys","length","trait","traitIndex","name","identicalTraitName","t","identicalTraitDescr"],"mappings":"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"}
|