@instructure/quiz-core 20.17.3-rc.6 → 20.17.3-rc.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/common/actions/taking.js +19 -1
- package/es/common/kinesis/QuizEventsLogger.js +15 -1
- package/es/common/kinesis/config.js +4 -2
- package/es/common/kinesis/eventTypes.js +3 -1
- package/es/common/util/serializeEvent.js +2 -2
- package/es/moderating/components/events/Event.js +8 -1
- package/es/moderating/components/events/PageBlurredEvent.js +21 -0
- package/es/moderating/components/events/PageFocusedEvent.js +21 -0
- package/es/moderating/components/events/SessionStartEvent.js +1 -1
- package/lib/common/actions/taking.js +19 -1
- package/lib/common/kinesis/QuizEventsLogger.js +15 -1
- package/lib/common/kinesis/config.js +3 -1
- package/lib/common/kinesis/eventTypes.js +4 -2
- package/lib/common/util/serializeEvent.js +1 -1
- package/lib/moderating/components/events/Event.js +8 -1
- package/lib/moderating/components/events/PageBlurredEvent.js +29 -0
- package/lib/moderating/components/events/PageFocusedEvent.js +29 -0
- package/lib/moderating/components/events/SessionStartEvent.js +1 -1
- package/package.json +9 -9
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { v4 as uuid } from 'uuid';
|
|
2
|
-
import { BACKTRACKING_NEXT_QUESTION, CLEAR_FOCUS_CURRENT_SESSION_ITEM, LOAD_RESUME_DATA, PREVIEW_RESPONSE, PREVIOUS_QUESTION, QUIZ_SUBMISSION_EVENT, UPDATE_QUIZ_SUBMIT_FLAG, RESPONSE, SESSION_STARTED_OR_RESUMED_EVENT, SET_CURRENT_SESSION_ITEM_POSITION, SET_FOCUS_TITLE_AND_INSTRUCTIONS, UPDATE_IS_TAKING, UPDATE_QUIZ_SESSION_STATUS_ON_PAGE_LOAD, UPDATE_TIMER_MINIMIZED, UPDATE_TIMER_INFO } from '@instructure/quiz-common';
|
|
2
|
+
import { BACKTRACKING_NEXT_QUESTION, CLEAR_FOCUS_CURRENT_SESSION_ITEM, LOAD_RESUME_DATA, PREVIEW_RESPONSE, PREVIOUS_QUESTION, QUIZ_SUBMISSION_EVENT, UPDATE_QUIZ_SUBMIT_FLAG, RESPONSE, SESSION_STARTED_OR_RESUMED_EVENT, SET_CURRENT_SESSION_ITEM_POSITION, SET_FOCUS_TITLE_AND_INSTRUCTIONS, UPDATE_IS_TAKING, UPDATE_QUIZ_SESSION_STATUS_ON_PAGE_LOAD, UPDATE_TIMER_MINIMIZED, UPDATE_TIMER_INFO, PAGE_BLURRED_EVENT, PAGE_FOCUSED_EVENT } from '@instructure/quiz-common';
|
|
3
3
|
export var setCurrentSessionItemPosition = function setCurrentSessionItemPosition(position) {
|
|
4
4
|
return {
|
|
5
5
|
type: SET_CURRENT_SESSION_ITEM_POSITION,
|
|
@@ -113,6 +113,24 @@ export var sessionStartOrResumeEvent = function sessionStartOrResumeEvent(userAg
|
|
|
113
113
|
}
|
|
114
114
|
};
|
|
115
115
|
};
|
|
116
|
+
|
|
117
|
+
// This is not consumed by its reducer
|
|
118
|
+
// Instead it is processed by the eventLoggerMiddleware
|
|
119
|
+
export var reportPageBlurredEvent = function reportPageBlurredEvent() {
|
|
120
|
+
return {
|
|
121
|
+
type: PAGE_BLURRED_EVENT,
|
|
122
|
+
payload: {}
|
|
123
|
+
};
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
// This is not consumed by its reducer
|
|
127
|
+
// Instead it is processed by the eventLoggerMiddleware
|
|
128
|
+
export var reportPageFocusedEvent = function reportPageFocusedEvent() {
|
|
129
|
+
return {
|
|
130
|
+
type: PAGE_FOCUSED_EVENT,
|
|
131
|
+
payload: {}
|
|
132
|
+
};
|
|
133
|
+
};
|
|
116
134
|
export var submitQuizSessionEvent = function submitQuizSessionEvent() {
|
|
117
135
|
return {
|
|
118
136
|
type: QUIZ_SUBMISSION_EVENT,
|
|
@@ -7,6 +7,8 @@ import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
|
7
7
|
import StreamQueue from './StreamQueue';
|
|
8
8
|
import getKinesisConfig from './client';
|
|
9
9
|
var KINESIS_REFRESH_THRESHOLD = 600000; // 10 minutes
|
|
10
|
+
var PAGE_FOCUSED_EVENT = 'PAGE_FOCUSED_EVENT';
|
|
11
|
+
var PAGE_BLURRED_EVENT = 'PAGE_BLURRED_EVENT';
|
|
10
12
|
export var QuizEventsLogger = /*#__PURE__*/function () {
|
|
11
13
|
function QuizEventsLogger() {
|
|
12
14
|
_classCallCheck(this, QuizEventsLogger);
|
|
@@ -16,6 +18,7 @@ export var QuizEventsLogger = /*#__PURE__*/function () {
|
|
|
16
18
|
this.streamQueues = streamQueues;
|
|
17
19
|
this.eventTypeDict = Object.create(null);
|
|
18
20
|
this.builtAt = Date.now();
|
|
21
|
+
this.hasSentPageBlurredEventPreviously = false;
|
|
19
22
|
}
|
|
20
23
|
return _createClass(QuizEventsLogger, [{
|
|
21
24
|
key: "needsRefresh",
|
|
@@ -40,10 +43,21 @@ export var QuizEventsLogger = /*#__PURE__*/function () {
|
|
|
40
43
|
}, {
|
|
41
44
|
key: "enqueueEvent",
|
|
42
45
|
value: function enqueueEvent(data) {
|
|
46
|
+
var _this = this;
|
|
43
47
|
var eventType = data.eventType;
|
|
44
|
-
this.queuesForEventType(eventType)
|
|
48
|
+
var queues = this.queuesForEventType(eventType);
|
|
49
|
+
queues.forEach(function (queue) {
|
|
50
|
+
// ignore unnecessary consecutive page_focused events.
|
|
51
|
+
if (eventType === PAGE_FOCUSED_EVENT && !_this.hasSentPageBlurredEventPreviously) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
45
54
|
queue.push(eventType, data);
|
|
46
55
|
});
|
|
56
|
+
if (eventType === PAGE_BLURRED_EVENT) {
|
|
57
|
+
this.hasSentPageBlurredEventPreviously = true;
|
|
58
|
+
} else if (eventType === PAGE_FOCUSED_EVENT) {
|
|
59
|
+
this.hasSentPageBlurredEventPreviously = false;
|
|
60
|
+
}
|
|
47
61
|
}
|
|
48
62
|
}]);
|
|
49
63
|
}();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EVENT_RESPONSE, QUIZ_SUBMISSION_EVENT, RESPONSE, SESSION_STARTED_OR_RESUMED_EVENT, RCE_EVENT } from './eventTypes';
|
|
1
|
+
import { EVENT_RESPONSE, QUIZ_SUBMISSION_EVENT, RESPONSE, SESSION_STARTED_OR_RESUMED_EVENT, RCE_EVENT, PAGE_BLURRED_EVENT, PAGE_FOCUSED_EVENT } from './eventTypes';
|
|
2
2
|
export var assembleKinesisConfig = function assembleKinesisConfig(apiConfig) {
|
|
3
3
|
return Object.assign({
|
|
4
4
|
apiVersion: '2013-12-02'
|
|
@@ -21,7 +21,9 @@ export var eventStreamConfig = function eventStreamConfig(defaultStreamConfig, s
|
|
|
21
21
|
RESPONSE: EVENT_RESPONSE,
|
|
22
22
|
SESSION_STARTED_OR_RESUMED_EVENT: SESSION_STARTED_OR_RESUMED_EVENT,
|
|
23
23
|
QUIZ_SUBMISSION_EVENT: QUIZ_SUBMISSION_EVENT,
|
|
24
|
-
RCE_EVENT: RCE_EVENT
|
|
24
|
+
RCE_EVENT: RCE_EVENT,
|
|
25
|
+
PAGE_BLURRED_EVENT: PAGE_BLURRED_EVENT,
|
|
26
|
+
PAGE_FOCUSED_EVENT: PAGE_FOCUSED_EVENT
|
|
25
27
|
},
|
|
26
28
|
stream: stream
|
|
27
29
|
});
|
|
@@ -35,4 +35,6 @@ export var RESPONSE = eventType(function (data) {
|
|
|
35
35
|
export var EVENT_RESPONSE = eventType();
|
|
36
36
|
export var SESSION_STARTED_OR_RESUMED_EVENT = eventType();
|
|
37
37
|
export var QUIZ_SUBMISSION_EVENT = eventType();
|
|
38
|
-
export var RCE_EVENT = eventType();
|
|
38
|
+
export var RCE_EVENT = eventType();
|
|
39
|
+
export var PAGE_BLURRED_EVENT = eventType();
|
|
40
|
+
export var PAGE_FOCUSED_EVENT = eventType();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { QUIZ_SUBMISSION_EVENT, RESPONSE, SESSION_STARTED_OR_RESUMED_EVENT, RCE_EVENT } from '@instructure/quiz-common';
|
|
1
|
+
import { QUIZ_SUBMISSION_EVENT, RESPONSE, SESSION_STARTED_OR_RESUMED_EVENT, RCE_EVENT, PAGE_BLURRED_EVENT, PAGE_FOCUSED_EVENT } from '@instructure/quiz-common';
|
|
2
2
|
import { getBrowserSessionId } from '../selectors/taking';
|
|
3
3
|
import { getActiveQuizSession } from '../selectors/quizSessions';
|
|
4
|
-
var whitelist = [QUIZ_SUBMISSION_EVENT, RESPONSE, SESSION_STARTED_OR_RESUMED_EVENT, RCE_EVENT];
|
|
4
|
+
var whitelist = [QUIZ_SUBMISSION_EVENT, RESPONSE, SESSION_STARTED_OR_RESUMED_EVENT, RCE_EVENT, PAGE_BLURRED_EVENT, PAGE_FOCUSED_EVENT];
|
|
5
5
|
export function serializeEvent(action, store) {
|
|
6
6
|
var type = action.type;
|
|
7
7
|
if (!whitelist.includes(type)) {
|
|
@@ -2,15 +2,18 @@ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
|
2
2
|
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
3
3
|
import _callSuper from "@babel/runtime/helpers/esm/callSuper";
|
|
4
4
|
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
5
|
+
var _PageBlurredEvent, _PageFocusedEvent;
|
|
5
6
|
import React, { Component } from 'react';
|
|
6
7
|
import PropTypes from 'prop-types';
|
|
7
8
|
import ImmutablePropTypes from 'react-immutable-proptypes';
|
|
8
|
-
import { RESPONSE, SESSION_STARTED_OR_RESUMED_EVENT, RCE_EVENT } from '@instructure/quiz-common';
|
|
9
|
+
import { RESPONSE, SESSION_STARTED_OR_RESUMED_EVENT, RCE_EVENT, PAGE_BLURRED_EVENT, PAGE_FOCUSED_EVENT } from '@instructure/quiz-common';
|
|
9
10
|
import { Table } from '@instructure/ui-table';
|
|
10
11
|
import ElapsedTime from '../resources/ElapsedTime';
|
|
11
12
|
import ResponseEvent from './ResponseEvent';
|
|
12
13
|
import SessionStartEvent from './SessionStartEvent';
|
|
13
14
|
import RCEEvent from './RCEEvent';
|
|
15
|
+
import PageBlurredEvent from './PageBlurredEvent';
|
|
16
|
+
import PageFocusedEvent from './PageFocusedEvent';
|
|
14
17
|
export var Event = /*#__PURE__*/function (_Component) {
|
|
15
18
|
function Event() {
|
|
16
19
|
_classCallCheck(this, Event);
|
|
@@ -44,6 +47,10 @@ export var Event = /*#__PURE__*/function (_Component) {
|
|
|
44
47
|
return /*#__PURE__*/React.createElement(RCEEvent, {
|
|
45
48
|
event: event
|
|
46
49
|
});
|
|
50
|
+
case PAGE_BLURRED_EVENT:
|
|
51
|
+
return _PageBlurredEvent || (_PageBlurredEvent = /*#__PURE__*/React.createElement(PageBlurredEvent, null));
|
|
52
|
+
case PAGE_FOCUSED_EVENT:
|
|
53
|
+
return _PageFocusedEvent || (_PageFocusedEvent = /*#__PURE__*/React.createElement(PageFocusedEvent, null));
|
|
47
54
|
default:
|
|
48
55
|
return null;
|
|
49
56
|
// unknown event
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
2
|
+
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
3
|
+
import _callSuper from "@babel/runtime/helpers/esm/callSuper";
|
|
4
|
+
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
5
|
+
import React, { Component } from 'react';
|
|
6
|
+
import t from '@instructure/quiz-i18n/es/format-message';
|
|
7
|
+
import { Text } from '@instructure/ui-text';
|
|
8
|
+
export var PageBlurredEvent = /*#__PURE__*/function (_Component) {
|
|
9
|
+
function PageBlurredEvent() {
|
|
10
|
+
_classCallCheck(this, PageBlurredEvent);
|
|
11
|
+
return _callSuper(this, PageBlurredEvent, arguments);
|
|
12
|
+
}
|
|
13
|
+
_inherits(PageBlurredEvent, _Component);
|
|
14
|
+
return _createClass(PageBlurredEvent, [{
|
|
15
|
+
key: "render",
|
|
16
|
+
value: function render() {
|
|
17
|
+
return /*#__PURE__*/React.createElement(Text, null, t('Stopped viewing the quiz-taking page'));
|
|
18
|
+
}
|
|
19
|
+
}]);
|
|
20
|
+
}(Component);
|
|
21
|
+
export default PageBlurredEvent;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
2
|
+
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
3
|
+
import _callSuper from "@babel/runtime/helpers/esm/callSuper";
|
|
4
|
+
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
5
|
+
import React, { Component } from 'react';
|
|
6
|
+
import t from '@instructure/quiz-i18n/es/format-message';
|
|
7
|
+
import { Text } from '@instructure/ui-text';
|
|
8
|
+
export var PageFocusedEvent = /*#__PURE__*/function (_Component) {
|
|
9
|
+
function PageFocusedEvent() {
|
|
10
|
+
_classCallCheck(this, PageFocusedEvent);
|
|
11
|
+
return _callSuper(this, PageFocusedEvent, arguments);
|
|
12
|
+
}
|
|
13
|
+
_inherits(PageFocusedEvent, _Component);
|
|
14
|
+
return _createClass(PageFocusedEvent, [{
|
|
15
|
+
key: "render",
|
|
16
|
+
value: function render() {
|
|
17
|
+
return /*#__PURE__*/React.createElement(Text, null, t('Resumed'));
|
|
18
|
+
}
|
|
19
|
+
}]);
|
|
20
|
+
}(Component);
|
|
21
|
+
export default PageFocusedEvent;
|
|
@@ -20,7 +20,7 @@ export var SessionStartEvent = /*#__PURE__*/function (_Component) {
|
|
|
20
20
|
var event = this.props.event;
|
|
21
21
|
var userPlatform = platform.parse(event.getIn(['eventData', 'userAgent']));
|
|
22
22
|
return /*#__PURE__*/React.createElement(ToggleDetails, {
|
|
23
|
-
summary: t('
|
|
23
|
+
summary: t('Session started')
|
|
24
24
|
}, /*#__PURE__*/React.createElement(Table, {
|
|
25
25
|
caption: t('System details')
|
|
26
26
|
}, /*#__PURE__*/React.createElement(Table.Head, null, /*#__PURE__*/React.createElement(Table.Row, null, /*#__PURE__*/React.createElement(Table.ColHeader, {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.updateTimerMinimized = exports.updateTimerInfo = exports.updateQuizSubmitFlag = exports.updateQuizSessionStatusOnPageLoad = exports.updateIsTaking = exports.submitQuizSessionEvent = exports.setFocusTitleAndInstructions = exports.setCurrentSessionItemPosition = exports.sessionStartOrResumeEvent = exports.previousQuestion = exports.previewResponse = exports.loadResumeData = exports.editResponse = exports.clearFocusCurrentSessionItem = exports.backtrackingNextQuestion = void 0;
|
|
6
|
+
exports.updateTimerMinimized = exports.updateTimerInfo = exports.updateQuizSubmitFlag = exports.updateQuizSessionStatusOnPageLoad = exports.updateIsTaking = exports.submitQuizSessionEvent = exports.setFocusTitleAndInstructions = exports.setCurrentSessionItemPosition = exports.sessionStartOrResumeEvent = exports.reportPageFocusedEvent = exports.reportPageBlurredEvent = exports.previousQuestion = exports.previewResponse = exports.loadResumeData = exports.editResponse = exports.clearFocusCurrentSessionItem = exports.backtrackingNextQuestion = void 0;
|
|
7
7
|
var _uuid = require("uuid");
|
|
8
8
|
var _quizCommon = require("@instructure/quiz-common");
|
|
9
9
|
var setCurrentSessionItemPosition = exports.setCurrentSessionItemPosition = function setCurrentSessionItemPosition(position) {
|
|
@@ -119,6 +119,24 @@ var sessionStartOrResumeEvent = exports.sessionStartOrResumeEvent = function ses
|
|
|
119
119
|
}
|
|
120
120
|
};
|
|
121
121
|
};
|
|
122
|
+
|
|
123
|
+
// This is not consumed by its reducer
|
|
124
|
+
// Instead it is processed by the eventLoggerMiddleware
|
|
125
|
+
var reportPageBlurredEvent = exports.reportPageBlurredEvent = function reportPageBlurredEvent() {
|
|
126
|
+
return {
|
|
127
|
+
type: _quizCommon.PAGE_BLURRED_EVENT,
|
|
128
|
+
payload: {}
|
|
129
|
+
};
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
// This is not consumed by its reducer
|
|
133
|
+
// Instead it is processed by the eventLoggerMiddleware
|
|
134
|
+
var reportPageFocusedEvent = exports.reportPageFocusedEvent = function reportPageFocusedEvent() {
|
|
135
|
+
return {
|
|
136
|
+
type: _quizCommon.PAGE_FOCUSED_EVENT,
|
|
137
|
+
payload: {}
|
|
138
|
+
};
|
|
139
|
+
};
|
|
122
140
|
var submitQuizSessionEvent = exports.submitQuizSessionEvent = function submitQuizSessionEvent() {
|
|
123
141
|
return {
|
|
124
142
|
type: _quizCommon.QUIZ_SUBMISSION_EVENT,
|
|
@@ -14,6 +14,8 @@ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
|
|
|
14
14
|
var _StreamQueue = _interopRequireDefault(require("./StreamQueue"));
|
|
15
15
|
var _client = _interopRequireDefault(require("./client"));
|
|
16
16
|
var KINESIS_REFRESH_THRESHOLD = 600000; // 10 minutes
|
|
17
|
+
var PAGE_FOCUSED_EVENT = 'PAGE_FOCUSED_EVENT';
|
|
18
|
+
var PAGE_BLURRED_EVENT = 'PAGE_BLURRED_EVENT';
|
|
17
19
|
var QuizEventsLogger = exports.QuizEventsLogger = /*#__PURE__*/function () {
|
|
18
20
|
function QuizEventsLogger() {
|
|
19
21
|
(0, _classCallCheck2.default)(this, QuizEventsLogger);
|
|
@@ -23,6 +25,7 @@ var QuizEventsLogger = exports.QuizEventsLogger = /*#__PURE__*/function () {
|
|
|
23
25
|
this.streamQueues = streamQueues;
|
|
24
26
|
this.eventTypeDict = Object.create(null);
|
|
25
27
|
this.builtAt = Date.now();
|
|
28
|
+
this.hasSentPageBlurredEventPreviously = false;
|
|
26
29
|
}
|
|
27
30
|
return (0, _createClass2.default)(QuizEventsLogger, [{
|
|
28
31
|
key: "needsRefresh",
|
|
@@ -47,10 +50,21 @@ var QuizEventsLogger = exports.QuizEventsLogger = /*#__PURE__*/function () {
|
|
|
47
50
|
}, {
|
|
48
51
|
key: "enqueueEvent",
|
|
49
52
|
value: function enqueueEvent(data) {
|
|
53
|
+
var _this = this;
|
|
50
54
|
var eventType = data.eventType;
|
|
51
|
-
this.queuesForEventType(eventType)
|
|
55
|
+
var queues = this.queuesForEventType(eventType);
|
|
56
|
+
queues.forEach(function (queue) {
|
|
57
|
+
// ignore unnecessary consecutive page_focused events.
|
|
58
|
+
if (eventType === PAGE_FOCUSED_EVENT && !_this.hasSentPageBlurredEventPreviously) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
52
61
|
queue.push(eventType, data);
|
|
53
62
|
});
|
|
63
|
+
if (eventType === PAGE_BLURRED_EVENT) {
|
|
64
|
+
this.hasSentPageBlurredEventPreviously = true;
|
|
65
|
+
} else if (eventType === PAGE_FOCUSED_EVENT) {
|
|
66
|
+
this.hasSentPageBlurredEventPreviously = false;
|
|
67
|
+
}
|
|
54
68
|
}
|
|
55
69
|
}]);
|
|
56
70
|
}();
|
|
@@ -27,7 +27,9 @@ var eventStreamConfig = exports.eventStreamConfig = function eventStreamConfig(d
|
|
|
27
27
|
RESPONSE: _eventTypes.EVENT_RESPONSE,
|
|
28
28
|
SESSION_STARTED_OR_RESUMED_EVENT: _eventTypes.SESSION_STARTED_OR_RESUMED_EVENT,
|
|
29
29
|
QUIZ_SUBMISSION_EVENT: _eventTypes.QUIZ_SUBMISSION_EVENT,
|
|
30
|
-
RCE_EVENT: _eventTypes.RCE_EVENT
|
|
30
|
+
RCE_EVENT: _eventTypes.RCE_EVENT,
|
|
31
|
+
PAGE_BLURRED_EVENT: _eventTypes.PAGE_BLURRED_EVENT,
|
|
32
|
+
PAGE_FOCUSED_EVENT: _eventTypes.PAGE_FOCUSED_EVENT
|
|
31
33
|
},
|
|
32
34
|
stream: stream
|
|
33
35
|
});
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.SESSION_STARTED_OR_RESUMED_EVENT = exports.RESPONSE = exports.RCE_EVENT = exports.QUIZ_SUBMISSION_EVENT = exports.EVENT_RESPONSE = void 0;
|
|
6
|
+
exports.SESSION_STARTED_OR_RESUMED_EVENT = exports.RESPONSE = exports.RCE_EVENT = exports.QUIZ_SUBMISSION_EVENT = exports.PAGE_FOCUSED_EVENT = exports.PAGE_BLURRED_EVENT = exports.EVENT_RESPONSE = void 0;
|
|
7
7
|
var _humps = require("humps");
|
|
8
8
|
function eventType() {
|
|
9
9
|
var eventTransform = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : function (data) {
|
|
@@ -41,4 +41,6 @@ var RESPONSE = exports.RESPONSE = eventType(function (data) {
|
|
|
41
41
|
var EVENT_RESPONSE = exports.EVENT_RESPONSE = eventType();
|
|
42
42
|
var SESSION_STARTED_OR_RESUMED_EVENT = exports.SESSION_STARTED_OR_RESUMED_EVENT = eventType();
|
|
43
43
|
var QUIZ_SUBMISSION_EVENT = exports.QUIZ_SUBMISSION_EVENT = eventType();
|
|
44
|
-
var RCE_EVENT = exports.RCE_EVENT = eventType();
|
|
44
|
+
var RCE_EVENT = exports.RCE_EVENT = eventType();
|
|
45
|
+
var PAGE_BLURRED_EVENT = exports.PAGE_BLURRED_EVENT = eventType();
|
|
46
|
+
var PAGE_FOCUSED_EVENT = exports.PAGE_FOCUSED_EVENT = eventType();
|
|
@@ -8,7 +8,7 @@ exports.serializeEvent = serializeEvent;
|
|
|
8
8
|
var _quizCommon = require("@instructure/quiz-common");
|
|
9
9
|
var _taking = require("../selectors/taking");
|
|
10
10
|
var _quizSessions = require("../selectors/quizSessions");
|
|
11
|
-
var whitelist = [_quizCommon.QUIZ_SUBMISSION_EVENT, _quizCommon.RESPONSE, _quizCommon.SESSION_STARTED_OR_RESUMED_EVENT, _quizCommon.RCE_EVENT];
|
|
11
|
+
var whitelist = [_quizCommon.QUIZ_SUBMISSION_EVENT, _quizCommon.RESPONSE, _quizCommon.SESSION_STARTED_OR_RESUMED_EVENT, _quizCommon.RCE_EVENT, _quizCommon.PAGE_BLURRED_EVENT, _quizCommon.PAGE_FOCUSED_EVENT];
|
|
12
12
|
function serializeEvent(action, store) {
|
|
13
13
|
var type = action.type;
|
|
14
14
|
if (!whitelist.includes(type)) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
@@ -19,6 +19,9 @@ var _ElapsedTime = _interopRequireDefault(require("../resources/ElapsedTime"));
|
|
|
19
19
|
var _ResponseEvent = _interopRequireDefault(require("./ResponseEvent"));
|
|
20
20
|
var _SessionStartEvent = _interopRequireDefault(require("./SessionStartEvent"));
|
|
21
21
|
var _RCEEvent = _interopRequireDefault(require("./RCEEvent"));
|
|
22
|
+
var _PageBlurredEvent2 = _interopRequireDefault(require("./PageBlurredEvent"));
|
|
23
|
+
var _PageFocusedEvent2 = _interopRequireDefault(require("./PageFocusedEvent"));
|
|
24
|
+
var _PageBlurredEvent, _PageFocusedEvent;
|
|
22
25
|
var Event = exports.Event = /*#__PURE__*/function (_Component) {
|
|
23
26
|
function Event() {
|
|
24
27
|
(0, _classCallCheck2.default)(this, Event);
|
|
@@ -52,6 +55,10 @@ var Event = exports.Event = /*#__PURE__*/function (_Component) {
|
|
|
52
55
|
return /*#__PURE__*/_react.default.createElement(_RCEEvent.default, {
|
|
53
56
|
event: event
|
|
54
57
|
});
|
|
58
|
+
case _quizCommon.PAGE_BLURRED_EVENT:
|
|
59
|
+
return _PageBlurredEvent || (_PageBlurredEvent = /*#__PURE__*/_react.default.createElement(_PageBlurredEvent2.default, null));
|
|
60
|
+
case _quizCommon.PAGE_FOCUSED_EVENT:
|
|
61
|
+
return _PageFocusedEvent || (_PageFocusedEvent = /*#__PURE__*/_react.default.createElement(_PageFocusedEvent2.default, null));
|
|
55
62
|
default:
|
|
56
63
|
return null;
|
|
57
64
|
// unknown event
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = exports.PageBlurredEvent = void 0;
|
|
9
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
10
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
11
|
+
var _callSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/callSuper"));
|
|
12
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
13
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
14
|
+
var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
|
|
15
|
+
var _uiText = require("@instructure/ui-text");
|
|
16
|
+
var PageBlurredEvent = exports.PageBlurredEvent = /*#__PURE__*/function (_Component) {
|
|
17
|
+
function PageBlurredEvent() {
|
|
18
|
+
(0, _classCallCheck2.default)(this, PageBlurredEvent);
|
|
19
|
+
return (0, _callSuper2.default)(this, PageBlurredEvent, arguments);
|
|
20
|
+
}
|
|
21
|
+
(0, _inherits2.default)(PageBlurredEvent, _Component);
|
|
22
|
+
return (0, _createClass2.default)(PageBlurredEvent, [{
|
|
23
|
+
key: "render",
|
|
24
|
+
value: function render() {
|
|
25
|
+
return /*#__PURE__*/_react.default.createElement(_uiText.Text, null, (0, _formatMessage.default)('Stopped viewing the quiz-taking page'));
|
|
26
|
+
}
|
|
27
|
+
}]);
|
|
28
|
+
}(_react.Component);
|
|
29
|
+
var _default = exports.default = PageBlurredEvent;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = exports.PageFocusedEvent = void 0;
|
|
9
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
10
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
11
|
+
var _callSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/callSuper"));
|
|
12
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
13
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
14
|
+
var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
|
|
15
|
+
var _uiText = require("@instructure/ui-text");
|
|
16
|
+
var PageFocusedEvent = exports.PageFocusedEvent = /*#__PURE__*/function (_Component) {
|
|
17
|
+
function PageFocusedEvent() {
|
|
18
|
+
(0, _classCallCheck2.default)(this, PageFocusedEvent);
|
|
19
|
+
return (0, _callSuper2.default)(this, PageFocusedEvent, arguments);
|
|
20
|
+
}
|
|
21
|
+
(0, _inherits2.default)(PageFocusedEvent, _Component);
|
|
22
|
+
return (0, _createClass2.default)(PageFocusedEvent, [{
|
|
23
|
+
key: "render",
|
|
24
|
+
value: function render() {
|
|
25
|
+
return /*#__PURE__*/_react.default.createElement(_uiText.Text, null, (0, _formatMessage.default)('Resumed'));
|
|
26
|
+
}
|
|
27
|
+
}]);
|
|
28
|
+
}(_react.Component);
|
|
29
|
+
var _default = exports.default = PageFocusedEvent;
|
|
@@ -28,7 +28,7 @@ var SessionStartEvent = exports.SessionStartEvent = /*#__PURE__*/function (_Comp
|
|
|
28
28
|
var event = this.props.event;
|
|
29
29
|
var userPlatform = _platform.default.parse(event.getIn(['eventData', 'userAgent']));
|
|
30
30
|
return /*#__PURE__*/_react.default.createElement(_uiToggleDetails.ToggleDetails, {
|
|
31
|
-
summary: (0, _formatMessage.default)('
|
|
31
|
+
summary: (0, _formatMessage.default)('Session started')
|
|
32
32
|
}, /*#__PURE__*/_react.default.createElement(_uiTable.Table, {
|
|
33
33
|
caption: (0, _formatMessage.default)('System details')
|
|
34
34
|
}, /*#__PURE__*/_react.default.createElement(_uiTable.Table.Head, null, /*#__PURE__*/_react.default.createElement(_uiTable.Table.Row, null, /*#__PURE__*/_react.default.createElement(_uiTable.Table.ColHeader, {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@instructure/quiz-core",
|
|
3
|
-
"version": "20.17.3-rc.
|
|
3
|
+
"version": "20.17.3-rc.7+2c6b6928b",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "The Quiz React SDK by Instructure Inc.",
|
|
6
6
|
"author": "Instructure, Inc. Engineering and Product Design",
|
|
@@ -44,11 +44,11 @@
|
|
|
44
44
|
"@instructure/emotion": "^8.51.0",
|
|
45
45
|
"@instructure/grading-utils": "^1.0.0",
|
|
46
46
|
"@instructure/outcomes-ui": "^3.2.2",
|
|
47
|
-
"@instructure/quiz-common": "20.17.3-rc.
|
|
48
|
-
"@instructure/quiz-i18n": "20.17.3-rc.
|
|
49
|
-
"@instructure/quiz-interactions": "20.17.3-rc.
|
|
50
|
-
"@instructure/quiz-number-input": "20.17.3-rc.
|
|
51
|
-
"@instructure/quiz-rce": "20.17.3-rc.
|
|
47
|
+
"@instructure/quiz-common": "20.17.3-rc.7+2c6b6928b",
|
|
48
|
+
"@instructure/quiz-i18n": "20.17.3-rc.7+2c6b6928b",
|
|
49
|
+
"@instructure/quiz-interactions": "20.17.3-rc.7+2c6b6928b",
|
|
50
|
+
"@instructure/quiz-number-input": "20.17.3-rc.7+2c6b6928b",
|
|
51
|
+
"@instructure/quiz-rce": "20.17.3-rc.7+2c6b6928b",
|
|
52
52
|
"@instructure/ui-a11y-content": "^8.51.0",
|
|
53
53
|
"@instructure/ui-alerts": "^8.51.0",
|
|
54
54
|
"@instructure/ui-avatar": "^8.51.0",
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
"file-saver": "~2.0.5",
|
|
112
112
|
"humps": "^2.0.0",
|
|
113
113
|
"immutable": "^3.8.1",
|
|
114
|
-
"instructure-validations": "20.17.3-rc.
|
|
114
|
+
"instructure-validations": "20.17.3-rc.7+2c6b6928b",
|
|
115
115
|
"ipaddr.js": "^1.5.4",
|
|
116
116
|
"isomorphic-fetch": "^2.2.0",
|
|
117
117
|
"isuuid": "^0.1.0",
|
|
@@ -160,7 +160,7 @@
|
|
|
160
160
|
"jquery": "^2.2.3",
|
|
161
161
|
"karma-junit-reporter": "^2.0.1",
|
|
162
162
|
"most-subject": "^5.3.0",
|
|
163
|
-
"quiz-presets": "20.17.3-rc.
|
|
163
|
+
"quiz-presets": "20.17.3-rc.7+2c6b6928b",
|
|
164
164
|
"react": "^16.8.6",
|
|
165
165
|
"react-addons-test-utils": "^15.6.2",
|
|
166
166
|
"react-dom": "^16.8.6",
|
|
@@ -176,5 +176,5 @@
|
|
|
176
176
|
"publishConfig": {
|
|
177
177
|
"access": "public"
|
|
178
178
|
},
|
|
179
|
-
"gitHead": "
|
|
179
|
+
"gitHead": "2c6b6928b7a2f7926ab1757884ee63bcff6c4c37"
|
|
180
180
|
}
|