UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

190 lines (189 loc) 9.83 kB
import { OnInit, EventEmitter } from '@angular/core'; import { AbstractDataEditorView } from './AbstractDataEditorView'; import { IDataEditorViewProvider } from './IDataEditorViewProvider'; import { IDataEditorActionProvider } from './IDataEditorActionProvider'; import { IEditorSettingServiceFactory } from './IEditorSettingServiceFactory'; import { IDataServiceFactory } from './IDataServiceFactory'; import { ViewWrapper } from './editor.internal/ViewWrapper.component'; import { IDataService } from './IDataService'; import { IEditorSettingService } from './IEditorSettingService'; import { ViewModel, ActionModel, PhloxAppInfo } from '../model/models'; import { DataSchema } from '../../share/model/models'; import { IMenuModelFactory } from '../../component/IMenuModelFactory'; import { IDataComparator } from '../../component/IDataComparator'; import { PhloxAppInfoService } from '../../service/PhloxAppInfoService.service'; import { DialogService } from '../../service/DialogService.service'; import { BackgroundProcessManager } from '../../service/BackgroundProcessManager.service'; import { IPageLoad } from '../../share/IPageLoad'; import { AbstractI18NApplicable } from '../../share/AbstractI18NApplicable'; /** * <p style="text-indent: 2em;"> * An abstract base class for <code>data editor</code> page component. A single <code>data editor</code> may contain one or more <code>data view</code>s ([[ViewModel]]). * All <code>data view</code>s must manipulate with the same data set in that editor. For an instance, when a user edit data from one view and switch to another view, the data * shown in the second view must always be identical the same as the first one. An editor may contain a set of <code>action</code>s ([[ActionModel]]) which user can perform * on editor's data. For more information about creating your own editor page, please see the documentation below. * </p> * <section style="padding-top: 7pt;"> * <header style="font-weight: bold;"> * Data View * </header> * <p style="text-indent: 2em;"> * To specify the list of views in an editor, you have to provide a <code>view provider</code> ([[IDataEditorViewProvider]]) into editor's constructor. The editor's constructor * will call [[IDataEditorViewProvider.getViewModels]] to obtain the list of <code>data view</code>s being displayed in this editor. The concept behind <code>data view</code> is that * to provide user the different perspectives on the same data set. For example, if you're going to build a customer data editor page, you may want to provide user a <code>list view</code> * which allows user to easily search a customer by typing into search text box, then, it'll show customer data in tabular form. Therefore, in some sense, you may want to provide * a <code>calendar view</code> displaying customer's birth date to the user --letting he/she to take less efforts on organizing a CRM work plan. For this kind of use, using <code> * data view</code>, instead of building seperate pages, is the best choice to build your application. * </p> * </section> * <section style="padding-top: 7pt;"> * <header style="font-weight: bold;"> * Action * </header> * <p style="text-indent: 2em;"> * abcdef * </p> * </section> * * @author shiorin, tee4cute * @see [[ViewModel]] * @see [[ActionModel]] * @see [[IDataEditorViewProvider]] * @see [[IDataEditorActionProvider]] * @see [[IDataServiceFactory]] */ export declare abstract class AbstractDataEditor extends AbstractI18NApplicable implements OnInit, IPageLoad { protected viewModels: ViewModel[]; protected actionModels: ActionModel[]; protected dataSchema: DataSchema; protected dataCreateEvent: EventEmitter<any>; protected dataUpdateEvent: EventEmitter<any>; protected dataDeleteEvent: EventEmitter<any>; protected dataRevertEvent: EventEmitter<any>; protected dataQueryEvent: EventEmitter<any>; protected dataReloadEvent: EventEmitter<any>; protected dataSchemaLoadEvent: EventEmitter<any>; protected viewShowEvent: EventEmitter<any>; protected viewHideEvent: EventEmitter<any>; protected viewChangeEvent: EventEmitter<any>; private PAGE_LOOP_TIMEOUT; private showViewDelayTimer; protected viewProvider: IDataEditorViewProvider; protected viewWrappers: ViewWrapper[]; protected actionProvider: IDataEditorActionProvider; protected settingServiceFactory: IEditorSettingServiceFactory; protected dataServiceFactory: IDataServiceFactory; protected data: any[]; protected dataService: IDataService; protected editorSetting: IEditorSettingService; protected dialogService: DialogService; protected phloxAppService: PhloxAppInfoService; protected views: AbstractDataEditorView[]; protected viewShowHandlerFunction: Function; protected viewHideHandlerFunction: Function; protected viewChangeHandlerFunction: Function; protected menuModelFactory: IMenuModelFactory; protected dataComparator: IDataComparator<any>; protected currentView: AbstractDataEditorView; protected phloxAppInfo: PhloxAppInfo; protected bgProcessMgr: BackgroundProcessManager; protected query: any; constructor(actionProvider: IDataEditorActionProvider, viewProvider: IDataEditorViewProvider, dataFactory: IDataServiceFactory, settingServiceFactory: IEditorSettingServiceFactory, phloxAppService: PhloxAppInfoService, dialogService: DialogService, bgProcessMgr: BackgroundProcessManager); ngOnInit(): void; protected initPage(): void; private getI18NMessage(key); private onViewShowHandler(event); private onViewHideHandler(event); private onViewChangeHandler(event); protected removeData(data: any): boolean; protected getRevertData(checkData: any): any; protected getViewComponentFromModel(viewModel: ViewModel): AbstractDataEditorView; setActionModels(actionModels: ActionModel[]): void; reInit(): void; getObjectIdField(): string; getLanguageField(): string; getAppSetting(): any; recreateDataService(): Promise<IDataService>; getData(): any[]; getCurrentView(): AbstractDataEditorView; getViewModelIndex(view: ViewModel): number; getViewComponentFromType(viewType: string): AbstractDataEditorView; showView(view: ViewModel): Promise<boolean>; private _showView(view); private getDataFromObjectId(objId); private editData(data); private getSavePromise(dataProm); getDialogService(): DialogService; showViewByType(viewType: string): Promise<boolean>; addViewComponent(view: AbstractDataEditorView): void; removeViewComponent(view: AbstractDataEditorView): void; reloadData(): Promise<any>; reloadEditorSetting(): Promise<any>; reloadViewSetting(): void; createData(data: any): Promise<any>; createDataWithConfirmDialog(data: any): Promise<any>; saveSelectedData(): Promise<any>; saveDirtyData(): Promise<any>; saveSelectedDataWithConfirmDialog(): Promise<any>; saveDirtyDataWithConfirmDialog(): Promise<any>; updateSelectedData(): Promise<any>; updateDirtyData(): Promise<any>; updateData(data: any): Promise<any>; updateDataWithConfirmDialog(data: any): Promise<any>; updateDirtyDataWithConfirmDialog(): Promise<any>; updateSelectedDataWithConfirmDialog(): Promise<any>; deleteSelectedData(): Promise<any>; deleteData(data: any): Promise<any>; deleteDataWithConfirmDialog(data: any): Promise<any>; deleteSelectedDataWithConfirmDialog(): Promise<any>; revertDirtyData(): Promise<any>; revertSelectedData(): Promise<any>; revertData(data: any): Promise<any>; revertDataWithConfirmDialog(data: any): Promise<any>; revertSelectedDataWithConfirmDialog(): Promise<any>; revertDirtyDataWithConfirmDialog(): Promise<any>; searchData(): Promise<any>; queryData(queryObject: any): Promise<any>; addViewWrapper(viewWrapper: ViewWrapper): void; removeViewWrapper(viewWrapper: ViewWrapper): void; hideDialog(): void; getI18NObject(key: string): any; applyI18N(value: any): void; setOptions(options: any): void; setDataSchema(dataSchema: DataSchema): void; getDataSchema(): DataSchema; getDataService(): IDataService; setViewShowEvent(event: EventEmitter<any>): void; setViewHideEvent(event: EventEmitter<any>): void; setViewChangeEvent(event: EventEmitter<any>): void; setDataCreateEvent(event: EventEmitter<any>): void; setDataUpdateEvent(event: EventEmitter<any>): void; setDataDeleteEvent(event: EventEmitter<any>): void; setDataRevertEvent(event: EventEmitter<any>): void; setDataReloadEvent(dataReloadEvent: EventEmitter<any>): void; setDataQueryEvent(dataQueryEvent: EventEmitter<any>): void; setDataSchemaLoadEvent(dataSchemaLoadEvent: EventEmitter<any>): void; getViewShowEvent(): EventEmitter<any>; getViewHideEvent(): EventEmitter<any>; getViewChangeEvent(): EventEmitter<any>; getDataCreateEvent(): EventEmitter<any>; getDataUpdateEvent(): EventEmitter<any>; getDataDeleteEvent(): EventEmitter<any>; getDataRevertEvent(): EventEmitter<any>; getDataReloadEvent(): EventEmitter<any>; getDataQueryEvent(): EventEmitter<any>; getDataSchemaLoadEvent(): EventEmitter<any>; getActionModels(): ActionModel[]; getViewModels(): ViewModel[]; getViewShowHandler(): Function; getViewHideHandler(): Function; getViewChangeHandler(): Function; setQuery(query: any): void; getQuery(): any; protected abstract onEditorSettingLoaded(settings: any): void; abstract getMenuModelFactory(): IMenuModelFactory; abstract getDataComparator(): IDataComparator<any>; abstract newDataObject(): any; abstract isPageLoaded(): boolean; } export * from './editor.internal/ViewButton.component';