Machine state, sequences and sessions

Sequence Editor <smart-sequence-editor>

SequenceEditor is a step sequence editor and runner for test sequences, batch procedures and recipes.

<smart-sequence-editor> · 7 properties, 8 methods, 5 events · source/modules/smart.sequenceeditor.js

Usage in JavaScript

The component is a custom element: its properties are set on the element, its events are DOM CustomEvents with the data in event.detail, and its methods are called on the element. The properties can also be written as attributes in kebab case (precision-digits="1").

const sequenceEditor = document.querySelector('smart-sequence-editor');

sequenceEditor.stopOnFailure = true;
sequenceEditor.addEventListener('sequenceComplete', (event) => console.log(event.detail));
sequenceEditor.abort();

Properties

PropertyType, defaultDescription
currentStepstring | nullSets or retrieves the id of the step being run. Null when nothing is running.
limitEvaluatorfunction?Sets or gets a function (step, value) that returns true, false, or undefined to fall back to the built-in limit forms. Only needed for a limit that cannot be expressed as a range or as a nominal value with a tolerance.
mode'edit' | 'run'
edit
Sets or retrieves whether the sequence is being edited or run.
edit the sequence is being assembled
run the sequence is executing
precisionDigitsnumber
3
Sets or gets the number of decimal places used when a measurement is shown.
showResultsboolean
true
Sets or retrieves whether the result column is shown. The property is read when the default columns are built, so set it before the component is initialized. Boolean attributes are presence-based, so the column cannot be turned off from markup.
stepsarraySets or retrieves the sequence as [{ id, name, action, unit, min, max, nominal, tolerance, value, skipped, aborted }]. Only id is required. A step with neither a range nor a nominal value is an action rather than a measurement: it can run but cannot fail on a value. The state of a step is derived from its measurement and its limit, so updating the measurement updates the verdict. Assign a new array to update the component.
stopOnFailureboolean
false
Sets or retrieves whether a failed step aborts the rest of the run.

Methods

MethodDescription
abort()Stops the run and marks every step that has not run as aborted, so that the report shows that the run did not finish.
limitText(step)
returns string
Returns the limit of a step as it appears on a specification sheet: a range, a single bound, or a nominal value with a tolerance. An invalid limit is written with "(invalid limit)" after it, and warned about once in the console.
step object The step.
pause()Pauses the run at the current step.
report()
returns object
Returns the record of the run: the verdict, the number of steps in each state, and every step with its limit and measurement. A run passes only when no step failed and no step was left unrun.
run()Starts the run at the first pending step and raises the stepStart event. Does nothing when the sequence is already running.
setResult(id, value)
returns boolean
Records a measurement for a step and moves to the next step. While a step is current, only that step takes a result: a result for another step is refused, raises resultRefused, changes nothing and returns false. A non-numeric result is kept and shown, and the step is marked as not evaluated rather than as passed or failed.
id string | number The step's id. Always identify a step by id and never by row index, the table sorts, so an index stops meaning anything the moment a column header is clicked.
value any The measurement.
skip(id)Marks a step as not run and moves to the next step when the sequence is running.
id string | number The step's id.
stateOf(step)
returns string
Returns the state of a step: pending, running, passed, failed, skipped, aborted or notEvaluated. The state is derived from the measurement and the limit. A step with a limit whose result cannot be judged against it - NaN, Infinity, a text such as n/a, or a limit that is itself invalid (a minimum above the maximum, a negative tolerance) - is notEvaluated, never passed; a report with such a step has not passed.
step object The step.

Events

The data of an event is in event.detail. The sequence editor executes no step itself: it sets currentStep, raises stepStart and waits, with no timeout, until the application calls setResult(). stepComplete, sequencePause and sequenceComplete follow changes the editor has already made to steps, currentStep and mode.

EventDescription and detail
sequenceCompleteThis event is triggered when the run finishes or is aborted.
aborted boolean Whether it was aborted rather than completed.
report object The full record.
sequencePauseThis event is triggered when the run is paused.
step any The step it paused at.
stepCompleteThis event is triggered when a measurement is recorded against a step.
id string | number The step's id.
state string The state it settled into.
passed boolean Whether it passed.
step object The step that completed.
resultRefusedThis event is triggered when setResult is called for a step that is not the one running. The result is not recorded and the run does not move.
id string | number The step the result was for.
value any The result that was refused.
current string | number The step that is running.
stepStartThis event is triggered when the run reaches a step. The application performs the measurement and calls setResult; the component waits and does not execute anything itself.
id string | number The step's id.
step object The step.
index number Its position in the sequence.

Types

type SequenceEditorMode

'edit' | 'run'

CSS variables

The component declares 1 CSS variables; the CSS page shows how to set them.

--smart-sequence-height