@@ -86,7 +86,6 @@ export class TeamsComponent implements OnInit, AfterViewInit {
8686 get tableData ( ) {
8787 return this . teams ;
8888 }
89- showUserTeamsFilter = false ;
9089
9190 constructor (
9291 private userService : UserService ,
@@ -110,16 +109,7 @@ export class TeamsComponent implements OnInit, AfterViewInit {
110109 filterSpecificFieldsByWord ( [ 'doc.name' ] ) ,
111110 ( data , filter ) => filterSpecificFields ( [ 'userStatus' ] ) ( data , this . myTeamsFilter === 'on' ? 'member' : '' )
112111 ] ) ;
113- this . teams . sortingDataAccessor = ( item , property ) => {
114- if ( property === 'membership' ) {
115- switch ( item . userStatus ) {
116- case 'member' : return 2 ;
117- case 'requesting' : return 1 ;
118- default : return 0 ;
119- }
120- }
121- return deepSortingDataAccessor ( item , property ) ;
122- } ;
112+ this . teams . sortingDataAccessor = deepSortingDataAccessor ;
123113 this . couchService . checkAuthorization ( 'teams' ) . subscribe ( ( isAuthorized ) => this . isAuthorized = isAuthorized ) ;
124114 this . displayedColumns = this . isDialog ?
125115 [ 'doc.name' , 'visitLog.lastVisit' , 'visitLog.visitCount' , 'doc.teamType' ] :
@@ -160,8 +150,6 @@ export class TeamsComponent implements OnInit, AfterViewInit {
160150 }
161151 this . dialogsLoadingService . stop ( ) ;
162152 this . isLoading = false ;
163- this . showUserTeamsFilter = this . myTeamsFilter === 'off' &&
164- this . teams . data . some ( e => e . userStatus === 'member' || e . userStatus === 'requesting' ) ;
165153 } , ( error ) => {
166154 if ( this . userNotInShelf ) {
167155 this . displayedColumns = [ 'doc.name' , 'visitLog.lastVisit' , 'visitLog.visitCount' , 'doc.teamType' ] ;
@@ -219,6 +207,20 @@ export class TeamsComponent implements OnInit, AfterViewInit {
219207 default :
220208 return { ...team , userStatus : 'unrelated' } ;
221209 }
210+ } ) . sort ( ( teamA , teamB ) => {
211+ const membershipOrder = { member : 2 , requesting : 1 , unrelated : 0 } ;
212+ const membershipDifference = membershipOrder [ teamB . userStatus ] - membershipOrder [ teamA . userStatus ] ;
213+ if ( membershipDifference !== 0 ) {
214+ return membershipDifference ;
215+ }
216+
217+ const lastVisitA = teamA . visitLog . lastVisit || 0 ;
218+ const lastVisitB = teamB . visitLog . lastVisit || 0 ;
219+ if ( lastVisitB !== lastVisitA ) {
220+ return lastVisitB - lastVisitA ;
221+ }
222+
223+ return teamA . doc . name . localeCompare ( teamB . doc . name ) ;
222224 } ) ;
223225 }
224226
@@ -342,19 +344,6 @@ export class TeamsComponent implements OnInit, AfterViewInit {
342344 this . teams . filter = filterValue || ( this . myTeamsFilter ? ' ' : '' ) ;
343345 }
344346
345- sortbyUserTeams ( ) {
346- if ( ! this . teams . data . some ( e => e . userStatus === 'member' || e . userStatus === 'requesting' ) ) {
347- return ;
348- }
349-
350- this . sort . active = 'membership' ;
351- this . sort . direction = 'desc' ;
352- this . sort . sortChange . emit ( {
353- active : this . sort . active ,
354- direction : this . sort . direction
355- } ) ;
356- }
357-
358347 getTeamTypeLabel ( team : any ) : string {
359348 return team . doc . type === 'enterprise' ? $localize `enterprise` : $localize `team` ;
360349 }
0 commit comments