@pie-element/multi-trait-rubric 6.0.1 → 11.0.3-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/configure/package.json +5 -5
- package/controller/package.json +1 -1
- package/esm/configure.css +847 -0
- package/esm/configure.js +1696 -21435
- package/esm/configure.js.map +1 -1
- package/esm/controller.css +847 -0
- package/esm/controller.js +49 -94
- package/esm/controller.js.map +1 -1
- package/esm/element.css +847 -0
- package/esm/element.js +553 -9949
- package/esm/element.js.map +1 -1
- package/package.json +4 -4
package/esm/controller.js
CHANGED
|
@@ -1,52 +1,19 @@
|
|
|
1
|
-
function
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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);
|
|
1
|
+
function _extends() {
|
|
2
|
+
_extends = Object.assign || function (target) {
|
|
3
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
4
|
+
var source = arguments[i];
|
|
5
|
+
|
|
6
|
+
for (var key in source) {
|
|
7
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
8
|
+
target[key] = source[key];
|
|
9
|
+
}
|
|
30
10
|
}
|
|
11
|
+
}
|
|
31
12
|
|
|
32
|
-
|
|
33
|
-
});
|
|
13
|
+
return target;
|
|
34
14
|
};
|
|
35
|
-
}
|
|
36
15
|
|
|
37
|
-
|
|
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;
|
|
16
|
+
return _extends.apply(this, arguments);
|
|
50
17
|
}
|
|
51
18
|
|
|
52
19
|
var defaults = {
|
|
@@ -61,18 +28,14 @@ var defaults = {
|
|
|
61
28
|
visibleToStudent: true
|
|
62
29
|
};
|
|
63
30
|
|
|
64
|
-
|
|
31
|
+
const markupToText = s => {
|
|
65
32
|
return (s || '').replace(/(<([^>]+)>)/ig, '');
|
|
66
33
|
};
|
|
67
34
|
|
|
68
|
-
function
|
|
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)));
|
|
35
|
+
function createDefaultModel(model = {}) {
|
|
36
|
+
return new Promise(resolve => resolve(_extends({}, defaults, model)));
|
|
74
37
|
}
|
|
75
|
-
|
|
38
|
+
const normalize = question => _extends({}, defaults, question);
|
|
76
39
|
/**
|
|
77
40
|
*
|
|
78
41
|
* @param {*} question
|
|
@@ -80,36 +43,28 @@ var normalize = question => _objectSpread(_objectSpread({}, defaults), question)
|
|
|
80
43
|
* @param {*} env
|
|
81
44
|
*/
|
|
82
45
|
|
|
83
|
-
function model(
|
|
84
|
-
|
|
85
|
-
}
|
|
46
|
+
async function model(question, session, env) {
|
|
47
|
+
const normalizedQuestion = normalize(question);
|
|
86
48
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
49
|
+
if (!env.role || env.role === 'student') {
|
|
50
|
+
normalizedQuestion.visible = normalizedQuestion.visibleToStudent;
|
|
51
|
+
} else {
|
|
52
|
+
normalizedQuestion.visible = true;
|
|
53
|
+
} // todo update pie-ui instead of parsing this here:
|
|
90
54
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
} = normalizedQuestion || {};
|
|
102
|
-
var parsedScales = (scales || []).map(scale => _objectSpread(_objectSpread({}, scale), {}, {
|
|
103
|
-
excludeZero
|
|
104
|
-
}));
|
|
105
|
-
return _objectSpread(_objectSpread({}, normalizedQuestion), {}, {
|
|
106
|
-
scales: parsedScales
|
|
107
|
-
});
|
|
55
|
+
|
|
56
|
+
const {
|
|
57
|
+
scales,
|
|
58
|
+
excludeZero
|
|
59
|
+
} = normalizedQuestion || {};
|
|
60
|
+
const parsedScales = (scales || []).map(scale => _extends({}, scale, {
|
|
61
|
+
excludeZero
|
|
62
|
+
}));
|
|
63
|
+
return _extends({}, normalizedQuestion, {
|
|
64
|
+
scales: parsedScales
|
|
108
65
|
});
|
|
109
|
-
return _model.apply(this, arguments);
|
|
110
66
|
}
|
|
111
|
-
|
|
112
|
-
var getScore = () => 0;
|
|
67
|
+
const getScore = () => 0;
|
|
113
68
|
/**
|
|
114
69
|
* @param {Object} model - the main model
|
|
115
70
|
* @param {*} session
|
|
@@ -122,7 +77,7 @@ function outcome() {
|
|
|
122
77
|
empty: true
|
|
123
78
|
}));
|
|
124
79
|
}
|
|
125
|
-
|
|
80
|
+
const createCorrectResponseSession = (question, env) => {
|
|
126
81
|
return new Promise(resolve => {
|
|
127
82
|
if (env.mode !== 'evaluate' && env.role === 'instructor') {
|
|
128
83
|
resolve({
|
|
@@ -134,31 +89,31 @@ var createCorrectResponseSession = (question, env) => {
|
|
|
134
89
|
});
|
|
135
90
|
}; // IMPORTANT! If you make any changes to this function, please make sure you also update complex-rubric/controller/validateMultiTraitRubric function!“.
|
|
136
91
|
|
|
137
|
-
|
|
138
|
-
|
|
92
|
+
const validate = (model, config) => {
|
|
93
|
+
const {
|
|
139
94
|
scales,
|
|
140
95
|
description = false,
|
|
141
96
|
pointLabels = false
|
|
142
97
|
} = model;
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
98
|
+
const errors = {};
|
|
99
|
+
const traitsErrors = {};
|
|
100
|
+
const scorePointsErrors = {};
|
|
146
101
|
(scales || []).forEach((scale, scaleIndex) => {
|
|
147
|
-
|
|
102
|
+
const {
|
|
148
103
|
traits = []
|
|
149
104
|
} = scale;
|
|
150
|
-
|
|
105
|
+
const {
|
|
151
106
|
scorePointsLabels = []
|
|
152
107
|
} = scale;
|
|
153
|
-
|
|
154
|
-
|
|
108
|
+
const scaleErrors = {};
|
|
109
|
+
const scorePointsLabelsErrors = {};
|
|
155
110
|
|
|
156
111
|
if (pointLabels) {
|
|
157
112
|
scorePointsLabels.forEach((scorePointLabel, scoreIndex) => {
|
|
158
113
|
if (!scorePointLabel || scorePointLabel === '<div></div>') {
|
|
159
114
|
scorePointsLabelsErrors[scoreIndex] = 'Points labels should not be empty.';
|
|
160
115
|
} else {
|
|
161
|
-
|
|
116
|
+
const identicalScorePointLabel = scorePointsLabels.slice(scoreIndex + 1).some(s => markupToText(s) === markupToText(scorePointLabel));
|
|
162
117
|
|
|
163
118
|
if (identicalScorePointLabel) {
|
|
164
119
|
scorePointsLabelsErrors[scoreIndex] = 'Points labels should be unique.';
|
|
@@ -177,7 +132,7 @@ var validate = (model, config) => {
|
|
|
177
132
|
name: 'Trait names should not be empty.'
|
|
178
133
|
};
|
|
179
134
|
} else {
|
|
180
|
-
|
|
135
|
+
const identicalTraitName = traits.slice(traitIndex + 1).some(t => markupToText(t.name) === markupToText(trait.name));
|
|
181
136
|
|
|
182
137
|
if (identicalTraitName) {
|
|
183
138
|
scaleErrors[traitIndex] = {
|
|
@@ -187,14 +142,14 @@ var validate = (model, config) => {
|
|
|
187
142
|
}
|
|
188
143
|
|
|
189
144
|
if (description && (!trait.description || trait.description === '<div></div>')) {
|
|
190
|
-
scaleErrors[traitIndex] =
|
|
145
|
+
scaleErrors[traitIndex] = _extends({}, scaleErrors[traitIndex], {
|
|
191
146
|
description: 'Trait description should not be empty'
|
|
192
147
|
});
|
|
193
148
|
} else {
|
|
194
|
-
|
|
149
|
+
const identicalTraitDescr = traits.slice(traitIndex + 1).some(t => markupToText(t.description) === markupToText(trait.description));
|
|
195
150
|
|
|
196
151
|
if (description && identicalTraitDescr) {
|
|
197
|
-
scaleErrors[traitIndex] =
|
|
152
|
+
scaleErrors[traitIndex] = _extends({}, scaleErrors[traitIndex], {
|
|
198
153
|
description: 'Trait descriptions should be unique.'
|
|
199
154
|
});
|
|
200
155
|
}
|
package/esm/controller.js.map
CHANGED
|
@@ -1 +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":"AAAA,SAAS,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE;AAC3E,EAAE,IAAI;AACN,IAAI,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7B,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AAC3B,GAAG,CAAC,OAAO,KAAK,EAAE;AAClB,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;AAClB,IAAI,OAAO;AACX,GAAG;AACH;AACA,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;AACjB,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;AACnB,GAAG,MAAM;AACT,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC/C,GAAG;AACH,CAAC;AACD;AACe,SAAS,iBAAiB,CAAC,EAAE,EAAE;AAC9C,EAAE,OAAO,YAAY;AACrB,IAAI,IAAI,IAAI,GAAG,IAAI;AACnB,QAAQ,IAAI,GAAG,SAAS,CAAC;AACzB,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;AAClD,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACrC;AACA,MAAM,SAAS,KAAK,CAAC,KAAK,EAAE;AAC5B,QAAQ,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAC/E,OAAO;AACP;AACA,MAAM,SAAS,MAAM,CAAC,GAAG,EAAE;AAC3B,QAAQ,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;AAC9E,OAAO;AACP;AACA,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;AACvB,KAAK,CAAC,CAAC;AACP,GAAG,CAAC;AACJ;;AClCe,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;AACzD,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE;AAClB,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE;AACpC,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,UAAU,EAAE,IAAI;AACtB,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,QAAQ,EAAE,IAAI;AACpB,KAAK,CAAC,CAAC;AACP,GAAG,MAAM;AACT,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACrB,GAAG;AACH;AACA,EAAE,OAAO,GAAG,CAAC;AACb;;ACbA,eAAe;AACbA,EAAAA,eAAe,EAAE,IADJ;AAEbC,EAAAA,WAAW,EAAE,KAFA;AAGbC,EAAAA,WAAW,EAAE,KAHA;AAIbC,EAAAA,WAAW,EAAE,KAJA;AAKbC,EAAAA,gBAAgB,EAAE,IALL;AAMbC,EAAAA,WAAW,EAAE,IANA;AAObC,EAAAA,MAAM,EAAE,EAPK;AAQbC,EAAAA,SAAS,EAAE,KARE;AASbC,EAAAA,gBAAgB,EAAE,IAAA;AATL,CAAf;;ACAO,IAAMC,YAAY,GAAIC,CAAD,IAAO;AAC/B,EAAO,OAAA,CAACA,CAAC,IAAI,EAAN,EAAUC,OAAV,CAAkB,eAAlB,EAAmC,EAAnC,CAAP,CAAA;AACH,CAFM;;;;;ACGA,SAASC,kBAAT,GAAwC;AAAA,EAAZC,IAAAA,KAAY,uEAAJ,EAAI,CAAA;AAC7C,EAAO,OAAA,IAAIC,OAAJ,CAAaC,OAAD,IAAaA,OAAO,CAAA,aAAA,CAAA,aAAA,CAAA,EAAA,EAAMC,QAAN,CAAA,EAAmBH,KAAnB,CAAA,CAAhC,CAAP,CAAA;AACD,CAAA;AAEM,IAAMI,SAAS,GAAIC,QAAD,oCAAoBF,QAApB,CAAA,EAAiCE,QAAjC,EAAlB;AAEP;AACA;AACA;AACA;AACA;AACA;;AACA,SAAsBL,KAAtB,CAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA;AAAA,EAAA,OAAA,MAAA,CAAA,KAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;AAAA,CAAA;;;AAAO,EAAA,MAAA,GAAA,iBAAA,CAAA,WAAqBK,QAArB,EAA+BC,OAA/B,EAAwCC,GAAxC,EAA6C;AAClD,IAAA,IAAMC,kBAAkB,GAAGJ,SAAS,CAACC,QAAD,CAApC,CAAA;;AAEA,IAAI,IAAA,CAACE,GAAG,CAACE,IAAL,IAAaF,GAAG,CAACE,IAAJ,KAAa,SAA9B,EAAyC;AACvCD,MAAAA,kBAAkB,CAACE,OAAnB,GAA6BF,kBAAkB,CAACb,gBAAhD,CAAA;AACD,KAFD,MAEO;AACLa,MAAAA,kBAAkB,CAACE,OAAnB,GAA6B,IAA7B,CAAA;AACD,KAPiD;;;AAUlD,IAAM,IAAA;AAAEjB,MAAAA,MAAF;AAAUJ,MAAAA,WAAAA;AAAV,KAA0BmB,GAAAA,kBAAkB,IAAI,EAAtD,CAAA;AACA,IAAMG,IAAAA,YAAY,GAAG,CAAClB,MAAM,IAAI,EAAX,EAAemB,GAAf,CAAoBC,KAAD,IAAA,aAAA,CAAA,aAAA,CAAA,EAAA,EAAiBA,KAAjB,CAAA,EAAA,EAAA,EAAA;AAAwBxB,MAAAA,WAAAA;AAAxB,KAAA,CAAnB,CAArB,CAAA;AAEA,IAAA,OAAA,aAAA,CAAA,aAAA,CAAA,EAAA,EACKmB,kBADL,CAAA,EAAA,EAAA,EAAA;AAEEf,MAAAA,MAAM,EAAEkB,YAAAA;AAFV,KAAA,CAAA,CAAA;AAID;;;;AAEYG,IAAAA,QAAQ,GAAG,MAAM,EAAvB;AAEP;AACA;AACA;AACA;AACA;;AACO,SAASC,OAAT,GAAmB;AACxB,EAAA,OAAO,IAAId,OAAJ,CAAaC,OAAD,IAAaA,OAAO,CAAC;AAAEc,IAAAA,KAAK,EAAE,CAAT;AAAYC,IAAAA,KAAK,EAAE,IAAA;AAAnB,GAAD,CAAhC,CAAP,CAAA;AACD,CAAA;IAEYC,4BAA4B,GAAG,CAACb,QAAD,EAAWE,GAAX,KAAmB;AAC7D,EAAA,OAAO,IAAIN,OAAJ,CAAaC,OAAD,IAAa;AAC9B,IAAIK,IAAAA,GAAG,CAACY,IAAJ,KAAa,UAAb,IAA2BZ,GAAG,CAACE,IAAJ,KAAa,YAA5C,EAA0D;AACxDP,MAAAA,OAAO,CAAC;AAAEkB,QAAAA,EAAE,EAAE,GAAA;AAAN,OAAD,CAAP,CAAA;AACD,KAFD,MAEO;AACLlB,MAAAA,OAAO,CAAC,IAAD,CAAP,CAAA;AACD,KAAA;AACF,GANM,CAAP,CAAA;AAOD;;IAGYmB,QAAQ,GAAG,CAACrB,KAAD,EAAQsB,MAAR,KAAmB;AACzC,EAAM,IAAA;AAAE7B,IAAAA,MAAF;AAAUL,IAAAA,WAAW,GAAG,KAAxB;AAA+BI,IAAAA,WAAW,GAAG,KAAA;AAA7C,GAAA,GAAuDQ,KAA7D,CAAA;AACA,EAAMuB,IAAAA,MAAM,GAAG,EAAf,CAAA;AACA,EAAMC,IAAAA,YAAY,GAAG,EAArB,CAAA;AACA,EAAMC,IAAAA,iBAAiB,GAAG,EAA1B,CAAA;AAEA,EAAChC,CAAAA,MAAM,IAAI,EAAX,EAAeiC,OAAf,CAAuB,CAACb,KAAD,EAAQc,UAAR,KAAuB;AAC5C,IAAM,IAAA;AAAEC,MAAAA,MAAM,GAAG,EAAA;AAAX,KAAA,GAAkBf,KAAxB,CAAA;AACA,IAAM,IAAA;AAAEgB,MAAAA,iBAAiB,GAAG,EAAA;AAAtB,KAAA,GAA6BhB,KAAnC,CAAA;AACA,IAAMiB,IAAAA,WAAW,GAAG,EAApB,CAAA;AACA,IAAMC,IAAAA,uBAAuB,GAAG,EAAhC,CAAA;;AAEA,IAAA,IAAIvC,WAAJ,EAAiB;AACfqC,MAAAA,iBAAiB,CAACH,OAAlB,CAA0B,CAACM,eAAD,EAAkBC,UAAlB,KAAiC;AACzD,QAAA,IAAI,CAACD,eAAD,IAAoBA,eAAe,KAAK,aAA5C,EAA2D;AACzDD,UAAAA,uBAAuB,CAACE,UAAD,CAAvB,GAAsC,oCAAtC,CAAA;AACD,SAFD,MAEO;AACL,UAAMC,IAAAA,wBAAwB,GAAGL,iBAAiB,CAC/CM,KAD8B,CACxBF,UAAU,GAAG,CADW,CAE9BG,CAAAA,IAF8B,CAExBvC,CAAD,IAAOD,YAAY,CAACC,CAAD,CAAZ,KAAoBD,YAAY,CAACoC,eAAD,CAFd,CAAjC,CAAA;;AAIA,UAAA,IAAIE,wBAAJ,EAA8B;AAC5BH,YAAAA,uBAAuB,CAACE,UAAD,CAAvB,GAAsC,iCAAtC,CAAA;AACD,WAAA;AACF,SAAA;AACF,OAZD,CAAA,CAAA;AAaD,KAAA;;AAED,IAAII,IAAAA,MAAM,CAACC,IAAP,CAAYP,uBAAZ,CAAqCQ,CAAAA,MAArC,GAA8C,CAAlD,EAAqD;AACnDd,MAAAA,iBAAiB,CAACE,UAAD,CAAjB,GAAgCI,uBAAhC,CAAA;AACD,KAAA;;AAEDH,IAAAA,MAAM,CAACF,OAAP,CAAe,CAACc,KAAD,EAAQC,UAAR,KAAuB;AACpC,MAAI,IAAA,CAACD,KAAK,CAACE,IAAP,IAAeF,KAAK,CAACE,IAAN,KAAe,aAAlC,EAAiD;AAC/CZ,QAAAA,WAAW,CAACW,UAAD,CAAX,GAA0B;AAAEC,UAAAA,IAAI,EAAE,kCAAA;AAAR,SAA1B,CAAA;AACD,OAFD,MAEO;AACL,QAAMC,IAAAA,kBAAkB,GAAGf,MAAM,CAC9BO,KADwB,CAClBM,UAAU,GAAG,CADK,CAExBL,CAAAA,IAFwB,CAElBQ,CAAD,IAAOhD,YAAY,CAACgD,CAAC,CAACF,IAAH,CAAZ,KAAyB9C,YAAY,CAAC4C,KAAK,CAACE,IAAP,CAFzB,CAA3B,CAAA;;AAIA,QAAA,IAAIC,kBAAJ,EAAwB;AACtBb,UAAAA,WAAW,CAACW,UAAD,CAAX,GAA0B;AAAEC,YAAAA,IAAI,EAAE,+BAAA;AAAR,WAA1B,CAAA;AACD,SAAA;AACF,OAAA;;AACD,MAAA,IAAItD,WAAW,KAAK,CAACoD,KAAK,CAACpD,WAAP,IAAsBoD,KAAK,CAACpD,WAAN,KAAsB,aAAjD,CAAf,EAAgF;AAC9E0C,QAAAA,WAAW,CAACW,UAAD,CAAX,mCAA+BX,WAAW,CAACW,UAAD,CAA1C,CAAA,EAAA,EAAA,EAAA;AAAwDrD,UAAAA,WAAW,EAAE,uCAAA;AAArE,SAAA,CAAA,CAAA;AACD,OAFD,MAEO;AACL,QAAMyD,IAAAA,mBAAmB,GAAGjB,MAAM,CAC/BO,KADyB,CACnBM,UAAU,GAAG,CADM,CAEzBL,CAAAA,IAFyB,CAEnBQ,CAAD,IAAOhD,YAAY,CAACgD,CAAC,CAACxD,WAAH,CAAZ,KAAgCQ,YAAY,CAAC4C,KAAK,CAACpD,WAAP,CAF/B,CAA5B,CAAA;;AAIA,QAAIA,IAAAA,WAAW,IAAIyD,mBAAnB,EAAwC;AACtCf,UAAAA,WAAW,CAACW,UAAD,CAAX,mCAA+BX,WAAW,CAACW,UAAD,CAA1C,CAAA,EAAA,EAAA,EAAA;AAAwDrD,YAAAA,WAAW,EAAE,sCAAA;AAArE,WAAA,CAAA,CAAA;AACD,SAAA;AACF,OAAA;AACF,KAvBD,CAAA,CAAA;;AAwBA,IAAIiD,IAAAA,MAAM,CAACC,IAAP,CAAYR,WAAZ,CAAyBS,CAAAA,MAAzB,GAAkC,CAAtC,EAAyC;AACvCf,MAAAA,YAAY,CAACG,UAAD,CAAZ,GAA2BG,WAA3B,CAAA;AACD,KAAA;AACF,GArDD,CAAA,CAAA;;AAuDA,EAAIO,IAAAA,MAAM,CAACC,IAAP,CAAYd,YAAZ,CAA0Be,CAAAA,MAA1B,GAAmC,CAAvC,EAA0C;AACxChB,IAAAA,MAAM,CAACC,YAAP,GAAsBA,YAAtB,CAAA;AACD,GAAA;;AAED,EAAIa,IAAAA,MAAM,CAACC,IAAP,CAAYb,iBAAZ,CAA+Bc,CAAAA,MAA/B,GAAwC,CAA5C,EAA+C;AAC7ChB,IAAAA,MAAM,CAACE,iBAAP,GAA2BA,iBAA3B,CAAA;AACD,GAAA;;AAED,EAAA,OAAOF,MAAP,CAAA;AACD;;;;"}
|
|
1
|
+
{"version":3,"file":"controller.js","sources":["../controller/src/defaults.js","../controller/src/utils.js","../controller/src/index.js"],"sourcesContent":["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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"}
|