@instructure/quiz-core 17.58.2-rc.0 → 17.58.2-rc.10

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.
Files changed (63) hide show
  1. package/es/banks/api/banks.js +35 -1
  2. package/es/banks/components/Bank/index.js +16 -7
  3. package/es/banks/components/Bank/presenter.js +198 -18
  4. package/es/building/components/layout/header/BuildingButtons/index.js +2 -0
  5. package/es/building/components/layout/header/BuildingButtons/presenter.js +8 -0
  6. package/es/building/components/resources/BanksTray/presenter.js +2 -1
  7. package/es/common/actions/sharedBanks.js +2 -2
  8. package/es/index.js +1 -0
  9. package/es/moderating/components/events/Event.js +1 -1
  10. package/es/moderating/components/resources/AccommodationsModal/index.js +1 -1
  11. package/es/moderating/components/resources/ModerateTable/presenter.js +2 -2
  12. package/es/moderating/components/resources/ModerateTableRow/index.js +1 -1
  13. package/es/reporting/components/charts/QuintileDistribution/presenter.js +15 -2
  14. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/index.js +2 -0
  15. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/presenter.js +64 -0
  16. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/theme.js +3 -0
  17. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/index.js +2 -0
  18. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/presenter.js +75 -0
  19. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/theme.js +6 -0
  20. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/index.js +2 -0
  21. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/popoverContent.js +18 -0
  22. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +262 -0
  23. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/theme.js +12 -0
  24. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/presenter.js +59 -58
  25. package/es/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/index.js +68 -0
  26. package/es/reporting/components/resources/NewQuizAndItemAnalysis/charts/ScoreDistribution/index.js +2 -0
  27. package/es/reporting/components/resources/NewQuizAndItemAnalysis/charts/ScoreDistribution/presenter.js +84 -0
  28. package/es/reporting/components/resources/NewQuizAndItemAnalysis/charts/ScoreDistribution/theme.js +12 -0
  29. package/es/reporting/components/resources/NewQuizAndItemAnalysis/presenter.js +13 -18
  30. package/es/reporting/components/resources/NewQuizAndItemAnalysis/utils.js +1 -1
  31. package/es/reporting/components/resources/ReportCard/index.js +1 -1
  32. package/lib/banks/api/banks.js +40 -2
  33. package/lib/banks/components/Bank/index.js +15 -2
  34. package/lib/banks/components/Bank/presenter.js +203 -17
  35. package/lib/building/components/layout/header/BuildingButtons/index.js +3 -0
  36. package/lib/building/components/layout/header/BuildingButtons/presenter.js +8 -0
  37. package/lib/building/components/resources/BanksTray/presenter.js +2 -1
  38. package/lib/common/actions/sharedBanks.js +2 -2
  39. package/lib/index.js +107 -98
  40. package/lib/moderating/components/events/Event.js +1 -1
  41. package/lib/moderating/components/resources/AccommodationsModal/index.js +1 -1
  42. package/lib/moderating/components/resources/ModerateTable/presenter.js +2 -2
  43. package/lib/moderating/components/resources/ModerateTableRow/index.js +1 -1
  44. package/lib/reporting/components/charts/QuintileDistribution/presenter.js +15 -2
  45. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/index.js +11 -0
  46. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/presenter.js +83 -0
  47. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/theme.js +10 -0
  48. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/index.js +11 -0
  49. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/presenter.js +95 -0
  50. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/theme.js +13 -0
  51. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/index.js +11 -0
  52. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/popoverContent.js +27 -0
  53. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +291 -0
  54. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/theme.js +19 -0
  55. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/presenter.js +64 -63
  56. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/index.js +91 -0
  57. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/charts/ScoreDistribution/index.js +11 -0
  58. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/charts/ScoreDistribution/presenter.js +106 -0
  59. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/charts/ScoreDistribution/theme.js +19 -0
  60. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/presenter.js +15 -20
  61. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/utils.js +1 -1
  62. package/lib/reporting/components/resources/ReportCard/index.js +1 -1
  63. package/package.json +9 -9
@@ -19,8 +19,6 @@ var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
19
19
 
20
20
  var _uiHeading = require("@instructure/ui-heading");
21
21
 
22
- var _uiMetric = require("@instructure/ui-metric");
23
-
24
22
  var _react = _interopRequireWildcard(require("react"));
25
23
 
26
24
  var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
@@ -33,41 +31,39 @@ var _uiThemeable = require("@instructure/ui-themeable");
33
31
 
34
32
  var _theme = _interopRequireDefault(require("./theme.js"));
35
33
 
36
- var _utils = require("../utils.js");
37
-
38
- var _index2 = _interopRequireDefault(require("../MetricPopover/index.js"));
39
-
40
34
  var _formatTimespan = require("../../../../../common/util/formatTimespan.js");
41
35
 
42
36
  var _propTypes = _interopRequireDefault(require("prop-types"));
43
37
 
44
- var _index3 = _interopRequireDefault(require("../../../../../common/components/shared/Card/index.js"));
38
+ var _index2 = _interopRequireDefault(require("../../../../../common/components/shared/Card/index.js"));
39
+
40
+ var _index3 = _interopRequireDefault(require("../AnalysisPopoverMetric/index.js"));
41
+
42
+ var _index4 = _interopRequireDefault(require("../AnalysisMetric/index.js"));
43
+
44
+ var _presenter = require("../charts/ScoreDistribution/presenter.js");
45
45
 
46
46
  var _dec, _class, _class2, _temp;
47
47
 
48
48
  var styles = {
49
- componentId: 'bsfUh',
49
+ componentId: 'ePPpE',
50
50
  template: function template(theme) {
51
- return "\n\n.bsfUh_eDnN{display:flex;justify-content:space-between;padding-bottom:".concat(theme.headingPadding || 'inherit', "}\n\n.bsfUh_eKXQ{padding:").concat(theme.cardWrapperPadding || 'inherit', ";position:relative}\n\n.bsfUh_crZr{padding-top:").concat(theme.metricGroupPaddingTop || 'inherit', "}\n\n.bsfUh_eckF{text-transform:uppercase}\n\n.bsfUh_dPzc,.bsfUh_cpZE{column-gap:").concat(theme.metricsColumnGap || 'inherit', ";display:flex;flex-wrap:wrap;justify-content:flex-start;row-gap:1.5rem}\n\n.bsfUh_dPzc{margin-left:-8px}\n\n.bsfUh_dqHR{padding-left:5px}\n\n.bsfUh_bTHH{position:absolute;right:").concat(theme.viewPadding || 'inherit', ";top:").concat(theme.viewPadding || 'inherit', "}");
51
+ return "\n\n.ePPpE_eDnN{display:flex;justify-content:space-between;padding-bottom:".concat(theme.headingPadding || 'inherit', "}\n\n.ePPpE_eKXQ{padding:").concat(theme.cardWrapperPadding || 'inherit', ";position:relative}\n\n.ePPpE_crZr{padding-top:").concat(theme.metricGroupPaddingTop || 'inherit', "}\n\n.ePPpE_bTHH{position:absolute;right:").concat(theme.viewPadding || 'inherit', ";top:").concat(theme.viewPadding || 'inherit', "}\n\n.ePPpE_dPzc,.ePPpE_cpZE{column-gap:").concat(theme.metricsColumnGap || 'inherit', ";display:flex;flex-wrap:wrap;justify-content:flex-start;row-gap:1.5rem}\n\n.ePPpE_dPzc{margin-left:-8px}");
52
52
  },
53
- 'heading': 'bsfUh_eDnN',
54
- 'cardWrapper': 'bsfUh_eKXQ',
55
- 'container': 'bsfUh_crZr',
56
- 'metricLabel': 'bsfUh_eckF',
57
- 'metricGroup': 'bsfUh_dPzc',
58
- 'metricsWrapper': 'bsfUh_cpZE',
59
- 'popoverContainer': 'bsfUh_dqHR',
60
- 'expandButtonContainer': 'bsfUh_bTHH'
53
+ 'heading': 'ePPpE_eDnN',
54
+ 'cardWrapper': 'ePPpE_eKXQ',
55
+ 'container': 'ePPpE_crZr',
56
+ 'expandButtonContainer': 'ePPpE_bTHH',
57
+ 'metricGroup': 'ePPpE_dPzc',
58
+ 'metricsWrapper': 'ePPpE_cpZE'
61
59
  };
62
60
  var stdDevPopoverTexts = {
63
- metricLabel: 'standard deviation',
64
61
  title: 'Lorem ipsum ',
65
62
  subtitle: 'subtitle',
66
63
  body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor',
67
64
  screenReaderLabel: 'standard deviation tooltip'
68
65
  };
69
66
  var cronbachsAlphaPopoverTexts = {
70
- metricLabel: 'cronbach\'s alpha',
71
67
  title: 'Lorem ipsum ',
72
68
  subtitle: 'subtitle',
73
69
  body: 'cronbach\'s alpha description',
@@ -107,50 +103,28 @@ var NewQuizAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
107
103
  className: styles.container
108
104
  }, /*#__PURE__*/_react.default.createElement("div", {
109
105
  className: styles.metricGroup
110
- }, _this.renderMetric('median_percentage', (0, _formatMessage.default)('median score'), _formatMessage.default.number(scores === null || scores === void 0 ? void 0 : scores.median_percentage), '%'), _this.renderMetricWithPopover('stddev', stdDevPopoverTexts, _formatMessage.default.number(scores === null || scores === void 0 ? void 0 : scores.stddev)), _this.renderMetricWithPopover('cronbachs_alpha', cronbachsAlphaPopoverTexts, _formatMessage.default.number(scores === null || scores === void 0 ? void 0 : scores.cronbachs_alpha))));
106
+ }, /*#__PURE__*/_react.default.createElement(_index4.default, {
107
+ metricKey: "median_percentage",
108
+ label: (0, _formatMessage.default)('Median Score'),
109
+ value: _formatMessage.default.number(scores === null || scores === void 0 ? void 0 : scores.median_percentage),
110
+ suffix: "%"
111
+ }), /*#__PURE__*/_react.default.createElement(_index3.default, {
112
+ metricKey: "stddev",
113
+ value: _formatMessage.default.number(scores === null || scores === void 0 ? void 0 : scores.stddev),
114
+ label: (0, _formatMessage.default)('Standard Deviation'),
115
+ popoverDescription: stdDevPopoverTexts
116
+ }), /*#__PURE__*/_react.default.createElement(_index3.default, {
117
+ metricKey: "cronbachs_alpha",
118
+ value: _formatMessage.default.number(scores === null || scores === void 0 ? void 0 : scores.cronbachs_alpha),
119
+ label: (0, _formatMessage.default)('Cronbach\'s Alpha'),
120
+ popoverDescription: cronbachsAlphaPopoverTexts
121
+ })));
111
122
  };
112
123
 
113
124
  return _this;
114
125
  }
115
126
 
116
127
  (0, _createClass2.default)(NewQuizAnalysis, [{
117
- key: "renderLabelWithPopover",
118
- value: function renderLabelWithPopover(texts) {
119
- return /*#__PURE__*/_react.default.createElement("span", {
120
- className: styles.metricLabel
121
- }, texts.metricLabel, /*#__PURE__*/_react.default.createElement("span", {
122
- className: styles.popoverContainer
123
- }, /*#__PURE__*/_react.default.createElement(_index2.default, texts)));
124
- }
125
- }, {
126
- key: "renderMetric",
127
- value: function renderMetric(key, label, value, suffix) {
128
- return /*#__PURE__*/_react.default.createElement(_uiMetric.Metric, {
129
- theme: {
130
- valueFontWeight: 500
131
- },
132
- textAlign: "start",
133
- key: key,
134
- renderLabel: /*#__PURE__*/_react.default.createElement("span", {
135
- className: styles.metricLabel
136
- }, label),
137
- renderValue: (0, _utils.getSanitizedMetricValue)(value, suffix)
138
- });
139
- }
140
- }, {
141
- key: "renderMetricWithPopover",
142
- value: function renderMetricWithPopover(key, texts, value) {
143
- return /*#__PURE__*/_react.default.createElement(_uiMetric.Metric, {
144
- theme: {
145
- valueFontWeight: 500
146
- },
147
- textAlign: "start",
148
- key: key,
149
- renderLabel: this.renderLabelWithPopover(texts),
150
- renderValue: (0, _utils.getSanitizedMetricValue)(value)
151
- });
152
- }
153
- }, {
154
128
  key: "render",
155
129
  value: function render() {
156
130
  var quizAnalysis = this.props.quizAnalysis;
@@ -158,7 +132,7 @@ var NewQuizAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
158
132
  attempts = quizAnalysis.attempts,
159
133
  metadata = quizAnalysis.metadata;
160
134
  var expanded = this.state.expanded;
161
- return /*#__PURE__*/_react.default.createElement(_index3.default, {
135
+ return /*#__PURE__*/_react.default.createElement(_index2.default, {
162
136
  className: styles.cardWrapper
163
137
  }, /*#__PURE__*/_react.default.createElement("div", {
164
138
  className: styles.heading
@@ -169,15 +143,40 @@ var NewQuizAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
169
143
  className: styles.metricGroup
170
144
  }, /*#__PURE__*/_react.default.createElement("div", {
171
145
  className: styles.metricsWrapper
172
- }, this.renderMetric('highscore', (0, _formatMessage.default)('high score'), scores === null || scores === void 0 ? void 0 : scores.max_percentage, '%'), this.renderMetric('lowscore', (0, _formatMessage.default)('low score'), scores === null || scores === void 0 ? void 0 : scores.min_percentage, '%'), this.renderMetric('meanscore', (0, _formatMessage.default)('mean score'), scores === null || scores === void 0 ? void 0 : scores.mean_percentage, '%')), /*#__PURE__*/_react.default.createElement("div", {
146
+ }, /*#__PURE__*/_react.default.createElement(_index4.default, {
147
+ metricKey: "highscore",
148
+ label: (0, _formatMessage.default)('high score'),
149
+ value: scores === null || scores === void 0 ? void 0 : scores.max_percentage,
150
+ suffix: "%"
151
+ }), /*#__PURE__*/_react.default.createElement(_index4.default, {
152
+ metricKey: "lowscore",
153
+ label: (0, _formatMessage.default)('low score'),
154
+ value: scores === null || scores === void 0 ? void 0 : scores.min_percentage,
155
+ suffix: "%"
156
+ }), /*#__PURE__*/_react.default.createElement(_index4.default, {
157
+ metricKey: "meanscore",
158
+ label: (0, _formatMessage.default)('mean score'),
159
+ value: scores === null || scores === void 0 ? void 0 : scores.mean_percentage,
160
+ suffix: "%"
161
+ })), /*#__PURE__*/_react.default.createElement("div", {
173
162
  className: styles.metricsWrapper
174
- }, this.renderMetric('average_attempts', (0, _formatMessage.default)('average attempts'), _formatMessage.default.number(attempts === null || attempts === void 0 ? void 0 : attempts.average_attempts)), this.renderMetric('mean_elapsed_sec', (0, _formatMessage.default)('mean elapsed time'), (0, _formatTimespan.formatTimeToFullNumeric)(attempts === null || attempts === void 0 ? void 0 : attempts.mean_elapsed_sec))), /*#__PURE__*/_react.default.createElement("div", {
163
+ }, /*#__PURE__*/_react.default.createElement(_index4.default, {
164
+ metricKey: "average_attempts",
165
+ label: (0, _formatMessage.default)('average attempts'),
166
+ value: _formatMessage.default.number(attempts === null || attempts === void 0 ? void 0 : attempts.average_attempts)
167
+ }), /*#__PURE__*/_react.default.createElement(_index4.default, {
168
+ metricKey: "mean_elapsed_sec",
169
+ label: (0, _formatMessage.default)('mean elapsed time'),
170
+ value: (0, _formatTimespan.formatTimeToFullNumeric)(attempts === null || attempts === void 0 ? void 0 : attempts.mean_elapsed_sec)
171
+ })), /*#__PURE__*/_react.default.createElement("div", {
175
172
  className: styles.expandButtonContainer
176
173
  }, /*#__PURE__*/_react.default.createElement(_index.default, {
177
174
  onClick: this.handleToggle,
178
175
  title: expanded ? (0, _formatMessage.default)('collapse quiz analysis') : (0, _formatMessage.default)('expand quiz analysis'),
179
176
  isExpanded: expanded
180
- }))), expanded && this.renderExpanded(), /*#__PURE__*/_react.default.createElement(_uiText.Text, {
177
+ }))), expanded && this.renderExpanded(), /*#__PURE__*/_react.default.createElement(_presenter.ScoreDistribution, {
178
+ decileDistribution: quizAnalysis.scores.decile_distribution
179
+ }), /*#__PURE__*/_react.default.createElement(_uiText.Text, {
181
180
  size: "x-small"
182
181
  }, _ref, /*#__PURE__*/_react.default.createElement("b", null, (0, _formatMessage.default)('Data Last Updated:')), "\xA0", _formatMessage.default.date(Date.parse(quizAnalysis.created_timestamp), 'medium')));
183
182
  }
@@ -186,10 +185,10 @@ var NewQuizAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
186
185
  return NewQuizAnalysis;
187
186
  }(_react.Component), _class2.propTypes = {
188
187
  quizAnalysis: _propTypes.default.shape({
189
- created_timestamp: _propTypes.default.string,
188
+ created_timestamp: _propTypes.default.string.isRequired,
190
189
  metadata: _propTypes.default.shape({
191
190
  quiz_title: _propTypes.default.string
192
- }),
191
+ }).isRequired,
193
192
  scores: _propTypes.default.shape({
194
193
  decile_distribution: _propTypes.default.arrayOf(_propTypes.default.number),
195
194
  cronbachs_alpha: _propTypes.default.number,
@@ -207,5 +206,7 @@ var NewQuizAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
207
206
  average_attempts: _propTypes.default.number
208
207
  }).isRequired
209
208
  }).isRequired
209
+ }, _class2.defaultProps = {
210
+ quizAnalysis: {}
210
211
  }, _temp)) || _class);
211
212
  exports.NewQuizAnalysis = NewQuizAnalysis;
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.default = exports.NewQuizAndItemAnalysisReportCard = void 0;
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
+
16
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
+
18
+ var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
19
+
20
+ var _react = _interopRequireWildcard(require("react"));
21
+
22
+ var _propTypes = _interopRequireDefault(require("prop-types"));
23
+
24
+ var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
25
+
26
+ var _uiText = require("@instructure/ui-text");
27
+
28
+ var _uiLink = require("@instructure/ui-link");
29
+
30
+ var _uiFlex = require("@instructure/ui-flex");
31
+
32
+ var _uiThemeable = require("@instructure/ui-themeable");
33
+
34
+ var _index = _interopRequireDefault(require("../../../../../common/components/shared/Card/index.js"));
35
+
36
+ var _theme = _interopRequireDefault(require("../../ReportCard/theme.js"));
37
+
38
+ var _dec, _class, _class2, _temp;
39
+
40
+ var styles = {
41
+ componentId: 'eRzKS',
42
+ template: function template(theme) {
43
+ return "\n\n.eRzKS_fbIL{border-radius:".concat(theme.cardBorderRadius || 'inherit', ";box-shadow:").concat(theme.cardBoxShadow || 'inherit', ";display:inline-flex;flex-direction:column;height:").concat(theme.cardHeight || 'inherit', ";margin:").concat(theme.cardMargin || 'inherit', ";padding:").concat(theme.cardPadding || 'inherit', ";width:").concat(theme.cardWidth || 'inherit', "}\n\n.eRzKS_ebWM{padding-top:").concat(theme.detailPadding || 'inherit', "}");
44
+ },
45
+ 'card': 'eRzKS_fbIL',
46
+ 'details': 'eRzKS_ebWM'
47
+ };
48
+ var NewQuizAndItemAnalysisReportCard = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
49
+ (0, _inherits2.default)(NewQuizAndItemAnalysisReportCard, _Component);
50
+
51
+ var _super = (0, _createSuper2.default)(NewQuizAndItemAnalysisReportCard);
52
+
53
+ function NewQuizAndItemAnalysisReportCard() {
54
+ (0, _classCallCheck2.default)(this, NewQuizAndItemAnalysisReportCard);
55
+ return _super.apply(this, arguments);
56
+ }
57
+
58
+ (0, _createClass2.default)(NewQuizAndItemAnalysisReportCard, [{
59
+ key: "render",
60
+ value: function render() {
61
+ var _this$props = this.props,
62
+ name = _this$props.name,
63
+ href = _this$props.href;
64
+ return /*#__PURE__*/_react.default.createElement(_index.default, {
65
+ className: styles.card
66
+ }, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
67
+ direction: "column"
68
+ }, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, null, /*#__PURE__*/_react.default.createElement(_uiText.Text, {
69
+ size: "medium",
70
+ weight: "bold"
71
+ }, name)), /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
72
+ align: "end"
73
+ }, /*#__PURE__*/_react.default.createElement(_uiLink.Link, {
74
+ href: href
75
+ }, /*#__PURE__*/_react.default.createElement(_uiText.Text, {
76
+ size: "small"
77
+ }, (0, _formatMessage.default)('View Report'))))));
78
+ }
79
+ }]);
80
+ NewQuizAndItemAnalysisReportCard.displayName = "NewQuizAndItemAnalysisReportCard";
81
+ return NewQuizAndItemAnalysisReportCard;
82
+ }(_react.Component), _class2.propTypes = {
83
+ name: _propTypes.default.node,
84
+ href: _propTypes.default.string
85
+ }, _class2.defaultProps = {
86
+ name: void 0,
87
+ href: void 0
88
+ }, _temp)) || _class);
89
+ exports.NewQuizAndItemAnalysisReportCard = NewQuizAndItemAnalysisReportCard;
90
+ var _default = NewQuizAndItemAnalysisReportCard;
91
+ exports.default = _default;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _presenter = require("./presenter.js");
9
+
10
+ var _default = _presenter.ScoreDistribution;
11
+ exports.default = _default;
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.ScoreDistribution = void 0;
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
+
16
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
+
18
+ var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
19
+
20
+ var _react = _interopRequireWildcard(require("react"));
21
+
22
+ var _index = _interopRequireDefault(require("../../../../charts/QuintileDistribution/index.js"));
23
+
24
+ var _uiThemeable = require("@instructure/ui-themeable");
25
+
26
+ var _theme = _interopRequireDefault(require("./theme.js"));
27
+
28
+ var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
29
+
30
+ var _uiText = require("@instructure/ui-text");
31
+
32
+ var _uiHeading = require("@instructure/ui-heading");
33
+
34
+ var _index2 = _interopRequireDefault(require("../../../../charts/Legend/index.js"));
35
+
36
+ var _dec, _class, _temp;
37
+
38
+ var styles = {
39
+ componentId: 'eRgoL',
40
+ template: function template(theme) {
41
+ return "\n\n.eRgoL_YBfL{background-color:".concat(theme.legendRectFillColor || 'inherit', "}\n\n.eRgoL_eDZF{column-gap:10px;display:inline-flex;padding:").concat(theme.legendPadding || 'inherit', " 0}\n\n.eRgoL_dVXF{margin:").concat(theme.legendMargin || 'inherit', " 0}\n\n.eRgoL_dxZa,[dir=ltr] .eRgoL_dxZa,[dir=rtl] .eRgoL_dxZa{text-align:center}");
42
+ },
43
+ 'legendRect': 'eRgoL_YBfL',
44
+ 'legendContainer': 'eRgoL_eDZF',
45
+ 'headingContainer': 'eRgoL_dVXF',
46
+ 'chartLabel': 'eRgoL_dxZa'
47
+ };
48
+ var ScoreDistribution = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = /*#__PURE__*/function (_Component) {
49
+ (0, _inherits2.default)(ScoreDistribution, _Component);
50
+
51
+ var _super = (0, _createSuper2.default)(ScoreDistribution);
52
+
53
+ function ScoreDistribution() {
54
+ var _this;
55
+
56
+ (0, _classCallCheck2.default)(this, ScoreDistribution);
57
+
58
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
59
+ args[_key] = arguments[_key];
60
+ }
61
+
62
+ _this = _super.call.apply(_super, [this].concat(args));
63
+
64
+ _this.calculateLabelForColumn = function (index, length) {
65
+ var label = Math.floor(index * 100 / length);
66
+ return (0, _formatMessage.default)('{label, number}%', {
67
+ label: label
68
+ });
69
+ };
70
+
71
+ return _this;
72
+ }
73
+
74
+ (0, _createClass2.default)(ScoreDistribution, [{
75
+ key: "render",
76
+ value: function render() {
77
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
78
+ className: styles.headingContainer
79
+ }, /*#__PURE__*/_react.default.createElement(_uiHeading.Heading, {
80
+ level: "h2",
81
+ theme: {
82
+ h2FontWeight: 300
83
+ }
84
+ }, (0, _formatMessage.default)('Score Distribution'))), /*#__PURE__*/_react.default.createElement(_index.default, {
85
+ animateDelay: 1000,
86
+ animateDuration: 1000,
87
+ visualDistribution: this.props.decileDistribution,
88
+ calculateLabelForColumn: this.calculateLabelForColumn
89
+ }), /*#__PURE__*/_react.default.createElement("div", {
90
+ className: styles.chartLabel
91
+ }, /*#__PURE__*/_react.default.createElement(_uiText.Text, {
92
+ size: "small"
93
+ }, (0, _formatMessage.default)('Score'))), /*#__PURE__*/_react.default.createElement("div", {
94
+ className: styles.legendContainer
95
+ }, /*#__PURE__*/_react.default.createElement(_index2.default, {
96
+ series: [{
97
+ className: styles.legendRect,
98
+ label: (0, _formatMessage.default)('Number of Students')
99
+ }]
100
+ })));
101
+ }
102
+ }]);
103
+ ScoreDistribution.displayName = "ScoreDistribution";
104
+ return ScoreDistribution;
105
+ }(_react.Component), _temp)) || _class);
106
+ exports.ScoreDistribution = ScoreDistribution;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = generator;
7
+
8
+ function generator(_ref) {
9
+ var colors = _ref.colors,
10
+ spacing = _ref.spacing,
11
+ typography = _ref.typography;
12
+ return {
13
+ legendRectFillColor: colors.electric,
14
+ legendPadding: spacing.small,
15
+ legendBorderColor: colors.ash,
16
+ legendFontSize: typography.fontSizeXSmall,
17
+ legendMargin: spacing.medium
18
+ };
19
+ }
@@ -21,11 +21,11 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
21
21
 
22
22
  var _uiHeading = require("@instructure/ui-heading");
23
23
 
24
- var _uiMetric = require("@instructure/ui-metric");
24
+ var _index = _interopRequireDefault(require("./NewItemAnalysis/index.js"));
25
25
 
26
26
  var _Spinner = _interopRequireDefault(require("../../../../common/components/shared/spinner/Spinner.js"));
27
27
 
28
- var _index = _interopRequireDefault(require("./NewQuizAnalysis/index.js"));
28
+ var _index2 = _interopRequireDefault(require("./NewQuizAnalysis/index.js"));
29
29
 
30
30
  var _ref5 = /*#__PURE__*/_react.default.createElement(_uiHeading.Heading, {
31
31
  level: "h3",
@@ -62,7 +62,10 @@ var NewQuizAndItemAnalysis = function NewQuizAndItemAnalysis(_ref) {
62
62
 
63
63
  case 2:
64
64
  response = _context.sent;
65
- setQuizAnalysis(response.last_successful_analysis);
65
+
66
+ if (response) {
67
+ setQuizAnalysis(response.last_successful_analysis);
68
+ }
66
69
 
67
70
  case 4:
68
71
  case "end":
@@ -92,7 +95,10 @@ var NewQuizAndItemAnalysis = function NewQuizAndItemAnalysis(_ref) {
92
95
 
93
96
  case 2:
94
97
  response = _context2.sent;
95
- setItemAnalyses(response.last_successful_analysis);
98
+
99
+ if (response) {
100
+ setItemAnalyses(response.last_successful_analysis);
101
+ }
96
102
 
97
103
  case 4:
98
104
  case "end":
@@ -110,7 +116,7 @@ var NewQuizAndItemAnalysis = function NewQuizAndItemAnalysis(_ref) {
110
116
  fetch();
111
117
  }, []);
112
118
 
113
- var _ref4 = /*#__PURE__*/_react.default.createElement(_index.default, {
119
+ var _ref4 = /*#__PURE__*/_react.default.createElement(_index2.default, {
114
120
  quizAnalysis: quizAnalysis
115
121
  });
116
122
 
@@ -119,21 +125,10 @@ var NewQuizAndItemAnalysis = function NewQuizAndItemAnalysis(_ref) {
119
125
  return /*#__PURE__*/_react.default.createElement("div", {
120
126
  className: "fs-mask"
121
127
  }, _ref4, _ref5, itemAnalyses === null || itemAnalyses === void 0 ? void 0 : itemAnalyses.map(function (itemAnalysis) {
122
- return /*#__PURE__*/_react.default.createElement(_uiMetric.MetricGroup, {
123
- key: itemAnalysis.metadata.item_id
124
- }, /*#__PURE__*/_react.default.createElement(_uiMetric.Metric, {
125
- key: "itemdifficulty",
126
- renderLabel: "ITEM DIFFICULTY",
127
- renderValue: itemAnalysis.scores.difficulty_index
128
- }), /*#__PURE__*/_react.default.createElement(_uiMetric.Metric, {
129
- key: "responded",
130
- renderLabel: "RESPONDED",
131
- renderValue: itemAnalysis.attempts.students_responded
132
- }), /*#__PURE__*/_react.default.createElement(_uiMetric.Metric, {
133
- key: "skipped",
134
- renderLabel: "SKIPPED/NO RESPONSE",
135
- renderValue: itemAnalysis.attempts.students_without_response
136
- }));
128
+ return /*#__PURE__*/_react.default.createElement(_index.default, {
129
+ key: itemAnalysis.metadata.item_id,
130
+ itemAnalysis: itemAnalysis
131
+ });
137
132
  }));
138
133
  /* eslint-enable react/jsx-no-literals */
139
134
  }; // TODO: distinguish between loading and empty item analyses (eg. when there is no items in a quiz)
@@ -14,7 +14,7 @@ var getSanitizedMetricValue = function getSanitizedMetricValue(value, suffix) {
14
14
  return (0, _formatMessage.default)('N/A');
15
15
  }
16
16
 
17
- return value + (suffix ? suffix : '');
17
+ return suffix ? value + suffix : value;
18
18
  };
19
19
 
20
20
  exports.getSanitizedMetricValue = getSanitizedMetricValue;
@@ -34,7 +34,7 @@ var _theme = _interopRequireDefault(require("./theme.js"));
34
34
  var _dec, _class, _class2, _temp;
35
35
 
36
36
  var styles = {
37
- componentId: 'eRzKS',
37
+ componentId: 'cNnNG',
38
38
  template: function template(theme) {
39
39
  return "\n\n.eRzKS_fbIL{border-radius:".concat(theme.cardBorderRadius || 'inherit', ";box-shadow:").concat(theme.cardBoxShadow || 'inherit', ";display:inline-flex;flex-direction:column;height:").concat(theme.cardHeight || 'inherit', ";margin:").concat(theme.cardMargin || 'inherit', ";padding:").concat(theme.cardPadding || 'inherit', ";width:").concat(theme.cardWidth || 'inherit', "}\n\n.eRzKS_ebWM{padding-top:").concat(theme.detailPadding || 'inherit', "}");
40
40
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@instructure/quiz-core",
3
- "version": "17.58.2-rc.0+58bdb51eb",
3
+ "version": "17.58.2-rc.10+b6c430be4",
4
4
  "license": "MIT",
5
5
  "description": "The Quiz React SDK by Instructure Inc.",
6
6
  "author": "Instructure, Inc. Engineering and Product Design",
@@ -41,11 +41,11 @@
41
41
  ],
42
42
  "dependencies": {
43
43
  "@instructure/outcomes-ui": "^2.1.8",
44
- "@instructure/quiz-common": "17.58.2-rc.0+58bdb51eb",
45
- "@instructure/quiz-i18n": "17.58.2-rc.0+58bdb51eb",
46
- "@instructure/quiz-interactions": "17.58.2-rc.0+58bdb51eb",
47
- "@instructure/quiz-number-input": "17.58.2-rc.0+58bdb51eb",
48
- "@instructure/quiz-rce": "17.58.2-rc.0+58bdb51eb",
44
+ "@instructure/quiz-common": "17.58.2-rc.10+b6c430be4",
45
+ "@instructure/quiz-i18n": "17.58.2-rc.10+b6c430be4",
46
+ "@instructure/quiz-interactions": "17.58.2-rc.10+b6c430be4",
47
+ "@instructure/quiz-number-input": "17.58.2-rc.10+b6c430be4",
48
+ "@instructure/quiz-rce": "17.58.2-rc.10+b6c430be4",
49
49
  "@instructure/ui-a11y-content": "^7.20.0",
50
50
  "@instructure/ui-alerts": "^7.20.0",
51
51
  "@instructure/ui-avatar": "^7.20.0",
@@ -106,7 +106,7 @@
106
106
  "eventemitter3": "^3.1.0",
107
107
  "humps": "^2.0.0",
108
108
  "immutable": "^3.8.1",
109
- "instructure-validations": "17.58.2-rc.0+58bdb51eb",
109
+ "instructure-validations": "17.58.2-rc.10+b6c430be4",
110
110
  "ipaddr.js": "^1.5.4",
111
111
  "isomorphic-fetch": "^2.2.0",
112
112
  "isuuid": "^0.1.0",
@@ -156,7 +156,7 @@
156
156
  "intl": "^1.2.4",
157
157
  "jquery": "^2.2.3",
158
158
  "most-subject": "^5.3.0",
159
- "quiz-presets": "17.58.2-rc.0+58bdb51eb",
159
+ "quiz-presets": "17.58.2-rc.10+b6c430be4",
160
160
  "react": "^16.8.6",
161
161
  "react-addons-test-utils": "^15.6.2",
162
162
  "react-dom": "^16.8.6",
@@ -172,5 +172,5 @@
172
172
  "publishConfig": {
173
173
  "access": "public"
174
174
  },
175
- "gitHead": "58bdb51eb2e1af16f5b74e69097b25fb8f8b7dfa"
175
+ "gitHead": "b6c430be4cf04253136b888dbfb9850388e052aa"
176
176
  }