All files / web/src/components/nodes/shared NodeInfoBar.vue

0% Statements 0/40
100% Branches 1/1
100% Functions 1/1
0% Lines 0/40

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 62 63 64                                                                                                                               
<script setup lang="ts">
import { computed, inject } from 'vue'
import { useNodeExecutionStatus } from '@/composables/node/useNodeExecutionStatus'
import type { useNodeInfoPopup } from '@/composables/node/useNodeInfoPopup'
 
interface Props {
  nodeId: string
}
 
const props = defineProps<Props>()
 
const executionStatus = useNodeExecutionStatus()
const executionTime = computed(() => {
  const time = executionStatus.getNodeExecutionTime(props.nodeId)
  return time ? executionStatus.formatExecutionTime(time) : null
})
 
// Inject popup state from BaseNode
const popupState = inject<ReturnType<typeof useNodeInfoPopup>>('nodePopupState')!
const {
  hasInput,
  hasOutput,
  showInputPopup,
  showTimePopup,
  showOutputPopup,
  activeTab
} = popupState
</script>
 
<template>
  <div v-if="executionTime || hasInput() || hasOutput()" class="node-info-tags">
    <span
      v-if="hasInput()"
      class="info-tag input"
      :class="{ active: activeTab !== null && activeTab === 'input' }"
      @click="showInputPopup"
    >
      Input
    </span>
    <span
      v-if="executionTime"
      class="info-tag time"
      :class="{ active: activeTab !== null && activeTab === 'time' }"
      @click="showTimePopup"
    >
      {{ executionTime }}
    </span>
    <span
      v-if="hasOutput()"
      class="info-tag output"
      :class="{ active: activeTab !== null && activeTab === 'output' }"
      @click="showOutputPopup"
    >
      Output
    </span>
  </div>
</template>
 
<style lang="scss" scoped>
@use '@/styles/nodes/node-info-tags' as *;
 
@include node-info-tags();
</style>