import { OwnerByEnum, ILabelKey, IColumnType } from '../../services/eleview/types/model';
import { ConditionalTemplate } from '../../element/service/recordview-param';
export interface TableColumnType extends IColumnType {
    /**附加的属性，用于客户端 */
    index: number;
    sticky: boolean;
    stickyEnd: boolean;
    showToolbar: boolean;
}
export declare enum Order {
    OrderAsc = "+",
    OrderDesc = "-",
    OrderNone = ""
}
export declare enum SelectType {
    Selected = "s",
    Unselected = "ns"
}
export interface ConditionalValue {
    Type: string;
    Field: string;
    Value: any;
}
export interface RangeInputConditionalValue {
    LowValue: string;
    HighValue: string;
}
export interface SelectConditionalValue {
    Value: string;
    OtherOption: string;
    Options: string[];
}
export interface MultiSelectConditionalValue {
    Value: string[];
    OtherOption: string;
    Options: string[];
}
export interface SliderConditionalValue {
    LowValue: number;
    HighValue: number;
    PositiveInfinity: boolean;
    NegativeInfinity: boolean;
    Ratio: number;
}
export interface IFetchDataParam {
    /**分隔行的主键值*/
    Divide?: Array<string>;
    /**排序的字段，升序只填字段名，降序字段名前加-（减号）*/
    Order?: Array<string>;
    /**字段*/
    Field?: string;
    /**运算符*/
    Opt?: string;
    /**值*/
    Value?: string;
    /**选择类型*/
    SelType?: string;
    /**选择的主键*/
    SelKeys?: Array<string>;
    /**每页最多行数*/
    Limit?: number;
    /**开始行号*/
    DivideRowNum?: number;
    Labels?: ILabelKey[];
    View?: IElementViewDigest;
    ConditionalTemplate?: ConditionalValue[];
}
export interface IFetchRowCountResult {
    RowCount: number;
}
export interface IFetchDataResultType {
    Error: string;
    FData: IFetchDataResult;
}
export interface IFetchDataResult {
    Title: string;
    Rows: Array<IRenderRow>;
    Columns: Array<IColumnType>;
    DisplayColumns: Array<IColumnType>;
    /**一般为0，除非最后一页，通过最后的序号得出总数 */
    RowCount: number;
    /**下一页用到的起始序号 */
    DownRowNum: number;
    /**下一页用到的起始分界值 */
    DownDivide: string[];
    /**非绑定记录的处理按钮的可用性 */
    Processes: {
        [key: string]: IRenderProcess;
    };
}
export interface IRenderProcess {
    URL: string;
    Sign: string;
    Enabled: boolean;
}
export interface IRenderRow {
    RowNum: number;
    /**是否被选中 */
    Checked: boolean;
    /**该行关联的主键值，多字段用csv格式组合 */
    Key: string;
    Data: any;
    /**绑定记录的处理按钮的可用性 */
    Processes: {
        [key: string]: IRenderProcess;
    };
}
/**菜单项定义中的处理按钮的参数 */
export interface IRecordViewProcess {
    Name: string;
    /**[namespace]:[name] 的方式*/
    Icon: string;
    /**图标的颜色 */
    Color: string;
    ElementName: string;
    Element: {
        Name: string;
        Label: string;
        LabelEN: string;
        Category: string;
        CategoryEN: string;
        Icon: string;
        Color: string;
        Controller: string;
        Bill: boolean;
        BillOperate: string;
        URL: string;
    };
    BindRecord: boolean;
    /**传递到下一个工作元素的路径上，一般用来传递主键，如果为空则自动传递表的主键*/
    TransPath: string[];
    /**传递到下一个工作元素的参数，用模板来完成,
        一般是用来传递到另一个RecordView的附加条件及标题 */
    TransQuery: string;
    /**是否传递sql */
    WithSql: boolean;
    /**非空的话计算可见性，用templater的语法*/
    Visable: string;
    /**动态传入的more参数，从recordview的query中提取*/
    MoreStr: string;
}
export interface IFetchParamResult {
    UniqueField: string[];
    Processes: IRecordViewProcess[];
    ConditionalTemplates: ConditionalTemplate[];
}
export interface IDisplayColumn {
    Name: string;
    Hidden: boolean;
    Order: Order;
}
export interface IElementViewDigest {
    OwnerBy: OwnerByEnum;
    Owner: string;
    Name: string;
}
