From 4f4978051e8bdf9b59e69a7898a5bdb75a97547d Mon Sep 17 00:00:00 2001 From: Mikhail Loginov Date: Tue, 12 May 2026 14:45:54 +0100 Subject: [PATCH 1/4] setting and assessment rendering --- icon.svg | 13 ++++ index.css | 4 ++ index.html | 23 +++++++ index.js | 179 ++++++++++++++++++++++++++++++++++++++++++++++++++ metadata.json | 12 ++++ settings.css | 0 settings.html | 24 +++++++ settings.js | 39 +++++++++++ 8 files changed, 294 insertions(+) create mode 100644 icon.svg create mode 100644 index.css create mode 100644 index.html create mode 100644 index.js create mode 100644 metadata.json create mode 100644 settings.css create mode 100644 settings.html create mode 100644 settings.js diff --git a/icon.svg b/icon.svg new file mode 100644 index 0000000..7d91044 --- /dev/null +++ b/icon.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/index.css b/index.css new file mode 100644 index 0000000..cbd12ad --- /dev/null +++ b/index.css @@ -0,0 +1,4 @@ +.codio-assessment-splice-iframe { + height: auto; + width: 100%; +} diff --git a/index.html b/index.html new file mode 100644 index 0000000..4949caf --- /dev/null +++ b/index.html @@ -0,0 +1,23 @@ + + + + + SPLICE assessment + + + + + + +
+

+
+
+
+
+
+
+
+ + + diff --git a/index.js b/index.js new file mode 100644 index 0000000..5404f67 --- /dev/null +++ b/index.js @@ -0,0 +1,179 @@ +(function (){ + let assessmentOptions = null + let assessment = null + let processing = false + let currentData = null + + const SPLICE_METHODS = { + REPORT_SCORE_AND_STATE: 'SPLICE.reportScoreAndState', + GET_STATE: 'SPLICE.getState', + GET_STATE_RESPONSE: 'SPLICE.getState.response', + FRAME_RESIZE: 'lti.frameResize', + } + + const updateProcessing = (status) => { + processing = status + } + + const applyStateInitial = (data) => { + const {state, result, ...dataWithoutState} = data + assessment = dataWithoutState.assessment + assessmentOptions = dataWithoutState.options + + render() + } + + const applyState = (data) => { + console.log('assessment iframe applyState', data) + currentData = data + if (!assessment) { + applyStateInitial(data) + } + // todo sent set state to iframe?? + } + + const renderContent = () => { + $('.instructions-text').html(assessment.source.settings.instructions) + const iframe = $(`