import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
import {
LanguageDto,
Query,
QueryModel,
QuerySorting
} from '@app/shared/internal';
@Component({
selector: 'sqx-query',
template: `
Filter
Sorting
`,
changeDetection: ChangeDetectionStrategy.OnPush
})
export class QueryComponent {
@Output()
public queryChange = new EventEmitter();
@Input()
public language: LanguageDto;
@Input()
public model: QueryModel;
@Input()
public set query(query: Query) {
if (!query) {
query = {};
}
if (query) {
if (!query.filter) {
query.filter = {
and: []
};
}
if (!query.sort) {
query.sort = [];
}
this.queryValue = query;
}
}
public queryValue: Query;
constructor() {
this.query = {};
}
public addSorting() {
this.queryValue.sort!.push({ path: Object.keys(this.model.fields)[0], order: 'ascending' });
this.emitQueryChange();
}
public removeSorting(sorting: QuerySorting) {
this.queryValue.sort!.splice(this.queryValue.sort!.indexOf(sorting), 1);
this.emitQueryChange();
}
public emitQueryChange() {
this.queryChange.emit(this.queryValue);
}
}