diff --git a/packages/command-services/lib/providers.ts b/packages/command-services/lib/providers.ts index a6197dfbe6058e9a214c1a0a3d0640bc47b80cce..c522734887343cae9fd8fd702862a8451b36174f 100644 --- a/packages/command-services/lib/providers.ts +++ b/packages/command-services/lib/providers.ts @@ -51,7 +51,7 @@ import { } from './index'; import { UploadDialogService, DownloadService } from '@gsp-svc/formdoc-upload-vue'; import { FileViewerService } from '@gsp-svc/file-viewer-vue'; -import { CloudPrintService } from '@gsp-svc/cloudprint-vue'; +// import { CloudPrintService } from '@gsp-svc/cloudprint-vue'; const commandServiceDevkitProviders: StaticProvider[] = [ { provide: QuerystringService, useClass: QuerystringService, deps: [] }, @@ -63,7 +63,7 @@ const commandServicesDevkitProviders: StaticProvider[] = [ { provide: RuntimeFrameworkService, useClass: RuntimeFrameworkService, deps: [QuerystringService] }, { provide: NavigationHistoryService, useClass: NavigationHistoryService, deps: [] }, { provide: NavigationEventService, useClass: NavigationEventService, deps: [RuntimeFrameworkService, QuerystringService, NavigationHistoryService] }, - { provide: EXCEPTION_HANDLER_TOKEN, useClass: FormExceptionHandler, deps: [FormMessageService, FormLoadingService] }, + ]; const commandServiceModuleProviders: StaticProvider[] = [ @@ -72,6 +72,7 @@ const commandServiceModuleProviders: StaticProvider[] = [ { provide: FormMessageService, useClass: FormMessageService, deps: [Injector] }, { provide: StateService, useClass: StateService, deps: [] }, { provide: VerifyDetailService, useClass: VerifyDetailService, deps: [] }, + { provide: EXCEPTION_HANDLER_TOKEN, useClass: FormExceptionHandler, deps: [FormMessageService, FormLoadingService] } ]; const commandServiceViewModelProviders: StaticProvider[] = [ @@ -118,7 +119,7 @@ const commandServiceViewModelProviders: StaticProvider[] = [ { provide: DirtyCheckingService, useClass: DirtyCheckingService, deps: [] }, { provide: RenderEngineService, useClass: RenderEngineService, deps: [Injector] }, { provide: TemplateService, useClass: TemplateService, deps: [ViewModel] }, - { provide: PrintService, useClass: PrintService, deps: [CloudPrintService, FormNotifyService] }, + { provide: PrintService, useClass: PrintService, deps: [] }, // 导航相关服务 { provide: NavigationService, useClass: NavigationService, deps: [RuntimeFrameworkService, QuerystringService, ViewModel, Injector, NavigationEventService, NavigationHistoryService, FormNotifyService] }, // 参数解析服务 diff --git a/packages/renderer/src/i18n/resource-loader.ts b/packages/renderer/src/i18n/resource-loader.ts index 0924bbd253239cec6966ff31f2cb6634f723808d..fce121c36c2f27ab6cd9c389c8bef6825914f3e3 100644 --- a/packages/renderer/src/i18n/resource-loader.ts +++ b/packages/renderer/src/i18n/resource-loader.ts @@ -23,11 +23,14 @@ export class ResourceLoader { const formMetadata = metadata.form; const resourceMetadatas = formMetadata.refs && formMetadata.refs.filter((ref: any) => { return ref.DependentMetadata.Type === "ResourceMetadata"; - }).map((ref: any) => ref.DependentMetadata.ID) || []; - const resourceMetadataPromise = resourceMetadatas.map((id: string) => { - return this.loadResourceMetadataByPath(projectPath, id); + }).map((ref: any) => { + const { ID: id, NameSpace: nameSpace } = ref.DependentMetadata; + return { id, nameSpace }; + }) || []; + const resourceMetadataPromise = resourceMetadatas.map((metadataDto: any) => { + return this.loadResourceMetadataByPath(projectPath, metadataDto); }); - await this.loadExternalMetadataByPath(formMetadata); + await this.loadExternalMetadataByPath(projectPath, formMetadata); return Promise.all(resourceMetadataPromise).then((resourceMetadatas) => { if (!resourceMetadatas || resourceMetadatas.length < 1) { return; @@ -63,30 +66,24 @@ export class ResourceLoader { console.warn('国际化资源加载失败!'); }); } - private async loadExternalMetadataByPath(formMetadata: any) { + private async loadExternalMetadataByPath(projectPath: string, formMetadata: any) { const formMetadataQuery = new FormMetadataQuery(formMetadata); const externalFormInfos = formMetadataQuery.getExternalFormInfos(); for (const externalFormInfo of externalFormInfos) { - await this.loadByProjectPath(externalFormInfo.id, externalFormInfo.projectPath); - this.correctExternalFormCode(externalFormInfo); + await this.loadByProjectPath(externalFormInfo.id, projectPath); } } - private async loadExternalMetadataById(formMetadata: any){ + private async loadExternalMetadataById(formMetadata: any) { const formMetadataQuery = new FormMetadataQuery(formMetadata); const externalFormInfos = formMetadataQuery.getExternalFormInfos(); for (const externalFormInfo of externalFormInfos) { await this.loadByMetadataId(externalFormInfo.id); - this.correctExternalFormCode(externalFormInfo); } } - private correctExternalFormCode(externalFormInfo: any) { - const externalMetadata = this.metadataManager.getMetadataCache(externalFormInfo.id); - externalMetadata.form.content.module.externalContainerId = externalFormInfo.externalContainerId; - } - private loadResourceMetadataByPath(projectPath: string, metadataId: string) { - const resourceMetadata = this.resourceMetadataDataService.loadByProjectPath(projectPath, metadataId); + private loadResourceMetadataByPath(projectPath: string, metadataDto: { id: string, nameSpace: string; }) { + const resourceMetadata = this.resourceMetadataDataService.loadByDto(projectPath, metadataDto); const languageCode = this.languageListManager.getLanguageCode(); if (languageCode === DEFAULT_LOCALE) { return resourceMetadata; diff --git a/packages/renderer/src/i18n/transformer/data-grid-i18n-transformer.ts b/packages/renderer/src/i18n/transformer/data-grid-i18n-transformer.ts index 1f73addaea6f2f0304e3be87a0205d0c8d01dd5c..dd693481b0fe8b58328ea6632f2a7ec01102af02 100644 --- a/packages/renderer/src/i18n/transformer/data-grid-i18n-transformer.ts +++ b/packages/renderer/src/i18n/transformer/data-grid-i18n-transformer.ts @@ -34,7 +34,7 @@ export class DataGridI18nTransformer { const data: any[] = formatter.data; if (data && data.length > 0) { data.forEach((item: any) => { - item.name = this.translate.transform(this.formMetadataId, `${columnId}/editor/data/${item.value}`, item.name); + item.name = this.translate.transform(this.formMetadataId, `${columnId}/formatter/data/${item.value}`, item.name); }); } } diff --git a/packages/renderer/src/i18n/transformer/index.ts b/packages/renderer/src/i18n/transformer/index.ts index c0080dc60757b82d00ef34f3b7a0259511597690..71929593b247ee2e6ba8aca3e04df618e4a50a13 100644 --- a/packages/renderer/src/i18n/transformer/index.ts +++ b/packages/renderer/src/i18n/transformer/index.ts @@ -10,3 +10,5 @@ export * from './tab-page-i18n-transformer'; export * from './tree-grid-i18n-transformer'; export * from './expression-i18n-transformer'; export * from './fieldset-i18n-transformer'; +export * from './modal-component-i18n-transformer'; +export * from './lookup-i18n-transformer'; diff --git a/packages/renderer/src/i18n/transformer/lookup-i18n-transformer.ts b/packages/renderer/src/i18n/transformer/lookup-i18n-transformer.ts new file mode 100644 index 0000000000000000000000000000000000000000..ca1c692991f38e5aeb568ba370d66d82b0df9a85 --- /dev/null +++ b/packages/renderer/src/i18n/transformer/lookup-i18n-transformer.ts @@ -0,0 +1,13 @@ +import { GlobalTranslate } from "../global-translate"; + +export class LookupI18nTransformer { + constructor(private metadata: Record, private translate: GlobalTranslate, private formMetadataId: string) { } + public transform() { + const { dialog, id } = this.metadata; + if (!dialog) { + return; + } + const { title } = dialog; + dialog.title = this.translate.transform(this.formMetadataId, id, title); + } +} diff --git a/packages/renderer/src/i18n/transformer/modal-component-i18n-transformer.ts b/packages/renderer/src/i18n/transformer/modal-component-i18n-transformer.ts new file mode 100644 index 0000000000000000000000000000000000000000..aeae082ceba5889772faa622f845803a9a9f2b5d --- /dev/null +++ b/packages/renderer/src/i18n/transformer/modal-component-i18n-transformer.ts @@ -0,0 +1,9 @@ +import { GlobalTranslate } from "../global-translate"; + +export class ModalComponentI18nTransformer { + constructor(private metadata: Record, private translate: GlobalTranslate, private formMetadataId: string) { } + public transform() { + const { title, id } = this.metadata; + this.metadata.title = this.translate.transform(this.formMetadataId, id, title); + } +} diff --git a/packages/renderer/src/i18n/transformer/module-i18n-transformer.ts b/packages/renderer/src/i18n/transformer/module-i18n-transformer.ts index f0e7abd22124e7103ef76aaf85a5a2d3750c08bd..d1b3e910f92b66d1d2eb029de47ee2e31c9dca3c 100644 --- a/packages/renderer/src/i18n/transformer/module-i18n-transformer.ts +++ b/packages/renderer/src/i18n/transformer/module-i18n-transformer.ts @@ -3,6 +3,8 @@ import { DataGridI18nTransformer } from "./data-grid-i18n-transformer"; import { ExpressionI18nTransformer } from "./expression-i18n-transformer"; import { FieldsetI18nTransformer } from "./fieldset-i18n-transformer"; import { FormGroupI18nTransformer } from "./form-group-i18n-transformer"; +import { LookupI18nTransformer } from "./lookup-i18n-transformer"; +import { ModalComponentI18nTransformer } from "./modal-component-i18n-transformer"; import { PageHeaderI18nTransformer } from "./page-header-i18n-transformer"; import { QuerySolutionI18nTransformer } from "./query-solution-i18n-transformer"; import { ResponseToolbarI18nTransformer } from "./response-toolbar-i18n-transformer"; @@ -14,10 +16,11 @@ import { ViewModelI18nTransformer } from "./view-model-i18n-transformer"; export class ModuleI18nTransformer { constructor(private moduleMetadata: Record, private translate: GlobalTranslate, private formMetadataId: string) { } public transform() { - const { viewmodels, components, expressions } = this.moduleMetadata; + const { viewmodels, components, expressions, externalComponents } = this.moduleMetadata; this.transformViewModels(viewmodels); this.transformComponents(components); this.transformExpression(expressions); + this.transformModalComponents(externalComponents); } private transformViewModels(viewModels: any[]) { if (!viewModels || viewModels.length < 1) { @@ -51,6 +54,21 @@ export class ModuleI18nTransformer { expressionI18nTransformer.transform(); }); } + private transformModalComponents(modals: any[]) { + if (!modals || modals.length < 1) { + return; + } + modals.forEach((modal: Record) => { + if (modal.type === 'lookup') { + const lookupI18nTransformer = new LookupI18nTransformer(modal, this.translate, this.formMetadataId); + lookupI18nTransformer.transform(); + } else if (modal.type === 'modal') { + const modalI18nTransformer = new ModalComponentI18nTransformer(modal, this.translate, this.formMetadataId); + modalI18nTransformer.transform(); + } + + }); + } private getComponentTransformer(metadata: Record) { const { type } = metadata; diff --git a/packages/renderer/src/metadata/data-service/resource-metadata-data-service.ts b/packages/renderer/src/metadata/data-service/resource-metadata-data-service.ts index dc65845a7bb6d22cfb704edf30f5df45d29b07fd..98e909a2f62ea5757fa796873c96df975772ef79 100644 --- a/packages/renderer/src/metadata/data-service/resource-metadata-data-service.ts +++ b/packages/renderer/src/metadata/data-service/resource-metadata-data-service.ts @@ -4,9 +4,9 @@ import { MetadataRepository } from "../repository"; export class ResourceMetadataDataService { constructor(private metadataRepository: MetadataRepository) { } public loadByType(metadataPath: string) { - return this.metadataRepository.loadMetadatasByType(metadataPath, ".res").then((metadatas: any[])=>{ - if(metadatas && metadatas.length>0){ - return Promise.all(metadatas.map((metadata: any)=>{ + return this.metadataRepository.loadMetadatasByType(metadataPath, ".res").then((metadatas: any[]) => { + if (metadatas && metadatas.length > 0) { + return Promise.all(metadatas.map((metadata: any) => { return this.loadByFullPath(metadataPath, metadata.id); })); } @@ -29,7 +29,11 @@ export class ResourceMetadataDataService { return this.createMetadata(response); }); } - + public loadByDto(currentPath: string, metadataDto: any) { + return this.metadataRepository.loadByDto(currentPath, metadataDto).then((response: any) => { + return this.createMetadata(response); + }); + } private createMetadata(response: any) { const metadata = { id: response.id, diff --git a/packages/renderer/src/page.vue b/packages/renderer/src/page.vue index 56493db37ce7bbdb9c95c3251a77f67dda0f486a..cb6bd74b1c1ff0cb31d5cefbd6d40aad089aa296 100644 --- a/packages/renderer/src/page.vue +++ b/packages/renderer/src/page.vue @@ -41,7 +41,7 @@ const devkitInjector = devkit.getInjector(); const metadataManager = devkitInjector.get(MetadataManager); const metadatas = ref(); metadatas.value = metadataManager.getMetadataCache(formMetadataId); -useTranslate(metadatas.value); +// useTranslate(metadatas.value); // 构造Module const render = ref(); const { providers } = useComponentProviders();