Class: QualifiedEmbeddedEditor

QualifiedEmbeddedEditor

Represents a single embedded editor. Should always be created via QualifiedEmbedManager#createEditor, or through automatic editor creation.


new QualifiedEmbeddedEditor(config)

Creates a new embedded editor.

If this editor is created with config.node being an IFRAME, then that IFRAME is used directly as the editor. Otherwise, the editor will inject a new IFRAME as a child of the node passed in.

Parameters:
Name Type Description
config Object
Properties
Name Type Argument Description
manager QualifiedEmbedManager

Parent manager for this editor.

node HTMLElement

DOM node to use as basis for the injection. Will be used directly if an iFrame, otherwise an iFrame will get appended to this node.

challengeId string <nullable>

Challenge ID for this editor. If not provided, will attempt to be found via the node's data-qualified-embed attribute.

options ChallengeOptions <nullable>

Additional options for this editor, mixed with challenge-specific and shared options on the manager object.

Classes

QualifiedEmbeddedEditor

Members


manager :QualifiedEmbedManager

Manager for this editor.

Type:

node :HTMLElement

Node assigned to this editor. As a convenience, this node will have the property QualifiedEmbed set to this editor, so you can reference this editor via node.QualifiedEmbed.

Type:
  • HTMLElement

challengeId :string

ID of the challenge in the this editor

Type:
  • string

options :ChallengeOptions

Options on the current editor

Type:

iframe :HTMLIFrameElement

IFRAME node for this editor. May be the same as QualifiedEmbeddedEditor#node

Type:
  • HTMLIFrameElement

challengeData :ChallengeOptions~LoadData

Contains information about the loaded challenge, set after ChallengeOptions#onLoaded.

Type:

Methods


update(config)

Updates the iframe with new options, or reloads the iframe if the challenge ID has changed.

Parameters:
Name Type Description
config Object
Properties
Name Type Argument Description
challengeId string <nullable>

Change the challenge ID. Automatically Triggers a reload if the challenge ID is different.

options ChallengeOptions <nullable>

Update the options for this editor (mixed in with the current ones).

reload boolean <nullable>

If true, force a reload even if the challenge ID hasn't changed.


start()

Triggers the editor to start the challenge if not already started.

When the mode is readOnly or restricted, this action is ignored.

Returns:

A promise that resolves once the challenge is started, or rejects if an error occurs.

Type
Promise

runTests()

Triggers the editor to run candidate tests. The runnerframe tab must be visible.

Candidate tests can be run with this method even if actions or the testcases tab are hidden.

When the mode is readOnly, this action is ignored.

Returns:

A promise that resolves with the results of the run, or rejects if an error occurs.

Type
Promise.<ChallengeOptions~RunResult>

attempt()

Triggers the editor to run the submission tests. The runnerframe tab must be visible.

Submission tests can be run with this method even if actions or the code tab are hidden.

When the mode is readOnly, this action is ignored.

Returns:

A promise that resolves with the results of the run, or rejects if an error occurs.

Type
Promise.<ChallengeOptions~RunResult>

reset()

Triggers the editor to reset the solution code to the initial state.

When the mode is readOnly, this action is ignored.

When the mode is restricted, this action reverts the code to the last saved version.

Returns:

A promise that resolves with the current files, or rejects if an error occurs.

Type
Promise.<ChallengeOptions~FileContentsData>

reload()

Reloads the editor. This could result in a loss of data.


setFileContents(files, cursor)

Sets the file contents for the challenge. You move the cursor without changes by not passing any files.

Parameters:
Name Type Argument Description
files Object

Hash of file name or path to file contents to be set on the challenge solution.

Properties
Name Type Description
(path) string

Contents of each file. Use the file path as the key for project challenges, or code and testcases for classic challenges.

cursor ChallengeOptions~Cursor <nullable>

Optional value to move the cursor to a specific file, line, and character. Note: this will move focus to the iframe, so use with caution.

Returns:

A promise that resolves with the current files, or rejects if an error occurs.

Type
Promise.<ChallengeOptions~FileContentsData>

setRunResult(runResult)

Sets the run result for the challenge, which should be the eventData.data returned from ChallengeOptions#onRun, QualifiedEmbeddedEditor#runTests, or QualifiedEmbeddedEditor#attempt.

This can include the fileData property, which will configure the entire solution at once.

Parameters:
Name Type Description
runResult ChallengeOptions~RunResult
Returns:

A promise resolved after the result has been set, or rejects if an error occurs.

Type
Promise

destroy()

Destroys this via clearing and removing the iframe (if created internally).