com.phloxui
Version:
PhloxUI Ng2+ Framework
190 lines (189 loc) • 9.83 kB
TypeScript
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';