Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@qwqcode
Last active April 12, 2020 11:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save qwqcode/051f8398ba12bdc325a6709a27a50fd8 to your computer and use it in GitHub Desktop.
Save qwqcode/051f8398ba12bdc325a6709a27a50fd8 to your computer and use it in GitHub Desktop.
腾讯课堂
/**
* @param {?} cond
* @param {!Object} t
* @param {?} n
* @return {undefined}
*/
function ExamCard(cond, t, n) {
/**
* @param {?} obj
* @return {?}
*/
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
Object.defineProperty(t, "__esModule", {
value: true
});
var _deepAssign2 = _interopRequireDefault(n(1));
var _noframeworkWaypoints2 = _interopRequireDefault(n(2));
var _custom2 = _interopRequireDefault(n(3));
var _UiIcon2 = _interopRequireDefault(n(4));
var _prepareStyleProperties = n(0);
var _prepareStyleProperties2 = _interopRequireDefault(_prepareStyleProperties);
var utils = n(8);
var end = n(17);
var p = n(9);
var _CalendarDay2 = _interopRequireDefault(n(256));
var _CalendarEvent2 = _interopRequireDefault(n(68));
var o = n(176);
var _CalendarTitle2 = _interopRequireDefault(n(421));
var _AboutPage2 = _interopRequireDefault(n(422));
n(1233);
var stable = (0, utils.getUrlParam)("cid") || (0, utils.getUrlParam)("course_id");
var roomId = (0, utils.getUrlParam)("term_id");
var offsetFromCenter = function (e) {
/**
* @param {?} rt
* @return {?}
*/
function t(rt) {
(0, _deepAssign2.default)(this, t);
var self = (0, _custom2.default)(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, rt));
return self.state = {
dialogVisible: false,
state: "doing",
seconds: 0,
title: "",
content: "",
selected: []
}, self.handleExamCard = function (canCreateDiscussions) {
if (canCreateDiscussions) {
if (1 === canCreateDiscussions.uint32_sub_cmd) {
var t = canCreateDiscussions.msg_subcmd0x1_startanswer || {};
var items = t.uint32_options_count || 3;
self.totalSeconds = t.uint32_answer_time || 30;
self.examType = t.uint32_option_style || 1;
self.seq = t.uint32_seq || 0;
self.choices = self.initChoicesByNum(items);
var timeout = self.totalSeconds;
clearInterval(self.intervalTimer);
/** @type {number} */
self.intervalTimer = setInterval(function () {
if (false !== self.state.dialogVisible) {
if (0 === timeout) {
clearInterval(self.intervalTimer);
self.setState({
title: "答题已结束",
content: "5秒后关闭窗口",
state: "stop"
});
} else {
self.setState({
seconds: timeout
});
timeout--;
}
} else {
clearInterval(self.intervalTimer);
}
}, 1e3);
self.setState({
dialogVisible: true,
state: "doing",
seconds: timeout,
selected: []
});
p.report.tdw({
action: "exposure",
page: "weblive",
module: "answersheet",
ver1: stable
});
} else {
if (2 === canCreateDiscussions.uint32_sub_cmd) {
if (!self.state.dialogVisible) {
return;
}
/** @type {number} */
var driver_name = 5;
clearInterval(self.intervalTimer);
/** @type {number} */
self.intervalTimer = setInterval(function () {
if (0 === driver_name) {
clearInterval(self.intervalTimer);
self.setState({
dialogVisible: false
});
} else {
self.setState({
content: driver_name + "秒后关闭窗口"
});
driver_name--;
}
}, 1e3);
self.setState({
title: "答题已结束",
content: driver_name + "秒后关闭窗口",
state: "stop"
});
}
}
}
}, self.clickChoice = function (state) {
self.setState({
selected: state.checked
});
}, self.initChoicesByNum = function (i) {
/** @type {!Array} */
var observation_data = [];
/** @type {number} */
var value = 0;
for (; value < i; value++) {
observation_data.push({
label: "ABCDEFGHIJKLMN"[value]
});
}
return observation_data;
}, self.sendAnswer = function () {
var selectedItems = self.state.selected;
if (0 !== selectedItems.length) {
p.report.tdw({
action: "click",
page: "weblive",
module: "answersheet",
ver1: stable
});
self.PushClient.fetch({
url: "webclassOpt",
data: {
uint32_sub_cmd: 1,
msg_subcmd0x1_req_answersheet: {
uint32_sub_cmd: 3,
msg_subcmd0x3_req_studentanswer: {
uint32_course_id: parseInt(roomId, 10),
uint32_seq: self.seq,
rpt_uint32_answers: selectedItems
}
}
}
}, function () {
clearInterval(self.intervalTimer);
self.setState({
title: "你的答案:",
content: null,
state: "result"
});
});
}
}, self.hideDialog = function () {
self.setState({
dialogVisible: false
});
}, self.intervalTimer = null, self.seq = 0, self.examType = 0, self.choices = [{
label: "A"
}, {
label: "B"
}, {
label: "C"
}], self;
}
return (0, _UiIcon2.default)(t, e), (0, _noframeworkWaypoints2.default)(t, [{
key: "componentDidMount",
value: function () {
var onlineRef = this;
this.PushClient = (0, end.impushConnect)(roomId);
this.PushClient.on("push", function (e) {
if (e.room_id === roomId) {
var user = e.data.body;
if (1 === user.uint32_sub_cmd) {
onlineRef.handleExamCard(user.msg_subcmd0x1_answersheet);
}
}
});
}
}, {
key: "render",
value: function () {
var data = this.state;
var visible = data.dialogVisible;
var type = data.state;
var value = data.title;
var children = data.content;
var ranges = data.selected;
var seconds = data.seconds;
return _prepareStyleProperties2.default.createElement(_CalendarDay2.default, {
visible: visible,
className: "examcard-dialog",
width: 450,
height: 250,
draggable: true
}, _prepareStyleProperties2.default.createElement("div", {
className: "dialog-head drag-handler"
}, _prepareStyleProperties2.default.createElement("span", {
className: "head-text"
}, 1 === this.examType ? "单选题" : "多选题"), "doing" === type ? null : _prepareStyleProperties2.default.createElement(_CalendarEvent2.default, {
type: "cross",
size: "m",
onClick: this.hideDialog
})), _prepareStyleProperties2.default.createElement("div", {
className: "dialog-body"
}, _prepareStyleProperties2.default.createElement("div", {
className: "dialog-content"
}, _prepareStyleProperties2.default.createElement("div", {
className: "tip"
}, "doing" === type ? null : _prepareStyleProperties2.default.createElement("p", {
className: "header"
}, value), "stop" === type ? _prepareStyleProperties2.default.createElement("p", {
className: "text"
}, children) : null), "stop" === type ? null : _prepareStyleProperties2.default.createElement("div", {
className: "choice-group " + type
}, _prepareStyleProperties2.default.createElement(o.RadioCheckboxList, {
value: this.state.selected,
list: this.choices,
type: 1 === this.examType ? "radio" : "checkbox",
onChange: this.clickChoice,
readOnly: "result" === type
})))), _prepareStyleProperties2.default.createElement("div", {
className: "btn-group"
}, "doing" === type ? _prepareStyleProperties2.default.createElement(_CalendarTitle2.default, {
theme: "primary",
disabled: 0 === ranges.length,
onClick: this.sendAnswer
}, "确定") : null), "doing" === type ? _prepareStyleProperties2.default.createElement(_AboutPage2.default, {
totalSeconds: this.totalSeconds,
seconds: seconds
}) : null);
}
}]), t;
}(_prepareStyleProperties.PureComponent);
t.default = offsetFromCenter;
};
/**
* @param {?} cond
* @param {!Object} t
* @param {?} n
* @return {undefined}
*/
function ImDialog(cond, t, n) {
/**
* @param {?} obj
* @return {?}
*/
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
Object.defineProperty(t, "__esModule", {
value: true
});
var _deepAssign2 = _interopRequireDefault(n(1));
var _noframeworkWaypoints2 = _interopRequireDefault(n(2));
var _custom2 = _interopRequireDefault(n(3));
var _UiIcon2 = _interopRequireDefault(n(4));
var _prepareStyleProperties = n(0);
var _prepareStyleProperties2 = _interopRequireDefault(_prepareStyleProperties);
var _CalendarDay2 = _interopRequireDefault(n(991));
var end = n(327);
n(992);
var offsetFromCenter = function (e) {
/**
* @return {?}
*/
function Sankey() {
var _Object$getPrototypeO;
var n;
var _ref;
var nBF;
(0, _deepAssign2.default)(this, Sankey);
/** @type {number} */
var _len8 = arguments.length;
/** @type {!Array} */
var args = Array(_len8);
/** @type {number} */
var _key8 = 0;
for (; _key8 < _len8; _key8++) {
args[_key8] = arguments[_key8];
}
return n = _ref = (0, _custom2.default)(this, (_Object$getPrototypeO = Sankey.__proto__ || Object.getPrototypeOf(Sankey)).call.apply(_Object$getPrototypeO, [this].concat(args))), _ref.parseScroll = function (canCreateDiscussions) {
var element = window.document.body;
if ((0, end.checkScrollbar)() && canCreateDiscussions) {
element.style.paddingRight = (0, end.getScrollBarWidth)() + "px";
/** @type {string} */
element.style.overflow = "hidden";
} else {
/** @type {string} */
element.style.paddingRight = "";
/** @type {string} */
element.style.overflow = "auto";
}
}, nBF = n, (0, _custom2.default)(_ref, nBF);
}
return (0, _UiIcon2.default)(Sankey, e), (0, _noframeworkWaypoints2.default)(Sankey, [{
key: "componentWillReceiveProps",
value: function (nextProps) {
if (nextProps.visible !== this.props.visible) {
this.parseScroll(nextProps.visible);
}
}
}, {
key: "componentWillUnmount",
value: function () {
var element = window.document.body;
/** @type {string} */
element.style.paddingRight = "";
/** @type {string} */
element.style.overflow = "auto";
}
}, {
key: "render",
value: function () {
var options = this.props;
var classes = options.className;
var SVG_WIDTH = options.width;
var line_offset = options.height;
var expect = options.visible;
var reviver = options.draggable;
if (!expect) {
return null;
}
var value = _prepareStyleProperties2.default.createElement("div", {
className: "im-dialog",
style: {
width: SVG_WIDTH,
height: line_offset
}
}, this.props.children);
return _prepareStyleProperties2.default.createElement("div", {
className: classes
}, _prepareStyleProperties2.default.createElement("div", {
className: "im-dialog-mask"
}), _prepareStyleProperties2.default.createElement("div", {
className: "im-dialog-wrap"
}, reviver ? _prepareStyleProperties2.default.createElement(_CalendarDay2.default, {
handle: ".im-dialog .drag-handler",
defaultPosition: {
x: -SVG_WIDTH / 2,
y: -line_offset / 2
}
}, value) : value));
}
}]), Sankey;
}(_prepareStyleProperties.Component);
t.default = offsetFromCenter;
}
/**
* @param {!Object} options
* @param {?} callback
* @param {?} init
* @return {undefined}
*/
function Report(options, callback, init) {
/**
* @param {string} source
* @param {!Object} config
* @return {?}
*/
function setup(source, config) {
if (source) {
/** @type {!Array} */
var drilldownLevelLabels = [];
if (config) {
var prop;
for (prop in config) {
if (config[prop]) {
drilldownLevelLabels.push(prop + "=" + config[prop]);
}
}
}
/** @type {string} */
source = source + drilldownLevelLabels.join("&");
return function () {
if (Instance) {
return Instance;
}
/** @type {!Array} */
var tim = [];
/** @type {number} */
var t = 0;
return Instance = function () {
/** @type {number} */
var i = t++ % 10;
return tim[i] || (tim[i] = new Image);
};
}()().src = source;
}
}
var obj;
var ret = init(11);
var scene = (obj = ret) && obj.__esModule ? obj : {
default: obj
};
var app = window.report || {};
var self = {
TABLE: "dc00149",
TIMER: 300,
DELAY_REPORT: false,
DATA: {}
};
/** @type {!Array} */
var b = [];
/** @type {!Array} */
var values = [];
if ("object" !== ("undefined" == typeof JSON ? "undefined" : (0, scene.default)(JSON))) {
JSON = {};
}
if ("function" != typeof JSON.stringify) {
/**
* @param {*} params
* @param {(Array<string>|function(string, *): *|null)=} filters
* @param {(number|string)=} options
* @return {string}
*/
JSON.stringify = function (params, filters, options) {
};
}
/** @type {string} */
var readonly = "//tmapp.qq.com/cgi-bin/activity_platform/tdw/report?";
/** @type {null} */
var Instance = null;
/** @type {!Console} */
var cons = console || {};
/**
* @param {string} type
* @param {string} name
* @param {string} value
* @param {string} total
* @param {string} loader
* @return {undefined}
*/
var callback = function (type, name, value, total, loader) {
if (type && name && value) {
var config = {
table: type || self.TABLE,
fields: encodeURIComponent(JSON.stringify(name)),
datas: encodeURIComponent(JSON.stringify(value)),
pr_ip: total || "obj3",
pr_t: loader || "ts",
t: +new Date
};
setup(readonly, config);
}
};
/** @type {function(this:*): string} */
var check = Object.prototype.toString;
var json = {};
/** @type {!Array} */
var r = [];
/** @type {!Array} */
var td = [];
/** @type {string} */
var table = self.TABLE;
/** @type {null} */
var id = null;
/**
* @return {undefined}
*/
var reduce = function () {
var i;
for (i in b = [], values = [], self.DATA) {
b.push(i);
var value = self.DATA[i];
values.push(value || 0 === value ? value : "");
}
};
reduce();
/**
* @param {!Array} f
* @param {!Array} a
* @return {?}
*/
var walk = function (f, a) {
/** @type {!Array} */
var r = [];
/** @type {number} */
var i = 0;
for (; i < a.length; i++) {
/** @type {boolean} */
var o = false;
/** @type {number} */
var j = 0;
for (; j < f.length; j++) {
if (f[j] === a[i]) {
/** @type {boolean} */
o = true;
}
}
if (!o) {
r.push(a[i]);
}
}
return f.concat(r);
};
/**
* @param {!Array} p
* @param {!Array} values
* @param {!Array} a
* @param {!Array} o
* @return {?}
*/
var fn = function (p, values, a, o) {
var obj = {};
/** @type {number} */
var i = 0;
for (; i < o.length; i++) {
obj[o[i]] = values[i];
}
/** @type {number} */
var pos = 0;
for (; pos < p.length; pos++) {
var s = p[pos];
/** @type {number} */
var i = 0;
for (; i < a.length; i++) {
if (!(s[i] || 0 === s[i])) {
s[i] = obj[a[i]] || "";
}
}
}
return p;
};
/** @type {number} */
var C = 0;
/**
* @return {?}
*/
app.toreport = function () {
if (td.length) {
var args = walk(r, b);
var result = fn(td, values, args, b);
var i = args.indexOf("module");
/** @type {boolean} */
var string = true;
if (i || 0 === i) {
/** @type {number} */
var k = 0;
for (; k < result.length; k++) {
if (!result[k][i]) {
/** @type {boolean} */
string = false;
break;
}
}
} else {
/** @type {boolean} */
string = false;
}
if (false === string && id && self.TIMER && C < 33) {
var i = this;
return C++, window.clearTimeout(id), void (id = window.setTimeout(function () {
i.toreport();
}, self.TIMER));
}
/** @type {number} */
C = 0;
(function (names, entries) {
if (cons.table) {
try {
if (window.localStorage && 1 == window.localStorage.tdwFlag) {
/** @type {number} */
var name = 0;
var pendings = entries.length;
for (; name < pendings; name++) {
var attributesMap = {};
/** @type {number} */
var i = 0;
var length = names.length;
for (; i < length; i++) {
if ("" != entries[name][i]) {
attributesMap[names[i]] = entries[name][i];
}
}
cons.table([attributesMap]);
}
}
} catch (e) {
}
}
})(args, result);
callback(table, args, result);
json = {};
/** @type {number} */
r.length = td.length = 0;
/** @type {string} */
table = self.TABLE;
window.clearTimeout(id);
/** @type {null} */
id = null;
}
};
/**
* @param {!Object} data
* @param {?} params
* @param {string} gain
* @return {undefined}
*/
app.config = function (data, params, gain) {
var npm = (app.cookie && app.cookie.getConfig ? app.cookie.getConfig : {}).DATA || {};
var reqs = npm.from || {};
if (npm._BASE && npm._BASE.ver7) {
data.ver7 = npm._BASE.ver7;
}
if (npm._BASE && npm._BASE.ver8) {
data.ver8 = npm._BASE.ver8;
}
if (npm._BASE && npm._BASE.ver5) {
data.ver5 = npm._BASE.ver5;
}
if (npm._BASE && npm._BASE.refer) {
data.refer = npm._BASE.refer;
}
var options = {};
var i;
for (i in reqs) {
options = reqs[i];
break;
}
if (data.ver4 = options.ver4 || data.ver4, data.ver6 = options.ver6 || data.ver4, data) {
var i;
for (i in data) {
self.DATA[i] = data[i];
}
}
/** @type {boolean} */
self.DELAY_REPORT = !!params;
if (gain) {
/** @type {string} */
self.TABLE = gain;
}
reduce();
};
/**
* @param {?} i
* @return {?}
*/
app.getReportData = function (i) {
return self.DATA[i];
};
/**
* @param {!Object} options
* @param {boolean} params
* @param {string} args
* @return {?}
*/
app.tdw = function (options, params, args) {
if (!options) {
throw "params can not be null";
}
var controls;
switch (params = params || self.DELAY_REPORT, table = args || table, check.call(options)) {
case "[object Array]":
/** @type {!Object} */
controls = options;
break;
case "[object Object]":
if (params) {
/** @type {!Array} */
var c = [];
/** @type {!Array} */
var res = [];
var i;
for (i in options) {
if ("obj3" !== i && "ts" !== i) {
c.push(i);
res.push(options[i]);
}
}
return c = walk(c, b), res = fn([res], values, c, b), callback(table, c, res, options.obj3, options.ts);
}
/** @type {!Array} */
controls = [options];
}
/** @type {number} */
i = 0;
var len = controls.length;
for (; i < len; i++) {
var array = controls[i];
/** @type {!Array} */
var item = [];
var k;
for (k in td.push(item), array) {
var p;
if (k in json) {
p = json[k];
/** @type {string} */
r[p] = k;
} else {
r.push(k);
/** @type {number} */
json[k] = p = r.length - 1;
}
item[p] = array[k] || "";
}
}
if (params) {
this.toreport();
} else {
var C = this;
if (!id && self.TIMER) {
id = window.setTimeout(function () {
C.toreport();
}, self.TIMER);
}
}
};
options.exports = app;
}
;
return u.default.createElement(
d.default,
{
visible: this.state.dialogVisible,
className: "sign-dialog"
},
u.default.createElement(
"div",
{
className: "dialog-head"
},
"doing" === this.state.state
? null
: u.default.createElement(h.default, {
type: "cross",
size: "m",
onClick: this.hideDialog
})
),
u.default.createElement(
"div",
{
className: "dialog-body"
},
u.default.createElement(
"div",
{
className: "dialog-content"
},
"doing" === this.state.state
? u.default.createElement(
"div",
{
className: "tip"
},
"请在倒计时结束前,完成课堂签到"
)
: u.default.createElement(
"div",
{
className: "tip"
},
u.default.createElement(A.default, {
type: "ok",
size: "m"
}),
"签到成功"
)
)
),
u.default.createElement(
"div",
{
className: "btn-group"
},
"doing" === this.state.state
? u.default.createElement(
m.default,
{
theme: "primary",
onClick: this.sendSign
},
"签到"
)
: u.default.createElement(
m.default,
{
theme: "primary",
onClick: this.hideDialog
},
"确定"
)
),
"doing" === this.state.state
? u.default.createElement(p.default, {
totalSeconds: this.totalSeconds,
seconds: this.state.seconds
})
: null
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment