import { IBar } from "../BarManager/IBar";
import { ViewType } from "../View/Helpers/Enums";
import { IModelChangesListener } from "./IModelChangesListener";
import { ITaskAreaContainer } from "./ITaskAreaContainer";

export interface IGanttOwner {
    bars: IBar[];
    getRowHeight(): number;
    getHeaderHeight(): number;
    showDialog(name: string, parameters: any, callback: (params: any) => void, afterClosing: () => void);
    showPopupMenu(info: any);
    hidePopupMenu();
    getGanttTasksData(): any;
    getGanttDependenciesData(): any;
    getGanttResourcesData(): any;
    getGanttResourceAssignmentsData(): any;

    getGanttWorkTimeRules(): any;

    getExternalTaskAreaContainer(parent: HTMLElement): ITaskAreaContainer | null;
    prepareExternalTaskAreaContainer(element: HTMLElement, info: Record<string, any>): void;
    getMainElement(): HTMLElement;
    adjustControl(): void;

    changeGanttTaskSelection(id: string, selected: boolean);
    onGanttScroll(scrollTop: number);

    getModelChangesListener(): IModelChangesListener;

    collapseAll(): void;
    expandAll(): void;

    getRequireFirstLoadParentAutoCalc(): boolean;
    UpdateGanttViewType(type: ViewType): void;

    onTaskClick(key: any, evt: any): boolean;
    onTaskDblClick(key: any, evt: any): boolean;
    onGanttViewContextMenu(evt: any, key: any, type: string): boolean;

    getFormattedDateText(date: Date): string;
    destroyTemplate(container: HTMLElement): void;
    onTaskAreaSizeChanged(info: Record<string, any>): void;

    getTreeListTableStyle(): Record<string, any>;
    getTreeListColCount(): number;

    getTreeListHeaderInfo(colIndex: number): Record<string, any>;
    getTreeListCellInfo(rowIndex: number, colIndex: number, taskKey: any): Record<string, any>;
    getTreeListEmptyDataCellInfo(): Record<string, any>;
}
