amis-model-design
Version:
amis模型设计器
147 lines (146 loc) • 5.97 kB
TypeScript
import { normalizeField } from '../base/helper';
import { DBTableBrief, FieldItem, ModelItem, RelationShipItem, ExtraField } from '../type';
import { Rect } from './Rect';
import { Manager } from './Manager';
import { Line } from './Line';
import { RelationFieldItem } from '../plugin/relation/RelationField';
import { AddRelationEventContext } from './Event';
export type RelationShipDetail = RelationShipItem & {
model: ModelStore;
targetModel: ModelStore;
field?: FieldItem;
placeholder: FieldItem;
};
export declare const updateSystemField: (data: ModelItem, type: 'saveTimestamp' | 'saveOperator', oper: 'deletedBy' | 'deletedAt' | 'createdBy' | 'createdAt' | 'updatedBy' | 'updatedAt', flag: 'isCreateDate' | 'isUpdateDate' | 'isDeleteDate' | 'isCreateUser' | 'isUpdateUser' | 'isDeleteUser', systemFieldKeyMap?: {
[propName: string]: string;
} | undefined) => void;
export declare const normalizeSystemField: (data: ModelItem, type: 'saveTimestamp' | 'saveOperator', oper: 'deletedBy' | 'deletedAt' | 'createdBy' | 'createdAt' | 'updatedBy' | 'updatedAt', flag: 'isCreateDate' | 'isUpdateDate' | 'isDeleteDate' | 'isCreateUser' | 'isUpdateUser' | 'isDeleteUser') => void;
export declare class ModelStore {
readonly manager: Manager;
readonly data: ModelItem;
elem?: HTMLDivElement | null;
layer?: HTMLDivElement | null;
header?: HTMLDivElement | null;
unmountCallbacks: Array<() => void>;
startX: number;
startY: number;
moved: boolean;
startInfo?: {
x: number;
y: number;
};
lines: Array<Line>;
x: number;
y: number;
width: number;
height: number;
dragging: boolean;
errors: import("mobx").IObservableArray<{
[propName: string]: any;
type: string;
msg: string;
}>;
dbTableBrief: DBTableBrief;
prinstine: ModelItem;
expanded: boolean;
constructor(manager: Manager, data: ModelItem);
get id(): string;
get plainData(): ModelItem;
get modified(): boolean;
get store(): import("./MainStore").MainStore;
get creatable(): boolean;
get editable(): boolean;
get others(): ModelStore[];
get removable(): boolean;
toggleExpanded(): void;
fixReference(): void;
savePrinstine(): void;
isFieldEditable(field: FieldItem): boolean;
isFieldKeyEditable(field: FieldItem): boolean;
isFieldRemovable(field: FieldItem): boolean;
isFieldVisible(field: FieldItem): boolean;
isFieldInsertable(field: FieldItem): boolean;
isFieldUpdateable(field: FieldItem): boolean;
isFieldSortable(field: FieldItem, ignoreField?: boolean): boolean;
isFieldFilterable(field: FieldItem, ignoreField?: boolean): boolean;
isFieldSearchable(field: FieldItem, ignoreField?: boolean): boolean;
isRelationField(field: FieldItem): boolean;
isRelationToRelationShip(field: FieldItem): boolean | undefined;
/**
* 是否为能平铺展开的字段,通常对一的关系,关系表中的字段都能平铺展开
* @param field
* @returns
*/
canFlatRelationField(field: FieldItem): boolean;
get primaryFields(): FieldItem[];
get primaryField(): FieldItem;
get nameField(): FieldItem | null | undefined;
get systemFields(): FieldItem[];
get foreignFields(): FieldItem[];
get normalFields(): FieldItem[];
get fieldsCount(): number;
get collapsable(): boolean;
get fields(): FieldItem[];
get relations(): any[];
get isTree(): boolean;
get valid(): boolean;
getInverseRelation(relation: RelationShipItem): RelationShipDetail | null | undefined;
validate(errorsReturn?: Array<string>): Promise<boolean>;
clearErrors(): void;
/**
* 获取所有字段,同时把能够平铺展开的字段也获取到
*/
get availableFields(): FieldItem[];
/**
* 获取所有可查询子表和深层对一关系字段
*/
get availableFieldsDeep(): ExtraField[];
recursiveLoopFields(model: ModelStore, cache: WeakMap<ModelStore, boolean>, stack: {
field?: FieldItem | RelationFieldItem | undefined;
relation?: RelationShipDetail | undefined;
}[] | undefined, fields: ExtraField[]): ExtraField[];
buildFieldDetail(field: FieldItem): FieldItem;
buildFieldsDetail(fields: Array<FieldItem>): FieldItem[];
getFieldById(id: string): FieldItem | undefined;
getRelationById(id: string): RelationShipItem | undefined;
getRelationDetail(idOrKey: string): RelationShipDetail | undefined;
updateData(data: ModelItem): void;
addLine(line: Line): void;
normalizeModel(data: ModelItem): ModelItem;
normalizeRelation(relation: RelationShipItem): RelationShipItem;
addFields(value: Array<FieldItem> | FieldItem): void;
updateField(value: FieldItem): void;
removeField(value: FieldItem): void;
validateRelation(relation: RelationShipItem, bindFormField?: boolean): any;
addRelation(value: RelationShipItem, options?: {
placeholderId?: string;
placeholderIndex?: number;
}, context?: AddRelationEventContext): void;
updateRelation(value: RelationShipItem): void;
removeRelation(value: RelationShipItem): void;
updateFieldsOrder(order: Array<FieldItem>): void;
attachDom(dom: HTMLDivElement | null): void;
resizeSensor?: Function;
/**
* Diagram 组件 didMount 回调
*/
mount(): void;
update(): void;
/**
* Diagram 组件 willUnmount 回调
*/
unmount(): void;
get rect(): Rect;
setPosition(x: number, y: number): void;
handleClick(e: MouseEvent): void;
handleMouseDown(e: MouseEvent): void;
handleMouseMove(e: MouseEvent): void;
handleMouseUp(e: MouseEvent): void;
syncRectData(): void;
syncRectToView(): void;
syncRectToThumb(): void;
highlightLines(id: string): void;
thumb: HTMLDivElement | null;
attachThumbDom(thumb: HTMLDivElement | null): void;
}
export { normalizeField };