diff --git a/src/app/app.module.ts b/src/app/app.module.ts index d90c576c..d95a30a7 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -49,6 +49,10 @@ import { TranslateModule, TranslateLoader } from "@ngx-translate/core"; import { TranslateHttpLoader } from "@ngx-translate/http-loader"; import { HelferDetailPage } from "./pages/helfer/helfer-detail/helfer-detail.page"; import { HelferAddPage } from "./pages/helfer/helfer-add/helfer-add.page"; +import { ClubMemberListPage } from "./pages/club-member-list/club-member-list.page"; +import { TeamMemberListPage } from "./pages/team-member-list/team-member-list.page"; +import { ClubAdminListPage } from "./pages/club-admin-list/club-admin-list.page"; +import { TeamAdminListPage } from "./pages/team-admin-list/team-admin-list.page"; @NgModule({ declarations: [ @@ -69,7 +73,12 @@ import { HelferAddPage } from "./pages/helfer/helfer-add/helfer-add.page"; OnboardingPage, ClubPage, + ClubMemberListPage, + ClubAdminListPage, + TeamPage, + TeamMemberListPage, + TeamAdminListPage ], imports: [ BrowserModule, diff --git a/src/app/pages/club-admin-list/club-admin-list-routing.module.ts b/src/app/pages/club-admin-list/club-admin-list-routing.module.ts new file mode 100644 index 00000000..dc972ed0 --- /dev/null +++ b/src/app/pages/club-admin-list/club-admin-list-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { ClubAdminListPage } from './club-admin-list.page'; + +const routes: Routes = [ + { + path: '', + component: ClubAdminListPage + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class ClubAdminListPageRoutingModule {} diff --git a/src/app/pages/club-admin-list/club-admin-list.module.ts b/src/app/pages/club-admin-list/club-admin-list.module.ts new file mode 100644 index 00000000..020f21c7 --- /dev/null +++ b/src/app/pages/club-admin-list/club-admin-list.module.ts @@ -0,0 +1,22 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { IonicModule } from '@ionic/angular'; + +import { ClubAdminListPageRoutingModule } from './club-admin-list-routing.module'; + +import { ClubAdminListPage } from './club-admin-list.page'; +import { TranslateModule } from '@ngx-translate/core'; + +@NgModule({ + imports: [ + TranslateModule, + CommonModule, + FormsModule, + IonicModule, + ClubAdminListPageRoutingModule + ], + declarations: [ClubAdminListPage] +}) +export class ClubAdminListPageModule {} diff --git a/src/app/pages/club-admin-list/club-admin-list.page.html b/src/app/pages/club-admin-list/club-admin-list.page.html new file mode 100644 index 00000000..afb599f0 --- /dev/null +++ b/src/app/pages/club-admin-list/club-admin-list.page.html @@ -0,0 +1,47 @@ + + + + + {{"common.edit" | translate}} + {{"common.cancel" | translate}} + + Club Details + + {{"common.close" | translate}} + + + + + + + + Club Admins + + + + + + {{"common.admins" | translate}} + + + + + + {{member.firstName}} {{member.lastName}} + + + + + + + + + diff --git a/src/app/pages/club-admin-list/club-admin-list.page.scss b/src/app/pages/club-admin-list/club-admin-list.page.scss new file mode 100644 index 00000000..e69de29b diff --git a/src/app/pages/club-admin-list/club-admin-list.page.spec.ts b/src/app/pages/club-admin-list/club-admin-list.page.spec.ts new file mode 100644 index 00000000..9067d69d --- /dev/null +++ b/src/app/pages/club-admin-list/club-admin-list.page.spec.ts @@ -0,0 +1,17 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { ClubAdminListPage } from './club-admin-list.page'; + +describe('ClubAdminListPage', () => { + let component: ClubAdminListPage; + let fixture: ComponentFixture; + + beforeEach(async(() => { + fixture = TestBed.createComponent(ClubAdminListPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/club-admin-list/club-admin-list.page.ts b/src/app/pages/club-admin-list/club-admin-list.page.ts new file mode 100644 index 00000000..44a37f52 --- /dev/null +++ b/src/app/pages/club-admin-list/club-admin-list.page.ts @@ -0,0 +1,223 @@ +import { Component, Input, OnInit } from '@angular/core'; +import { AlertController, ModalController, NavParams, ToastController } from '@ionic/angular'; +import { TranslateService } from '@ngx-translate/core'; +import { Observable, catchError, combineLatest, forkJoin, lastValueFrom, map, of, startWith, switchMap, take, tap } from 'rxjs'; +import { AuthService } from 'src/app/services/auth.service'; +import { FirebaseService } from 'src/app/services/firebase.service'; +import { UserProfileService } from 'src/app/services/firebase/user-profile.service'; +import { MemberPage } from '../member/member.page'; +import { Profile } from 'src/app/models/user'; +import { User } from 'firebase/auth'; + +@Component({ + selector: 'app-club-admin-list', + templateUrl: './club-admin-list.page.html', + styleUrls: ['./club-admin-list.page.scss'], +}) +export class ClubAdminListPage implements OnInit { + @Input("club") club: any; + club$: Observable; + + user$: Observable; + user: User; + + allowEdit: boolean = false; + + constructor( + private readonly modalCtrl: ModalController, + public navParams: NavParams, + private readonly alertCtrl: AlertController, + private readonly toastCtrl: ToastController, + private readonly userProfileService: UserProfileService, + private readonly fbService: FirebaseService, + private readonly authService: AuthService, + private translate: TranslateService + ) { } + + ngOnInit() { + + this.club = this.navParams.get("club"); + + this.club$ = of(this.club); + this.club$ = this.getClub(this.club.id); + + + } + edit() { + if (this.allowEdit) { + this.allowEdit = false; + } else { + this.allowEdit = true; + } + } + + getClub(clubId: string) { + const calculateAge = (dateOfBirth) => { + // console.log("DoB: " + JSON.stringify(dateOfBirth)); + const birthday = new Date(dateOfBirth.seconds * 1000); + const ageDifMs = Date.now() - birthday.getTime(); + const ageDate = new Date(ageDifMs); // miliseconds from epoch + return Math.abs(ageDate.getUTCFullYear() - 1970); + }; + + return this.authService.getUser$().pipe( + take(1), + tap((user) => { + this.user = user; + if (!user) throw new Error("User not found"); + }), + switchMap(() => this.fbService.getClubRef(clubId)), + switchMap((club) => { + if (!club) return of(null); + return combineLatest({ + //clubMembers: this.fbService.getClubMemberRefs(clubId), + clubAdmins: this.fbService.getClubAdminRefs(clubId), + //clubRequests: this.fbService.getClubRequestRefs(clubId), + }).pipe( + switchMap(({ + // clubMembers, + clubAdmins, + // clubRequests + }) => { + /*const memberProfiles$ = clubMembers.map((member) => + this.userProfileService.getUserProfileById(member.id).pipe( + take(1), + catchError(() => + of({ ...member, firstName: "Unknown", lastName: "Unknown" }) + ) + ) + );*/ + const adminProfiles$ = clubAdmins.map((admin) => + this.userProfileService.getUserProfileById(admin.id).pipe( + take(1), + catchError(() => + of({ ...admin, firstName: "Unknown", lastName: "Unknown" }) + ) + ) + ); + /* const clubRequests$ = clubRequests.map((request) => + this.userProfileService.getUserProfileById(request.id).pipe( + take(1), + catchError(() => + of({ ...request, firstName: "Unknown", lastName: "Unknown" }) + ) + ) + );*/ + return forkJoin({ + // clubMembers: forkJoin(memberProfiles$).pipe(startWith([])), + clubAdmins: forkJoin(adminProfiles$).pipe(startWith([])), + // clubRequests: forkJoin(clubRequests$).pipe(startWith([])), + }).pipe( + map(({ + // clubMembers, + clubAdmins, + // clubRequests + }) => ({ + /*clubMembers: clubMembers.filter( + (member) => member !== undefined + ), // Filter out undefined*/ + clubAdmins: clubAdmins.filter((admin) => admin !== undefined), // Filter out undefined + /*clubRequests: clubRequests.filter( + (request) => request !== undefined + ), // Filter out undefined*/ + })) + ); + }), + map(({ + // clubMembers, + clubAdmins, + // clubRequests + }) => { + + /*const ages = clubMembers + .map((member) => + member.hasOwnProperty("dateOfBirth") + ? calculateAge(member.dateOfBirth) + : 0 + ) + .filter((age) => age > 0); // Filter out invalid or 'Unknown' ages + // console.log(ages); + + const averageAge = + ages.length > 0 + ? ages.reduce((a, b) => a + b, 0) / ages.length + : 0; // Calculate average or set to 0 if no valid ages + */ + return { + ...club, + // averageAge: averageAge.toFixed(1), // Keep two decimal places + // clubMembers, + clubAdmins, + // clubRequests, + }; + }) + ); + }), + catchError((err) => { + this.toastActionError(err); + console.error("Error in getClubWithMembersAndAdmins:", err); + return of(null); + }) + ); + } + + async openMember(member: Profile) { + console.log("openMember"); + const modal = await this.modalCtrl.create({ + component: MemberPage, + presentingElement: await this.modalCtrl.getTop(), + canDismiss: true, + showBackdrop: true, + componentProps: { + data: member, + }, + }); + modal.present(); + + const { data, role } = await modal.onWillDismiss(); + + if (role === "confirm") { + } + } + + + async toastActionSaved() { + const toast = await this.toastCtrl.create({ + message: await lastValueFrom(this.translate.get("common.success__saved")), + duration: 1500, + position: "bottom", + color: "success", + }); + + await toast.present(); + } + + async toastActionCanceled() { + const toast = await this.toastCtrl.create({ + message: await lastValueFrom(this.translate.get("club.action__canceled")), + duration: 1500, + position: "bottom", + color: "danger", + }); + await toast.present(); + } + + async toastActionError(error) { + const toast = await this.toastCtrl.create({ + message: error.message, + duration: 2000, + position: "bottom", + color: "danger", + }); + + await toast.present(); + } + + async close() { + return await this.modalCtrl.dismiss(null, "close"); + } + + async confirm() { + return await this.modalCtrl.dismiss(this.club, "confirm"); + } +} diff --git a/src/app/pages/club-member-list/club-member-list-routing.module.ts b/src/app/pages/club-member-list/club-member-list-routing.module.ts new file mode 100644 index 00000000..bb44d25f --- /dev/null +++ b/src/app/pages/club-member-list/club-member-list-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { ClubMemberListPage } from './club-member-list.page'; + +const routes: Routes = [ + { + path: '', + component: ClubMemberListPage + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class ClubMemberListPageRoutingModule {} diff --git a/src/app/pages/club-member-list/club-member-list.module.ts b/src/app/pages/club-member-list/club-member-list.module.ts new file mode 100644 index 00000000..8bc73569 --- /dev/null +++ b/src/app/pages/club-member-list/club-member-list.module.ts @@ -0,0 +1,22 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { IonicModule } from '@ionic/angular'; + +import { ClubMemberListPageRoutingModule } from './club-member-list-routing.module'; + +import { ClubMemberListPage } from './club-member-list.page'; +import { TranslateModule } from '@ngx-translate/core'; + +@NgModule({ + imports: [ + TranslateModule, + CommonModule, + FormsModule, + IonicModule, + ClubMemberListPageRoutingModule + ], + declarations: [ClubMemberListPage] +}) +export class ClubMemberListPageModule {} diff --git a/src/app/pages/club-member-list/club-member-list.page.html b/src/app/pages/club-member-list/club-member-list.page.html new file mode 100644 index 00000000..75470ed0 --- /dev/null +++ b/src/app/pages/club-member-list/club-member-list.page.html @@ -0,0 +1,58 @@ + + + + + {{"common.edit" | translate}} + {{"common.cancel" | translate}} + + Club Details + + {{"common.close" | translate}} + + + + + + + + Club Members + + + + + + + + + + + + A + + + + + + + + + + + + + + {{member.firstName}} + {{member.lastName}} + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/pages/club-member-list/club-member-list.page.scss b/src/app/pages/club-member-list/club-member-list.page.scss new file mode 100644 index 00000000..e69de29b diff --git a/src/app/pages/club-member-list/club-member-list.page.spec.ts b/src/app/pages/club-member-list/club-member-list.page.spec.ts new file mode 100644 index 00000000..ade47b2b --- /dev/null +++ b/src/app/pages/club-member-list/club-member-list.page.spec.ts @@ -0,0 +1,17 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { ClubMemberListPage } from './club-member-list.page'; + +describe('ClubMemberListPage', () => { + let component: ClubMemberListPage; + let fixture: ComponentFixture; + + beforeEach(async(() => { + fixture = TestBed.createComponent(ClubMemberListPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/club-member-list/club-member-list.page.ts b/src/app/pages/club-member-list/club-member-list.page.ts new file mode 100644 index 00000000..e6fbb73b --- /dev/null +++ b/src/app/pages/club-member-list/club-member-list.page.ts @@ -0,0 +1,223 @@ +import { Component, Input, OnInit, ViewChild } from '@angular/core'; +import { AlertController, ModalController, NavParams, ToastController, IonList } from '@ionic/angular'; +import { TranslateService } from '@ngx-translate/core'; +import { Observable, catchError, combineLatest, forkJoin, lastValueFrom, map, of, startWith, switchMap, take, tap } from 'rxjs'; +import { AuthService } from 'src/app/services/auth.service'; +import { FirebaseService } from 'src/app/services/firebase.service'; +import { UserProfileService } from 'src/app/services/firebase/user-profile.service'; +import { MemberPage } from '../member/member.page'; +import { Profile } from 'src/app/models/user'; +import { User } from 'firebase/auth'; + +@Component({ + selector: 'app-club-member-list', + templateUrl: './club-member-list.page.html', + styleUrls: ['./club-member-list.page.scss'], +}) +export class ClubMemberListPage implements OnInit { + @Input("club") club: any; + @ViewChild('IonList') list: IonList; + club$: Observable; + + user$: Observable; + user: User; + + allowEdit: boolean = false; + + constructor( + private readonly modalCtrl: ModalController, + public navParams: NavParams, + private readonly alertCtrl: AlertController, + private readonly toastCtrl: ToastController, + private readonly userProfileService: UserProfileService, + private readonly fbService: FirebaseService, + private readonly authService: AuthService, + private translate: TranslateService + ) { } + + ngOnInit() { + + this.club = this.navParams.get("club"); + + this.club$ = of(this.club); + this.club$ = this.getClub(this.club.id); + + + } + edit() { + this.list.closeSlidingItems(); + + if (this.allowEdit) { + this.allowEdit = false; + } else { + this.allowEdit = true; + } + } + + getClub(clubId: string) { + const calculateAge = (dateOfBirth) => { + // console.log("DoB: " + JSON.stringify(dateOfBirth)); + const birthday = new Date(dateOfBirth.seconds * 1000); + const ageDifMs = Date.now() - birthday.getTime(); + const ageDate = new Date(ageDifMs); // miliseconds from epoch + return Math.abs(ageDate.getUTCFullYear() - 1970); + }; + + return this.authService.getUser$().pipe( + take(1), + tap((user) => { + this.user = user; + if (!user) throw new Error("User not found"); + }), + switchMap(() => this.fbService.getClubRef(clubId)), + switchMap((club) => { + if (!club) return of(null); + return combineLatest({ + clubMembers: this.fbService.getClubMemberRefs(clubId), + //clubAdmins: this.fbService.getClubAdminRefs(clubId), + //clubRequests: this.fbService.getClubRequestRefs(clubId), + }).pipe( + switchMap(({ clubMembers, + // clubAdmins, + // clubRequests + }) => { + const memberProfiles$ = clubMembers.map((member) => + this.userProfileService.getUserProfileById(member.id).pipe( + take(1), + catchError(() => + of({ ...member, firstName: "Unknown", lastName: "Unknown" }) + ) + ) + ); + /* const adminProfiles$ = clubAdmins.map((admin) => + this.userProfileService.getUserProfileById(admin.id).pipe( + take(1), + catchError(() => + of({ ...admin, firstName: "Unknown", lastName: "Unknown" }) + ) + ) + ); + const clubRequests$ = clubRequests.map((request) => + this.userProfileService.getUserProfileById(request.id).pipe( + take(1), + catchError(() => + of({ ...request, firstName: "Unknown", lastName: "Unknown" }) + ) + ) + );*/ + return forkJoin({ + clubMembers: forkJoin(memberProfiles$).pipe(startWith([])), + // clubAdmins: forkJoin(adminProfiles$).pipe(startWith([])), + // clubRequests: forkJoin(clubRequests$).pipe(startWith([])), + }).pipe( + map(({ clubMembers, + // clubAdmins, + // clubRequests + }) => ({ + clubMembers: clubMembers.filter( + (member) => member !== undefined + ), // Filter out undefined + // clubAdmins: clubAdmins.filter((admin) => admin !== undefined), // Filter out undefined + /*clubRequests: clubRequests.filter( + (request) => request !== undefined + ), // Filter out undefined*/ + })) + ); + }), + map(({ clubMembers, + // clubAdmins, + // clubRequests + }) => { + + const ages = clubMembers + .map((member) => + member.hasOwnProperty("dateOfBirth") + ? calculateAge(member.dateOfBirth) + : 0 + ) + .filter((age) => age > 0); // Filter out invalid or 'Unknown' ages + // console.log(ages); + + const averageAge = + ages.length > 0 + ? ages.reduce((a, b) => a + b, 0) / ages.length + : 0; // Calculate average or set to 0 if no valid ages + + return { + ...club, + averageAge: averageAge.toFixed(1), // Keep two decimal places + clubMembers, + // clubAdmins, + // clubRequests, + }; + }) + ); + }), + catchError((err) => { + this.toastActionError(err); + console.error("Error in getClubWithMembersAndAdmins:", err); + return of(null); + }) + ); + } + + async openMember(member: Profile) { + console.log("openMember"); + const modal = await this.modalCtrl.create({ + component: MemberPage, + presentingElement: await this.modalCtrl.getTop(), + canDismiss: true, + showBackdrop: true, + componentProps: { + data: member, + }, + }); + modal.present(); + + const { data, role } = await modal.onWillDismiss(); + + if (role === "confirm") { + } + } + + + async toastActionSaved() { + const toast = await this.toastCtrl.create({ + message: await lastValueFrom(this.translate.get("common.success__saved")), + duration: 1500, + position: "bottom", + color: "success", + }); + + await toast.present(); + } + + async toastActionCanceled() { + const toast = await this.toastCtrl.create({ + message: await lastValueFrom(this.translate.get("club.action__canceled")), + duration: 1500, + position: "bottom", + color: "danger", + }); + await toast.present(); + } + + async toastActionError(error) { + const toast = await this.toastCtrl.create({ + message: error.message, + duration: 2000, + position: "bottom", + color: "danger", + }); + + await toast.present(); + } + + async close() { + return await this.modalCtrl.dismiss(null, "close"); + } + + async confirm() { + return await this.modalCtrl.dismiss(this.club, "confirm"); + } +} diff --git a/src/app/pages/club/club.page.html b/src/app/pages/club/club.page.html index 01c458ff..610934fd 100644 --- a/src/app/pages/club/club.page.html +++ b/src/app/pages/club/club.page.html @@ -81,7 +81,7 @@ {{ "common.others" | translate}} - + Helferpunkte diff --git a/src/app/pages/club/club.page.ts b/src/app/pages/club/club.page.ts index 7a890a21..8f104faa 100644 --- a/src/app/pages/club/club.page.ts +++ b/src/app/pages/club/club.page.ts @@ -28,6 +28,8 @@ import { AuthService } from "src/app/services/auth.service"; import { FirebaseService } from "src/app/services/firebase.service"; import { UserProfileService } from "src/app/services/firebase/user-profile.service"; import { MemberPage } from "../member/member.page"; +import { ClubMemberListPage } from "../club-member-list/club-member-list.page"; +import { ClubAdminListPage } from "../club-admin-list/club-admin-list.page"; @Component({ selector: "app-club", @@ -45,8 +47,7 @@ export class ClubPage implements OnInit { alertTeamSelection = []; - allowEdit: boolean = false; - + allowEdit: boolean = false; constructor( private readonly modalCtrl: ModalController, @@ -269,7 +270,7 @@ export class ClubPage implements OnInit { } });*/ } - async openMember(member: Profile) { + /*async openMember(member: Profile) { console.log("openMember"); const modal = await this.modalCtrl.create({ component: MemberPage, @@ -286,17 +287,17 @@ export class ClubPage implements OnInit { if (role === "confirm") { } - } + }*/ async openMemberList() { - console.log("open Request Member"); + console.log("open Club Member List"); const modal = await this.modalCtrl.create({ - component: MemberPage, + component: ClubMemberListPage, presentingElement: await this.modalCtrl.getTop(), canDismiss: true, showBackdrop: true, componentProps: { - + club: this.club }, }); modal.present(); @@ -311,12 +312,12 @@ export class ClubPage implements OnInit { async openAdminList(){ console.log("open Request Member"); const modal = await this.modalCtrl.create({ - component: MemberPage, + component: ClubAdminListPage, presentingElement: await this.modalCtrl.getTop(), canDismiss: true, showBackdrop: true, componentProps: { - + club: this.club }, }); modal.present(); diff --git a/src/app/pages/team-admin-list/team-admin-list-routing.module.ts b/src/app/pages/team-admin-list/team-admin-list-routing.module.ts new file mode 100644 index 00000000..310ccb3c --- /dev/null +++ b/src/app/pages/team-admin-list/team-admin-list-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { TeamAdminListPage } from './team-admin-list.page'; + +const routes: Routes = [ + { + path: '', + component: TeamAdminListPage + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class TeamAdminListPageRoutingModule {} diff --git a/src/app/pages/team-admin-list/team-admin-list.module.ts b/src/app/pages/team-admin-list/team-admin-list.module.ts new file mode 100644 index 00000000..91f8f1cf --- /dev/null +++ b/src/app/pages/team-admin-list/team-admin-list.module.ts @@ -0,0 +1,20 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { IonicModule } from '@ionic/angular'; + +import { TeamAdminListPageRoutingModule } from './team-admin-list-routing.module'; + +import { TeamAdminListPage } from './team-admin-list.page'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + TeamAdminListPageRoutingModule + ], + declarations: [TeamAdminListPage] +}) +export class TeamAdminListPageModule {} diff --git a/src/app/pages/team-admin-list/team-admin-list.page.html b/src/app/pages/team-admin-list/team-admin-list.page.html new file mode 100644 index 00000000..8aedaa8d --- /dev/null +++ b/src/app/pages/team-admin-list/team-admin-list.page.html @@ -0,0 +1,13 @@ + + + team-admin-list + + + + + + + team-admin-list + + + diff --git a/src/app/pages/team-admin-list/team-admin-list.page.scss b/src/app/pages/team-admin-list/team-admin-list.page.scss new file mode 100644 index 00000000..e69de29b diff --git a/src/app/pages/team-admin-list/team-admin-list.page.spec.ts b/src/app/pages/team-admin-list/team-admin-list.page.spec.ts new file mode 100644 index 00000000..6f67be09 --- /dev/null +++ b/src/app/pages/team-admin-list/team-admin-list.page.spec.ts @@ -0,0 +1,17 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { TeamAdminListPage } from './team-admin-list.page'; + +describe('TeamAdminListPage', () => { + let component: TeamAdminListPage; + let fixture: ComponentFixture; + + beforeEach(async(() => { + fixture = TestBed.createComponent(TeamAdminListPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/team-admin-list/team-admin-list.page.ts b/src/app/pages/team-admin-list/team-admin-list.page.ts new file mode 100644 index 00000000..b5998ef1 --- /dev/null +++ b/src/app/pages/team-admin-list/team-admin-list.page.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-team-admin-list', + templateUrl: './team-admin-list.page.html', + styleUrls: ['./team-admin-list.page.scss'], +}) +export class TeamAdminListPage implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/pages/team-member-list/team-member-list-routing.module.ts b/src/app/pages/team-member-list/team-member-list-routing.module.ts new file mode 100644 index 00000000..43f74d18 --- /dev/null +++ b/src/app/pages/team-member-list/team-member-list-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { TeamMemberListPage } from './team-member-list.page'; + +const routes: Routes = [ + { + path: '', + component: TeamMemberListPage + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class TeamMemberListPageRoutingModule {} diff --git a/src/app/pages/team-member-list/team-member-list.module.ts b/src/app/pages/team-member-list/team-member-list.module.ts new file mode 100644 index 00000000..baa7753d --- /dev/null +++ b/src/app/pages/team-member-list/team-member-list.module.ts @@ -0,0 +1,20 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { IonicModule } from '@ionic/angular'; + +import { TeamMemberListPageRoutingModule } from './team-member-list-routing.module'; + +import { TeamMemberListPage } from './team-member-list.page'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + TeamMemberListPageRoutingModule + ], + declarations: [TeamMemberListPage] +}) +export class TeamMemberListPageModule {} diff --git a/src/app/pages/team-member-list/team-member-list.page.html b/src/app/pages/team-member-list/team-member-list.page.html new file mode 100644 index 00000000..7816a6a4 --- /dev/null +++ b/src/app/pages/team-member-list/team-member-list.page.html @@ -0,0 +1,13 @@ + + + team-member-list + + + + + + + team-member-list + + + diff --git a/src/app/pages/team-member-list/team-member-list.page.scss b/src/app/pages/team-member-list/team-member-list.page.scss new file mode 100644 index 00000000..e69de29b diff --git a/src/app/pages/team-member-list/team-member-list.page.spec.ts b/src/app/pages/team-member-list/team-member-list.page.spec.ts new file mode 100644 index 00000000..e658fb8e --- /dev/null +++ b/src/app/pages/team-member-list/team-member-list.page.spec.ts @@ -0,0 +1,17 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { TeamMemberListPage } from './team-member-list.page'; + +describe('TeamMemberListPage', () => { + let component: TeamMemberListPage; + let fixture: ComponentFixture; + + beforeEach(async(() => { + fixture = TestBed.createComponent(TeamMemberListPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/team-member-list/team-member-list.page.ts b/src/app/pages/team-member-list/team-member-list.page.ts new file mode 100644 index 00000000..8d64f566 --- /dev/null +++ b/src/app/pages/team-member-list/team-member-list.page.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-team-member-list', + templateUrl: './team-member-list.page.html', + styleUrls: ['./team-member-list.page.scss'], +}) +export class TeamMemberListPage implements OnInit { + + constructor() { } + + ngOnInit() { + } + +}