@pie-element/charting 8.6.11-next.9 → 8.7.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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,25 @@
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
+ # [8.7.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting@8.6.10...@pie-element/charting@8.7.0) (2025-07-18)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * update pie-lib/pie-toolbox PD-363 ([10ce402](https://github.com/pie-framework/pie-elements/commit/10ce402bcb1c0c9c24dfc9ecff2e13c4de14a753))
12
+
13
+
14
+ ### Features
15
+
16
+ * update pie-lib/pie toolbox PD-5082, PD-5081, PD-3797, PD-5083, revert PD-363, PD-653 ([9214466](https://github.com/pie-framework/pie-elements/commit/92144667464f18c213c7ab1d769595e43b553dab))
17
+ * update pie-lib/pie-toolbox PD-5082, PD-5081, PD-3797, PD-5083, PD-4885, PD-5097, PD-5100, PD-5131, PD-5080 ([dc67b1c](https://github.com/pie-framework/pie-elements/commit/dc67b1c735b2adb60943e5d145e739ce4e39a428))
18
+ * **charting:** add key legend in evaluate mode PD-5083 ([f970b99](https://github.com/pie-framework/pie-elements/commit/f970b9955ca76f6d9caa422b61e79fa068e90082))
19
+ * **charting:** send language as props to legend PD-5083 ([cd797fa](https://github.com/pie-framework/pie-elements/commit/cd797fae51d47d9eb8ec41dd5c2fc75d4c1ce4f0))
20
+
21
+
22
+
23
+
24
+
6
25
  ## [8.6.10](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting@8.6.9...@pie-element/charting@8.6.10) (2025-06-27)
7
26
 
8
27
 
@@ -3,6 +3,23 @@
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
+ # [8.6.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-configure@8.5.10...@pie-element/charting-configure@8.6.0) (2025-07-18)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * update pie-lib/pie-toolbox PD-363 ([10ce402](https://github.com/pie-framework/pie-elements/commit/10ce402bcb1c0c9c24dfc9ecff2e13c4de14a753))
12
+
13
+
14
+ ### Features
15
+
16
+ * update pie-lib/pie toolbox PD-5082, PD-5081, PD-3797, PD-5083, revert PD-363, PD-653 ([9214466](https://github.com/pie-framework/pie-elements/commit/92144667464f18c213c7ab1d769595e43b553dab))
17
+ * update pie-lib/pie-toolbox PD-5082, PD-5081, PD-3797, PD-5083, PD-4885, PD-5097, PD-5100, PD-5131, PD-5080 ([dc67b1c](https://github.com/pie-framework/pie-elements/commit/dc67b1c735b2adb60943e5d145e739ce4e39a428))
18
+
19
+
20
+
21
+
22
+
6
23
  ## [8.5.10](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-configure@8.5.9...@pie-element/charting-configure@8.5.10) (2025-06-27)
7
24
 
8
25
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pie-element/charting-configure",
3
3
  "private": true,
4
- "version": "8.5.10",
4
+ "version": "8.6.0",
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": "2.19.0",
12
+ "@pie-lib/pie-toolbox": "2.22.0",
13
13
  "classnames": "^2.2.5",
14
14
  "debug": "^4.1.1",
15
15
  "prop-types": "^15.6.2",
@@ -3,6 +3,24 @@
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
+ # [5.3.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-controller@5.2.10...@pie-element/charting-controller@5.3.0) (2025-07-18)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * update pie-lib/pie-toolbox PD-363 ([10ce402](https://github.com/pie-framework/pie-elements/commit/10ce402bcb1c0c9c24dfc9ecff2e13c4de14a753))
12
+
13
+
14
+ ### Features
15
+
16
+ * update pie-lib/pie toolbox PD-5082, PD-5081, PD-3797, PD-5083, revert PD-363, PD-653 ([9214466](https://github.com/pie-framework/pie-elements/commit/92144667464f18c213c7ab1d769595e43b553dab))
17
+ * update pie-lib/pie-toolbox PD-5082, PD-5081, PD-3797, PD-5083, PD-4885, PD-5097, PD-5100, PD-5131, PD-5080 ([dc67b1c](https://github.com/pie-framework/pie-elements/commit/dc67b1c735b2adb60943e5d145e739ce4e39a428))
18
+ * **charting:** add key legend in evaluate mode PD-5083 ([f970b99](https://github.com/pie-framework/pie-elements/commit/f970b9955ca76f6d9caa422b61e79fa068e90082))
19
+
20
+
21
+
22
+
23
+
6
24
  ## [5.2.10](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-controller@5.2.9...@pie-element/charting-controller@5.2.10) (2025-06-27)
7
25
 
8
26
 
@@ -294,6 +294,7 @@ function model(question, session, env) {
294
294
  base.correctAnswer = correctAnswer;
295
295
  base.showToggle = !!(correctAnswer !== null && correctAnswer !== void 0 && (_correctAnswer$data = correctAnswer.data) !== null && _correctAnswer$data !== void 0 && _correctAnswer$data.length) && scoreObject.score !== 1;
296
296
  base.addCategoryEnabled = false;
297
+ base.showKeyLegend = true;
297
298
  }
298
299
 
299
300
  if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["log","lowerCase","string","toLowerCase","checkLabelsEquality","givenAnswerLabel","correctAnswerLabel","setCorrectness","answers","partialScoring","map","answer","correctness","value","label","normalize","question","defaults","getScore","session","env","correctAnswer","data","initialData","scoringType","correctResponses","isPartialScoring","enabled","undefined","correctAnswers","defaultAnswers","filterCategories","result","maxScore","score","scoreForLabelAndValueEditable","corrAnswer","index","valueIsCorrect","labelIsCorrect","push","forEach","defaultAnswer","editable","interactive","length","slice","parseFloat","toFixed","extraProps","correctResponseEnabled","categories","deletable","rest","model","Promise","resolve","normalizedQuestion","addCategoryEnabled","chartType","domain","graph","prompt","promptEnabled","range","rationale","title","rationaleEnabled","teacherInstructions","teacherInstructionsEnabled","studentNewCategoryDefaultLabel","language","extraCSSRules","correctInfo","base","size","showToggle","disabled","mode","scoreObject","correctedAnswer","role","outcome","empty","correctResponse","createCorrectResponseSession","id","getInnerText","html","replaceAll","getContent","replace","validate","config","correctData","errors","correctAnswerErrors","categoryErrors","field","required","category","identicalAnswer","some","c","i","categoriesError","identicalError"],"mappings":"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","sourcesContent":["import debug from 'debug';\nimport isEqual from 'lodash/isEqual';\nimport isEmpty from 'lodash/isEmpty';\nimport pick from 'lodash/pick';\nimport defaults from './defaults';\n\nimport { partialScoring } from '@pie-lib/pie-toolbox/controller-utils';\n\nconst log = debug('@pie-element:graphing:controller');\n\nconst lowerCase = (string) => (string || '').toLowerCase();\n\nexport const checkLabelsEquality = (givenAnswerLabel, correctAnswerLabel) =>\n lowerCase(givenAnswerLabel) === lowerCase(correctAnswerLabel);\n\nexport const setCorrectness = (answers, partialScoring) =>\n answers\n ? answers.map((answer) => ({\n ...answer,\n correctness: {\n value: partialScoring ? 'incorrect' : 'correct',\n label: partialScoring ? 'incorrect' : 'correct',\n },\n }))\n : [];\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\nexport const getScore = (question, session, env = {}) => {\n const { correctAnswer, data: initialData = [], scoringType } = question;\n let correctResponses = [];\n\n const isPartialScoring = partialScoring.enabled(\n { partialScoring: scoringType !== undefined ? scoringType === 'partial scoring' : scoringType },\n env,\n );\n\n const { data: correctAnswers = [] } = correctAnswer || {};\n const defaultAnswers = filterCategories(initialData);\n\n let answers = setCorrectness((session && session.answer) || defaultAnswers, isPartialScoring);\n\n let result = 0;\n\n if (isPartialScoring) {\n // if score type is \"partial scoring\"\n // maxScore is calculated based on the correct response\n // score is calculated based on the given response\n let maxScore = 0;\n let score = 0;\n\n const scoreForLabelAndValueEditable = (answer, corrAnswer) => {\n const { value, label, index } = answer;\n const valueIsCorrect = value === corrAnswer.value;\n const labelIsCorrect = checkLabelsEquality(label, corrAnswer.label);\n maxScore += 2;\n\n if (valueIsCorrect) {\n score += 1;\n answer.correctness.value = 'correct';\n }\n\n if (labelIsCorrect) {\n score += 1;\n answer.correctness.label = 'correct';\n }\n\n if (valueIsCorrect && labelIsCorrect) {\n correctResponses.push({ label: label, index: index });\n }\n };\n\n // if given answer has more categories than the correct answers, the \"extra\" will be ignored\n correctAnswers.forEach((corrAnswer, index) => {\n const defaultAnswer = defaultAnswers[index];\n const answer = answers[index];\n\n // if there is a corresponding category at the same position in the given answer\n if (answer) {\n // if there is a corresponding category at the same position in the default answer\n if (defaultAnswer) {\n // if category's label (in default answer) was not editable\n // it means that this category values only one point (only the value can be changed)\n if (!defaultAnswer.editable && answer.interactive) {\n maxScore += 1;\n\n if (answer.value === corrAnswer.value) {\n score += 1;\n answer.correctness.value = 'correct';\n correctResponses.push({ label: answer.label, index: index });\n }\n answer.correctness.label = 'correct';\n\n // if category's label (in default answer) was editable\n // it means that this category values 2 points (both label and value can be changed)\n } else if (defaultAnswer.editable && answer.interactive) {\n scoreForLabelAndValueEditable(answer, corrAnswer);\n } else if (!answer.interactive) {\n answer.correctness.value = 'correct';\n answer.correctness.label = 'correct';\n correctResponses.push({ label: answer.label, index: index });\n }\n } else {\n // if there is not a corresponding category at the same position in the default answer\n scoreForLabelAndValueEditable(answer, corrAnswer);\n }\n } else {\n // if there is not a corresponding category at the same position in the given answer\n // it means that the given answer has less categories than the correct answer\n maxScore += 2;\n }\n });\n\n result = maxScore ? score / maxScore : 0;\n } else {\n // if scoring type is \"all or nothing\"\n // the length on correct answers and length of given answer have to match\n result = correctAnswers.length === answers.length ? 1 : 0;\n\n if (result) {\n // if there is at least one difference between the correct answer and the given answer\n // the result will be incorrect\n correctAnswers.forEach((corrAnswer, index) => {\n const { value, label } = answers[index];\n\n const valueIsCorrect = value === corrAnswer.value;\n const labelIsCorrect = lowerCase(label) === lowerCase(corrAnswer.label);\n\n if (!valueIsCorrect) {\n result = 0;\n answers[index].correctness.value = 'incorrect';\n }\n if (!labelIsCorrect) {\n result = 0;\n answers[index].correctness.label = 'incorrect';\n }\n if (valueIsCorrect && labelIsCorrect) {\n correctResponses.push({ label: label, index: index });\n }\n });\n } else {\n answers = [\n ...answers.slice(0, correctAnswers.length),\n ...setCorrectness(answers.slice(correctAnswers.length), true),\n ];\n }\n }\n\n const score = {\n score: parseFloat(result.toFixed(2)),\n answers,\n };\n\n if (env.extraProps && env.extraProps.correctResponseEnabled) {\n score.correctResponses = correctResponses;\n }\n\n return score;\n};\n\n// eslint-disable-next-line no-unused-vars\nexport const filterCategories = (categories) => (categories ? categories.map(({ deletable, ...rest }) => rest) : []);\n\nexport function model(question, session, env) {\n return new Promise((resolve) => {\n const normalizedQuestion = normalize(question);\n const {\n addCategoryEnabled,\n chartType,\n data,\n domain,\n graph,\n prompt,\n promptEnabled,\n range,\n rationale,\n title,\n rationaleEnabled,\n teacherInstructions,\n teacherInstructionsEnabled,\n correctAnswer,\n scoringType,\n studentNewCategoryDefaultLabel,\n language,\n extraCSSRules,\n } = normalizedQuestion;\n\n const correctInfo = { correctness: 'incorrect', score: '0%' };\n\n const base = {\n addCategoryEnabled,\n chartType,\n data: filterCategories(data),\n domain,\n graph,\n prompt: promptEnabled ? prompt : null,\n range,\n rationale,\n title,\n size: graph,\n showToggle: false,\n correctness: correctInfo,\n disabled: env.mode !== 'gather',\n scoringType,\n studentNewCategoryDefaultLabel,\n language,\n env,\n extraCSSRules,\n };\n\n const scoreObject = getScore(normalizedQuestion, session, env);\n const answers = filterCategories(scoreObject.answers);\n\n if (env.mode === 'view') {\n // eslint-disable-next-line no-unused-vars\n base.correctedAnswer = answers.map(({ correctness, ...rest }) => {\n return { ...rest, interactive: false };\n });\n\n base.addCategoryEnabled = false;\n }\n\n if (env.mode === 'evaluate') {\n base.correctedAnswer = answers;\n base.correctAnswer = correctAnswer;\n base.showToggle = !!correctAnswer?.data?.length && scoreObject.score !== 1;\n base.addCategoryEnabled = false;\n }\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n base.rationale = rationaleEnabled ? rationale : null;\n base.teacherInstructions = teacherInstructionsEnabled ? teacherInstructions : null;\n } else {\n base.rationale = null;\n base.teacherInstructions = null;\n }\n\n log('base: ', base);\n resolve(base);\n });\n}\n\nexport function outcome(model, session, env) {\n return new Promise((resolve) => {\n const scoreObject = getScore(model, session, env);\n const result = {\n score: scoreObject.score,\n empty: !session || isEmpty(session),\n };\n if (env.extraProps && env.extraProps.correctResponseEnabled) {\n result.extraProps = { correctResponse: scoreObject.correctResponses };\n }\n resolve(result);\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { correctAnswer } = question;\n\n let answers = correctAnswer && correctAnswer.data;\n\n // for IBX preview mode\n if (env.mode === 'gather') {\n const { data } = question;\n\n answers = ((correctAnswer && correctAnswer.data) || []).map((answer, index) => {\n return {\n ...data[index],\n ...answer,\n };\n });\n }\n\n resolve({\n answer: answers,\n id: '1',\n });\n } else {\n return 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, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { correctAnswer, data } = model || {};\n const { data: correctData } = correctAnswer || {};\n const categories = correctData || [];\n\n const errors = {};\n const correctAnswerErrors = {};\n const categoryErrors = {};\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 categories.forEach((category, index) => {\n const { label } = category;\n\n if (!getInnerText(label)) {\n categoryErrors[index] = 'Content should not be empty. ';\n } else {\n const identicalAnswer = categories.some((c, i) => c.label === label && index !== i);\n\n if (identicalAnswer) {\n categoryErrors[index] = 'Category names should be unique. ';\n }\n }\n });\n\n if (categories.length < 1 || categories.length > 20) {\n correctAnswerErrors.categoriesError = 'The correct answer should include between 1 and 20 categories.';\n } else if (\n isEqual(\n data.map((category) => pick(category, 'value', 'label')),\n correctData.map((category) => pick(category, 'value', 'label')),\n )\n ) {\n correctAnswerErrors.identicalError = 'Correct answer should not be identical to the chart’s initial state';\n }\n\n if (!isEmpty(categoryErrors)) {\n errors.categoryErrors = categoryErrors;\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","lowerCase","string","toLowerCase","checkLabelsEquality","givenAnswerLabel","correctAnswerLabel","setCorrectness","answers","partialScoring","map","answer","correctness","value","label","normalize","question","defaults","getScore","session","env","correctAnswer","data","initialData","scoringType","correctResponses","isPartialScoring","enabled","undefined","correctAnswers","defaultAnswers","filterCategories","result","maxScore","score","scoreForLabelAndValueEditable","corrAnswer","index","valueIsCorrect","labelIsCorrect","push","forEach","defaultAnswer","editable","interactive","length","slice","parseFloat","toFixed","extraProps","correctResponseEnabled","categories","deletable","rest","model","Promise","resolve","normalizedQuestion","addCategoryEnabled","chartType","domain","graph","prompt","promptEnabled","range","rationale","title","rationaleEnabled","teacherInstructions","teacherInstructionsEnabled","studentNewCategoryDefaultLabel","language","extraCSSRules","correctInfo","base","size","showToggle","disabled","mode","scoreObject","correctedAnswer","showKeyLegend","role","outcome","empty","correctResponse","createCorrectResponseSession","id","getInnerText","html","replaceAll","getContent","replace","validate","config","correctData","errors","correctAnswerErrors","categoryErrors","field","required","category","identicalAnswer","some","c","i","categoriesError","identicalError"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA;;;;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,kCAAN,CAAZ;;AAEA,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAACC,MAAD;AAAA,SAAY,CAACA,MAAM,IAAI,EAAX,EAAeC,WAAf,EAAZ;AAAA,CAAlB;;AAEO,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACC,gBAAD,EAAmBC,kBAAnB;AAAA,SACjCL,SAAS,CAACI,gBAAD,CAAT,KAAgCJ,SAAS,CAACK,kBAAD,CADR;AAAA,CAA5B;;;;AAGA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAACC,OAAD,EAAUC,cAAV;AAAA,SAC5BD,OAAO,GACHA,OAAO,CAACE,GAAR,CAAY,UAACC,MAAD;AAAA,2CACPA,MADO;AAEVC,MAAAA,WAAW,EAAE;AACXC,QAAAA,KAAK,EAAEJ,cAAc,GAAG,WAAH,GAAiB,SAD3B;AAEXK,QAAAA,KAAK,EAAEL,cAAc,GAAG,WAAH,GAAiB;AAF3B;AAFH;AAAA,GAAZ,CADG,GAQH,EATwB;AAAA,CAAvB;;;;AAWA,IAAMM,SAAS,GAAG,SAAZA,SAAY,CAACC,QAAD;AAAA,yCAAoBC,oBAApB,GAAiCD,QAAjC;AAAA,CAAlB;;;;AAEA,IAAME,QAAQ,GAAG,SAAXA,QAAW,CAACF,QAAD,EAAWG,OAAX,EAAiC;AAAA,MAAbC,GAAa,uEAAP,EAAO;AACvD,MAAQC,aAAR,GAA+DL,QAA/D,CAAQK,aAAR;AAAA,uBAA+DL,QAA/D,CAAuBM,IAAvB;AAAA,MAA6BC,WAA7B,+BAA2C,EAA3C;AAAA,MAA+CC,WAA/C,GAA+DR,QAA/D,CAA+CQ,WAA/C;AACA,MAAIC,gBAAgB,GAAG,EAAvB;;AAEA,MAAMC,gBAAgB,GAAGjB,gCAAekB,OAAf,CACvB;AAAElB,IAAAA,cAAc,EAAEe,WAAW,KAAKI,SAAhB,GAA4BJ,WAAW,KAAK,iBAA5C,GAAgEA;AAAlF,GADuB,EAEvBJ,GAFuB,CAAzB;;AAKA,aAAsCC,aAAa,IAAI,EAAvD;AAAA,uBAAQC,IAAR;AAAA,MAAcO,cAAd,0BAA+B,EAA/B;;AACA,MAAMC,cAAc,GAAGC,gBAAgB,CAACR,WAAD,CAAvC;AAEA,MAAIf,OAAO,GAAGD,cAAc,CAAEY,OAAO,IAAIA,OAAO,CAACR,MAApB,IAA+BmB,cAAhC,EAAgDJ,gBAAhD,CAA5B;AAEA,MAAIM,MAAM,GAAG,CAAb;;AAEA,MAAIN,gBAAJ,EAAsB;AACpB;AACA;AACA;AACA,QAAIO,QAAQ,GAAG,CAAf;AACA,QAAIC,MAAK,GAAG,CAAZ;;AAEA,QAAMC,6BAA6B,GAAG,SAAhCA,6BAAgC,CAACxB,MAAD,EAASyB,UAAT,EAAwB;AAC5D,UAAQvB,KAAR,GAAgCF,MAAhC,CAAQE,KAAR;AAAA,UAAeC,KAAf,GAAgCH,MAAhC,CAAeG,KAAf;AAAA,UAAsBuB,KAAtB,GAAgC1B,MAAhC,CAAsB0B,KAAtB;AACA,UAAMC,cAAc,GAAGzB,KAAK,KAAKuB,UAAU,CAACvB,KAA5C;AACA,UAAM0B,cAAc,GAAGnC,mBAAmB,CAACU,KAAD,EAAQsB,UAAU,CAACtB,KAAnB,CAA1C;AACAmB,MAAAA,QAAQ,IAAI,CAAZ;;AAEA,UAAIK,cAAJ,EAAoB;AAClBJ,QAAAA,MAAK,IAAI,CAAT;AACAvB,QAAAA,MAAM,CAACC,WAAP,CAAmBC,KAAnB,GAA2B,SAA3B;AACD;;AAED,UAAI0B,cAAJ,EAAoB;AAClBL,QAAAA,MAAK,IAAI,CAAT;AACAvB,QAAAA,MAAM,CAACC,WAAP,CAAmBE,KAAnB,GAA2B,SAA3B;AACD;;AAED,UAAIwB,cAAc,IAAIC,cAAtB,EAAsC;AACpCd,QAAAA,gBAAgB,CAACe,IAAjB,CAAsB;AAAE1B,UAAAA,KAAK,EAAEA,KAAT;AAAgBuB,UAAAA,KAAK,EAAEA;AAAvB,SAAtB;AACD;AACF,KAnBD,CAPoB,CA4BpB;;;AACAR,IAAAA,cAAc,CAACY,OAAf,CAAuB,UAACL,UAAD,EAAaC,KAAb,EAAuB;AAC5C,UAAMK,aAAa,GAAGZ,cAAc,CAACO,KAAD,CAApC;AACA,UAAM1B,MAAM,GAAGH,OAAO,CAAC6B,KAAD,CAAtB,CAF4C,CAI5C;;AACA,UAAI1B,MAAJ,EAAY;AACV;AACA,YAAI+B,aAAJ,EAAmB;AACjB;AACA;AACA,cAAI,CAACA,aAAa,CAACC,QAAf,IAA2BhC,MAAM,CAACiC,WAAtC,EAAmD;AACjDX,YAAAA,QAAQ,IAAI,CAAZ;;AAEA,gBAAItB,MAAM,CAACE,KAAP,KAAiBuB,UAAU,CAACvB,KAAhC,EAAuC;AACrCqB,cAAAA,MAAK,IAAI,CAAT;AACAvB,cAAAA,MAAM,CAACC,WAAP,CAAmBC,KAAnB,GAA2B,SAA3B;AACAY,cAAAA,gBAAgB,CAACe,IAAjB,CAAsB;AAAE1B,gBAAAA,KAAK,EAAEH,MAAM,CAACG,KAAhB;AAAuBuB,gBAAAA,KAAK,EAAEA;AAA9B,eAAtB;AACD;;AACD1B,YAAAA,MAAM,CAACC,WAAP,CAAmBE,KAAnB,GAA2B,SAA3B,CARiD,CAUjD;AACA;AACD,WAZD,MAYO,IAAI4B,aAAa,CAACC,QAAd,IAA0BhC,MAAM,CAACiC,WAArC,EAAkD;AACvDT,YAAAA,6BAA6B,CAACxB,MAAD,EAASyB,UAAT,CAA7B;AACD,WAFM,MAEA,IAAI,CAACzB,MAAM,CAACiC,WAAZ,EAAyB;AAC9BjC,YAAAA,MAAM,CAACC,WAAP,CAAmBC,KAAnB,GAA2B,SAA3B;AACAF,YAAAA,MAAM,CAACC,WAAP,CAAmBE,KAAnB,GAA2B,SAA3B;AACAW,YAAAA,gBAAgB,CAACe,IAAjB,CAAsB;AAAE1B,cAAAA,KAAK,EAAEH,MAAM,CAACG,KAAhB;AAAuBuB,cAAAA,KAAK,EAAEA;AAA9B,aAAtB;AACD;AACF,SAtBD,MAsBO;AACL;AACAF,UAAAA,6BAA6B,CAACxB,MAAD,EAASyB,UAAT,CAA7B;AACD;AACF,OA5BD,MA4BO;AACL;AACA;AACAH,QAAAA,QAAQ,IAAI,CAAZ;AACD;AACF,KAtCD;AAwCAD,IAAAA,MAAM,GAAGC,QAAQ,GAAGC,MAAK,GAAGD,QAAX,GAAsB,CAAvC;AACD,GAtED,MAsEO;AACL;AACA;AACAD,IAAAA,MAAM,GAAGH,cAAc,CAACgB,MAAf,KAA0BrC,OAAO,CAACqC,MAAlC,GAA2C,CAA3C,GAA+C,CAAxD;;AAEA,QAAIb,MAAJ,EAAY;AACV;AACA;AACAH,MAAAA,cAAc,CAACY,OAAf,CAAuB,UAACL,UAAD,EAAaC,KAAb,EAAuB;AAC5C,6BAAyB7B,OAAO,CAAC6B,KAAD,CAAhC;AAAA,YAAQxB,KAAR,kBAAQA,KAAR;AAAA,YAAeC,KAAf,kBAAeA,KAAf;AAEA,YAAMwB,cAAc,GAAGzB,KAAK,KAAKuB,UAAU,CAACvB,KAA5C;AACA,YAAM0B,cAAc,GAAGtC,SAAS,CAACa,KAAD,CAAT,KAAqBb,SAAS,CAACmC,UAAU,CAACtB,KAAZ,CAArD;;AAEA,YAAI,CAACwB,cAAL,EAAqB;AACnBN,UAAAA,MAAM,GAAG,CAAT;AACAxB,UAAAA,OAAO,CAAC6B,KAAD,CAAP,CAAezB,WAAf,CAA2BC,KAA3B,GAAmC,WAAnC;AACD;;AACD,YAAI,CAAC0B,cAAL,EAAqB;AACnBP,UAAAA,MAAM,GAAG,CAAT;AACAxB,UAAAA,OAAO,CAAC6B,KAAD,CAAP,CAAezB,WAAf,CAA2BE,KAA3B,GAAmC,WAAnC;AACD;;AACD,YAAIwB,cAAc,IAAIC,cAAtB,EAAsC;AACpCd,UAAAA,gBAAgB,CAACe,IAAjB,CAAsB;AAAE1B,YAAAA,KAAK,EAAEA,KAAT;AAAgBuB,YAAAA,KAAK,EAAEA;AAAvB,WAAtB;AACD;AACF,OAjBD;AAkBD,KArBD,MAqBO;AACL7B,MAAAA,OAAO,iDACFA,OAAO,CAACsC,KAAR,CAAc,CAAd,EAAiBjB,cAAc,CAACgB,MAAhC,CADE,uCAEFtC,cAAc,CAACC,OAAO,CAACsC,KAAR,CAAcjB,cAAc,CAACgB,MAA7B,CAAD,EAAuC,IAAvC,CAFZ,EAAP;AAID;AACF;;AAED,MAAMX,KAAK,GAAG;AACZA,IAAAA,KAAK,EAAEa,UAAU,CAACf,MAAM,CAACgB,OAAP,CAAe,CAAf,CAAD,CADL;AAEZxC,IAAAA,OAAO,EAAPA;AAFY,GAAd;;AAKA,MAAIY,GAAG,CAAC6B,UAAJ,IAAkB7B,GAAG,CAAC6B,UAAJ,CAAeC,sBAArC,EAA6D;AAC3DhB,IAAAA,KAAK,CAACT,gBAAN,GAAyBA,gBAAzB;AACD;;AAED,SAAOS,KAAP;AACD,CAlIM,C,CAoIP;;;;;AACO,IAAMH,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACoB,UAAD;AAAA,SAAiBA,UAAU,GAAGA,UAAU,CAACzC,GAAX,CAAe;AAAA,QAAG0C,SAAH,SAAGA,SAAH;AAAA,QAAiBC,IAAjB;AAAA,WAA4BA,IAA5B;AAAA,GAAf,CAAH,GAAsD,EAAjF;AAAA,CAAzB;;;;AAEA,SAASC,KAAT,CAAetC,QAAf,EAAyBG,OAAzB,EAAkCC,GAAlC,EAAuC;AAC5C,SAAO,IAAImC,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC9B,QAAMC,kBAAkB,GAAG1C,SAAS,CAACC,QAAD,CAApC;AACA,QACE0C,kBADF,GAmBID,kBAnBJ,CACEC,kBADF;AAAA,QAEEC,SAFF,GAmBIF,kBAnBJ,CAEEE,SAFF;AAAA,QAGErC,IAHF,GAmBImC,kBAnBJ,CAGEnC,IAHF;AAAA,QAIEsC,MAJF,GAmBIH,kBAnBJ,CAIEG,MAJF;AAAA,QAKEC,KALF,GAmBIJ,kBAnBJ,CAKEI,KALF;AAAA,QAMEC,MANF,GAmBIL,kBAnBJ,CAMEK,MANF;AAAA,QAOEC,aAPF,GAmBIN,kBAnBJ,CAOEM,aAPF;AAAA,QAQEC,KARF,GAmBIP,kBAnBJ,CAQEO,KARF;AAAA,QASEC,SATF,GAmBIR,kBAnBJ,CASEQ,SATF;AAAA,QAUEC,KAVF,GAmBIT,kBAnBJ,CAUES,KAVF;AAAA,QAWEC,gBAXF,GAmBIV,kBAnBJ,CAWEU,gBAXF;AAAA,QAYEC,mBAZF,GAmBIX,kBAnBJ,CAYEW,mBAZF;AAAA,QAaEC,0BAbF,GAmBIZ,kBAnBJ,CAaEY,0BAbF;AAAA,QAcEhD,aAdF,GAmBIoC,kBAnBJ,CAcEpC,aAdF;AAAA,QAeEG,WAfF,GAmBIiC,kBAnBJ,CAeEjC,WAfF;AAAA,QAgBE8C,8BAhBF,GAmBIb,kBAnBJ,CAgBEa,8BAhBF;AAAA,QAiBEC,QAjBF,GAmBId,kBAnBJ,CAiBEc,QAjBF;AAAA,QAkBEC,aAlBF,GAmBIf,kBAnBJ,CAkBEe,aAlBF;AAqBA,QAAMC,WAAW,GAAG;AAAE7D,MAAAA,WAAW,EAAE,WAAf;AAA4BsB,MAAAA,KAAK,EAAE;AAAnC,KAApB;AAEA,QAAMwC,IAAI,GAAG;AACXhB,MAAAA,kBAAkB,EAAlBA,kBADW;AAEXC,MAAAA,SAAS,EAATA,SAFW;AAGXrC,MAAAA,IAAI,EAAES,gBAAgB,CAACT,IAAD,CAHX;AAIXsC,MAAAA,MAAM,EAANA,MAJW;AAKXC,MAAAA,KAAK,EAALA,KALW;AAMXC,MAAAA,MAAM,EAAEC,aAAa,GAAGD,MAAH,GAAY,IANtB;AAOXE,MAAAA,KAAK,EAALA,KAPW;AAQXC,MAAAA,SAAS,EAATA,SARW;AASXC,MAAAA,KAAK,EAALA,KATW;AAUXS,MAAAA,IAAI,EAAEd,KAVK;AAWXe,MAAAA,UAAU,EAAE,KAXD;AAYXhE,MAAAA,WAAW,EAAE6D,WAZF;AAaXI,MAAAA,QAAQ,EAAEzD,GAAG,CAAC0D,IAAJ,KAAa,QAbZ;AAcXtD,MAAAA,WAAW,EAAXA,WAdW;AAeX8C,MAAAA,8BAA8B,EAA9BA,8BAfW;AAgBXC,MAAAA,QAAQ,EAARA,QAhBW;AAiBXnD,MAAAA,GAAG,EAAHA,GAjBW;AAkBXoD,MAAAA,aAAa,EAAbA;AAlBW,KAAb;AAqBA,QAAMO,WAAW,GAAG7D,QAAQ,CAACuC,kBAAD,EAAqBtC,OAArB,EAA8BC,GAA9B,CAA5B;AACA,QAAMZ,OAAO,GAAGuB,gBAAgB,CAACgD,WAAW,CAACvE,OAAb,CAAhC;;AAEA,QAAIY,GAAG,CAAC0D,IAAJ,KAAa,MAAjB,EAAyB;AACvB;AACAJ,MAAAA,IAAI,CAACM,eAAL,GAAuBxE,OAAO,CAACE,GAAR,CAAY,iBAA8B;AAAA,YAA3BE,WAA2B,SAA3BA,WAA2B;AAAA,YAAXyC,IAAW;AAC/D,+CAAYA,IAAZ;AAAkBT,UAAAA,WAAW,EAAE;AAA/B;AACD,OAFsB,CAAvB;AAIA8B,MAAAA,IAAI,CAAChB,kBAAL,GAA0B,KAA1B;AACD;;AAED,QAAItC,GAAG,CAAC0D,IAAJ,KAAa,UAAjB,EAA6B;AAAA;;AAC3BJ,MAAAA,IAAI,CAACM,eAAL,GAAuBxE,OAAvB;AACAkE,MAAAA,IAAI,CAACrD,aAAL,GAAqBA,aAArB;AACAqD,MAAAA,IAAI,CAACE,UAAL,GAAkB,CAAC,EAACvD,aAAD,aAACA,aAAD,sCAACA,aAAa,CAAEC,IAAhB,gDAAC,oBAAqBuB,MAAtB,CAAD,IAAiCkC,WAAW,CAAC7C,KAAZ,KAAsB,CAAzE;AACAwC,MAAAA,IAAI,CAAChB,kBAAL,GAA0B,KAA1B;AACAgB,MAAAA,IAAI,CAACO,aAAL,GAAqB,IAArB;AACD;;AAED,QAAI7D,GAAG,CAAC8D,IAAJ,KAAa,YAAb,KAA8B9D,GAAG,CAAC0D,IAAJ,KAAa,MAAb,IAAuB1D,GAAG,CAAC0D,IAAJ,KAAa,UAAlE,CAAJ,EAAmF;AACjFJ,MAAAA,IAAI,CAACT,SAAL,GAAiBE,gBAAgB,GAAGF,SAAH,GAAe,IAAhD;AACAS,MAAAA,IAAI,CAACN,mBAAL,GAA2BC,0BAA0B,GAAGD,mBAAH,GAAyB,IAA9E;AACD,KAHD,MAGO;AACLM,MAAAA,IAAI,CAACT,SAAL,GAAiB,IAAjB;AACAS,MAAAA,IAAI,CAACN,mBAAL,GAA2B,IAA3B;AACD;;AAEDpE,IAAAA,GAAG,CAAC,QAAD,EAAW0E,IAAX,CAAH;AACAlB,IAAAA,OAAO,CAACkB,IAAD,CAAP;AACD,GA5EM,CAAP;AA6ED;;AAEM,SAASS,OAAT,CAAiB7B,KAAjB,EAAwBnC,OAAxB,EAAiCC,GAAjC,EAAsC;AAC3C,SAAO,IAAImC,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC9B,QAAMuB,WAAW,GAAG7D,QAAQ,CAACoC,KAAD,EAAQnC,OAAR,EAAiBC,GAAjB,CAA5B;AACA,QAAMY,MAAM,GAAG;AACbE,MAAAA,KAAK,EAAE6C,WAAW,CAAC7C,KADN;AAEbkD,MAAAA,KAAK,EAAE,CAACjE,OAAD,IAAY,yBAAQA,OAAR;AAFN,KAAf;;AAIA,QAAIC,GAAG,CAAC6B,UAAJ,IAAkB7B,GAAG,CAAC6B,UAAJ,CAAeC,sBAArC,EAA6D;AAC3DlB,MAAAA,MAAM,CAACiB,UAAP,GAAoB;AAAEoC,QAAAA,eAAe,EAAEN,WAAW,CAACtD;AAA/B,OAApB;AACD;;AACD+B,IAAAA,OAAO,CAACxB,MAAD,CAAP;AACD,GAVM,CAAP;AAWD;;AAEM,IAAMsD,4BAA4B,GAAG,SAA/BA,4BAA+B,CAACtE,QAAD,EAAWI,GAAX,EAAmB;AAC7D,SAAO,IAAImC,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC9B,QAAIpC,GAAG,CAAC0D,IAAJ,KAAa,UAAb,IAA2B1D,GAAG,CAAC8D,IAAJ,KAAa,YAA5C,EAA0D;AACxD,UAAQ7D,aAAR,GAA0BL,QAA1B,CAAQK,aAAR;AAEA,UAAIb,OAAO,GAAGa,aAAa,IAAIA,aAAa,CAACC,IAA7C,CAHwD,CAKxD;;AACA,UAAIF,GAAG,CAAC0D,IAAJ,KAAa,QAAjB,EAA2B;AACzB,YAAQxD,IAAR,GAAiBN,QAAjB,CAAQM,IAAR;AAEAd,QAAAA,OAAO,GAAG,CAAEa,aAAa,IAAIA,aAAa,CAACC,IAAhC,IAAyC,EAA1C,EAA8CZ,GAA9C,CAAkD,UAACC,MAAD,EAAS0B,KAAT,EAAmB;AAC7E,iDACKf,IAAI,CAACe,KAAD,CADT,GAEK1B,MAFL;AAID,SALS,CAAV;AAMD;;AAED6C,MAAAA,OAAO,CAAC;AACN7C,QAAAA,MAAM,EAAEH,OADF;AAEN+E,QAAAA,EAAE,EAAE;AAFE,OAAD,CAAP;AAID,KArBD,MAqBO;AACL,aAAO/B,OAAO,CAAC,IAAD,CAAd;AACD;AACF,GAzBM,CAAP;AA0BD,CA3BM,C,CA6BP;;;;;AACA,IAAMgC,YAAY,GAAG,SAAfA,YAAe,CAACC,IAAD;AAAA,SAAU,CAACA,IAAI,IAAI,EAAT,EAAaC,UAAb,CAAwB,UAAxB,EAAoC,EAApC,CAAV;AAAA,CAArB,C,CAEA;;;AACA,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAACF,IAAD;AAAA,SAAU,CAACA,IAAI,IAAI,EAAT,EAAaG,OAAb,CAAqB,oCAArB,EAA2D,EAA3D,CAAV;AAAA,CAAnB;;AAEO,IAAMC,QAAQ,GAAG,SAAXA,QAAW,GAA6B;AAAA,MAA5BvC,KAA4B,uEAApB,EAAoB;AAAA,MAAhBwC,MAAgB,uEAAP,EAAO;;AACnD,cAAgCxC,KAAK,IAAI,EAAzC;AAAA,MAAQjC,aAAR,SAAQA,aAAR;AAAA,MAAuBC,IAAvB,SAAuBA,IAAvB;;AACA,cAA8BD,aAAa,IAAI,EAA/C;AAAA,MAAc0E,WAAd,SAAQzE,IAAR;;AACA,MAAM6B,UAAU,GAAG4C,WAAW,IAAI,EAAlC;AAEA,MAAMC,MAAM,GAAG,EAAf;AACA,MAAMC,mBAAmB,GAAG,EAA5B;AACA,MAAMC,cAAc,GAAG,EAAvB;AAEA,GAAC,qBAAD,EAAwB,QAAxB,EAAkC,WAAlC,EAA+CzD,OAA/C,CAAuD,UAAC0D,KAAD,EAAW;AAAA;;AAChE,QAAI,iBAAAL,MAAM,CAACK,KAAD,CAAN,wDAAeC,QAAf,IAA2B,CAACT,UAAU,CAACrC,KAAK,CAAC6C,KAAD,CAAN,CAA1C,EAA0D;AACxDH,MAAAA,MAAM,CAACG,KAAD,CAAN,GAAgB,yBAAhB;AACD;AACF,GAJD;AAMAhD,EAAAA,UAAU,CAACV,OAAX,CAAmB,UAAC4D,QAAD,EAAWhE,KAAX,EAAqB;AACtC,QAAQvB,KAAR,GAAkBuF,QAAlB,CAAQvF,KAAR;;AAEA,QAAI,CAAC0E,YAAY,CAAC1E,KAAD,CAAjB,EAA0B;AACxBoF,MAAAA,cAAc,CAAC7D,KAAD,CAAd,GAAwB,+BAAxB;AACD,KAFD,MAEO;AACL,UAAMiE,eAAe,GAAGnD,UAAU,CAACoD,IAAX,CAAgB,UAACC,CAAD,EAAIC,CAAJ;AAAA,eAAUD,CAAC,CAAC1F,KAAF,KAAYA,KAAZ,IAAqBuB,KAAK,KAAKoE,CAAzC;AAAA,OAAhB,CAAxB;;AAEA,UAAIH,eAAJ,EAAqB;AACnBJ,QAAAA,cAAc,CAAC7D,KAAD,CAAd,GAAwB,mCAAxB;AACD;AACF;AACF,GAZD;;AAcA,MAAIc,UAAU,CAACN,MAAX,GAAoB,CAApB,IAAyBM,UAAU,CAACN,MAAX,GAAoB,EAAjD,EAAqD;AACnDoD,IAAAA,mBAAmB,CAACS,eAApB,GAAsC,gEAAtC;AACD,GAFD,MAEO,IACL,yBACEpF,IAAI,CAACZ,GAAL,CAAS,UAAC2F,QAAD;AAAA,WAAc,sBAAKA,QAAL,EAAe,OAAf,EAAwB,OAAxB,CAAd;AAAA,GAAT,CADF,EAEEN,WAAW,CAACrF,GAAZ,CAAgB,UAAC2F,QAAD;AAAA,WAAc,sBAAKA,QAAL,EAAe,OAAf,EAAwB,OAAxB,CAAd;AAAA,GAAhB,CAFF,CADK,EAKL;AACAJ,IAAAA,mBAAmB,CAACU,cAApB,GAAqC,qEAArC;AACD;;AAED,MAAI,CAAC,yBAAQT,cAAR,CAAL,EAA8B;AAC5BF,IAAAA,MAAM,CAACE,cAAP,GAAwBA,cAAxB;AACD;;AAED,MAAI,CAAC,yBAAQD,mBAAR,CAAL,EAAmC;AACjCD,IAAAA,MAAM,CAACC,mBAAP,GAA6BA,mBAA7B;AACD;;AAED,SAAOD,MAAP;AACD,CAjDM","sourcesContent":["import debug from 'debug';\nimport isEqual from 'lodash/isEqual';\nimport isEmpty from 'lodash/isEmpty';\nimport pick from 'lodash/pick';\nimport defaults from './defaults';\n\nimport { partialScoring } from '@pie-lib/pie-toolbox/controller-utils';\n\nconst log = debug('@pie-element:graphing:controller');\n\nconst lowerCase = (string) => (string || '').toLowerCase();\n\nexport const checkLabelsEquality = (givenAnswerLabel, correctAnswerLabel) =>\n lowerCase(givenAnswerLabel) === lowerCase(correctAnswerLabel);\n\nexport const setCorrectness = (answers, partialScoring) =>\n answers\n ? answers.map((answer) => ({\n ...answer,\n correctness: {\n value: partialScoring ? 'incorrect' : 'correct',\n label: partialScoring ? 'incorrect' : 'correct',\n },\n }))\n : [];\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\nexport const getScore = (question, session, env = {}) => {\n const { correctAnswer, data: initialData = [], scoringType } = question;\n let correctResponses = [];\n\n const isPartialScoring = partialScoring.enabled(\n { partialScoring: scoringType !== undefined ? scoringType === 'partial scoring' : scoringType },\n env,\n );\n\n const { data: correctAnswers = [] } = correctAnswer || {};\n const defaultAnswers = filterCategories(initialData);\n\n let answers = setCorrectness((session && session.answer) || defaultAnswers, isPartialScoring);\n\n let result = 0;\n\n if (isPartialScoring) {\n // if score type is \"partial scoring\"\n // maxScore is calculated based on the correct response\n // score is calculated based on the given response\n let maxScore = 0;\n let score = 0;\n\n const scoreForLabelAndValueEditable = (answer, corrAnswer) => {\n const { value, label, index } = answer;\n const valueIsCorrect = value === corrAnswer.value;\n const labelIsCorrect = checkLabelsEquality(label, corrAnswer.label);\n maxScore += 2;\n\n if (valueIsCorrect) {\n score += 1;\n answer.correctness.value = 'correct';\n }\n\n if (labelIsCorrect) {\n score += 1;\n answer.correctness.label = 'correct';\n }\n\n if (valueIsCorrect && labelIsCorrect) {\n correctResponses.push({ label: label, index: index });\n }\n };\n\n // if given answer has more categories than the correct answers, the \"extra\" will be ignored\n correctAnswers.forEach((corrAnswer, index) => {\n const defaultAnswer = defaultAnswers[index];\n const answer = answers[index];\n\n // if there is a corresponding category at the same position in the given answer\n if (answer) {\n // if there is a corresponding category at the same position in the default answer\n if (defaultAnswer) {\n // if category's label (in default answer) was not editable\n // it means that this category values only one point (only the value can be changed)\n if (!defaultAnswer.editable && answer.interactive) {\n maxScore += 1;\n\n if (answer.value === corrAnswer.value) {\n score += 1;\n answer.correctness.value = 'correct';\n correctResponses.push({ label: answer.label, index: index });\n }\n answer.correctness.label = 'correct';\n\n // if category's label (in default answer) was editable\n // it means that this category values 2 points (both label and value can be changed)\n } else if (defaultAnswer.editable && answer.interactive) {\n scoreForLabelAndValueEditable(answer, corrAnswer);\n } else if (!answer.interactive) {\n answer.correctness.value = 'correct';\n answer.correctness.label = 'correct';\n correctResponses.push({ label: answer.label, index: index });\n }\n } else {\n // if there is not a corresponding category at the same position in the default answer\n scoreForLabelAndValueEditable(answer, corrAnswer);\n }\n } else {\n // if there is not a corresponding category at the same position in the given answer\n // it means that the given answer has less categories than the correct answer\n maxScore += 2;\n }\n });\n\n result = maxScore ? score / maxScore : 0;\n } else {\n // if scoring type is \"all or nothing\"\n // the length on correct answers and length of given answer have to match\n result = correctAnswers.length === answers.length ? 1 : 0;\n\n if (result) {\n // if there is at least one difference between the correct answer and the given answer\n // the result will be incorrect\n correctAnswers.forEach((corrAnswer, index) => {\n const { value, label } = answers[index];\n\n const valueIsCorrect = value === corrAnswer.value;\n const labelIsCorrect = lowerCase(label) === lowerCase(corrAnswer.label);\n\n if (!valueIsCorrect) {\n result = 0;\n answers[index].correctness.value = 'incorrect';\n }\n if (!labelIsCorrect) {\n result = 0;\n answers[index].correctness.label = 'incorrect';\n }\n if (valueIsCorrect && labelIsCorrect) {\n correctResponses.push({ label: label, index: index });\n }\n });\n } else {\n answers = [\n ...answers.slice(0, correctAnswers.length),\n ...setCorrectness(answers.slice(correctAnswers.length), true),\n ];\n }\n }\n\n const score = {\n score: parseFloat(result.toFixed(2)),\n answers,\n };\n\n if (env.extraProps && env.extraProps.correctResponseEnabled) {\n score.correctResponses = correctResponses;\n }\n\n return score;\n};\n\n// eslint-disable-next-line no-unused-vars\nexport const filterCategories = (categories) => (categories ? categories.map(({ deletable, ...rest }) => rest) : []);\n\nexport function model(question, session, env) {\n return new Promise((resolve) => {\n const normalizedQuestion = normalize(question);\n const {\n addCategoryEnabled,\n chartType,\n data,\n domain,\n graph,\n prompt,\n promptEnabled,\n range,\n rationale,\n title,\n rationaleEnabled,\n teacherInstructions,\n teacherInstructionsEnabled,\n correctAnswer,\n scoringType,\n studentNewCategoryDefaultLabel,\n language,\n extraCSSRules,\n } = normalizedQuestion;\n\n const correctInfo = { correctness: 'incorrect', score: '0%' };\n\n const base = {\n addCategoryEnabled,\n chartType,\n data: filterCategories(data),\n domain,\n graph,\n prompt: promptEnabled ? prompt : null,\n range,\n rationale,\n title,\n size: graph,\n showToggle: false,\n correctness: correctInfo,\n disabled: env.mode !== 'gather',\n scoringType,\n studentNewCategoryDefaultLabel,\n language,\n env,\n extraCSSRules,\n };\n\n const scoreObject = getScore(normalizedQuestion, session, env);\n const answers = filterCategories(scoreObject.answers);\n\n if (env.mode === 'view') {\n // eslint-disable-next-line no-unused-vars\n base.correctedAnswer = answers.map(({ correctness, ...rest }) => {\n return { ...rest, interactive: false };\n });\n\n base.addCategoryEnabled = false;\n }\n\n if (env.mode === 'evaluate') {\n base.correctedAnswer = answers;\n base.correctAnswer = correctAnswer;\n base.showToggle = !!correctAnswer?.data?.length && scoreObject.score !== 1;\n base.addCategoryEnabled = false;\n base.showKeyLegend = true;\n }\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n base.rationale = rationaleEnabled ? rationale : null;\n base.teacherInstructions = teacherInstructionsEnabled ? teacherInstructions : null;\n } else {\n base.rationale = null;\n base.teacherInstructions = null;\n }\n\n log('base: ', base);\n resolve(base);\n });\n}\n\nexport function outcome(model, session, env) {\n return new Promise((resolve) => {\n const scoreObject = getScore(model, session, env);\n const result = {\n score: scoreObject.score,\n empty: !session || isEmpty(session),\n };\n if (env.extraProps && env.extraProps.correctResponseEnabled) {\n result.extraProps = { correctResponse: scoreObject.correctResponses };\n }\n resolve(result);\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { correctAnswer } = question;\n\n let answers = correctAnswer && correctAnswer.data;\n\n // for IBX preview mode\n if (env.mode === 'gather') {\n const { data } = question;\n\n answers = ((correctAnswer && correctAnswer.data) || []).map((answer, index) => {\n return {\n ...data[index],\n ...answer,\n };\n });\n }\n\n resolve({\n answer: answers,\n id: '1',\n });\n } else {\n return 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, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { correctAnswer, data } = model || {};\n const { data: correctData } = correctAnswer || {};\n const categories = correctData || [];\n\n const errors = {};\n const correctAnswerErrors = {};\n const categoryErrors = {};\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 categories.forEach((category, index) => {\n const { label } = category;\n\n if (!getInnerText(label)) {\n categoryErrors[index] = 'Content should not be empty. ';\n } else {\n const identicalAnswer = categories.some((c, i) => c.label === label && index !== i);\n\n if (identicalAnswer) {\n categoryErrors[index] = 'Category names should be unique. ';\n }\n }\n });\n\n if (categories.length < 1 || categories.length > 20) {\n correctAnswerErrors.categoriesError = 'The correct answer should include between 1 and 20 categories.';\n } else if (\n isEqual(\n data.map((category) => pick(category, 'value', 'label')),\n correctData.map((category) => pick(category, 'value', 'label')),\n )\n ) {\n correctAnswerErrors.identicalError = 'Correct answer should not be identical to the chart’s initial state';\n }\n\n if (!isEmpty(categoryErrors)) {\n errors.categoryErrors = categoryErrors;\n }\n\n if (!isEmpty(correctAnswerErrors)) {\n errors.correctAnswerErrors = correctAnswerErrors;\n }\n\n return errors;\n};\n"],"file":"index.js"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pie-element/charting-controller",
3
3
  "private": true,
4
- "version": "5.2.10",
4
+ "version": "5.3.0",
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": "2.19.0",
12
+ "@pie-lib/pie-toolbox": "2.22.0",
13
13
  "debug": "^4.1.1",
14
14
  "lodash": "^4.17.15"
15
15
  },
package/lib/main.js CHANGED
@@ -107,7 +107,8 @@ var Main = /*#__PURE__*/function (_React$Component) {
107
107
  rationale = model.rationale,
108
108
  correctAnswer = model.correctAnswer,
109
109
  language = model.language,
110
- env = model.env;
110
+ env = model.env,
111
+ showKeyLegend = model.showKeyLegend;
111
112
  var correctedAnswer = model.correctedAnswer,
112
113
  extraCSSRules = model.extraCSSRules;
113
114
  var correctData = ((correctAnswer === null || correctAnswer === void 0 ? void 0 : correctAnswer.data) || []).map(function (data) {
@@ -178,6 +179,8 @@ var Main = /*#__PURE__*/function (_React$Component) {
178
179
  categoryDefaultLabel: studentNewCategoryDefaultLabel,
179
180
  language: language,
180
181
  labelsPlaceholders: {}
182
+ }), !showingCorrect && showKeyLegend && /*#__PURE__*/_react["default"].createElement(_charting.KeyLegend, {
183
+ language: language
181
184
  }), showRationale && /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
182
185
  labels: {
183
186
  hidden: 'Show Rationale',
package/lib/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/main.jsx"],"names":["Main","props","data","setState","categories","onAnswersChange","showingCorrect","state","model","prevProps","classes","teacherInstructions","prompt","chartType","size","domain","range","title","addCategoryEnabled","studentNewCategoryDefaultLabel","showToggle","rationale","correctAnswer","language","env","correctedAnswer","extraCSSRules","correctData","map","interactive","editable","mode","showRationale","showTeacherInstructions","mainContainer","collapsible","hidden","visible","toggleCorrect","chart","chartTypes","Bar","Histogram","LineDot","LineCross","DotPlot","LinePlot","changeData","React","Component","PropTypes","object","isRequired","func","array","styles","theme","color","text","backgroundColor","background","overflowX","overflowY","marginTop","spacing","unit","marginBottom"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { color, Collapsible, hasText, PreviewPrompt, UiLayout, hasMedia } from '@pie-lib/pie-toolbox/render-ui';\nimport { Chart, chartTypes } from '@pie-lib/pie-toolbox/charting';\nimport isEqual from 'lodash/isEqual';\nimport { CorrectAnswerToggle } from '@pie-lib/pie-toolbox/correct-answer-toggle';\n\nexport class Main extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n model: PropTypes.object.isRequired,\n onAnswersChange: PropTypes.func,\n categories: PropTypes.array,\n };\n\n static defaultProps = { classes: {} };\n\n constructor(props) {\n super(props);\n\n this.state = {\n categories: props.categories || props.model.data,\n showingCorrect: false,\n };\n }\n\n componentDidUpdate(prevProps) {\n if (!isEqual(prevProps.categories, this.props.categories)) {\n this.setState({ categories: this.props.categories });\n } else if (!isEqual(prevProps.model.data, this.props.model.data)) {\n this.setState({ categories: this.props.model.data });\n }\n }\n\n changeData = (data) =>\n this.setState(\n {\n categories: data,\n },\n () => this.props.onAnswersChange(data),\n );\n\n toggleCorrect = (showingCorrect) => this.setState({ showingCorrect });\n\n render() {\n const { categories, showingCorrect } = this.state;\n const { model, classes } = this.props;\n const {\n teacherInstructions,\n prompt,\n chartType,\n size,\n domain,\n range,\n title,\n addCategoryEnabled,\n studentNewCategoryDefaultLabel,\n showToggle,\n rationale,\n correctAnswer,\n language,\n env,\n } = model;\n\n let { correctedAnswer, extraCSSRules } = model;\n\n const correctData = (correctAnswer?.data || []).map((data) => ({ ...data, interactive: false, editable: false }));\n const { mode } = env || {};\n // need to make labels disabled in view mode PD-3928\n if (mode === 'view') {\n correctedAnswer = (correctedAnswer || []).map((data) => ({ ...data, editable: false }));\n }\n\n const showRationale = model.rationale && (hasText(model.rationale) || hasMedia(model.rationale));\n const showTeacherInstructions = model.teacherInstructions && (hasText(model.teacherInstructions) || hasMedia(model.teacherInstructions));\n\n return (\n <UiLayout extraCSSRules={extraCSSRules} className={classes.mainContainer}>\n {showTeacherInstructions && (\n <Collapsible\n className={classes.collapsible}\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n <PreviewPrompt prompt={teacherInstructions} />\n </Collapsible>\n )}\n\n {prompt && <PreviewPrompt className=\"prompt\" prompt={prompt} />}\n\n <CorrectAnswerToggle\n show={showToggle}\n toggled={showingCorrect}\n onToggle={this.toggleCorrect}\n language={language}\n />\n\n {showingCorrect && showToggle ? (\n <Chart\n className={classes.chart}\n chartType={chartType}\n size={size}\n domain={domain}\n range={range}\n charts={[\n chartTypes.Bar(),\n chartTypes.Histogram(),\n chartTypes.LineDot(),\n chartTypes.LineCross(),\n chartTypes.DotPlot(),\n chartTypes.LinePlot(),\n ]}\n data={correctData || categories}\n title={title}\n onDataChange={this.changeData}\n addCategoryEnabled={false}\n categoryDefaultLabel={studentNewCategoryDefaultLabel}\n language={language}\n labelsPlaceholders={{}}\n />\n ) : (\n <Chart\n className={classes.chart}\n chartType={chartType}\n size={size}\n domain={domain}\n range={range}\n charts={[\n chartTypes.Bar(),\n chartTypes.Histogram(),\n chartTypes.LineDot(),\n chartTypes.LineCross(),\n chartTypes.DotPlot(),\n chartTypes.LinePlot(),\n ]}\n data={correctedAnswer || categories}\n title={title}\n onDataChange={this.changeData}\n addCategoryEnabled={addCategoryEnabled}\n categoryDefaultLabel={studentNewCategoryDefaultLabel}\n language={language}\n labelsPlaceholders={{}}\n />\n )}\n\n {showRationale && (\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>\n <PreviewPrompt prompt={rationale} />\n </Collapsible>\n )}\n </UiLayout>\n );\n }\n}\n\nconst styles = (theme) => ({\n mainContainer: {\n color: color.text(),\n backgroundColor: color.background(),\n overflowX: 'scroll',\n overflowY: 'hidden',\n },\n chart: {\n marginTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n collapsible: {\n marginBottom: theme.spacing.unit * 2,\n },\n});\n\nexport default withStyles(styles)(Main);\n"],"file":"main.js"}
1
+ {"version":3,"sources":["../src/main.jsx"],"names":["Main","props","data","setState","categories","onAnswersChange","showingCorrect","state","model","prevProps","classes","teacherInstructions","prompt","chartType","size","domain","range","title","addCategoryEnabled","studentNewCategoryDefaultLabel","showToggle","rationale","correctAnswer","language","env","showKeyLegend","correctedAnswer","extraCSSRules","correctData","map","interactive","editable","mode","showRationale","showTeacherInstructions","mainContainer","collapsible","hidden","visible","toggleCorrect","chart","chartTypes","Bar","Histogram","LineDot","LineCross","DotPlot","LinePlot","changeData","React","Component","PropTypes","object","isRequired","func","array","styles","theme","color","text","backgroundColor","background","overflowX","overflowY","marginTop","spacing","unit","marginBottom"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { color, Collapsible, hasText, PreviewPrompt, UiLayout, hasMedia } from '@pie-lib/pie-toolbox/render-ui';\nimport { Chart, chartTypes, KeyLegend } from '@pie-lib/pie-toolbox/charting';\nimport isEqual from 'lodash/isEqual';\nimport { CorrectAnswerToggle } from '@pie-lib/pie-toolbox/correct-answer-toggle';\n\nexport class Main extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n model: PropTypes.object.isRequired,\n onAnswersChange: PropTypes.func,\n categories: PropTypes.array,\n };\n\n static defaultProps = { classes: {} };\n\n constructor(props) {\n super(props);\n\n this.state = {\n categories: props.categories || props.model.data,\n showingCorrect: false,\n };\n }\n\n componentDidUpdate(prevProps) {\n if (!isEqual(prevProps.categories, this.props.categories)) {\n this.setState({ categories: this.props.categories });\n } else if (!isEqual(prevProps.model.data, this.props.model.data)) {\n this.setState({ categories: this.props.model.data });\n }\n }\n\n changeData = (data) =>\n this.setState(\n {\n categories: data,\n },\n () => this.props.onAnswersChange(data),\n );\n\n toggleCorrect = (showingCorrect) => this.setState({ showingCorrect });\n\n render() {\n const { categories, showingCorrect } = this.state;\n const { model, classes } = this.props;\n const {\n teacherInstructions,\n prompt,\n chartType,\n size,\n domain,\n range,\n title,\n addCategoryEnabled,\n studentNewCategoryDefaultLabel,\n showToggle,\n rationale,\n correctAnswer,\n language,\n env,\n showKeyLegend,\n } = model;\n\n let { correctedAnswer, extraCSSRules } = model;\n\n const correctData = (correctAnswer?.data || []).map((data) => ({ ...data, interactive: false, editable: false }));\n const { mode } = env || {};\n // need to make labels disabled in view mode PD-3928\n if (mode === 'view') {\n correctedAnswer = (correctedAnswer || []).map((data) => ({ ...data, editable: false }));\n }\n\n const showRationale = model.rationale && (hasText(model.rationale) || hasMedia(model.rationale));\n const showTeacherInstructions = model.teacherInstructions && (hasText(model.teacherInstructions) || hasMedia(model.teacherInstructions));\n\n return (\n <UiLayout extraCSSRules={extraCSSRules} className={classes.mainContainer}>\n {showTeacherInstructions && (\n <Collapsible\n className={classes.collapsible}\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n <PreviewPrompt prompt={teacherInstructions} />\n </Collapsible>\n )}\n\n {prompt && <PreviewPrompt className=\"prompt\" prompt={prompt} />}\n\n <CorrectAnswerToggle\n show={showToggle}\n toggled={showingCorrect}\n onToggle={this.toggleCorrect}\n language={language}\n />\n\n {showingCorrect && showToggle ? (\n <Chart\n className={classes.chart}\n chartType={chartType}\n size={size}\n domain={domain}\n range={range}\n charts={[\n chartTypes.Bar(),\n chartTypes.Histogram(),\n chartTypes.LineDot(),\n chartTypes.LineCross(),\n chartTypes.DotPlot(),\n chartTypes.LinePlot(),\n ]}\n data={correctData || categories}\n title={title}\n onDataChange={this.changeData}\n addCategoryEnabled={false}\n categoryDefaultLabel={studentNewCategoryDefaultLabel}\n language={language}\n labelsPlaceholders={{}}\n />\n ) : (\n <Chart\n className={classes.chart}\n chartType={chartType}\n size={size}\n domain={domain}\n range={range}\n charts={[\n chartTypes.Bar(),\n chartTypes.Histogram(),\n chartTypes.LineDot(),\n chartTypes.LineCross(),\n chartTypes.DotPlot(),\n chartTypes.LinePlot(),\n ]}\n data={correctedAnswer || categories}\n title={title}\n onDataChange={this.changeData}\n addCategoryEnabled={addCategoryEnabled}\n categoryDefaultLabel={studentNewCategoryDefaultLabel}\n language={language}\n labelsPlaceholders={{}}\n />\n )}\n {!showingCorrect && showKeyLegend && (<KeyLegend language={language}></KeyLegend>)}\n {showRationale && (\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>\n <PreviewPrompt prompt={rationale} />\n </Collapsible>\n )}\n </UiLayout>\n );\n }\n}\n\nconst styles = (theme) => ({\n mainContainer: {\n color: color.text(),\n backgroundColor: color.background(),\n overflowX: 'scroll',\n overflowY: 'hidden',\n },\n chart: {\n marginTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n collapsible: {\n marginBottom: theme.spacing.unit * 2,\n },\n});\n\nexport default withStyles(styles)(Main);\n"],"file":"main.js"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public"
5
5
  },
6
6
  "repository": "pie-framework/pie-elements",
7
- "version": "8.6.11-next.9+8f374417b",
7
+ "version": "8.7.1-next.0+0ec7c6b8d",
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": "2.19.0",
15
+ "@pie-lib/pie-toolbox": "2.22.0",
16
16
  "classnames": "^2.2.5",
17
17
  "debug": "^4.1.1",
18
18
  "lodash": "^4.17.15",
@@ -21,7 +21,7 @@
21
21
  },
22
22
  "author": "",
23
23
  "license": "ISC",
24
- "gitHead": "8f374417b41ab6674db353d0d997945df259d61f",
24
+ "gitHead": "0ec7c6b8d1c811b20dbf32671d032f1e5bee1fb6",
25
25
  "main": "lib/index.js",
26
26
  "module": "src/index.js"
27
27
  }