air-lib
Version:
This is Air's angular component library
188 lines • 18 kB
JavaScript
/**
* @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==