@pie-element/rubric 1.6.5 → 1.6.6
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 +8 -0
- package/lib/main.js +16 -11
- package/lib/main.js.map +1 -1
- package/lib/print.js +114 -0
- package/lib/print.js.map +1 -0
- package/package.json +6 -2
- package/src/main.jsx +50 -40
- package/src/print.js +63 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
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
|
+
## [1.6.6](https://github.com/pie-framework/pie-elements/compare/@pie-element/rubric@1.6.5...@pie-element/rubric@1.6.6) (2021-11-01)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @pie-element/rubric
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
6
14
|
## [1.6.5](https://github.com/pie-framework/pie-elements/compare/@pie-element/rubric@1.6.4...@pie-element/rubric@1.6.5) (2021-10-04)
|
|
7
15
|
|
|
8
16
|
**Note:** Version bump only for package @pie-element/rubric
|
package/lib/main.js
CHANGED
|
@@ -92,20 +92,14 @@ var Rubric = /*#__PURE__*/function (_React$Component) {
|
|
|
92
92
|
|
|
93
93
|
var _this$props = this.props,
|
|
94
94
|
value = _this$props.value,
|
|
95
|
-
classes = _this$props.classes
|
|
95
|
+
classes = _this$props.classes,
|
|
96
|
+
animationsDisabled = _this$props.animationsDisabled;
|
|
96
97
|
|
|
97
98
|
if (value && value.points) {
|
|
98
99
|
var points = value.points,
|
|
99
100
|
sampleAnswers = value.sampleAnswers;
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
}, /*#__PURE__*/_react["default"].createElement(_Link["default"], {
|
|
103
|
-
href: this.dudUrl,
|
|
104
|
-
onClick: this.toggleRubric
|
|
105
|
-
}, this.state.linkPrefix, " Rubric"), /*#__PURE__*/_react["default"].createElement(_Collapse["default"], {
|
|
106
|
-
"in": this.state.rubricOpen,
|
|
107
|
-
timeout: "auto"
|
|
108
|
-
}, /*#__PURE__*/_react["default"].createElement(_List["default"], {
|
|
101
|
+
|
|
102
|
+
var rubricList = /*#__PURE__*/_react["default"].createElement(_List["default"], {
|
|
109
103
|
component: "nav"
|
|
110
104
|
}, points.map(function (desc, index) {
|
|
111
105
|
return _this2.shouldRenderPoint(index, value) && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, {
|
|
@@ -136,7 +130,17 @@ var Rubric = /*#__PURE__*/function (_React$Component) {
|
|
|
136
130
|
}
|
|
137
131
|
})
|
|
138
132
|
})));
|
|
139
|
-
}))
|
|
133
|
+
}));
|
|
134
|
+
|
|
135
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
136
|
+
className: classes.root
|
|
137
|
+
}, !animationsDisabled ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Link["default"], {
|
|
138
|
+
href: this.dudUrl,
|
|
139
|
+
onClick: this.toggleRubric
|
|
140
|
+
}, this.state.linkPrefix, " Rubric"), /*#__PURE__*/_react["default"].createElement(_Collapse["default"], {
|
|
141
|
+
"in": this.state.rubricOpen,
|
|
142
|
+
timeout: "auto"
|
|
143
|
+
}, rubricList)) : rubricList);
|
|
140
144
|
} else {
|
|
141
145
|
return null;
|
|
142
146
|
}
|
|
@@ -147,6 +151,7 @@ var Rubric = /*#__PURE__*/function (_React$Component) {
|
|
|
147
151
|
|
|
148
152
|
(0, _defineProperty2["default"])(Rubric, "propTypes", {
|
|
149
153
|
classes: _propTypes["default"].object.isRequired,
|
|
154
|
+
animationsDisabled: _propTypes["default"].bool,
|
|
150
155
|
value: RubricType
|
|
151
156
|
});
|
|
152
157
|
|
package/lib/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/main.jsx"],"names":["RubricType","PropTypes","shape","excludeZero","bool","points","arrayOf","string","sampleAnswers","Rubric","props","index","value","state","rubricOpen","linkPrefix","toggleRubric","bind","setState","classes","
|
|
1
|
+
{"version":3,"sources":["../src/main.jsx"],"names":["RubricType","PropTypes","shape","excludeZero","bool","points","arrayOf","string","sampleAnswers","Rubric","props","index","value","state","rubricOpen","linkPrefix","toggleRubric","bind","setState","classes","animationsDisabled","rubricList","map","desc","shouldRenderPoint","rubricCol","__html","marginLeft","root","dudUrl","React","Component","object","isRequired","styles","flex"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\nimport ListItem from '@material-ui/core/ListItem';\nimport List from '@material-ui/core/List';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Link from '@material-ui/core/Link';\nimport Collapse from '@material-ui/core/Collapse';\nimport PropTypes from 'prop-types';\n\nexport const RubricType = PropTypes.shape({\n excludeZero: PropTypes.bool,\n points: PropTypes.arrayOf(PropTypes.string),\n sampleAnswers: PropTypes.arrayOf(PropTypes.string),\n});\n\nclass Rubric extends React.Component {\n dudUrl = 'javascript:;';\n\n constructor(props) {\n super(props);\n this.state = {\n rubricOpen: false,\n linkPrefix: 'Show',\n };\n this.toggleRubric = this.toggleRubric.bind(this);\n }\n\n static propTypes = {\n classes: PropTypes.object.isRequired,\n animationsDisabled: PropTypes.bool,\n value: RubricType,\n };\n\n toggleRubric() {\n this.setState({ rubricOpen: !this.state.rubricOpen });\n this.setState({ linkPrefix: this.state.rubricOpen ? 'Show' : 'Hide' });\n }\n\n shouldRenderPoint = (index, value) => {\n if (!value.excludeZero) {\n return true;\n } else {\n return index !== 0;\n }\n };\n\n render() {\n const { value, classes, animationsDisabled } = this.props;\n\n if (value && value.points) {\n const { points, sampleAnswers } = value;\n\n const rubricList = (\n <List component=\"nav\">\n {points.map(\n (desc, index) =>\n this.shouldRenderPoint(index, value) && (\n <React.Fragment key={index}>\n <ListItem key={`P${index}`}>\n <ListItemText\n className={classes.rubricCol}\n primary={`${index} PTS`}\n />\n <ListItemText\n primary={\n <div dangerouslySetInnerHTML={{ __html: desc }}/>\n }\n />\n </ListItem>\n {sampleAnswers && sampleAnswers[index] && sampleAnswers[index] !== 'null' && (\n <ListItem key={`S${index}`}>\n <ListItemText\n className={classes.rubricCol}\n style={{ marginLeft: '20px' }}\n primary={'Sample Answer'}\n />\n <ListItemText\n primary={\n <div dangerouslySetInnerHTML={{ __html: sampleAnswers[index] }}/>\n }\n />\n </ListItem>\n )}\n </React.Fragment>\n )\n )}\n </List>\n );\n\n return (\n <div className={classes.root}>\n {!animationsDisabled ?\n <React.Fragment>\n <Link href={this.dudUrl} onClick={this.toggleRubric}>\n {this.state.linkPrefix} Rubric\n </Link>\n <Collapse in={this.state.rubricOpen} timeout=\"auto\">\n {rubricList}\n </Collapse>\n </React.Fragment>\n : rubricList\n }\n </div>\n );\n } else {\n return null;\n }\n }\n}\n\nconst styles = () => ({\n rubricCol: {\n flex: '0 1 auto',\n },\n});\n\nexport default withStyles(styles)(Rubric);\n"],"file":"main.js"}
|
package/lib/print.js
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
|
|
12
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
+
|
|
14
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
15
|
+
|
|
16
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
|
+
|
|
18
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
19
|
+
|
|
20
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
21
|
+
|
|
22
|
+
var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
|
|
23
|
+
|
|
24
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
25
|
+
|
|
26
|
+
var _react = _interopRequireDefault(require("react"));
|
|
27
|
+
|
|
28
|
+
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
29
|
+
|
|
30
|
+
var _debounce = _interopRequireDefault(require("lodash/debounce"));
|
|
31
|
+
|
|
32
|
+
var _main = _interopRequireDefault(require("./main"));
|
|
33
|
+
|
|
34
|
+
var _mathRendering = require("@pie-lib/math-rendering");
|
|
35
|
+
|
|
36
|
+
var _debug = _interopRequireDefault(require("debug"));
|
|
37
|
+
|
|
38
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
39
|
+
|
|
40
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
41
|
+
|
|
42
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
43
|
+
|
|
44
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
45
|
+
|
|
46
|
+
var log = (0, _debug["default"])('pie-element:rubric:print');
|
|
47
|
+
|
|
48
|
+
var preparePrintModel = function preparePrintModel(model, opts) {
|
|
49
|
+
var instr = opts.role === 'instructor';
|
|
50
|
+
|
|
51
|
+
if (!instr) {
|
|
52
|
+
return {};
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
model.value = _objectSpread({}, model);
|
|
56
|
+
model.mode = 'evaluate';
|
|
57
|
+
model.animationsDisabled = true;
|
|
58
|
+
return model;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
var RubricPrint = /*#__PURE__*/function (_HTMLElement) {
|
|
62
|
+
(0, _inherits2["default"])(RubricPrint, _HTMLElement);
|
|
63
|
+
|
|
64
|
+
var _super = _createSuper(RubricPrint);
|
|
65
|
+
|
|
66
|
+
function RubricPrint() {
|
|
67
|
+
var _this;
|
|
68
|
+
|
|
69
|
+
(0, _classCallCheck2["default"])(this, RubricPrint);
|
|
70
|
+
_this = _super.call(this);
|
|
71
|
+
_this._options = null;
|
|
72
|
+
_this._model = null;
|
|
73
|
+
_this._session = [];
|
|
74
|
+
_this._rerender = (0, _debounce["default"])(function () {
|
|
75
|
+
if (_this._model && _this._session) {
|
|
76
|
+
var printModel = preparePrintModel(_this._model, _this._options);
|
|
77
|
+
|
|
78
|
+
var element = _this._options && /*#__PURE__*/_react["default"].createElement(_main["default"], _objectSpread({}, printModel));
|
|
79
|
+
|
|
80
|
+
_reactDom["default"].render(element, (0, _assertThisInitialized2["default"])(_this), function () {
|
|
81
|
+
log('render complete - render math');
|
|
82
|
+
(0, _mathRendering.renderMath)((0, _assertThisInitialized2["default"])(_this));
|
|
83
|
+
});
|
|
84
|
+
} else {
|
|
85
|
+
log('skip');
|
|
86
|
+
}
|
|
87
|
+
}, 50, {
|
|
88
|
+
leading: false,
|
|
89
|
+
trailing: true
|
|
90
|
+
});
|
|
91
|
+
return _this;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
(0, _createClass2["default"])(RubricPrint, [{
|
|
95
|
+
key: "options",
|
|
96
|
+
set: function set(o) {
|
|
97
|
+
this._options = o;
|
|
98
|
+
}
|
|
99
|
+
}, {
|
|
100
|
+
key: "model",
|
|
101
|
+
set: function set(s) {
|
|
102
|
+
this._model = s;
|
|
103
|
+
|
|
104
|
+
this._rerender();
|
|
105
|
+
}
|
|
106
|
+
}, {
|
|
107
|
+
key: "connectedCallback",
|
|
108
|
+
value: function connectedCallback() {}
|
|
109
|
+
}]);
|
|
110
|
+
return RubricPrint;
|
|
111
|
+
}( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
|
|
112
|
+
|
|
113
|
+
exports["default"] = RubricPrint;
|
|
114
|
+
//# sourceMappingURL=print.js.map
|
package/lib/print.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/print.js"],"names":["log","preparePrintModel","model","opts","instr","role","value","mode","animationsDisabled","RubricPrint","_options","_model","_session","_rerender","printModel","element","React","createElement","Main","ReactDOM","render","leading","trailing","o","s","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,0BAAN,CAAZ;;AAEA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,KAAD,EAAQC,IAAR,EAAiB;AACzC,MAAMC,KAAK,GAAGD,IAAI,CAACE,IAAL,KAAc,YAA5B;;AAEA,MAAI,CAACD,KAAL,EAAY;AACV,WAAO,EAAP;AACD;;AAEDF,EAAAA,KAAK,CAACI,KAAN,qBAAmBJ,KAAnB;AACAA,EAAAA,KAAK,CAACK,IAAN,GAAa,UAAb;AACAL,EAAAA,KAAK,CAACM,kBAAN,GAA2B,IAA3B;AAEA,SAAON,KAAP;AACD,CAZD;;IAcqBO,W;;;;;AACnB,yBAAc;AAAA;;AAAA;AACZ;AACA,UAAKC,QAAL,GAAgB,IAAhB;AACA,UAAKC,MAAL,GAAc,IAAd;AACA,UAAKC,QAAL,GAAgB,EAAhB;AACA,UAAKC,SAAL,GAAiB,0BACf,YAAM;AACJ,UAAI,MAAKF,MAAL,IAAe,MAAKC,QAAxB,EAAkC;AAChC,YAAME,UAAU,GAAGb,iBAAiB,CAAC,MAAKU,MAAN,EAAc,MAAKD,QAAnB,CAApC;;AAEA,YAAMK,OAAO,GACX,MAAKL,QAAL,iBACAM,kBAAMC,aAAN,CAAoBC,gBAApB,oBACKJ,UADL,EAFF;;AAMAK,6BAASC,MAAT,CAAgBL,OAAhB,kDAA+B,YAAM;AACnCf,UAAAA,GAAG,CAAC,+BAAD,CAAH;AACA;AACD,SAHD;AAID,OAbD,MAaO;AACLA,QAAAA,GAAG,CAAC,MAAD,CAAH;AACD;AACF,KAlBc,EAmBf,EAnBe,EAoBf;AAAEqB,MAAAA,OAAO,EAAE,KAAX;AAAkBC,MAAAA,QAAQ,EAAE;AAA5B,KApBe,CAAjB;AALY;AA2Bb;;;;SACD,aAAYC,CAAZ,EAAe;AACb,WAAKb,QAAL,GAAgBa,CAAhB;AACD;;;SAED,aAAUC,CAAV,EAAa;AACX,WAAKb,MAAL,GAAca,CAAd;;AACA,WAAKX,SAAL;AACD;;;WAED,6BAAoB,CAAE;;;kDAtCiBY,W","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport debounce from 'lodash/debounce';\nimport Main from './main';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport debug from 'debug';\n\nconst log = debug('pie-element:rubric:print');\n\nconst preparePrintModel = (model, opts) => {\n const instr = opts.role === 'instructor';\n\n if (!instr) {\n return {};\n }\n\n model.value = { ...model };\n model.mode = 'evaluate';\n model.animationsDisabled = true;\n\n return model;\n};\n\nexport default class RubricPrint extends HTMLElement {\n constructor() {\n super();\n this._options = null;\n this._model = null;\n this._session = [];\n this._rerender = debounce(\n () => {\n if (this._model && this._session) {\n const printModel = preparePrintModel(this._model, this._options);\n\n const element =\n this._options &&\n React.createElement(Main, {\n ...printModel,\n });\n\n ReactDOM.render(element, this, () => {\n log('render complete - render math');\n renderMath(this);\n });\n } else {\n log('skip');\n }\n },\n 50,\n { leading: false, trailing: true }\n );\n }\n set options(o) {\n this._options = o;\n }\n\n set model(s) {\n this._model = s;\n this._rerender();\n }\n\n connectedCallback() {}\n}\n"],"file":"print.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/rubric",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.6",
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"module": "src/index.js",
|
|
6
6
|
"description": "Rubric Scoring Interaction",
|
|
@@ -14,8 +14,12 @@
|
|
|
14
14
|
},
|
|
15
15
|
"author": "pie framework developers",
|
|
16
16
|
"license": "ISC",
|
|
17
|
-
"gitHead": "
|
|
17
|
+
"gitHead": "39691eb79f1f5ece91c831add33b05871b20828b",
|
|
18
18
|
"scripts": {
|
|
19
19
|
"postpublish": "../../scripts/postpublish"
|
|
20
|
+
},
|
|
21
|
+
"exports": {
|
|
22
|
+
".": "./src/index.js",
|
|
23
|
+
"./print": "./src/print.js"
|
|
20
24
|
}
|
|
21
25
|
}
|
package/src/main.jsx
CHANGED
|
@@ -27,6 +27,7 @@ class Rubric extends React.Component {
|
|
|
27
27
|
|
|
28
28
|
static propTypes = {
|
|
29
29
|
classes: PropTypes.object.isRequired,
|
|
30
|
+
animationsDisabled: PropTypes.bool,
|
|
30
31
|
value: RubricType,
|
|
31
32
|
};
|
|
32
33
|
|
|
@@ -44,52 +45,61 @@ class Rubric extends React.Component {
|
|
|
44
45
|
};
|
|
45
46
|
|
|
46
47
|
render() {
|
|
47
|
-
const { value, classes } = this.props;
|
|
48
|
+
const { value, classes, animationsDisabled } = this.props;
|
|
48
49
|
|
|
49
50
|
if (value && value.points) {
|
|
50
51
|
const { points, sampleAnswers } = value;
|
|
51
52
|
|
|
53
|
+
const rubricList = (
|
|
54
|
+
<List component="nav">
|
|
55
|
+
{points.map(
|
|
56
|
+
(desc, index) =>
|
|
57
|
+
this.shouldRenderPoint(index, value) && (
|
|
58
|
+
<React.Fragment key={index}>
|
|
59
|
+
<ListItem key={`P${index}`}>
|
|
60
|
+
<ListItemText
|
|
61
|
+
className={classes.rubricCol}
|
|
62
|
+
primary={`${index} PTS`}
|
|
63
|
+
/>
|
|
64
|
+
<ListItemText
|
|
65
|
+
primary={
|
|
66
|
+
<div dangerouslySetInnerHTML={{ __html: desc }}/>
|
|
67
|
+
}
|
|
68
|
+
/>
|
|
69
|
+
</ListItem>
|
|
70
|
+
{sampleAnswers && sampleAnswers[index] && sampleAnswers[index] !== 'null' && (
|
|
71
|
+
<ListItem key={`S${index}`}>
|
|
72
|
+
<ListItemText
|
|
73
|
+
className={classes.rubricCol}
|
|
74
|
+
style={{ marginLeft: '20px' }}
|
|
75
|
+
primary={'Sample Answer'}
|
|
76
|
+
/>
|
|
77
|
+
<ListItemText
|
|
78
|
+
primary={
|
|
79
|
+
<div dangerouslySetInnerHTML={{ __html: sampleAnswers[index] }}/>
|
|
80
|
+
}
|
|
81
|
+
/>
|
|
82
|
+
</ListItem>
|
|
83
|
+
)}
|
|
84
|
+
</React.Fragment>
|
|
85
|
+
)
|
|
86
|
+
)}
|
|
87
|
+
</List>
|
|
88
|
+
);
|
|
89
|
+
|
|
52
90
|
return (
|
|
53
91
|
<div className={classes.root}>
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
{
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
className={classes.rubricCol}
|
|
66
|
-
primary={`${index} PTS`}
|
|
67
|
-
/>
|
|
68
|
-
<ListItemText
|
|
69
|
-
primary={
|
|
70
|
-
<div dangerouslySetInnerHTML={{ __html: desc }} />
|
|
71
|
-
}
|
|
72
|
-
/>
|
|
73
|
-
</ListItem>
|
|
74
|
-
{sampleAnswers && sampleAnswers[index] && sampleAnswers[index] !== 'null' && (
|
|
75
|
-
<ListItem key={`S${index}`}>
|
|
76
|
-
<ListItemText
|
|
77
|
-
className={classes.rubricCol}
|
|
78
|
-
style={{marginLeft: '20px'}}
|
|
79
|
-
primary={'Sample Answer'}
|
|
80
|
-
/>
|
|
81
|
-
<ListItemText
|
|
82
|
-
primary={
|
|
83
|
-
<div dangerouslySetInnerHTML={{ __html: sampleAnswers[index] }} />
|
|
84
|
-
}
|
|
85
|
-
/>
|
|
86
|
-
</ListItem>
|
|
87
|
-
)}
|
|
88
|
-
</React.Fragment>
|
|
89
|
-
)
|
|
90
|
-
)}
|
|
91
|
-
</List>
|
|
92
|
-
</Collapse>
|
|
92
|
+
{!animationsDisabled ?
|
|
93
|
+
<React.Fragment>
|
|
94
|
+
<Link href={this.dudUrl} onClick={this.toggleRubric}>
|
|
95
|
+
{this.state.linkPrefix} Rubric
|
|
96
|
+
</Link>
|
|
97
|
+
<Collapse in={this.state.rubricOpen} timeout="auto">
|
|
98
|
+
{rubricList}
|
|
99
|
+
</Collapse>
|
|
100
|
+
</React.Fragment>
|
|
101
|
+
: rubricList
|
|
102
|
+
}
|
|
93
103
|
</div>
|
|
94
104
|
);
|
|
95
105
|
} else {
|
package/src/print.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import ReactDOM from 'react-dom';
|
|
3
|
+
import debounce from 'lodash/debounce';
|
|
4
|
+
import Main from './main';
|
|
5
|
+
import { renderMath } from '@pie-lib/math-rendering';
|
|
6
|
+
import debug from 'debug';
|
|
7
|
+
|
|
8
|
+
const log = debug('pie-element:rubric:print');
|
|
9
|
+
|
|
10
|
+
const preparePrintModel = (model, opts) => {
|
|
11
|
+
const instr = opts.role === 'instructor';
|
|
12
|
+
|
|
13
|
+
if (!instr) {
|
|
14
|
+
return {};
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
model.value = { ...model };
|
|
18
|
+
model.mode = 'evaluate';
|
|
19
|
+
model.animationsDisabled = true;
|
|
20
|
+
|
|
21
|
+
return model;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export default class RubricPrint extends HTMLElement {
|
|
25
|
+
constructor() {
|
|
26
|
+
super();
|
|
27
|
+
this._options = null;
|
|
28
|
+
this._model = null;
|
|
29
|
+
this._session = [];
|
|
30
|
+
this._rerender = debounce(
|
|
31
|
+
() => {
|
|
32
|
+
if (this._model && this._session) {
|
|
33
|
+
const printModel = preparePrintModel(this._model, this._options);
|
|
34
|
+
|
|
35
|
+
const element =
|
|
36
|
+
this._options &&
|
|
37
|
+
React.createElement(Main, {
|
|
38
|
+
...printModel,
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
ReactDOM.render(element, this, () => {
|
|
42
|
+
log('render complete - render math');
|
|
43
|
+
renderMath(this);
|
|
44
|
+
});
|
|
45
|
+
} else {
|
|
46
|
+
log('skip');
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
50,
|
|
50
|
+
{ leading: false, trailing: true }
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
set options(o) {
|
|
54
|
+
this._options = o;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
set model(s) {
|
|
58
|
+
this._model = s;
|
|
59
|
+
this._rerender();
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
connectedCallback() {}
|
|
63
|
+
}
|