import { OnChanges, SimpleChanges, EventEmitter, OnInit, Injector, ComponentFactoryResolver, ChangeDetectorRef, AfterViewInit, ViewContainerRef, ComponentRef, Type, ElementRef, NgZone, Renderer2, OnDestroy } from "@angular/core"; import { Observable, Subscription, Subject } from "rxjs"; import { LocaleService } from "@farris/ui-locale"; import { IResizeEvent } from "@farris/ui-draggable"; import { MessagerService } from "@farris/ui-messager"; import { LoadingService, LoadingComponent } from "@farris/ui-loading"; import { DataTableComponent } from "@farris/ui-datatable"; import { TreeNode } from "@farris/ui-treetable"; import { LayoutComponent, LayoutPanelComponent } from "@farris/ui-layout"; import { CommonUtils, OverLayHiddenService } from "@farris/ui-common"; import { EntityFilter, FilterCondition } from "@farris/ui-common/types"; import { ShortcutsService } from "@farris/ui-shortcuts"; import { InputGroupComponent } from "@farris/ui-input-group"; import { NotifyService } from "@farris/ui-notify"; import { ExtInfoFormatter, CustomDataFormatter, QuickSelectOption, SearchBarMode } from "./lookup-displaytype"; import { LookupComponent } from "./lookup.component"; import { LookupGridOptions, LookupGridResult, NavigationOptions, DisplayInfo, TreeInfo, PersonalConfig } from "./lookup-grid-options"; import { ILookupHttpService } from "./http/ILookupHttpService"; import { NavigationFilter } from "./http/RemoteParams"; import { LookupLeftComponent } from "./lookup-left.component"; import { LookupDefaultMapping } from "./lookup-defaut-mapping"; import { LookupUtils } from "./utils"; import { PersonalConfigService } from "./lookup-presonalConfig.service"; import { UtilService, TreeNodeHelper, FavoriteHelper, SelectionManager, DataTableEventManager, TreeTableEventManager, MultiSelectionManager, LookupHttpManager, LookupComponentManager, LookupDialogManager, LookupSelectionService } from "./services"; import { EventManager } from "@angular/platform-browser"; import { SingleSelectDirective } from "@farris/ui-forms"; export declare const LOOKUPGRID_VALUE_ACCESSOR: any; export declare class LookupGridComponent extends LookupComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy { injector: Injector; cfr: ComponentFactoryResolver; el: ElementRef; utils: CommonUtils; private defaultMapping; changeDetector: ChangeDetectorRef; shortcuts: ShortcutsService; lookupUtils: LookupUtils; private zone; render2: Renderer2; groupIcon: string; _displayType: string; /** 使用表单设计器中的显示类型。否则使用元数据设置的显示类型。 默认:false */ customDisplayType: boolean; viewType: "text" | "tag"; displayType: string; /** 启用清空按钮 */ enableClear: boolean; /** 服务器端排序 */ remoteSort: boolean; condition: EntityFilter; conditions: Array; /** 树表显示全选复选框。 默认不显示 */ showCheckAll: boolean; /** 启用单选,默认为 true, 否则为 多选 */ singleSelect: boolean; /** 多选分隔符, 默认为 , */ multipleChoiceSeparator: string; /** 主键字段 */ idField?: string; /** 可以为元数据ID、webapiURL */ uri?: string; /** * BE REST RUI * - 此处设置后 uri 失效 */ beUri: string; /** * 显示过滤工具条; 默认 true */ showFilterBar: boolean; /** 是否启用分页 */ pagination: boolean; /** 当前页索引,从 1开始 */ pageIndex: number; /** 每页记录数 */ pageSize: number; /** 可用分页记录数列表 */ pageList: number[]; /** 总记录数 */ total: number; /** 可拖动列 */ /** 显示列信息, 默认为 [] */ columns: any[]; /** 帮助查询是否为远端查询 */ remoteSearch: boolean; /** 文本变化后,进行服务器端查询 */ searchOnServer: boolean; /** 不进行服务器查询,有啥算啥 */ nosearch: boolean; /** * 启用任意输入后,值通过输入时触发 */ clearMappings: EventEmitter<{}>; /** * 允许输入的字符最大长度。 * 任意输入时,此属性有效 */ maxLength: any; mappingFn: (rowData: any, mapFields: any, bindingData?: any) => void; /** 数据列表 */ items: any; favoriteItems: any[]; /** 自定义数据 */ customData: any; /** 绑定值所在的对象 */ bindingData: {}; treeInfo: TreeInfo; /** 是否启用级联选择控制选项 */ enableCascade: boolean; /** 级联控制默认值: enable: 同步选择, up:包含上级, down:包含下级, disable:仅选择自身 */ cascadeStatus: "enable" | "up" | "down" | "disable"; /** 分别级联选项的启用状态,默认全部启用 */ cascadeItems: { enable: boolean; up: boolean; down: boolean; disable: boolean; }; /** 显示级联控制 */ showCascadeControl: boolean; placeholder: string; /** 显示已选记录列表。 默认为 false 不显示 */ showSelected: boolean; /** 应用收藏夹 */ useFavorite: boolean; /** 个性化数据KEY: 收藏数据,窗口大小,当前tab页 */ favoriteKey: string; /** 收藏数据来自于: locale: 本地存储, remote: 服务器端存储 */ favoriteDataFrom: "locale" | "remote"; /** 使用提示,快捷选择 */ useTip: boolean; /** 记录窗口大小 */ isRecordSize: boolean; /** 快速选择 */ userId: string; /** 是否启用选中value值对应的行数据,默认 true */ enableToSelect: boolean; enableFindText: boolean; /** -1: 不展开; 0: 全部展开;>0: 展开到指定级数 */ expandLevel: number; navTreeTableOptions: any; treeTableOptions: any; dataTableOptions: any; defaultTreeTableOptions: { maxLevel: number; enableContextMenu: boolean; contextMenuItems: any[]; }; /** 树形帮助数据加载方式: default: 内置取数; loadall: 加载所有 layerload:分层加载 */ loadTreeDataType: "default" | "loadall" | "layerload"; /** 窗口打开后立即加载数据,默认为 true */ loadDataWhenOpen: boolean; /** * 导航列表,树列表在帮助打开后选中的数据; * 设置后,`selectFirstInNav` 失效! */ navSelectedIds: string; /** * 导航帮助,选中第1条数据,默认为 false; * 注意:当`navSelectedIds`不为空时,此属性失效。 */ selectFirstInNav: boolean; /** 启用构造完整树过滤 */ enableFullTree: boolean; /** 显示文本自定义函数 */ displayFormatter: (value: string, data: any, instance: any) => string; /** 显示文本字段集合,以 英文 逗号隔开 */ displayFields: string; displayTextSeparator: string; /** * 帮助元数据ID,不为空时调用指定的URI * /api/runtime/bcc/v1.0/help/data/{helpId} */ helpId: string; /** 文本对齐方式; left | center | right; 默认 left */ textAlign: string; /** 鼠标滑过输入框时显示输入框内的文本信息 */ enableTitle: boolean; useExtendInfo: boolean; extInfoFields: string; extInfoFormatter: ExtInfoFormatter; extendInfo: string; /** IDE 设计器自定义格式化 2103 */ customFormatter: CustomDataFormatter; customNavFormatter: CustomDataFormatter; /** 自定义确定事件 */ okHandler: any; /** 自定义取消事件 */ cancelHandler: any; tagboxHeight: string; maxTagboxHeight: any; /** 启用获取所有子级数据的功能,仅支持分级码 */ enableGetAllChildNodes: boolean; shortcutKey: { /** 打开帮助窗口 */ open: string; /** 确认选择数据 */ confirm: string; /** 搜索框焦点 */ searchFocus: string; /** 选中上一条 */ moveUp: string; /** 选中下一条 */ moveDown: string; /** 展开节点 */ expand: string; /** 折叠节点 */ collapse: string; /** 下一页 */ nextPager: string; /** 上一页 */ prevPager: string; }; /** 快捷选择相关配置项,默认为 null, 即不启用此功能 */ quickSelect: QuickSelectOption; /** 树形帮助 是否使用树形结构数据。默认为 true, 当为 false 时,服务器端无须构造树形结构,按普通列表输出 */ treeToList: boolean; navTreeToList: boolean; /** 带导航的帮助中,是否显示左侧导航部分。默认 true */ showNavigation: boolean; /** 左侧树导航是否显示 包含下级,默认为 true */ showChildControl: boolean; /** 数据选择后,值映射前触发 * 返回 Observable * canSelect: 是否允许选择 * message: 不允许选择时的提示信息 */ beforeSelectData: (p: { instance: any; data: any; }) => Observable<{ canSelect: boolean; message: string; } | boolean>; beforeLoadData: (p: { instance: any; res: LookupGridResult; }) => Observable; /** 是否启用新布局 * - 默认 false */ useNewLayout: boolean; /** 启用多字段查询 默认为 false * - 启用此特性后,useNewLayout 自动启用 */ enableMultiFieldSearch: boolean; /** 搜索工具条显示模式, both: 全部显示;onlyfield: 仅显示字段;onlyinput: 仅显示搜索输入框。默认 both */ searchBarMode: SearchBarMode; /** 允许查询的字段,仅启用多字段查询时有效,多个字段以 “,” 隔开; * - nav 左侧导航字段;main 主数据字段; * - 默认为 null, 即从所有显示列中自动提取 */ allowQueryFields: { nav?: string; main: string; }; labels: { /** 数据列表*/ dataTab: string; /** 收藏夹 */ favTab: string; /** 取消已选 */ clearAllSelected: string; /** 已选记录面板中 删除已选 */ delSelected: string; }; enableEqualSearch: boolean; searchType: string; /** 允许任意字段进行查询; 默认 true */ searchAnyField: boolean; selectedData: EventEmitter<{}>; clear: EventEmitter<{}>; /** 未启用多字段查询时触发 */ search: EventEmitter<{}>; /** 启用多字段查询时触发 */ query: EventEmitter<{}>; valueChanged: EventEmitter<{}>; loadSuccess: EventEmitter<{}>; pagerChanged: EventEmitter<{}>; expandTreeNode: EventEmitter<{}>; textChanged: EventEmitter<{}>; checkedChange: EventEmitter<{ data: any; isCheck: boolean; }>; tagRemoved: EventEmitter<{}>; /** 内容中留白边距 */ containerMargin: { top: number; bottom: number; left: number; right: number; }; containerStyle: {}; _gridOptions: LookupGridOptions; gridOptions: LookupGridOptions; contentContainer: ViewContainerRef; favoritesContainer: ViewContainerRef; leftContainer: ViewContainerRef; centerContainer: ViewContainerRef; selectedDtRef: DataTableComponent; inputGroup: InputGroupComponent; leftPanel: LayoutPanelComponent; tagbox: ElementRef; okButton: ElementRef; tagInput: InputGroupComponent; selectedpanel: ElementRef; cascadeSelect: SingleSelectDirective; layoutRef: LayoutComponent; componentRef: ComponentRef; leftComponentRef: ComponentRef; favoritesComponentRef: ComponentRef; http: ILookupHttpService; messagerService: MessagerService; loadingService: LoadingService; loading: LoadingComponent; navigationOptions: NavigationOptions; leftPanelWidth: number; navLookupDialogMinWidth: number; navigationFilter: NavigationFilter; subscriptions: Subscription[]; dialogOpenedSubscription: Subscription; dialogClosedSubscription: Subscription; isTextChange: boolean; isTabChanged: boolean; displayInfo: DisplayInfo; tabChangeSubscription: any; personalConf: PersonalConfig; favoriteColumns: any[]; /** 临时查询参数 */ _searchState: any; allData: any; readonly selections: any; readonly usePersionalConf: boolean; readonly displayTextList: string[]; personalConfigService: PersonalConfigService; utilService: UtilService; treeNodeHelper: TreeNodeHelper; localService: LocaleService; notifyService: NotifyService; allColumnsTitle: string; mustWriteSomething: string; mustChoosAdatarow: string; addFavoriteSuccess: string; delFavoriteSuccess: string; /** 使用内置的查询方法, 默认 false */ useInsideSearchHandler: boolean; searching: boolean; /** 临时存储查询结果集 */ _searchResult: any; lookupinitializationSubject: Subject<{}>; /** 多选时,选中的数据 */ currentSelectedItems: Observable; /** 已选数据列信息 */ selectedColumns: any[]; activeTab: string | "datalist" | "favorite" | "selected"; favHelper: FavoriteHelper; ttEventMgr: TreeTableEventManager; multiSelMgr: MultiSelectionManager; httpMgr: LookupHttpManager; lookupCmpMgr: LookupComponentManager; dialogMgr: LookupDialogManager; selectionMgr: SelectionManager; dtEventMgr: DataTableEventManager; lookupSelectionSer: LookupSelectionService; controlId: string; savingFaoriteData: boolean; isReady: boolean; showTagboxClearButton: boolean; hasError: boolean; cascadeStatusItems: { valeu: string; label: string; }[]; isGetAllChidlNodes: boolean; eventManager: EventManager; /** 选中记录ID,自定义帮助取数时使用 */ selectedIds: any[]; private lookupSearchInputEvent; private farrisInstances; /** 用户初始设置 */ private _userSettings; readonly userInitialConfig: any; _treeInfo_: any; /** dialog 内容区域高度。 弹窗总高度 - 头部高度 - 脚部高度 - (启用收藏 TAB头高度) */ dialogContentHeight: number; /** 左树右列表, 左树点击节点查询时是否包括下级节点的数据,默认 false */ includeSubordinates: boolean; includeSubordinates$: Subject<{}>; includeSubordinates$$: Subscription; overLayService: OverLayHiddenService; private debugSer; constructor(injector: Injector, cfr: ComponentFactoryResolver, el: ElementRef, utils: CommonUtils, defaultMapping: LookupDefaultMapping, changeDetector: ChangeDetectorRef, shortcuts: ShortcutsService, lookupUtils: LookupUtils, zone: NgZone, render2: Renderer2); private initLabels; writeConsole(msg: any, type?: 'info' | 'log' | 'warn' | 'error'): void; getFilterBarHeight(): 0 | 42; getSpaceWidth(isDouble?: boolean): number; private cacheUserConfig; private deepClone; ngOnInit(): void; /** 内容中留白边距 */ setContainerMargin(): void; ngOnDestroy(): void; ngOnChanges(changes: SimpleChanges): void; ngAfterViewInit(): void; private createInstance; showDialog(): any; /** 判断是否为双列表帮助 */ isDoublleList(): boolean; /** 判断是否显示为树帮助 */ isTree(): boolean; /** 树表帮助是否启用分页 */ isEnableTreePager(): any; onResized(e: any): void; onResizing(pos: IResizeEvent): void; onMaxDialog(pos: IResizeEvent): void; resizeCmp(size?: any): void; private checkGridOptions; getComponentType(): Type; showLoading(msg?: string): void; closeLoading(): void; getSearchColumns(resdata: any): { label: string; value: string; }[]; private initOptions; /** * 设置帮助窗口标题 */ private setLookupTitleText; private showGetAllChildrenCheckbox; initData(): void; loadData(resData?: LookupGridResult, rebindEvent?: boolean): void; private loadFavData; loadDataTableData(resData?: LookupGridResult): void; private updateDataTable; private setTreeInfo; private loadTreeTableData; /** * 在构完整树中,有部分节点因为条件被过滤,为显示完整树, * 这些节点在运行时是不允许被选中的, 返回新的节点数组 * By Lucas 20200302 */ checkNodeCanBeSelect(nodes: any, isAllTreeData?: boolean): TreeNode[]; onChanges(val: any): void; onClear(emit?: boolean): void; clearValue(emit?: boolean): void; selectItem(rowData?: any): void; getPathCode(data: any, treeInfo?: any): any; getLayerData(data: any, treeInfo?: any): any; private getParentPathCode; private _beforeSelectDataCallBack; private updateControlValue; private updateBindData; private getExtendInfoFields; onUpdateExtendInfo(): void; private updateExtendInfo; private getExtendInfoText; private getDisplayText; private setDisplayText; runDictPickedEvent(rowData: any): void; private focusToInput; closeDialog(rowData?: any): void; cancelSelect(): void; setModelValue(v: any): void; onTabChange(e: any): void; private registerMouseEventForTagView; private toggleClearIcon; private onTagboxMouseEnter; private onTagboxMouseLeave; onRemoveSelectItem($event: any, txt: any): void; private updateOtherFieldDataWhenTagremoved; onAllChildNodesClick($event: any): void; onIncludeSubordinatesChange(val: any): void; onTagContainerClick($event: MouseEvent): void; expandFirstNode(nodes: any): TreeNode[]; getLookupBindingFields(): any; onConditionsChange($event: any): void; clearSelected($event: MouseEvent): void; onDeleteSelectedItem($event: MouseEvent): void; initColumnWidth(columns: any, typ?: 'data' | 'nav' | 'fav' | 'sel'): void; }