import { EmptyObjectType, SelectOptionType } from '../comm';
import { TableType } from '../table';
/**
 * views personal
 */
export type NewInfo = {
    title: string;
    date: string;
    link: string;
};
export type Recommend = {
    title: string;
    msg: string;
    icon: string;
    bg: string;
    iconColor: string;
};
export type PersonalState = {
    newsInfoList: NewInfo[];
    recommendList: Recommend[];
    personalForm: {
        name: string;
        email: string;
        autograph: string;
        occupation: string;
        phone: string;
        sex: string;
    };
};
/**
 * views visualizing
 */
export type Demo2State<T = any> = {
    time: {
        txt: string;
        fun: number;
    };
    dropdownList: T[];
    dropdownActive: string;
    skyList: T[];
    dBtnList: T[];
    chartData4Index: number;
    dBtnActive: number;
    earth3DBtnList: T[];
    chartData4List: T[];
    myCharts: T[];
};
/**
 * views params
 */
export type ParamsState = {
    value: string;
    tagsViewName: string;
    tagsViewNameIsI18n: boolean;
};
/**
 * views system
 */
export interface RowRoleType {
    roleName: string;
    roleSign: string;
    describe: string;
    sort: number;
    status: boolean;
    createTime: string;
}
export interface SysRoleTableType extends TableType {
    data: RowRoleType[];
}
export interface SysRoleState {
    tableData: SysRoleTableType;
}
export type TreeType = {
    id: number;
    label: string;
    children?: TreeType[];
};
export type RowUserType<T = any> = {
    userName: string;
    userNickname: string;
    roleSign: string;
    department: string[];
    phone: string;
    email: string;
    sex: string;
    password: string;
    overdueTime: T;
    status: boolean;
    describe: string;
    createTime: T;
};
export interface SysUserTableType extends TableType {
    data: RowUserType[];
}
export interface SysUserState {
    tableData: SysUserTableType;
}
export type DeptTreeType = {
    deptName: string;
    createTime: string;
    status: boolean;
    sort: number;
    describe: string;
    id: number | string;
    children?: DeptTreeType[];
};
export interface RowDeptType extends DeptTreeType {
    deptLevel: string[];
    person: string;
    phone: string;
    email: string;
}
export interface SysDeptTableType extends TableType {
    data: DeptTreeType[];
}
export interface SysDeptState {
    tableData: SysDeptTableType;
}
export type ListType = {
    id: number;
    label: string;
    value: string;
};
export interface RowDicType {
    dicName: string;
    fieldName: string;
    describe: string;
    status: boolean;
    createTime: string;
    list: ListType[];
}
export interface SysDicTableType extends TableType {
    data: RowDicType[];
}
export interface SysDicState {
    tableData: SysDicTableType;
}
/**
 * views pages
 */
export type FilteringChilType = {
    id: number | string;
    label: string;
    active: boolean;
};
export type FilterListType = {
    img: string;
    title: string;
    evaluate: string;
    collection: string;
    price: string;
    monSales: string;
    id: number | string;
    loading?: boolean;
};
export type FilteringRowType = {
    title: string;
    isMore: boolean;
    isShowMore: boolean;
    id: number | string;
    children: FilteringChilType[];
};
export type TableRulesHeaderType = {
    prop: string;
    width: string | number;
    label: string;
    isRequired?: boolean;
    isTooltip?: boolean;
    type: string;
};
export type TableRulesState = {
    tableData: {
        data: EmptyObjectType[];
        header: TableRulesHeaderType[];
        option: SelectOptionType[];
    };
};
export type TableRulesOneProps = {
    name: string;
    email: string;
    autograph: string;
    occupation: string;
};
export type RowTreeType = {
    id: number;
    label: string;
    label1: string;
    label2: string;
    isShow: boolean;
    children?: RowTreeType[];
};
export type NodeListState = {
    id: string | number;
    nodeId: string | undefined;
    class: HTMLElement | string;
    left: number | string;
    top: number | string;
    icon: string;
    name: string;
};
export type LineListState = {
    sourceId: string;
    targetId: string;
    label: string;
};
export type XyState = {
    x: string | number;
    y: string | number;
};
export type WorkflowState<T = any> = {
    leftNavList: T[];
    dropdownNode: XyState;
    dropdownLine: XyState;
    isShow: boolean;
    jsPlumb: T;
    jsPlumbNodeIndex: null | number;
    jsplumbDefaults: T;
    jsplumbMakeSource: T;
    jsplumbMakeTarget: T;
    jsplumbConnect: T;
    jsplumbData: {
        nodeList: NodeListState[];
        lineList: LineListState[];
    };
};
export type WorkflowDrawerNodeState<T = any> = {
    node: {
        [key: string]: T;
    };
    nodeRules: T;
    form: T;
    tabsActive: string;
    loading: {
        extend: boolean;
    };
};
export type WorkflowDrawerLabelType = {
    type: string;
    label: string;
};
export type WorkflowDrawerState<T = any> = {
    isOpen: boolean;
    nodeData: {
        type: string;
    };
    jsplumbConn: T;
};
/**
 * views make
 */
export type TableDemoPageType = {
    page: number;
    pageSize: number;
};
export type TableHeaderType = {
    key: string;
    width: string | number;
    title: string;
    type: string | number;
    colWidth: string;
    height?: string | number;
    isCheck: boolean;
    align: string;
    headerAlign: string;
    toolTip: boolean;
    sortable: boolean;
};
export type TableSearchType = {
    label: string;
    prop: string;
    placeholder: string;
    required: boolean;
    type: 'input' | 'date' | 'daterange' | 'monthrange' | 'select' | 'cascader';
    options?: SelectOptionType[];
    cascaderData?: object[];
    cascaderProps?: object;
    comProps?: object;
    change?: (value: any) => {};
};
export type TableDemoState = {
    tableData: {
        columns: Object[];
        config: {
            isStripe: boolean;
            isBorder: boolean;
            isSelection: boolean;
            showSelection: boolean;
            isSerialNo: boolean;
            pageSizes?: number[];
            pageSize: number;
            hideExport?: boolean;
            exportFileName?: string;
            hidePrint?: boolean;
            printName?: string;
            hideSet?: boolean;
            hideRefresh?: boolean;
            hidePagination?: boolean;
        };
        search: TableSearchType[];
        param: EmptyObjectType;
        defaultSort: EmptyObjectType;
    };
};
export interface HttpJobMessage {
    requestUri?: string | null;
    httpMethod?: string | null;
    body?: string | null;
    timeout?: number | null;
}
export type ModifyRecord = {
    createUserName?: string | null;
    createTime?: string | null;
    updateUserName?: string | null;
    updateTime?: string | null;
    remark?: string | null;
};
