All files / web/src/composables/node useNodeStructure.ts

0% Statements 0/27
0% Branches 0/1
0% Functions 0/1
0% Lines 0/27

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                                                                           
import { computed, ref } from 'vue'
import { useNodeExecutionStatus } from './useNodeExecutionStatus'
import { useNodeInfoPopup } from './useNodeInfoPopup'
 
/**
 * Unified node structure composable
 * Integrates node execution status, info popup, and action buttons
 *
 * @param nodeId - Node ID
 * @returns All required node states and methods
 */
export function useNodeStructure(nodeId: string) {
  const executionStatus = useNodeExecutionStatus()
  const statusClass = computed(() => executionStatus.getNodeStatusClass(nodeId))
  const executionTime = computed(() => {
    const time = executionStatus.getNodeExecutionTime(nodeId)
    return time ? executionStatus.formatExecutionTime(time) : null
  })
 
  const infoPopup = useNodeInfoPopup(nodeId)
 
  const showActions = ref(false)
  const onMouseEnter = () => {
    showActions.value = true
  }
  const onMouseLeave = () => {
    showActions.value = false
  }
 
  return {
    statusClass,
    executionTime,
    ...infoPopup,
    showActions,
    onMouseEnter,
    onMouseLeave,
  }
}