diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 0193e8f4b..5dfb7a7e9 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -9,82 +9,7 @@ const routes: Routes = [ { path: '', loadChildren: () => import('./home/home.module').then( m => m.HomePageModule) - }, - { - path: 'events', - loadChildren: () => import('./pages/events/events.module').then( m => m.EventsPageModule) - }, - { - path: 'chat', - loadChildren: () => import('./pages/chat/chat.module').then( m => m.ChatPageModule) - }, - { - path: 'publications', - loadChildren: () => import('./pages/publications/publications.module').then( m => m.PublicationsPageModule) - }, - { - path: 'header', - loadChildren: () => import('./shared/header/header.module').then( m => m.HeaderPageModule) - }, - { - path: 'header', - loadChildren: () => import('./shared/header/header.module').then( m => m.HeaderPageModule) - }, - { - path: 'header-pr', - loadChildren: () => import('./shared/header-pr/header-pr.module').then( m => m.HeaderPrPageModule) - }, - { - path: 'btn-seguinte', - loadChildren: () => import('./shared/btn-seguinte/btn-seguinte.module').then( m => m.BtnSeguintePageModule) - }, - { - path: 'btn-modal-dismiss', - loadChildren: () => import('./shared/btn-modal-dismiss/btn-modal-dismiss.module').then( m => m.BtnModalDismissPageModule) - }, - { - path: 'chat-popover', - loadChildren: () => import('./shared/popover/chat-popover/chat-popover.module').then( m => m.ChatPopoverPageModule) - }, - { - path: 'chat-options-popover', - loadChildren: () => import('./shared/popover/chat-options-popover/chat-options-popover.module').then( m => m.ChatOptionsPopoverPageModule) - }, { - path: 'messages-options', - loadChildren: () => import('./shared/popover/messages-options/messages-options.module').then( m => m.MessagesOptionsPageModule) - }, - { - path: 'group-duration', - loadChildren: () => import('./shared/popover/group-duration/group-duration.module').then( m => m.GroupDurationPageModule) - }, - { - path: 'header-no-search', - loadChildren: () => import('./shared/headers/header-no-search/header-no-search.module').then( m => m.HeaderNoSearchPageModule) - }, - - - - /* { - path: 'cal-modal', - loadChildren: () => import('./pages/cal-modal/cal-modal.module').then( m => m.CalModalPageModule) - }, */ - /* { - path: 'events', - loadChildren: () => import('./pages/events/events.module').then( m => m.EventsPageModule) - }, */ - - /* - { - path: 'gabinete-digital-menu', - loadChildren: () => import('./pages/gabinete-digital-menu/gabinete-digital-menu.module').then( m => m.GabineteDigitalMenuPageModule) - }, - - - { - path: 'view-event', - loadChildren: () => import('./pages/view-event/view-event.module').then( m => m.ViewEventPageModule) - }, */ - + } ]; @NgModule({ imports: [ diff --git a/src/app/components/calendar/calendar.component.html b/src/app/components/calendar/calendar.component.html deleted file mode 100644 index a23ca3d0c..000000000 --- a/src/app/components/calendar/calendar.component.html +++ /dev/null @@ -1,2 +0,0 @@ -
-
diff --git a/src/app/components/calendar/calendar.component.scss b/src/app/components/calendar/calendar.component.scss deleted file mode 100644 index ef8de7ae7..000000000 --- a/src/app/components/calendar/calendar.component.scss +++ /dev/null @@ -1,20 +0,0 @@ -* { - margin: 0; - padding: 0; - box-sizing: border-box; - font-family: "Quicksand", sans-serif; - } - - html { - font-size: 62.5%; - } - - .container { - width: 100%; - height: 100vh; - background-color: #12121f; - color: #eee; - display: flex; - justify-content: center; - align-items: center; - } \ No newline at end of file diff --git a/src/app/components/calendar/calendar.component.ts b/src/app/components/calendar/calendar.component.ts deleted file mode 100644 index f2a841df3..000000000 --- a/src/app/components/calendar/calendar.component.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'app-calendar', - templateUrl: './calendar.component.html', - styleUrls: ['./calendar.component.scss'], -}) -export class CalendarComponent implements OnInit { - - date = new Date(); - months = [ - "Janeiro", - "Fevereiro", - "Março", - "Abril", - "Maio", - "Junho", - "Julho", - "Agosto", - "Setembro", - "Outubro", - "Novembro", - "Dezembro", - ]; - weekdays = [ - "Domingo", - "Segunda-feira", - "Terça-feira", - "Quarta-feira", - "Quinta-feira", - "Sexta-feira", - "Sábado" - ]; - currentMonth = this.months[this.date.getMonth()]; - customDate = this.weekdays[this.date.getDay()]+ ", " + this.date.getDate() +" de " + ( this.months[this.date.getMonth()]); - - constructor() { } - - ngOnInit() { - } -} diff --git a/src/app/components/components.module.ts b/src/app/components/components.module.ts deleted file mode 100644 index b415ba1d4..000000000 --- a/src/app/components/components.module.ts +++ /dev/null @@ -1,8 +0,0 @@ - - -import { CalendarComponent } from './calendar/calendar.component'; - - - - - diff --git a/src/app/pages/agenda/agenda.module.ts b/src/app/pages/agenda/agenda.module.ts index a72bd12bd..2812f3dc8 100644 --- a/src/app/pages/agenda/agenda.module.ts +++ b/src/app/pages/agenda/agenda.module.ts @@ -7,17 +7,17 @@ import { IonicModule } from '@ionic/angular'; import { AgendaPageRoutingModule } from './agenda-routing.module'; import { AgendaPage } from './agenda.page'; - - import { NgCalendarModule } from 'ionic2-calendar'; import { CalModalPageModule } from '../cal-modal/cal-modal.module'; import { registerLocaleData } from '@angular/common'; import localeDe from '@angular/common/locales/pt'; -import { CalendarComponent } from 'src/app/components/calendar/calendar.component'; import { SharedModule } from 'src/app/shared/shared.module'; -registerLocaleData(localeDe); +import { NewEventPage } from "src/app/shared/agenda/new-event/new-event.component" +import { EditEventComponent } from 'src/app/shared/agenda/edit-event/edit-event.component'; +import { ViewEventPage } from 'src/app/shared/agenda/view-event/view-event.page'; +registerLocaleData(localeDe); import { CalendarModule, DateAdapter } from 'angular-calendar'; import { adapterFactory } from 'angular-calendar/date-adapters/date-fns'; @@ -36,7 +36,12 @@ import { adapterFactory } from 'angular-calendar/date-adapters/date-fns'; NgCalendarModule, CalModalPageModule, ], - declarations: [AgendaPage, CalendarComponent], + declarations: [ + AgendaPage, + NewEventPage, + EditEventComponent, + ViewEventPage + ], schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [ { provide: LOCALE_ID, useValue: 'pt-PT'} diff --git a/src/app/pages/agenda/agenda.page.html b/src/app/pages/agenda/agenda.page.html index 6f827411d..b783d6e49 100644 --- a/src/app/pages/agenda/agenda.page.html +++ b/src/app/pages/agenda/agenda.page.html @@ -1,279 +1,321 @@ - - + + - -
-
- - -
- -
-
- - - + + +
+ +
+
+ +
+ + +
+ +
+
+ + + + + +
+ +
+ + +

{{ viewTitle }}

+ + +
+ +
+ +
+ + + + + + +
-
- -
- - -

{{ viewTitle }}

- + +
+ {{ view.dates[row*7+col].label }} +
+ +
-
--> - -
- -
- + +
+
+ + + + + + + + + +

{{ viewTitle }}

+
+ + + + + + + +
+ + + + + + + + + + + + +
STQQSSD
+ + + + + + + +
+ {{view.dates[row*7+col].label}} +
+ +
+
+
+ +
+
+ + + + + + + + + +

{{ viewTitle }}

+
+ + + + + + + +
+ + + + + + + + + + + + +
STQQSSD
+ + + + + + +
+ {{view.dates[row*7+col].label}} +
+ +
+
+
+ +
+
+ +
+ +
+ + + + + + + + + + Hoje,   {{ timelineDate }} + + +
{{timelineFilterState}}
+ + + +
    +
  • Todos
  • +
  • Oficial
  • +
  • Pessoal
  • +
- - - - - - -
- - - - - - - - - - - -
STQQSSD
- - - - - - -
- {{ view.dates[row*7+col].label }} -
- -
-
-
-
-
- - - - - - - - - -

{{ viewTitle }}

-
- - - - - - -
- - - - - - - - - - - - -
STQQSSD
- - - - - - - -
- {{view.dates[row*7+col].label}} -
- -
-
-
-
-
- - - - - - - - - -

{{ viewTitle }}

-
- - - - - - - -
- +
- - - - - - - - - - -
STQQSSD
+
+
+ + + + + + + +
+ + - - - - - -
- {{view.dates[row*7+col].label}} -
- -
-
-
- +
+ + +
+
-
+
+ + + + > + + - - - - - - - - Hoje,   {{ timelineDate }} - - -
{{timelineFilterState}}
- - - -
    -
  • Todos
  • -
  • Oficial
  • -
  • Pessoal
  • -
-
-
+ +
-
-
- - - - - - - - - -
- - - -
- - -
+
\ No newline at end of file diff --git a/src/app/pages/agenda/agenda.page.scss b/src/app/pages/agenda/agenda.page.scss index 7825c669e..99fbb4e53 100644 --- a/src/app/pages/agenda/agenda.page.scss +++ b/src/app/pages/agenda/agenda.page.scss @@ -464,16 +464,21 @@ td.monthview-primary-with-event { .timeline-header{ z-index: 1000000; - position: absolute; width: 100%; background-color: white; } .timeline-container{ - margin-top: 67px; + } +.calendar-timeline{ + + height: 100%; + background-color: white; + border-top-left-radius: 25px; +} .calendar-border{ background: #ebebeb; @@ -484,6 +489,58 @@ td.monthview-primary-with-event { .calendar-progress-bar{ position: absolute; - width: calc(100% - 20px); + width: 100%; margin-left: 10px; +} + + +.agenda-container{ + overflow: hidden; +} + +.container-wrapper{ + height: 100%; + .calendar-timeline{ + flex-wrap: wrap; + border-top-right-radius: 24px; + width: calc(100%); + + .calendar-wrapper{ + width: 100%; + } + + .timeline-wrapper{ + width: 100%; + overflow: scroll; + overflow-x: hidden; + } + } +} + +.event-details{ + width: 100%; + background: white; + border-top-right-radius: 25px; +} + + +.event-details{ + // width: 411px; + display: none; +} + + +@media only screen and (min-width: 1024px) { + .container-wrapper{ + height: 100%; + + .calendar-timeline{ + flex-wrap: wrap; + border-top-right-radius: 0px; + width: calc(100% - 40%); + } + } + .event-details{ + display: block; + } } \ No newline at end of file diff --git a/src/app/pages/agenda/agenda.page.ts b/src/app/pages/agenda/agenda.page.ts index ef09c1e6d..3a5307da6 100644 --- a/src/app/pages/agenda/agenda.page.ts +++ b/src/app/pages/agenda/agenda.page.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, ViewChild, Inject, LOCALE_ID } from '@angular/core'; +import { Component, OnInit, ViewChild, Inject, LOCALE_ID, Input } from '@angular/core'; import { CalendarComponent } from 'ionic2-calendar'; import { AlertController, ModalController } from '@ionic/angular'; import { CalModalPage } from '../cal-modal/cal-modal.page'; @@ -8,7 +8,8 @@ import { Router, NavigationEnd } from '@angular/router'; import { AlertService } from 'src/app/services/alert.service'; import { NewEventPage } from './new-event/new-event.page'; import { ViewEventPage } from './view-event/view-event.page'; -import { momentG } from 'src/plugin/momentG' +import { momentG } from 'src/plugin/momentG'; +import {DomSanitizer} from "@angular/platform-browser"; // showTimeline import { setHours, setMinutes } from 'date-fns'; @@ -80,6 +81,10 @@ export class AgendaPage implements OnInit { rangeStartDate: Date; rangeEndDate: Date; + selectedEvent: Event; + selectedEventId: string | number; + postEvent: any; + @ViewChild(CalendarComponent) myCal: CalendarComponent; segment:string; @@ -98,6 +103,11 @@ export class AgendaPage implements OnInit { endTime: Date; + mobileComponent: any = { + showAddNewEvent: false, + showEditEvent: false, + showEventDitails: false, + } constructor( private alertCtrl: AlertController, @@ -105,7 +115,8 @@ export class AgendaPage implements OnInit { private modalCtrl: ModalController, private eventService: EventsService, private router: Router, - private alertCrontroller: AlertService + private alertCrontroller: AlertService, + private sanitizer: DomSanitizer ) { this.calendarHeight = "347px"; @@ -155,10 +166,21 @@ export class AgendaPage implements OnInit { // Show information of the event for timeline eventClicked({ event }: { event: CalendarEvent }): void { console.log('Event clicked', event); - + + // this.selectedEvent = event; + this.eventSelectedDate = event.start; - this.viewEventDetail(event.id); - /* this.router.navigate(["/home/agenda", event.id, 'agenda']); */ + this.selectedEventId = event.id; + + // this.viewEventDetail(event.id); + + if( window.innerWidth <= 1024){ + this.router.navigate(["/home/agenda", event.id, 'agenda']); + } else { + this.cloneAllmobileComponent(); + this.mobileComponent.showEventDitails = true; + } + } //Show information of the event @@ -263,16 +285,11 @@ export class AgendaPage implements OnInit { // auto scroll timeline setTimeout(() => { const timelineMarker = document.querySelector('.cal-current-time-marker'); - - const timelineContainer = document.querySelector('ion-content#timeline-conteiner'); - - const shadowRoot = timelineContainer.shadowRoot; - - const scrollContainer = shadowRoot.querySelector('main'); + const scrollContainer = document.querySelector('.timeline-wrapper'); try { scrollContainer.scroll({ - top: timelineMarker['offsetTop'] - ((scrollContainer.offsetHeight/2) - 60), + top: timelineMarker['offsetTop'] - ((scrollContainer['offsetHeight']/2) - 60), left: 0, behavior: 'smooth' }) @@ -280,7 +297,6 @@ export class AgendaPage implements OnInit { // } - }, timeout); } @@ -589,33 +605,45 @@ export class AgendaPage implements OnInit { } async openAddEvent() { - const modal = await this.modalCtrl.create({ - component: NewEventPage, - componentProps:{ - segment: this.segment, - profile: this.profile, - eventSelectedDate: this.eventSelectedDate - }, - cssClass: 'modal', - backdropDismiss: false - }); - await modal.present(); - modal.onDidDismiss().then((data) => { - let postEvent: Event = data['data']; - if (postEvent.Subject != null) - { - this.eventSource.push({ - title: postEvent.Subject, - startTime: new Date(postEvent.StartDate), - endTime: new Date(postEvent.EndDate), - allDay: false, - event: postEvent - }); - this.myCal.update(); - this.myCal.loadEvents(); - this.loadRangeEvents(this.rangeStartDate, this.rangeEndDate); - } - }); + + if( window.innerWidth <= 1024){ + const modal = await this.modalCtrl.create({ + component: NewEventPage, + componentProps:{ + segment: this.segment, + profile: this.profile, + eventSelectedDate: this.eventSelectedDate + }, + cssClass: 'modal', + backdropDismiss: false + }); + await modal.present(); + modal.onDidDismiss().then((data) => { + this.openAddEventDismiss(data['data']) + }); + } else { + this.mobileComponent.showAddNewEvent = true; + } + } + + openAddEventDismiss(data){ + this.cloneAllmobileComponent(); + + let postEvent: Event = data; + if (postEvent.Subject != null) + { + this.eventSource.push({ + title: postEvent.Subject, + startTime: new Date(postEvent.StartDate), + endTime: new Date(postEvent.EndDate), + allDay: false, + event: postEvent + }); + this.myCal.update(); + this.myCal.loadEvents(); + this.loadRangeEvents(this.rangeStartDate, this.rangeEndDate); + } + this.mobileComponent.showAddNewEvent = false; } async viewEventDetail(eventId:any) { @@ -632,12 +660,29 @@ export class AgendaPage implements OnInit { await modal.present(); modal.onDidDismiss().then((res)=>{ if(res){ - console.log(res); - this.loadRangeEvents(this.rangeStartDate, this.rangeEndDate); + this.viewEventDetailDismiss(res); } }); } + async viewEventDetailDismiss(data){ + + await this.cloneAllmobileComponent() + + if (data.type == 'edit'){ + + this.selectedEvent = data.event; + this.postEvent = data.event; + + console.log(this.selectedEvent); + + this.mobileComponent.showEditEvent = true; + + } + + this.loadRangeEvents(this.rangeStartDate, this.rangeEndDate); + } + async viewEventsToApprove(){ const modal = await this.modalCtrl.create({ component: EventListPage, @@ -649,4 +694,15 @@ export class AgendaPage implements OnInit { await modal.present(); modal.onDidDismiss(); } + + async cloneAllmobileComponent(){ + + this.mobileComponent= { + showAddNewEvent: false, + showEditEvent: false, + showEventDitails: false, + } + + } + } \ No newline at end of file diff --git a/src/app/pages/agenda/edit-event/edit-event.page.ts b/src/app/pages/agenda/edit-event/edit-event.page.ts index 1191e66de..0d00866fd 100644 --- a/src/app/pages/agenda/edit-event/edit-event.page.ts +++ b/src/app/pages/agenda/edit-event/edit-event.page.ts @@ -1,7 +1,5 @@ import { Component, OnInit } from '@angular/core'; import { AlertController, ModalController, NavParams } from '@ionic/angular'; -import { AuthConnstants } from 'src/app/config/auth-constants'; -import { Attachment } from 'src/app/models/attachment.model'; import { EventBody } from 'src/app/models/eventbody.model'; import { EventPerson } from 'src/app/models/eventperson.model'; import { AlertService } from 'src/app/services/alert.service'; diff --git a/src/app/pages/agenda/new-event/new-event.page.html b/src/app/pages/agenda/new-event/new-event.page.html index ba216ec40..25bf81aa3 100644 --- a/src/app/pages/agenda/new-event/new-event.page.html +++ b/src/app/pages/agenda/new-event/new-event.page.html @@ -204,7 +204,7 @@
- + Cancelar diff --git a/src/app/pages/agenda/view-event/view-event.page.ts b/src/app/pages/agenda/view-event/view-event.page.ts index d63990cdb..e9552d272 100644 --- a/src/app/pages/agenda/view-event/view-event.page.ts +++ b/src/app/pages/agenda/view-event/view-event.page.ts @@ -126,6 +126,4 @@ export class ViewEventPage implements OnInit { browser.show(); } - - } diff --git a/src/app/shared/agenda/edit-event/edit-event.component.html b/src/app/shared/agenda/edit-event/edit-event.component.html new file mode 100644 index 000000000..3f450ca4f --- /dev/null +++ b/src/app/shared/agenda/edit-event/edit-event.component.html @@ -0,0 +1,230 @@ + + +
+
+
+ Editar Evento +
+
+
+
+ + + +
+
+ +
+
+
+
+ +
+
+ +
+
+ + + +
+ +
+
+
+ +
+
+ + Oficial + Pessoal + +
+
+
+ +
+
+
+ +
+
+ + Reunião + Viagem + Conferência + Encontro + +
+
+
+ +
+
+
+ +
+
+ + + +
+
+
+ +
+
+
+ +
+
+ + + +
+
+
+ +
+
+
+ +
+
+ + Não se repete + Repete + +
+
+
+ +
+
+
+ +
+
+
+ + + Ver ou editar participantes + + + +
+
+ +
+
+
+
+ + + +
+
+
+ +
+
+ +
+
+
+ + + + +
+ + + + + + + Cancelar + + + + + + Gravar + + + diff --git a/src/app/shared/agenda/edit-event/edit-event.component.scss b/src/app/shared/agenda/edit-event/edit-event.component.scss new file mode 100644 index 000000000..1515a515b --- /dev/null +++ b/src/app/shared/agenda/edit-event/edit-event.component.scss @@ -0,0 +1,177 @@ +ion-content{ + --background:transparent; +} +.header-toolbar{ + --background:transparent; + --opacity: 1; +} + .main-header{ + width: 100%; /* 400px */ + height: 100%; + font-family: Roboto; + border-top-left-radius: 25px; + border-top-right-radius: 25px; + background-color: #fff; + overflow:hidden; + padding: 30px 20px 0px 20px; + color:#000; + transform: translate3d(0, 1px, 0); + + .title-content{ + width: 360px; + margin: 0px auto; + overflow: auto; + padding: 0 !important; + background: #fff; + .middle{ + padding: 0!important; + float: left; + width: 221px; + margin: 2.5px 0 0 5px; + } + } + + .title{ + font-size: 25px; + } + + } + .main-content{ + width: 100%; /* 400px */ + height: 100%; + font-family: Roboto; + margin: 0 auto; + background-color: #fff; + overflow:auto; + padding: 15px 20px 0 20px; + + .ion-item-container{ + width: 360px; + margin: 15px auto; + border: 1px solid #ebebeb; + border-radius: 5px; + padding-left: 10px; + } + .ion-item-container-no-border{ + width: 100%; + margin: 0px auto; + padding: 0 !important; + overflow: auto; + } + .container-div{ + margin-bottom: 15px; + overflow: auto; + } + .ion-item-class-2{ + width: 360px; + margin: 0px auto; + } + .ion-icon-class{ + width: 45px; + height: 45px; + float: left; + padding: 10px; + font-size: 25px; + } + ion-select{ + padding-left: 5px; + margin-left: 0; + } + .ion-input-class{ + width: 315px; + height: 45px; + border: 1px solid #ebebeb; + border-radius: 5px; + padding-left: 5px; + padding-right: 10px; + float: left; + } + .ion-input-class-no-height{ + border: 1px solid #ebebeb; + border-radius: 5px; + overflow: auto; + } + .list-people{ + width: 256px; + float: left; + + } + .add-people{ + width: 45px; + float: right; + overflow: auto; + font-size: 25px; + padding: 10px; + } + .list-people-title{ + /* font-size: 13px; */ + color: #797979; + } + .attach-document{ + font-size: 15px; + color: #0d89d1; + margin: 5px 5px 5px 10px; + padding: 5px; + float: left; + } + .attach-icon{ + width: 37px; + font-size: 35px; + float: left; + } + .attach-title-item{ + width: 100%; + font-size: 15px; + color:#0d89d1; + } + /* SPAN */ + .span-left{ + float: left; + font-size: 15x; + } + .span-right{ + text-align: right; + float: right; + font-size: 13px; + } + .container-footer{ + margin:0 auto; + overflow: auto; + } + .button-cancel { + width: 170px; + height: 44px; + border-radius: 22.5px; + --background: #e0e9ee; + --color: #061b52; + margin:10px; + } + .button-save { + width: 170px; + height: 44px; + border-radius: 22.5px; + --background: #42b9fe; + --color:#ffffff; + margin:10px; + } + + .text-input{ + width: 100%; + border: 1px solid #ebebeb; + margin: 0px 15px 15px 0px; + padding: 0 !important; + border-radius: 5px; + } + + /* Error Messages */ + .error{ + color:red; + font-size: 12px; + font-weight: bold; + padding-bottom: 20px; + } + .span-color{ + color:red; + } + + } \ No newline at end of file diff --git a/src/app/shared/agenda/edit-event/edit-event.component.spec.ts b/src/app/shared/agenda/edit-event/edit-event.component.spec.ts new file mode 100644 index 000000000..f0db40f8a --- /dev/null +++ b/src/app/shared/agenda/edit-event/edit-event.component.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { EditEventComponent } from './edit-event.component'; + +describe('EditEventComponent', () => { + let component: EditEventComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EditEventComponent ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(EditEventComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/agenda/edit-event/edit-event.component.ts b/src/app/shared/agenda/edit-event/edit-event.component.ts new file mode 100644 index 000000000..b7c7e4e3e --- /dev/null +++ b/src/app/shared/agenda/edit-event/edit-event.component.ts @@ -0,0 +1,95 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; +import { ModalController } from '@ionic/angular'; +import { EventBody } from 'src/app/models/eventbody.model'; +import { EventPerson } from 'src/app/models/eventperson.model'; +import { EventsService } from 'src/app/services/events.service'; +import { Event } from 'src/app/models/event.model'; +import { AttendeesPage } from 'src/app/pages/events/attendees/attendees.page'; +import { AlertController, NavParams } from '@ionic/angular'; +import { AlertService } from 'src/app/services/alert.service'; + + +@Component({ + selector: 'app-edit-event', + templateUrl: './edit-event.component.html', + styleUrls: ['./edit-event.component.scss'], +}) +export class EditEventComponent implements OnInit { + + stEvent: Event; + isRecurring:string; + isEventEdited: boolean; + loadedEvent: Event; + eventBody: EventBody; + segment:string = "true"; + eventAttendees: EventPerson[]; + minDate: string; + + @Input() profile:string; + @Input() selectedSegment: string; + @Input() postEvent: any; + + + @Output() cloneAllmobileComponent = new EventEmitter(); + + + constructor( + private modalController: ModalController, + private eventsService: EventsService, + public alertController: AlertController, + ) { + + } + + ngOnInit() { + this.isEventEdited = false; + + if(this.postEvent.IsRecurring == false){ + this.isRecurring = "Não se repete"; + } + else{ + this.isRecurring = "Repete"; + } + } + close(){ + // this.modalController.dismiss(); + this.cloneAllmobileComponent.emit(); + } + save(){ + + this.eventsService.editEvent(this.postEvent, 2, 3).subscribe(async () => { + const alert = await this.alertController.create({ + cssClass: 'my-custom-class', + header: 'Evento actualizado', + buttons: ['OK'] + }); + await alert.present(); + }); + this.isEventEdited = true; + // this.modalController.dismiss(this.isEventEdited); + this.cloneAllmobileComponent.emit(this.isEventEdited); + } + + async openAttendees() + { + const modal = await this.modalController.create({ + component: AttendeesPage, + componentProps: { + eventAttendees: this.postEvent.Attendees + }, + cssClass: 'attendee', + backdropDismiss: false + }); + + await modal.present(); + + modal.onDidDismiss().then((data) => { + if (data['data'] != null) + { + let newattendees: EventPerson[] = data['data']; + this.postEvent.Attendees = newattendees; + } + }); +} + +} diff --git a/src/app/shared/agenda/new-event/new-event.component.html b/src/app/shared/agenda/new-event/new-event.component.html new file mode 100644 index 000000000..98d05e4ef --- /dev/null +++ b/src/app/shared/agenda/new-event/new-event.component.html @@ -0,0 +1,220 @@ + + +
+
+
+ Novo Evento1 +
+
+
+
+
+ + +
+
+ +
+
+
+
+ +
+
+ +
+
+ + + +
+ +
+
+
+ +
+
+ + Oficial + Pessoal + +
+
+
+ +
+
+
+ +
+
+ + Reunião + Viagem + Conferência + Encontro + +
+
+
+ +
+
+
+ +
+
+ + + +
+
+
+ +
+
+
+ +
+
+ + + +
+
+
+ +
+
+
+ +
+
+ + Não se repete + Repete + +
+
+
+ +
+
+
+ +
+
+
+ + + Adicionar participantes + + + +
+
+ +
+
+
+
+ + + +
+
+
+ +
+
+ +
+
+
+ + + + +
+
+ + + + + Cancelar + + + + + + Gravar + + + + \ No newline at end of file diff --git a/src/app/shared/agenda/new-event/new-event.component.scss b/src/app/shared/agenda/new-event/new-event.component.scss new file mode 100644 index 000000000..c42523a74 --- /dev/null +++ b/src/app/shared/agenda/new-event/new-event.component.scss @@ -0,0 +1,178 @@ +ion-content{ + --background:transparent; +} +.header-toolbar{ + --background:transparent; + --opacity: 1; +} +.main-header{ + width: 100%; /* 400px */ + height: 100%; + font-family: Roboto; + border-top-left-radius: 25px; + border-top-right-radius: 25px; + background-color: #fff; + overflow:hidden; + padding: 30px 20px 0px 20px; + color:#000; + transform: translate3d(0, 1px, 0); + + .title-content{ + width: 360px; + margin: 0px auto; + overflow: auto; + padding: 0 !important; + background: #fff; + .middle{ + padding: 0!important; + float: left; + width: 221px; + margin: 2.5px 0 0 5px; + } + } + + .title{ + font-size: 25px; + } + +} +.main-content{ + width: 100%; /* 400px */ + height: 100%; + font-family: Roboto; + margin: 0 auto; + background-color: #fff; + overflow:auto; + padding: 15px 20px 0 20px; + + .ion-item-container{ + width: 360px; + margin: 15px auto; + border: 1px solid #ebebeb; + border-radius: 5px; + padding-left: 10px; + } + .ion-item-container-no-border{ + width: 100%; + margin: 0px auto; + padding: 0 !important; + overflow: auto; + } + .container-div{ + margin-bottom: 15px; + overflow: auto; + } + .ion-item-class-2{ + width: 360px; + margin: 0px auto; + } + .ion-icon-class{ + width: 45px; + height: 45px; + float: left; + padding: 10px; + font-size: 25px; + } + ion-select{ + padding-left: 5px; + margin-left: 0; + } + .ion-input-class{ + width: 315px; + height: 45px; + border: 1px solid #ebebeb; + border-radius: 5px; + padding-left: 5px; + padding-right: 10px; + float: left; + } + .ion-input-class-no-height{ + border: 1px solid #ebebeb; + border-radius: 5px; + overflow: auto; + } + .list-people{ + width: 256px; + float: left; + + } + .add-people{ + width: 45px; + float: right; + overflow: auto; + font-size: 25px; + padding: 10px; + } + .list-people-title{ + /* font-size: 13px; */ + color: #797979; + } + .attach-document{ + font-size: 15px; + color: #0d89d1; + margin: 5px 5px 5px 10px; + padding: 5px; + float: left; + } + .attach-icon{ + width: 37px; + font-size: 35px; + float: left; + } + .attach-title-item{ + width: 100%; + font-size: 15px; + color:#0d89d1; + } + /* SPAN */ + .span-left{ + float: left; + font-size: 15x; + } + .span-right{ + text-align: right; + float: right; + font-size: 13px; + } + .container-footer{ + margin:0 auto; + overflow: auto; + } + .button-cancel { + width: 170px; + height: 44px; + border-radius: 22.5px; + --background: #e0e9ee; + --color: #061b52; + margin:10px; + } + .button-save { + width: 170px; + height: 44px; + border-radius: 22.5px; + --background: #42b9fe; + --color:#ffffff; + margin:10px; + } + + .text-input{ + width: 100%; + border: 1px solid #ebebeb; + margin: 0px 15px 15px 0px; + padding: 0 !important; + border-radius: 5px; + } + + /* Error Messages */ + .error{ + color:red; + font-size: 12px; + font-weight: bold; + padding-bottom: 20px; + } + .span-color{ + color:red; + } + +} + diff --git a/src/app/components/calendar/calendar.component.spec.ts b/src/app/shared/agenda/new-event/new-event.component.spec.ts similarity index 59% rename from src/app/components/calendar/calendar.component.spec.ts rename to src/app/shared/agenda/new-event/new-event.component.spec.ts index de2551126..2930af086 100644 --- a/src/app/components/calendar/calendar.component.spec.ts +++ b/src/app/shared/agenda/new-event/new-event.component.spec.ts @@ -1,19 +1,19 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; -import { CalendarComponent } from './calendar.component'; +import { NewEventPage } from './new-event.component'; -describe('CalendarComponent', () => { - let component: CalendarComponent; - let fixture: ComponentFixture; +describe('NewEventPage', () => { + let component: NewEventPage; + let fixture: ComponentFixture; beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [ CalendarComponent ], + declarations: [ NewEventPage ], imports: [IonicModule.forRoot()] }).compileComponents(); - fixture = TestBed.createComponent(CalendarComponent); + fixture = TestBed.createComponent(NewEventPage); component = fixture.componentInstance; fixture.detectChanges(); })); diff --git a/src/app/shared/agenda/new-event/new-event.component.ts b/src/app/shared/agenda/new-event/new-event.component.ts new file mode 100644 index 000000000..9fea4813e --- /dev/null +++ b/src/app/shared/agenda/new-event/new-event.component.ts @@ -0,0 +1,132 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; +import { EventBody } from 'src/app/models/eventbody.model'; +import { EventPerson } from 'src/app/models/eventperson.model'; +import { EventsService } from 'src/app/services/events.service'; +import { Event } from 'src/app/models/event.model'; +import { AttendeesPage } from 'src/app/pages/events/attendees/attendees.page'; +import { ModalController } from '@ionic/angular'; + + +@Component({ + selector: 'app-new-event', + templateUrl: './new-event.component.html', + styleUrls: ['./new-event.component.scss'], +}) +export class NewEventPage implements OnInit { + postEvent: Event; + eventBody: EventBody; + segment:string = "true"; + eventAttendees: EventPerson[]; + + @Input() profile:string; + @Input() selectedSegment: string; + @Input() selectedDate: Date; + + @Output() onAddEvent = new EventEmitter(); + + minDate: string; + + constructor( + private modalController: ModalController, + //private navParams: NavParams, + private eventService: EventsService, + ) { + this.postEvent = new Event(); + this.eventBody = { BodyType : "1", Text : ""}; + this.postEvent.Body = this.eventBody; + } + + ngOnInit() { + + console.log(this.profile); + + let selectedStartdDate = this.selectedDate; + let selectedEndDate = new Date(this.selectedDate); + /* Set + 30minutes to seleted datetime */ + selectedEndDate.setMinutes(this.selectedDate.getMinutes() + 30) ; + this.minDate = this.selectedDate.toString(); + + if(this.selectedSegment != "Combinada"){ + this.postEvent ={ + EventId: '', + Subject: '', + Body: this.eventBody, + Location: '', + CalendarId: '', + CalendarName: this.selectedSegment, + StartDate: selectedStartdDate, + EndDate: new Date(selectedEndDate), + EventType: 'Reunião', + Attendees: null, + IsMeeting: false, + IsRecurring: false, + AppointmentState: 0, + TimeZone: '', + Organizer: '', + Categories: ['Reunião'], + HasAttachments: false, + }; + } + else{ + this.postEvent ={ + EventId: '', + Subject: '', + Body: this.eventBody, + Location: '', + CalendarId: '', + CalendarName: 'Oficial', + StartDate: selectedStartdDate, + EndDate: new Date(selectedEndDate), + EventType: 'Reunião', + Attendees: null, + IsMeeting: false, + IsRecurring: false, + AppointmentState: 0, + TimeZone: '', + Organizer: '', + Categories: ['Reunião'], + HasAttachments: false, + }; + } + } + close(){ + this.modalController.dismiss(); + } + save(){ + console.log(this.postEvent); + console.log(this.profile); + + + if(this.profile=='mdgpr'){ + this.eventService.postEventMd(this.postEvent, this.postEvent.CalendarName).subscribe(); + } + else if(this.profile=='pr'){ + this.eventService.postEventPr(this.postEvent, this.postEvent.CalendarName).subscribe(); + } + + this.onAddEvent.emit(this.postEvent); + } + + async openAttendees() + { + const modal = await this.modalController.create({ + component: AttendeesPage, + componentProps: { + eventAttendees: this.postEvent.Attendees + }, + cssClass: 'attendee', + backdropDismiss: false + }); + + await modal.present(); + + modal.onDidDismiss().then((data) => { + if (data['data'] != null) + { + let newattendees: EventPerson[] = data['data']; + this.postEvent.Attendees = newattendees; + } + }); +} + +} diff --git a/src/app/shared/agenda/view-event/view-event-routing.module.ts b/src/app/shared/agenda/view-event/view-event-routing.module.ts new file mode 100644 index 000000000..37a7a0172 --- /dev/null +++ b/src/app/shared/agenda/view-event/view-event-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { ViewEventPage } from './view-event.page'; + +const routes: Routes = [ + { + path: '', + component: ViewEventPage + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class ViewEventPageRoutingModule {} diff --git a/src/app/shared/agenda/view-event/view-event.module.ts b/src/app/shared/agenda/view-event/view-event.module.ts new file mode 100644 index 000000000..b2e97a22b --- /dev/null +++ b/src/app/shared/agenda/view-event/view-event.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 { ViewEventPageRoutingModule } from './view-event-routing.module'; + +import { ViewEventPage } from './view-event.page'; +import { SharedModule } from 'src/app/shared/shared.module'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + SharedModule, + ViewEventPageRoutingModule + ], + declarations: [ViewEventPage] +}) +export class ViewEventPageModule {} diff --git a/src/app/shared/agenda/view-event/view-event.page.html b/src/app/shared/agenda/view-event/view-event.page.html new file mode 100644 index 000000000..9caa1d5e5 --- /dev/null +++ b/src/app/shared/agenda/view-event/view-event.page.html @@ -0,0 +1,69 @@ + + +
+
+
+ +
+
+ {{loadedEvent.Subject}} +
+
+ + +
+
+
+
+ + + +
+
+
+
+ {{loadedEvent.Location}} +
+
+ {{loadedEvent.CalendarName}} +
+
+
+ +

{{customDate}}

+

das {{loadedEvent.StartDate | date: 'HH:mm'}} às {{loadedEvent.EndDate | date: 'HH:mm'}}

+

(Não se repete)

+

Repete

+
+
+
+
+ + +

Intervenientes

+
+

{{attendee.Name}}

+
+
+
+ + +

Detalhes

+

{{loadedEvent.Body.Text}}

+
+
+
+ +
+ +

Documentos Anexados

+ + +

{{attach.SourceName}}

+

{{attach.Stakeholders}}{{ attach.CreateDate | date: 'dd-MM-yy' }}

+
+
+
+
+
diff --git a/src/app/shared/agenda/view-event/view-event.page.scss b/src/app/shared/agenda/view-event/view-event.page.scss new file mode 100644 index 000000000..c2de1475b --- /dev/null +++ b/src/app/shared/agenda/view-event/view-event.page.scss @@ -0,0 +1,191 @@ +ion-content{ + --background:transparent; + --padding-top:0px; + --padding-start: 20px; + --padding-end: 20px; + font-size: 18px; +} +ion-menu{ + --height: 225px; + } +.header-toolbar{ + --background:transparent; + --opacity: 1; +} + .main-header{ + width: 100%; /* 400px */ + height: 100%; + font-family: Roboto; + border-top-left-radius: 25px; + border-top-right-radius: 25px; + background-color: #fff; + overflow:hidden; + padding: 30px 0px 0px 0px; + color:#000; + transform: translate3d(0, 1px, 0); + + .title-content{ + width: 360px; + margin: 0px auto; + overflow: auto; + padding: 0 !important; + background: #fff; + + .left{ + width: 37px; + float: left; + font-size: 35px; + overflow: hidden; + } + .middle{ + width: 230px; + padding: 0!important; + float: left; + margin: 2.5px 0 0 0; + } + .header-icon-right{ + width: 45px; + font-size: 45px; + float: right; + overflow: auto; + } + .div-icon{ + width: 92px; + float: right; + overflow: auto; + padding: 1px; + } + .div-icon .edit{ + font-size: 35px; + float: left; + } + .div-icon .delete{ + padding: 7px; + font-size: 21px; + color:#fff; + background: #d30606; + border-radius: 20px; + margin-left: 10px; + } + } + + .title{ + font-size: 25px; + } + + } + .main-content{ + width: 100%; /* 400px */ + font-family: Roboto; + margin: 0 auto; + background-color: #fff; + overflow:auto; + padding: 15px 0px 0 0px; + + .upper-content{ + margin-left: 50px; + overflow: auto; + font-size: 18px; + + .content-location{ + width: 100%; + margin: 0 auto; + padding: 0; + overflow: auto; + } + + .location-detail{ + width: 210px; + font-weight: 700; + font-size: 18px; + float: left; + margin: 5px 5px 5px 0px; + } + .button-mdgpr-Oficial{ + width: 91px; + --border-radius: 20px; + --background: #ffb703; + margin-left: 5px; + float: left; + } + .button-mdgpr-Pessoal{ + width: 91px; + --border-radius: 20px; + --background: #f05d5e; + margin-left: 5px; + float: left; + } + + .button-pr-Oficial{ + width: 91px; + --border-radius: 20px; + --background: #cbeecb; + margin-left: 5px; + float: left; + } + .button-pr-Pessoal{ + width: 91px; + --border-radius: 20px; + --background: #cab0dc; + margin-left: 5px; + float: left; + } + + + .button-calendar-type ion-button{ + height: 25px; + } + .button-edit-event { + width: 140px; + height: 44px; + border-radius: 22.5px; + --background: #e0e9ee; + --color:#061b52; + } + .content-details p{ + font-size: 16px; + } + } + .middle-conten{ + .middle-content h3, .middle-content p{ + font-size: 16px; + } + } + + .bottom-content{ + width: 360px; + margin: 0 auto; + + .bottom-content h3{ + font-size: 16px; + margin: 0 0 0 10px; + } + .attach-document{ + font-size: 15px; + color: #0d89d1; + margin: 5px 5px 5px 10px; + padding: 5px; + float: left; + } + .attach-icon{ + width: 37px; + font-size: 35px; + float: left; + } + .attach-title-item{ + width: 100%; + font-size: 15px; + color:#0d89d1; + } + /* SPAN */ + .span-left{ + float: left; + font-size: 15x; + } + .span-right{ + text-align: right; + float: right; + font-size: 13px; + } + } + } \ No newline at end of file diff --git a/src/app/shared/agenda/view-event/view-event.page.spec.ts b/src/app/shared/agenda/view-event/view-event.page.spec.ts new file mode 100644 index 000000000..d13628ede --- /dev/null +++ b/src/app/shared/agenda/view-event/view-event.page.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { ViewEventPage } from './view-event.page'; + +describe('ViewEventPage', () => { + let component: ViewEventPage; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ViewEventPage ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(ViewEventPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/agenda/view-event/view-event.page.ts b/src/app/shared/agenda/view-event/view-event.page.ts new file mode 100644 index 000000000..701e996fc --- /dev/null +++ b/src/app/shared/agenda/view-event/view-event.page.ts @@ -0,0 +1,111 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; +import { AlertController, ModalController, NavParams } from '@ionic/angular'; +import { Attachment } from 'src/app/models/attachment.model'; +import { EventBody } from 'src/app/models/eventbody.model'; +import { AttachmentsService } from 'src/app/services/attachments.service'; +import { EventsService } from 'src/app/services/events.service'; +import { Event } from 'src/app/models/event.model'; +import { EditEventPage } from 'src/app/pages/agenda/edit-event/edit-event.page'; +import { InAppBrowser } from '@ionic-native/in-app-browser/ngx'; + +@Component({ + selector: 'app-view-event', + templateUrl: './view-event.page.html', + styleUrls: ['./view-event.page.scss'], +}) +export class ViewEventPage implements OnInit { + + loadedEvent: Event; + isEventEdited: boolean; + eventBody: EventBody; + loadedAttachments:any; + loadedEventAttachments: Attachment[]; + pageId: string; + showLoader: boolean; + + minDate: Date; + + customDate:any; + today:any; + + months = ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"]; + days = ["Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado"]; + + @Input() profile:string; + @Input() eventId: string; + + @Output() viewEventDetailDismiss = new EventEmitter(); + + constructor( + private eventsService: EventsService, + private attachmentsService: AttachmentsService, + public alertController: AlertController, + private iab: InAppBrowser, + ) + { + this.isEventEdited = false; + this.loadedEvent = new Event(); + this.eventBody = { BodyType : "1", Text : ""}; + this.loadedEvent.Body = this.eventBody; + } + + ngOnInit() { + /* console.log(this.eventId); */ + this.loadEvent(); + this.getAttachments(); + + } + close(){ + console.log(this.isEventEdited); + + this.viewEventDetailDismiss.emit({ + type: 'close' + }) + } + + loadEvent(){ + this.eventsService.getEvent(this.eventId).subscribe(res => { + this.loadedEvent = res; + + console.log(res); + + this.today = new Date(res.StartDate); + console.log(new Date(this.today)); + this.customDate = this.days[this.today.getDay()]+ ", " + this.today.getDate() +" de " + ( this.months[this.today.getMonth()]); + }); + } + deleteEvent(){ + this.eventsService.deleteEvent(this.loadedEvent.EventId, 0).subscribe(async () => + { + const alert = await this.alertController.create({ + cssClass: 'my-custom-class', + header: 'Evento removido', + buttons: ['OK'] + }); + + await alert.present(); + this.close(); + }); + } + + getAttachments(){ + this.attachmentsService.getAttachmentsById(this.eventId).subscribe(res=>{ + this.loadedAttachments = res; + console.log(res); + }); + } + + async editEvent() { + + this.viewEventDetailDismiss.emit({ + type: 'edit', + event: this.loadedEvent + }) + } + viewDocument(){ + const url: string = this.loadedAttachments.DocumentURL.replace("webTRIX.Viewer","webTRIX.Viewer.Branch1"); + const browser = this.iab.create(url,"_blank"); + browser.show(); + } + +} diff --git a/src/style/main.scss b/src/style/main.scss index b10b6ba43..6bbe20225 100644 --- a/src/style/main.scss +++ b/src/style/main.scss @@ -156,4 +156,85 @@ } .align-self-stretch { align-self: stretch !important; +} + + + + + +.m-t-20 { + margin-top: 20px; +} + +.m-b-20 { + margin-bottom: 20px; +} + +.m-l-20 { + margin-left: 20px; +} + +.m-l-auto { + margin-left: auto; +} + +.m-r-20 { + margin-right: 20px; +} + +.m-auto { + margin: 0 auto; +} + +.pd-10 { + padding: 10px; + box-sizing: border-box; +} + +.pd-t-20 { + padding-top: 20px; +} + +.pd-b-20 { + padding-bottom: 20px; +} + +.pd-r-20 { + padding-right: 20px; +} + +.pd-l-20 { + padding-left: 20px; +} + +.text-bold { + font-weight: 700; +} + +.text-blue { + color: #0d89d1; +} + +.text-red { + color: #d30a0a; +} + +.text-dark-blue { + color: #061b52; +} + +.text-grey { + color: #797979; +} + +.text-white { + color: white; +} + +.text-black { + color: black; +} + +.text-center { + text-align: center; } \ No newline at end of file