Skip to content
This repository was archived by the owner on Jun 7, 2023. It is now read-only.

Commit 11546e6

Browse files
committed
Fix: Improve testability.
1 parent 7b4969a commit 11546e6

3 files changed

Lines changed: 220 additions & 253 deletions

File tree

runestone/activecode/js/activecode.js

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@
88
"use strict";
99

1010
import RunestoneBase from "../../common/js/runestonebase.js";
11-
import AudioTour from "./audiotour";
12-
import "./activecode-i18n.en";
13-
import "./activecode-i18n.pt-br";
11+
import AudioTour from "./audiotour.js";
12+
import "./activecode-i18n.en.js";
13+
import "./activecode-i18n.pt-br.js";
14+
import "./activecode-i18n.sr-Cyrl.js";
1415
import CodeMirror from "codemirror";
1516
import "codemirror/mode/python/python.js";
1617
import "codemirror/mode/css/css.js";
@@ -20,7 +21,6 @@ import "codemirror/mode/javascript/javascript.js";
2021
import "codemirror/mode/sql/sql.js";
2122
import "codemirror/mode/clike/clike.js";
2223
import "codemirror/mode/octave/octave.js";
23-
import "./activecode-i18n.en.js";
2424
import "./../css/activecode.css";
2525
import "codemirror/lib/codemirror.css";
2626

@@ -43,6 +43,7 @@ export class ActiveCode extends RunestoneBase {
4343
super(opts);
4444
var suffStart;
4545
var orig = $(opts.orig).find("textarea")[0];
46+
this.containerDiv = opts.orig;
4647
this.useRunestoneServices = opts.useRunestoneServices;
4748
this.python3 = opts.python3;
4849
this.alignVertical = opts.vertical;
@@ -126,26 +127,25 @@ export class ActiveCode extends RunestoneBase {
126127
if (this.autorun) {
127128
$(document).ready(this.runProg.bind(this));
128129
}
130+
this.indicate_component_ready();
129131
}
130132

131133
createEditor(index) {
132-
this.containerDiv = document.createElement("div");
134+
this.outerDiv = document.createElement("div");
133135
var linkdiv = document.createElement("div");
134136
linkdiv.id = this.divid.replace(/_/g, "-").toLowerCase(); // :ref: changes _ to - so add this as a target
135-
$(this.containerDiv).addClass("ac_section alert alert-warning");
137+
$(this.outerDiv).addClass("ac_section alert alert-warning");
136138
var codeDiv = document.createElement("div");
137139
$(codeDiv).addClass("ac_code_div col-md-12");
138140
this.codeDiv = codeDiv;
139-
this.containerDiv.id = this.divid;
140-
this.containerDiv.lang = this.language;
141-
this.outerDiv = this.containerDiv;
142-
$(this.origElem).replaceWith(this.containerDiv);
141+
this.outerDiv.lang = this.language;
142+
$(this.origElem).replaceWith(this.outerDiv);
143143
if (linkdiv.id !== this.divid) {
144144
// Don't want the 'extra' target if they match.
145-
this.containerDiv.appendChild(linkdiv);
145+
this.outerDiv.appendChild(linkdiv);
146146
}
147-
this.containerDiv.appendChild(codeDiv);
148-
var edmode = this.containerDiv.lang;
147+
this.outerDiv.appendChild(codeDiv);
148+
var edmode = this.outerDiv.lang;
149149
if (edmode === "sql") {
150150
edmode = "text/x-sql";
151151
} else if (edmode === "java") {
@@ -1207,22 +1207,22 @@ Yet another is that there is an internal error. The internal error message is:
12071207
let urDivid = `${this.divid}_offscreen_unit_results`;
12081208
let unitFeedback = document.getElementById(urDivid);
12091209
let tmp = document.body.removeChild(unitFeedback);
1210-
if ($(this.containerDiv).find(`#${urDivid}`).length > 0) {
1211-
tmp = $(this.containerDiv).find(`#${urDivid}`)[0];
1210+
if ($(this.outerDiv).find(`#${urDivid}`).length > 0) {
1211+
tmp = $(this.outerDiv).find(`#${urDivid}`)[0];
12121212
} else {
1213-
this.containerDiv.appendChild(tmp);
1213+
this.outerDiv.appendChild(tmp);
12141214
}
12151215
$(tmp).show();
12161216
} else {
12171217
let urDivid = this.divid + "_unit_results";
12181218
if (
1219-
$(this.containerDiv).find(`#${urDivid}`).length == 0 &&
1220-
$(this.containerDiv).find(
1219+
$(this.outerDiv).find(`#${urDivid}`).length == 0 &&
1220+
$(this.outerDiv).find(
12211221
`#${urDivid}_offscreen_unit_results`
12221222
).length == 0
12231223
) {
12241224
let urResults = document.getElementById(urDivid);
1225-
this.containerDiv.appendChild(urResults);
1225+
this.outerDiv.appendChild(urResults);
12261226
}
12271227
}
12281228
}
@@ -1274,8 +1274,8 @@ Yet another is that there is an internal error. The internal error message is:
12741274
});
12751275
Sk.divid = this.divid;
12761276
Sk.logResults = logResults;
1277-
if (this.graderactive && this.containerDiv.closest(".loading")) {
1278-
Sk.gradeContainer = this.containerDiv.closest(".loading").id;
1277+
if (this.graderactive && this.outerDiv.closest(".loading")) {
1278+
Sk.gradeContainer = this.outerDiv.closest(".loading").id;
12791279
} else {
12801280
Sk.gradeContainer = this.divid;
12811281
}

runestone/activecode/js/timed_activecode.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
The TimedActivecode classes are a great example of where multiple inheritance would be useful
3-
But since Javascript does not suppport multiple inheritance we use the mixin pattern.
3+
But since Javascript does not support multiple inheritance we use the mixin pattern.
44
55
*/
66
import LiveCode from "./livecode";

0 commit comments

Comments
 (0)