From e5384cc7c0726e770852d2718051a4ad2d05f4d5 Mon Sep 17 00:00:00 2001 From: Daize Date: Thu, 7 Dec 2023 14:03:21 -0500 Subject: [PATCH 1/2] add info button to let users know about autocomplete --- .../runestone/activecode/js/activecode.js | 45 ++++++++++++++----- 1 file changed, 34 insertions(+), 11 deletions(-) diff --git a/bases/rsptx/interactives/runestone/activecode/js/activecode.js b/bases/rsptx/interactives/runestone/activecode/js/activecode.js index 362d2821..f460fd2b 100755 --- a/bases/rsptx/interactives/runestone/activecode/js/activecode.js +++ b/bases/rsptx/interactives/runestone/activecode/js/activecode.js @@ -341,7 +341,9 @@ export class ActiveCode extends RunestoneBase { if (this.chatcodes && eBookConfig.enable_chatcodes) { this.enableChatCodes(ctrlDiv); } - + // Info button + this.addInfoButton(ctrlDiv); + $(this.outerDiv).prepend(ctrlDiv); if (this.question) { if ($(this.question).html().match(/^\s+$/)) { @@ -353,6 +355,37 @@ export class ActiveCode extends RunestoneBase { this.controlDiv = ctrlDiv; } + addInfoButton(ctrlDiv) { + this.info = document.createElement("span"); + this.info.className = "glyphicon glyphicon-info-sign"; + $(this.info).css({ + "margin-left": "5px", + "margin-top": "8px" + }); + + $(this.info).attr({ + "data-toggle": "popover", + "data-placement": "top", + "data-content": 'Press Ctrl + Space for autocomplete suggestions', + "data-html": true, + "data-trigger": "manual" + }); + + ctrlDiv.appendChild(this.info); + $(this.info).popover(); + + $(this.info).on("click", (event) => { + event.stopPropagation(); + $(this.info).popover("toggle"); + }); + + $(document.body).on("click", (event) => { + if (!$(event.target).closest(this.info).length) { + $(this.info).popover("hide"); + } + }); + } + addFeedbackButton(ctrlDiv) { let butt = document.createElement("button"); $(butt).addClass("ac_opt btn btn-default"); @@ -364,16 +397,6 @@ export class ActiveCode extends RunestoneBase { $(butt).click(this.createGradeSummary.bind(this)); } - addDownloadButton(ctrlDiv) { - let butt = document.createElement("button"); - $(butt).text("Download"); - $(butt).addClass("btn save-button"); - ctrlDiv.appendChild(butt); - this.downloadButton = butt; - $(butt).click(this.downloadFile.bind(this, this.language)); - $(butt).attr("type", "button"); - } - enableHideShow(ctrlDiv) { $(this.runButton).attr("disabled", "disabled"); let butt = document.createElement("button"); From bef799acc6d359854066d40a7ee59829bb1f23e7 Mon Sep 17 00:00:00 2001 From: Daize Date: Thu, 7 Dec 2023 14:10:16 -0500 Subject: [PATCH 2/2] restore unintended deletion --- .../runestone/activecode/js/activecode.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/bases/rsptx/interactives/runestone/activecode/js/activecode.js b/bases/rsptx/interactives/runestone/activecode/js/activecode.js index f460fd2b..99918cb3 100755 --- a/bases/rsptx/interactives/runestone/activecode/js/activecode.js +++ b/bases/rsptx/interactives/runestone/activecode/js/activecode.js @@ -343,7 +343,7 @@ export class ActiveCode extends RunestoneBase { } // Info button this.addInfoButton(ctrlDiv); - + $(this.outerDiv).prepend(ctrlDiv); if (this.question) { if ($(this.question).html().match(/^\s+$/)) { @@ -397,6 +397,16 @@ export class ActiveCode extends RunestoneBase { $(butt).click(this.createGradeSummary.bind(this)); } + addDownloadButton(ctrlDiv) { + let butt = document.createElement("button"); + $(butt).text("Download"); + $(butt).addClass("btn save-button"); + ctrlDiv.appendChild(butt); + this.downloadButton = butt; + $(butt).click(this.downloadFile.bind(this, this.language)); + $(butt).attr("type", "button"); + } + enableHideShow(ctrlDiv) { $(this.runButton).attr("disabled", "disabled"); let butt = document.createElement("button");