export function generateNodeMetadataBox()

in web/src/app/pages/graph/architecture-graph/graph/components/workload.ts [94:174]


export function generateNodeMetadataBox(node: GraphNode): GraphObject {
  const generateTaintItems = () => {
    if (node.taints.length == 0) {
      return [$label('No taints').withStyle(NODE_METADATA_LABEL_NORMAL)];
    }
    return [
      $label('Node taints:').withStyle(NODE_METADATA_LABEL_NORMAL),
      ...node.taints.map((t) =>
        $rect()
          .withStyle(METADATA_BOX_WARNING)
          .withChildren([
            $label(t)
              .withStyle(NODE_METADATA_LABEL_NORMAL)
              .withMargin(2, 5, 2, 5),
          ]),
      ),
    ];
  };

  const generateConditionItems = () => {
    return [
      $label('Node conditions:').withStyle(NODE_METADATA_LABEL_NORMAL),
      ...node.conditions.map((c) =>
        $rect()
          .withStyle(
            c.is_positive_status ? TRANSPARENT_BOX : METADATA_BOX_ERROR,
          )
          .withChildren([
            $label(`${c.type} : ${c.status}`)
              .withStyle(NODE_METADATA_LABEL_NORMAL)
              .withMargin(2, 5, 2, 5),
          ]),
      ),
    ];
  };

  return $empty()
    .withMinSize(0, 350)
    .withChildren([
      ...common.generateDeletionOrUpdateLabel(node, GRAPH_COLORS.NODE, 20),
      $alignedBox(
        Direction.Vertical,
        TRANSPARENT_BOX,
        5,
        [0, 0, 0, 0],
        [
          $alignedBox(
            Direction.Vertical,
            NODE_METADATA_BOX,
            0,
            [3, 5, 3, 5],
            [
              $label(`PodCIDR:${node.podCIDR}`).withStyle(
                NODE_METADATA_LABEL_NORMAL,
              ),
              $label(`InternalIP:${node.internalIP}`).withStyle(
                NODE_METADATA_LABEL_NORMAL,
              ),
              $label(`ExternalIP:${node.externalIP}`).withStyle(
                NODE_METADATA_LABEL_NORMAL,
              ),
            ],
          ),
          $alignedBox(
            Direction.Vertical,
            NODE_METADATA_BOX,
            3,
            [3, 5, 3, 5],
            [...generateTaintItems()],
          ),
          $alignedBox(
            Direction.Vertical,
            NODE_METADATA_BOX,
            3,
            [3, 5, 3, 5],
            [...generateConditionItems()],
          ),
        ],
      ),
    ]);
}