UNPKG

polyv-live-cli

Version:

CLI tool for managing PolyV live streaming services.

129 lines 4.09 kB
import { EventEmitter } from 'events'; import { BaseComponent } from './base.component'; import { ComponentConfig } from '../types/monitoring'; import { ChannelDetailModel } from '../types/channel'; export type WatchStatus = 'live' | 'playback' | 'end' | 'waiting' | 'unStart' | 'banpush'; export interface ChannelStatusInfo { channelId: string; name: string; status: WatchStatus; statusText: string; viewerCount: number; maxViewer: number; publisher: string; startTime: number; endTime: number; createdTime: number; selected?: boolean; } export interface ChannelStatusPanelConfig extends ComponentConfig { refreshInterval: number; maxChannels: number; showColors: boolean; columnWidths: number[]; sortField: keyof ChannelStatusInfo; sortOrder: 'asc' | 'desc'; filters: { status?: WatchStatus[]; searchTerm?: string; }; } export interface SortConfig { field: keyof ChannelStatusInfo; order: 'asc' | 'desc'; secondaryField?: keyof ChannelStatusInfo; secondaryOrder?: 'asc' | 'desc'; } export interface FilterConfig { status?: WatchStatus[]; searchTerm?: string; viewerCountMin?: number; viewerCountMax?: number; publisherFilter?: string; dateRange?: { startDate?: Date; endDate?: Date; }; } export declare class ChannelStatusPanel extends BaseComponent { private table; private container; private headerBox; private footerBox; private noDataBox; private detailsPopup; private batchDialog; private channels; private filteredChannels; private selectedChannels; private currentIndex; private sortConfig; private filterConfig; private lastUpdateTime; private selectionStartIndex; private isRangeSelecting; private lastJumpPosition; private navigationHistory; constructor(config: ChannelStatusPanelConfig, eventBus: EventEmitter); protected createWidget(): void; private initializeDetailsPopup; private initializeBatchDialog; private setupKeyBindings; render(): void; update(data: ChannelDetailModel[] | ChannelDetailModel | { channels: ChannelDetailModel[]; }): void; private convertToStatusInfo; private compareValues; private applyFiltersAndSort; private updateTableDisplay; private formatCellValue; private formatStatusCell; private updateStatusColors; private getChannelHealthSummary; private getStatusColors; private getTerminalSafeColor; private getStatusHealthLevel; private formatDate; private updateHeader; private updateFooter; private getHeaderContent; private getFooterContent; private getNoDataMessage; private moveSelection; private moveToTop; private moveToBottom; private showQuickJumpDialog; private showGoToLineDialog; private extendSelectionUp; private extendSelectionDown; private updateRangeSelection; private clearRangeSelection; private copySelectionInfo; private copyChannelInfo; private copyMultipleChannelsInfo; private saveNavigationHistory; private emitNavigationEvent; jumpToLine(lineNumber: number): boolean; jumpToChannel(searchTerm: string): boolean; private toggleSelection; private selectAll; private deselectAll; private cycleSortField; private toggleSortOrder; setMultiFieldSort(primary: keyof ChannelStatusInfo, primaryOrder: 'asc' | 'desc', secondary?: keyof ChannelStatusInfo, secondaryOrder?: 'asc' | 'desc'): void; private showFilterDialog; private showAdvancedFilterDialog; private quickFilterByStatus; private clearFilters; setAdvancedFilter(filter: Partial<FilterConfig>): void; private showChannelDetails; private showBatchOperations; private getConfig; getSelectedChannels(): string[]; getCurrentChannel(): ChannelStatusInfo | null; setFilter(filter: FilterConfig): void; setSort(sort: SortConfig): void; destroy(): void; } //# sourceMappingURL=channel-status.panel.d.ts.map