UNPKG

air-lib

Version:

This is Air's angular component library

188 lines 18 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { SimpleNgSelectItem } from '../../entities/simple-ng-select-Item'; export class BaseSearchComponent { /** * @param {?} translator * @param {?} httpService */ constructor(translator, httpService) { this.translator = translator; this.httpService = httpService; this.hasError = false; this.urlGetStateByName = 'api/State/GetStateByName?name='; this.urlSetState = 'api/State/SetState/'; this.typePreset = 'preset'; this.typeString = 'string'; this.hasLoading = false; } /** * @return {?} */ buildDefaultOrStateSearchItem() { return tslib_1.__awaiter(this, void 0, void 0, function* () { return this.getState().then((data) => { /** @type {?} */ let defaultOrStateItem = new SimpleNgSelectItem(); /** @type {?} */ let dataString = ''; dataString = (data != '') ? JSON.parse(data) : ''; if (dataString) { defaultOrStateItem.id = dataString.search[0].searchString; (dataString.search[0].typeSearch == this.typePreset) ? this.translator.translate(this.searchSettings.prefixForTranslate + defaultOrStateItem.id).subscribe((result) => { defaultOrStateItem.text = result; }) : defaultOrStateItem.text = defaultOrStateItem.id; } else { defaultOrStateItem = this.searchSettings.defaultSearchValue; } return defaultOrStateItem; }); }); } /** * @return {?} */ buildDefaultSearchItem() { return tslib_1.__awaiter(this, void 0, void 0, function* () { /** @type {?} */ let defaultItem; return this.saveToState(this.searchSettings.defaultSearchValue.id, this.typePreset).then((data) => { return defaultItem = this.searchSettings.defaultSearchValue.id; }); }); } /** * @return {?} */ buildPresetsList() { this.hasError = false; /** @type {?} */ let presetList = Array(); if (this.searchSettings) { presetList = this.searchSettings.presetList.map((row) => { return { id: row.id, text: row.text }; }); } return presetList; } /** * @param {?} response * @return {?} */ buildAutoCompleteList(response) { this.hasError = false; this.hasLoading = false; /** @type {?} */ let responseData = response; /** @type {?} */ const list = new Array(); if (this.searchSettings.callBack) { responseData = this.searchSettings.callBack(response); } responseData.data.forEach((item, index) => { list.push({ id: 'noclick', text: '<div class="category">' + item.category + '</div>' }); this.translator.translate(this.searchSettings.prefixForTranslate + item.category).subscribe((result) => { list[index].text = '<div class="category">' + result + '</div>'; }); item.data.forEach((res) => { list.push({ id: res.id, text: '<div class="p-l-10">' + res.text + '</div>' }); }); return list; }); /** @type {?} */ const autoCompleteList = list.map((row) => { return { id: row.id, text: row.text }; }); return autoCompleteList; } /** * @return {?} */ buildEmptyList() { this.hasError = true; this.hasLoading = false; /** @type {?} */ const emptyList = [ { id: 'noclick', text: 'nothingFound' } ]; this.translator.translate(emptyList[0].text).subscribe((result) => { emptyList[0].text = result; }); return emptyList; } /** * @return {?} */ getState() { return this.httpService.httpGet(this.urlGetStateByName + this.searchSettings.stateName).toPromise() .then((res) => res); } /** * @param {?} item * @param {?} type * @return {?} */ saveToState(item, type) { /** @type {?} */ const dto = { search: [{ searchString: item, typeSearch: type }], }; /** @type {?} */ const dtoString = JSON.stringify(dto); return this.httpService.httpPut(this.urlSetState + this.searchSettings.stateName, dtoString).toPromise() .then((res) => res); } } if (false) { /** @type {?} */ BaseSearchComponent.prototype.hasError; /** * @type {?} * @private */ BaseSearchComponent.prototype.urlGetStateByName; /** * @type {?} * @private */ BaseSearchComponent.prototype.urlSetState; /** @type {?} */ BaseSearchComponent.prototype.searchSettings; /** @type {?} */ BaseSearchComponent.prototype.typePreset; /** @type {?} */ BaseSearchComponent.prototype.typeString; /** @type {?} */ BaseSearchComponent.prototype.hasLoading; /** * @type {?} * @protected */ BaseSearchComponent.prototype.translator; /** * @type {?} * @protected */ BaseSearchComponent.prototype.httpService; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vYWlyLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3NlYXJjaC9iYXNlLXNlYXJjaC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFHQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUcxRSxNQUFNOzs7OztJQVFGLFlBQ2MsVUFBOEIsRUFDOUIsV0FBd0I7UUFEeEIsZUFBVSxHQUFWLFVBQVUsQ0FBb0I7UUFDOUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFUL0IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNoQixzQkFBaUIsR0FBRyxnQ0FBZ0MsQ0FBQztRQUNyRCxnQkFBVyxHQUFHLHFCQUFxQixDQUFDO1FBRXJDLGVBQVUsR0FBRyxRQUFRLENBQUM7UUFDdEIsZUFBVSxHQUFHLFFBQVEsQ0FBQztRQUN0QixlQUFVLEdBQUcsS0FBSyxDQUFDO0lBSzFCLENBQUM7Ozs7SUFFWSw2QkFBNkI7O1lBQ3RDLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFOztvQkFDbEMsa0JBQWtCLEdBQUcsSUFBSSxrQkFBa0IsRUFBRTs7b0JBQzdDLFVBQVUsR0FBUSxFQUFFO2dCQUN4QixVQUFVLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDbEQsSUFBSSxVQUFVLEVBQUU7b0JBRVosa0JBQWtCLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO29CQUMxRCxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFV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QVksRUFBRSxJQUFJO29CQUNsQixVQUFVLEVBQUUsSUFBSTtpQkFDbkIsQ0FBQztTQUNMOztjQUNLLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztRQUNyQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFO2FBQ25HLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQztDQUNKOzs7SUFuSEcsdUNBQXdCOzs7OztJQUN4QixnREFBNkQ7Ozs7O0lBQzdELDBDQUE0Qzs7SUFDNUMsNkNBQXVDOztJQUN2Qyx5Q0FBNkI7O0lBQzdCLHlDQUE2Qjs7SUFDN0IseUNBQTBCOzs7OztJQUV0Qix5Q0FBd0M7Ozs7O0lBQ3hDLDBDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElTaW1wbGVOZ1NlbGVjdEl0ZW0gfSBmcm9tICcuLy4uL25nMi1zZWxlY3QtY3VzdG9tL3NlbGVjdC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBJU2VhcmNoU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2lzZWFyY2gtc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2h0dHAuc2VydmljZSc7XHJcbmltcG9ydCB7IFNpbXBsZU5nU2VsZWN0SXRlbSB9IGZyb20gJy4uLy4uL2VudGl0aWVzL3NpbXBsZS1uZy1zZWxlY3QtSXRlbSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEJhc2VTZWFyY2hDb21wb25lbnQge1xyXG4gICAgcHVibGljIGhhc0Vycm9yID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIHVybEdldFN0YXRlQnlOYW1lID0gJ2FwaS9TdGF0ZS9HZXRTdGF0ZUJ5TmFtZT9uYW1lPSc7XHJcbiAgICBwcml2YXRlIHVybFNldFN0YXRlID0gJ2FwaS9TdGF0ZS9TZXRTdGF0ZS8nO1xyXG4gICAgcHVibGljIHNlYXJjaFNldHRpbmdzOiBJU2VhcmNoU2V0dGluZ3M7XHJcbiAgICBwdWJsaWMgdHlwZVByZXNldCA9ICdwcmVzZXQnO1xyXG4gICAgcHVibGljIHR5cGVTdHJpbmcgPSAnc3RyaW5nJztcclxuICAgIHB1YmxpYyBoYXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgdHJhbnNsYXRvcjogVHJhbnNsYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBodHRwU2VydmljZTogSHR0cFNlcnZpY2VcclxuICAgICkge1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBidWlsZERlZmF1bHRPclN0YXRlU2VhcmNoSXRlbSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRTdGF0ZSgpLnRoZW4oKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZGVmYXVsdE9yU3RhdGVJdGVtID0gbmV3IFNpbXBsZU5nU2VsZWN0SXRlbSgpO1xyXG4gICAgICAgICAgICBsZXQgZGF0YVN0cmluZzogYW55ID0gJyc7XHJcbiAgICAgICAgICAgIGRhdGFTdHJpbmcgPSAoZGF0YSAhPSAnJykgPyBKU09OLnBhcnNlKGRhdGEpIDogJyc7XHJcbiAgICAgICAgICAgIGlmIChkYXRhU3RyaW5nKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdE9yU3RhdGVJdGVtLmlkID0gZGF0YVN0cmluZy5zZWFyY2hbMF0uc2VhcmNoU3RyaW5nO1xyXG4gICAgICAgICAgICAgICAgKGRhdGFTdHJpbmcuc2VhcmNoWzBdLnR5cGVTZWFyY2ggPT0gdGhpcy50eXBlUHJlc2V0KVxyXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy50cmFuc2xhdG9yLnRyYW5zbGF0ZSh0aGlzLnNlYXJjaFNldHRpbmdzLnByZWZpeEZvclRyYW5zbGF0ZSArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRPclN0YXRlSXRlbS5pZCkuc3Vic2NyaWJlKChyZXN1bHQ6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE9yU3RhdGVJdGVtLnRleHQgPSByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0T3JTdGF0ZUl0ZW0udGV4dCA9IGRlZmF1bHRPclN0YXRlSXRlbS5pZDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHRPclN0YXRlSXRlbSA9IHRoaXMuc2VhcmNoU2V0dGluZ3MuZGVmYXVsdFNlYXJjaFZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0T3JTdGF0ZUl0ZW07XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGJ1aWxkRGVmYXVsdFNlYXJjaEl0ZW0oKSB7XHJcbiAgICAgICAgbGV0IGRlZmF1bHRJdGVtOiBzdHJpbmc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2F2ZVRvU3RhdGUodGhpcy5zZWFyY2hTZXR0aW5ncy5kZWZhdWx0U2VhcmNoVmFsdWUuaWQsIHRoaXMudHlwZVByZXNldCkudGhlbigoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0SXRlbSA9IHRoaXMuc2VhcmNoU2V0dGluZ3MuZGVmYXVsdFNlYXJjaFZhbHVlLmlkO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBidWlsZFByZXNldHNMaXN0KCkge1xyXG4gICAgICAgIHRoaXMuaGFzRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICBsZXQgcHJlc2V0TGlzdCA9IEFycmF5PElTaW1wbGVOZ1NlbGVjdEl0ZW0+KCk7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoU2V0dGluZ3MpIHtcclxuICAgICAgICAgICAgcHJlc2V0TGlzdCA9IHRoaXMuc2VhcmNoU2V0dGluZ3MucHJlc2V0TGlzdC5tYXAoKHJvdzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpZDogcm93LmlkLCB0ZXh0OiByb3cudGV4dCB9O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBwcmVzZXRMaXN0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBidWlsZEF1dG9Db21wbGV0ZUxpc3QocmVzcG9uc2U6IGFueSkge1xyXG4gICAgICAgIHRoaXMuaGFzRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmhhc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBsZXQgcmVzcG9uc2VEYXRhID0gcmVzcG9uc2U7XHJcbiAgICAgICAgY29uc3QgbGlzdCA9IG5ldyBBcnJheTxJU2ltcGxlTmdTZWxlY3RJdGVtPigpO1xyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaFNldHRpbmdzLmNhbGxCYWNrKSB7XHJcbiAgICAgICAgICAgIHJlc3BvbnNlRGF0YSA9IHRoaXMuc2VhcmNoU2V0dGluZ3MuY2FsbEJhY2socmVzcG9uc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXNwb25zZURhdGEuZGF0YS5mb3JFYWNoKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgbGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGlkOiAnbm9jbGljaycsXHJcbiAgICAgICAgICAgICAgICB0ZXh0OiAnPGRpdiBjbGFzcz1cImNhdGVnb3J5XCI+JyArIGl0ZW0uY2F0ZWdvcnkgKyAnPC9kaXY+J1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdG9yLnRyYW5zbGF0ZSh0aGlzLnNlYXJjaFNldHRpbmdzLnByZWZpeEZvclRyYW5zbGF0ZSArXHJcbiAgICAgICAgICAgICAgICBpdGVtLmNhdGVnb3J5KS5zdWJzY3JpYmUoKHJlc3VsdDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGlzdFtpbmRleF0udGV4dCA9ICc8ZGl2IGNsYXNzPVwiY2F0ZWdvcnlcIj4nICsgcmVzdWx0ICsgJzwvZGl2Pic7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaXRlbS5kYXRhLmZvckVhY2goKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIGlkOiByZXMuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogJzxkaXYgY2xhc3M9XCJwLWwtMTBcIj4nICsgcmVzLnRleHQgKyAnPC9kaXY+J1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gbGlzdDtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc3QgYXV0b0NvbXBsZXRlTGlzdCA9IGxpc3QubWFwKChyb3c6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4geyBpZDogcm93LmlkLCB0ZXh0OiByb3cudGV4dCB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBhdXRvQ29tcGxldGVMaXN0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBidWlsZEVtcHR5TGlzdCgpIHtcclxuICAgICAgICB0aGlzLmhhc0Vycm9yID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmhhc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBjb25zdCBlbXB0eUxpc3QgPSBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlkOiAnbm9jbGljaycsXHJcbiAgICAgICAgICAgICAgICB0ZXh0OiAnbm90aGluZ0ZvdW5kJ1xyXG4gICAgICAgICAgICB9XTtcclxuICAgICAgICB0aGlzLnRyYW5zbGF0b3IudHJhbnNsYXRlKGVtcHR5TGlzdFswXS50ZXh0KS5zdWJzY3JpYmUoKHJlc3VsdDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIGVtcHR5TGlzdFswXS50ZXh0ID0gcmVzdWx0O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBlbXB0eUxpc3Q7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFN0YXRlKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLmh0dHBHZXQodGhpcy51cmxHZXRTdGF0ZUJ5TmFtZSArIHRoaXMuc2VhcmNoU2V0dGluZ3Muc3RhdGVOYW1lKS50b1Byb21pc2UoKVxyXG4gICAgICAgICAgICAudGhlbigocmVzKSA9PiByZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzYXZlVG9TdGF0ZShpdGVtOiBzdHJpbmcsIHR5cGU6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IGR0bzogYW55ID0ge1xyXG4gICAgICAgICAgICBzZWFyY2g6IFt7XHJcbiAgICAgICAgICAgICAgICBzZWFyY2hTdHJpbmc6IGl0ZW0sXHJcbiAgICAgICAgICAgICAgICB0eXBlU2VhcmNoOiB0eXBlXHJcbiAgICAgICAgICAgIH1dLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgZHRvU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoZHRvKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5odHRwUHV0KHRoaXMudXJsU2V0U3RhdGUgKyB0aGlzLnNlYXJjaFNldHRpbmdzLnN0YXRlTmFtZSwgZHRvU3RyaW5nKS50b1Byb21pc2UoKVxyXG4gICAgICAgICAgICAudGhlbigocmVzKSA9PiByZXMpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==