Browse Source

Bugfix for filtering UI (#480)

pull/481/head
Sebastian Stehle 6 years ago
committed by GitHub
parent
commit
0144baca3e
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      frontend/app/shared/components/search/queries/filter-logical.component.html
  2. 4
      frontend/app/shared/components/search/queries/filter-logical.component.ts
  3. 6
      frontend/app/shared/components/search/queries/query.component.html
  4. 30
      frontend/app/shared/components/search/queries/query.component.ts
  5. 6
      frontend/app/shared/components/search/search-form.component.html

4
frontend/app/shared/components/search/queries/filter-logical.component.html

@ -22,11 +22,11 @@
<div class="filters"> <div class="filters">
<span class="filter-line-v"></span> <span class="filter-line-v"></span>
<div class="filter mt-3" *ngFor="let filter of filters"> <div class="filter mt-3" *ngFor="let filter of filters; let i = index">
<span class="filter-line-h"></span> <span class="filter-line-h"></span>
<sqx-filter-node [filter]="filter" [language]="language" [level]="nestedLevel" [model]="model" <sqx-filter-node [filter]="filter" [language]="language" [level]="nestedLevel" [model]="model"
(remove)="removeFilter(filter)" (change)="emitChange()"> (remove)="removeFilter(i)" (change)="emitChange()">
</sqx-filter-node> </sqx-filter-node>
</div> </div>

4
frontend/app/shared/components/search/queries/filter-logical.component.ts

@ -80,8 +80,8 @@ export class FilterLogicalComponent {
this.emitChange(); this.emitChange();
} }
public removeFilter(node: FilterNode) { public removeFilter(index: number) {
this.filters.splice(this.filters.indexOf(node), 1); this.filters.splice(index, 1);
this.emitChange(); this.emitChange();
} }

6
frontend/app/shared/components/search/queries/query.component.html

@ -1,12 +1,12 @@
<sqx-filter-logical isRoot="true" [filter]="queryValue.filter" [model]="model" [language]="language" <sqx-filter-logical isRoot="true" [filter]="queryValue.filter" [model]="model" [language]="language"
(change)="queryChange.emit()"> (change)="emitQueryChange()">
</sqx-filter-logical> </sqx-filter-logical>
<h4 class="mt-4">Sorting</h4> <h4 class="mt-4">Sorting</h4>
<div class="mb-2" *ngFor="let sorting of queryValue.sort"> <div class="mb-2" *ngFor="let sorting of queryValue.sort; let i = index">
<sqx-sorting [sorting]="sorting" [model]="model" <sqx-sorting [sorting]="sorting" [model]="model"
(remove)="removeSorting(sorting)" (change)="queryChange.emit()"> (remove)="removeSorting(i)" (change)="emitQueryChange()">
</sqx-sorting> </sqx-sorting>
</div> </div>

30
frontend/app/shared/components/search/queries/query.component.ts

@ -10,9 +10,7 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from
import { import {
LanguageDto, LanguageDto,
Query, Query,
QueryModel, QueryModel
QuerySorting,
Types
} from '@app/shared/internal'; } from '@app/shared/internal';
@Component({ @Component({
@ -33,19 +31,37 @@ export class QueryComponent {
@Input() @Input()
public set query(query: Query) { public set query(query: Query) {
this.queryValue = Types.clone(query); if (!query) {
query = {};
}
if (!query.filter) {
query.filter = { and: [] };
}
if (!query.sort) {
query.sort = [];
}
this.queryValue = query;
} }
public queryValue: Query = {}; public queryValue: Query = {};
public addSorting() { public addSorting() {
this.queryValue.sort!.push({ path: Object.keys(this.model.fields)[0], order: 'ascending' }); const path = Object.keys(this.model.fields)[0];
if (this.queryValue.sort) {
this.queryValue.sort.push({ path, order: 'ascending' });
}
this.emitQueryChange(); this.emitQueryChange();
} }
public removeSorting(sorting: QuerySorting) { public removeSorting(index: number) {
this.queryValue.sort!.splice(this.queryValue.sort!.indexOf(sorting), 1); if (this.queryValue.sort) {
this.queryValue.sort.splice(index, 1);
}
this.emitQueryChange(); this.emitQueryChange();
} }

6
frontend/app/shared/components/search/search-form.component.html

@ -62,9 +62,9 @@
</ng-container> </ng-container>
<ng-container footer> <ng-container footer>
<button type="button" class="float-right btn btn-primary" (click)="search(true)"> <button type="button" class="float-right btn btn-primary" (click)="search(true)">
Submit Submit
</button> </button>
</ng-container> </ng-container>
</sqx-modal-dialog> </sqx-modal-dialog>
</ng-container> </ng-container>

Loading…
Cancel
Save