RED-6713: sort tenants

This commit is contained in:
Dan Percic 2023-06-02 17:12:05 +03:00
parent ca0a80cf4e
commit 6be8474c7f
3 changed files with 24 additions and 13 deletions

View File

@ -1,9 +1,9 @@
<div id="tenants-menu-items">
<ng-container *ngFor="let item of storedTenants(); trackBy: trackBy">
<div class="label">{{ item.tenant.displayName }}</div>
<ng-container *ngFor="let item of storedTenants | keyvalue; trackBy: trackBy">
<div class="label">{{ item.key }}</div>
<a (click)="selectTenant(item.tenant.tenantId)" [id]="item.tenant.tenantId" mat-menu-item>
{{ item.email }}
<a (click)="selectTenant(stored.tenant.tenantId)" *ngFor="let stored of item.value" [id]="stored.tenant.tenantId" mat-menu-item>
{{ stored.email }}
</a>
<mat-divider class="pb-3 pt-3"></mat-divider>
</ng-container>

View File

@ -1,5 +1,7 @@
import { Component, computed, inject } from '@angular/core';
import { BASE_HREF, IStoredTenant, TenantsService } from '@iqser/common-ui';
import { Component, inject } from '@angular/core';
import { BASE_HREF, getCurrentUser, IStoredTenant, TenantsService } from '@iqser/common-ui';
import { User } from '@red/domain';
import { KeyValue } from '@angular/common';
@Component({
selector: 'app-tenants-menu',
@ -8,12 +10,16 @@ import { BASE_HREF, IStoredTenant, TenantsService } from '@iqser/common-ui';
})
export class TenantsMenuComponent {
readonly tenantsService = inject(TenantsService);
readonly storedTenants = computed(() => this.#getStoredTenants(this.tenantsService.activeTenant().tenantId));
readonly storedTenants: Map<string, IStoredTenant[]>;
readonly #baseHref = inject(BASE_HREF);
readonly #currentUser = getCurrentUser<User>();
trackBy(_index: number, item: IStoredTenant) {
return item.tenant.tenantId;
constructor() {
this.storedTenants = this.#getStoredTenants();
}
trackBy(_index: number, item: KeyValue<string, IStoredTenant[]>) {
return item.key;
}
selectTenant(tenantId?: string) {
@ -21,9 +27,14 @@ export class TenantsMenuComponent {
window.open(window.location.origin + this.#baseHref + tenant, '_blank');
}
#getStoredTenants(activeTenantId: string) {
#getStoredTenants(): Map<string, IStoredTenant[]> {
const storedTenants = this.tenantsService.getStoredTenants();
return storedTenants.filter(t => t.tenant.tenantId !== activeTenantId);
const otherTenant = storedTenants.filter(t => {
const isCurrentTenant = t.tenant.tenantId === this.tenantsService.activeTenantId;
const isCurrentUser = t.email === this.#currentUser.email || t.email === this.#currentUser.username;
return !(isCurrentTenant && isCurrentUser);
});
return otherTenant.groupBy(t => t.tenant.displayName);
}
}

@ -1 +1 @@
Subproject commit 140ad55646af8c19982a0f69877908c3f998d9d9
Subproject commit 8ebd5f760de23a2520e4561b8c56fd67b8c8d50a