From 5255185fb9fb558697d64438b6643580f17dd91f Mon Sep 17 00:00:00 2001 From: Sebastian Stehle Date: Sat, 20 Apr 2019 22:27:22 +0200 Subject: [PATCH] Fixed some imports and sorting with table header --- .../assets/pages/assets-page.component.html | 4 +- .../assets/pages/assets-page.component.ts | 18 +- .../contents/contents-page.component.html | 16 +- .../pages/contents/contents-page.component.ts | 26 ++- .../shared/contents-selector.component.html | 16 +- .../shared/contents-selector.component.ts | 18 +- .../angular/http/caching.interceptor.ts | 2 +- .../angular/http/loading.interceptor.ts | 2 +- .../framework/angular/pager.component.html | 4 +- src/Squidex/app/framework/state.ts | 12 +- .../app/framework/utils/string-helper.spec.ts | 15 ++ .../app/framework/utils/string-helper.ts | 4 + .../components/assets-selector.component.html | 4 +- .../components/assets-selector.component.ts | 7 +- .../components/search-form.component.html | 45 ++-- .../components/search-form.component.ts | 122 ++--------- .../components/table-header.component.ts | 52 +++++ src/Squidex/app/shared/declarations.ts | 1 + src/Squidex/app/shared/internal.ts | 1 + src/Squidex/app/shared/module.ts | 7 +- .../app/shared/services/rules.service.spec.ts | 2 +- .../app/shared/state/assets.state.spec.ts | 2 +- src/Squidex/app/shared/state/assets.state.ts | 2 +- .../app/shared/state/backups.state.spec.ts | 2 +- .../app/shared/state/clients.state.spec.ts | 2 +- .../app/shared/state/comments.state.spec.ts | 2 +- .../app/shared/state/contents.state.ts | 2 +- .../shared/state/contributors.state.spec.ts | 4 +- .../app/shared/state/filter.state.spec.ts | 0 src/Squidex/app/shared/state/filter.state.ts | 204 ++++++++++++++++++ .../app/shared/state/languages.state.spec.ts | 2 +- .../app/shared/state/patterns.state.spec.ts | 2 +- .../app/shared/state/plans.state.spec.ts | 2 +- src/Squidex/app/shared/state/queries.spec.ts | 7 +- src/Squidex/app/shared/state/queries.ts | 4 +- .../app/shared/state/roles.state.spec.ts | 5 +- .../shared/state/rule-events.state.spec.ts | 10 +- .../app/shared/state/rules.state.spec.ts | 2 +- .../app/shared/state/schemas.state.spec.ts | 2 +- src/Squidex/app/shared/state/ui.state.spec.ts | 9 +- src/Squidex/app/theme/_bootstrap.scss | 4 + 41 files changed, 450 insertions(+), 197 deletions(-) create mode 100644 src/Squidex/app/shared/components/table-header.component.ts create mode 100644 src/Squidex/app/shared/state/filter.state.spec.ts create mode 100644 src/Squidex/app/shared/state/filter.state.ts diff --git a/src/Squidex/app/features/assets/pages/assets-page.component.html b/src/Squidex/app/features/assets/pages/assets-page.component.html index 79f324003..0a3f75e50 100644 --- a/src/Squidex/app/features/assets/pages/assets-page.component.html +++ b/src/Squidex/app/features/assets/pages/assets-page.component.html @@ -26,8 +26,8 @@
diff --git a/src/Squidex/app/features/assets/pages/assets-page.component.ts b/src/Squidex/app/features/assets/pages/assets-page.component.ts index 2f795ab59..5f47ad012 100644 --- a/src/Squidex/app/features/assets/pages/assets-page.component.ts +++ b/src/Squidex/app/features/assets/pages/assets-page.component.ts @@ -12,8 +12,10 @@ import { onErrorResumeNext } from 'rxjs/operators'; import { AppsState, AssetsState, + FilterState, LocalStoreService, Queries, + ResourceOwner, UIState } from '@app/shared'; @@ -22,11 +24,13 @@ import { styleUrls: ['./assets-page.component.scss'], templateUrl: './assets-page.component.html' }) -export class AssetsPageComponent implements OnInit { +export class AssetsPageComponent extends ResourceOwner implements OnInit { public assetsFilter = new FormControl(); public queries = new Queries(this.uiState, 'assets'); + public filter = new FilterState(); + public isListView: boolean; constructor( @@ -35,19 +39,27 @@ export class AssetsPageComponent implements OnInit { private readonly localStore: LocalStoreService, private readonly uiState: UIState ) { + super(); + this.isListView = this.localStore.getBoolean('squidex.assets.list-view'); } public ngOnInit() { this.assetsState.load().pipe(onErrorResumeNext()).subscribe(); + + this.own( + this.assetsState.assetsQuery + .subscribe(query => { + this.filter.setQuery(query); + })); } public reload() { this.assetsState.load(true).pipe(onErrorResumeNext()).subscribe(); } - public search(query: string) { - this.assetsState.search(query).pipe(onErrorResumeNext()).subscribe(); + public search() { + this.assetsState.search(this.filter.apiFilter).pipe(onErrorResumeNext()).subscribe(); } public selectTags(tags: string[]) { 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 01c728105..97fbd47cc 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 @@ -22,8 +22,8 @@
- {{field.displayName}} + + - Updated + + - By + Actions 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 d901cffcd..76285718d 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 @@ -13,13 +13,16 @@ import { AppsState, ContentDto, ContentsState, + FilterState, ImmutableArray, LanguagesState, ModalModel, Queries, ResourceOwner, + RootFieldDto, SchemaDetailsDto, SchemasState, + Sorting, UIState } from '@app/shared'; @@ -45,6 +48,8 @@ export class ContentsPageComponent extends ResourceOwner implements OnInit { public language: AppLanguageDto; public languages: ImmutableArray; + public filter = new FilterState(); + public isAllSelected = false; @ViewChild('dueTimeSelector') @@ -64,6 +69,9 @@ export class ContentsPageComponent extends ResourceOwner implements OnInit { this.own( this.schemasState.selectedSchema .subscribe(schema => { + this.filter = new FilterState(); + this.filter.setLanguage(this.language); + this.resetSelection(); this.schema = schema!; @@ -72,6 +80,12 @@ export class ContentsPageComponent extends ResourceOwner implements OnInit { this.contentsState.init().pipe(onErrorResumeNext()).subscribe(); })); + this.own( + this.contentsState.contentsQuery + .subscribe(query => { + this.filter.setQuery(query); + })); + this.own( this.contentsState.contents .subscribe(() => { @@ -83,6 +97,8 @@ export class ContentsPageComponent extends ResourceOwner implements OnInit { .subscribe(languages => { this.languages = languages.map(x => x.language); this.language = this.languages.at(0); + + this.filter.setLanguage(this.language); })); } @@ -160,8 +176,8 @@ export class ContentsPageComponent extends ResourceOwner implements OnInit { this.contentsState.goNext().pipe(onErrorResumeNext()).subscribe(); } - public search(query: string) { - this.contentsState.search(query).pipe(onErrorResumeNext()).subscribe(); + public search() { + this.contentsState.search(this.filter.apiFilter).pipe(onErrorResumeNext()).subscribe(); } public selectLanguage(language: AppLanguageDto) { @@ -200,6 +216,12 @@ export class ContentsPageComponent extends ResourceOwner implements OnInit { this.updateSelectionSummary(); } + public sort(field: string | RootFieldDto, sorting: Sorting) { + this.filter.setOrderField(field, sorting); + + this.search(); + } + public trackByContent(index: number, content: ContentDto): string { return content.id; } diff --git a/src/Squidex/app/features/content/shared/contents-selector.component.html b/src/Squidex/app/features/content/shared/contents-selector.component.html index 0a7cfc92e..25eba71cb 100644 --- a/src/Squidex/app/features/content/shared/contents-selector.component.html +++ b/src/Squidex/app/features/content/shared/contents-selector.component.html @@ -11,9 +11,7 @@
-
@@ -33,13 +31,19 @@ - {{field.displayName}} + + - Updated + + - By + diff --git a/src/Squidex/app/features/content/shared/contents-selector.component.ts b/src/Squidex/app/features/content/shared/contents-selector.component.ts index f753d22c5..50d40796b 100644 --- a/src/Squidex/app/features/content/shared/contents-selector.component.ts +++ b/src/Squidex/app/features/content/shared/contents-selector.component.ts @@ -10,10 +10,12 @@ import { onErrorResumeNext } from 'rxjs/operators'; import { ContentDto, + FilterState, LanguageDto, ManualContentsState, - ModalModel, - SchemaDetailsDto + RootFieldDto, + SchemaDetailsDto, + Sorting } from '@app/shared'; @Component({ @@ -37,7 +39,7 @@ export class ContentsSelectorComponent implements OnInit { @Output() public select = new EventEmitter(); - public searchModal = new ModalModel(); + public filter = new FilterState(); public selectedItems: { [id: string]: ContentDto; } = {}; public selectionCount = 0; @@ -59,8 +61,8 @@ export class ContentsSelectorComponent implements OnInit { this.contentsState.load(true).pipe(onErrorResumeNext()).subscribe(); } - public search(query: string) { - this.contentsState.search(query).pipe(onErrorResumeNext()).subscribe(); + public search() { + this.contentsState.search(this.filter.apiFilter).pipe(onErrorResumeNext()).subscribe(); } public goNext() { @@ -109,6 +111,12 @@ export class ContentsSelectorComponent implements OnInit { this.updateSelectionSummary(); } + public sort(field: string | RootFieldDto, sorting: Sorting) { + this.filter.setOrderField(field, sorting); + + this.search(); + } + private updateSelectionSummary() { this.selectionCount = Object.keys(this.selectedItems).length; diff --git a/src/Squidex/app/framework/angular/http/caching.interceptor.ts b/src/Squidex/app/framework/angular/http/caching.interceptor.ts index 6ec8a7e5e..111bc2aad 100644 --- a/src/Squidex/app/framework/angular/http/caching.interceptor.ts +++ b/src/Squidex/app/framework/angular/http/caching.interceptor.ts @@ -10,7 +10,7 @@ import { Injectable} from '@angular/core'; import { Observable, of, throwError } from 'rxjs'; import { catchError, tap } from 'rxjs/operators'; -import { Types } from './../../internal'; +import { Types } from '@app/shared/internal'; @Injectable() export class CachingInterceptor implements HttpInterceptor { diff --git a/src/Squidex/app/framework/angular/http/loading.interceptor.ts b/src/Squidex/app/framework/angular/http/loading.interceptor.ts index af6611f67..3791b465f 100644 --- a/src/Squidex/app/framework/angular/http/loading.interceptor.ts +++ b/src/Squidex/app/framework/angular/http/loading.interceptor.ts @@ -10,7 +10,7 @@ import { Injectable} from '@angular/core'; import { Observable } from 'rxjs'; import { finalize } from 'rxjs/operators'; -import { LoadingService, MathHelper } from './../../internal'; +import { LoadingService, MathHelper } from '@app/framework/internal'; @Injectable() export class LoadingInterceptor implements HttpInterceptor { diff --git a/src/Squidex/app/framework/angular/pager.component.html b/src/Squidex/app/framework/angular/pager.component.html index 36b3a6e42..cc1ffcba4 100644 --- a/src/Squidex/app/framework/angular/pager.component.html +++ b/src/Squidex/app/framework/angular/pager.component.html @@ -1,6 +1,6 @@ -
+
-
diff --git a/src/Squidex/app/shared/components/assets-selector.component.ts b/src/Squidex/app/shared/components/assets-selector.component.ts index 5fa7c70a5..ec75bf464 100644 --- a/src/Squidex/app/shared/components/assets-selector.component.ts +++ b/src/Squidex/app/shared/components/assets-selector.component.ts @@ -12,6 +12,7 @@ import { AssetDto, AssetsDialogState, fadeAnimation, + FilterState, LocalStoreService, StatefulComponent } from '@app/shared/internal'; @@ -36,6 +37,8 @@ export class AssetsSelectorComponent extends StatefulComponent implements @Output() public select = new EventEmitter(); + public filter = new FilterState(); + constructor(changeDector: ChangeDetectorRef, public readonly assetsState: AssetsDialogState, public readonly localStore: LocalStoreService @@ -55,8 +58,8 @@ export class AssetsSelectorComponent extends StatefulComponent implements this.assetsState.load(true).pipe(onErrorResumeNext()).subscribe(); } - public search(query: string) { - this.assetsState.search(query).pipe(onErrorResumeNext()).subscribe(); + public search() { + this.assetsState.search(this.filter.apiFilter).pipe(onErrorResumeNext()).subscribe(); } public emitComplete() { diff --git a/src/Squidex/app/shared/components/search-form.component.html b/src/Squidex/app/shared/components/search-form.component.html index 11d2cc97a..8ba958586 100644 --- a/src/Squidex/app/shared/components/search-form.component.html +++ b/src/Squidex/app/shared/components/search-form.component.html @@ -3,7 +3,10 @@
- + @@ -23,7 +26,7 @@ - + @@ -36,29 +39,33 @@