@neocomplexx/ngx-neo-completer
Version:
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.0.5.
56 lines • 7.18 kB
JavaScript
import { EventEmitter } from '@angular/core';
import { map, catchError } from 'rxjs/operators';
import { CompleterBaseData } from './completer-base-data';
export class RemoteData extends CompleterBaseData {
constructor(http) {
super();
this.http = http;
this.dataSourceChange = new EventEmitter();
this._urlFormater = null;
this._dataField = null;
}
remoteUrl(remoteUrl) {
this._remoteUrl = remoteUrl;
this.dataSourceChange.emit();
return this;
}
urlFormater(urlFormater) {
this._urlFormater = urlFormater;
}
dataField(dataField) {
this._dataField = dataField;
}
requestOptions(requestOptions) {
this._requestOptions = requestOptions;
}
search(term) {
this.cancel();
// let params = {};
let url = '';
if (this._urlFormater) {
url = this._urlFormater(term);
}
else {
url = this._remoteUrl + encodeURIComponent(term);
}
this.remoteSearch = this.http
.get(url, Object.assign({}, this._requestOptions))
.pipe(map((data) => {
const matches = this.extractValue(data, this._dataField);
return this.extractMatches(matches, term);
}), catchError(() => []))
.subscribe((matches) => {
const results = this.processResults(matches);
this.next(results);
});
}
cancel() {
if (this.remoteSearch) {
this.remoteSearch.unsubscribe();
}
}
convertToItem(data) {
return super.convertToItem(data);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWRhdGEuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbmVvY29tcGxleHgvbmd4LW5lby1jb21wbGV0ZXIvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvcmVtb3RlLWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc3QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRzFELE1BQU0sT0FBTyxVQUFXLFNBQVEsaUJBQWlCO0lBUzdDLFlBQW9CLElBQWdCO1FBQ2hDLEtBQUssRUFBRSxDQUFDO1FBRFEsU0FBSSxHQUFKLElBQUksQ0FBWTtRQVI3QixxQkFBZ0IsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUkvRCxpQkFBWSxHQUFzQyxJQUFJLENBQUM7UUFDdkQsZUFBVSxHQUFrQixJQUFJLENBQUM7SUFLekMsQ0FBQztJQUVNLFNBQVMsQ0FBQyxTQUF3QjtRQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM1QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFN0IsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLFdBQVcsQ0FBQyxXQUFxQztRQUNwRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNwQyxDQUFDO0lBRU0sU0FBUyxDQUFDLFNBQWlCO1FBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO0lBQ2hDLENBQUM7SUFFTSxjQUFjLENBQUMsY0FBbUI7UUFDckMsSUFBSSxDQUFDLGVBQWUsR0FBRyxjQUFjLENBQUM7SUFDMUMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFZO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNkLG1CQUFtQjtRQUNuQixJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDYixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakM7YUFBTTtZQUNILEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3BEO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSTthQUN4QixHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQzthQUNqRCxJQUFJLENBQ0QsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDZCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDekQsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQ3ZCO2FBQ0EsU0FBUyxDQUFDLENBQUMsT0FBYyxFQUFFLEVBQUU7WUFDMUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVNLE1BQU07UUFDVCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNuQztJQUNMLENBQUM7SUFFTSxhQUFhLENBQUMsSUFBUztRQUMxQixPQUFPLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb21wbGV0ZXJCYXNlRGF0YSB9IGZyb20gJy4vY29tcGxldGVyLWJhc2UtZGF0YSc7XG5pbXBvcnQgeyBDb21wbGV0ZXJJdGVtIH0gZnJvbSAnLi4vY29tcG9uZW50cy9jb21wbGV0ZXItaXRlbSc7XG5cbmV4cG9ydCBjbGFzcyBSZW1vdGVEYXRhIGV4dGVuZHMgQ29tcGxldGVyQmFzZURhdGEge1xuICAgIHB1YmxpYyBkYXRhU291cmNlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBwcml2YXRlIF9yZW1vdGVVcmw6IHN0cmluZyB8IG51bGw7XG4gICAgcHJpdmF0ZSByZW1vdGVTZWFyY2g6IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIF91cmxGb3JtYXRlcjogKCh0ZXJtOiBzdHJpbmcpID0+IHN0cmluZykgfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIF9kYXRhRmllbGQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgX3JlcXVlc3RPcHRpb25zOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3RlVXJsKHJlbW90ZVVybDogc3RyaW5nIHwgbnVsbCkge1xuICAgICAgICB0aGlzLl9yZW1vdGVVcmwgPSByZW1vdGVVcmw7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZUNoYW5nZS5lbWl0KCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHVybEZvcm1hdGVyKHVybEZvcm1hdGVyOiAodGVybTogc3RyaW5nKSA9PiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdXJsRm9ybWF0ZXIgPSB1cmxGb3JtYXRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGF0YUZpZWxkKGRhdGFGaWVsZDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2RhdGFGaWVsZCA9IGRhdGFGaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVxdWVzdE9wdGlvbnMocmVxdWVzdE9wdGlvbnM6IGFueSkge1xuICAgICAgICB0aGlzLl9yZXF1ZXN0T3B0aW9ucyA9IHJlcXVlc3RPcHRpb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWFyY2godGVybTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2FuY2VsKCk7XG4gICAgICAgIC8vIGxldCBwYXJhbXMgPSB7fTtcbiAgICAgICAgbGV0IHVybCA9ICcnO1xuICAgICAgICBpZiAodGhpcy5fdXJsRm9ybWF0ZXIpIHtcbiAgICAgICAgICAgIHVybCA9IHRoaXMuX3VybEZvcm1hdGVyKHRlcm0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdXJsID0gdGhpcy5fcmVtb3RlVXJsICsgZW5jb2RlVVJJQ29tcG9uZW50KHRlcm0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZW1vdGVTZWFyY2ggPSB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQodXJsLCBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9yZXF1ZXN0T3B0aW9ucykpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGVzID0gdGhpcy5leHRyYWN0VmFsdWUoZGF0YSwgdGhpcy5fZGF0YUZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXh0cmFjdE1hdGNoZXMobWF0Y2hlcywgdGVybSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBbXSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKG1hdGNoZXM6IGFueVtdKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0cyA9IHRoaXMucHJvY2Vzc1Jlc3VsdHMobWF0Y2hlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5uZXh0KHJlc3VsdHMpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNhbmNlbCgpIHtcbiAgICAgICAgaWYgKHRoaXMucmVtb3RlU2VhcmNoKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW90ZVNlYXJjaC51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNvbnZlcnRUb0l0ZW0oZGF0YTogYW55KTogQ29tcGxldGVySXRlbSB8IG51bGwge1xuICAgICAgICByZXR1cm4gc3VwZXIuY29udmVydFRvSXRlbShkYXRhKTtcbiAgICB9XG59XG4iXX0=