import { isDefined } from "@devexpress/utils/lib/utils/common";

export class TooltipSettings {
    getHeaderHeight: number;
    getTaskTooltipContentTemplate: (container: HTMLElement, model: any, ...args) => void;
    getTaskProgressTooltipContentTemplate: (container: HTMLElement, model: any, ...args) => void;
    getTaskTimeTooltipContentTemplate: (container: HTMLElement, model: any, ...args) => void;
    destroyTemplate: (container: HTMLElement) => void;
    formatDate: (date: Date) => string;

    static parse(settings: any): TooltipSettings {
        const result = new TooltipSettings();
        if(settings) {
            if(isDefined(settings.getHeaderHeight))
                result.getHeaderHeight = settings.getHeaderHeight;
            if(isDefined(settings.getTaskTooltipContentTemplate))
                result.getTaskTooltipContentTemplate = settings.getTaskTooltipContentTemplate;
            if(isDefined(settings.getTaskProgressTooltipContentTemplate))
                result.getTaskProgressTooltipContentTemplate = settings.getTaskProgressTooltipContentTemplate;
            if(isDefined(settings.getTaskTimeTooltipContentTemplate))
                result.getTaskTimeTooltipContentTemplate = settings.getTaskTimeTooltipContentTemplate;
            if(isDefined(settings.destroyTemplate))
                result.destroyTemplate = settings.destroyTemplate;
            if(isDefined(settings.formatDate))
                result.formatDate = settings.formatDate;
        }
        return result;
    }
}
