48 lines
1.4 KiB
TypeScript
48 lines
1.4 KiB
TypeScript
import {Component} from '@angular/core';
|
|
import {Subscription} from "rxjs";
|
|
import {ListsService, ObjectsService} from "@app/_services";
|
|
|
|
@Component({
|
|
selector: 'search-sections',
|
|
templateUrl: 'search-sections.component.html',
|
|
styleUrls: ['search-sections.component.scss']
|
|
})
|
|
export class SearchSectionsComponent {
|
|
controlsSubscription?: Subscription;
|
|
resultsSubscription?: Subscription;
|
|
|
|
public items: any;
|
|
|
|
constructor(private objectsService: ObjectsService, private listsService: ListsService) {
|
|
}
|
|
|
|
get listId() {
|
|
return 'sections-list';
|
|
}
|
|
|
|
ngOnInit() {
|
|
this.listsService.addFilters({types: ['page-section-header', 'page-section-html']}, this.listId);
|
|
this.controlsSubscription = this.listsService.controls(this.listId).subscribe(controls => {
|
|
this.fetch(controls);
|
|
});
|
|
this.resultsSubscription = this.listsService.result(this.listId).subscribe(val => {
|
|
this.items = val?.data || [];
|
|
});
|
|
}
|
|
|
|
ngOnDestroy() {
|
|
this.controlsSubscription?.unsubscribe();
|
|
this.resultsSubscription?.unsubscribe();
|
|
}
|
|
|
|
|
|
|
|
fetch(controls) {
|
|
let include = ['groups.fields.value', 'pages'];
|
|
let params = {page: controls.page || 0, filters: JSON.stringify(controls.filters), include: include.join(',')};
|
|
this.objectsService.listObjects(params).subscribe(result => {
|
|
this.listsService.result(this.listId).next(result);
|
|
});
|
|
}
|
|
}
|