Skip to content

Commit 0460078

Browse files
authored
Merge branch 'master' into 9937-app-currently-mixes-shared-viewport-classification-with-page-specific-toolbar-overflow-behavior
2 parents 0012762 + 7c73508 commit 0460078

2 files changed

Lines changed: 17 additions & 37 deletions

File tree

src/app/teams/teams.component.html

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
</div>
4545

4646
<div class="primary-link-hover" [ngClass]="{'view-container view-table view-full-height':!isDialog}">
47-
<mat-table #table class="responsive-table" [dataSource]="teams" matSortActive="visitLog.visitCount" matSortDirection="desc" matSort [matSortDisableClear]="true">
47+
<mat-table #table class="responsive-table" [dataSource]="teams" matSort [matSortDisableClear]="true">
4848
<ng-container matColumnDef="doc.name">
4949
<mat-header-cell *matHeaderCellDef mat-sort-header="doc.name" i18n>Name</mat-header-cell>
5050
<mat-cell *matCellDef="let element">
@@ -85,17 +85,8 @@ <h3 class="team-name">
8585
</ng-container>
8686
</mat-cell>
8787
</ng-container>
88-
<ng-container matColumnDef="membership">
89-
<mat-header-cell *matHeaderCellDef mat-sort-header="membership" hidden>Membership</mat-header-cell>
90-
<mat-cell *matCellDef="let element" hidden>{{ element.userStatus }}</mat-cell>
91-
</ng-container>
9288
<ng-container matColumnDef="action">
93-
<mat-header-cell *matHeaderCellDef i18n>
94-
<span>Action</span>
95-
<button mat-button *ngIf="showUserTeamsFilter" (click)="sortbyUserTeams()" i18n-title title="Toggle myTeams">
96-
<mat-icon>check</mat-icon>
97-
</button>
98-
</mat-header-cell>
89+
<mat-header-cell *matHeaderCellDef i18n>Action</mat-header-cell>
9990
<mat-cell *matCellDef="let element">
10091
<div class="button-container" [ngClass]="{'horizontal-align': isMobile}">
10192
<ng-container [ngSwitch]="element.userStatus" *ngIf="user.isUserAdmin || user.roles.length">

src/app/teams/teams.component.ts

Lines changed: 15 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,6 @@ export class TeamsComponent implements OnInit, AfterViewInit {
8888
get tableData() {
8989
return this.teams;
9090
}
91-
showUserTeamsFilter = false;
9291

9392
constructor(
9493
private userService: UserService,
@@ -116,16 +115,7 @@ export class TeamsComponent implements OnInit, AfterViewInit {
116115
filterSpecificFieldsByWord([ 'doc.name' ]),
117116
(data, filter) => filterSpecificFields([ 'userStatus' ])(data, this.myTeamsFilter === 'on' ? 'member' : '')
118117
]);
119-
this.teams.sortingDataAccessor = (item, property) => {
120-
if (property === 'membership') {
121-
switch (item.userStatus) {
122-
case 'member': return 2;
123-
case 'requesting': return 1;
124-
default: return 0;
125-
}
126-
}
127-
return deepSortingDataAccessor(item, property);
128-
};
118+
this.teams.sortingDataAccessor = deepSortingDataAccessor;
129119
this.couchService.checkAuthorization('teams').subscribe((isAuthorized) => this.isAuthorized = isAuthorized);
130120
this.displayedColumns = this.isDialog ?
131121
[ 'doc.name', 'visitLog.lastVisit', 'visitLog.visitCount', 'doc.teamType' ] :
@@ -161,8 +151,6 @@ export class TeamsComponent implements OnInit, AfterViewInit {
161151
}
162152
this.dialogsLoadingService.stop();
163153
this.isLoading = false;
164-
this.showUserTeamsFilter = this.myTeamsFilter === 'off' &&
165-
this.teams.data.some(e => e.userStatus === 'member' || e.userStatus === 'requesting');
166154
}, (error) => {
167155
if (this.userNotInShelf) {
168156
this.displayedColumns = [ 'doc.name', 'visitLog.lastVisit', 'visitLog.visitCount', 'doc.teamType' ];
@@ -220,6 +208,20 @@ export class TeamsComponent implements OnInit, AfterViewInit {
220208
default:
221209
return { ...team, userStatus: 'unrelated' };
222210
}
211+
}).sort((teamA, teamB) => {
212+
const membershipOrder = { member: 2, requesting: 1, unrelated: 0 };
213+
const membershipDifference = membershipOrder[teamB.userStatus] - membershipOrder[teamA.userStatus];
214+
if (membershipDifference !== 0) {
215+
return membershipDifference;
216+
}
217+
218+
const lastVisitA = teamA.visitLog.lastVisit || 0;
219+
const lastVisitB = teamB.visitLog.lastVisit || 0;
220+
if (lastVisitB !== lastVisitA) {
221+
return lastVisitB - lastVisitA;
222+
}
223+
224+
return teamA.doc.name.localeCompare(teamB.doc.name);
223225
});
224226
}
225227

@@ -343,19 +345,6 @@ export class TeamsComponent implements OnInit, AfterViewInit {
343345
this.teams.filter = filterValue || (this.myTeamsFilter ? ' ' : '');
344346
}
345347

346-
sortbyUserTeams() {
347-
if (!this.teams.data.some(e => e.userStatus === 'member' || e.userStatus === 'requesting')) {
348-
return;
349-
}
350-
351-
this.sort.active = 'membership';
352-
this.sort.direction = 'desc';
353-
this.sort.sortChange.emit({
354-
active: this.sort.active,
355-
direction: this.sort.direction
356-
});
357-
}
358-
359348
getTeamTypeLabel(team: any): string {
360349
return team.doc.type === 'enterprise' ? $localize`enterprise` : $localize`team`;
361350
}

0 commit comments

Comments
 (0)