You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ma...@apache.org on 2020/11/09 11:05:06 UTC

[archiva] branch master updated: Simplifying component interaction

This is an automated email from the ASF dual-hosted git repository.

martin_s pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/archiva.git


The following commit(s) were added to refs/heads/master by this push:
     new 069e7af  Simplifying component interaction
069e7af is described below

commit 069e7af8716d13b6ca17596ab6e56b6b47f75c4f
Author: Martin Stockhammer <ma...@apache.org>
AuthorDate: Mon Nov 9 11:06:10 2020 +0100

    Simplifying component interaction
---
 .../paginated-entities.component.ts                | 18 ++++++++++------
 .../sorted-table-header-row.component.ts           | 24 +++++++++++++++++++---
 .../sorted-table-header.component.ts               |  9 +++++---
 .../manage-users-list.component.html               |  4 ++--
 4 files changed, 41 insertions(+), 14 deletions(-)

diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/general/paginated-entities/paginated-entities.component.ts b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/general/paginated-entities/paginated-entities.component.ts
index 1d0cba1..f563cec 100644
--- a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/general/paginated-entities/paginated-entities.component.ts
+++ b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/general/paginated-entities/paginated-entities.component.ts
@@ -16,7 +16,7 @@
  * under the License.
  */
 
-import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';
+import {AfterViewInit, Component, EventEmitter, Input, OnInit, Output} from '@angular/core';
 import {merge, Observable, Subject} from "rxjs";
 import {debounceTime, distinctUntilChanged, map, mergeMap, pluck, share, startWith} from "rxjs/operators";
 import {EntityService} from "../../../model/entity-service";
@@ -47,7 +47,7 @@ import {FieldToggle} from "../../../model/field-toggle";
     templateUrl: './paginated-entities.component.html',
     styleUrls: ['./paginated-entities.component.scss']
 })
-export class PaginatedEntitiesComponent<T> implements OnInit, FieldToggle {
+export class PaginatedEntitiesComponent<T> implements OnInit, FieldToggle, AfterViewInit {
 
     /**
      * This must be set, if you use the component. This service retrieves the entity data.
@@ -161,11 +161,11 @@ export class PaginatedEntitiesComponent<T> implements OnInit, FieldToggle {
     }
 
     toggleField(fieldArray: string[]) {
-        console.log("Changing sort field " + fieldArray);
+        // console.log("Changing sort field " + fieldArray);
         let sortOrderChanged: boolean = false;
         let sortFieldChanged: boolean = false;
         if (!this.compareArrays(this.sortField, fieldArray)) {
-          console.log("Fields differ: " + this.sortField + " - " + fieldArray);
+          // console.log("Fields differ: " + this.sortField + " - " + fieldArray);
             this.sortField = fieldArray;
             if (this.sortOrder != 'asc') {
                 this.sortOrder = 'asc';
@@ -178,11 +178,11 @@ export class PaginatedEntitiesComponent<T> implements OnInit, FieldToggle {
             } else {
                 this.sortOrder = "asc";
             }
-          console.log("Toggled sort order: " + this.sortOrder);
+          // console.log("Toggled sort order: " + this.sortOrder);
             sortOrderChanged = true;
         }
         if (sortOrderChanged) {
-          console.log("Sort order changed: "+this.sortOrder)
+          //console.log("Sort order changed: "+this.sortOrder)
             this.sortOrderChange.emit(this.sortOrder);
         }
         if (sortFieldChanged) {
@@ -193,4 +193,10 @@ export class PaginatedEntitiesComponent<T> implements OnInit, FieldToggle {
         }
     }
 
+    ngAfterViewInit(): void {
+        // We emit the current value to push them to the containing reading components
+        this.sortOrderChange.emit(this.sortOrder);
+        this.sortFieldChange.emit(this.sortField);
+    }
+
 }
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/general/sorted-table-header-row/sorted-table-header-row.component.ts b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/general/sorted-table-header-row/sorted-table-header-row.component.ts
index 4de4c74..0342dd9 100644
--- a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/general/sorted-table-header-row/sorted-table-header-row.component.ts
+++ b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/general/sorted-table-header-row/sorted-table-header-row.component.ts
@@ -41,10 +41,11 @@ export class SortedTableHeaderRowComponent implements OnInit, AfterViewInit, Aft
 
   @Input() sortFieldEmitter: EventEmitter<string[]>;
   @Input() sortOrderEmitter: EventEmitter<string>;
-  @Input() sortFields: string[];
-  @Input() sortOrder: string;
   @Input() toggleObserver: FieldToggle;
 
+  sortFields: string[];
+  sortOrder: string;
+
   @ContentChildren(SortedTableHeaderComponent, { descendants: true }) contentChilds: QueryList<SortedTableHeaderComponent>;
 
   constructor(private readonly viewContainer: ViewContainerRef) {
@@ -58,9 +59,10 @@ export class SortedTableHeaderRowComponent implements OnInit, AfterViewInit, Aft
   ngAfterContentInit(): void {
     this.contentChilds.changes.pipe(startWith(this.contentChilds), delay(0)).subscribe(() => {
       this.contentChilds.forEach((colComponent, index) => {
-        console.log("Children " + colComponent);
+        // console.log("Children " + colComponent);
         colComponent.registerSortFieldEmitter(this.sortFieldEmitter);
         colComponent.registerSortOrderEmitter(this.sortOrderEmitter);
+
         colComponent.sortOrder = this.sortOrder;
         colComponent.currentFieldArray = this.sortFields;
         colComponent.toggleObserver = this.toggleObserver;
@@ -70,10 +72,26 @@ export class SortedTableHeaderRowComponent implements OnInit, AfterViewInit, Aft
   }
 
   ngOnInit(): void {
+    this.registerSortOrderEmitter(this.sortOrderEmitter);
+    this.registerSortFieldEmitter(this.sortFieldEmitter);
   }
 
   ngAfterViewInit(): void {
 
   }
 
+  registerSortOrderEmitter(emitter : EventEmitter<string>) {
+    emitter.subscribe((order) => {
+      // console.log("header-row: Changing sort order: " + order);
+      this.sortOrder = order
+    });
+  }
+
+  registerSortFieldEmitter(emitter: EventEmitter<string[]>) {
+    emitter.subscribe((fields)=>{
+      // console.log("header-row: Changing sort fields" + fields);
+      this.sortFields = fields;
+    })
+  }
+
 }
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/general/sorted-table-header/sorted-table-header.component.ts b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/general/sorted-table-header/sorted-table-header.component.ts
index bc297d5..b37d52c 100644
--- a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/general/sorted-table-header/sorted-table-header.component.ts
+++ b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/general/sorted-table-header/sorted-table-header.component.ts
@@ -55,7 +55,7 @@ export class SortedTableHeaderComponent implements OnInit, AfterViewChecked {
   }
 
   toggleSortField() {
-    console.log("Toggling sort field " + this.fieldArray);
+    // console.log("Toggling sort field " + this.fieldArray);
     this.toggleObserver.toggleField(this.fieldArray);
   }
 
@@ -75,7 +75,7 @@ export class SortedTableHeaderComponent implements OnInit, AfterViewChecked {
   }
 
   isAscending() :boolean {
-    console.log("Is ascending: " + this.sortOrder);
+    // console.log("header: Is ascending: " + this.sortOrder);
     return this.sortOrder == 'asc';
   }
 
@@ -84,7 +84,10 @@ export class SortedTableHeaderComponent implements OnInit, AfterViewChecked {
   }
 
   registerSortFieldEmitter(emitter : EventEmitter<string[]>) {
-    emitter.subscribe((field) => this.currentFieldArray = field);
+    emitter.subscribe((field) => {
+      // console.log("header: Change sort field "+field)
+      this.currentFieldArray = field
+    });
   }
 
 }
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/user/users/manage-users-list/manage-users-list.component.html b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/user/users/manage-users-list/manage-users-list.component.html
index bfdc6fb..5293a0f 100644
--- a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/user/users/manage-users-list/manage-users-list.component.html
+++ b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/user/users/manage-users-list/manage-users-list.component.html
@@ -22,8 +22,8 @@
 
 <table class="table table-striped table-bordered">
     <thead class="thead-light">
-    <tr sorted [sortFieldEmitter]="parent.sortFieldChange" [sortOrder]="sortOrder" [sortFields]="sortField"
-                   [sortOrderEmitter]="parent.sortOrderChange" [toggleObserver]="parent" >
+    <tr sorted [sortFieldEmitter]="parent.sortFieldChange" [sortOrderEmitter]="parent.sortOrderChange"
+                   [toggleObserver]="parent" >
         <app-th-sorted [fieldArray]="['user_id']" contentText="users.list.table.head.user_id"></app-th-sorted>
         <app-th-sorted contentText="users.list.table.head.fullName" [fieldArray]="['fullName']" ></app-th-sorted>
         <app-th-sorted contentText="users.list.table.head.email" [fieldArray]="['email']"></app-th-sorted>