@pie-element/graphing 6.2.1-next.9 → 6.2.2-beta.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 +25 -0
- package/configure/CHANGELOG.md +24 -0
- package/configure/package.json +2 -2
- package/controller/CHANGELOG.md +25 -0
- package/controller/lib/index.js +5 -1
- package/controller/lib/index.js.map +1 -1
- package/controller/package.json +2 -2
- package/package.json +3 -3
- package/LICENSE.md +0 -5
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,31 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [6.2.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/graphing@6.2.1...@pie-element/graphing@6.2.2) (2024-11-15)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* update pie-lib/pie-toolbox PD-4401, PD-4441, PD-4319, PD-4394, PD-3687 ([f1f0af3](https://github.com/pie-framework/pie-elements/commit/f1f0af31f3c6fba54ca3a378dea3b8b32d8ebb87))
|
|
12
|
+
* **graphing:** Filtering incomplete graph objects added by student before scoring. ([1dda256](https://github.com/pie-framework/pie-elements/commit/1dda256786941b0d8ee3554d769b235f51742251))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
## [6.2.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/graphing@6.2.0...@pie-element/graphing@6.2.1) (2024-11-01)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Bug Fixes
|
|
22
|
+
|
|
23
|
+
* update pie-lib PD-4361 ([0ed2a71](https://github.com/pie-framework/pie-elements/commit/0ed2a7156d3fef55b9c25ab9c60d0df836b86ee5))
|
|
24
|
+
* update pie-lib/pie-toolbox PD-4319, PD-1460, PD-4004 ([db03ac7](https://github.com/pie-framework/pie-elements/commit/db03ac7473960cedef2c83c79920e77db06f605d))
|
|
25
|
+
* update pie-lib/pie-toolbox PD-4372 ([dc73470](https://github.com/pie-framework/pie-elements/commit/dc734705a6aefa0f69eb29d3d695c57e31671ab8))
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
6
31
|
# [6.2.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/graphing@6.1.5...@pie-element/graphing@6.2.0) (2024-10-29)
|
|
7
32
|
|
|
8
33
|
|
package/configure/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,30 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [6.1.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/graphing-configure@6.1.1...@pie-element/graphing-configure@6.1.2) (2024-11-15)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* update pie-lib/pie-toolbox PD-4401, PD-4441, PD-4319, PD-4394, PD-3687 ([f1f0af3](https://github.com/pie-framework/pie-elements/commit/f1f0af31f3c6fba54ca3a378dea3b8b32d8ebb87))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## [6.1.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/graphing-configure@6.1.0...@pie-element/graphing-configure@6.1.1) (2024-11-01)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* update pie-lib PD-4361 ([0ed2a71](https://github.com/pie-framework/pie-elements/commit/0ed2a7156d3fef55b9c25ab9c60d0df836b86ee5))
|
|
23
|
+
* update pie-lib/pie-toolbox PD-4319, PD-1460, PD-4004 ([db03ac7](https://github.com/pie-framework/pie-elements/commit/db03ac7473960cedef2c83c79920e77db06f605d))
|
|
24
|
+
* update pie-lib/pie-toolbox PD-4372 ([dc73470](https://github.com/pie-framework/pie-elements/commit/dc734705a6aefa0f69eb29d3d695c57e31671ab8))
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
6
30
|
# [6.1.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/graphing-configure@6.0.7...@pie-element/graphing-configure@6.1.0) (2024-10-29)
|
|
7
31
|
|
|
8
32
|
|
package/configure/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/graphing-configure",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "6.1.
|
|
4
|
+
"version": "6.1.2",
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"module": "src/index.js",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"@material-ui/core": "^3.9.2",
|
|
11
11
|
"@pie-framework/pie-configure-events": "^1.3.0",
|
|
12
|
-
"@pie-lib/pie-toolbox": "
|
|
12
|
+
"@pie-lib/pie-toolbox": "1.33.1",
|
|
13
13
|
"classnames": "^2.2.5",
|
|
14
14
|
"debug": "^4.1.1",
|
|
15
15
|
"lodash": "^4.17.15",
|
package/controller/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,31 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [6.1.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/graphing-controller@6.1.1...@pie-element/graphing-controller@6.1.2) (2024-11-15)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* update pie-lib/pie-toolbox PD-4401, PD-4441, PD-4319, PD-4394, PD-3687 ([f1f0af3](https://github.com/pie-framework/pie-elements/commit/f1f0af31f3c6fba54ca3a378dea3b8b32d8ebb87))
|
|
12
|
+
* **graphing:** Filtering incomplete graph objects added by student before scoring. ([1dda256](https://github.com/pie-framework/pie-elements/commit/1dda256786941b0d8ee3554d769b235f51742251))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
## [6.1.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/graphing-controller@6.1.0...@pie-element/graphing-controller@6.1.1) (2024-11-01)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Bug Fixes
|
|
22
|
+
|
|
23
|
+
* update pie-lib PD-4361 ([0ed2a71](https://github.com/pie-framework/pie-elements/commit/0ed2a7156d3fef55b9c25ab9c60d0df836b86ee5))
|
|
24
|
+
* update pie-lib/pie-toolbox PD-4319, PD-1460, PD-4004 ([db03ac7](https://github.com/pie-framework/pie-elements/commit/db03ac7473960cedef2c83c79920e77db06f605d))
|
|
25
|
+
* update pie-lib/pie-toolbox PD-4372 ([dc73470](https://github.com/pie-framework/pie-elements/commit/dc734705a6aefa0f69eb29d3d695c57e31671ab8))
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
6
31
|
# [6.1.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/graphing-controller@6.0.6...@pie-element/graphing-controller@6.1.0) (2024-10-29)
|
|
7
32
|
|
|
8
33
|
|
package/controller/lib/index.js
CHANGED
|
@@ -157,7 +157,11 @@ var getBestAnswer = function getBestAnswer(question, session) {
|
|
|
157
157
|
});
|
|
158
158
|
}); // initialize answer if no values
|
|
159
159
|
|
|
160
|
-
answer = answer || []; //
|
|
160
|
+
answer = answer || []; //filter the incomplete objects for student response - Fix for SC-33160
|
|
161
|
+
|
|
162
|
+
answer = answer.filter(function (mark) {
|
|
163
|
+
return !mark.building;
|
|
164
|
+
}); // initialize one possible answer if no values
|
|
161
165
|
|
|
162
166
|
if ((0, _isEmpty["default"])(questionPossibleAnswers)) {
|
|
163
167
|
questionPossibleAnswers = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["log","initializeGraphMap","point","segment","line","ray","vector","polygon","circle","sine","parabola","absolute","exponential","graphObjectsOrder","incorrect","correct","missing","compareMarks","mark1","mark2","type","equalMarks","comparLabelMarks","label","getAnswerCorrected","sessionAnswers","correctAnswers","marks","rez","reduce","correctedAnswer","answer","answerIsCorrect","find","mark","correctness","correctnesslabel","correctlabel","missingAnswers","answerIndex","getPartialScoring","scoringType","env","pS","partialScoring","enabled","getBestAnswer","question","session","answers","questionPossibleAnswers","Object","entries","forEach","key","value","filter","building","correctAnswer","partialScoringEnabled","possibleAnswers","acc","entry","possibleAnswerKey","possibleAnswer","length","correctMarks","scoredCorrectedAnswer","maxScore","score","bestScore","foundOneSolution","parseFloat","toFixed","Math","floor","bestScoreAnswerKey","answersCorrected","map","normalize","defaults","model","Promise","resolve","normalizedQuestion","undefined","defaultTool","extraCSSRules","prompt","promptEnabled","graph","toolbarTools","questionProps","arrows","mode","role","left","right","up","down","toolbarToolsNoLabel","tool","normalizedDefaultTool","base","disabled","rationale","size","showKeyLegend","showToggle","teacherInstructions","rationaleEnabled","teacherInstructionsEnabled","sort","a","b","correctResponse","outcome","empty","createCorrectResponseSession","values","id","getInnerText","html","replaceAll","getContent","replace","validate","config","errors","correctAnswerErrors","toolbarToolsError","field","required"],"mappings":"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","sourcesContent":["import debug from 'debug';\n\nimport cloneDeep from 'lodash/cloneDeep';\nimport uniqWith from 'lodash/uniqWith';\nimport isEmpty from 'lodash/isEmpty';\nimport defaults from './defaults';\nimport { equalMarks, sortedAnswers, removeInvalidAnswers } from './utils';\n\nimport { partialScoring } from '@pie-lib/pie-toolbox/controller-utils';\n\nconst log = debug('@pie-element:graphing:controller');\n\nconst initializeGraphMap = () => ({\n point: [],\n segment: [],\n line: [],\n ray: [],\n vector: [],\n polygon: [],\n circle: [],\n sine: [],\n parabola: [],\n absolute: [],\n exponential: [],\n});\n\nconst graphObjectsOrder = {\n incorrect: 0,\n correct: 1,\n missing: 2,\n};\n\nexport const compareMarks = (mark1, mark2) => {\n // marks can be compared with equalMarks[type] function only if they have the same type;\n // if type is different, they are clearly not equal\n return !!(\n mark1 &&\n mark2 &&\n mark1.type === mark2.type &&\n equalMarks[mark1.type] &&\n equalMarks[mark1.type](mark1, mark2)\n );\n};\n\nexport const comparLabelMarks = (mark1, mark2) => {\n return mark1.label === mark2.label ? 'correct' : 'incorrect';\n};\n\nexport const getAnswerCorrected = ({ sessionAnswers, marks: correctAnswers }) => {\n sessionAnswers = sessionAnswers || [];\n correctAnswers = correctAnswers || [];\n\n const rez = cloneDeep(sessionAnswers).reduce((correctedAnswer, answer) => {\n const answerIsCorrect = correctAnswers.find((mark) => compareMarks(answer, mark));\n\n answer.correctness = answerIsCorrect ? 'correct' : 'incorrect';\n if (answerIsCorrect) {\n answer.correctnesslabel = comparLabelMarks(answer, answerIsCorrect);\n answer.correctlabel = answerIsCorrect.label ? answerIsCorrect.label : '';\n answer.label = answer.label ? answer.label : '';\n }\n return [...correctedAnswer, answer];\n }, []);\n\n // add missing objects from correct answer\n const missingAnswers = cloneDeep(correctAnswers).reduce((correctedAnswer, answer) => {\n const answerIndex = sessionAnswers.find((mark) => compareMarks(answer, mark));\n\n if (!answerIndex) {\n // means that corrected answer is missing from session, so we mark it as missing object\n return [...correctedAnswer, { ...answer, correctness: 'missing' }];\n }\n\n return correctedAnswer;\n }, []);\n\n return [...rez, ...missingAnswers];\n};\n\nconst getPartialScoring = ({ scoringType, env }) => {\n let pS = scoringType;\n\n // if scoringType is undefined, partialScoring should be considered undefined (not set)\n // because partialScoring.enabled is using that information\n // if it has a value, we check if it is partial scoring or dichotomous\n if (scoringType) {\n pS = scoringType === 'partial scoring';\n }\n\n return partialScoring.enabled({ partialScoring: pS }, env);\n};\n\nexport const getBestAnswer = (question, session, env = {}) => {\n // questionPossibleAnswers contains all possible answers (correct response and alternates);\n let { answers: questionPossibleAnswers = {}, scoringType } = question || {};\n let { answer } = session || {};\n\n // filter the incomplete objects\n Object.entries(questionPossibleAnswers || {}).forEach(\n ([key, value]) =>\n (questionPossibleAnswers[key] = { ...value, marks: value?.marks.filter((mark) => !mark.building) }),\n );\n\n // initialize answer if no values\n answer = answer || [];\n\n // initialize one possible answer if no values\n if (isEmpty(questionPossibleAnswers)) {\n questionPossibleAnswers = { correctAnswer: initializeGraphMap() };\n } else {\n questionPossibleAnswers = {\n correctAnswer: questionPossibleAnswers.correctAnswer,\n ...sortedAnswers(questionPossibleAnswers),\n };\n }\n\n const partialScoringEnabled = getPartialScoring({ scoringType, env });\n\n // student's answers without DUPLICATES\n const sessionAnswers = uniqWith(answer, compareMarks);\n // array of possible answers entries\n const possibleAnswers = Object.entries(questionPossibleAnswers);\n\n return possibleAnswers.reduce(\n (acc, entry) => {\n // iterating each possible answer (main + alternates)\n const possibleAnswerKey = entry[0];\n const possibleAnswer = entry[1] || {};\n let { marks } = possibleAnswer;\n\n if (!marks || !marks.length) {\n return acc;\n }\n\n // returns array of marks, each having 'correctness' property\n const correctedAnswer = getAnswerCorrected({ sessionAnswers, marks });\n const correctMarks = correctedAnswer.filter((answer) => answer.correctness === 'correct');\n // filter out missing objects because they do not affect the calculation of the score\n // only correct and incorrect are needed\n const scoredCorrectedAnswer = correctedAnswer.filter((answer) => answer.correctness !== 'missing');\n\n const maxScore = marks.length;\n let score = correctMarks.length;\n\n // if extra placements\n if (scoredCorrectedAnswer.length > maxScore) {\n score -= scoredCorrectedAnswer.length - maxScore;\n }\n\n if (score < 0) {\n score = 0;\n }\n\n if (score / maxScore > acc.bestScore || !acc.foundOneSolution) {\n if (partialScoringEnabled) {\n acc.bestScore = parseFloat((score / maxScore).toFixed(2));\n } else {\n acc.bestScore = Math.floor(score / maxScore);\n }\n\n acc.bestScoreAnswerKey = possibleAnswerKey;\n acc.answersCorrected = correctedAnswer;\n acc.foundOneSolution = true;\n }\n\n return acc;\n },\n {\n bestScore: 0,\n bestScoreAnswerKey: null,\n // initially we just suppose all the answers are incorrect\n answersCorrected: cloneDeep(sessionAnswers).map((answer) => ({ ...answer, correctness: 'incorrect' })),\n foundOneSolution: false,\n },\n );\n};\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\nexport function model(question, session, env) {\n return new Promise((resolve) => {\n const normalizedQuestion = normalize(question);\n\n // added a sanity check for session for environments where it is not passed initially (ex. pie-website)\n if (session === undefined || session === null) {\n session = {};\n }\n // ensure removing of invalid answers\n // need this if undo redo was last operation\n session.answer = removeInvalidAnswers(session.answer);\n // console.log('normalizedQuestion', normalizedQuestion);\n const { defaultTool, extraCSSRules, prompt, promptEnabled, graph, answers, toolbarTools, ...questionProps } =\n normalizedQuestion || {};\n let { arrows } = normalizedQuestion;\n const { mode, role } = env || {};\n\n // This is used for offering support for old models which have the property arrows: boolean\n // Same thing is set in authoring : packages/graphing/configure/src/configure.jsx - componentDidMount\n if (typeof arrows === 'boolean') {\n if (arrows) {\n arrows = {\n left: true,\n right: true,\n up: true,\n down: true,\n };\n } else {\n arrows = {\n left: false,\n right: false,\n up: false,\n down: false,\n };\n }\n }\n\n // added support for models without defaultTool defined; also used in packages/graphing/configure/src/index.js\n const toolbarToolsNoLabel = (toolbarTools || []).filter((tool) => tool !== 'label');\n const normalizedDefaultTool = defaultTool || (toolbarToolsNoLabel.length && toolbarToolsNoLabel[0]) || '';\n\n const base = {\n ...questionProps,\n answers,\n arrows,\n defaultTool: normalizedDefaultTool,\n disabled: env.mode !== 'gather',\n prompt: promptEnabled ? prompt : null,\n rationale: null,\n size: graph,\n showKeyLegend: env.mode === 'evaluate',\n showToggle:\n env.mode === 'evaluate' &&\n !isEmpty(answers) &&\n answers.correctAnswer &&\n answers.correctAnswer.marks &&\n !isEmpty(answers.correctAnswer.marks),\n teacherInstructions: null,\n toolbarTools,\n extraCSSRules,\n };\n\n if (role === 'instructor' && (mode === 'view' || mode === 'evaluate')) {\n const { rationale, rationaleEnabled, teacherInstructions, teacherInstructionsEnabled } = normalizedQuestion || {};\n\n base.rationale = rationaleEnabled ? rationale : null;\n base.teacherInstructions = teacherInstructionsEnabled ? teacherInstructions : null;\n }\n\n if (mode === 'evaluate') {\n if (\n !isEmpty(answers) &&\n answers.correctAnswer &&\n answers.correctAnswer.marks &&\n !isEmpty(answers.correctAnswer.marks)\n ) {\n const { answersCorrected, bestScoreAnswerKey, bestScore } = getBestAnswer(normalizedQuestion, session, env);\n // array of marks from session with 'correctness' property set\n base.answersCorrected = answersCorrected.sort(\n (a, b) => graphObjectsOrder[a.correctness] - graphObjectsOrder[b.correctness],\n );\n base.correctResponse = bestScoreAnswerKey ? (answers[bestScoreAnswerKey] || {}).marks : [];\n base.showToggle = base.showToggle && bestScore !== 1;\n } else {\n base.answersCorrected = (session && session.answer) || [];\n base.correctResponse = [];\n }\n }\n\n log('base: ', base);\n resolve(base);\n });\n}\n\nexport function outcome(question, session, env = {}) {\n return new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n\n if (\n env.mode !== 'evaluate' ||\n isEmpty(question.answers) ||\n (question.answers && question.answers.correctAnswer && isEmpty(question.answers.correctAnswer.marks))\n ) {\n resolve({ score: 0 });\n }\n\n const { bestScore } = getBestAnswer(question, session, env);\n\n resolve({ score: bestScore });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { answers } = question || {};\n let marks = [];\n\n if (answers && Object.values(answers)) {\n const correctAnswer = answers.correctAnswer || Object.values(answers)[0] || {};\n marks = correctAnswer.marks || [];\n }\n\n resolve({\n answer: marks,\n id: '1',\n });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img and iframe\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { answers, toolbarTools } = model;\n const errors = {};\n const correctAnswerErrors = {};\n const toolbarToolsNoLabel = (toolbarTools || []).filter((tool) => tool !== 'label');\n\n if (!toolbarToolsNoLabel.length) {\n errors.toolbarToolsError = 'There should be at least 1 tool defined.';\n }\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n Object.entries(answers || {}).forEach(([key, value]) => {\n if (!value.marks.length) {\n correctAnswerErrors[key] = 'At least 1 graph object should be defined.';\n }\n\n // check if all graph objects are correctly defined with respect to root, edge and from, to\n if (value.marks.length > 0) {\n value.marks.forEach((mark) => {\n if (mark.building) {\n correctAnswerErrors[key] = 'At least 1 graph object is not correctly defined.';\n }\n });\n }\n });\n\n if (!isEmpty(correctAnswerErrors)) {\n errors.correctAnswerErrors = correctAnswerErrors;\n }\n\n return errors;\n};\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["log","initializeGraphMap","point","segment","line","ray","vector","polygon","circle","sine","parabola","absolute","exponential","graphObjectsOrder","incorrect","correct","missing","compareMarks","mark1","mark2","type","equalMarks","comparLabelMarks","label","getAnswerCorrected","sessionAnswers","correctAnswers","marks","rez","reduce","correctedAnswer","answer","answerIsCorrect","find","mark","correctness","correctnesslabel","correctlabel","missingAnswers","answerIndex","getPartialScoring","scoringType","env","pS","partialScoring","enabled","getBestAnswer","question","session","answers","questionPossibleAnswers","Object","entries","forEach","key","value","filter","building","correctAnswer","partialScoringEnabled","possibleAnswers","acc","entry","possibleAnswerKey","possibleAnswer","length","correctMarks","scoredCorrectedAnswer","maxScore","score","bestScore","foundOneSolution","parseFloat","toFixed","Math","floor","bestScoreAnswerKey","answersCorrected","map","normalize","defaults","model","Promise","resolve","normalizedQuestion","undefined","defaultTool","extraCSSRules","prompt","promptEnabled","graph","toolbarTools","questionProps","arrows","mode","role","left","right","up","down","toolbarToolsNoLabel","tool","normalizedDefaultTool","base","disabled","rationale","size","showKeyLegend","showToggle","teacherInstructions","rationaleEnabled","teacherInstructionsEnabled","sort","a","b","correctResponse","outcome","empty","createCorrectResponseSession","values","id","getInnerText","html","replaceAll","getContent","replace","validate","config","errors","correctAnswerErrors","toolbarToolsError","field","required"],"mappings":"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","sourcesContent":["import debug from 'debug';\n\nimport cloneDeep from 'lodash/cloneDeep';\nimport uniqWith from 'lodash/uniqWith';\nimport isEmpty from 'lodash/isEmpty';\nimport defaults from './defaults';\nimport { equalMarks, sortedAnswers, removeInvalidAnswers } from './utils';\n\nimport { partialScoring } from '@pie-lib/pie-toolbox/controller-utils';\n\nconst log = debug('@pie-element:graphing:controller');\n\nconst initializeGraphMap = () => ({\n point: [],\n segment: [],\n line: [],\n ray: [],\n vector: [],\n polygon: [],\n circle: [],\n sine: [],\n parabola: [],\n absolute: [],\n exponential: [],\n});\n\nconst graphObjectsOrder = {\n incorrect: 0,\n correct: 1,\n missing: 2,\n};\n\nexport const compareMarks = (mark1, mark2) => {\n // marks can be compared with equalMarks[type] function only if they have the same type;\n // if type is different, they are clearly not equal\n return !!(\n mark1 &&\n mark2 &&\n mark1.type === mark2.type &&\n equalMarks[mark1.type] &&\n equalMarks[mark1.type](mark1, mark2)\n );\n};\n\nexport const comparLabelMarks = (mark1, mark2) => {\n return mark1.label === mark2.label ? 'correct' : 'incorrect';\n};\n\nexport const getAnswerCorrected = ({ sessionAnswers, marks: correctAnswers }) => {\n sessionAnswers = sessionAnswers || [];\n correctAnswers = correctAnswers || [];\n\n const rez = cloneDeep(sessionAnswers).reduce((correctedAnswer, answer) => {\n const answerIsCorrect = correctAnswers.find((mark) => compareMarks(answer, mark));\n\n answer.correctness = answerIsCorrect ? 'correct' : 'incorrect';\n if (answerIsCorrect) {\n answer.correctnesslabel = comparLabelMarks(answer, answerIsCorrect);\n answer.correctlabel = answerIsCorrect.label ? answerIsCorrect.label : '';\n answer.label = answer.label ? answer.label : '';\n }\n return [...correctedAnswer, answer];\n }, []);\n\n // add missing objects from correct answer\n const missingAnswers = cloneDeep(correctAnswers).reduce((correctedAnswer, answer) => {\n const answerIndex = sessionAnswers.find((mark) => compareMarks(answer, mark));\n\n if (!answerIndex) {\n // means that corrected answer is missing from session, so we mark it as missing object\n return [...correctedAnswer, { ...answer, correctness: 'missing' }];\n }\n\n return correctedAnswer;\n }, []);\n\n return [...rez, ...missingAnswers];\n};\n\nconst getPartialScoring = ({ scoringType, env }) => {\n let pS = scoringType;\n\n // if scoringType is undefined, partialScoring should be considered undefined (not set)\n // because partialScoring.enabled is using that information\n // if it has a value, we check if it is partial scoring or dichotomous\n if (scoringType) {\n pS = scoringType === 'partial scoring';\n }\n\n return partialScoring.enabled({ partialScoring: pS }, env);\n};\n\nexport const getBestAnswer = (question, session, env = {}) => {\n // questionPossibleAnswers contains all possible answers (correct response and alternates);\n let { answers: questionPossibleAnswers = {}, scoringType } = question || {};\n let { answer } = session || {};\n\n // filter the incomplete objects\n Object.entries(questionPossibleAnswers || {}).forEach(\n ([key, value]) =>\n (questionPossibleAnswers[key] = { ...value, marks: value?.marks.filter((mark) => !mark.building) }),\n );\n\n // initialize answer if no values\n answer = answer || [];\n \n //filter the incomplete objects for student response - Fix for SC-33160\n answer = answer.filter((mark) => !mark.building);\n\n // initialize one possible answer if no values\n if (isEmpty(questionPossibleAnswers)) {\n questionPossibleAnswers = { correctAnswer: initializeGraphMap() };\n } else {\n questionPossibleAnswers = {\n correctAnswer: questionPossibleAnswers.correctAnswer,\n ...sortedAnswers(questionPossibleAnswers),\n };\n }\n\n const partialScoringEnabled = getPartialScoring({ scoringType, env });\n\n // student's answers without DUPLICATES\n const sessionAnswers = uniqWith(answer, compareMarks);\n // array of possible answers entries\n const possibleAnswers = Object.entries(questionPossibleAnswers);\n\n return possibleAnswers.reduce(\n (acc, entry) => {\n // iterating each possible answer (main + alternates)\n const possibleAnswerKey = entry[0];\n const possibleAnswer = entry[1] || {};\n let { marks } = possibleAnswer;\n\n if (!marks || !marks.length) {\n return acc;\n }\n\n // returns array of marks, each having 'correctness' property\n const correctedAnswer = getAnswerCorrected({ sessionAnswers, marks });\n const correctMarks = correctedAnswer.filter((answer) => answer.correctness === 'correct');\n // filter out missing objects because they do not affect the calculation of the score\n // only correct and incorrect are needed\n const scoredCorrectedAnswer = correctedAnswer.filter((answer) => answer.correctness !== 'missing');\n\n const maxScore = marks.length;\n let score = correctMarks.length;\n\n // if extra placements\n if (scoredCorrectedAnswer.length > maxScore) {\n score -= scoredCorrectedAnswer.length - maxScore;\n }\n\n if (score < 0) {\n score = 0;\n }\n\n if (score / maxScore > acc.bestScore || !acc.foundOneSolution) {\n if (partialScoringEnabled) {\n acc.bestScore = parseFloat((score / maxScore).toFixed(2));\n } else {\n acc.bestScore = Math.floor(score / maxScore);\n }\n\n acc.bestScoreAnswerKey = possibleAnswerKey;\n acc.answersCorrected = correctedAnswer;\n acc.foundOneSolution = true;\n }\n\n return acc;\n },\n {\n bestScore: 0,\n bestScoreAnswerKey: null,\n // initially we just suppose all the answers are incorrect\n answersCorrected: cloneDeep(sessionAnswers).map((answer) => ({ ...answer, correctness: 'incorrect' })),\n foundOneSolution: false,\n },\n );\n};\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\nexport function model(question, session, env) {\n return new Promise((resolve) => {\n const normalizedQuestion = normalize(question);\n\n // added a sanity check for session for environments where it is not passed initially (ex. pie-website)\n if (session === undefined || session === null) {\n session = {};\n }\n // ensure removing of invalid answers\n // need this if undo redo was last operation\n session.answer = removeInvalidAnswers(session.answer);\n // console.log('normalizedQuestion', normalizedQuestion);\n const { defaultTool, extraCSSRules, prompt, promptEnabled, graph, answers, toolbarTools, ...questionProps } =\n normalizedQuestion || {};\n let { arrows } = normalizedQuestion;\n const { mode, role } = env || {};\n\n // This is used for offering support for old models which have the property arrows: boolean\n // Same thing is set in authoring : packages/graphing/configure/src/configure.jsx - componentDidMount\n if (typeof arrows === 'boolean') {\n if (arrows) {\n arrows = {\n left: true,\n right: true,\n up: true,\n down: true,\n };\n } else {\n arrows = {\n left: false,\n right: false,\n up: false,\n down: false,\n };\n }\n }\n\n // added support for models without defaultTool defined; also used in packages/graphing/configure/src/index.js\n const toolbarToolsNoLabel = (toolbarTools || []).filter((tool) => tool !== 'label');\n const normalizedDefaultTool = defaultTool || (toolbarToolsNoLabel.length && toolbarToolsNoLabel[0]) || '';\n\n const base = {\n ...questionProps,\n answers,\n arrows,\n defaultTool: normalizedDefaultTool,\n disabled: env.mode !== 'gather',\n prompt: promptEnabled ? prompt : null,\n rationale: null,\n size: graph,\n showKeyLegend: env.mode === 'evaluate',\n showToggle:\n env.mode === 'evaluate' &&\n !isEmpty(answers) &&\n answers.correctAnswer &&\n answers.correctAnswer.marks &&\n !isEmpty(answers.correctAnswer.marks),\n teacherInstructions: null,\n toolbarTools,\n extraCSSRules,\n };\n\n if (role === 'instructor' && (mode === 'view' || mode === 'evaluate')) {\n const { rationale, rationaleEnabled, teacherInstructions, teacherInstructionsEnabled } = normalizedQuestion || {};\n\n base.rationale = rationaleEnabled ? rationale : null;\n base.teacherInstructions = teacherInstructionsEnabled ? teacherInstructions : null;\n }\n\n if (mode === 'evaluate') {\n if (\n !isEmpty(answers) &&\n answers.correctAnswer &&\n answers.correctAnswer.marks &&\n !isEmpty(answers.correctAnswer.marks)\n ) {\n const { answersCorrected, bestScoreAnswerKey, bestScore } = getBestAnswer(normalizedQuestion, session, env);\n // array of marks from session with 'correctness' property set\n base.answersCorrected = answersCorrected.sort(\n (a, b) => graphObjectsOrder[a.correctness] - graphObjectsOrder[b.correctness],\n );\n base.correctResponse = bestScoreAnswerKey ? (answers[bestScoreAnswerKey] || {}).marks : [];\n base.showToggle = base.showToggle && bestScore !== 1;\n } else {\n base.answersCorrected = (session && session.answer) || [];\n base.correctResponse = [];\n }\n }\n\n log('base: ', base);\n resolve(base);\n });\n}\n\nexport function outcome(question, session, env = {}) {\n return new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n\n if (\n env.mode !== 'evaluate' ||\n isEmpty(question.answers) ||\n (question.answers && question.answers.correctAnswer && isEmpty(question.answers.correctAnswer.marks))\n ) {\n resolve({ score: 0 });\n }\n\n const { bestScore } = getBestAnswer(question, session, env);\n\n resolve({ score: bestScore });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { answers } = question || {};\n let marks = [];\n\n if (answers && Object.values(answers)) {\n const correctAnswer = answers.correctAnswer || Object.values(answers)[0] || {};\n marks = correctAnswer.marks || [];\n }\n\n resolve({\n answer: marks,\n id: '1',\n });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img and iframe\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { answers, toolbarTools } = model;\n const errors = {};\n const correctAnswerErrors = {};\n const toolbarToolsNoLabel = (toolbarTools || []).filter((tool) => tool !== 'label');\n\n if (!toolbarToolsNoLabel.length) {\n errors.toolbarToolsError = 'There should be at least 1 tool defined.';\n }\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n Object.entries(answers || {}).forEach(([key, value]) => {\n if (!value.marks.length) {\n correctAnswerErrors[key] = 'At least 1 graph object should be defined.';\n }\n\n // check if all graph objects are correctly defined with respect to root, edge and from, to\n if (value.marks.length > 0) {\n value.marks.forEach((mark) => {\n if (mark.building) {\n correctAnswerErrors[key] = 'At least 1 graph object is not correctly defined.';\n }\n });\n }\n });\n\n if (!isEmpty(correctAnswerErrors)) {\n errors.correctAnswerErrors = correctAnswerErrors;\n }\n\n return errors;\n};\n"],"file":"index.js"}
|
package/controller/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/graphing-controller",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "6.1.
|
|
4
|
+
"version": "6.1.2",
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"module": "src/index.js",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"test": "./node_modules/.bin/jest"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@pie-lib/pie-toolbox": "
|
|
12
|
+
"@pie-lib/pie-toolbox": "1.33.1",
|
|
13
13
|
"debug": "^4.1.1"
|
|
14
14
|
},
|
|
15
15
|
"devDependencies": {
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"repository": "pie-framework/pie-elements",
|
|
7
|
-
"version": "6.2.
|
|
7
|
+
"version": "6.2.2-beta.0",
|
|
8
8
|
"description": "",
|
|
9
9
|
"scripts": {
|
|
10
10
|
"postpublish": "../../scripts/postpublish"
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@material-ui/core": "^3.9.2",
|
|
14
14
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
15
|
-
"@pie-lib/pie-toolbox": "
|
|
15
|
+
"@pie-lib/pie-toolbox": "1.33.1",
|
|
16
16
|
"classnames": "^2.2.5",
|
|
17
17
|
"debug": "^4.1.1",
|
|
18
18
|
"react": "^16.8.1",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
},
|
|
21
21
|
"author": "",
|
|
22
22
|
"license": "ISC",
|
|
23
|
-
"gitHead": "
|
|
23
|
+
"gitHead": "0e14ff981bcdc8a89a0e58484026496701bfdbc3",
|
|
24
24
|
"main": "lib/index.js",
|
|
25
25
|
"module": "src/index.js"
|
|
26
26
|
}
|
package/LICENSE.md
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
Copyright 2019 CoreSpring Inc
|
|
2
|
-
|
|
3
|
-
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
|
|
4
|
-
|
|
5
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|