@pie-element/complex-rubric 2.2.9-next.0 → 2.2.9-next.7
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/lib/defaults.js +1 -1
- package/configure/lib/defaults.js.map +1 -1
- package/configure/src/defaults.js +1 -1
- package/controller/lib/index.js +7 -1
- package/controller/lib/index.js.map +1 -1
- package/controller/src/index.js +9 -5
- package/docs/demo/generate.js +1 -1
- package/module/configure.js +1 -1
- package/module/controller.js +9 -5
- package/module/demo.js +1 -1
- package/module/print-demo.js +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/defaults.js"],"names":["multiTraitDefaultModel","visibleToStudent","halfScoring","pointLabels","description","standards","scales","excludeZero","rubricDefaultModel","points","sampleAnswers","maxPoints","rubriclessDefaultModel","rubriclessInstructionEnabled","multiTraitDefaultConfiguration","settingsPanelDisabled","excludeZeroDialogBoxContent","title","text","includeZeroDialogBoxContent","deleteScaleDialogBoxContent","maxPointsDialogBoxContent","spellCheck","label","settings","enabled","showExcludeZero","showScorePointLabels","showDescription","showVisibleToStudent","showHalfScoring","showStandards","showLevelTagInput","dragAndDrop","maxMaxPoints","rubricDefaultConfiguration","showMaxPoint","rubriclessDefaultConfiguration","rubricless","rubriclessInstruction","model","rubricType","rubrics","RUBRIC_TYPES","SIMPLE_RUBRIC","MULTI_TRAIT_RUBRIC","RUBRICLESS","configuration","rubricOptions"],"mappings":";;;;;;;;;;;AAAA;;;;AAEA,IAAMA,sBAAsB,GAAG;AAC7BC,EAAAA,gBAAgB,EAAE,IADW;AAE7BC,EAAAA,WAAW,EAAE,KAFgB;AAG7BC,EAAAA,WAAW,EAAE,IAHgB;AAI7BC,EAAAA,WAAW,EAAE,KAJgB;AAK7BC,EAAAA,SAAS,EAAE,KALkB;AAM7BC,EAAAA,MAAM,EAAE,EANqB;AAO7BC,EAAAA,WAAW,EAAE;AAPgB,CAA/B;AAUA,IAAMC,kBAAkB,GAAG;AACzBC,EAAAA,MAAM,EAAE,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,EAAa,EAAb,CADiB;AAEzBC,EAAAA,aAAa,EAAE,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB,IAAnB,CAFU;AAGzBC,EAAAA,SAAS,EAAE,CAHc;AAIzBJ,EAAAA,WAAW,EAAE;AAJY,CAA3B;AAOA,IAAMK,sBAAsB,GAAG;AAC7BD,EAAAA,SAAS,EAAE,GADkB;AAE7BJ,EAAAA,WAAW,EAAE,KAFgB;AAG7BM,EAAAA,4BAA4B,EAAE;AAHD,CAA/B;AAMA,IAAMC,8BAA8B,GAAG;AACrCC,EAAAA,qBAAqB,EAAE,KADc;AAErCC,EAAAA,2BAA2B,EAAE;AAC3BC,IAAAA,KAAK,EAAE,2CADoB;AAE3BC,IAAAA,IAAI;AAFuB,GAFQ;AAoBrCC,EAAAA,2BAA2B,EAAE;AAC3BF,IAAAA,KAAK,EAAE,yCADoB;AAE3BC,IAAAA,IAAI;AAFuB,GApBQ;AAsCrCE,EAAAA,2BAA2B,EAAE;AAC3BH,IAAAA,KAAK,EAAE,cADoB;AAE3BC,IAAAA,IAAI,EAAE;AAFqB,GAtCQ;AA0CrCG,EAAAA,yBAAyB,EAAE;AACzBJ,IAAAA,KAAK,EAAE,wBADkB;AAEzBC,IAAAA,IAAI;AAFqB,GA1CU;AAgDrCI,EAAAA,UAAU,EAAE;AACVC,IAAAA,KAAK,EAAE,YADG;AAEVC,IAAAA,QAAQ,EAAE,KAFA;AAGVC,IAAAA,OAAO,EAAE;AAHC,GAhDyB;AAqDrCC,EAAAA,eAAe,EAAE;AACfF,IAAAA,QAAQ,EAAE,IADK;AAEfD,IAAAA,KAAK,EAAE;AAFQ,GArDoB;AAyDrCI,EAAAA,oBAAoB,EAAE;AACpBH,IAAAA,QAAQ,EAAE,IADU;AAEpBD,IAAAA,KAAK,EAAE;AAFa,GAzDe;AA6DrCK,EAAAA,eAAe,EAAE;AACfJ,IAAAA,QAAQ,EAAE,IADK;AAEfD,IAAAA,KAAK,EAAE;AAFQ,GA7DoB;AAiErCM,EAAAA,oBAAoB,EAAE;AACpBL,IAAAA,QAAQ,EAAE,IADU;AAEpBD,IAAAA,KAAK,EAAE;AAFa,GAjEe;AAqErCO,EAAAA,eAAe,EAAE;AACfN,IAAAA,QAAQ,EAAE,IADK;AAEfD,IAAAA,KAAK,EAAE;AAFQ,GArEoB;AAyErC;AACA;AACA;AACAQ,EAAAA,aAAa,EAAE;AACbP,IAAAA,QAAQ,EAAE,KADG;AAEbD,IAAAA,KAAK,EAAE;AAFM,GA5EsB;AAgFrCS,EAAAA,iBAAiB,EAAE;AACjBR,IAAAA,QAAQ,EAAE,KADO;AAEjBD,IAAAA,KAAK,EAAE,sBAFU;AAGjBE,IAAAA,OAAO,EAAE;AAHQ,GAhFkB;AAqFrCQ,EAAAA,WAAW,EAAE;AACXT,IAAAA,QAAQ,EAAE,IADC;AAEXD,IAAAA,KAAK,EAAE,sBAFI;AAGXE,IAAAA,OAAO,EAAE;AAHE,GArFwB;AA0FrCS,EAAAA,YAAY,EAAE;AA1FuB,CAAvC;AA6FA,IAAMC,0BAA0B,GAAG;AACjCT,EAAAA,eAAe,EAAE;AACfF,IAAAA,QAAQ,EAAE,IADK;AAEfD,IAAAA,KAAK,EAAE;AAFQ,GADgB;AAKjCa,EAAAA,YAAY,EAAE;AACZZ,IAAAA,QAAQ,EAAE,IADE;AAEZD,IAAAA,KAAK,EAAE;AAFK,GALmB;AASjCR,EAAAA,qBAAqB,EAAE,KATU;AAUjCmB,EAAAA,YAAY,EAAE;AAVmB,CAAnC;AAcA,IAAMG,8BAA8B,GAAG;AACrCX,EAAAA,eAAe,EAAE;AACfF,IAAAA,QAAQ,EAAE,IADK;AAEfD,IAAAA,KAAK,EAAE;AAFQ,GADoB;AAKrCa,EAAAA,YAAY,EAAE;AACZZ,IAAAA,QAAQ,EAAE,IADE;AAEZD,IAAAA,KAAK,EAAE;AAFK,GALuB;AASrCR,EAAAA,qBAAqB,EAAE,KATc;AAUrC;AACAuB,EAAAA,UAAU,EAAE,IAXyB;AAYrC;AACAC,EAAAA,qBAAqB,EAAE;AACrBf,IAAAA,QAAQ,EAAE,IADW;AAErBD,IAAAA,KAAK,EAAE;AAFc,GAbc;AAiBrCW,EAAAA,YAAY,EAAE;AAjBuB,CAAvC;eAoBe;AACbM,EAAAA,KAAK,EAAE;AACLC,IAAAA,UAAU,EAAE,cADP;AAELC,IAAAA,OAAO,6DAAKC,qBAAaC,aAAlB,EAAkCpC,kBAAlC,8CAAuDmC,qBAAaE,kBAApE,EAAyF7C,sBAAzF,8CAAkH2C,qBAAaG,UAA/H,EAA4IlC,sBAA5I;AAFF,GADM;AAKbmC,EAAAA,aAAa;AACX;AACAC,IAAAA,aAAa,EAAE,CAAC,cAAD,EAAiB,kBAAjB;AAFJ,sDAGVL,qBAAaE,kBAHH,EAGwB/B,8BAHxB,oDAIV6B,qBAAaC,aAJH,EAImBT,0BAJnB,oDAKVQ,qBAAaG,UALH,EAKgBT,8BALhB;AALA,C","sourcesContent":["import {RUBRIC_TYPES} from '@pie-lib/pie-toolbox/rubric';\n\nconst multiTraitDefaultModel = {\n visibleToStudent: true,\n halfScoring: false,\n pointLabels: true,\n description: false,\n standards: false,\n scales: [],\n excludeZero: false,\n};\n\nconst rubricDefaultModel = {\n points: ['', '', '', ''],\n sampleAnswers: [null, null, null, null],\n maxPoints:
|
|
1
|
+
{"version":3,"sources":["../src/defaults.js"],"names":["multiTraitDefaultModel","visibleToStudent","halfScoring","pointLabels","description","standards","scales","excludeZero","rubricDefaultModel","points","sampleAnswers","maxPoints","rubriclessDefaultModel","rubriclessInstructionEnabled","multiTraitDefaultConfiguration","settingsPanelDisabled","excludeZeroDialogBoxContent","title","text","includeZeroDialogBoxContent","deleteScaleDialogBoxContent","maxPointsDialogBoxContent","spellCheck","label","settings","enabled","showExcludeZero","showScorePointLabels","showDescription","showVisibleToStudent","showHalfScoring","showStandards","showLevelTagInput","dragAndDrop","maxMaxPoints","rubricDefaultConfiguration","showMaxPoint","rubriclessDefaultConfiguration","rubricless","rubriclessInstruction","model","rubricType","rubrics","RUBRIC_TYPES","SIMPLE_RUBRIC","MULTI_TRAIT_RUBRIC","RUBRICLESS","configuration","rubricOptions"],"mappings":"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","sourcesContent":["import {RUBRIC_TYPES} from '@pie-lib/pie-toolbox/rubric';\n\nconst multiTraitDefaultModel = {\n visibleToStudent: true,\n halfScoring: false,\n pointLabels: true,\n description: false,\n standards: false,\n scales: [],\n excludeZero: false,\n};\n\nconst rubricDefaultModel = {\n points: ['', '', '', ''],\n sampleAnswers: [null, null, null, null],\n maxPoints: 3,\n excludeZero: false,\n};\n\nconst rubriclessDefaultModel = {\n maxPoints: 100,\n excludeZero: false,\n rubriclessInstructionEnabled: true,\n};\n\nconst multiTraitDefaultConfiguration = {\n settingsPanelDisabled: false,\n excludeZeroDialogBoxContent: {\n title: 'Exclude 0 (Zero) from Score Point Values.',\n text: `<div>\n You are about to exclude 0 from score point values.\n <br/>\n Some of the existing data has to be changed.\n <br/>\n Please choose if you want to:\n <ul>\n <li>\n shift Labels and Descriptions to the left\n </li>\n <li>\n remove 0 column with its Label and Description\n </li>\n </ul>\n </div>`,\n },\n includeZeroDialogBoxContent: {\n title: 'Include 0 (Zero) in Score Point Values.',\n text: `<div>\n You are about to include 0 in score point values.\n <br/>\n Some of the existing data has to be changed.\n <br/>\n Please choose if you want to:\n <ul>\n <li>\n shift Labels and Descriptions to the right\n </li>\n <li>\n add 0 column with empty Label and Descriptions\n </li>\n </ul>\n </div>`,\n },\n deleteScaleDialogBoxContent: {\n title: 'Delete Scale',\n text: 'Are you sure you want to delete this scale?',\n },\n maxPointsDialogBoxContent: {\n title: 'Decreasing Max Points.',\n text: ` You are about to decrease max score point value.\n <br/>\n All the Labels and Descriptions for scores above Max Point will be deleted.`,\n },\n spellCheck: {\n label: 'Spellcheck',\n settings: false,\n enabled: true,\n },\n showExcludeZero: {\n settings: true,\n label: 'Exclude Zero',\n },\n showScorePointLabels: {\n settings: true,\n label: 'Show Score Point Labels',\n },\n showDescription: {\n settings: true,\n label: 'Show Description',\n },\n showVisibleToStudent: {\n settings: true,\n label: 'Visible to Student',\n },\n showHalfScoring: {\n settings: true,\n label: 'Half Scoring',\n },\n // commenting this in order to use the dynamic width if the width was not set by the client (PD-3203)\n // width: '900px',\n // these should not be set to true (should not be used) for now\n showStandards: {\n settings: false,\n label: 'Show Standards',\n },\n showLevelTagInput: {\n settings: false,\n label: 'Show Level Tag Input',\n enabled: false,\n },\n dragAndDrop: {\n settings: true,\n label: 'Enable Drag and Drop',\n enabled: false,\n },\n maxMaxPoints: 9\n};\n\nconst rubricDefaultConfiguration = {\n showExcludeZero: {\n settings: true,\n label: 'Ability to exclude zero',\n },\n showMaxPoint: {\n settings: true,\n label: 'Show max points dropdown',\n },\n settingsPanelDisabled: false,\n maxMaxPoints: 9\n};\n\n\nconst rubriclessDefaultConfiguration = {\n showExcludeZero: {\n settings: true,\n label: 'Ability to exclude zero',\n },\n showMaxPoint: {\n settings: true,\n label: 'Show max points dropdown',\n },\n settingsPanelDisabled: false,\n // shows us if it simple rubric or rubricless(simple rubric with less structure)\n rubricless: true,\n // scoring instruction for rubricless\n rubriclessInstruction: {\n settings: true,\n label: 'Instruction',\n },\n maxMaxPoints: 100,\n};\n\nexport default {\n model: {\n rubricType: 'simpleRubric',\n rubrics: { [RUBRIC_TYPES.SIMPLE_RUBRIC]: rubricDefaultModel, [RUBRIC_TYPES.MULTI_TRAIT_RUBRIC]: multiTraitDefaultModel, [RUBRIC_TYPES.RUBRICLESS]: rubriclessDefaultModel },\n },\n configuration: {\n // width: '770px',\n rubricOptions: ['simpleRubric', 'multiTraitRubric'],\n [RUBRIC_TYPES.MULTI_TRAIT_RUBRIC]: multiTraitDefaultConfiguration,\n [RUBRIC_TYPES.SIMPLE_RUBRIC]: rubricDefaultConfiguration,\n [RUBRIC_TYPES.RUBRICLESS]: rubriclessDefaultConfiguration,\n },\n};\n"],"file":"defaults.js"}
|
package/controller/lib/index.js
CHANGED
|
@@ -158,10 +158,16 @@ var createCorrectResponseSession = function createCorrectResponseSession(questio
|
|
|
158
158
|
exports.createCorrectResponseSession = createCorrectResponseSession;
|
|
159
159
|
|
|
160
160
|
var validateSimpleRubric = function validateSimpleRubric(model) {
|
|
161
|
-
var points = model.points
|
|
161
|
+
var points = model.points,
|
|
162
|
+
excludeZero = model.excludeZero;
|
|
162
163
|
var errors = {};
|
|
163
164
|
var pointsDescriptorsErrors = {};
|
|
164
165
|
(points || []).forEach(function (point, index) {
|
|
166
|
+
if (index === 0 && excludeZero) {
|
|
167
|
+
// if excludeZero is true, the 0 point is not displayed, so it should not be validated
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
|
|
165
171
|
if (!point || point === '<div></div>') {
|
|
166
172
|
pointsDescriptorsErrors[index] = 'Points descriptors cannot be empty.';
|
|
167
173
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["RUBRIC_TYPES","SIMPLE_RUBRIC","MULTI_TRAIT_RUBRIC","createDefaultModel","model","Promise","resolve","defaults","normalize","question","session","env","normalizedQuestion","rubricType","role","rubrics","multiTraitRubric","visible","visibleToStudent","scales","excludeZero","parsedScales","map","scale","simpleRubric","rubricless","getScore","outcome","score","empty","createCorrectResponseSession","mode","id","validateSimpleRubric","points","errors","pointsDescriptorsErrors","forEach","point","index","identicalPointDescr","slice","some","p","Object","keys","length","validateMultiTraitRubric","description","pointLabels","traitsErrors","scorePointsErrors","scaleIndex","traits","scorePointsLabels","scaleErrors","scorePointsLabelsErrors","scorePointLabel","scoreIndex","identicalScorePointLabel","s","trait","traitIndex","name","identicalTraitName","t","identicalTraitDescr","validate","config"],"mappings":"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","sourcesContent":["import defaults from './defaults';\nimport { markupToText } from './utils';\n\n// todo the import from pie-lib/rubric might break webpack\nconst RUBRIC_TYPES = {\n SIMPLE_RUBRIC: 'simpleRubric',\n MULTI_TRAIT_RUBRIC: 'multiTraitRubric',\n 'rubricless': 'rubricless',\n};\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => resolve({ ...defaults.model, ...model }));\n}\n\nexport const normalize = (question) => ({ ...defaults.model, ...question });\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 (normalizedQuestion.rubricType === RUBRIC_TYPES.SIMPLE_RUBRIC || normalizedQuestion.rubricType === 'rubricless') {\n return new Promise((resolve) => {\n resolve(\n env && env.role && env.role === 'instructor'\n ? {\n ...normalizedQuestion,\n rubrics: {\n ...normalizedQuestion.rubrics,\n multiTraitRubric: {\n ...normalizedQuestion.rubrics.multiTraitRubric,\n visible: false,\n },\n },\n }\n : {},\n );\n });\n } else {\n if (\n !env.role ||\n (env.role === 'student' && normalizedQuestion.rubrics && normalizedQuestion.rubrics.multiTraitRubric)\n ) {\n normalizedQuestion.rubrics.multiTraitRubric.visible = normalizedQuestion.visibleToStudent;\n } else {\n normalizedQuestion.rubrics.multiTraitRubric.visible = true;\n }\n\n // todo update pie-ui instead of parsing this here:\n const { scales, excludeZero } = normalizedQuestion.rubrics.multiTraitRubric || {};\n const parsedScales = (scales || []).map((scale) => ({ ...scale, excludeZero }));\n\n return {\n ...normalizedQuestion,\n rubrics: {\n ...normalizedQuestion.rubrics,\n simpleRubric: {\n ...normalizedQuestion.rubrics.simpleRubric,\n visible: false,\n },\n rubricless: {\n ...normalizedQuestion.rubrics.rubricless,\n visible: false,\n },\n multiTraitRubric: {\n ...normalizedQuestion.rubrics.multiTraitRubric,\n scales: parsedScales,\n },\n },\n };\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! This function is a duplicate of rubric/controller/validate function!\n// If you make any changes to this function, please make sure you also update rubric/controller/validate function!“.\nconst validateSimpleRubric = (model) => {\n const { points } = model;\n const errors = {};\n const pointsDescriptorsErrors = {};\n\n (points || []).forEach((point, index) => {\n if(!point|| point === '<div></div>') {\n pointsDescriptorsErrors[index] = 'Points descriptors cannot be empty.';\n }\n else{\n const identicalPointDescr = points.slice(index + 1).some(p => markupToText(p) === markupToText(point));\n\n if (identicalPointDescr) {\n pointsDescriptorsErrors[index] = 'Points descriptors should be unique.';\n }\n }\n });\n\n if(Object.keys(pointsDescriptorsErrors).length > 0){\n errors.pointsDescriptorsErrors = pointsDescriptorsErrors;\n }\n\n return errors;\n};\n\n// IMPORTANT! This function is a duplicate of multi-trait-rubric/controller/validate function!\n// If you make any changes to this function, please make sure you also update multi-trait-rubric/controller/validate function!“.\nconst validateMultiTraitRubric = (model) => {\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.slice(scoreIndex + 1).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 }\n else{\n const identicalTraitName = traits.slice(traitIndex + 1).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 }\n else{\n const identicalTraitDescr = traits.slice(traitIndex + 1).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 });\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\n\nexport const validate = (model = {}, config = {}) => {\n const { rubrics = {}, rubricType } = model;\n const { multiTraitRubric = {}, simpleRubric = {} } = rubrics;\n let errors = {};\n\n switch (rubricType) {\n case RUBRIC_TYPES.SIMPLE_RUBRIC:\n default:\n errors = validateSimpleRubric(simpleRubric);\n break;\n case RUBRIC_TYPES.MULTI_TRAIT_RUBRIC:\n errors = validateMultiTraitRubric(multiTraitRubric);\n break;\n }\n\n return errors;\n};\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["RUBRIC_TYPES","SIMPLE_RUBRIC","MULTI_TRAIT_RUBRIC","createDefaultModel","model","Promise","resolve","defaults","normalize","question","session","env","normalizedQuestion","rubricType","role","rubrics","multiTraitRubric","visible","visibleToStudent","scales","excludeZero","parsedScales","map","scale","simpleRubric","rubricless","getScore","outcome","score","empty","createCorrectResponseSession","mode","id","validateSimpleRubric","points","errors","pointsDescriptorsErrors","forEach","point","index","identicalPointDescr","slice","some","p","Object","keys","length","validateMultiTraitRubric","description","pointLabels","traitsErrors","scorePointsErrors","scaleIndex","traits","scorePointsLabels","scaleErrors","scorePointsLabelsErrors","scorePointLabel","scoreIndex","identicalScorePointLabel","s","trait","traitIndex","name","identicalTraitName","t","identicalTraitDescr","validate","config"],"mappings":"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","sourcesContent":["import defaults from './defaults';\nimport { markupToText } from './utils';\n\n// todo the import from pie-lib/rubric might break webpack\nconst RUBRIC_TYPES = {\n SIMPLE_RUBRIC: 'simpleRubric',\n MULTI_TRAIT_RUBRIC: 'multiTraitRubric',\n 'rubricless': 'rubricless',\n};\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => resolve({ ...defaults.model, ...model }));\n}\n\nexport const normalize = (question) => ({ ...defaults.model, ...question });\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 (normalizedQuestion.rubricType === RUBRIC_TYPES.SIMPLE_RUBRIC || normalizedQuestion.rubricType === 'rubricless') {\n return new Promise((resolve) => {\n resolve(\n env && env.role && env.role === 'instructor'\n ? {\n ...normalizedQuestion,\n rubrics: {\n ...normalizedQuestion.rubrics,\n multiTraitRubric: {\n ...normalizedQuestion.rubrics.multiTraitRubric,\n visible: false,\n },\n },\n }\n : {},\n );\n });\n } else {\n if (\n !env.role ||\n (env.role === 'student' && normalizedQuestion.rubrics && normalizedQuestion.rubrics.multiTraitRubric)\n ) {\n normalizedQuestion.rubrics.multiTraitRubric.visible = normalizedQuestion.visibleToStudent;\n } else {\n normalizedQuestion.rubrics.multiTraitRubric.visible = true;\n }\n\n // todo update pie-ui instead of parsing this here:\n const { scales, excludeZero } = normalizedQuestion.rubrics.multiTraitRubric || {};\n const parsedScales = (scales || []).map((scale) => ({ ...scale, excludeZero }));\n\n return {\n ...normalizedQuestion,\n rubrics: {\n ...normalizedQuestion.rubrics,\n simpleRubric: {\n ...normalizedQuestion.rubrics.simpleRubric,\n visible: false,\n },\n rubricless: {\n ...normalizedQuestion.rubrics.rubricless,\n visible: false,\n },\n multiTraitRubric: {\n ...normalizedQuestion.rubrics.multiTraitRubric,\n scales: parsedScales,\n },\n },\n };\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! This function is a duplicate of rubric/controller/validate function!\n// If you make any changes to this function, please make sure you also update rubric/controller/validate function!“.\nconst validateSimpleRubric = (model) => {\n const { points, excludeZero } = model;\n const errors = {};\n const pointsDescriptorsErrors = {};\n\n (points || []).forEach((point, index) => {\n if (index === 0 && excludeZero) {\n // if excludeZero is true, the 0 point is not displayed, so it should not be validated\n return;\n }\n\n if (!point || point === '<div></div>') {\n pointsDescriptorsErrors[index] = 'Points descriptors cannot be empty.';\n } else {\n const identicalPointDescr = points.slice(index + 1).some(p => markupToText(p) === markupToText(point));\n\n if (identicalPointDescr) {\n pointsDescriptorsErrors[index] = 'Points descriptors should be unique.';\n }\n }\n });\n\n if (Object.keys(pointsDescriptorsErrors).length > 0) {\n errors.pointsDescriptorsErrors = pointsDescriptorsErrors;\n }\n\n return errors;\n};\n\n// IMPORTANT! This function is a duplicate of multi-trait-rubric/controller/validate function!\n// If you make any changes to this function, please make sure you also update multi-trait-rubric/controller/validate function!“.\nconst validateMultiTraitRubric = (model) => {\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.slice(scoreIndex + 1).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 }\n else{\n const identicalTraitName = traits.slice(traitIndex + 1).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 }\n else{\n const identicalTraitDescr = traits.slice(traitIndex + 1).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 });\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\n\nexport const validate = (model = {}, config = {}) => {\n const { rubrics = {}, rubricType } = model;\n const { multiTraitRubric = {}, simpleRubric = {} } = rubrics;\n let errors = {};\n\n switch (rubricType) {\n case RUBRIC_TYPES.SIMPLE_RUBRIC:\n default:\n errors = validateSimpleRubric(simpleRubric);\n break;\n case RUBRIC_TYPES.MULTI_TRAIT_RUBRIC:\n errors = validateMultiTraitRubric(multiTraitRubric);\n break;\n }\n\n return errors;\n};\n"],"file":"index.js"}
|
package/controller/src/index.js
CHANGED
|
@@ -98,15 +98,19 @@ export const createCorrectResponseSession = (question, env) => {
|
|
|
98
98
|
// IMPORTANT! This function is a duplicate of rubric/controller/validate function!
|
|
99
99
|
// If you make any changes to this function, please make sure you also update rubric/controller/validate function!“.
|
|
100
100
|
const validateSimpleRubric = (model) => {
|
|
101
|
-
const { points } = model;
|
|
101
|
+
const { points, excludeZero } = model;
|
|
102
102
|
const errors = {};
|
|
103
103
|
const pointsDescriptorsErrors = {};
|
|
104
104
|
|
|
105
105
|
(points || []).forEach((point, index) => {
|
|
106
|
-
if(
|
|
107
|
-
|
|
106
|
+
if (index === 0 && excludeZero) {
|
|
107
|
+
// if excludeZero is true, the 0 point is not displayed, so it should not be validated
|
|
108
|
+
return;
|
|
108
109
|
}
|
|
109
|
-
|
|
110
|
+
|
|
111
|
+
if (!point || point === '<div></div>') {
|
|
112
|
+
pointsDescriptorsErrors[index] = 'Points descriptors cannot be empty.';
|
|
113
|
+
} else {
|
|
110
114
|
const identicalPointDescr = points.slice(index + 1).some(p => markupToText(p) === markupToText(point));
|
|
111
115
|
|
|
112
116
|
if (identicalPointDescr) {
|
|
@@ -115,7 +119,7 @@ const validateSimpleRubric = (model) => {
|
|
|
115
119
|
}
|
|
116
120
|
});
|
|
117
121
|
|
|
118
|
-
if(Object.keys(pointsDescriptorsErrors).length > 0){
|
|
122
|
+
if (Object.keys(pointsDescriptorsErrors).length > 0) {
|
|
119
123
|
errors.pointsDescriptorsErrors = pointsDescriptorsErrors;
|
|
120
124
|
}
|
|
121
125
|
|
package/docs/demo/generate.js
CHANGED
|
@@ -7,7 +7,7 @@ exports.model = (id, element) => ({
|
|
|
7
7
|
simpleRubric: {
|
|
8
8
|
points: ['nothing right', 'a teeny bit right', 'mostly right', 'bingo'],
|
|
9
9
|
sampleAnswers: [null, 'just right', 'not left', null],
|
|
10
|
-
maxPoints:
|
|
10
|
+
maxPoints: 3,
|
|
11
11
|
excludeZero: false,
|
|
12
12
|
},
|
|
13
13
|
rubricless: {
|
package/module/configure.js
CHANGED
|
@@ -232776,7 +232776,7 @@ const multiTraitDefaultModel = {
|
|
|
232776
232776
|
const rubricDefaultModel = {
|
|
232777
232777
|
points: ['', '', '', ''],
|
|
232778
232778
|
sampleAnswers: [null, null, null, null],
|
|
232779
|
-
maxPoints:
|
|
232779
|
+
maxPoints: 3,
|
|
232780
232780
|
excludeZero: false
|
|
232781
232781
|
};
|
|
232782
232782
|
const rubriclessDefaultModel = {
|
package/module/controller.js
CHANGED
|
@@ -258,15 +258,19 @@ const createCorrectResponseSession = (question, env) => {
|
|
|
258
258
|
// IMPORTANT! This function is a duplicate of rubric/controller/validate function!
|
|
259
259
|
// If you make any changes to this function, please make sure you also update rubric/controller/validate function!“.
|
|
260
260
|
const validateSimpleRubric = (model) => {
|
|
261
|
-
const { points } = model;
|
|
261
|
+
const { points, excludeZero } = model;
|
|
262
262
|
const errors = {};
|
|
263
263
|
const pointsDescriptorsErrors = {};
|
|
264
264
|
|
|
265
265
|
(points || []).forEach((point, index) => {
|
|
266
|
-
if(
|
|
267
|
-
|
|
266
|
+
if (index === 0 && excludeZero) {
|
|
267
|
+
// if excludeZero is true, the 0 point is not displayed, so it should not be validated
|
|
268
|
+
return;
|
|
268
269
|
}
|
|
269
|
-
|
|
270
|
+
|
|
271
|
+
if (!point || point === '<div></div>') {
|
|
272
|
+
pointsDescriptorsErrors[index] = 'Points descriptors cannot be empty.';
|
|
273
|
+
} else {
|
|
270
274
|
const identicalPointDescr = points.slice(index + 1).some(p => markupToText(p) === markupToText(point));
|
|
271
275
|
|
|
272
276
|
if (identicalPointDescr) {
|
|
@@ -275,7 +279,7 @@ const validateSimpleRubric = (model) => {
|
|
|
275
279
|
}
|
|
276
280
|
});
|
|
277
281
|
|
|
278
|
-
if(Object.keys(pointsDescriptorsErrors).length > 0){
|
|
282
|
+
if (Object.keys(pointsDescriptorsErrors).length > 0) {
|
|
279
283
|
errors.pointsDescriptorsErrors = pointsDescriptorsErrors;
|
|
280
284
|
}
|
|
281
285
|
|
package/module/demo.js
CHANGED
|
@@ -13,7 +13,7 @@ generate.model = (id, element) => ({
|
|
|
13
13
|
simpleRubric: {
|
|
14
14
|
points: ['nothing right', 'a teeny bit right', 'mostly right', 'bingo'],
|
|
15
15
|
sampleAnswers: [null, 'just right', 'not left', null],
|
|
16
|
-
maxPoints:
|
|
16
|
+
maxPoints: 3,
|
|
17
17
|
excludeZero: false,
|
|
18
18
|
},
|
|
19
19
|
rubricless: {
|
package/module/print-demo.js
CHANGED
|
@@ -11,7 +11,7 @@ generate.model = (id, element) => ({
|
|
|
11
11
|
simpleRubric: {
|
|
12
12
|
points: ['nothing right', 'a teeny bit right', 'mostly right', 'bingo'],
|
|
13
13
|
sampleAnswers: [null, 'just right', 'not left', null],
|
|
14
|
-
maxPoints:
|
|
14
|
+
maxPoints: 3,
|
|
15
15
|
excludeZero: false,
|
|
16
16
|
},
|
|
17
17
|
rubricless: {
|
package/package.json
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/complex-rubric",
|
|
3
3
|
"repository": "pie-framework/pie-elements",
|
|
4
|
-
"version": "2.2.9-next.
|
|
4
|
+
"version": "2.2.9-next.7+ef6ab1c42",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
8
8
|
"dependencies": {
|
|
9
9
|
"@material-ui/core": "^3.9.2",
|
|
10
|
-
"@pie-element/multi-trait-rubric": "^3.2.5-next.
|
|
11
|
-
"@pie-element/rubric": "^3.1.8-next.
|
|
10
|
+
"@pie-element/multi-trait-rubric": "^3.2.5-next.7+ef6ab1c42",
|
|
11
|
+
"@pie-element/rubric": "^3.1.8-next.7+ef6ab1c42",
|
|
12
12
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
13
13
|
"classnames": "^2.2.5",
|
|
14
14
|
"debug": "^4.1.1",
|
|
15
15
|
"lodash": "^4.17.11",
|
|
16
16
|
"prop-types": "^15.7.2"
|
|
17
17
|
},
|
|
18
|
-
"gitHead": "
|
|
18
|
+
"gitHead": "ef6ab1c42d2d9ca9ccaccd30c179dea25981f58c",
|
|
19
19
|
"scripts": {
|
|
20
20
|
"postpublish": "../../scripts/postpublish"
|
|
21
21
|
},
|