import { DynamicContentStore } from "../../../flex-ui-core/src"; import { ITask, IWorker } from "../../../models"; import { SupervisorWorkerState } from "../../../state/State.definition"; import { ThemeProps } from "../../theme"; import { metricDataType } from "../TeamFiltersPanel/AgentMetricsTab/AgentMetricsTab.definitions"; import { Queue } from "../../../state/Supervisor/SupervisorState.definitions"; /** * Properties of the Worker Data Table * @typedef WorkersDataTable.WorkersDataTableProps * @property {boolean} isLoading - Indicates whether worker data table is loading. * @property {Array} workers - List of workers and their associated tasks. * @property {Function} onTaskSelected - Function called when task selected. * @property {Function} onWorkerSelected - Function called when worker selected. * @property {Function} [sortWorkers=WorkersDataTable.defaultCompareFunction] - Compare function to use when sorting by workers. * @property {Function} [sortCalls] - Compare function to use when sorting by calls. * @property {Function} [sortTasks] - Compare function to use when sorting by tasks. * @property {Array} [filters=WorkersDataTable.defaultFilters] - Legacy filters. Please use the filter API on the TeamsView component. * @property {string} [taskFilter=WorkersDataTable.taskFilter] - An expression used to filter out workers tasks. * @property {string} [defaultSortColumn] - Default sort column. */ export type WorkersDataTableProps = WorkersDataTableImplProps; /** * Programmable properties of WorkersDataTable. * @typedef WorkersDataTable.WorkersDataTableProgrammableProps */ export type WorkersDataTableProgrammableProps = Partial>; export declare enum WorkersDataTableChildrenKeys { worker = "worker", calls = "calls", tasks = "tasks", team = "team", status = "status", activity_time = "activity_time", skills = "skills", email = "email", queues = "queues" } export interface columnPropsDataType { key: string; header: string; subheader: string; description: string; } export declare const defaultSortWorkers: (a: SupervisorWorkerState, b: SupervisorWorkerState) => number; export declare const defaultSortActivityTime: (a: SupervisorWorkerState, b: SupervisorWorkerState) => number; export declare const defaultSortStatus: (a: SupervisorWorkerState, b: SupervisorWorkerState) => 1 | -1; export declare const defaultSortTeams: (a: SupervisorWorkerState, b: SupervisorWorkerState) => any; export declare const defaultSortEmail: (a: SupervisorWorkerState, b: SupervisorWorkerState) => any; export declare const displayName = "WorkersDataTable"; export declare const contentStore: DynamicContentStore; export interface WorkerListFilter { text?: string; query: string; } /** * Function used to sort rows in WorkersDataTable * @typedef WorkersDataTable.WorkersDataTableCompareFunction * @param a {SupervisorWorkerState} properties of worker A * @param b {SupervisorWorkerState} properties of worker B * @return number * @private */ type WorkersDataTableCompareFunction = (a: SupervisorWorkerState, b: SupervisorWorkerState) => number; export type WorkersDataTableImplProps = ThemeProps & { isLoading: boolean; workers: Array; filters?: Array; taskFilter?: string; selectedTask?: ITask; selectedWorker?: IWorker; monitoredTaskSid?: string; defaultSortColumn?: string; onTaskSelected: (task: ITask) => void; onWorkerSelected: (task: IWorker) => void; sortWorkers?: WorkersDataTableCompareFunction; sortCalls?: WorkersDataTableCompareFunction; sortTasks?: WorkersDataTableCompareFunction; sortActivityTime?: WorkersDataTableCompareFunction; sortStatus?: WorkersDataTableCompareFunction; sortTeams?: WorkersDataTableCompareFunction; sortEmail?: WorkersDataTableCompareFunction; updatePreferenceWithNewColumns?: (e: any) => void; showTeam?: boolean; showNewColumns?: boolean; agentMetricsColumnsPreference?: metricDataType[]; isNewTeamsViewColumnsEnabled?: boolean; isGraphQLPreferenceEnabled?: boolean; isCustomColumnsTeamsViewEnabled?: boolean; showQueues?: boolean; queues?: Queue[]; preferenceHooks?: { createFlexUserPreference: (input: { variables: { input: { preferenceKey: string; preferenceValue: string; flexUserSid: string; }; }; }) => Promise; fetchPreferences: (input: { variables: { input: { preferenceKey: string; flexUserSid: string; }; }; }) => Promise<{ data: { flexUserPreference: { preferenceValue: any; }; }; }>; }; }; /** * Props passed to children of WorkersDataTable. * @typedef {object} WorkersDataTable.WorkersDataTableChildrenProps * @property {Array} [workers] - List of workers. * @property {ITask} [selectedTask] - Selected task in the table. * @property {IWorker} [selectedWorker] - Selected worker in the table. * @property {string} [monitoredTaskSid] - Sid of the monitored task. */ export type WorkersDataTableChildrenProps = Pick; /** * ColumnDataCreationContext. * @typedef {object} WorkersDataTable.ColumnDataCreationContext * @property {Function} [onTaskSelected] - Callback called when a task is selected. * @property {ITask} [selectedTask] - Selected task. * @property {string} [monitoredTaskSid] - Sid of the monitored task. */ export interface ColumnDataCreationContext { onTaskSelected: (task: ITask) => void; selectedTask?: ITask; monitoredTaskSid?: string; } export {};