fastlion-amis
Version:
一种MIS页面生成工具
108 lines (95 loc) • 2.54 kB
text/typescript
import {
types,
getEnv,
detach,
setLivelynessChecking,
isAlive,
Instance
} from 'mobx-state-tree';
import { iRendererStore, IIRendererStore, SIRendererStore } from './iRenderer';
import { ServiceStore } from './service';
import { ComboStore } from './combo';
import { FormStore } from './form';
import { CRUDStore } from './crud';
import { TableStore } from './table';
import { ListStore } from './list';
import { ModalStore } from './modal';
import { TranslateFn } from '../locale';
import find from 'lodash/find';
import { IStoreNode } from './node';
import { FormItemStore } from './formItem';
import { addStore, getStoreById, getStores, removeStore } from './manager';
import { PaginationStore } from './pagination';
import { AppStore } from './app';
import { RootStore } from './root';
import { LionBiTableStore } from './lionBiTable'
import { LionTableStore } from './liontable'
setLivelynessChecking(
process.env.NODE_ENV === 'production' ? 'ignore' : 'error'
);
const allowedStoreList = [
// Aug
LionBiTableStore,
LionTableStore,
ServiceStore,
FormStore,
ComboStore,
CRUDStore,
TableStore,
ListStore,
ModalStore,
FormItemStore,
PaginationStore,
AppStore
];
export const RendererStore = types
.model('RendererStore', {
storeType: 'RendererStore'
})
.views(self => ({
get fetcher() {
return getEnv(self).fetcher;
},
get notify() {
return getEnv(self).notify;
},
get isCancel(): (value: any) => boolean {
return getEnv(self).isCancel;
},
get __(): TranslateFn {
return getEnv(self).translate;
},
getStoreById(id: string) {
return getStoreById(id);
},
get stores() {
return getStores();
}
}))
.actions(self => ({
addStore(store: {
storeType: string;
id: string;
path: string;
parentId?: string;
[propName: string]: any;
}): IStoreNode {
if (store.storeType === RootStore.name) {
return addStore(RootStore.create(store, getEnv(self)));
}
const factory = find(
allowedStoreList,
item => item.name === store.storeType
)!;
return addStore(factory.create(store as any, getEnv(self)));
},
removeStore(store: IStoreNode) {
// store.dispose();
removeStore(store);
}
}));
export type IRendererStore = Instance<typeof RendererStore>;
export { iRendererStore, IIRendererStore };
export const RegisterStore = function (store: any) {
allowedStoreList.push(store as any);
};