diff --git a/src/utilities/sequence-editor/from-seq-json.ts b/src/utilities/sequence-editor/from-seq-json.ts index 160764e128..cd59465330 100644 --- a/src/utilities/sequence-editor/from-seq-json.ts +++ b/src/utilities/sequence-editor/from-seq-json.ts @@ -208,20 +208,20 @@ export async function seqJsonToSequence(input: string | null): Promise { if (seqJson.immediate_commands) { sequence.push(`\n`); sequence.push(`@IMMEDIATE\n`); - for (const rtc of seqJson.immediate_commands) { - switch (rtc.type) { + for (const realTimeCommand of seqJson.immediate_commands) { + switch (realTimeCommand.type) { case 'command': { // FSW Commands - sequence.push(commandToString(rtc)); + sequence.push(commandToString(realTimeCommand)); break; } case 'activate': case 'load': { - sequence.push(loadOrActivateToString(rtc)); + sequence.push(loadOrActivateToString(realTimeCommand)); break; } default: { - throw new Error(`Invalid immediate command type ${rtc.type}`); + throw new Error(`Invalid immediate command type ${realTimeCommand.type}`); } } } @@ -257,13 +257,23 @@ export async function seqJsonToSequence(input: string | null): Promise { return sequence.join(''); } +function isCommand(step: Command | ImmediateFswCommand): step is Command { + return (step as Command).time !== undefined; +} + function commandToString(step: Command | ImmediateFswCommand): string { - const time = 'time' in step ? `${seqJsonTimeToSequence(step.time)} ` : ''; const args = seqJsonArgsToSequence(step.args); const metadata = step.metadata ? seqJsonMetadataToSequence(step.metadata) : ''; - const models = 'models' in step ? (step.models ? seqJsonModelsToSequence(step.models) : '') : ''; const description = step.description ? seqJsonDescriptionToSequence(step.description) : ''; + // used for commands, ImmediateFswCommand doesn't support 'time' and 'models' + let time = ''; + let models = ''; + if (isCommand(step)) { + time = step.time ? `${seqJsonTimeToSequence(step.time)} ` : ''; + models = step.models ? (step.models ? seqJsonModelsToSequence(step.models) : '') : ''; + } + let commandString = `${time}${step.stem}${args}${description}`; // add a new line if on doesn't exit at the end of the commandString if (!commandString.endsWith('\n')) { @@ -275,7 +285,7 @@ function commandToString(step: Command | ImmediateFswCommand): string { } function loadOrActivateToString(step: Activate | Load | ImmediateActivate | ImmediateLoad) { - const time = 'time' in step ? `${seqJsonTimeToSequence(step.time)} ` : ''; + const time = (step as Activate | Load).time ? `${seqJsonTimeToSequence((step as Activate | Load).time)} ` : ''; const args = step.args ? seqJsonArgsToSequence(step.args) : ''; const metadata = step.metadata ? seqJsonMetadataToSequence(step.metadata) : ''; const models = step.models ? seqJsonModelsToSequence(step.models) : '';