@prefecthq/prefect-ui-library
Version:
This library is the Vue and Typescript component library for [Prefect 2](https://github.com/PrefectHQ/prefect) and [Prefect Cloud 2](https://www.prefect.io/cloud/). _The components and utilities in this project are not meant to be used independently_.
46 lines (40 loc) • 1.74 kB
text/typescript
import { subHours } from 'date-fns'
import { TaskRunHistoryResponse, TaskRunHistoryStateResponse } from '@/models/api/TaskRunHistoryResponse'
import { TaskRunsFilter, TaskRunsHistoryFilter } from '@/models/Filters'
import { TaskRunHistory, TaskRunHistoryState } from '@/models/TaskRunHistory'
import { MapFunction } from '@/services/Mapper'
export const mapTaskRunHistoryStateResponseToTaskRunHistoryState: MapFunction<TaskRunHistoryStateResponse, TaskRunHistoryState> = function(source) {
return {
stateName: source.state_name,
stateType: source.state_type,
countRuns: source.count_runs,
sumEstimatedLateness: source.sum_estimated_lateness,
sumEstimatedRunTime: source.sum_estimated_run_time,
}
}
export const mapTaskRunHistoryResponseToTaskRunHistory: MapFunction<TaskRunHistoryResponse, TaskRunHistory> = function(source) {
return {
intervalStart: this.map('string', source.interval_start, 'Date'),
intervalEnd: this.map('string', source.interval_end, 'Date'),
states: this.map('TaskRunHistoryStateResponse', source.states, 'TaskRunHistoryState'),
}
}
export const mapTaskRunsFilterToTaskRunsHistoryFilter: MapFunction<TaskRunsFilter, TaskRunsHistoryFilter> = function(source) {
const defaultTimeSpanHours = 24
const now = new Date()
const { flows, flowRuns, deployments, taskRuns } = source
const {
startTimeBefore = now,
startTimeAfter = subHours(now, defaultTimeSpanHours),
} = taskRuns ?? {}
const timeSpanInSeconds = (startTimeBefore.getTime() - startTimeAfter.getTime()) / 1000
return {
flows,
flowRuns,
deployments,
taskRuns,
historyStart: startTimeAfter,
historyEnd: startTimeBefore,
historyIntervalSeconds: timeSpanInSeconds / 20,
}
}