kre-form
Version:
本项目由 Angular8+ 编写的表单设计器和表单应用,所有的配置都是 JSON 结构体组成,PC 端是基于 ANT 组件库封装
152 lines (151 loc) • 4.11 kB
TypeScript
import { AfterViewInit, DoCheck, ElementRef, EventEmitter, KeyValueDiffers, NgZone, OnDestroy, OnInit } from "@angular/core";
import { ControlValueAccessor } from "@angular/forms";
import { Editor, EditorFromTextArea, ScrollInfo } from "codemirror";
import { Formula } from "../tools/formula";
import { NzConfigService } from "ng-zorro-antd/core";
import { NzMessageService } from "ng-zorro-antd/message";
export declare class DeonCodemirror implements AfterViewInit, OnDestroy, ControlValueAccessor, DoCheck, OnInit {
private _differs;
private _ngZone;
el: ElementRef;
private message;
private nzConfigService;
itemTitle: {
tablesName: string;
fieldsName: string;
};
options: {
[key: string]: any;
};
/**
* 可用变量对象
* {
* formFields:[],tableList:[]
* }
*/
fieldData: any;
/**
* 黑名单 值为函数名数组
*/
blacklist: Array<string>;
readonly dateType: string;
variableSearch: string;
usageFunSearch: string;
/**
* 所有支持函数分组信息
* name 分组名称 string
* code 分组code string
* items 函数名集合 string[]
*/
readonly globalCategorys: any[];
/**
* 获取全局CodeMirror
*/
readonly codeMirrorGlobal: any;
fml: Formula;
name: string;
title: string;
autoFocus: boolean;
/**
* 函数显示类型
* 班次 attendance 所有 // attendance-items 精度 进位规则
*
* 与categorys互斥,有type时使用type
*/
type: string;
/**
* 显示的函数组
* 与type 互斥,如果type有值,当前参数无效。
*/
categorys: Array<string>;
typeList: any;
preserveScrollPosition: boolean;
labelMap: any;
_fieldData: any;
cursorActivity: EventEmitter<Editor>;
focusChange: EventEmitter<boolean>;
scroll: EventEmitter<ScrollInfo>;
drop: EventEmitter<[Editor, DragEvent]>;
textChange: EventEmitter<any>;
ref: ElementRef;
value: string;
disabled: boolean;
isFocused: boolean;
codeMirror?: EditorFromTextArea;
/**
* 存放匹配的变量集合
*/
variableSearchList: any[];
/**
* 存放匹配的函数集合
*/
usageFunSearchList: any[];
FormulaUsage: any[];
/**
* 查询可用变量
*/
_variableSearch: any;
/**
* 查询可用函数
*/
_usageFunSearch: any;
/**
* 函数描述
*/
usageDescription: string;
private _codeMirror;
private _differ?;
private _options;
private _fomulaContext;
constructor(_differs: KeyValueDiffers, _ngZone: NgZone, el: ElementRef, message: NzMessageService, nzConfigService: NzConfigService);
ngOnInit(): void;
/**
* 根据黑名单过滤公式
*/
filterUsageByBlackList(formulaUsage: any): any[];
/**
* 组装显示的函数
*/
resolveDisplayFormula(): string[];
/**
* 组装FomulaContext
*/
resolveFomulaContext(): string[];
ngAfterViewInit(): void;
ngDoCheck(): void;
ngOnDestroy(): void;
codemirrorValueChanged(cm: any, change: any): void;
setOptionIfChanged(optionName: string, newValue: any): void;
focusChanged(focused: boolean): void;
scrollChanged(cm: Editor): void;
cursorActive(cm: Editor): void;
dropFiles(cm: Editor, e: DragEvent): void;
writeValue(value: string): void;
registerOnChange(fn: (value: string) => void): void;
registerOnTouched(fn: () => void): void;
setDisabledState(isDisabled: boolean): void;
/**
* 函数鼠标滑动时事件
* @param e
*/
usageMouseover(e: any): void;
/**
* 插入函数
* @param e
*/
insertUsageFun(e: any): void;
/**
* 插入可用变量
* @param event
*/
insertField(event: any): void;
copy(): void;
paste(): void;
private onChange;
private onTouched;
private markField;
private insertBarcket;
private getValue;
private fakeLabel;
private setValue;
}