@pie-element/charting 2.7.3-next.1186 → 2.7.3-next.1193
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.
|
@@ -63,6 +63,29 @@ var styles = function styles(theme) {
|
|
|
63
63
|
};
|
|
64
64
|
};
|
|
65
65
|
|
|
66
|
+
var restoreCorrectAnswer = function restoreCorrectAnswer(correctAnswer, data) {
|
|
67
|
+
if (!correctAnswer) {
|
|
68
|
+
return data;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
var correctResponseDefinition = [];
|
|
72
|
+
(data || []).forEach(function (category, currentIndex) {
|
|
73
|
+
var _correctAnswer$curren, _correctAnswer$curren2;
|
|
74
|
+
|
|
75
|
+
var editable = category.editable,
|
|
76
|
+
interactive = category.interactive;
|
|
77
|
+
var label = editable && (_correctAnswer$curren = correctAnswer[currentIndex]) !== null && _correctAnswer$curren !== void 0 && _correctAnswer$curren.label ? correctAnswer[currentIndex].label : category.label;
|
|
78
|
+
var value = interactive && (_correctAnswer$curren2 = correctAnswer[currentIndex]) !== null && _correctAnswer$curren2 !== void 0 && _correctAnswer$curren2.value ? correctAnswer[currentIndex].value : category.value;
|
|
79
|
+
correctResponseDefinition[currentIndex] = {
|
|
80
|
+
label: label,
|
|
81
|
+
value: value,
|
|
82
|
+
editable: category.editable,
|
|
83
|
+
interactive: category.interactive
|
|
84
|
+
};
|
|
85
|
+
});
|
|
86
|
+
return correctResponseDefinition;
|
|
87
|
+
};
|
|
88
|
+
|
|
66
89
|
var ChartingConfig = /*#__PURE__*/function (_React$Component) {
|
|
67
90
|
(0, _inherits2["default"])(ChartingConfig, _React$Component);
|
|
68
91
|
|
|
@@ -86,7 +109,8 @@ var ChartingConfig = /*#__PURE__*/function (_React$Component) {
|
|
|
86
109
|
}));
|
|
87
110
|
});
|
|
88
111
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeAddRemoveEnabled", function (value) {
|
|
89
|
-
var
|
|
112
|
+
var model = _this.props.model;
|
|
113
|
+
var correctAnswer = restoreCorrectAnswer(model.correctAnswer.data, model.data);
|
|
90
114
|
|
|
91
115
|
if (!value) {
|
|
92
116
|
_this.setState({
|
|
@@ -97,7 +121,9 @@ var ChartingConfig = /*#__PURE__*/function (_React$Component) {
|
|
|
97
121
|
onConfirm: function onConfirm() {
|
|
98
122
|
return _this.handleAlertDialog(false, _this.props.onChange(_objectSpread(_objectSpread({}, _this.props.model), {}, {
|
|
99
123
|
addCategoryEnabled: value,
|
|
100
|
-
correctAnswer:
|
|
124
|
+
correctAnswer: {
|
|
125
|
+
data: correctAnswer
|
|
126
|
+
}
|
|
101
127
|
})));
|
|
102
128
|
},
|
|
103
129
|
onClose: function onClose() {
|
|
@@ -114,8 +140,7 @@ var ChartingConfig = /*#__PURE__*/function (_React$Component) {
|
|
|
114
140
|
_this.state = {
|
|
115
141
|
dialog: {
|
|
116
142
|
open: false
|
|
117
|
-
}
|
|
118
|
-
correctAnswer: props.model.correctAnswer
|
|
143
|
+
}
|
|
119
144
|
};
|
|
120
145
|
return _this;
|
|
121
146
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/charting-config.jsx"],"names":["styles","theme","container","marginTop","spacing","unit","marginBottom","display","flex","column","
|
|
1
|
+
{"version":3,"sources":["../src/charting-config.jsx"],"names":["styles","theme","container","marginTop","spacing","unit","marginBottom","display","flex","column","restoreCorrectAnswer","correctAnswer","data","correctResponseDefinition","forEach","category","currentIndex","editable","interactive","label","value","ChartingConfig","props","open","callback","setState","dialog","onChange","model","title","text","onConfirm","handleAlertDialog","addCategoryEnabled","onClose","state","classes","charts","showPixelGuides","chartType","graph","domain","range","map","index","changeData","categoryDefaultLabel","e","changeAddRemoveEnabled","target","checked","React","Component","PropTypes","object","isRequired","func","array"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { Chart } from '@pie-lib/charting';\nimport { AlertDialog } from '@pie-lib/config-ui';\nimport Checkbox from '@material-ui/core/Checkbox';\n\nimport Typography from '@material-ui/core/Typography';\n\nconst styles = (theme) => ({\n container: {\n marginTop: theme.spacing.unit * 3,\n marginBottom: theme.spacing.unit * 3,\n display: 'flex',\n flex: 1,\n },\n column: {\n flex: 1,\n },\n});\n\nconst restoreCorrectAnswer = (correctAnswer, data) => {\n if (!correctAnswer) {\n return data;\n }\n\n let correctResponseDefinition = [];\n\n (data || []).forEach((category, currentIndex) => {\n const { editable, interactive } = category;\n\n const label =\n editable && correctAnswer[currentIndex]?.label\n ? correctAnswer[currentIndex].label\n : category.label;\n\n const value =\n interactive && correctAnswer[currentIndex]?.value\n ? correctAnswer[currentIndex].value\n : category.value;\n\n correctResponseDefinition[currentIndex] = {\n label: label,\n value: value,\n editable: category.editable,\n interactive: category.interactive,\n };\n });\n\n return correctResponseDefinition;\n};\n\nexport class ChartingConfig extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n charts: PropTypes.array,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n dialog: {\n open: false,\n },\n };\n }\n\n handleAlertDialog = (open, callback) =>\n this.setState(\n {\n dialog: { open },\n },\n callback\n );\n\n changeData = (data) => this.props.onChange({ ...this.props.model, data });\n\n changeAddRemoveEnabled = (value) => {\n const { model } = this.props\n const correctAnswer = restoreCorrectAnswer(\n model.correctAnswer.data,\n model.data\n );\n\n if (!value) {\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: `This change will remove any correct answer categories that are not part of the initial item configuration.`,\n onConfirm: () =>\n this.handleAlertDialog(\n false,\n this.props.onChange({\n ...this.props.model,\n addCategoryEnabled: value,\n correctAnswer: { data: correctAnswer },\n })\n ),\n onClose: () => this.handleAlertDialog(false),\n },\n });\n } else {\n this.props.onChange({ ...this.props.model, addCategoryEnabled: value });\n }\n };\n\n render() {\n const { classes, model, charts, showPixelGuides } = this.props;\n const { dialog } = this.state;\n\n return (\n <div>\n Define Initial Chart Attributes\n <div className={classes.container}>\n <div className={classes.column} key=\"graph\">\n <Typography component=\"div\" type=\"body1\">\n <span>\n Use the tools below to set up the chart as it will initially\n appear to students.\n </span>\n </Typography>\n\n <Chart\n defineChart={true}\n showPixelGuides={showPixelGuides}\n chartType={model.chartType}\n size={model.graph}\n domain={model.domain}\n range={model.range}\n charts={charts}\n // index is a property used for setting the correct answer data; it's needed in order to remove categories from other data sets from the same index it was removed from the initial data\n data={model.data.map((category, index) => ({\n ...category,\n index: index,\n }))}\n title={model.title}\n onDataChange={this.changeData}\n addCategoryEnabled={true}\n categoryDefaultLabel={model.categoryDefaultLabel}\n />\n <div>\n <Checkbox\n checked={model.addCategoryEnabled}\n onChange={(e) => {\n this.changeAddRemoveEnabled(e.target.checked);\n }}\n />\n Student can add categories\n </div>\n\n <AlertDialog\n open={dialog.open}\n title={dialog.title}\n text={dialog.text}\n onClose={dialog.onClose}\n onConfirm={dialog.onConfirm}\n />\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(ChartingConfig);\n"],"file":"charting-config.js"}
|
|
@@ -188,7 +188,7 @@ var CorrectResponse = /*#__PURE__*/function (_React$Component) {
|
|
|
188
188
|
var categories = this.state.categories;
|
|
189
189
|
var nextCategories = [];
|
|
190
190
|
|
|
191
|
-
if (nextData.length > data.length
|
|
191
|
+
if (nextData.length > data.length) {
|
|
192
192
|
nextCategories = insertCategory(nextCorrectAnswerData, nextData);
|
|
193
193
|
}
|
|
194
194
|
|
|
@@ -238,7 +238,7 @@ var CorrectResponse = /*#__PURE__*/function (_React$Component) {
|
|
|
238
238
|
});
|
|
239
239
|
}
|
|
240
240
|
|
|
241
|
-
if (!(0, _isEqual["default"])(nextCategories, data) || !(0, _isEqual["default"])(nextCorrectAnswerData, categories) || (0, _isEmpty["default"])(nextCategories) && (0, _isEmpty["default"])(data)) {
|
|
241
|
+
if (!(0, _isEqual["default"])(nextCategories, data) || !(0, _isEqual["default"])(nextCorrectAnswerData, categories) || !(0, _isEqual["default"])(nextCategories, categories) || (0, _isEmpty["default"])(nextCategories) && (0, _isEmpty["default"])(data)) {
|
|
242
242
|
this.setState({
|
|
243
243
|
categories: nextCategories
|
|
244
244
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/correct-response.jsx"],"names":["styles","theme","container","marginTop","spacing","unit","marginBottom","display","flex","button","cursor","background","padding","width","borderRadius","column","addCategoryProps","correctAnswer","data","map","correct","index","editable","length","interactive","deletable","updateCorrectResponseData","correctAnswerData","correctResponseDefinition","forEach","category","currentIndex","label","value","missingCategories","slice","concat","insertCategory","positionToInsert","categoryToInsert","splice","removeCategory","positionToRemove","CorrectResponse","props","model","onChange","keepAttrs","state","categories","nextProps","nextData","nextCorrectAnswerData","nextCategories","removedIndex","answer","dataExists","setState","classes","charts","name","chartType","graph","domain","range","title","changeData","addCategoryEnabled","categoryDefaultLabel","React","Component","PropTypes","object","isRequired","func","array"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { Chart } from '@pie-lib/charting';\nimport isEqual from 'lodash/isEqual';\nimport isEmpty from 'lodash/isEmpty';\n\nimport Typography from '@material-ui/core/Typography';\n\nconst styles = (theme) => ({\n container: {\n marginTop: theme.spacing.unit * 3,\n marginBottom: theme.spacing.unit * 3,\n display: 'flex',\n flex: 1,\n },\n button: {\n marginTop: theme.spacing.unit * 3,\n cursor: 'pointer',\n background: '#eee',\n padding: theme.spacing.unit * 2,\n width: 'fit-content',\n borderRadius: '4px',\n },\n column: {\n flex: 1\n }\n});\n\nconst addCategoryProps = (correctAnswer, data) => correctAnswer.map((correct, index) => ({ ...correct, editable: index < data.length ? data[index].editable : true, interactive: index < data.length ? data[index].interactive : true, deletable: index >= data.length ? true : false }));\n\nconst updateCorrectResponseData = (correctAnswer, data) => {\n if (!correctAnswer) {\n return data;\n }\n\n const correctAnswerData = [...correctAnswer];\n\n let correctResponseDefinition = [];\n\n data.forEach((category, currentIndex) => {\n const editable = category.editable;\n const interactive = category.interactive;\n\n const label = (editable && correctAnswer[currentIndex]?.label)\n ? correctAnswer[currentIndex].label\n : category.label\n\n const value = ((interactive && correctAnswer[currentIndex]?.value) || (interactive &&correctAnswer[currentIndex]?.value == 0))\n ? correctAnswer[currentIndex].value\n : category.value\n\n correctResponseDefinition[currentIndex] = {\n label: label,\n value: value,\n editable: category.editable,\n interactive: category.interactive,\n };\n });\n\n if (correctResponseDefinition.length < correctAnswer.length) {\n const missingCategories = correctAnswerData.slice(correctResponseDefinition.length, correctAnswer.length)\n\n return addCategoryProps(correctResponseDefinition.concat(missingCategories), data);\n }\n\n return correctResponseDefinition;\n};\n\nconst insertCategory = (correctAnswer, data) => {\n const positionToInsert = data.length - 1;\n const { editable, interactive, deletable, ...categoryToInsert } = data[data.length - 1];\n\n correctAnswer.splice(positionToInsert, 0, categoryToInsert);\n const correctAnswerData = [...correctAnswer];\n\n return addCategoryProps(correctAnswerData, data);\n}\n\nconst removeCategory = (correctAnswer, data, positionToRemove) => {\n correctAnswer.splice(positionToRemove, 1);\n\n const correctAnswerData = [...correctAnswer];\n\n return addCategoryProps(correctAnswerData, data);\n}\n\nexport class CorrectResponse extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n charts: PropTypes.array,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n categories: updateCorrectResponseData(\n props.model.correctAnswer.data,\n props.model.data\n )\n };\n }\n\n changeData = (data) => {\n const { model, onChange } = this.props;\n const { correctAnswer } = model || {};\n\n onChange({\n ...model,\n correctAnswer: {\n ...correctAnswer,\n data: data.map(({ interactive, editable, index, ...keepAttrs }) => keepAttrs),\n },\n });\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const {\n model: {\n data: nextData = [],\n correctAnswer: { data: nextCorrectAnswerData = [] },\n } = {},\n } = nextProps;\n\n const {\n model: {\n data = [],\n } = {},\n } = this.props;\n\n const { categories } = this.state;\n let nextCategories = [];\n\n if (nextData.length > data.length && nextCorrectAnswerData.length > data.length) {\n nextCategories = insertCategory(nextCorrectAnswerData, nextData);\n }\n\n if (nextData.length < data.length) {\n let removedIndex = nextData.length;\n\n // we need to remove the category from the correct answer data and categories, from the same index it was removed from the data\n // index is a property of the nextData category\n for (let index = 0; index < nextData.length; index++) {\n if (nextData[index].index !== index) {\n removedIndex = index;\n break;\n }\n }\n\n this.props.model.correctAnswer.data.splice(removedIndex, 1);\n nextCategories = removeCategory(categories, nextData, removedIndex);\n }\n\n if (!isEqual(nextCorrectAnswerData, this.props.model.correctAnswer.data)) {\n nextCategories = nextCorrectAnswerData.map((correct, index) => ({ ...correct, editable: index < data.length ? data[index].editable : true, interactive: index < data.length ? data[index].interactive : true }));\n } else if (isEmpty(nextCategories)) {\n nextCategories = updateCorrectResponseData(\n nextCorrectAnswerData,\n nextData\n );\n\n nextCorrectAnswerData.map((answer, currentIndex) => {\n const dataExists = currentIndex < nextData.length;\n let label;\n let value;\n let deletable;\n\n if (dataExists) {\n label = nextData[currentIndex].editable ? answer.label : nextData[currentIndex].label;\n value = nextData[currentIndex].interactive ? answer.value : nextData[currentIndex].value;\n } else {\n label = answer.label;\n value = answer.value;\n deletable = true;\n }\n\n nextCorrectAnswerData[currentIndex] = {\n label: label,\n value: value,\n };\n });\n }\n\n if (!isEqual(nextCategories, data) || !isEqual(nextCorrectAnswerData, categories) || (isEmpty(nextCategories) && isEmpty(data))) {\n this.setState({ categories: nextCategories });\n }\n }\n\n render() {\n const { classes, model, charts } = this.props;\n const { categories } = this.state;\n\n return (\n <div>\n Define Correct Response\n\n <div className={classes.container} >\n <div className={classes.column} key=\"graph\">\n <Typography component=\"div\" type=\"body1\">\n <span>Use the tools below to define the correct answer.</span>\n </Typography>\n\n <div key={`correct-response-graph-${model.correctAnswer.name}`}>\n\n <Chart\n chartType={model.chartType}\n size={model.graph}\n domain={model.domain}\n range={model.range}\n charts={charts}\n data={categories}\n title={model.title}\n onDataChange={(data) => this.changeData(data)}\n addCategoryEnabled={model.addCategoryEnabled}\n categoryDefaultLabel={model.categoryDefaultLabel}\n />\n </div>\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(CorrectResponse);\n"],"file":"correct-response.js"}
|
|
1
|
+
{"version":3,"sources":["../src/correct-response.jsx"],"names":["styles","theme","container","marginTop","spacing","unit","marginBottom","display","flex","button","cursor","background","padding","width","borderRadius","column","addCategoryProps","correctAnswer","data","map","correct","index","editable","length","interactive","deletable","updateCorrectResponseData","correctAnswerData","correctResponseDefinition","forEach","category","currentIndex","label","value","missingCategories","slice","concat","insertCategory","positionToInsert","categoryToInsert","splice","removeCategory","positionToRemove","CorrectResponse","props","model","onChange","keepAttrs","state","categories","nextProps","nextData","nextCorrectAnswerData","nextCategories","removedIndex","answer","dataExists","setState","classes","charts","name","chartType","graph","domain","range","title","changeData","addCategoryEnabled","categoryDefaultLabel","React","Component","PropTypes","object","isRequired","func","array"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;;;;;;;;;;;;;;;;AAEA,IAAMA,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBC,IAAAA,SAAS,EAAE;AACTC,MAAAA,SAAS,EAAEF,KAAK,CAACG,OAAN,CAAcC,IAAd,GAAqB,CADvB;AAETC,MAAAA,YAAY,EAAEL,KAAK,CAACG,OAAN,CAAcC,IAAd,GAAqB,CAF1B;AAGTE,MAAAA,OAAO,EAAE,MAHA;AAITC,MAAAA,IAAI,EAAE;AAJG,KADc;AAOzBC,IAAAA,MAAM,EAAE;AACNN,MAAAA,SAAS,EAAEF,KAAK,CAACG,OAAN,CAAcC,IAAd,GAAqB,CAD1B;AAENK,MAAAA,MAAM,EAAE,SAFF;AAGNC,MAAAA,UAAU,EAAE,MAHN;AAINC,MAAAA,OAAO,EAAEX,KAAK,CAACG,OAAN,CAAcC,IAAd,GAAqB,CAJxB;AAKNQ,MAAAA,KAAK,EAAE,aALD;AAMNC,MAAAA,YAAY,EAAE;AANR,KAPiB;AAezBC,IAAAA,MAAM,EAAE;AACNP,MAAAA,IAAI,EAAE;AADA;AAfiB,GAAZ;AAAA,CAAf;;AAoBA,IAAMQ,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,aAAD,EAAgBC,IAAhB;AAAA,SACvBD,aAAa,CAACE,GAAd,CAAkB,UAACC,OAAD,EAAUC,KAAV;AAAA,2CACbD,OADa;AAEhBE,MAAAA,QAAQ,EAAED,KAAK,GAAGH,IAAI,CAACK,MAAb,GAAsBL,IAAI,CAACG,KAAD,CAAJ,CAAYC,QAAlC,GAA6C,IAFvC;AAGhBE,MAAAA,WAAW,EAAEH,KAAK,GAAGH,IAAI,CAACK,MAAb,GAAsBL,IAAI,CAACG,KAAD,CAAJ,CAAYG,WAAlC,GAAgD,IAH7C;AAIhBC,MAAAA,SAAS,EAAEJ,KAAK,IAAIH,IAAI,CAACK,MAAd,GAAuB,IAAvB,GAA8B;AAJzB;AAAA,GAAlB,CADuB;AAAA,CAAzB;;AAQA,IAAMG,yBAAyB,GAAG,SAA5BA,yBAA4B,CAACT,aAAD,EAAgBC,IAAhB,EAAyB;AACzD,MAAI,CAACD,aAAL,EAAoB;AAClB,WAAOC,IAAP;AACD;;AAED,MAAMS,iBAAiB,uCAAOV,aAAP,CAAvB;AAEA,MAAIW,yBAAyB,GAAG,EAAhC;AAEAV,EAAAA,IAAI,CAACW,OAAL,CAAa,UAACC,QAAD,EAAWC,YAAX,EAA4B;AAAA;;AACvC,QAAMT,QAAQ,GAAGQ,QAAQ,CAACR,QAA1B;AACA,QAAME,WAAW,GAAGM,QAAQ,CAACN,WAA7B;AAEA,QAAMQ,KAAK,GACTV,QAAQ,6BAAIL,aAAa,CAACc,YAAD,CAAjB,kDAAI,sBAA6BC,KAAzC,GACIf,aAAa,CAACc,YAAD,CAAb,CAA4BC,KADhC,GAEIF,QAAQ,CAACE,KAHf;AAKA,QAAMC,KAAK,GACRT,WAAW,8BAAIP,aAAa,CAACc,YAAD,CAAjB,mDAAI,uBAA6BE,KAA7C,IACCT,WAAW,IAAI,2BAAAP,aAAa,CAACc,YAAD,CAAb,kFAA6BE,KAA7B,KAAsC,CADtD,GAEIhB,aAAa,CAACc,YAAD,CAAb,CAA4BE,KAFhC,GAGIH,QAAQ,CAACG,KAJf;AAMAL,IAAAA,yBAAyB,CAACG,YAAD,CAAzB,GAA0C;AACxCC,MAAAA,KAAK,EAAEA,KADiC;AAExCC,MAAAA,KAAK,EAAEA,KAFiC;AAGxCX,MAAAA,QAAQ,EAAEQ,QAAQ,CAACR,QAHqB;AAIxCE,MAAAA,WAAW,EAAEM,QAAQ,CAACN;AAJkB,KAA1C;AAMD,GArBD;;AAuBA,MAAII,yBAAyB,CAACL,MAA1B,GAAmCN,aAAa,CAACM,MAArD,EAA6D;AAC3D,QAAMW,iBAAiB,GAAGP,iBAAiB,CAACQ,KAAlB,CACxBP,yBAAyB,CAACL,MADF,EAExBN,aAAa,CAACM,MAFU,CAA1B;AAKA,WAAOP,gBAAgB,CACrBY,yBAAyB,CAACQ,MAA1B,CAAiCF,iBAAjC,CADqB,EAErBhB,IAFqB,CAAvB;AAID;;AAED,SAAOU,yBAAP;AACD,CA7CD;;AA+CA,IAAMS,cAAc,GAAG,SAAjBA,cAAiB,CAACpB,aAAD,EAAgBC,IAAhB,EAAyB;AAC9C,MAAMoB,gBAAgB,GAAGpB,IAAI,CAACK,MAAL,GAAc,CAAvC;AACA,cACEL,IAAI,CAACA,IAAI,CAACK,MAAL,GAAc,CAAf,CADN;AAAA,MAAQD,QAAR,SAAQA,QAAR;AAAA,MAAkBE,WAAlB,SAAkBA,WAAlB;AAAA,MAA+BC,SAA/B,SAA+BA,SAA/B;AAAA,MAA6Cc,gBAA7C;AAGAtB,EAAAA,aAAa,CAACuB,MAAd,CAAqBF,gBAArB,EAAuC,CAAvC,EAA0CC,gBAA1C;AACA,MAAMZ,iBAAiB,uCAAOV,aAAP,CAAvB;AAEA,SAAOD,gBAAgB,CAACW,iBAAD,EAAoBT,IAApB,CAAvB;AACD,CATD;;AAWA,IAAMuB,cAAc,GAAG,SAAjBA,cAAiB,CAACxB,aAAD,EAAgBC,IAAhB,EAAsBwB,gBAAtB,EAA2C;AAChEzB,EAAAA,aAAa,CAACuB,MAAd,CAAqBE,gBAArB,EAAuC,CAAvC;AAEA,MAAMf,iBAAiB,uCAAOV,aAAP,CAAvB;AAEA,SAAOD,gBAAgB,CAACW,iBAAD,EAAoBT,IAApB,CAAvB;AACD,CAND;;IAQayB,e;;;;;AAQX,2BAAYC,KAAZ,EAAmB;AAAA;;AAAA;AACjB,8BAAMA,KAAN;AADiB,mGAUN,UAAC1B,IAAD,EAAU;AACrB,wBAA4B,MAAK0B,KAAjC;AAAA,UAAQC,KAAR,eAAQA,KAAR;AAAA,UAAeC,QAAf,eAAeA,QAAf;;AACA,iBAA0BD,KAAK,IAAI,EAAnC;AAAA,UAAQ5B,aAAR,QAAQA,aAAR;;AAEA6B,MAAAA,QAAQ,iCACHD,KADG;AAEN5B,QAAAA,aAAa,kCACRA,aADQ;AAEXC,UAAAA,IAAI,EAAEA,IAAI,CAACC,GAAL,CACJ;AAAA,gBAAGK,WAAH,SAAGA,WAAH;AAAA,gBAAgBF,QAAhB,SAAgBA,QAAhB;AAAA,gBAA0BD,KAA1B,SAA0BA,KAA1B;AAAA,gBAAoC0B,SAApC;AAAA,mBAAoDA,SAApD;AAAA,WADI;AAFK;AAFP,SAAR;AASD,KAvBkB;AAEjB,UAAKC,KAAL,GAAa;AACXC,MAAAA,UAAU,EAAEvB,yBAAyB,CACnCkB,KAAK,CAACC,KAAN,CAAY5B,aAAZ,CAA0BC,IADS,EAEnC0B,KAAK,CAACC,KAAN,CAAY3B,IAFuB;AAD1B,KAAb;AAFiB;AAQlB;;;;WAiBD,0CAAiCgC,SAAjC,EAA4C;AAC1C,6BAKIA,SALJ,CACEL,KADF;AAAA,uDAIM,EAJN;AAAA,mDAEI3B,IAFJ;AAAA,UAEUiC,QAFV,sCAEqB,EAFrB;AAAA,mDAGIlC,aAHJ,CAGqBC,IAHrB;AAAA,UAG2BkC,qBAH3B,sCAGmD,EAHnD;AAOA,8BAAsC,KAAKR,KAA3C,CAAQC,KAAR;AAAA,yDAA+B,EAA/B;AAAA,oDAAiB3B,IAAjB;AAAA,UAAiBA,IAAjB,sCAAwB,EAAxB;AAEA,UAAQ+B,UAAR,GAAuB,KAAKD,KAA5B,CAAQC,UAAR;AACA,UAAII,cAAc,GAAG,EAArB;;AAEA,UAAIF,QAAQ,CAAC5B,MAAT,GAAkBL,IAAI,CAACK,MAA3B,EAAmC;AACjC8B,QAAAA,cAAc,GAAGhB,cAAc,CAACe,qBAAD,EAAwBD,QAAxB,CAA/B;AACD;;AAED,UAAIA,QAAQ,CAAC5B,MAAT,GAAkBL,IAAI,CAACK,MAA3B,EAAmC;AACjC,YAAI+B,YAAY,GAAGH,QAAQ,CAAC5B,MAA5B,CADiC,CAGjC;AACA;;AACA,aAAK,IAAIF,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAG8B,QAAQ,CAAC5B,MAArC,EAA6CF,KAAK,EAAlD,EAAsD;AACpD,cAAI8B,QAAQ,CAAC9B,KAAD,CAAR,CAAgBA,KAAhB,KAA0BA,KAA9B,EAAqC;AACnCiC,YAAAA,YAAY,GAAGjC,KAAf;AACA;AACD;AACF;;AAED,aAAKuB,KAAL,CAAWC,KAAX,CAAiB5B,aAAjB,CAA+BC,IAA/B,CAAoCsB,MAApC,CAA2Cc,YAA3C,EAAyD,CAAzD;AACAD,QAAAA,cAAc,GAAGZ,cAAc,CAACQ,UAAD,EAAaE,QAAb,EAAuBG,YAAvB,CAA/B;AACD;;AAED,UAAI,CAAC,yBAAQF,qBAAR,EAA+B,KAAKR,KAAL,CAAWC,KAAX,CAAiB5B,aAAjB,CAA+BC,IAA9D,CAAL,EAA0E;AACxEmC,QAAAA,cAAc,GAAGD,qBAAqB,CAACjC,GAAtB,CAA0B,UAACC,OAAD,EAAUC,KAAV;AAAA,iDACtCD,OADsC;AAEzCE,YAAAA,QAAQ,EAAED,KAAK,GAAGH,IAAI,CAACK,MAAb,GAAsBL,IAAI,CAACG,KAAD,CAAJ,CAAYC,QAAlC,GAA6C,IAFd;AAGzCE,YAAAA,WAAW,EAAEH,KAAK,GAAGH,IAAI,CAACK,MAAb,GAAsBL,IAAI,CAACG,KAAD,CAAJ,CAAYG,WAAlC,GAAgD;AAHpB;AAAA,SAA1B,CAAjB;AAKD,OAND,MAMO,IAAI,yBAAQ6B,cAAR,CAAJ,EAA6B;AAClCA,QAAAA,cAAc,GAAG3B,yBAAyB,CACxC0B,qBADwC,EAExCD,QAFwC,CAA1C;AAKAC,QAAAA,qBAAqB,CAACjC,GAAtB,CAA0B,UAACoC,MAAD,EAASxB,YAAT,EAA0B;AAClD,cAAMyB,UAAU,GAAGzB,YAAY,GAAGoB,QAAQ,CAAC5B,MAA3C;AACA,cAAIS,KAAJ;AACA,cAAIC,KAAJ;AACA,cAAIR,SAAJ;;AAEA,cAAI+B,UAAJ,EAAgB;AACdxB,YAAAA,KAAK,GAAGmB,QAAQ,CAACpB,YAAD,CAAR,CAAuBT,QAAvB,GACJiC,MAAM,CAACvB,KADH,GAEJmB,QAAQ,CAACpB,YAAD,CAAR,CAAuBC,KAF3B;AAGAC,YAAAA,KAAK,GAAGkB,QAAQ,CAACpB,YAAD,CAAR,CAAuBP,WAAvB,GACJ+B,MAAM,CAACtB,KADH,GAEJkB,QAAQ,CAACpB,YAAD,CAAR,CAAuBE,KAF3B;AAGD,WAPD,MAOO;AACLD,YAAAA,KAAK,GAAGuB,MAAM,CAACvB,KAAf;AACAC,YAAAA,KAAK,GAAGsB,MAAM,CAACtB,KAAf;AACAR,YAAAA,SAAS,GAAG,IAAZ;AACD;;AAED2B,UAAAA,qBAAqB,CAACrB,YAAD,CAArB,GAAsC;AACpCC,YAAAA,KAAK,EAAEA,KAD6B;AAEpCC,YAAAA,KAAK,EAAEA;AAF6B,WAAtC;AAID,SAvBD;AAwBD;;AAED,UACE,CAAC,yBAAQoB,cAAR,EAAwBnC,IAAxB,CAAD,IACA,CAAC,yBAAQkC,qBAAR,EAA+BH,UAA/B,CADD,IAEA,CAAC,yBAAQI,cAAR,EAAwBJ,UAAxB,CAFD,IAGC,yBAAQI,cAAR,KAA2B,yBAAQnC,IAAR,CAJ9B,EAKE;AACA,aAAKuC,QAAL,CAAc;AAAER,UAAAA,UAAU,EAAEI;AAAd,SAAd;AACD;AACF;;;WAED,kBAAS;AAAA;;AACP,yBAAmC,KAAKT,KAAxC;AAAA,UAAQc,OAAR,gBAAQA,OAAR;AAAA,UAAiBb,KAAjB,gBAAiBA,KAAjB;AAAA,UAAwBc,MAAxB,gBAAwBA,MAAxB;AACA,UAAQV,UAAR,GAAuB,KAAKD,KAA5B,CAAQC,UAAR;AAEA,0BACE,yEAEE;AAAK,QAAA,SAAS,EAAES,OAAO,CAACxD;AAAxB,sBACE;AAAK,QAAA,SAAS,EAAEwD,OAAO,CAAC3C,MAAxB;AAAgC,QAAA,GAAG,EAAC;AAApC,sBACE,oBAAC,sBAAD;AAAY,QAAA,SAAS,EAAC,KAAtB;AAA4B,QAAA,IAAI,EAAC;AAAjC,sBACE,sFADF,CADF,eAKE;AAAK,QAAA,GAAG,mCAA4B8B,KAAK,CAAC5B,aAAN,CAAoB2C,IAAhD;AAAR,sBACE,oBAAC,eAAD;AACE,QAAA,SAAS,EAAEf,KAAK,CAACgB,SADnB;AAEE,QAAA,IAAI,EAAEhB,KAAK,CAACiB,KAFd;AAGE,QAAA,MAAM,EAAEjB,KAAK,CAACkB,MAHhB;AAIE,QAAA,KAAK,EAAElB,KAAK,CAACmB,KAJf;AAKE,QAAA,MAAM,EAAEL,MALV;AAME,QAAA,IAAI,EAAEV,UANR;AAOE,QAAA,KAAK,EAAEJ,KAAK,CAACoB,KAPf;AAQE,QAAA,YAAY,EAAE,sBAAC/C,IAAD;AAAA,iBAAU,MAAI,CAACgD,UAAL,CAAgBhD,IAAhB,CAAV;AAAA,SARhB;AASE,QAAA,kBAAkB,EAAE2B,KAAK,CAACsB,kBAT5B;AAUE,QAAA,oBAAoB,EAAEtB,KAAK,CAACuB;AAV9B,QADF,CALF,CADF,CAFF,CADF;AA2BD;;;EAjJkCC,KAAK,CAACC,S;;;iCAA9B3B,e,eACQ;AACjBe,EAAAA,OAAO,EAAEa,sBAAUC,MAAV,CAAiBC,UADT;AAEjB5B,EAAAA,KAAK,EAAE0B,sBAAUC,MAAV,CAAiBC,UAFP;AAGjB3B,EAAAA,QAAQ,EAAEyB,sBAAUG,IAAV,CAAeD,UAHR;AAIjBd,EAAAA,MAAM,EAAEY,sBAAUI;AAJD,C;;eAmJN,wBAAW3E,MAAX,EAAmB2C,eAAnB,C","sourcesContent":["import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { Chart } from '@pie-lib/charting';\nimport isEqual from 'lodash/isEqual';\nimport isEmpty from 'lodash/isEmpty';\n\nimport Typography from '@material-ui/core/Typography';\n\nconst styles = (theme) => ({\n container: {\n marginTop: theme.spacing.unit * 3,\n marginBottom: theme.spacing.unit * 3,\n display: 'flex',\n flex: 1,\n },\n button: {\n marginTop: theme.spacing.unit * 3,\n cursor: 'pointer',\n background: '#eee',\n padding: theme.spacing.unit * 2,\n width: 'fit-content',\n borderRadius: '4px',\n },\n column: {\n flex: 1,\n },\n});\n\nconst addCategoryProps = (correctAnswer, data) =>\n correctAnswer.map((correct, index) => ({\n ...correct,\n editable: index < data.length ? data[index].editable : true,\n interactive: index < data.length ? data[index].interactive : true,\n deletable: index >= data.length ? true : false,\n }));\n\nconst updateCorrectResponseData = (correctAnswer, data) => {\n if (!correctAnswer) {\n return data;\n }\n\n const correctAnswerData = [...correctAnswer];\n\n let correctResponseDefinition = [];\n\n data.forEach((category, currentIndex) => {\n const editable = category.editable;\n const interactive = category.interactive;\n\n const label =\n editable && correctAnswer[currentIndex]?.label\n ? correctAnswer[currentIndex].label\n : category.label;\n\n const value =\n (interactive && correctAnswer[currentIndex]?.value) ||\n (interactive && correctAnswer[currentIndex]?.value == 0)\n ? correctAnswer[currentIndex].value\n : category.value;\n\n correctResponseDefinition[currentIndex] = {\n label: label,\n value: value,\n editable: category.editable,\n interactive: category.interactive,\n };\n });\n\n if (correctResponseDefinition.length < correctAnswer.length) {\n const missingCategories = correctAnswerData.slice(\n correctResponseDefinition.length,\n correctAnswer.length\n );\n\n return addCategoryProps(\n correctResponseDefinition.concat(missingCategories),\n data\n );\n }\n\n return correctResponseDefinition;\n};\n\nconst insertCategory = (correctAnswer, data) => {\n const positionToInsert = data.length - 1;\n const { editable, interactive, deletable, ...categoryToInsert } =\n data[data.length - 1];\n\n correctAnswer.splice(positionToInsert, 0, categoryToInsert);\n const correctAnswerData = [...correctAnswer];\n\n return addCategoryProps(correctAnswerData, data);\n};\n\nconst removeCategory = (correctAnswer, data, positionToRemove) => {\n correctAnswer.splice(positionToRemove, 1);\n\n const correctAnswerData = [...correctAnswer];\n\n return addCategoryProps(correctAnswerData, data);\n};\n\nexport class CorrectResponse extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n charts: PropTypes.array,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n categories: updateCorrectResponseData(\n props.model.correctAnswer.data,\n props.model.data\n ),\n };\n }\n\n changeData = (data) => {\n const { model, onChange } = this.props;\n const { correctAnswer } = model || {};\n\n onChange({\n ...model,\n correctAnswer: {\n ...correctAnswer,\n data: data.map(\n ({ interactive, editable, index, ...keepAttrs }) => keepAttrs\n ),\n },\n });\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const {\n model: {\n data: nextData = [],\n correctAnswer: { data: nextCorrectAnswerData = [] },\n } = {},\n } = nextProps;\n\n const { model: { data = [] } = {} } = this.props;\n\n const { categories } = this.state;\n let nextCategories = [];\n\n if (nextData.length > data.length) {\n nextCategories = insertCategory(nextCorrectAnswerData, nextData);\n }\n\n if (nextData.length < data.length) {\n let removedIndex = nextData.length;\n\n // we need to remove the category from the correct answer data and categories, from the same index it was removed from the data\n // index is a property of the nextData category\n for (let index = 0; index < nextData.length; index++) {\n if (nextData[index].index !== index) {\n removedIndex = index;\n break;\n }\n }\n\n this.props.model.correctAnswer.data.splice(removedIndex, 1);\n nextCategories = removeCategory(categories, nextData, removedIndex);\n }\n\n if (!isEqual(nextCorrectAnswerData, this.props.model.correctAnswer.data)) {\n nextCategories = nextCorrectAnswerData.map((correct, index) => ({\n ...correct,\n editable: index < data.length ? data[index].editable : true,\n interactive: index < data.length ? data[index].interactive : true,\n }));\n } else if (isEmpty(nextCategories)) {\n nextCategories = updateCorrectResponseData(\n nextCorrectAnswerData,\n nextData\n );\n\n nextCorrectAnswerData.map((answer, currentIndex) => {\n const dataExists = currentIndex < nextData.length;\n let label;\n let value;\n let deletable;\n\n if (dataExists) {\n label = nextData[currentIndex].editable\n ? answer.label\n : nextData[currentIndex].label;\n value = nextData[currentIndex].interactive\n ? answer.value\n : nextData[currentIndex].value;\n } else {\n label = answer.label;\n value = answer.value;\n deletable = true;\n }\n\n nextCorrectAnswerData[currentIndex] = {\n label: label,\n value: value,\n };\n });\n }\n\n if (\n !isEqual(nextCategories, data) ||\n !isEqual(nextCorrectAnswerData, categories) ||\n !isEqual(nextCategories, categories) ||\n (isEmpty(nextCategories) && isEmpty(data))\n ) {\n this.setState({ categories: nextCategories });\n }\n }\n\n render() {\n const { classes, model, charts } = this.props;\n const { categories } = this.state;\n\n return (\n <div>\n Define Correct Response\n <div className={classes.container}>\n <div className={classes.column} key=\"graph\">\n <Typography component=\"div\" type=\"body1\">\n <span>Use the tools below to define the correct answer.</span>\n </Typography>\n\n <div key={`correct-response-graph-${model.correctAnswer.name}`}>\n <Chart\n chartType={model.chartType}\n size={model.graph}\n domain={model.domain}\n range={model.range}\n charts={charts}\n data={categories}\n title={model.title}\n onDataChange={(data) => this.changeData(data)}\n addCategoryEnabled={model.addCategoryEnabled}\n categoryDefaultLabel={model.categoryDefaultLabel}\n />\n </div>\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(CorrectResponse);\n"],"file":"correct-response.js"}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"repository": "pie-framework/pie-elements",
|
|
7
|
-
"version": "2.7.3-next.
|
|
7
|
+
"version": "2.7.3-next.1193+99414aab4",
|
|
8
8
|
"description": "",
|
|
9
9
|
"scripts": {
|
|
10
10
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
},
|
|
26
26
|
"author": "",
|
|
27
27
|
"license": "ISC",
|
|
28
|
-
"gitHead": "
|
|
28
|
+
"gitHead": "99414aab49b4e7802c6b24731795bab1da80a556",
|
|
29
29
|
"main": "lib/index.js",
|
|
30
30
|
"module": "src/index.js"
|
|
31
31
|
}
|