From 835e6549a8f3b91eba9f699d540b60c684abef2a Mon Sep 17 00:00:00 2001 From: Sebastian Stehle Date: Tue, 8 Oct 2019 17:40:19 +0200 Subject: [PATCH] Fix for localized reference fields in query editor. --- .../pages/contents/contents-page.component.html | 3 ++- .../content/pages/contents/contents-page.component.ts | 2 ++ .../angular/forms/confirm-click.directive.ts | 3 ++- .../app/framework/angular/stateful.component.ts | 3 ++- .../queries/filter-comparison.component.html | 3 ++- .../components/queries/filter-comparison.component.ts | 8 ++++++-- .../components/queries/filter-logical.component.html | 2 +- .../components/queries/filter-logical.component.ts | 11 ++++++++++- .../components/queries/filter-node.component.ts | 8 ++++++-- .../app/shared/components/queries/query.component.ts | 6 +++++- .../components/references-dropdown.component.ts | 4 ++-- .../app/shared/components/search-form.component.html | 3 ++- .../app/shared/components/search-form.component.ts | 4 ++++ 13 files changed, 46 insertions(+), 14 deletions(-) diff --git a/src/Squidex/app/features/content/pages/contents/contents-page.component.html b/src/Squidex/app/features/content/pages/contents/contents-page.component.html index 97fb041ec..fb881a063 100644 --- a/src/Squidex/app/features/content/pages/contents/contents-page.component.html +++ b/src/Squidex/app/features/content/pages/contents/contents-page.component.html @@ -19,7 +19,8 @@ [query]="contentsState.contentsQuery | async" [queries]="queries" [queryModel]="queryModel" - (queryChange)="search($event)" + (queryChange)="search($event)" + [language]="languageMaster" enableShortcut="true"> diff --git a/src/Squidex/app/features/content/pages/contents/contents-page.component.ts b/src/Squidex/app/features/content/pages/contents/contents-page.component.ts index 2e4abf85e..37e2e81fe 100644 --- a/src/Squidex/app/features/content/pages/contents/contents-page.component.ts +++ b/src/Squidex/app/features/content/pages/contents/contents-page.component.ts @@ -44,6 +44,7 @@ export class ContentsPageComponent extends ResourceOwner implements OnInit { public nextStatuses: ReadonlyArray = []; public language: AppLanguageDto; + public languageMaster: AppLanguageDto; public languages: ReadonlyArray; public queryModel: QueryModel; @@ -96,6 +97,7 @@ export class ContentsPageComponent extends ResourceOwner implements OnInit { .subscribe(languages => { this.languages = languages.map(x => x.language); this.language = this.languages[0]; + this.languageMaster = this.languages.find(x => x.isMaster)!; this.updateModel(); })); diff --git a/src/Squidex/app/framework/angular/forms/confirm-click.directive.ts b/src/Squidex/app/framework/angular/forms/confirm-click.directive.ts index 36e153d1a..2cb836e0a 100644 --- a/src/Squidex/app/framework/angular/forms/confirm-click.directive.ts +++ b/src/Squidex/app/framework/angular/forms/confirm-click.directive.ts @@ -5,12 +5,13 @@ * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. */ +// tslint:disable: readonly-array + import { Directive, EventEmitter, HostListener, Input, OnDestroy, Output } from '@angular/core'; import { DialogService } from '@app/framework/internal'; class DelayEventEmitter extends EventEmitter { - // tslint:disable-next-line: readonly-array private delayedNexts: any[] | null = []; public delayEmit() { diff --git a/src/Squidex/app/framework/angular/stateful.component.ts b/src/Squidex/app/framework/angular/stateful.component.ts index c61b8c233..027bced43 100644 --- a/src/Squidex/app/framework/angular/stateful.component.ts +++ b/src/Squidex/app/framework/angular/stateful.component.ts @@ -5,6 +5,8 @@ * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. */ +// tslint:disable: readonly-array + import { ChangeDetectorRef, OnDestroy } from '@angular/core'; import { ControlValueAccessor } from '@angular/forms'; import { Observable, Subscription } from 'rxjs'; @@ -17,7 +19,6 @@ import { State } from './../state'; declare type UnsubscribeFunction = () => void; export class ResourceOwner implements OnDestroy { - // tslint:disable-next-line: readonly-array private subscriptions: (Subscription | UnsubscribeFunction)[] = []; public own(subscription: Subscription | UnsubscribeFunction | Observable) { diff --git a/src/Squidex/app/shared/components/queries/filter-comparison.component.html b/src/Squidex/app/shared/components/queries/filter-comparison.component.html index 33c65524b..163587209 100644 --- a/src/Squidex/app/shared/components/queries/filter-comparison.component.html +++ b/src/Squidex/app/shared/components/queries/filter-comparison.component.html @@ -37,7 +37,8 @@ + (ngModelChange)="changeValue($event)" + [language]="language"> diff --git a/src/Squidex/app/shared/components/queries/filter-comparison.component.ts b/src/Squidex/app/shared/components/queries/filter-comparison.component.ts index 0a253942f..b30cf1707 100644 --- a/src/Squidex/app/shared/components/queries/filter-comparison.component.ts +++ b/src/Squidex/app/shared/components/queries/filter-comparison.component.ts @@ -10,10 +10,11 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, Out import { fadeAnimation, FilterComparison, + LanguageDto, QueryFieldModel, - QueryModel + QueryModel, + StatusInfo } from '@app/shared/internal'; -import { StatusInfo } from '@app/shared/services/contents.service'; @Component({ selector: 'sqx-filter-comparison', @@ -31,6 +32,9 @@ export class FilterComparisonComponent implements OnChanges { @Output() public remove = new EventEmitter(); + @Input() + public language: LanguageDto; + @Input() public model: QueryModel; diff --git a/src/Squidex/app/shared/components/queries/filter-logical.component.html b/src/Squidex/app/shared/components/queries/filter-logical.component.html index 5f04ae50d..b2f535f16 100644 --- a/src/Squidex/app/shared/components/queries/filter-logical.component.html +++ b/src/Squidex/app/shared/components/queries/filter-logical.component.html @@ -25,7 +25,7 @@
-
diff --git a/src/Squidex/app/shared/components/queries/filter-logical.component.ts b/src/Squidex/app/shared/components/queries/filter-logical.component.ts index 327f243a3..9bbd9f3e9 100644 --- a/src/Squidex/app/shared/components/queries/filter-logical.component.ts +++ b/src/Squidex/app/shared/components/queries/filter-logical.component.ts @@ -5,12 +5,15 @@ * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. */ + // tslint:disable: readonly-array + import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core'; import { fadeAnimation, FilterLogical, FilterNode, + LanguageDto, QueryModel } from '@app/shared/internal'; @@ -32,6 +35,9 @@ export class FilterLogicalComponent { @Output() public remove = new EventEmitter(); + @Input() + public language: LanguageDto; + @Input() public level = 0; @@ -52,7 +58,10 @@ export class FilterLogicalComponent { return this.filterValue; } - // tslint:disable-next-line: readonly-array + public get nestedLevel() { + return this.level + 1; + } + public filters: FilterNode[] = []; public addComparison() { diff --git a/src/Squidex/app/shared/components/queries/filter-node.component.ts b/src/Squidex/app/shared/components/queries/filter-node.component.ts index e93e2aea8..665413138 100644 --- a/src/Squidex/app/shared/components/queries/filter-node.component.ts +++ b/src/Squidex/app/shared/components/queries/filter-node.component.ts @@ -11,6 +11,7 @@ import { FilterComparison, FilterLogical, FilterNode, + LanguageDto, QueryModel } from '@app/shared/internal'; @@ -18,13 +19,13 @@ import { selector: 'sqx-filter-node', template: ` - - `, @@ -39,6 +40,9 @@ export class FilterNodeComponent { @Output() public remove = new EventEmitter(); + @Input() + public language: LanguageDto; + @Input() public level: number; diff --git a/src/Squidex/app/shared/components/queries/query.component.ts b/src/Squidex/app/shared/components/queries/query.component.ts index dd87a00e3..7df950c8b 100644 --- a/src/Squidex/app/shared/components/queries/query.component.ts +++ b/src/Squidex/app/shared/components/queries/query.component.ts @@ -1,6 +1,7 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core'; import { + LanguageDto, Query, QueryModel, QuerySorting @@ -12,7 +13,7 @@ import {

Filter

- @@ -34,6 +35,9 @@ export class QueryComponent { @Output() public queryChange = new EventEmitter(); + @Input() + public language: LanguageDto; + @Input() public model: QueryModel; diff --git a/src/Squidex/app/shared/components/references-dropdown.component.ts b/src/Squidex/app/shared/components/references-dropdown.component.ts index 81304d6a8..9ffefeba5 100644 --- a/src/Squidex/app/shared/components/references-dropdown.component.ts +++ b/src/Squidex/app/shared/components/references-dropdown.component.ts @@ -103,7 +103,7 @@ export class ReferencesDropdownComponent extends StatefulControlComponent getContentValue(content, this.languageField, f, false)) - .map(v => v.formatted) + .map(v => v.formatted || 'No value') .filter(v => !!v) .join(', '); diff --git a/src/Squidex/app/shared/components/search-form.component.html b/src/Squidex/app/shared/components/search-form.component.html index cdd552fc6..dd4de3d41 100644 --- a/src/Squidex/app/shared/components/search-form.component.html +++ b/src/Squidex/app/shared/components/search-form.component.html @@ -55,7 +55,8 @@ + (queryChange)="changeQuery($event)" + [language]="language">