@@ -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