Skip to main content

project - Model API

Module Overview​

The orchestration module includes several models:

Their relationships are shown below: image.png

Within the document model, there are additional derived models:

The entire model system is accessed through the project API. All model instances must be obtained via project, e.g. project.currentDocument for the current document model, or project.currentDocument.nodesMap for all nodes in the current document.

Below is a detailed introduction to the project API.

Variables​

currentDocument​

Get the current document instance

/**
* Get the current document
* get current document
*/
get currentDocument(): IPublicModelDocumentModel | null;

Related type: IPublicModelDocumentModel

documents​

Get all documents in the current project

/**
* Get all documents in the current project
* get all documents of this project
* @returns
*/
get documents(): IPublicModelDocumentModel[];

Related type: IPublicModelDocumentModel

simulatorHost​

Get the simulator host

/**
* Get the simulator host
* get simulator host
*/
get simulatorHost(): IPublicApiSimulatorHost | null;

Related type: IPublicApiSimulatorHost

Methods​

openDocument​

Open a document

/**
* Open a document
* @param doc
* @returns
*/
openDocument(doc?: string | IPublicTypeRootSchema | undefined): IPublicModelDocumentModel | null;

Related types:

createDocument​

Create a document

/**
* Create a document
* create a document
* @param data
* @returns
*/
createDocument(data?: IPublicTypeRootSchema): IPublicModelDocumentModel | null;

Related types:

removeDocument​

Remove a document

/**
* Remove a document
* remove a document
* @param doc
*/
removeDocument(doc: IPublicModelDocumentModel): void;

Related type: IPublicApiSimulatorHost

getDocumentByFileName​

Get a document by fileName

/**
* Get a document by fileName
* get a document by filename
* @param fileName
* @returns
*/
getDocumentByFileName(fileName: string): IPublicModelDocumentModel | null;

Related type: IPublicApiSimulatorHost

getDocumentById​

Get a document by id

/**
* Get a document by id
* get a document by id
* @param id
* @returns
*/
getDocumentById(id: string): IPublicModelDocumentModel | null;

Related type: IPublicApiSimulatorHost

exportSchema​

Export project schema

/**
* Export project
* export project to schema
* @returns
*/
exportSchema(stage: IPublicEnumTransformStage): IPublicTypeProjectSchema;

Related types:

importSchema​

Import project schema

/**
* Import project schema
* import schema to project
* @param schema Project data to import
*/
importSchema(schema?: IPublicTypeProjectSchema): void;

Related type: IPublicTypeProjectSchema

addPropsTransducer​

Add a property transducer function

/**
* Add a property transducer function
* add a transducer to process prop
* @param transducer
* @param stage
*/
addPropsTransducer(
transducer: IPublicTypePropsTransducer,
stage: IPublicEnumTransformStage,
): void;

Related types:

Example Remove props.hidden from every component on save

import { project } from '@rchh/lowcode-engine';
import {
IPublicTypeCompositeObject,
IPublicEnumTransformStage,
IPublicModelPluginContext,
} from '@rchh/lowcode-types';

export const DeleteHiddenTransducer = (ctx: IPublicModelPluginContext) => {
return {
async init() {
const { project } = ctx;
project.addPropsTransducer(
(props: IPublicTypeCompositeObject): IPublicTypeCompositeObject => {
delete props.hidden;
return props;
},
IPublicEnumTransformStage.Save,
);
},
};
};

DeleteHiddenTransducer.pluginName = 'DeleteHiddenTransducer';

setI18n​

Set i18n locale data

/**
* Set i18n locale data
* Data format reference: https://github.com/alibaba/lowcode-engine/blob/main/specs/lowcode-spec.md#2434%E5%9B%BD%E9%99%85%E5%8C%96%E5%A4%9A%E8%AF%AD%E8%A8%80%E7%B1%BB%E5%9E%8Baa
*
* set I18n data for this project
* @param value object
* @since v1.0.17
*/
setI18n(value: object): void;

@since v1.0.17

setConfig​

Set current project configuration

/**
* Set current project configuration
* set config for this project
* @param value object
* @since v1.1.4
*/
setConfig(value: IPublicTypeAppConfig): void;
setConfig<T extends keyof IPublicTypeAppConfig>(key: T, value: IPublicTypeAppConfig[T]): void;

@since v1.1.4

How to extend project configuration​

// shims.d.ts
declare module '@rchh/lowcode-types' {
export interface IPublicTypeAppConfig {
customProp: CustomPropType;
}
}

export {};

Events​

onRemoveDocument​

Bind document removal event

/**
* Bind document removal event
* set callback for event onDocumentRemoved
* @param fn
* @since v1.0.16
*/
onRemoveDocument(fn: (data: { id: string }) => void): IPublicTypeDisposable;

Related type: IPublicTypeDisposable

@since v1.0.16

onChangeDocument​

Document change event within the current project

/**
* Document change event within the current project
* set callback for event onDocumentChanged
*/
onChangeDocument(fn: (doc: IPublicModelDocumentModel) => void): IPublicTypeDisposable;

Related types:

onSimulatorHostReady​

Simulator ready event for the current project

/**
* Simulator ready event for the current project
* set callback for event onSimulatorHostReady
*/
onSimulatorHostReady(fn: (host: IPublicApiSimulatorHost) => void): IPublicTypeDisposable;

Related types:

onSimulatorRendererReady​

Renderer ready event for the current project

/**
* Renderer ready event for the current project
* set callback for event onSimulatorRendererReady
*/
onSimulatorRendererReady(fn: () => void): IPublicTypeDisposable;

Related type: IPublicTypeDisposable