jamis
Version:
一种支持通过JSON配置方式生成页面的组件库
96 lines (95 loc) • 2.94 kB
TypeScript
import type { Api, ApiMapper, AsyncFuncString, IServiceStore, RendererEnv, RendererEvent, RendererProps, SchemaBoolean, SchemaExpression, SchemaMessage } from 'jamis-core';
import type { BaseSchemaScoped, SchemaCollection, StaticControlSchemaBase } from '../types';
/**
* Service 服务类控件。
*/
export interface ServiceSchema extends BaseSchemaScoped {
/**
* 指定为 Service 数据拉取控件。
*/
type: 'service';
/**
* 页面初始化的时候,可以设置一个 API 让其取拉取,发送数据会携带当前 data 数据(包含地址栏参数),获取得数据会合并到 data 中,供组件内使用。
*/
api?: Api | ApiMapper;
/**
* WebScocket 地址,用于实时获取数据
*/
ws?: string;
/**
* 通过调用外部函数来获取数据
*/
dataProvider?: ((data: Record<string, any>, setData: (data: Record<string, any>) => void, env: RendererEnv) => any) | AsyncFuncString;
/**
* 内容区域
*/
body?: SchemaCollection;
/**
* @deprecated 改成 api 的 sendOn。
*/
fetchOn?: SchemaExpression;
/**
* 是否默认就拉取?
*/
initFetch?: boolean;
/**
* 是否默认就拉取?通过表达式来决定.
*
* @deprecated 改成 api 的 sendOn。
*/
initFetchOn?: SchemaExpression;
/**
* 用来获取远程 Schema 的 api
*/
schemaApi?: Api | ApiMapper;
/**
* 页面schema提供者, 和前面的schema/schemaApi互斥, 优先级从前往后
*/
schemaProvider?: (data: Record<string, any>, store: IServiceStore) => Promise<SchemaCollection>;
/**
* 是否默认加载 schemaApi
*/
initFetchSchema?: boolean;
/**
* 用表达式来配置。
* @deprecated 改成 api 的 sendOn。
*/
initFetchSchemaOn?: SchemaExpression;
/**
* 是否轮询拉取
*/
interval?: number | string;
/**
* 是否静默拉取
*/
silentPolling?: boolean;
/**
* 关闭轮询的条件。
*/
stopAutoRefreshWhen?: SchemaExpression;
messages?: SchemaMessage;
/**
* 当schema加载失败时, 显示错误信息到页面上
*/
showSchemaError?: boolean;
/**
* 控制是否要显示loading
*/
showLoading?: boolean;
showLoadingOn?: SchemaBoolean;
}
export interface StaticServiceSchema extends Omit<ServiceSchema, 'type'>, StaticControlSchemaBase {
type: 'static-service';
}
export interface ServiceProps extends RendererProps, Omit<ServiceSchema, 'type' | 'className' | 'data'> {
store: IServiceStore;
messages: SchemaMessage;
dispatchEvent: (event: IServiceEvent, data?: any) => Promise<RendererEvent>;
}
export type IServiceEvent =
/** schemaProvider调用成功 */
'schemaProviderInited'
/** api接口数据调用成功 */
| 'fetchInited'
/** schemaApi调用成功 */
| 'fetchSchemaInited';