com.phloxui
Version:
PhloxUI Ng2+ Framework
151 lines (150 loc) • 6.47 kB
TypeScript
import { EventEmitter, OnInit, ElementRef } from '@angular/core';
import { AbstractHasDataHelp } from './AbstractHasDataHelp';
import { IDataLangSelectorController } from './IDataLangSelectorController';
import { LanguageButtonModel } from './model/LanguageButtonModel';
import { DialogService } from '../service/DialogService.service';
/**
* <p style="text-indent: 2em;">
* An abstract base class for component providing <code>data lang selector</code> to the user.
* </p>
*
* @author shiorin, tee4cute
*/
export declare abstract class AbstractDataLangSelector extends AbstractHasDataHelp implements OnInit {
private oldLangs;
private markCreatedLangs;
private defaultData;
protected langClickEvent: EventEmitter<any>;
protected langAddEvent: EventEmitter<any>;
protected langRemoveEvent: EventEmitter<any>;
protected dialogService: DialogService;
protected languageList: LanguageButtonModel[];
protected selectedLang: LanguageButtonModel;
protected dataLangList: any[];
protected controller: IDataLangSelectorController;
constructor(elementRef: ElementRef, dialogService: DialogService);
ngOnInit(): void;
private isDataObjectsContainsLang(langCode, objId?);
private getDataObjectByLang(langCode, objId?);
private getDefaultLangData();
private refreshDataLanguageList();
private refreshLanguageList();
private sortLanguageList(objArray);
private langTabChange(langModel);
private getLanguageIndex(code);
private createNewLang(langCode);
private removeLanguageData(langCode);
_isSelectedLanguageByIndex(index: number): boolean;
_langHasDataByIndex(index: number): boolean;
_isDataDirtyByIndex(index: number): boolean;
_hasButtonIcon(langModel: LanguageButtonModel): boolean;
_getDataLangList(): any[];
/**
* when new language was created this method will be called
* @param newLangData as any
*/
onLanguageAdded(newLangData: any): void;
/**
* when language was removed this method will be called
* @param deletedData as any
*/
onLanguageRemoved(removedData: any): void;
onActionBtnClicked($event: Event, langModel: LanguageButtonModel, index: number): void;
isSelectedLanguage(langModel: LanguageButtonModel): boolean;
hasLanguage(): boolean;
/**
* @param defaultData as any
* @return promise that return array of dataLang object
*/
loadDataLanguageList(defaultData: any): Promise<any[]>;
/**
* @param data as any
* @return any as object in pattern {iconURL: string, code: string, label: string}
*/
getLanguageList(): string[];
/**
* <p style="text-indent: 1em;">
* To check that the data bound to <code>this</code> component having the given language <code><b>code</b></code> or not.
* </p>
*
* @param code The language code to check.
*
* @return <code>True</code> if there is the given language <code><b>code</b></code> in the <code>data</code>. Otherwise,
* returns <code>false</code>.
*/
isLanguageHasData(code: string): boolean;
/**
* <p style="text-indent: 1em;">
* Create a new data lang by showing confirmation dialog first. If the given language code (<code><b>langCode</b></code>) already
* exists in component data, this method will return a resolved <code>Promise</code> having result as data object of the
* corresponding language.
* </p>
*
* @param langCode The language code to create.
*
* @return A <code>Promise</code> with result's value as in the following cases: <br/>
* <ul>
* <li>If [[DialogService]] is not available, returns <code>null</code>.</li>
* <li>If the user clicks <code>NO</code> button, returns <code>null</code>.</li>
* <li>If the given <code><b>langCode</b></code> already exists, returns data object of the corresponding language.</li>
* <li>Otherwise, returns a newly created data object of the given language.</li>
* </ul>
*/
createNewLangWithConfirmDialog(langCode: string): Promise<any>;
/**
* <p style="text-indent: 1em;">
* Remove data lang by showing confirmation dialog first. If the given language code (<code><b>langCode</b></code>) does not
* exist in component data, this method will return a resolved <code>Promise</code> having result as <code>null</code>.
* </p>
*
* @param langCode The language code to remove.
*
* @return A <code>Promise</code> with result's value as in the following cases: <br/>
* <ul>
* <li>If [[DialogService]] is not available, returns <code>null</code>.</li>
* <li>If the user clicks <code>NO</code> button, returns <code>null</code>.</li>
* <li>If the given <code><b>langCode</b></code> does not exist, returns <code>null</code>.</li>
* <li>Otherwise, returns data object of the corresponding <code><b>langCode</b></code>.</li>
* </ul>
*/
removeLangWithConfirmDialog(langCode: string): Promise<any>;
/**
* <p style="text-indent: 1em;">
* Get output [[EventEmitter]] which will emit an event when lang button of <code>this</code> component is clicked.
* </p>
*/
getLangClickEvent(): EventEmitter<any>;
setLangClickEvent(event: EventEmitter<any>): void;
getLangAddEvent(): EventEmitter<any>;
setLangAddEvent(event: EventEmitter<any>): void;
getLangRemoveEvent(): EventEmitter<any>;
setLangRemoveEvent(event: EventEmitter<any>): void;
setData(data: any): void;
isSelfDataDirty(): boolean;
/**
*
*/
getMergedLanguageList(): LanguageButtonModel[];
selfSaveData(): void;
selfResetData(): void;
setController(controller: IDataLangSelectorController): void;
isNew(langCode: string): boolean;
markLangAsCreated(langCode: string): void;
unmarkLangAsCreated(langCode: string): void;
doPreload(): Promise<any>;
doLoaded(): void;
_getDefaultData(): any;
/**
* @return any as one object.
*/
protected abstract getDefaultData(): any;
protected abstract getDataObjects(): any[];
abstract getLanguageFieldName(): string;
abstract getObjectIdFieldName(): string;
/**
* @param data as a dataLanguage
* @return boolean is dataLanguageDirty
*/
abstract isDataLanguageDirty(data: any): boolean;
abstract parseLanguageButtonModel(langCode: string): LanguageButtonModel;
}