@pie-element/fraction-model 2.0.2-next.9 → 2.1.1-beta

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/fraction-model-chart.js"],"names":["styles","theme","pieChartParentDiv","display","gridTemplateColumns","gap","padding","barChartParentDiv","sectorOutline","outline","FractionModelChart","props","handleChartClick","chartIndex","sectorIndex","parseInt","existingIndex","clickedIndexArray","findIndex","item","id","newClickedIndexArray","currentItem","value","filter","_","index","slice","onChange","setClickedIndexArray","handleChartMouseEnter","setHoveredIndex","handleChartMouseLeave","getSectorFill","hoveredIndex","selection","split","map","Number","selectionId","selectionValue","clickedItem","find","hoveredId","hoveredValue","renderCustomizedLabelForPie","cx","cy","midAngle","outerRadius","RADIAN","Math","PI","radius","x","cos","y","sin","toFixed","barWithBorder","fill","width","height","classes","modelType","noOfModels","partsPerModel","showLabel","disabled","getBarFractionModel","parentData","i","data","name","j","push","barItems","forEach","Object","keys","key","getPieFractionModel","Array","from","length","pieItems","entry"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport { Bar, BarChart, Cell, LabelList, Pie, PieChart, YAxis } from 'recharts';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = (theme) => ({\n pieChartParentDiv: {\n display: 'grid',\n gridTemplateColumns: '200px 200px 200px',\n gap: '10px',\n padding: '5px 0',\n },\n barChartParentDiv: {\n display: 'grid',\n gridTemplateColumns: '200px 200px 200px',\n gap: '20px',\n padding: '10px 0',\n },\n sectorOutline: {\n outline: 'none',\n },\n});\n\nconst FractionModelChart = (props) => {\n /*\n * Function to handle click event on chart\n * @param chartIndex: index of the chart\n * @param sectorIndex: index of the sector\n * */\n const handleChartClick = (chartIndex, sectorIndex) => {\n if (typeof sectorIndex === 'string') {\n sectorIndex = parseInt(sectorIndex);\n }\n const existingIndex = clickedIndexArray.findIndex((item) => item.id === chartIndex);\n let newClickedIndexArray;\n if (existingIndex >= 0) {\n const currentItem = clickedIndexArray[existingIndex];\n if (currentItem.value === sectorIndex) {\n newClickedIndexArray = clickedIndexArray.filter((_, index) => index !== existingIndex);\n } else {\n newClickedIndexArray = [\n ...clickedIndexArray.slice(0, existingIndex),\n { id: chartIndex, value: sectorIndex },\n ...clickedIndexArray.slice(existingIndex + 1),\n ];\n }\n } else {\n newClickedIndexArray = [...clickedIndexArray, { id: chartIndex, value: sectorIndex }];\n }\n onChange(newClickedIndexArray);\n setClickedIndexArray(newClickedIndexArray);\n };\n\n /*\n * Function to handle mouse enter event on chart\n * @param chartIndex: index of the chart\n * @param sectorIndex: index of the sector\n * */\n const handleChartMouseEnter = (chartIndex, sectorIndex) => {\n setHoveredIndex(chartIndex + '-' + sectorIndex);\n };\n\n /*\n * Function to handle mouse leave event on chart\n * @param chartIndex: index of the chart\n * @param sectorIndex: index of the sector\n * */\n const handleChartMouseLeave = (chartIndex, sectorIndex) => {\n setHoveredIndex(null);\n };\n\n /*\n * Function to get fill color for sector\n * @param hoveredIndex: hovered index\n * @param selection: selected index\n * */\n const getSectorFill = (hoveredIndex, selection) => {\n const [selectionId, selectionValue] = selection.split('-').map(Number);\n // Check for a matching clicked item\n const clickedItem = clickedIndexArray.find((item) => item.id === selectionId);\n if (clickedItem && selectionValue <= clickedItem.value) {\n return 'rgb(60, 73, 150, 0.6)';\n }\n // Check for a matching hovered index\n if (hoveredIndex) {\n const [hoveredId, hoveredValue] = hoveredIndex.split('-').map(Number);\n if (hoveredId === selectionId && hoveredValue >= selectionValue) {\n return 'rgb(0, 0, 0, 0.25)';\n }\n }\n return '#FFFFFF';\n };\n\n /*\n * Function to render label for pie chart\n * @param props: properties of the label\n * */\n const renderCustomizedLabelForPie = (props) => {\n const { cx, cy, midAngle, outerRadius, index } = props;\n const RADIAN = Math.PI / 180;\n // const radius = outerRadius * 0.5; //If you want to show label inside the pie\n const radius = outerRadius * 1.13;\n const x = cx + radius * Math.cos(-midAngle * RADIAN);\n const y = cy + radius * Math.sin(-midAngle * RADIAN);\n return (\n <text x={x} y={y} fill=\"#000000\" textAnchor={x > cx ? 'start' : 'end'} dominantBaseline=\"central\">\n {`${(index + 1).toFixed(0)}`}\n </text>\n );\n };\n\n /*\n * Function to create and return component for bar chart\n * */\n const barWithBorder = () => {\n return (props) => {\n const { fill, x, y, width, height } = props;\n return (\n <g>\n <rect x={x} y={y} width={width} height={height} stroke={'#000000'} fill={fill} />\n </g>\n );\n };\n };\n\n const {\n classes,\n value = [],\n modelType = 'bar',\n noOfModels = 0,\n partsPerModel = 0,\n showLabel = false,\n disabled = false,\n onChange,\n } = props;\n const [hoveredIndex, setHoveredIndex] = useState(null);\n const [clickedIndexArray, setClickedIndexArray] = useState(value);\n\n /*\n * Function to create and return bar fraction model\n * */\n const getBarFractionModel = () => {\n const parentData = [];\n // Generate data for bar chart\n for (let i = 1; i < noOfModels + 1; i++) {\n const data = [{ name: i }];\n for (let j = 1; j < partsPerModel + 1; j++) {\n data[0][`${j}`] = 1;\n }\n parentData.push(data);\n }\n let barItems = [];\n parentData.forEach((data, chartIndex) => {\n barItems.push(\n <BarChart width={200} height={30 * partsPerModel} data={data} key={`bar-chart-${chartIndex + 1}`}>\n <YAxis hide={true} type=\"number\" domain={[0, partsPerModel]} />\n {Object.keys(data[0]).map((key, index) => {\n if (key !== 'name') {\n return (\n <Bar\n dataKey={key}\n stackId=\"a\"\n key={`bar-${chartIndex + 1}-${index + 1}`}\n onClick={disabled ? null : () => handleChartClick(chartIndex + 1, key)}\n onMouseEnter={disabled ? null : () => handleChartMouseEnter(chartIndex + 1, key)}\n onMouseLeave={disabled ? null : () => handleChartMouseLeave(chartIndex + 1, key)}\n shape={barWithBorder()}\n isAnimationActive={false}\n fill={getSectorFill(hoveredIndex, `${chartIndex + 1}-${key}`)}\n >\n {showLabel && <LabelList position=\"left\" fill=\"#000000\" />}\n </Bar>\n );\n }\n })}\n </BarChart>,\n );\n });\n return <div className={classes.barChartParentDiv}>{barItems}</div>;\n };\n\n /*\n * Function to create and return pie fraction model\n * */\n const getPieFractionModel = () => {\n const parentData = [];\n // Generate data for pie chart\n for (let i = 1; i < noOfModels + 1; i++) {\n const data = Array.from({ length: partsPerModel }, (_, index) => ({\n name: `${index + 1}`,\n value: 1,\n }));\n parentData.push(data);\n }\n let pieItems = [];\n parentData.forEach((data, chartIndex) => {\n pieItems.push(\n <PieChart width={200} height={200} key={`pie-chart-${chartIndex}`}>\n <Pie\n data={data}\n key={`pie-${chartIndex + 1}`}\n fill=\"#FFFFFF\"\n stroke=\"#000000\"\n dataKey=\"value\"\n startAngle={90}\n endAngle={-270}\n isAnimationActive={false}\n labelLine={false}\n label={showLabel && renderCustomizedLabelForPie}\n >\n {data.map((entry, sectorIndex) => (\n <Cell\n className={classes.sectorOutline}\n key={`${chartIndex + 1}-${sectorIndex + 1}`}\n onClick={disabled ? null : () => handleChartClick(chartIndex + 1, sectorIndex + 1)}\n onMouseEnter={disabled ? null : () => handleChartMouseEnter(chartIndex + 1, sectorIndex + 1)}\n onMouseLeave={disabled ? null : () => handleChartMouseLeave(chartIndex + 1, sectorIndex + 1)}\n fill={getSectorFill(hoveredIndex, `${chartIndex + 1}-${sectorIndex + 1}`)}\n />\n ))}\n </Pie>\n </PieChart>,\n );\n });\n return <div className={classes.pieChartParentDiv}>{pieItems}</div>;\n };\n\n //Render bar or pie models as per model type\n if (modelType === 'bar') {\n return getBarFractionModel();\n } else if (modelType === 'pie') {\n return getPieFractionModel();\n }\n};\n\nexport default withStyles(styles)(FractionModelChart);\n"],"file":"fraction-model-chart.js"}
1
+ {"version":3,"sources":["../src/fraction-model-chart.js"],"names":["styles","theme","pieChartParentDiv","display","gridTemplateColumns","gap","padding","barChartParentDiv","sectorOutline","outline","FractionModelChart","props","handleChartClick","chartIndex","sectorIndex","parseInt","existingIndex","clickedIndexArray","findIndex","item","id","newClickedIndexArray","currentItem","value","filter","_","index","slice","onChange","setClickedIndexArray","handleChartMouseEnter","setHoveredIndex","handleChartMouseLeave","getSectorFill","hoveredIndex","selection","split","map","Number","selectionId","selectionValue","clickedItem","find","hoveredId","hoveredValue","renderCustomizedLabelForPie","cx","cy","midAngle","outerRadius","RADIAN","Math","PI","radius","x","cos","y","sin","toFixed","barWithBorder","fill","width","height","classes","modelType","noOfModels","partsPerModel","showLabel","disabled","getBarFractionModel","parentData","i","data","name","j","push","barItems","forEach","Object","keys","key","pieChartRef","getPieFractionModel","Array","from","length","pieItems","entry","current","paths","querySelectorAll","path","d","getAttribute","setAttribute","replaceAll"],"mappings":"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","sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\nimport { Bar, BarChart, Cell, LabelList, Pie, PieChart, YAxis } from 'recharts';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = (theme) => ({\n pieChartParentDiv: {\n display: 'grid',\n gridTemplateColumns: '200px 200px 200px',\n gap: '10px',\n padding: '5px 0',\n },\n barChartParentDiv: {\n display: 'grid',\n gridTemplateColumns: '200px 200px 200px',\n gap: '20px',\n padding: '10px 0',\n },\n sectorOutline: {\n outline: 'none',\n },\n});\n\nconst FractionModelChart = (props) => {\n /*\n * Function to handle click event on chart\n * @param chartIndex: index of the chart\n * @param sectorIndex: index of the sector\n * */\n const handleChartClick = (chartIndex, sectorIndex) => {\n if (typeof sectorIndex === 'string') {\n sectorIndex = parseInt(sectorIndex);\n }\n const existingIndex = clickedIndexArray.findIndex((item) => item.id === chartIndex);\n let newClickedIndexArray;\n if (existingIndex >= 0) {\n const currentItem = clickedIndexArray[existingIndex];\n if (currentItem.value === sectorIndex) {\n newClickedIndexArray = clickedIndexArray.filter((_, index) => index !== existingIndex);\n } else {\n newClickedIndexArray = [\n ...clickedIndexArray.slice(0, existingIndex),\n { id: chartIndex, value: sectorIndex },\n ...clickedIndexArray.slice(existingIndex + 1),\n ];\n }\n } else {\n newClickedIndexArray = [...clickedIndexArray, { id: chartIndex, value: sectorIndex }];\n }\n onChange(newClickedIndexArray);\n setClickedIndexArray(newClickedIndexArray);\n };\n\n /*\n * Function to handle mouse enter event on chart\n * @param chartIndex: index of the chart\n * @param sectorIndex: index of the sector\n * */\n const handleChartMouseEnter = (chartIndex, sectorIndex) => {\n setHoveredIndex(chartIndex + '-' + sectorIndex);\n };\n\n /*\n * Function to handle mouse leave event on chart\n * @param chartIndex: index of the chart\n * @param sectorIndex: index of the sector\n * */\n const handleChartMouseLeave = (chartIndex, sectorIndex) => {\n setHoveredIndex(null);\n };\n\n /*\n * Function to get fill color for sector\n * @param hoveredIndex: hovered index\n * @param selection: selected index\n * */\n const getSectorFill = (hoveredIndex, selection) => {\n const [selectionId, selectionValue] = selection.split('-').map(Number);\n // Check for a matching clicked item\n const clickedItem = clickedIndexArray.find((item) => item.id === selectionId);\n if (clickedItem && selectionValue <= clickedItem.value) {\n return 'rgb(60, 73, 150, 0.6)';\n }\n // Check for a matching hovered index\n if (hoveredIndex) {\n const [hoveredId, hoveredValue] = hoveredIndex.split('-').map(Number);\n if (hoveredId === selectionId && hoveredValue >= selectionValue) {\n return 'rgb(0, 0, 0, 0.25)';\n }\n }\n return '#FFFFFF';\n };\n\n /*\n * Function to render label for pie chart\n * @param props: properties of the label\n * */\n const renderCustomizedLabelForPie = (props) => {\n const { cx, cy, midAngle, outerRadius, index } = props;\n const RADIAN = Math.PI / 180;\n // const radius = outerRadius * 0.5; //If you want to show label inside the pie\n const radius = outerRadius * 1.13;\n const x = cx + radius * Math.cos(-midAngle * RADIAN);\n const y = cy + radius * Math.sin(-midAngle * RADIAN);\n return (\n <text x={x} y={y} fill=\"#000000\" textAnchor={x > cx ? 'start' : 'end'} dominantBaseline=\"central\">\n {`${(index + 1).toFixed(0)}`}\n </text>\n );\n };\n\n /*\n * Function to create and return component for bar chart\n * */\n const barWithBorder = () => {\n return (props) => {\n const { fill, x, y, width, height } = props;\n return (\n <g>\n <rect x={x} y={y} width={width} height={height} stroke={'#000000'} fill={fill} />\n </g>\n );\n };\n };\n\n const {\n classes,\n value = [],\n modelType = 'bar',\n noOfModels = 0,\n partsPerModel = 0,\n showLabel = false,\n disabled = false,\n onChange,\n } = props;\n const [hoveredIndex, setHoveredIndex] = useState(null);\n const [clickedIndexArray, setClickedIndexArray] = useState(value);\n\n /*\n * Function to create and return bar fraction model\n * */\n const getBarFractionModel = () => {\n const parentData = [];\n // Generate data for bar chart\n for (let i = 1; i < noOfModels + 1; i++) {\n const data = [{ name: i }];\n for (let j = 1; j < partsPerModel + 1; j++) {\n data[0][`${j}`] = 1;\n }\n parentData.push(data);\n }\n let barItems = [];\n parentData.forEach((data, chartIndex) => {\n barItems.push(\n <BarChart width={200} height={30 * partsPerModel} data={data} key={`bar-chart-${chartIndex + 1}`}>\n <YAxis hide={true} type=\"number\" domain={[0, partsPerModel]} />\n {Object.keys(data[0]).map((key, index) => {\n if (key !== 'name') {\n return (\n <Bar\n dataKey={key}\n stackId=\"a\"\n key={`bar-${chartIndex + 1}-${index + 1}`}\n onClick={disabled ? null : () => handleChartClick(chartIndex + 1, key)}\n onMouseEnter={disabled ? null : () => handleChartMouseEnter(chartIndex + 1, key)}\n onMouseLeave={disabled ? null : () => handleChartMouseLeave(chartIndex + 1, key)}\n shape={barWithBorder()}\n isAnimationActive={false}\n fill={getSectorFill(hoveredIndex, `${chartIndex + 1}-${key}`)}\n >\n {showLabel && <LabelList position=\"left\" fill=\"#000000\" />}\n </Bar>\n );\n }\n })}\n </BarChart>,\n );\n });\n return <div className={classes.barChartParentDiv}>{barItems}</div>;\n };\n\n const pieChartRef = useRef(null);\n \n /*\n * Function to create and return pie fraction model\n * */\n const getPieFractionModel = () => {\n const parentData = [];\n // Generate data for pie chart\n for (let i = 1; i < noOfModels + 1; i++) {\n const data = Array.from({ length: partsPerModel }, (_, index) => ({\n name: `${index + 1}`,\n value: 1,\n }));\n parentData.push(data);\n }\n let pieItems = [];\n parentData.forEach((data, chartIndex) => {\n pieItems.push(\n <PieChart width={200} height={200} key={`pie-chart-${chartIndex}`}>\n <Pie\n data={data}\n key={`pie-${chartIndex + 1}`}\n fill=\"#FFFFFF\"\n stroke=\"#000000\"\n dataKey=\"value\"\n startAngle={90}\n endAngle={-270}\n isAnimationActive={false}\n labelLine={false}\n label={showLabel && renderCustomizedLabelForPie}\n >\n {data.map((entry, sectorIndex) => (\n <Cell\n className={classes.sectorOutline}\n key={`${chartIndex + 1}-${sectorIndex + 1}`}\n onClick={disabled ? null : () => handleChartClick(chartIndex + 1, sectorIndex + 1)}\n onMouseEnter={disabled ? null : () => handleChartMouseEnter(chartIndex + 1, sectorIndex + 1)}\n onMouseLeave={disabled ? null : () => handleChartMouseLeave(chartIndex + 1, sectorIndex + 1)}\n fill={getSectorFill(hoveredIndex, `${chartIndex + 1}-${sectorIndex + 1}`)}\n />\n ))}\n </Pie>\n </PieChart>,\n );\n });\n return <div ref={pieChartRef} className={classes.pieChartParentDiv}>{pieItems}</div>;\n };\n\n //Render bar or pie models as per model type\n if (modelType === 'bar') {\n return getBarFractionModel();\n } else if (modelType === 'pie') {\n //Remove the last sector line of pie chart if parts per model is 1\n useEffect(() => {\n if (pieChartRef?.current && partsPerModel === 1){\n const paths = pieChartRef.current.querySelectorAll('path');\n if (paths.length > 0) {\n paths.forEach((path) => {\n let d = path.getAttribute('d');\n path.setAttribute('d', d.replaceAll('L 100,100', ''));\n });\n }\n }\n }, []);\n return getPieFractionModel();\n }\n};\n\nexport default withStyles(styles)(FractionModelChart);\n"],"file":"fraction-model-chart.js"}
package/lib/main.js CHANGED
@@ -68,7 +68,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
68
68
  };
69
69
 
70
70
  if (model.allowedStudentConfig) {
71
- answers.noOfModel = 0, answers.partsPerModel = 0;
71
+ answers.noOfModel = '', answers.partsPerModel = '';
72
72
  }
73
73
 
74
74
  return answers;
@@ -162,7 +162,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
162
162
  }
163
163
  }), /*#__PURE__*/_react["default"].createElement("p", {
164
164
  dangerouslySetInnerHTML: {
165
- __html: model.question
165
+ __html: model.prompt
166
166
  }
167
167
  }), /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle.CorrectAnswerToggle, {
168
168
  language: language,
package/lib/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/main.jsx"],"names":["Main","props","onSessionChange","state","session","model","answers","response","allowedStudentConfig","noOfModel","partsPerModel","newAnswers","oldSession","newSession","length","setState","answerChangeDialog","open","text","callOnSessionChange","show","showCorrect","Math","floor","random","generateAnswers","classes","correctness","language","showCorrectAnswerToggle","fractionModelChartKey","generateRandomKey","modelPreview","titleContainer","__html","title","question","toggleShowCorrect","view","onAnswerChange","correctResponse","modelTypeSelected","maxModelSelected","showGraphLabels","onResponseChange","prevState","React","Component","PropTypes","object","func","isRequired","styles","previewHeading","fontWeight","fontSize","margin","padding","textAlign"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport AnswerFraction from './answer-fraction';\nimport { CorrectAnswerToggle } from '@pie-lib/pie-toolbox/correct-answer-toggle';\nimport FractionModelChart from './fraction-model-chart';\nimport { AlertDialog } from '@pie-lib/pie-toolbox/config-ui';\nimport cloneDeep from 'lodash/cloneDeep';\n\nexport class Main extends React.Component {\n static propTypes = {\n model: PropTypes.object,\n session: PropTypes.object,\n onSessionChange: PropTypes.func.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n session: {\n ...props.session,\n answers: (props.session && props.session.answers) || this.generateAnswers(props.model),\n },\n showCorrect: false,\n answerChangeDialog: {\n open: false,\n text: '',\n },\n };\n this.callOnSessionChange();\n }\n\n /**\n * Function to trigger when session value change for fraction model\n */\n callOnSessionChange = () => {\n const { onSessionChange } = this.props;\n if (onSessionChange) {\n onSessionChange(this.state.session);\n }\n };\n\n /**\n * Function to generate answers for preview selection\n * @param {object} model contains model object for fraction model\n * @returns answer model\n */\n generateAnswers = (model) => {\n const answers = {\n response: [],\n };\n if (model.allowedStudentConfig) {\n (answers.noOfModel = 0), (answers.partsPerModel = 0);\n }\n return answers;\n };\n\n /**\n * Function to trigger when answer change from preview\n * @param {object} newAnswers contains updated answer model\n */\n onAnswerChange = (newAnswers) => {\n let oldSession = cloneDeep(this.state.session);\n let newSession = {\n ...this.state.session,\n answers: newAnswers,\n };\n if (newAnswers.response.length > 0) {\n this.setState({\n answerChangeDialog: {\n open: true,\n oldSession: oldSession,\n newSession: newSession,\n text: 'Changing either the Number of Models or Parts per Model will remove added answer. Are you sure you want to continue?',\n },\n });\n } else {\n this.setState(\n (state) => ({\n session: newSession,\n }),\n this.callOnSessionChange,\n );\n }\n };\n\n /*\n * Function to toggle correct answer\n * @param {boolean} show contains boolean value to show correct answer\n * */\n toggleShowCorrect = (show) => {\n this.setState({ showCorrect: show });\n };\n\n /*\n * Function to trigger when response change from preview\n * @param {object} response contains updated response model\n * */\n onResponseChange = (response) => {\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n answers: {\n ...state.session.answers,\n response,\n },\n },\n }),\n this.callOnSessionChange,\n );\n };\n\n /*\n * Method to generate random key\n * */\n generateRandomKey = () => {\n return Math.floor(Math.random() * 10000);\n };\n\n render() {\n const { model, classes } = this.props;\n const { showCorrect, session, answerChangeDialog } = this.state;\n const { correctness = {}, language } = model;\n const showCorrectAnswerToggle = correctness.correctness && correctness.correctness !== 'correct';\n const fractionModelChartKey = this.generateRandomKey();\n\n return (\n <div>\n <div className={classes.modelPreview}>\n <h3 className={classes.titleContainer} dangerouslySetInnerHTML={{ __html: model.title }}></h3>\n <p dangerouslySetInnerHTML={{ __html: model.question }}></p>\n\n <CorrectAnswerToggle\n language={language}\n show={showCorrectAnswerToggle}\n toggled={showCorrect}\n onToggle={this.toggleShowCorrect}\n />\n\n <AnswerFraction\n model={model}\n showCorrect={showCorrect}\n disabled={model.view}\n onAnswerChange={this.onAnswerChange}\n answers={session.answers}\n />\n\n <FractionModelChart\n key={fractionModelChartKey}\n disabled={model.view}\n value={showCorrect ? model.correctResponse : session.answers.response}\n modelType={model.modelTypeSelected}\n noOfModels={\n showCorrect\n ? model.maxModelSelected\n : model.allowedStudentConfig\n ? session.answers.noOfModel\n : model.maxModelSelected\n }\n partsPerModel={\n showCorrect\n ? model.partsPerModel\n : model.allowedStudentConfig\n ? session.answers.partsPerModel\n : model.partsPerModel\n }\n showLabel={model.showGraphLabels}\n onChange={this.onResponseChange}\n ></FractionModelChart>\n\n <AlertDialog\n open={answerChangeDialog.open}\n title=\"Warning\"\n text={answerChangeDialog.text}\n onConfirm={() => {\n let newSession = this.state.answerChangeDialog.newSession;\n newSession.answers.response = [];\n this.setState(\n () => ({\n session: newSession,\n answerChangeDialog: { open: false },\n }),\n this.callOnSessionChange,\n );\n }}\n onClose={() => {\n this.setState(\n (prevState) => ({\n session: prevState.answerChangeDialog.oldSession,\n answerChangeDialog: { open: false },\n }),\n this.callOnSessionChange,\n );\n }}\n onConfirmText={'OK'}\n onCloseText={'Cancel'}\n />\n </div>\n </div>\n );\n }\n}\n\nconst styles = () => ({\n previewHeading: {\n fontWeight: '400',\n fontSize: '24px',\n margin: '14px 0',\n },\n modelPreview: {\n padding: '16px',\n },\n titleContainer: {\n textAlign: 'center',\n fontSize: '20px',\n },\n});\n\nexport default withStyles(styles)(Main);\n"],"file":"main.js"}
1
+ {"version":3,"sources":["../src/main.jsx"],"names":["Main","props","onSessionChange","state","session","model","answers","response","allowedStudentConfig","noOfModel","partsPerModel","newAnswers","oldSession","newSession","length","setState","answerChangeDialog","open","text","callOnSessionChange","show","showCorrect","Math","floor","random","generateAnswers","classes","correctness","language","showCorrectAnswerToggle","fractionModelChartKey","generateRandomKey","modelPreview","titleContainer","__html","title","prompt","toggleShowCorrect","view","onAnswerChange","correctResponse","modelTypeSelected","maxModelSelected","showGraphLabels","onResponseChange","prevState","React","Component","PropTypes","object","func","isRequired","styles","previewHeading","fontWeight","fontSize","margin","padding","textAlign"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport AnswerFraction from './answer-fraction';\nimport { CorrectAnswerToggle } from '@pie-lib/pie-toolbox/correct-answer-toggle';\nimport FractionModelChart from './fraction-model-chart';\nimport { AlertDialog } from '@pie-lib/pie-toolbox/config-ui';\nimport cloneDeep from 'lodash/cloneDeep';\n\nexport class Main extends React.Component {\n static propTypes = {\n model: PropTypes.object,\n session: PropTypes.object,\n onSessionChange: PropTypes.func.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n session: {\n ...props.session,\n answers: (props.session && props.session.answers) || this.generateAnswers(props.model),\n },\n showCorrect: false,\n answerChangeDialog: {\n open: false,\n text: '',\n },\n };\n this.callOnSessionChange();\n }\n\n /**\n * Function to trigger when session value change for fraction model\n */\n callOnSessionChange = () => {\n const { onSessionChange } = this.props;\n if (onSessionChange) {\n onSessionChange(this.state.session);\n }\n };\n\n /**\n * Function to generate answers for preview selection\n * @param {object} model contains model object for fraction model\n * @returns answer model\n */\n generateAnswers = (model) => {\n const answers = {\n response: [],\n };\n if (model.allowedStudentConfig) {\n (answers.noOfModel = ''), (answers.partsPerModel = '');\n }\n return answers;\n };\n\n /**\n * Function to trigger when answer change from preview\n * @param {object} newAnswers contains updated answer model\n */\n onAnswerChange = (newAnswers) => {\n let oldSession = cloneDeep(this.state.session);\n let newSession = {\n ...this.state.session,\n answers: newAnswers,\n };\n if (newAnswers.response.length > 0) {\n this.setState({\n answerChangeDialog: {\n open: true,\n oldSession: oldSession,\n newSession: newSession,\n text: 'Changing either the Number of Models or Parts per Model will remove added answer. Are you sure you want to continue?',\n },\n });\n } else {\n this.setState(\n (state) => ({\n session: newSession,\n }),\n this.callOnSessionChange,\n );\n }\n };\n\n /*\n * Function to toggle correct answer\n * @param {boolean} show contains boolean value to show correct answer\n * */\n toggleShowCorrect = (show) => {\n this.setState({ showCorrect: show });\n };\n\n /*\n * Function to trigger when response change from preview\n * @param {object} response contains updated response model\n * */\n onResponseChange = (response) => {\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n answers: {\n ...state.session.answers,\n response,\n },\n },\n }),\n this.callOnSessionChange,\n );\n };\n\n /*\n * Method to generate random key\n * */\n generateRandomKey = () => {\n return Math.floor(Math.random() * 10000);\n };\n\n render() {\n const { model, classes } = this.props;\n const { showCorrect, session, answerChangeDialog } = this.state;\n const { correctness = {}, language } = model;\n const showCorrectAnswerToggle = correctness.correctness && correctness.correctness !== 'correct';\n const fractionModelChartKey = this.generateRandomKey();\n\n return (\n <div>\n <div className={classes.modelPreview}>\n <h3 className={classes.titleContainer} dangerouslySetInnerHTML={{ __html: model.title }}></h3>\n <p dangerouslySetInnerHTML={{ __html: model.prompt }}></p>\n\n <CorrectAnswerToggle\n language={language}\n show={showCorrectAnswerToggle}\n toggled={showCorrect}\n onToggle={this.toggleShowCorrect}\n />\n\n <AnswerFraction\n model={model}\n showCorrect={showCorrect}\n disabled={model.view}\n onAnswerChange={this.onAnswerChange}\n answers={session.answers}\n />\n\n <FractionModelChart\n key={fractionModelChartKey}\n disabled={model.view}\n value={showCorrect ? model.correctResponse : session.answers.response}\n modelType={model.modelTypeSelected}\n noOfModels={\n showCorrect\n ? model.maxModelSelected\n : model.allowedStudentConfig\n ? session.answers.noOfModel\n : model.maxModelSelected\n }\n partsPerModel={\n showCorrect\n ? model.partsPerModel\n : model.allowedStudentConfig\n ? session.answers.partsPerModel\n : model.partsPerModel\n }\n showLabel={model.showGraphLabels}\n onChange={this.onResponseChange}\n ></FractionModelChart>\n\n <AlertDialog\n open={answerChangeDialog.open}\n title=\"Warning\"\n text={answerChangeDialog.text}\n onConfirm={() => {\n let newSession = this.state.answerChangeDialog.newSession;\n newSession.answers.response = [];\n this.setState(\n () => ({\n session: newSession,\n answerChangeDialog: { open: false },\n }),\n this.callOnSessionChange,\n );\n }}\n onClose={() => {\n this.setState(\n (prevState) => ({\n session: prevState.answerChangeDialog.oldSession,\n answerChangeDialog: { open: false },\n }),\n this.callOnSessionChange,\n );\n }}\n onConfirmText={'OK'}\n onCloseText={'Cancel'}\n />\n </div>\n </div>\n );\n }\n}\n\nconst styles = () => ({\n previewHeading: {\n fontWeight: '400',\n fontSize: '24px',\n margin: '14px 0',\n },\n modelPreview: {\n padding: '16px',\n },\n titleContainer: {\n textAlign: 'center',\n fontSize: '20px',\n },\n});\n\nexport default withStyles(styles)(Main);\n"],"file":"main.js"}
package/package.json CHANGED
@@ -4,12 +4,12 @@
4
4
  "access": "public"
5
5
  },
6
6
  "repository": "pie-framework/pie-elements",
7
- "version": "2.0.2-next.9+ece6bd005",
7
+ "version": "2.1.1-beta",
8
8
  "description": "",
9
9
  "dependencies": {
10
10
  "@material-ui/core": "^3.9.2",
11
11
  "@pie-framework/pie-player-events": "^0.1.0",
12
- "@pie-lib/pie-toolbox": "2.0.8",
12
+ "@pie-lib/pie-toolbox": "1.33.1",
13
13
  "prop-types": "^15.6.1",
14
14
  "react": "^16.8.1",
15
15
  "react-dom": "^16.8.1",
@@ -17,7 +17,7 @@
17
17
  },
18
18
  "author": "",
19
19
  "license": "ISC",
20
- "gitHead": "ece6bd0052a8f51c5fffc0200829b37557bd7ebb",
20
+ "gitHead": "0e14ff981bcdc8a89a0e58484026496701bfdbc3",
21
21
  "scripts": {
22
22
  "postpublish": "../../scripts/postpublish"
23
23
  },
package/LICENSE.md DELETED
@@ -1,5 +0,0 @@
1
- Copyright 2019 CoreSpring Inc
2
-
3
- Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
4
-
5
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.