From 9ba1802bedd375ed324e579b33ff2833b1f4ac1e Mon Sep 17 00:00:00 2001 From: Paulo Pinto Date: Wed, 26 Aug 2020 09:42:16 +0100 Subject: [PATCH] Attendees funcionality. --- package-lock.json | 5 ++ package.json | 1 + src/app/app.module.ts | 4 +- src/app/home/home-routing.module.ts | 1 - src/app/home/home.module.ts | 5 +- .../events/attendees/attendees.page.html | 21 ++++--- .../pages/events/attendees/attendees.page.ts | 50 +++++++++++++--- .../event-detail/event-detail.page.html | 25 ++++---- .../events/event-detail/event-detail.page.ts | 58 +++++++++++-------- src/app/services/events.service.ts | 2 +- 10 files changed, 116 insertions(+), 56 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6996fd3b0..47eb5b4ed 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7948,6 +7948,11 @@ "loose-envify": "^1.0.0" } }, + "ionic-selectable": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/ionic-selectable/-/ionic-selectable-4.5.0.tgz", + "integrity": "sha512-ya65y4IF8rgaE68VVqBllSfsSNozBzk+If8ohtg70qk4HHTkxAT4mhiD7EGcQ8oJ2LGyFomAK5vLO15pJ1vCKg==" + }, "ionic2-calendar": { "version": "0.6.6", "resolved": "https://registry.npmjs.org/ionic2-calendar/-/ionic2-calendar-0.6.6.tgz", diff --git a/package.json b/package.json index bccaae993..afec2a39c 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "cordova-ios": "6.1.0", "cordova-res": "^0.15.1", "date-fns": "^2.15.0", + "ionic-selectable": "^4.5.0", "ionic2-calendar": "^0.6.6", "moment": "^2.27.0", "rxjs": "~6.5.1", diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 4b87f10d2..57c77524f 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -11,6 +11,7 @@ import { AppComponent } from './app.component'; import { HttpClientModule } from '@angular/common/http'; import { InAppBrowser } from '@ionic-native/in-app-browser/ngx'; +import { IonicSelectableModule } from 'ionic-selectable'; @NgModule({ declarations: [AppComponent], @@ -21,7 +22,8 @@ import { InAppBrowser } from '@ionic-native/in-app-browser/ngx'; SplashScreen, HttpClientModule, { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }, - InAppBrowser + InAppBrowser, + IonicSelectableModule ], bootstrap: [AppComponent], schemas: [CUSTOM_ELEMENTS_SCHEMA] diff --git a/src/app/home/home-routing.module.ts b/src/app/home/home-routing.module.ts index 8bb4f560b..ed8768d54 100644 --- a/src/app/home/home-routing.module.ts +++ b/src/app/home/home-routing.module.ts @@ -2,7 +2,6 @@ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; import { HomePage } from './home.page'; -import { EventsPage } from '../pages/events/events.page'; const routes: Routes = [ { diff --git a/src/app/home/home.module.ts b/src/app/home/home.module.ts index aca3da5f6..70ac080a1 100644 --- a/src/app/home/home.module.ts +++ b/src/app/home/home.module.ts @@ -7,13 +7,16 @@ import { IonicModule } from '@ionic/angular'; import { HomePageRoutingModule } from './home-routing.module'; import { HomePage } from './home.page'; +import { IonicSelectableModule } from 'ionic-selectable'; + @NgModule({ imports: [ CommonModule, FormsModule, IonicModule, - HomePageRoutingModule + HomePageRoutingModule, + IonicSelectableModule ], declarations: [HomePage] }) diff --git a/src/app/pages/events/attendees/attendees.page.html b/src/app/pages/events/attendees/attendees.page.html index 4ad73a606..503fc3a4e 100644 --- a/src/app/pages/events/attendees/attendees.page.html +++ b/src/app/pages/events/attendees/attendees.page.html @@ -5,9 +5,15 @@ - - - + + + + + + + diff --git a/src/app/pages/events/attendees/attendees.page.ts b/src/app/pages/events/attendees/attendees.page.ts index afa4d5f39..cde2b7a50 100644 --- a/src/app/pages/events/attendees/attendees.page.ts +++ b/src/app/pages/events/attendees/attendees.page.ts @@ -1,7 +1,5 @@ -import { Component, OnInit, Injectable } from '@angular/core'; +import { Component, OnInit } from '@angular/core'; import { EventPerson } from 'src/app/models/eventperson.model'; -import { ActivatedRoute } from '@angular/router'; -import { EventDetailPage } from '../event-detail/event-detail.page'; import { EventsService } from 'src/app/services/events.service'; @Component({ @@ -11,18 +9,54 @@ import { EventsService } from 'src/app/services/events.service'; }) export class AttendeesPage implements OnInit { + eventAttendeesInitial: EventPerson[]; eventAttendees: EventPerson[]; - segment:string; + segment:string = "required"; + shouldShowCancel:boolean = true; - constructor(private activatedRoute: ActivatedRoute, public eventService: EventsService) { + searchCountryString = ''; // initialize your searchCountryString string empty + + constructor(private eventService: EventsService) { } + ngOnInit() { - this.eventAttendees = this.eventService.loadedEvent.Attendees; - console.log(this.eventService.loadedEvent); + this.loadAttendees(); } onSegmentChange(){ - + this.loadAttendees(); + } + + searchCountry(searchbar) { + // reset countries list with initial call + this.eventAttendees = this.eventAttendeesInitial; + + // set q to the value of the searchbar + var q = searchbar.value; + + // if the value is an empty string don't filter the items + // if (q.trim() == '') { + // return; + // } + + this.eventAttendees = this.eventAttendees.filter((v) => { + if (v.Name.toLowerCase().indexOf(q.toLowerCase()) > -1) { + return true; + } + return false; + }) + } + + loadAttendees(){ + let isRequired: boolean = (this.segment == "required"); + this.eventAttendees = this.eventService.lastloadedevent.Attendees.filter(function(person) { + return person.IsRequired == isRequired; + }); + this.eventAttendeesInitial = this.eventAttendees; + } + + onChange(evt: any) { + console.log(evt); } } diff --git a/src/app/pages/events/event-detail/event-detail.page.html b/src/app/pages/events/event-detail/event-detail.page.html index edd319c68..4d148bdbb 100644 --- a/src/app/pages/events/event-detail/event-detail.page.html +++ b/src/app/pages/events/event-detail/event-detail.page.html @@ -22,14 +22,12 @@ Localização - - Intervenientes - - - - - - + + + Pessoas + + Calendário @@ -46,13 +44,12 @@ Data Fim - - Anexos - - - Lei do orçamento geral do Estado + + + Anexos - +
Apagar diff --git a/src/app/pages/events/event-detail/event-detail.page.ts b/src/app/pages/events/event-detail/event-detail.page.ts index e51814f32..f091ce14c 100644 --- a/src/app/pages/events/event-detail/event-detail.page.ts +++ b/src/app/pages/events/event-detail/event-detail.page.ts @@ -1,11 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, Injectable } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { EventsService } from 'src/app/services/events.service'; import { Router } from '@angular/router'; import { Event } from '../../../models/event.model'; -import { Observable } from 'rxjs'; import { EventBody } from 'src/app/models/eventbody.model'; import { AlertController } from '@ionic/angular'; +import { EventPerson } from 'src/app/models/eventperson.model'; @Component({ selector: 'app-event-detail', @@ -15,7 +15,6 @@ import { AlertController } from '@ionic/angular'; export class EventDetailPage implements OnInit { loadedEvent: Event; - eventItem: Observable; constructor(public alertController: AlertController, private router: Router, private activatedRoute: ActivatedRoute, private eventsService: EventsService) { this.loadedEvent = new Event(); @@ -23,29 +22,42 @@ export class EventDetailPage implements OnInit { } ngOnInit() { - /* Emit new data when something changes */ - this.activatedRoute.paramMap.subscribe(paramMap =>{ - if(!paramMap.has('eventId')){ - //Redirect - return; - } - const eventId = paramMap.get('eventId'); + this.loadEvent(); + } - /* Load my event detail */ - /* this.loadedEvent = this.eventsService.getEvent(eventId); */ - this.eventItem = this.eventsService.getEvent(eventId); - - /* console.log(this.eventItem); */ - - this.eventsService.getEvent(eventId).subscribe(response => + loadEvent() + { + this.activatedRoute.paramMap.subscribe(paramMap => + { + if (!paramMap.has("eventId")) { - this.loadedEvent = response; - }); - }); + return; + } + + this.eventsService.getEvent(paramMap.get('eventId')).subscribe(response => + { + this.loadedEvent = response; + this.eventsService.lastloadedevent = this.loadedEvent; + }); + } + ); + } + + getEventAttendees(): EventPerson[] + { + return this.loadedEvent.Attendees; + } + + setEventAttendees(newattendes: EventPerson[]) + { + this.loadedEvent.Attendees = newattendes; } async deleteConfirm() { + console.log(this.loadedEvent.Attendees); + console.log(this.loadedEvent.CalendarName); + const alert = await this.alertController.create({ cssClass: 'my-custom-class', header: 'Apagar evento!', @@ -55,7 +67,7 @@ export class EventDetailPage implements OnInit { text: 'Não', role: 'cancel', cssClass: 'secondary', - handler: (blah) => { } + handler: () => { } }, { text: 'Sim', handler: () => { @@ -70,7 +82,7 @@ export class EventDetailPage implements OnInit { Delete() { - this.eventsService.deleteEvent(this.loadedEvent.EventId, 0).subscribe(async response => + this.eventsService.deleteEvent(this.loadedEvent.EventId, 0).subscribe(async () => { const alert = await this.alertController.create({ cssClass: 'my-custom-class', @@ -86,7 +98,7 @@ export class EventDetailPage implements OnInit { Save() { - this.eventsService.putEvent(this.loadedEvent, 2, 3).subscribe(async response => + this.eventsService.putEvent(this.loadedEvent, 2, 3).subscribe(async () => { const alert = await this.alertController.create({ cssClass: 'my-custom-class', diff --git a/src/app/services/events.service.ts b/src/app/services/events.service.ts index 476c0715b..eb2d53c57 100644 --- a/src/app/services/events.service.ts +++ b/src/app/services/events.service.ts @@ -15,7 +15,7 @@ export class EventsService { authheader = {}; loggeduser: User; headers: HttpHeaders; - public loadedEvent: Event; + lastloadedevent: Event; constructor(private http: HttpClient, user: AuthService) { this.loggeduser = user.ValidatedUser;