1- import { Component , OnInit } from '@angular/core' ;
1+ import { Component , OnInit , ViewChild } from '@angular/core' ;
22import { ColumnOptions , TableComponent } from '../../../shared/table/table.component' ;
3- import { Seat , SeatService } from '../../../services/api/seat.service' ;
3+ import { AllSeats , Seat , SeatService } from '../../../services/api/seat.service' ;
44import { SortDirection } from '@angular/material/sort' ;
55import { Router } from '@angular/router' ;
66import { InstallationsService } from '../../../services/api/installations.service' ;
@@ -16,56 +16,60 @@ import { takeUntil } from 'rxjs';
1616 styleUrl : './copilot-seats.component.scss'
1717} )
1818export class CopilotSeatsComponent implements OnInit {
19- seats ?: Seat [ ] ;
19+ seats ?: AllSeats [ ] ;
2020 tableColumns : ColumnOptions [ ] = [
2121 {
2222 columnDef : 'avatar' ,
2323 header : '' ,
24- cell : ( element : Seat ) => `${ element . assignee . avatar_url } ` ,
24+ cell : ( element : AllSeats ) => `${ element . avatar_url } ` ,
2525 isImage : true
2626 } ,
2727 {
2828 columnDef : 'login' ,
2929 header : 'User' ,
30- cell : ( element : Seat ) => `${ element . assignee . login } ` ,
31- // link: (element: Seat ) => `https://github.com/${element.assignee.login}`
30+ cell : ( element : AllSeats ) => `${ element . login } ` ,
31+ // link: (element: AllSeats ) => `https://github.com/${element.assignee.login}`
3232 } ,
3333 {
3434 columnDef : 'last_activity_at' ,
3535 header : 'Last Active' ,
36- cell : ( element : Seat ) => element . last_activity_at ? new Date ( element . last_activity_at ) . toLocaleString ( [ ] , { dateStyle : 'short' , timeStyle : 'short' } ) : '-'
36+ cell : ( element : AllSeats ) => element . seat ?. last_activity_at ? new Date ( element . seat . last_activity_at ) . toLocaleString ( [ ] , { dateStyle : 'short' , timeStyle : 'short' } ) : '-'
3737 } ,
3838 {
3939 columnDef : 'last_activity_editor' ,
4040 header : 'Editor' ,
41- cell : ( element : Seat ) => element . last_activity_editor ?. split ( '/' ) [ 0 ] || '-' ,
41+ cell : ( element : AllSeats ) => element . seat ? .last_activity_editor ?. split ( '/' ) [ 0 ] || '-' ,
4242 chipList : true ,
43- chipListIcon : ( element : Seat ) => this . getIconForEditor ( element . last_activity_editor ) ,
43+ chipListIcon : ( element : AllSeats ) => this . getIconForEditor ( element . seat ? .last_activity_editor ) ,
4444 } ,
4545 {
4646 columnDef : 'created_at' ,
4747 header : 'Created' ,
48- cell : ( element : Seat ) => new Date ( element . created_at ) . toLocaleString ( [ ] , { dateStyle : 'short' } )
48+ cell : ( element : AllSeats ) => new Date ( element . seat ? .created_at ) . toLocaleString ( [ ] , { dateStyle : 'short' } )
4949 } ,
5050 {
5151 columnDef : 'plan_type' ,
5252 header : 'Plan' ,
53- cell : ( element : Seat ) => `${ element . plan_type } ` ,
53+ cell : ( element : AllSeats ) => `${ element . seat ?. plan_type || 'disabled' } ` ,
5454 chipList : true ,
55- chipListIcon : ( element : Seat ) => element . plan_type === 'enterprise' ? 'corporate_fare' : 'paid'
55+ chipListIcon : ( element : AllSeats ) => element . seat ?. plan_type === 'enterprise' ? 'corporate_fare' : element . seat ?. plan_type === 'business' ? 'paid' : 'close'
56+ } ,
57+ {
58+ columnDef : 'org' ,
59+ header : 'Org' ,
60+ cell : ( element : AllSeats ) => `${ element . org } ` ,
5661 }
5762 ] ;
5863 defaultSort = { id : 'last_activity_at' , start : 'desc' as SortDirection , disableClear : false } ;
59- sortingDataAccessor = ( item : Seat , property : string ) => {
64+ sortingDataAccessor = ( item : AllSeats , property : string ) => {
6065 switch ( property ) {
6166 case 'login' :
62- return ( item . assignee as { login : string } ) ? .login . toLowerCase ( ) ;
67+ return item . login . toLowerCase ( ) ;
6368 default :
64- // eslint-disable-next-line @typescript-eslint/no-explicit-any
65- return ( item as any ) [ property ] ;
69+ return item . seat ?. [ property as keyof Seat ]
6670 }
6771 } ;
68- filterPredicate = ( data : Seat , filter : string ) => {
72+ filterPredicate = ( data : AllSeats , filter : string ) => {
6973 const searchStr = JSON . stringify ( data ) . toLowerCase ( ) ;
7074 return searchStr . includes ( filter ) ;
7175 } ;
@@ -81,14 +85,14 @@ export class CopilotSeatsComponent implements OnInit {
8185 takeUntil ( this . installationsService . destroy$ )
8286 ) . subscribe ( installation => {
8387 this . seatsService . getAllSeats ( installation ?. account ?. login ) . subscribe ( seats => {
84- this . seats = seats as Seat [ ] ;
88+ this . seats = seats ;
8589 } ) ;
8690 } ) ;
8791 }
8892
89- onRowClick ( seat : Seat ) {
90- if ( seat . assignee . id ) {
91- this . router . navigate ( [ '/copilot/seats' , seat . assignee . id ] ) ;
93+ onRowClick ( seat : AllSeats ) {
94+ if ( seat . id ) {
95+ this . router . navigate ( [ '/copilot/seats' , seat . id ] ) ;
9296 }
9397 }
9498
0 commit comments