11import { Component , Inject , OnInit } from '@angular/core' ;
2- // import { ActivatedRoute, Router } from '@angular/router ';
2+ import { StateService } from '@uirouter/angular ' ;
33import { MatDialog } from '@angular/material/dialog' ;
4+ import { Team , Event , UserService } from '../../../upgrade/ajs-upgraded-providers' ;
45
56interface Page < T > {
67 items : T [ ] ;
@@ -14,16 +15,16 @@ interface User {
1415 email : string ;
1516}
1617
17- interface Team {
18+ interface TeamModel {
1819 id : string ;
1920 name : string ;
2021 description : string ;
2122 userIds : string [ ] ;
2223 acl : any ;
23- $save : ( params : any , callback : ( team : Team ) => void ) => void ;
24+ $save : ( params : any , callback : ( team : TeamModel ) => void ) => void ;
2425}
2526
26- interface Event {
27+ interface EventModel {
2728 id : string ;
2829 name : string ;
2930 description : string ;
@@ -36,7 +37,7 @@ interface Event {
3637 styleUrls : [ './team-details.component.scss' ]
3738} )
3839export class TeamDetailsComponent implements OnInit {
39- team : Team ;
40+ team : TeamModel ;
4041 hasUpdatePermission = false ;
4142 hasDeletePermission = false ;
4243
@@ -61,56 +62,54 @@ export class TeamDetailsComponent implements OnInit {
6162 } ;
6263 nonMemberSearchTerm : string ;
6364
64- teamEvents : Event [ ] = [ ] ;
65- nonTeamEvents : Event [ ] = [ ] ;
65+ teamEvents : EventModel [ ] = [ ] ;
66+ nonTeamEvents : EventModel [ ] = [ ] ;
6667 teamEventsPage = 0 ;
6768 nonTeamEventsPage = 0 ;
6869 eventsPerPage = 5 ;
6970 eventSearch : string ;
7071 teamEventSearch : string ;
7172
72- filteredEvents : Event [ ] = [ ] ;
73- filteredNonTeamEvents : Event [ ] = [ ] ;
73+ filteredEvents : EventModel [ ] = [ ] ;
74+ filteredNonTeamEvents : EventModel [ ] = [ ] ;
7475
7576 constructor (
76- // private route: ActivatedRoute,
77- // private router: Router,
77+ private stateService : StateService ,
7878 private dialog : MatDialog ,
79- @Inject ( ' Team' ) private Team : any ,
80- @Inject ( ' Event' ) private Event : any ,
81- @Inject ( ' UserService' ) private UserService : any
79+ @Inject ( Team ) private Team : any ,
80+ @Inject ( Event ) private Event : any ,
81+ @Inject ( UserService ) private UserService : any
8282 ) { }
8383
8484 ngOnInit ( ) : void {
85- // this.route.paramMap.subscribe(params => {
86- // const teamId = params.get(' teamId') ;
87- // if (teamId) {
88- // this.Team.get({ id: teamId, populate: false }, (team: Team ) => {
89- // this.team = team;
85+ // this.stateService.transitionTo('admin.teams');
86+ const teamId = this . stateService . params . teamId ;
87+ if ( teamId ) {
88+ this . Team . get ( { id : teamId , populate : false } , ( team : TeamModel ) => {
89+ this . team = team ;
9090
91- // const myAccess = this.team.acl[this.UserService.myself.id];
92- // const aclPermissions = myAccess ? myAccess.permissions : [];
91+ const myAccess = this . team . acl [ this . UserService . myself . id ] ;
92+ const aclPermissions = myAccess ? myAccess . permissions : [ ] ;
9393
94- // this.hasUpdatePermission = this.UserService.myself.role.permissions.includes('UPDATE_TEAM') || aclPermissions.includes('update');
95- // this.hasDeletePermission = this.UserService.myself.role.permissions.includes('DELETE_TEAM') || aclPermissions.includes('delete');
96- // });
94+ this . hasUpdatePermission = this . UserService . myself . role . permissions . includes ( 'UPDATE_TEAM' ) || aclPermissions . includes ( 'update' ) ;
95+ this . hasDeletePermission = this . UserService . myself . role . permissions . includes ( 'DELETE_TEAM' ) || aclPermissions . includes ( 'delete' ) ;
96+ } ) ;
9797
98- // this.getMembersPage();
99- // this.getNonMembersPage();
98+ this . getMembersPage ( ) ;
99+ this . getNonMembersPage ( ) ;
100100
101- // this.Event.query((events: Event []) => {
102- // this.teamEvents = events.filter(event => {
103- // return event.teams.some(team => team.id === this.team.id);
104- // });
101+ this . Event . query ( ( events : EventModel [ ] ) => {
102+ this . teamEvents = events . filter ( event => {
103+ return event . teams . some ( team => team . id === this . team . id ) ;
104+ } ) ;
105105
106- // this.nonTeamEvents = events.filter(event => {
107- // return !event.teams.some(team => team.id === this.team.id);
108- // });
106+ this . nonTeamEvents = events . filter ( event => {
107+ return ! event . teams . some ( team => team . id === this . team . id ) ;
108+ } ) ;
109109
110- // this.updateFilteredEvents();
111- // });
112- // }
113- // });
110+ this . updateFilteredEvents ( ) ;
111+ } ) ;
112+ }
114113 }
115114
116115 getMembersPage ( ) : void {
@@ -195,8 +194,12 @@ export class TeamDetailsComponent implements OnInit {
195194 this . getNonMembersPage ( ) ;
196195 }
197196
198- editTeam ( team : Team ) : void {
199- // this.router.navigate(['/admin/teams', team.id, 'edit']);
197+ editTeam ( team : TeamModel ) : void {
198+ this . stateService . go ( 'admin.teams.edit' , { teamId : team . id } ) ;
199+ }
200+
201+ goToTeams ( ) : void {
202+ this . stateService . go ( 'admin.teams' ) ;
200203 }
201204
202205 addMember ( $event : MouseEvent , nonMember : User ) : void {
@@ -212,37 +215,37 @@ export class TeamDetailsComponent implements OnInit {
212215 }
213216
214217 saveTeam ( ) : void {
215- this . team . $save ( null , ( team : Team ) => {
218+ this . team . $save ( null , ( team : TeamModel ) => {
216219 this . team = team ;
217220 this . getMembersPage ( ) ;
218221 this . getNonMembersPage ( ) ;
219222 } ) ;
220223 }
221224
222- editAccess ( team : Team ) : void {
223- // this.router.navigate(['/ admin/ teams', team.id, 'access'] );
225+ editAccess ( team : TeamModel ) : void {
226+ this . stateService . go ( ' admin. teams.access ', { teamId : team . id } ) ;
224227 }
225228
226- gotoEvent ( event : Event ) : void {
227- // this.router.navigate(['/ admin/ events', event.id] );
229+ gotoEvent ( event : EventModel ) : void {
230+ this . stateService . go ( ' admin. events.detail ', { eventId : event . id } ) ;
228231 }
229232
230233 gotoUser ( user : User ) : void {
231- // this.router.navigate(['/ admin/ users', user.id] );
234+ this . stateService . go ( ' admin. users.detail ', { userId : user . id } ) ;
232235 }
233236
234- addEventToTeam ( $event : MouseEvent , event : Event ) : void {
237+ addEventToTeam ( $event : MouseEvent , event : EventModel ) : void {
235238 $event . stopPropagation ( ) ;
236- this . Event . addTeam ( { id : event . id } , this . team , ( updatedEvent : Event ) => {
239+ this . Event . addTeam ( { id : event . id } , this . team , ( updatedEvent : EventModel ) => {
237240 this . teamEvents . push ( updatedEvent ) ;
238241 this . nonTeamEvents = this . nonTeamEvents . filter ( e => e . id !== updatedEvent . id ) ;
239242 this . updateFilteredEvents ( ) ;
240243 } ) ;
241244 }
242245
243- removeEventFromTeam ( $event : MouseEvent , event : Event ) : void {
246+ removeEventFromTeam ( $event : MouseEvent , event : EventModel ) : void {
244247 $event . stopPropagation ( ) ;
245- this . Event . removeTeam ( { id : event . id , teamId : this . team . id } , ( updatedEvent : Event ) => {
248+ this . Event . removeTeam ( { id : event . id , teamId : this . team . id } , ( updatedEvent : EventModel ) => {
246249 this . teamEvents = this . teamEvents . filter ( e => e . id !== updatedEvent . id ) ;
247250 this . nonTeamEvents . push ( updatedEvent ) ;
248251 this . updateFilteredEvents ( ) ;
@@ -256,7 +259,7 @@ export class TeamDetailsComponent implements OnInit {
256259 // });
257260 // dialogRef.afterClosed().subscribe(result => {
258261 // if (result) {
259- // this.router.navigate(['/ admin/ teams'] );
262+ // this.stateService.go(' admin. teams');
260263 // }
261264 // });
262265 }
@@ -278,7 +281,7 @@ export class TeamDetailsComponent implements OnInit {
278281 this . updateFilteredEvents ( ) ;
279282 }
280283
281- getPagedEvents ( events : Event [ ] , page : number ) : Event [ ] {
284+ getPagedEvents ( events : EventModel [ ] , page : number ) : EventModel [ ] {
282285 const start = page * this . eventsPerPage ;
283286 return events . slice ( start , start + this . eventsPerPage ) ;
284287 }
0 commit comments