UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

1,346 lines (1,345 loc) 111 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { EventEmitter } from '@angular/core'; import { AbstractDataView } from './AbstractDataView'; import { Option } from '../../decorator/Option.decorator'; import { EventUtils } from '../../share/utils/EventUtils'; import { LANG_ADD_EVENT, LANG_REMOVE_EVENT, LANG_CLICK_EVENT, BEFORE_LANG_ADD_EVENT, BEFORE_LANG_REMOVE_EVENT, BEFORE_LANG_CLICK_EVENT } from '../../share/CustomEventType'; /** * <p style="text-indent: 2em;"> * An abstract base class for component providing <code>data lang selector</code> to the user. * </p> * * @author shiorin, tee4cute * @abstract */ var AbstractDataLangSelector = /** @class */ (function (_super) { tslib_1.__extends(AbstractDataLangSelector, _super); function AbstractDataLangSelector(elementRef, dialogService) { var _this = _super.call(this, elementRef) || this; _this.langClickEvent = new EventEmitter(); _this.langAddEvent = new EventEmitter(); _this.langRemoveEvent = new EventEmitter(); _this.beforeLangClickEvent = new EventEmitter(); _this.beforeLangAddEvent = new EventEmitter(); _this.beforeLangRemoveEvent = new EventEmitter(); _this.languageList = []; _this.dataLangList = []; _this.oldLangs = []; _this.markCreatedLangs = []; _this.dataObjects = []; _this.selectedLang = null; _this.defaultData = null; _this.dialogService = dialogService; return _this; } /** * @return {?} */ AbstractDataLangSelector.prototype.ngOnInit = /** * @return {?} */ function () { _super.prototype.ngOnInit.call(this); this.defaultData = this.getDefaultData(); this.refreshLanguageList(); this.refreshDataLanguageList(); }; /** * @param {?} langCode * @param {?=} objId * @return {?} */ AbstractDataLangSelector.prototype.isDataObjectsContainsLang = /** * @param {?} langCode * @param {?=} objId * @return {?} */ function (langCode, objId) { var /** @type {?} */ result = this.getDataObjectByLang(langCode, objId); if (result !== null && typeof result !== 'undefined') { return true; } return false; }; /** * @param {?} langCode * @param {?=} objId * @return {?} */ AbstractDataLangSelector.prototype.getDataObjectByLang = /** * @param {?} langCode * @param {?=} objId * @return {?} */ function (langCode, objId) { var /** @type {?} */ objects = this.getDataObjects(); if (objects !== null && typeof objects !== 'undefined') { var /** @type {?} */ objIdFieldName = this.getObjectIdFieldName(); var /** @type {?} */ langFieldName = this.getLanguageFieldName(); if (langFieldName !== null) { try { for (var objects_1 = tslib_1.__values(objects), objects_1_1 = objects_1.next(); !objects_1_1.done; objects_1_1 = objects_1.next()) { var d = objects_1_1.value; var /** @type {?} */ langPass = false; if (d[langFieldName] === langCode) { langPass = true; } var /** @type {?} */ objIdPass = true; if (typeof objId !== 'undefined') { if (d[objIdFieldName] !== objId) { objIdPass = false; } } if (langPass && objIdPass) { return d; } } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (objects_1_1 && !objects_1_1.done && (_a = objects_1.return)) _a.call(objects_1); } finally { if (e_1) throw e_1.error; } } } } return null; var e_1, _a; }; /** * @return {?} */ AbstractDataLangSelector.prototype.refreshDataLanguageList = /** * @return {?} */ function () { var _this = this; var /** @type {?} */ defaultObj = this.getDefaultData(); this.defaultData = defaultObj; // search for other lang var /** @type {?} */ langFieldName = this.getLanguageFieldName(); this.oldLangs = []; var /** @type {?} */ langProm = this.loadDataLanguageList(defaultObj); if (langProm !== null && typeof langProm !== 'undefined') { langProm.then(function (result) { var /** @type {?} */ tempArray = []; if (result !== null && typeof result !== 'undefined') { if (Array.isArray(result)) { tempArray = result; } else { tempArray.push(result); } } // check contain var /** @type {?} */ langCode = []; try { for (var _a = tslib_1.__values(_this.languageList), _b = _a.next(); !_b.done; _b = _a.next()) { var lang = _b.value; langCode.push(lang.code); } } catch (e_2_1) { e_2 = { error: e_2_1 }; } finally { try { if (_b && !_b.done && (_c = _a.return)) _c.call(_a); } finally { if (e_2) throw e_2.error; } } var /** @type {?} */ isAdded = false; try { for (var tempArray_1 = tslib_1.__values(tempArray), tempArray_1_1 = tempArray_1.next(); !tempArray_1_1.done; tempArray_1_1 = tempArray_1.next()) { var temp = tempArray_1_1.value; var /** @type {?} */ tempCode = temp[langFieldName]; if (langCode.indexOf(tempCode) <= -1) { isAdded = true; _this.languageList.push(_this.parseLanguageButtonModel(tempCode)); } _this.oldLangs.push(tempCode); } } catch (e_3_1) { e_3 = { error: e_3_1 }; } finally { try { if (tempArray_1_1 && !tempArray_1_1.done && (_d = tempArray_1.return)) _d.call(tempArray_1); } finally { if (e_3) throw e_3.error; } } if (isAdded) { _this.sortLanguageList(_this.languageList); } _this.dataLangList = []; for (var /** @type {?} */ i = 0; i < _this.languageList.length; i++) { var /** @type {?} */ item = _this.languageList[i]; var /** @type {?} */ matched = null; try { for (var tempArray_2 = tslib_1.__values(tempArray), tempArray_2_1 = tempArray_2.next(); !tempArray_2_1.done; tempArray_2_1 = tempArray_2.next()) { var temp = tempArray_2_1.value; if (item.code === temp[langFieldName]) { var /** @type {?} */ curData = _this.getDataObjectByLang(item.code); if (curData === null) { matched = temp; } else { // get from old matched = curData; } break; } } } catch (e_4_1) { e_4 = { error: e_4_1 }; } finally { try { if (tempArray_2_1 && !tempArray_2_1.done && (_e = tempArray_2.return)) _e.call(tempArray_2); } finally { if (e_4) throw e_4.error; } } _this.dataLangList.push(matched); } var e_2, _c, e_3, _d, e_4, _e; }); } else { this.dataLangList = []; for (var /** @type {?} */ i = 0; i < this.languageList.length; i++) { this.dataLangList.push(null); } } }; /** * @return {?} */ AbstractDataLangSelector.prototype.refreshLanguageList = /** * @return {?} */ function () { this.languageList = []; var /** @type {?} */ defaultLangs = this.getLanguageList(); if (defaultLangs !== null && typeof defaultLangs !== 'undefined' && Array.isArray(defaultLangs)) { try { for (var defaultLangs_1 = tslib_1.__values(defaultLangs), defaultLangs_1_1 = defaultLangs_1.next(); !defaultLangs_1_1.done; defaultLangs_1_1 = defaultLangs_1.next()) { var lang = defaultLangs_1_1.value; this.languageList.push(this.parseLanguageButtonModel(lang)); } } catch (e_5_1) { e_5 = { error: e_5_1 }; } finally { try { if (defaultLangs_1_1 && !defaultLangs_1_1.done && (_a = defaultLangs_1.return)) _a.call(defaultLangs_1); } finally { if (e_5) throw e_5.error; } } } this.sortLanguageList(this.languageList); var e_5, _a; }; /** * @param {?} objArray * @return {?} */ AbstractDataLangSelector.prototype.sortLanguageList = /** * @param {?} objArray * @return {?} */ function (objArray) { if (objArray === null || typeof objArray === 'undefined') { return; } objArray.sort(function (obj1, obj2) { if ((obj1 === null || typeof obj1 === 'undefined') && (obj2 !== null && typeof obj2 !== 'undefined')) { return 1; } else if ((obj1 !== null && typeof obj1 !== 'undefined') && (obj2 === null || typeof obj2 === 'undefined')) { return -1; } else if ((obj1 === null || typeof obj1 === 'undefined') && (obj2 === null || typeof obj2 === 'undefined')) { return 0; } var /** @type {?} */ code1 = obj1.code; var /** @type {?} */ code2 = obj2.code; if ((code1 === null || typeof code1 === 'undefined') && (code2 !== null && typeof code2 !== 'undefined')) { return 1; } else if ((code1 !== null && typeof code1 !== 'undefined') && (code2 === null || typeof code2 === 'undefined')) { return -1; } else if ((code1 === null || typeof code1 === 'undefined') && (code2 === null || typeof code2 === 'undefined')) { return 0; } if (code1 < code2) { return -1; } else if (code1 > code2) { return 1; } return 0; }); }; /** * @param {?} langModel * @return {?} */ AbstractDataLangSelector.prototype.langTabChange = /** * @param {?} langModel * @return {?} */ function (langModel) { this.selectedLang = langModel; }; /** * @param {?} code * @return {?} */ AbstractDataLangSelector.prototype.getLanguageIndex = /** * @param {?} code * @return {?} */ function (code) { if (code !== null && typeof code !== 'undefined') { for (var /** @type {?} */ i = 0; i < this.languageList.length; i++) { var /** @type {?} */ lang = this.languageList[i]; if (lang.code === code) { return i; } } } return -1; }; /** * @param {?} langCode * @return {?} */ AbstractDataLangSelector.prototype.createNewLang = /** * @param {?} langCode * @return {?} */ function (langCode) { var /** @type {?} */ result = null; if (langCode !== null && typeof langCode !== 'undefined') { var /** @type {?} */ langFieldName = this.getLanguageFieldName(); var /** @type {?} */ index = this.getLanguageIndex(langCode); if (this.isLanguageHasData(langCode)) { // already has data in the lang if (index > -1 && index < this.dataLangList.length) { var /** @type {?} */ dataLang = this.dataLangList[index]; result = dataLang; } } else { // create empty data if (index > -1 && index < this.dataLangList.length) { var /** @type {?} */ cloneDefault = {}; var /** @type {?} */ defaultData = this.getDefaultData(); if (defaultData !== null && typeof defaultData !== 'undefined') { cloneDefault = JSON.parse(JSON.stringify(defaultData)); var /** @type {?} */ objIdFieldName = this.getObjectIdFieldName(); cloneDefault[objIdFieldName] = undefined; } cloneDefault[langFieldName] = langCode; // add lang this.dataLangList[index] = cloneDefault; result = cloneDefault; } } } return result; }; /** * @param {?} langCode * @param {?=} $event * @param {?=} fireEvent * @return {?} */ AbstractDataLangSelector.prototype.createNewLangSelected = /** * @param {?} langCode * @param {?=} $event * @param {?=} fireEvent * @return {?} */ function (langCode, $event, fireEvent) { var _this = this; if (fireEvent === null || fireEvent === undefined) { fireEvent = true; } return EventUtils.handleBrowserEvent(this, 'beforeLangAddEvent', $event, fireEvent, function ($event) { // doEvent var /** @type {?} */ result = _this.createNewLang(langCode); if (result !== null && result !== undefined) { var /** @type {?} */ index = _this.getLanguageIndex(langCode); if (index > -1 && index < _this.languageList.length) { _this.langTabChange(_this.languageList[index]); } _this.onLanguageAdded(result); } return result; }, function ($event) { // emitBeforeEvent // emitBeforeEvent _this.emitBeforeLangAddEvent($event); }, function ($event, result) { // emitAfterEvent // emitAfterEvent _this.emitLangAddEvent(result, $event); }, function ($event) { // doPrevented }); }; /** * @param {?} langCode * @return {?} */ AbstractDataLangSelector.prototype.removeLanguageData = /** * @param {?} langCode * @return {?} */ function (langCode) { var /** @type {?} */ result = null; if (langCode !== null && typeof langCode !== 'undefined') { var /** @type {?} */ langFieldName = this.getLanguageFieldName(); if (this.isLanguageHasData(langCode)) { var /** @type {?} */ index = this.getLanguageIndex(langCode); var /** @type {?} */ changeToDefLang = false; // remove from datalanglist if (index > -1 && index < this.dataLangList.length) { var /** @type {?} */ removeItem = this.dataLangList[index]; result = removeItem; this.dataLangList[index] = null; if (this.selectedLang === this.languageList[index]) { changeToDefLang = true; } } if (changeToDefLang) { // set tab to default this.langTabChange(null); } } else { // no lang data } this.onLanguageRemoved(result); } return result; }; /** * @param {?} langCode * @param {?=} $event * @param {?=} fireEvent * @return {?} */ AbstractDataLangSelector.prototype.removeLangSelected = /** * @param {?} langCode * @param {?=} $event * @param {?=} fireEvent * @return {?} */ function (langCode, $event, fireEvent) { var _this = this; if (fireEvent === null || fireEvent === undefined) { fireEvent = true; } return EventUtils.handleBrowserEvent(this, 'beforeLangRemoveEvent', $event, fireEvent, function ($event) { // doEvent return _this.removeLanguageData(langCode); }, function ($event) { // emitBeforeEvent // emitBeforeEvent _this.emitBeforeLangRemoveEvent($event); }, function ($event, result) { // emitAfterEvent // emitAfterEvent _this.emitLangRemoveEvent(result, $event); }, function ($event) { // doPrevented }); }; /** * @param {?} langModel * @param {?} index * @param {?=} $event * @return {?} */ AbstractDataLangSelector.prototype.emitBeforeLangClickEvent = /** * @param {?} langModel * @param {?} index * @param {?=} $event * @return {?} */ function (langModel, index, $event) { var /** @type {?} */ data = { model: langModel, index: index }; var /** @type {?} */ ev = EventUtils.newCustomEvent(BEFORE_LANG_CLICK_EVENT, this, data, $event); this.beforeLangClickEvent.emit(ev); }; /** * @param {?} langModel * @param {?} index * @param {?=} $event * @return {?} */ AbstractDataLangSelector.prototype.emitLangClickEvent = /** * @param {?} langModel * @param {?} index * @param {?=} $event * @return {?} */ function (langModel, index, $event) { var /** @type {?} */ data = { model: langModel, index: index }; var /** @type {?} */ ev = EventUtils.newCustomEvent(LANG_CLICK_EVENT, this, data, $event); this.langClickEvent.emit(ev); }; /** * @param {?=} $event * @return {?} */ AbstractDataLangSelector.prototype.emitBeforeLangAddEvent = /** * @param {?=} $event * @return {?} */ function ($event) { var /** @type {?} */ data = null; var /** @type {?} */ ev = EventUtils.newCustomEvent(BEFORE_LANG_ADD_EVENT, this, data, $event); this.beforeLangAddEvent.emit(ev); }; /** * @param {?} result * @param {?=} $event * @return {?} */ AbstractDataLangSelector.prototype.emitLangAddEvent = /** * @param {?} result * @param {?=} $event * @return {?} */ function (result, $event) { var /** @type {?} */ data = result; var /** @type {?} */ ev = EventUtils.newCustomEvent(LANG_ADD_EVENT, this, data, $event); this.langAddEvent.emit(ev); }; /** * @param {?=} $event * @return {?} */ AbstractDataLangSelector.prototype.emitBeforeLangRemoveEvent = /** * @param {?=} $event * @return {?} */ function ($event) { var /** @type {?} */ data = null; var /** @type {?} */ ev = EventUtils.newCustomEvent(BEFORE_LANG_REMOVE_EVENT, this, data, $event); this.beforeLangRemoveEvent.emit(ev); }; /** * @param {?} result * @param {?=} $event * @return {?} */ AbstractDataLangSelector.prototype.emitLangRemoveEvent = /** * @param {?} result * @param {?=} $event * @return {?} */ function (result, $event) { var /** @type {?} */ data = result; var /** @type {?} */ ev = EventUtils.newCustomEvent(LANG_REMOVE_EVENT, this, data, $event); this.langRemoveEvent.emit(ev); }; /** * @param {?} index * @return {?} */ AbstractDataLangSelector.prototype._isSelectedLanguageByIndex = /** * @param {?} index * @return {?} */ function (index) { if (typeof index !== 'undefined') { if (index !== null) { // find lang model if (index >= 0 && index < this.languageList.length) { return this.isSelectedLanguage(this.languageList[index]); } } else { return this.isSelectedLanguage(null); } } return false; }; /** * @param {?} index * @return {?} */ AbstractDataLangSelector.prototype._langHasDataByIndex = /** * @param {?} index * @return {?} */ function (index) { if (index <= -1) { return false; } if (index < this.dataLangList.length) { var /** @type {?} */ value = this.dataLangList[index]; if (value !== null && typeof value !== 'undefined') { return true; } } return false; }; /** * @param {?} index * @return {?} */ AbstractDataLangSelector.prototype._isDataDirtyByIndex = /** * @param {?} index * @return {?} */ function (index) { var /** @type {?} */ dataLang = null; if (index !== null && typeof index === 'number' && index > -1) { if (index < this.dataLangList.length) { dataLang = this.dataLangList[index]; } } var /** @type {?} */ isDirty = this.isDataLanguageDirty(dataLang); if (isDirty) { return true; } return false; }; /** * @param {?} langModel * @return {?} */ AbstractDataLangSelector.prototype._hasButtonIcon = /** * @param {?} langModel * @return {?} */ function (langModel) { if (langModel !== null && typeof langModel !== 'undefined') { if (langModel.iconURL !== null && typeof langModel.iconURL !== 'undefined' && langModel.iconURL !== '') { return true; } } return false; }; /** * @return {?} */ AbstractDataLangSelector.prototype._getDataLangList = /** * @return {?} */ function () { return this.dataLangList; }; /** * when new language was created this method will be called * @param {?} newLangData as any * @return {?} */ AbstractDataLangSelector.prototype.onLanguageAdded = /** * when new language was created this method will be called * @param {?} newLangData as any * @return {?} */ function (newLangData) { if (this.controller !== null && typeof this.controller !== 'undefined') { this.controller.languageAdded(newLangData); } }; /** * when language was removed this method will be called * @param {?} removedData * @return {?} */ AbstractDataLangSelector.prototype.onLanguageRemoved = /** * when language was removed this method will be called * @param {?} removedData * @return {?} */ function (removedData) { if (this.controller !== null && typeof this.controller !== 'undefined') { this.controller.languageRemoved(removedData); } }; /** * @param {?} $event * @param {?} langModel * @param {?} index * @return {?} */ AbstractDataLangSelector.prototype._LangModelBtnClick = /** * @param {?} $event * @param {?} langModel * @param {?} index * @return {?} */ function ($event, langModel, index) { var /** @type {?} */ showDialog = true; if (langModel === null) { // default showDialog = false; } if (this._langHasDataByIndex(index)) { showDialog = false; } if (showDialog) { // asking to new tab var /** @type {?} */ prom = this.createNewLangWithConfirmDialog(langModel.code); return prom; } else { this.langTabChange(langModel); } return null; }; /** * @param {?} $event * @param {?} langModel * @param {?} index * @param {?=} fireEvent * @return {?} */ AbstractDataLangSelector.prototype.onActionBtnClicked = /** * @param {?} $event * @param {?} langModel * @param {?} index * @param {?=} fireEvent * @return {?} */ function ($event, langModel, index, fireEvent) { var _this = this; if (fireEvent === null || fireEvent === undefined) { fireEvent = true; } EventUtils.handleBrowserEvent(this, 'beforeLangClickEvent', $event, fireEvent, function ($event) { // doEvent // This method can return a promise to emitAfterEvent // after promise is done. return _this._LangModelBtnClick($event, langModel, index); }, function ($event) { // emitBeforeEvent // emitBeforeEvent _this.emitBeforeLangClickEvent(langModel, index, $event); }, function ($event) { // emitAfterEvent // emitAfterEvent _this.emitLangClickEvent(langModel, index, $event); }, function ($event) { // doPrevented }); }; /** * @param {?} langModel * @return {?} */ AbstractDataLangSelector.prototype.isSelectedLanguage = /** * @param {?} langModel * @return {?} */ function (langModel) { if (typeof this.selectedLang !== 'undefined') { return this.selectedLang === langModel; } return false; }; /** * @return {?} */ AbstractDataLangSelector.prototype.hasLanguage = /** * @return {?} */ function () { if (this.languageList !== null && typeof this.languageList !== 'undefined' && this.languageList.length > 0) { return true; } return false; }; /** * @param {?} defaultData as any * @return {?} promise that return array of dataLang object */ AbstractDataLangSelector.prototype.loadDataLanguageList = /** * @param {?} defaultData as any * @return {?} promise that return array of dataLang object */ function (defaultData) { if (this.controller !== null && typeof this.controller !== 'undefined') { return this.controller.loadDataLanguageList(defaultData); } return Promise.resolve(null); }; /** * @return {?} any as object in pattern {iconURL: string, code: string, label: string} */ AbstractDataLangSelector.prototype.getLanguageList = /** * @return {?} any as object in pattern {iconURL: string, code: string, label: string} */ function () { if (this.controller !== null && typeof this.controller !== 'undefined') { return this.controller.getLanguageList(); } return null; }; /** * <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>. */ AbstractDataLangSelector.prototype.isLanguageHasData = /** * <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>. */ function (code) { if (code !== null && typeof code !== 'undefined') { var /** @type {?} */ index = this.getLanguageIndex(code); return this._langHasDataByIndex(index); } return false; }; /** * <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. * * @param {?=} $event * @param {?=} fireEvent * @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> */ AbstractDataLangSelector.prototype.createNewLangWithConfirmDialog = /** * <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. * * @param {?=} $event * @param {?=} fireEvent * @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> */ function (langCode, $event, fireEvent) { var _this = this; return new Promise(function (resolve, reject) { if (_this.dialogService === null || typeof _this.dialogService === 'undefined') { resolve(null); return; } var /** @type {?} */ langFieldName = _this.getLanguageFieldName(); _this.dialogService.showConfirmDialog('Confirm Create Data', 'Do you want to Create data in new language ?', false).then(function (result) { if (result == 1) { _this.createNewLangSelected(langCode, $event, fireEvent).then(function (result) { resolve(result); }).catch(function (error) { reject(error); }); } else { // NO resolve(null); } }); }); }; /** * <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. * * @param {?=} $event * @param {?=} fireEvent * @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> */ AbstractDataLangSelector.prototype.removeLangWithConfirmDialog = /** * <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. * * @param {?=} $event * @param {?=} fireEvent * @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> */ function (langCode, $event, fireEvent) { var _this = this; return new Promise(function (resolve, reject) { if (_this.dialogService === null || typeof _this.dialogService === 'undefined') { resolve(null); return; } var /** @type {?} */ langFieldName = _this.getLanguageFieldName(); _this.dialogService.showConfirmDialog('Confirm Remove Data', 'Do you want to Remove ' + langCode + ' ?', false).then(function (result) { if (result == 1) { _this.removeLangSelected(langCode, $event, fireEvent).then(function (result) { resolve(result); }).catch(function (error) { reject(error); }); } else { // NO resolve(null); } }); }); }; /** * <p style="text-indent: 1em;"> * Get output [[EventEmitter]] which will emit an event when lang button of <code>this</code> component is clicked. * </p> * @return {?} */ AbstractDataLangSelector.prototype.getLangClickEvent = /** * <p style="text-indent: 1em;"> * Get output [[EventEmitter]] which will emit an event when lang button of <code>this</code> component is clicked. * </p> * @return {?} */ function () { return this.langClickEvent; }; /** * @param {?} event * @return {?} */ AbstractDataLangSelector.prototype.setLangClickEvent = /** * @param {?} event * @return {?} */ function (event) { this.langClickEvent = event; }; /** * @return {?} */ AbstractDataLangSelector.prototype.getLangAddEvent = /** * @return {?} */ function () { return this.langAddEvent; }; /** * @param {?} event * @return {?} */ AbstractDataLangSelector.prototype.setLangAddEvent = /** * @param {?} event * @return {?} */ function (event) { this.langAddEvent = event; }; /** * @return {?} */ AbstractDataLangSelector.prototype.getLangRemoveEvent = /** * @return {?} */ function () { return this.langRemoveEvent; }; /** * @param {?} event * @return {?} */ AbstractDataLangSelector.prototype.setLangRemoveEvent = /** * @param {?} event * @return {?} */ function (event) { this.langRemoveEvent = event; }; /** * @return {?} */ AbstractDataLangSelector.prototype.getBeforeLangClickEvent = /** * @return {?} */ function () { return this.beforeLangClickEvent; }; /** * @param {?} event * @return {?} */ AbstractDataLangSelector.prototype.setBeforeLangClickEvent = /** * @param {?} event * @return {?} */ function (event) { this.beforeLangClickEvent = event; }; /** * @return {?} */ AbstractDataLangSelector.prototype.getBeforeLangAddEvent = /** * @return {?} */ function () { return this.beforeLangAddEvent; }; /** * @param {?} event * @return {?} */ AbstractDataLangSelector.prototype.setBeforeLangAddEvent = /** * @param {?} event * @return {?} */ function (event) { this.beforeLangAddEvent = event; }; /** * @return {?} */ AbstractDataLangSelector.prototype.getBeforeLangRemoveEvent = /** * @return {?} */ function () { return this.beforeLangRemoveEvent; }; /** * @param {?} event * @return {?} */ AbstractDataLangSelector.prototype.setBeforeLangRemoveEvent = /** * @param {?} event * @return {?} */ function (event) { this.beforeLangRemoveEvent = event; }; /** * @param {?} data * @return {?} */ AbstractDataLangSelector.prototype.setData = /** * @param {?} data * @return {?} */ function (data) { _super.prototype.setData.call(this, data); this.selectedLang = null; this.refreshDataLanguageList(); this.dataObjects = []; this.dataObjects.push(data); }; /** * @return {?} */ AbstractDataLangSelector.prototype.isSelfDataDirty = /** * @return {?} */ function () { if (this.dataLangList !== null && typeof this.dataLangList !== 'undefined') { var /** @type {?} */ langFieldName = this.getLanguageFieldName(); var /** @type {?} */ objIdFieldName = this.getObjectIdFieldName(); var /** @type {?} */ newLangDirty = false; try { for (var _a = tslib_1.__values(this.dataLangList), _b = _a.next(); !_b.done; _b = _a.next()) { var dataLang = _b.value; if (dataLang === null || typeof dataLang === 'undefined') { continue; } var /** @type {?} */ lang = dataLang[langFieldName]; var /** @type {?} */ objId = dataLang[objIdFieldName]; if (lang !== null && typeof lang !== 'undefined') { if (objId === null || typeof objId === 'undefined') { newLangDirty = true; break; } } var /** @type {?} */ isDirty = this.isDataLanguageDirty(dataLang); if (isDirty) { return true; } } } catch (e_6_1) { e_6 = { error: e_6_1 }; } finally { try { if (_b && !_b.done && (_c = _a.return)) _c.call(_a); } finally { if (e_6) throw e_6.error; } } if (newLangDirty) { return true; } } return false; var e_6, _c; }; /** * * @return {?} */ AbstractDataLangSelector.prototype.getMergedLanguageList = /** * * @return {?} */ function () { return this.languageList; }; /** * @param {?} data * @return {?} */ AbstractDataLangSelector.prototype.selfSaveData = /** * @param {?} data * @return {?} */ function (data) { }; /** * @return {?} */ AbstractDataLangSelector.prototype.selfResetData = /** * @return {?} */ function () { }; /** * @param {?} controller * @return {?} */ AbstractDataLangSelector.prototype.setController = /** * @param {?} controller * @return {?} */ function (controller) { this.controller = controller; }; /** * @param {?} langCode * @return {?} */ AbstractDataLangSelector.prototype.isNew = /** * @param {?} langCode * @return {?} */ function (langCode) { if (langCode !== null && typeof langCode !== 'undefined') { var /** @type {?} */ oldLangContsins = (this.oldLangs.indexOf(langCode) >= 0) ? true : false; var /** @type {?} */ markLangContsins = (this.markCreatedLangs.indexOf(langCode) >= 0) ? true : false; return !oldLangContsins && !markLangContsins; } else { // DefaultData var /** @type {?} */ defaultData = this.getDefaultData(); if (defaultData !== null && typeof defaultData !== 'undefined') { var /** @type {?} */ uuid = defaultData._uuid; if (uuid === null || typeof uuid === 'undefined') { return true; } } else { return true; } } return false; }; /** * @param {?} langCode * @return {?} */ AbstractDataLangSelector.prototype.markLangAsCreated = /** * @param {?} langCode * @return {?} */ function (langCode) { if (langCode === null || typeof langCode === 'undefined') { // DefaultData } var /** @type {?} */ index = this.markCreatedLangs.indexOf(langCode); if (index < 0) { this.markCreatedLangs.push(langCode); } }; /** * @param {?} langCode * @return {?} */ AbstractDataLangSelector.prototype.unmarkLangAsCreated = /** * @param {?} langCode * @return {?} */ function (langCode) { if (langCode === null || typeof langCode === 'undefined') { // DefaultData } var /** @type {?} */ index = this.markCreatedLangs.indexOf(langCode); if (index >= 0) { this.markCreatedLangs.splice(index, 1); } }; /** * @return {?} */ AbstractDataLangSelector.prototype.doPreload = /** * @return {?} */ function () { return Promise.resolve(null); }; /** * @return {?} */ AbstractDataLangSelector.prototype.doLoaded = /** * @return {?} */ function () { }; /** * @return {?} any as one object. */ AbstractDataLangSelector.prototype.getDefaultData = /** * @return {?} any as one object. */ function () { return this.getMappedData(); }; /** * @return {?} */ AbstractDataLangSelector.prototype.getDataObjects = /** * @return {?} */ function () { return this.dataObjects; }; tslib_1.__decorate([ Option('langClick'), tslib_1.__metadata("design:type", EventEmitter) ], AbstractDataLangSelector.prototype, "langClickEvent", void 0); tslib_1.__decorate([ Option('langAdd'), tslib_1.__metadata("design:type", EventEmitter) ], AbstractDataLangSelector.prototype, "langAddEvent", void 0); tslib_1.__decorate([ Option('langRemove'), tslib_1.__metadata("design:type", EventEmitter) ], AbstractDataLangSelector.prototype, "langRemoveEvent", void 0); tslib_1.__decorate([ Option('beforeLangClick'), tslib_1.__metadata("design:type", EventEmitter) ], AbstractDataLangSelector.prototype, "beforeLangClickEvent", void 0); tslib_1.__decorate([ Option('beforeLangAdd'), tslib_1.__metadata("design:type", EventEmitter) ], AbstractDataLangSelector.prototype, "beforeLangAddEvent", void 0); tslib_1.__decorate([ Option('beforeLangRemove'), tslib_1.__metadata("design:type", EventEmitter) ], AbstractDataLangSelector.prototype, "beforeLangRemoveEvent", void 0); return AbstractDataLangSelector; }(AbstractDataView)); export { AbstractDataLangSelector }; function AbstractDataLangSelector_tsickle_Closure_declarations() { /** @type {?} */ AbstractDataLangSelector.prototype.oldLangs; /** @type {?} */ AbstractDataLangSelector.prototype.markCreatedLangs; /** @type {?} */ AbstractDataLangSelector.prototype.defaultData; /** @type {?} */ AbstractDataLangSelector.prototype.langClickEvent; /** @type {?} */ AbstractDataLangSelector.prototype.langAddEvent; /** @type {?} */ AbstractDataLangSelector.prototype.langRemoveEvent; /** @type {?} */ AbstractDataLangSelector.prototype.beforeLangClickEvent; /** @type {?} */ AbstractDataLangSelector.prototype.beforeLangAddEvent; /** @type {?} */ AbstractDataLangSelector.prototype.beforeLangRemoveEvent; /** @type {?} */ AbstractDataLangSelector.prototype.dialogService; /** @type {?} */ AbstractDataLangSelector.prototype.languageList; /** @type {?} */ AbstractDataLangSelector.prototype.selectedLang; /** @type {?} */ AbstractDataLangSelector.prototype.dataLangList; /** @type {?} */ AbstractDataLangSelector.prototype.controller; /** @type {?} */ AbstractDataLangSelector.prototype.dataObjects; /** * @abstract * @return {?} */ AbstractDataLangSelector.prototype.getLanguageFieldName = function () { }; /** * @abstract * @return {?} */ AbstractDataLangSelector.prototype.getObjectIdFieldName = function () { }; /** * @abstract * @param {?} data as a dataLanguage * @return {?} boolean is dataLanguageDirty */ AbstractDataLangSelector.prototype.isDataLanguageDirty = function (data) { }; /** * @abstract * @param {?} langCode * @return {?} */ AbstractDataLangSelector.prototype.parseLanguageButtonModel = function (langCode) { }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3REYXRhTGFuZ1NlbGVjdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vY29tLnBobG94dWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50L2RhdGF2aWV3L0Fic3RyYWN0RGF0YUxhbmdTZWxlY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBNEIsWUFBWSxFQUFzQixNQUFNLGVBQWUsQ0FBQztBQUUzRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUt0RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFELE9BQU8sRUFDTCxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQ25ELHFCQUFxQixFQUFFLHdCQUF3QixFQUFFLHVCQUF1QixFQUN6RSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7O0lBV2tCLG9EQUFnQjtJQTBCckUsa0NBQVksVUFBc0IsRUFBRSxhQUE0QjtRQUFoRSxZQUNFLGtCQUFNLFVBQVUsQ0FBQyxTQWVsQjtRQWRDLEtBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN6QyxLQUFJLENBQUMsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkMsS0FBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzFDLEtBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQy9DLEtBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzdDLEtBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2hELEtBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLEtBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLEtB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