@pie-element/charting 8.6.7-next.6 → 8.6.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/CHANGELOG.md CHANGED
@@ -3,6 +3,22 @@
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.7](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting@8.6.6...@pie-element/charting@8.6.7) (2025-06-05)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * update pie-lib/pie-toolbox PD-4888, PD-3542, PD-4873, PD-4679 ([9c3bdef](https://github.com/pie-framework/pie-elements/commit/9c3bdef1b68f128ecc6338ef74f25fb74c482aa6))
12
+ * **match:** add has media verid for rationale and teacher instr pie-elements PD-3756 ([7d1f431](https://github.com/pie-framework/pie-elements/commit/7d1f4310e128ac9312859c96ad5c87300aa336c3))
13
+ * add validation for audio content PD-4123 ([f0ce3f1](https://github.com/pie-framework/pie-elements/commit/f0ce3f19a12fd4cfe2d2159ca4af801d866dc8a9))
14
+ * update pie-lib pie-toolbox PD-3756 and revert changes for PD-4810 ([1e3030b](https://github.com/pie-framework/pie-elements/commit/1e3030bfdb13d0cce7b54ce0e9a109446c5ec2a2))
15
+ * update pie-lib-pie-toolbox PD-4810 ([6c81afc](https://github.com/pie-framework/pie-elements/commit/6c81afc6a8ad41e001bafb0bd1563164e9f32a10))
16
+ * update pie-lib-pie-toolbox PD-4810 ([0f9dd82](https://github.com/pie-framework/pie-elements/commit/0f9dd827c474e87770fd3bd146d870dd77d296df))
17
+
18
+
19
+
20
+
21
+
6
22
  ## [8.6.6](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting@8.6.5...@pie-element/charting@8.6.6) (2025-05-22)
7
23
 
8
24
 
@@ -3,6 +3,20 @@
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.5.7](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-configure@8.5.6...@pie-element/charting-configure@8.5.7) (2025-06-05)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * update pie-lib pie-toolbox PD-3756 and revert changes for PD-4810 ([1e3030b](https://github.com/pie-framework/pie-elements/commit/1e3030bfdb13d0cce7b54ce0e9a109446c5ec2a2))
12
+ * update pie-lib-pie-toolbox PD-4810 ([6c81afc](https://github.com/pie-framework/pie-elements/commit/6c81afc6a8ad41e001bafb0bd1563164e9f32a10))
13
+ * update pie-lib-pie-toolbox PD-4810 ([0f9dd82](https://github.com/pie-framework/pie-elements/commit/0f9dd827c474e87770fd3bd146d870dd77d296df))
14
+ * update pie-lib/pie-toolbox PD-4888, PD-3542, PD-4873, PD-4679 ([9c3bdef](https://github.com/pie-framework/pie-elements/commit/9c3bdef1b68f128ecc6338ef74f25fb74c482aa6))
15
+
16
+
17
+
18
+
19
+
6
20
  ## [8.5.6](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-configure@8.5.5...@pie-element/charting-configure@8.5.6) (2025-05-22)
7
21
 
8
22
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pie-element/charting-configure",
3
3
  "private": true,
4
- "version": "8.5.6",
4
+ "version": "8.5.7",
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.17.3",
12
+ "@pie-lib/pie-toolbox": "2.17.6",
13
13
  "classnames": "^2.2.5",
14
14
  "debug": "^4.1.1",
15
15
  "prop-types": "^15.6.2",
@@ -3,6 +3,21 @@
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.2.7](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-controller@5.2.6...@pie-element/charting-controller@5.2.7) (2025-06-05)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * add validation for audio content PD-4123 ([f0ce3f1](https://github.com/pie-framework/pie-elements/commit/f0ce3f19a12fd4cfe2d2159ca4af801d866dc8a9))
12
+ * update pie-lib pie-toolbox PD-3756 and revert changes for PD-4810 ([1e3030b](https://github.com/pie-framework/pie-elements/commit/1e3030bfdb13d0cce7b54ce0e9a109446c5ec2a2))
13
+ * update pie-lib-pie-toolbox PD-4810 ([6c81afc](https://github.com/pie-framework/pie-elements/commit/6c81afc6a8ad41e001bafb0bd1563164e9f32a10))
14
+ * update pie-lib-pie-toolbox PD-4810 ([0f9dd82](https://github.com/pie-framework/pie-elements/commit/0f9dd827c474e87770fd3bd146d870dd77d296df))
15
+ * update pie-lib/pie-toolbox PD-4888, PD-3542, PD-4873, PD-4679 ([9c3bdef](https://github.com/pie-framework/pie-elements/commit/9c3bdef1b68f128ecc6338ef74f25fb74c482aa6))
16
+
17
+
18
+
19
+
20
+
6
21
  ## [5.2.6](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-controller@5.2.5...@pie-element/charting-controller@5.2.6) (2025-05-22)
7
22
 
8
23
 
@@ -355,11 +355,11 @@ exports.createCorrectResponseSession = createCorrectResponseSession;
355
355
 
356
356
  var getInnerText = function getInnerText(html) {
357
357
  return (html || '').replaceAll(/<[^>]*>/g, '');
358
- }; // remove all html tags except img and iframe
358
+ }; // remove all html tags except img, iframe and source tag for audio
359
359
 
360
360
 
361
361
  var getContent = function getContent(html) {
362
- return (html || '').replace(/(<(?!img|iframe)([^>]+)>)/gi, '');
362
+ return (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');
363
363
  };
364
364
 
365
365
  var validate = function validate() {
@@ -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 and iframe\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe)([^>]+)>)/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","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,7 +1,7 @@
1
1
  {
2
2
  "name": "@pie-element/charting-controller",
3
3
  "private": true,
4
- "version": "5.2.6",
4
+ "version": "5.2.7",
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.17.3",
12
+ "@pie-lib/pie-toolbox": "2.17.6",
13
13
  "debug": "^4.1.1",
14
14
  "lodash": "^4.17.15"
15
15
  },
package/lib/main.js CHANGED
@@ -129,10 +129,12 @@ var Main = /*#__PURE__*/function (_React$Component) {
129
129
  });
130
130
  }
131
131
 
132
+ var showRationale = model.rationale && ((0, _renderUi.hasText)(model.rationale) || (0, _renderUi.hasMedia)(model.rationale));
133
+ var showTeacherInstructions = model.teacherInstructions && ((0, _renderUi.hasText)(model.teacherInstructions) || (0, _renderUi.hasMedia)(model.teacherInstructions));
132
134
  return /*#__PURE__*/_react["default"].createElement(_renderUi.UiLayout, {
133
135
  extraCSSRules: extraCSSRules,
134
136
  className: classes.mainContainer
135
- }, teacherInstructions && (0, _renderUi.hasText)(teacherInstructions) && /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
137
+ }, showTeacherInstructions && /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
136
138
  className: classes.collapsible,
137
139
  labels: {
138
140
  hidden: 'Show Teacher Instructions',
@@ -176,7 +178,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
176
178
  categoryDefaultLabel: studentNewCategoryDefaultLabel,
177
179
  language: language,
178
180
  labelsPlaceholders: {}
179
- }), rationale && (0, _renderUi.hasText)(rationale) && /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
181
+ }), showRationale && /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
180
182
  labels: {
181
183
  hidden: 'Show Rationale',
182
184
  visible: 'Hide 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","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 } 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 return (\n <UiLayout extraCSSRules={extraCSSRules} className={classes.mainContainer}>\n {teacherInstructions && hasText(teacherInstructions) && (\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 {rationale && hasText(rationale) && (\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","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"}
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.7-next.6+e5b8139f0",
7
+ "version": "8.6.7",
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.17.3",
15
+ "@pie-lib/pie-toolbox": "2.17.6",
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": "e5b8139f0c9d8b2a894051393c4d37fc33a09e84",
24
+ "gitHead": "148a29a55830c59e50e390d512b19d730e3d1663",
25
25
  "main": "lib/index.js",
26
26
  "module": "src/index.js"
27
27
  }