All files / modules/70-pipeline/components/Diagram/node/NodeStart NodeStartModel.ts

86.67% Statements 13/15
91.67% Branches 11/12
66.67% Functions 2/3
86.67% Lines 13/15

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61              207x 207x 207x             207x         80x 80x           80x 80x 80x 80x 40x             40x                   120x                      
/*
 * Copyright 2020 Harness Inc. All rights reserved.
 * Use of this source code is governed by the PolyForm Shield 1.0.0 license
 * that can be found in the licenses directory at the root of this repository, also available at
 * https://polyformproject.org/wp-content/uploads/2020/06/PolyForm-Shield-1.0.0.txt.
 */
 
import { DefaultNodeModel, DefaultNodeModelOptions } from '../DefaultNodeModel'
import { DiagramType, PortName } from '../../Constants'
import { DefaultPortModel } from '../../port/DefaultPortModel'
 
export interface NodeStartModelOptions extends Omit<DefaultNodeModelOptions, 'name'> {
  color?: string
  isStart?: boolean
}
 
export class NodeStartModel extends DefaultNodeModel {
  color: string
  isStart: boolean
 
  constructor(options: NodeStartModelOptions = {}) {
    const { isStart = true, color } = options
    super({
      ...options,
      type: DiagramType.StartNode,
      icon: isStart ? 'play' : 'stop',
      name: isStart ? 'Start' : 'Stop'
    })
    this.isStart = isStart
    const defaultColor = isStart ? 'var(--diagram-start-node)' : 'var(--diagram-stop-node)'
    this.color = color ? color : defaultColor
    if (this.isStart) {
      this.addPort(
        new DefaultPortModel({
          in: false,
          name: PortName.Out
        })
      )
    } else {
      this.addPort(
        new DefaultPortModel({
          in: true,
          name: PortName.In
        })
      )
    }
  }
 
  serialize(): any {
    return {
      ...super.serialize(),
      color: this.color
    }
  }
 
  deserialize(event: any): void {
    super.deserialize(event)
    this.color = event.data.color
  }
}