/* * Squidex Headless CMS * * @license * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. */ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core'; import { LanguageDto, Query, QueryModel, QuerySorting } from '@app/shared/internal'; @Component({ selector: 'sqx-query', template: `

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); } }