@pie-element/complex-rubric 7.1.0-next.28 → 7.1.1-next.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.
Files changed (118) hide show
  1. package/dist/author/defaults.d.ts +231 -0
  2. package/dist/author/defaults.js +177 -0
  3. package/dist/author/index.d.ts +34 -0
  4. package/dist/author/index.js +87 -0
  5. package/dist/author/main.d.ts +23 -0
  6. package/dist/author/main.js +106 -0
  7. package/dist/controller/defaults.d.ts +39 -0
  8. package/dist/controller/defaults.js +42 -0
  9. package/dist/controller/index.d.ts +25 -0
  10. package/dist/controller/index.js +107 -0
  11. package/dist/controller/utils.d.ts +9 -0
  12. package/dist/controller/utils.js +4 -0
  13. package/dist/delivery/index.d.ts +23 -0
  14. package/dist/delivery/index.js +96 -0
  15. package/dist/index.d.ts +1 -0
  16. package/dist/index.iife.d.ts +8 -0
  17. package/dist/index.iife.js +145 -0
  18. package/dist/index.js +2 -0
  19. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Symbol.js +5 -0
  20. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_apply.js +12 -0
  21. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayLikeKeys.js +15 -0
  22. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseGetTag.js +10 -0
  23. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsArguments.js +9 -0
  24. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsNative.js +11 -0
  25. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsTypedArray.js +11 -0
  26. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseKeysIn.js +13 -0
  27. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseRest.js +9 -0
  28. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseSetToString.js +14 -0
  29. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseTimes.js +7 -0
  30. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseUnary.js +8 -0
  31. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_coreJsData.js +5 -0
  32. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_defineProperty.js +10 -0
  33. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_freeGlobal.js +4 -0
  34. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getNative.js +9 -0
  35. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getRawTag.js +14 -0
  36. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getValue.js +6 -0
  37. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isIndex.js +8 -0
  38. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isIterateeCall.js +12 -0
  39. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isMasked.js +11 -0
  40. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isPrototype.js +8 -0
  41. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_nativeKeysIn.js +8 -0
  42. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_nodeUtil.js +9 -0
  43. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_objectToString.js +7 -0
  44. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_overRest.js +13 -0
  45. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_root.js +5 -0
  46. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_setToString.js +6 -0
  47. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_shortOut.js +14 -0
  48. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_toSource.js +15 -0
  49. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/constant.js +8 -0
  50. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/defaults.js +16 -0
  51. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/eq.js +6 -0
  52. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/identity.js +6 -0
  53. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isArguments.js +10 -0
  54. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isArray.js +4 -0
  55. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isArrayLike.js +8 -0
  56. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isBuffer.js +6 -0
  57. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isFunction.js +11 -0
  58. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isLength.js +7 -0
  59. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isObject.js +7 -0
  60. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isObjectLike.js +6 -0
  61. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isTypedArray.js +7 -0
  62. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/keysIn.js +9 -0
  63. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/stubFalse.js +6 -0
  64. package/dist/print/index.d.ts +24 -0
  65. package/dist/print/index.js +84 -0
  66. package/package.json +58 -21
  67. package/CHANGELOG.md +0 -1431
  68. package/LICENSE.md +0 -5
  69. package/README.md +0 -3
  70. package/configure/CHANGELOG.md +0 -1085
  71. package/configure/lib/defaults.js +0 -271
  72. package/configure/lib/defaults.js.map +0 -1
  73. package/configure/lib/index.js +0 -150
  74. package/configure/lib/index.js.map +0 -1
  75. package/configure/lib/main.js +0 -172
  76. package/configure/lib/main.js.map +0 -1
  77. package/configure/package.json +0 -27
  78. package/configure/src/__tests__/index.test.js +0 -94
  79. package/configure/src/__tests__/main.test.jsx +0 -140
  80. package/configure/src/defaults.js +0 -213
  81. package/configure/src/index.js +0 -169
  82. package/configure/src/main.jsx +0 -162
  83. package/controller/CHANGELOG.md +0 -928
  84. package/controller/lib/defaults.js +0 -42
  85. package/controller/lib/defaults.js.map +0 -1
  86. package/controller/lib/index.js +0 -239
  87. package/controller/lib/index.js.map +0 -1
  88. package/controller/lib/utils.js +0 -11
  89. package/controller/lib/utils.js.map +0 -1
  90. package/controller/package.json +0 -16
  91. package/controller/src/__tests__/index.test.js +0 -55
  92. package/controller/src/defaults.js +0 -39
  93. package/controller/src/index.js +0 -220
  94. package/controller/src/utils.js +0 -3
  95. package/docs/config-schema.json +0 -4255
  96. package/docs/config-schema.json.md +0 -3162
  97. package/docs/demo/config.js +0 -8
  98. package/docs/demo/generate.js +0 -196
  99. package/docs/demo/index.html +0 -1
  100. package/docs/demo/session.js +0 -6
  101. package/docs/pie-schema.json +0 -3302
  102. package/docs/pie-schema.json.md +0 -2364
  103. package/lib/index.js +0 -141
  104. package/lib/index.js.map +0 -1
  105. package/lib/print.js +0 -129
  106. package/lib/print.js.map +0 -1
  107. package/module/configure.js +0 -1
  108. package/module/controller.js +0 -262
  109. package/module/demo.js +0 -221
  110. package/module/element.js +0 -1
  111. package/module/index.html +0 -21
  112. package/module/manifest.json +0 -22
  113. package/module/print-demo.js +0 -259
  114. package/module/print.html +0 -18
  115. package/module/print.js +0 -1
  116. package/src/__tests__/index.test.js +0 -256
  117. package/src/index.js +0 -152
  118. package/src/print.js +0 -140
@@ -1,262 +0,0 @@
1
- // todo the import from pie-lib/rubric WILL break pslb
2
- // so don't use it unless you also test "yarn build"
3
- const RUBRIC_TYPES$1 = {
4
- SIMPLE_RUBRIC: 'simpleRubric',
5
- MULTI_TRAIT_RUBRIC: 'multiTraitRubric',
6
- 'rubricless': 'rubricless',
7
- };
8
-
9
- const multiTraitDefaultModel = {
10
- description: false,
11
- excludeZero: false,
12
- halfScoring: false,
13
- pointLabels: true,
14
- scales: [],
15
- standards: false,
16
- visibleToStudent: true,
17
- };
18
-
19
- const rubricDefaultModel = {
20
- points: ['', '', '', ''],
21
- sampleAnswers: [null, null, null, null],
22
- maxPoints: 3,
23
- excludeZero: false,
24
- };
25
-
26
- const rubriclessDefaultModel = {
27
- maxPoints: 100,
28
- excludeZero: false,
29
- rubriclessInstructionEnabled: true,
30
- };
31
-
32
- var defaults = {
33
- rubricType: 'simpleRubric',
34
- rubrics: {
35
- [RUBRIC_TYPES$1.SIMPLE_RUBRIC]: rubricDefaultModel,
36
- [RUBRIC_TYPES$1.MULTI_TRAIT_RUBRIC]: multiTraitDefaultModel,
37
- [RUBRIC_TYPES$1.RUBRICLESS]: rubriclessDefaultModel,
38
- },
39
- };
40
-
41
- const markupToText = (s) => {
42
- return (s || '').replace(/(<([^>]+)>)/ig, '');
43
- };
44
-
45
- // todo the import from pie-lib/rubric WILL break pslb
46
- // so don't use it unless you also test "yarn build"
47
- const RUBRIC_TYPES = {
48
- SIMPLE_RUBRIC: 'simpleRubric',
49
- MULTI_TRAIT_RUBRIC: 'multiTraitRubric',
50
- 'rubricless': 'rubricless',
51
- };
52
-
53
- function createDefaultModel(model = {}) {
54
- return new Promise((resolve) => resolve({ ...defaults, ...model }));
55
- }
56
-
57
- const normalize = (question) => ({ ...defaults, ...question });
58
-
59
- /**
60
- * @param {*} question
61
- * @param {*} session
62
- * @param {*} env
63
- */
64
- async function model(question, session, env) {
65
- const normalizedQuestion = normalize(question);
66
-
67
- if (
68
- normalizedQuestion.rubricType === RUBRIC_TYPES.SIMPLE_RUBRIC ||
69
- normalizedQuestion.rubricType === RUBRIC_TYPES.RUBRICLESS
70
- ) {
71
- return new Promise((resolve) => {
72
- resolve(
73
- env && env.role && env.role === 'instructor'
74
- ? {
75
- ...normalizedQuestion,
76
- rubrics: {
77
- ...normalizedQuestion.rubrics,
78
- multiTraitRubric: {
79
- ...normalizedQuestion.rubrics.multiTraitRubric,
80
- visible: false,
81
- },
82
- },
83
- }
84
- : {},
85
- );
86
- });
87
- } else {
88
- if (
89
- !env.role ||
90
- (env.role === 'student' && normalizedQuestion.rubrics && normalizedQuestion.rubrics.multiTraitRubric)
91
- ) {
92
- normalizedQuestion.rubrics.multiTraitRubric.visible = normalizedQuestion.visibleToStudent;
93
- } else {
94
- normalizedQuestion.rubrics.multiTraitRubric.visible = true;
95
- }
96
-
97
- // todo update pie-ui instead of parsing this here:
98
- const { scales, excludeZero } = normalizedQuestion.rubrics.multiTraitRubric || {};
99
- const parsedScales = (scales || []).map((scale) => ({ ...scale, excludeZero }));
100
-
101
- return {
102
- ...normalizedQuestion,
103
- rubrics: {
104
- ...normalizedQuestion.rubrics,
105
- simpleRubric: {
106
- ...normalizedQuestion.rubrics.simpleRubric,
107
- visible: false,
108
- },
109
- rubricless: {
110
- ...normalizedQuestion.rubrics.rubricless,
111
- visible: false,
112
- },
113
- multiTraitRubric: {
114
- ...normalizedQuestion.rubrics.multiTraitRubric,
115
- scales: parsedScales,
116
- },
117
- },
118
- };
119
- }
120
- }
121
-
122
- const getScore = () => 0;
123
-
124
- /**
125
- * @param {Object} model - the main model
126
- * @param {*} session
127
- * @param {Object} env
128
- */
129
- function outcome() {
130
- return new Promise((resolve) => resolve({ score: 0, empty: true }));
131
- }
132
-
133
- const createCorrectResponseSession = (question, env) => {
134
- return new Promise((resolve) => {
135
- if (env.mode !== 'evaluate' && env.role === 'instructor') {
136
- resolve({ id: '1' });
137
- } else {
138
- resolve(null);
139
- }
140
- });
141
- };
142
-
143
- // IMPORTANT! This function is a duplicate of rubric/controller/validate function!
144
- // If you make any changes to this function, please make sure you also update rubric/controller/validate function!“.
145
- const validateSimpleRubric = (model) => {
146
- const { points } = model;
147
- const errors = {};
148
- const pointsDescriptorsErrors = {};
149
-
150
- (points || []).forEach((point, index) => {
151
-
152
- if (!point || point === '<div></div>') {
153
- pointsDescriptorsErrors[index] = 'Points descriptors cannot be empty.';
154
- } else {
155
- const identicalPointDescr = points.slice(index + 1).some((p) => markupToText(p) === markupToText(point));
156
-
157
- if (identicalPointDescr) {
158
- pointsDescriptorsErrors[index] = 'Points descriptors should be unique.';
159
- }
160
- }
161
- });
162
-
163
- if (Object.keys(pointsDescriptorsErrors).length > 0) {
164
- errors.pointsDescriptorsErrors = pointsDescriptorsErrors;
165
- }
166
-
167
- return errors;
168
- };
169
-
170
- // IMPORTANT! This function is a duplicate of multi-trait-rubric/controller/validate function!
171
- // If you make any changes to this function, please make sure you also update multi-trait-rubric/controller/validate function!“.
172
- const validateMultiTraitRubric = (model) => {
173
- const { scales, description = false, pointLabels = false } = model;
174
- const errors = {};
175
- const traitsErrors = {};
176
- const scorePointsErrors = {};
177
-
178
- (scales || []).forEach((scale, scaleIndex) => {
179
- const { traits = [] } = scale;
180
- const { scorePointsLabels = [] } = scale;
181
- const scaleErrors = {};
182
- const scorePointsLabelsErrors = {};
183
-
184
- if (pointLabels) {
185
- scorePointsLabels.forEach((scorePointLabel, scoreIndex) => {
186
- if (!scorePointLabel || scorePointLabel === '<div></div>') {
187
- scorePointsLabelsErrors[scoreIndex] = 'Points labels should not be empty.';
188
- } else {
189
- const identicalScorePointLabel = scorePointsLabels
190
- .slice(scoreIndex + 1)
191
- .some((s) => markupToText(s) === markupToText(scorePointLabel));
192
-
193
- if (identicalScorePointLabel) {
194
- scorePointsLabelsErrors[scoreIndex] = 'Points labels should be unique.';
195
- }
196
- }
197
- });
198
- }
199
-
200
- if (Object.keys(scorePointsLabelsErrors).length > 0) {
201
- scorePointsErrors[scaleIndex] = scorePointsLabelsErrors;
202
- }
203
-
204
- traits.forEach((trait, traitIndex) => {
205
- if (!trait.name || trait.name === '<div></div>') {
206
- scaleErrors[traitIndex] = { name: 'Trait names should not be empty.' };
207
- } else {
208
- const identicalTraitName = traits
209
- .slice(traitIndex + 1)
210
- .some((t) => markupToText(t.name) === markupToText(trait.name));
211
-
212
- if (identicalTraitName) {
213
- scaleErrors[traitIndex] = { name: 'Trait names should be unique.' };
214
- }
215
- }
216
- if (description && (!trait.description || trait.description === '<div></div>')) {
217
- scaleErrors[traitIndex] = { ...scaleErrors[traitIndex], description: 'Trait description should not be empty' };
218
- } else {
219
- const identicalTraitDescr = traits
220
- .slice(traitIndex + 1)
221
- .some((t) => markupToText(t.description) === markupToText(trait.description));
222
-
223
- if (description && identicalTraitDescr) {
224
- scaleErrors[traitIndex] = { ...scaleErrors[traitIndex], description: 'Trait descriptions should be unique.' };
225
- }
226
- }
227
- });
228
- if (Object.keys(scaleErrors).length > 0) {
229
- traitsErrors[scaleIndex] = scaleErrors;
230
- }
231
- });
232
-
233
- if (Object.keys(traitsErrors).length > 0) {
234
- errors.traitsErrors = traitsErrors;
235
- }
236
-
237
- if (Object.keys(scorePointsErrors).length > 0) {
238
- errors.scorePointsErrors = scorePointsErrors;
239
- }
240
-
241
- return errors;
242
- };
243
-
244
- const validate = (model = {}, config = {}) => {
245
- const { rubrics = {}, rubricType } = model;
246
- const { multiTraitRubric = {}, simpleRubric = {} } = rubrics;
247
- let errors = {};
248
-
249
- switch (rubricType) {
250
- case RUBRIC_TYPES.SIMPLE_RUBRIC:
251
- default:
252
- errors = validateSimpleRubric(simpleRubric);
253
- break;
254
- case RUBRIC_TYPES.MULTI_TRAIT_RUBRIC:
255
- errors = validateMultiTraitRubric(multiTraitRubric);
256
- break;
257
- }
258
-
259
- return errors;
260
- };
261
-
262
- export { createCorrectResponseSession, createDefaultModel, getScore, model, normalize, outcome, validate };
package/module/demo.js DELETED
@@ -1,221 +0,0 @@
1
- import Configure from './configure.js';
2
- import Element from './element.js';
3
- import * as controller from './controller.js';
4
-
5
- var generate = {};
6
-
7
- generate.model = (id, element) => ({
8
- id,
9
- element,
10
- rubricType: 'simpleRubric',
11
- rubrics: {
12
- simpleRubric: {
13
- points: ['nothing right', 'a teeny bit right', 'mostly right', 'bingo'],
14
- sampleAnswers: [null, 'just right', 'not left', null],
15
- maxPoints: 3,
16
- excludeZero: false,
17
- },
18
- rubricless: {
19
- maxPoints: 100,
20
- excludeZero: false,
21
- rubriclessInstructionEnabled: true,
22
- },
23
- multiTraitRubric: {
24
- visibleToStudent: true,
25
- halfScoring: false,
26
- excludeZero: true,
27
- pointLabels: true,
28
- description: false,
29
- standards: false,
30
- scales: [
31
- {
32
- maxPoints: 4,
33
- scorePointsLabels: ['Non-Scorable', 'Developing', 'Progressing', 'Effective', 'Strong'],
34
- traitLabel: 'Trait',
35
- traits: [
36
- {
37
- name: 'Ideas',
38
- standards: [],
39
- description: 'the main message',
40
- scorePointsDescriptors: [
41
- 'Student’s response is blank, not in English, not legible, or does not respond to the prompt.',
42
- 'Topic undefined and/or difficult to follow\n' + '\n' + 'Details are unclear',
43
- 'Topic too broad\n' + '\n' + 'Details are limited',
44
- 'Writing stays on topic\n' + '\n' + 'Complete details given',
45
- 'Strong control of topic\n' + '\n' + 'Relevant, accurate, specific details that support topic',
46
- ],
47
- },
48
- {
49
- name: 'Organization',
50
- standards: [],
51
- description: 'the internal structure of the piece',
52
- scorePointsDescriptors: [
53
- 'Student’s response is blank, not in English, not legible, or does not respond to the prompt.',
54
- 'Does not have a beginning, middle and/or end\n' +
55
- '\n' +
56
- 'Does not have a lead and/or conclusion\n' +
57
- '\n' +
58
- 'Transitions confusing and/or not present\n' +
59
- '\n' +
60
- 'Not written in logical order\n' +
61
- '\n' +
62
- 'No sign of paragraphing / incorrect paragraphing',
63
- 'Weak beginning, middle and end\n' +
64
- '\n' +
65
- 'Has evidence of a lead and/or conclusion but missing elements\n' +
66
- '\n' +
67
- 'Transitions are used sometimes\n' +
68
- '\n' +
69
- 'Some logical order\n' +
70
- '\n' +
71
- 'Most paragraphing incorrect',
72
- 'Has an acceptable beginning, middle and end\n' +
73
- '\n' +
74
- 'Includes a lead and conclusion\n' +
75
- '\n' +
76
- 'Transitions are used correctly\n' +
77
- '\n' +
78
- 'Mostly logical order\n' +
79
- '\n' +
80
- 'Mostly correct paragraphing',
81
- 'Has an effective beginning, middle and end\n' +
82
- '\n' +
83
- 'Powerful introduction / lead and conclusion\n' +
84
- '\n' +
85
- 'Effective transitions\n' +
86
- '\n' +
87
- 'Logical order / sequencing\n' +
88
- '\n' +
89
- 'Uses appropriate paragraphing',
90
- ],
91
- },
92
- {
93
- name: 'Word Choice',
94
- standards: [],
95
- description: 'the vocabulary a writer chooses to convey meaning',
96
- scorePointsDescriptors: [
97
- 'Student’s response is blank, not in English, not legible, or does not respond to the prompt.',
98
- 'Vocabulary is limited/used incorrectly\n' +
99
- '\n' +
100
- 'No figurative language; words do not convey meaning',
101
- 'Generally correct words\n' +
102
- '\n' +
103
- 'Attempt at figurative language\n' +
104
- '\n' +
105
- 'and/or words convey general meaning',
106
- 'Some active verbs and precise nouns\n' +
107
- '\n' +
108
- 'Effective use of figurative language and/or words that enhance meaning',
109
- 'Powerful and engaging words\n' + '\n' + 'Artful use of figurative language and/or sensory detail',
110
- ],
111
- },
112
- {
113
- name: 'Sentence Fluency',
114
- standards: [],
115
- description: 'the rhythm and flow of the language',
116
- scorePointsDescriptors: [
117
- 'Student’s response is blank, not in English, not legible, or does not respond to the prompt.',
118
- 'No sentences are clear\n' +
119
- '\n' +
120
- 'No variety in sentence structure\n' +
121
- '\n' +
122
- 'Frequent run-ons and/or fragments are present',
123
- 'Some sentences are clear\n' +
124
- '\n' +
125
- 'Sentence variety used rarely\n' +
126
- '\n' +
127
- 'Some run-ons and/or fragments are present',
128
- 'Most sentences are clear\n' +
129
- '\n' +
130
- 'Some sentence variety is used\n' +
131
- '\n' +
132
- 'Run-ons and/or fragments are rare',
133
- 'All Sentences are clear\n' +
134
- '\n' +
135
- 'Variety of sentence structure is used\n' +
136
- '\n' +
137
- 'Run-ons and/or fragments are not present',
138
- ],
139
- },
140
- {
141
- name: 'Conventions',
142
- standards: [],
143
- description: 'the mechanical correctness',
144
- scorePointsDescriptors: [
145
- 'Student’s response is blank, not in English, not legible, or does not respond to the prompt.',
146
- 'Many distracting errors are present in grammar, punctuation, capitalization and/or spelling',
147
- 'Errors in grammar, punctuation, capitalization and/or spelling are present and some distract from meaning',
148
- 'Errors in grammar, punctuation, capitalization and/or spelling are present but don’t distract from meaning',
149
- 'Few errors in grammar, punctuation,\n' + '\n' + 'capitalization and/or spelling',
150
- ],
151
- },
152
- {
153
- name: 'Voice',
154
- standards: [],
155
- description: 'the personal tone and flavor of the author\'s message',
156
- scorePointsDescriptors: [
157
- 'Student’s response is blank, not in English, not legible, or does not respond to the prompt.',
158
- 'Not concerned with audience or purpose\n' +
159
- '\n' +
160
- 'No viewpoint (perspective) used\n' +
161
- '\n' +
162
- 'Writing is mechanical and lifeless',
163
- 'Shows beginning awareness of audience/purpose\n' +
164
- '\n' +
165
- 'Some viewpoint (perspective) used throughout the piece\n' +
166
- '\n' +
167
- 'Writing is distant, too formal or informal',
168
- 'Awareness of audience; purpose is clear most of the time\n' +
169
- '\n' +
170
- 'Uses viewpoint (perspective) throughout most of the paper\n' +
171
- '\n' +
172
- 'Writing is pleasant, agreeable and satisfying',
173
- 'Powerful connection with audience; purpose is clearly communicated\n' +
174
- '\n' +
175
- 'Maintains strong viewpoint (perspective) throughout entire piece\n' +
176
- '\n' +
177
- 'Writing is expressive, engaging and has lots of energy',
178
- ],
179
- },
180
- ],
181
- },
182
- {
183
- maxPoints: 5,
184
- scorePointsLabels: ['Non-Scorable', 'Unsatisfactory', 'Satisfactory'],
185
- traitLabel: 'Category',
186
- traits: [
187
- {
188
- name: 'Presentation',
189
- standards: [],
190
- description: '',
191
- scorePointsDescriptors: [
192
- 'Handwriting is unreadable, or response is blank, not in English, or too brief to evaluate. ',
193
- 'Handwriting poor\n' + '\n' + 'Overall appearance is distracting to unacceptable',
194
- 'Handwriting is generally legible\n' + '\n' + 'Overall appearance is acceptable or better',
195
- ],
196
- },
197
- ],
198
- },
199
- ],
200
- },
201
- },
202
- });
203
-
204
- const { model } = generate;
205
-
206
- var config = {
207
- elements: {
208
- 'complex-rubric': '../..',
209
- },
210
- models: [model('1', 'complex-rubric')],
211
- };
212
-
213
- //Note: demo-el is a custom element loaded in the markup.
214
- customElements.whenDefined("demo-el").then(() => {
215
- config.models.forEach((m) => {
216
- const de = document.createElement("demo-el");
217
- document.body.appendChild(de);
218
- de.def = { tagName: m.element, Element, Configure, controller };
219
- de.model = m;
220
- });
221
- });