mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-27 09:45:13 +00:00
refactor: replace custom formatExecutionTime with formatDuration utility
- Use existing formatDuration util from shared utils instead of custom implementation - Extract execution time formatting to computed property for cleaner template - Remove 'any' type assertion in MediaAssetActions, use proper types
This commit is contained in:
@@ -15,7 +15,7 @@
|
|||||||
<i class="icon-[lucide--copy] size-4" />
|
<i class="icon-[lucide--copy] size-4" />
|
||||||
</button>
|
</button>
|
||||||
<span class="ml-auto text-sm text-neutral-500">
|
<span class="ml-auto text-sm text-neutral-500">
|
||||||
{{ formatExecutionTime(folderExecutionTime) }}
|
{{ formattedExecutionTime }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -110,7 +110,10 @@ import MediaAssetCard from '@/platform/assets/components/MediaAssetCard.vue'
|
|||||||
import { useMediaAssets } from '@/platform/assets/composables/useMediaAssets'
|
import { useMediaAssets } from '@/platform/assets/composables/useMediaAssets'
|
||||||
import type { AssetItem } from '@/platform/assets/schemas/assetSchema'
|
import type { AssetItem } from '@/platform/assets/schemas/assetSchema'
|
||||||
import { ResultItemImpl } from '@/stores/queueStore'
|
import { ResultItemImpl } from '@/stores/queueStore'
|
||||||
import { getMediaTypeFromFilenamePlural } from '@/utils/formatUtil'
|
import {
|
||||||
|
formatDuration,
|
||||||
|
getMediaTypeFromFilenamePlural
|
||||||
|
} from '@/utils/formatUtil'
|
||||||
|
|
||||||
const activeTab = ref<'input' | 'output'>('input')
|
const activeTab = ref<'input' | 'output'>('input')
|
||||||
const mediaAssets = ref<AssetItem[]>([])
|
const mediaAssets = ref<AssetItem[]>([])
|
||||||
@@ -119,6 +122,11 @@ const folderPromptId = ref<string | null>(null)
|
|||||||
const folderExecutionTime = ref<number | undefined>(undefined)
|
const folderExecutionTime = ref<number | undefined>(undefined)
|
||||||
const isInFolderView = computed(() => folderPromptId.value !== null)
|
const isInFolderView = computed(() => folderPromptId.value !== null)
|
||||||
|
|
||||||
|
const formattedExecutionTime = computed(() => {
|
||||||
|
if (!folderExecutionTime.value) return ''
|
||||||
|
return formatDuration(folderExecutionTime.value * 1000)
|
||||||
|
})
|
||||||
|
|
||||||
const toast = useToast()
|
const toast = useToast()
|
||||||
|
|
||||||
// Use unified media assets implementation that handles cloud/internal automatically
|
// Use unified media assets implementation that handles cloud/internal automatically
|
||||||
@@ -280,16 +288,4 @@ const copyJobId = async () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const formatExecutionTime = (seconds?: number): string => {
|
|
||||||
if (!seconds) return ''
|
|
||||||
|
|
||||||
const minutes = Math.floor(seconds / 60)
|
|
||||||
const remainingSeconds = Math.floor(seconds % 60)
|
|
||||||
|
|
||||||
if (minutes > 0) {
|
|
||||||
return `${minutes}m ${remainingSeconds}s`
|
|
||||||
}
|
|
||||||
return `${remainingSeconds}s`
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -37,11 +37,8 @@ const emit = defineEmits<{
|
|||||||
const { asset, context } = inject(MediaAssetKey)!
|
const { asset, context } = inject(MediaAssetKey)!
|
||||||
const actions = useMediaAssetActions()
|
const actions = useMediaAssetActions()
|
||||||
|
|
||||||
// Get asset type from context or tags
|
|
||||||
const assetType = computed(() => {
|
const assetType = computed(() => {
|
||||||
// Check if asset has tags property (AssetItem type)
|
return context?.value?.type || asset.value?.tags?.[0] || 'output'
|
||||||
const assetWithTags = asset.value as any
|
|
||||||
return context?.value?.type || assetWithTags?.tags?.[0] || 'output'
|
|
||||||
})
|
})
|
||||||
|
|
||||||
const handleDelete = () => {
|
const handleDelete = () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user