Merge branch 'developer-c' into mobilefirst

This commit is contained in:
Eudes Inácio
2021-04-07 09:14:58 +01:00
46 changed files with 1461 additions and 441 deletions
+4
View File
@@ -152,6 +152,10 @@ const routes: Routes = [
}, },
] ]
}, },
{
path:'new-publication',
loadChildren: ()=> import('../shared/publication/new-publication/new-publication.module').then(m => m.NewPublicationPageModule)
},
] ]
}, },
{ {
+6
View File
@@ -334,6 +334,7 @@
<app-new-event *ngIf="mobileComponent.showAddNewEvent" <app-new-event *ngIf="mobileComponent.showAddNewEvent"
[profile]="profile" [profile]="profile"
[selectedSegment]=segment [selectedSegment]=segment
[taskParticipants]="taskParticipants"
[selectedDate]="eventSelectedDate" [selectedDate]="eventSelectedDate"
(onAddEvent)="openAddEventDismiss($event)" (onAddEvent)="openAddEventDismiss($event)"
(openAttendeesComponent)="openAttendeesComponent($event)" (openAttendeesComponent)="openAttendeesComponent($event)"
@@ -385,6 +386,11 @@
[eventAttendees]="contacts" [eventAttendees]="contacts"
(closeComponent)="GoBackEditOrAdd()" (closeComponent)="GoBackEditOrAdd()"
(setContact)="setContact($event)" (setContact)="setContact($event)"
[adding]="adding"
[taskParticipants]="taskParticipants"
[taskParticipantsCc]="taskParticipantsCc"
(setIntervenient)="setIntervenient($event)"
(setIntervenientCC)="setIntervenientCC($event)"
> >
</app-attendee-modal> </app-attendee-modal>
+17 -11
View File
@@ -94,6 +94,11 @@ export class AgendaPage implements OnInit {
selectedEventId: string | number; selectedEventId: string | number;
postEvent: any; postEvent: any;
taskParticipants: any = [];
taskParticipantsCc: any = [];
adding: "intervenient" | "CC" = "intervenient";
@ViewChild(CalendarComponent) myCal: CalendarComponent; @ViewChild(CalendarComponent) myCal: CalendarComponent;
segment: "Combinado" | "Pessoal" | "Oficial"; segment: "Combinado" | "Pessoal" | "Oficial";
@@ -259,14 +264,14 @@ export class AgendaPage implements OnInit {
onTimeSelected = (ev: { selectedTime: Date, events: any[] }) => { onTimeSelected = (ev: { selectedTime: Date, events: any[] }) => {
console.log('Selected time: ' + ev.selectedTime + ', hasEvents: ' + (ev.events !== undefined && ev.events.length !== 0)); console.log('Selected time: ' + ev.selectedTime + ', hasEvents: ' + (ev.events !== undefined && ev.events.length !== 0));
this.eventSelectedDate2 = ev.selectedTime; this.eventSelectedDate2 = ev.selectedTime;
}; }
onRangeChanged (ev: { startTime: Date, endTime: Date }) { onRangeChanged (ev: { startTime: Date, endTime: Date }) {
this.rangeStartDate = ev.startTime; this.rangeStartDate = ev.startTime;
this.rangeEndDate = ev.endTime; this.rangeEndDate = ev.endTime;
this.loadRangeEvents(this.rangeStartDate, this.rangeEndDate); this.loadRangeEvents(this.rangeStartDate, this.rangeEndDate);
}; }
async openCalModal() { async openCalModal() {
const modal = await this.modalCtrl.create({ const modal = await this.modalCtrl.create({
@@ -912,10 +917,6 @@ export class AgendaPage implements OnInit {
this.selectedEvent = data.event; this.selectedEvent = data.event;
this.postEvent = data.event; this.postEvent = data.event;
console.log(this.selectedEvent);
console.log(this.postEvent);
this.mobileComponent.showEditEvent = true; this.mobileComponent.showEditEvent = true;
} }
@@ -946,8 +947,6 @@ export class AgendaPage implements OnInit {
approveEventDismiss({saveData, serialNumber, action}){ approveEventDismiss({saveData, serialNumber, action}){
console.log(saveData);
if(action == 'Aprovar'){ if(action == 'Aprovar'){
this.eventToaprove = { this.eventToaprove = {
back: true, back: true,
@@ -996,7 +995,6 @@ export class AgendaPage implements OnInit {
// open component // open component
async openAttendeesComponent(data){ async openAttendeesComponent(data){
if(Array.isArray(data)){ if(Array.isArray(data)){
if(data.length >= 1){ if(data.length >= 1){
@@ -1027,7 +1025,6 @@ export class AgendaPage implements OnInit {
async GoBackEditOrAdd(){ async GoBackEditOrAdd(){
if(this.showEventEditOrOpen == "edit"){ if(this.showEventEditOrOpen == "edit"){
this.cloneAllmobileComponent(); this.cloneAllmobileComponent();
@@ -1042,7 +1039,6 @@ export class AgendaPage implements OnInit {
} }
//
async closeComponentEditEventOrAdd(){ async closeComponentEditEventOrAdd(){
if(this.IsEvent ='edit') { if(this.IsEvent ='edit') {
@@ -1053,4 +1049,14 @@ export class AgendaPage implements OnInit {
} }
async setIntervenient(data){
this.taskParticipants = data;
this.postEvent
}
async setIntervenientCC(data){
this.taskParticipantsCc = data;
}
} }
@@ -7,6 +7,7 @@ import { IonicModule } from '@ionic/angular';
import { EditEventPageRoutingModule } from './edit-event-routing.module'; import { EditEventPageRoutingModule } from './edit-event-routing.module';
import { EditEventPage } from './edit-event.page'; import { EditEventPage } from './edit-event.page';
import { AttendeeModalPage } from 'src/app/shared/event/attendee-modal/attendee-modal.page';
@NgModule({ @NgModule({
imports: [ imports: [
@@ -15,6 +16,9 @@ import { EditEventPage } from './edit-event.page';
IonicModule, IonicModule,
EditEventPageRoutingModule EditEventPageRoutingModule
], ],
declarations: [EditEventPage] declarations: [
EditEventPage,
AttendeeModalPage
]
}) })
export class EditEventPageModule {} export class EditEventPageModule {}
@@ -1,7 +1,9 @@
<ion-content> <ion-content>
<div class="main-content"> <div class="main-content height-100">
<div class="content d-flex flex-column width-100">
<div class="main-header"> <div class="content d-flex flex-column width-md-100 height-100">
<div class="main-header pt-30 px-20 background-white pb-15">
<ion-header> <ion-header>
<div class="title-content"> <div class="title-content">
<div class="middle"> <div class="middle">
@@ -10,8 +12,10 @@
</div> </div>
</ion-header> </ion-header>
</div> </div>
<ion-item-sliding> <ion-item-sliding class="overflow-y-auto">
<div class="px-20">
<div class="ion-item-container width-100"> <div class="ion-item-container width-100">
<ion-input placeholder="Assunto" [(ngModel)]="postEvent.Subject"></ion-input> <ion-input placeholder="Assunto" [(ngModel)]="postEvent.Subject"></ion-input>
</div> </div>
@@ -130,22 +134,23 @@
</div> </div>
<div class="width-100"> <div class="width-100">
<div class="container-div width-50"> <div class="container-div width-50">
<div class="ion-item-class-2"> <div class="ion-item-class-2">
<div class="ion-icon-class"> <div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-person.svg"></ion-icon> <ion-icon slot="start" src="assets/images/icons-person.svg"></ion-icon>
</div> </div>
<div (click)="openAttendees()" class="ion-input-class-no-height"> <div class="ion-input-class-no-height">
<div class="list-people"> <div class="list-people">
<ion-item lines="none"> <ion-item lines="none">
<ion-list> <ion-list>
<ion-label class="list-people-title">Adicionar Destinatários</ion-label> <ion-label *ngIf="!taskParticipants" class="list-people-title">Adicionar intervenientes</ion-label>
<ion-label hidden >Text</ion-label> <ion-label *ngFor="let participant of taskParticipants">{{participant.Name}}</ion-label>
</ion-list> </ion-list>
</ion-item> </ion-item>
</div> </div>
<div class="add-people"> <div class="add-people">
<ion-icon slot="start" src="assets/images/icons-arrow-forward.svg"></ion-icon> <ion-icon (click)="addParticipants()" slot="start" src="assets/images/icons-arrow-forward.svg"></ion-icon>
</div> </div>
</div> </div>
</div> </div>
@@ -153,27 +158,29 @@
<div class="container-div width-50"> <div class="container-div width-50">
<div class="ion-item-class-2"> <div class="ion-item-class-2">
<div class="ion-icon-class"> <div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-people-cc.svg"></ion-icon> <ion-icon slot="start" src="assets/images/icons-person.svg"></ion-icon>
</div> </div>
<div (click)="openAttendees()" class="ion-input-class-no-height"> <div class="ion-input-class-no-height">
<div class="list-people"> <div class="list-people">
<ion-item lines="none"> <ion-item lines="none">
<ion-list> <ion-list>
<ion-label class="list-people-title">Adicionar CC</ion-label> <ion-label *ngIf="!taskParticipantsCc" class="list-people-title">Adicionar intervenientes</ion-label>
<ion-label hidden >Text</ion-label> <ion-label *ngFor="let participant of taskParticipantsCc">{{participant.Name}}</ion-label>
</ion-list> </ion-list>
</ion-item> </ion-item>
</div> </div>
<div class="add-people"> <div class="add-people">
<ion-icon slot="start" src="assets/images/icons-arrow-forward.svg"></ion-icon> <ion-icon (click)="addParticipantsCC()" slot="start" src="assets/images/icons-arrow-forward.svg"></ion-icon>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="container-div width-100"> </div>
<div class="ion-item-class-2"> </div>
<div class="container-div width-100 pb-20">
<div class="ion-item-class-2 d-flex">
<div class="ion-icon-class"> <div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon> <ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
</div> </div>
@@ -181,7 +188,6 @@
<ion-textarea placeholder="Detalhes" [(ngModel)]="postEvent.Body.Text" rows="6" cols="20"></ion-textarea> <ion-textarea placeholder="Detalhes" [(ngModel)]="postEvent.Body.Text" rows="6" cols="20"></ion-textarea>
</div> </div>
</div> </div>
</div>
<div hidden class="ion-item-container-no-border"> <div hidden class="ion-item-container-no-border">
<ion-label> <ion-label>
@@ -194,6 +200,10 @@
</ion-label> </ion-label>
</div> </div>
</div>
<div hidden> <div hidden>
<ion-item> <ion-item>
<ion-label>Documentos Anexados</ion-label> <ion-label>Documentos Anexados</ion-label>
@@ -208,14 +218,20 @@
</ion-list> </ion-list>
</div> </div>
</ion-item-sliding> </ion-item-sliding>
</div>
<div class="aside-right flex-column height-100">
</div> </div>
<app-attendee-modal class="aside-right flex-column height-100 d-none d-md-flex pt-10"
[taskParticipants]="taskParticipants"
[taskParticipantsCc]="taskParticipantsCc"
[adding]="adding"
(dynamicSetIntervenient)="dynamicSetIntervenient($event)"
></app-attendee-modal>
</div> </div>
</ion-content> </ion-content>
<ion-footer>
<ion-footer class="background-whit">
<div class="buttons"> <div class="buttons">
<button class="btn-cancel" shape="round" (click)="close()">Cancelar</button> <button class="btn-cancel" shape="round" (click)="close()">Cancelar</button>
<button class="btn-ok" shape="round" (click)="save()">Gravar</button> <button class="btn-ok" shape="round" (click)="save()">Gravar</button>
@@ -1,6 +1,10 @@
.title-content::after, .header-md::after{
display: none;
}
.content{ .content{
padding: 30px 20px 0 20px !important;
margin: 0; margin: 0;
float: left; float: left;
border-left: 1px solid #d8d8d8 !important; border-left: 1px solid #d8d8d8 !important;
@@ -8,13 +12,12 @@
.main-header{ .main-header{
font-family: Roboto; font-family: Roboto;
background-color: #fff; background-color: #fff;
overflow:hidden; overflow:hidden;
color:#000;
transform: translate3d(0, 1px, 0); transform: translate3d(0, 1px, 0);
.title-content{ .title-content{
margin: 0px auto; margin: 0px auto;
overflow: auto;
padding: 0 !important; padding: 0 !important;
background: #fff; background: #fff;
.middle{ .middle{
@@ -38,12 +41,10 @@
width: 100%; width: 100%;
margin: 0px auto; margin: 0px auto;
padding: 0 !important; padding: 0 !important;
overflow: auto;
} }
.container-div{ .container-div{
margin-bottom: 15px; margin-bottom: 15px;
float: left; float: left;
overflow: auto;
} }
.ion-item-class-2{ .ion-item-class-2{
margin: 0px auto; margin: 0px auto;
@@ -72,10 +73,8 @@
width: calc(100% - 45px); width: calc(100% - 45px);
border: 1px solid #ebebeb; border: 1px solid #ebebeb;
border-radius: 5px; border-radius: 5px;
overflow: auto;
} }
.list-people{ .list-people{
//width: 256px;
float: left; float: left;
} }
@@ -3,7 +3,6 @@ import { AlertController, ModalController, NavParams } from '@ionic/angular';
import { EventBody } from 'src/app/models/eventbody.model'; import { EventBody } from 'src/app/models/eventbody.model';
import { EventPerson } from 'src/app/models/eventperson.model'; import { EventPerson } from 'src/app/models/eventperson.model';
import { AlertService } from 'src/app/services/alert.service'; import { AlertService } from 'src/app/services/alert.service';
import { AttachmentsService } from 'src/app/services/attachments.service';
import { EventsService } from 'src/app/services/events.service'; import { EventsService } from 'src/app/services/events.service';
import { Event } from '../../../models/event.model'; import { Event } from '../../../models/event.model';
import { AttendeesPage } from '../../events/attendees/attendees.page'; import { AttendeesPage } from '../../events/attendees/attendees.page';
@@ -27,6 +26,11 @@ export class EditEventPage implements OnInit {
selectedDate: Date; selectedDate: Date;
minDate: string; minDate: string;
taskParticipants: any = [];
taskParticipantsCc: any = [];
adding: "intervenient" | "CC" = "intervenient";
constructor( constructor(
private modalController: ModalController, private modalController: ModalController,
private navParams: NavParams, private navParams: NavParams,
@@ -36,6 +40,18 @@ export class EditEventPage implements OnInit {
) { ) {
this.isEventEdited = false; this.isEventEdited = false;
this.postEvent = this.navParams.get('event'); this.postEvent = this.navParams.get('event');
this.taskParticipants = [];
this.taskParticipantsCc = [];
if(this.postEvent.Attendees == null){
this.taskParticipants = []
} else {
this.taskParticipants = this.postEvent.Attendees;
}
this.taskParticipantsCc = [];
if(this.postEvent.IsRecurring == false){ if(this.postEvent.IsRecurring == false){
this.isRecurring = "Não se repete"; this.isRecurring = "Não se repete";
} }
@@ -46,8 +62,6 @@ export class EditEventPage implements OnInit {
} }
ngOnInit() { ngOnInit() {
console.log(this.profile);
console.log(this.postEvent);
window.onresize = (event) => { window.onresize = (event) => {
// if not mobile remove all component // if not mobile remove all component
@@ -75,8 +89,9 @@ export class EditEventPage implements OnInit {
this.modalController.dismiss(this.isEventEdited); this.modalController.dismiss(this.isEventEdited);
} }
async openAttendees() async openAttendees(){
{
if(window.innerWidth <= 1024) {
const modal = await this.modalController.create({ const modal = await this.modalController.create({
component: AttendeesPage, component: AttendeesPage,
componentProps: { componentProps: {
@@ -92,9 +107,37 @@ export class EditEventPage implements OnInit {
if (data['data'] != null) if (data['data'] != null)
{ {
let newattendees: EventPerson[] = data['data']; let newattendees: EventPerson[] = data['data'];
this.postEvent.Attendees = newattendees; this.setIntervenient(newattendees);
} }
}); });
} }
} }
async dynamicSetIntervenient(data){
this.taskParticipants = data['taskParticipants'];
this.taskParticipantsCc = data['taskParticipantsCc'];
}
async setIntervenient(data){
this.taskParticipants = data;
this.postEvent.Attendees = data;
}
async setIntervenientCC(data){
this.taskParticipantsCc = data;
}
async addParticipants(){
this.adding = 'intervenient';
this.openAttendees();
}
async addParticipantsCC(){
this.adding = 'CC';
this.openAttendees();
}
async closeComponent(){}
}
@@ -34,6 +34,8 @@
</div> </div>
</div> </div>
</div> </div>
<div class="overflow-y-auto">
<div class="upper-content"> <div class="upper-content">
<div class="content-location"> <div class="content-location">
<p><span class="date">{{loadedEvent.Location}}</span><span class="label">{{loadedEvent.CalendarName}}</span></p> <p><span class="date">{{loadedEvent.Location}}</span><span class="label">{{loadedEvent.CalendarName}}</span></p>
@@ -59,18 +61,20 @@
</ion-label> </ion-label>
</ion-item> </ion-item>
</div> </div>
<div *ngIf="loadedEvent.Body.Text">
<h5>Detalhes</h5> <h5>Detalhes</h5>
<ion-item class="ion-no-margin ion-no-padding"> <ion-item class="ion-no-margin ion-no-padding">
<textarea disabled class="width-100" [innerHTML]="loadedEvent.Body.Text" rows="6"></textarea> <textarea disabled class="width-100" [innerHTML]="loadedEvent.Body.Text" rows="6"></textarea>
</ion-item> </ion-item>
</div> </div>
</div>
<div *ngIf="loadedAttachments" class="bottom-content"> <div *ngIf="loadedAttachments" class="bottom-content width-100">
<ion-list> <ion-list>
<h3>Documentos Anexados</h3> <h5>Documentos Anexados</h5>
<ion-item class="ion-no-margin ion-no-padding"> <ion-item class="ion-no-margin ion-no-padding">
<ion-label *ngFor="let attach of loadedAttachments" <ion-label *ngFor="let attach of loadedAttachments"
(click)="viewDocument()"> (click)="viewDocument(attach.SourceId)">
<p class="attach-title-item">{{attach.SourceName}}</p> <p class="attach-title-item">{{attach.SourceName}}</p>
<p><span class="span-left">{{attach.Stakeholders}}</span><span class="span-right">{{ attach.CreateDate | date: 'dd-MM-yy' }}</span></p> <p><span class="span-left">{{attach.Stakeholders}}</span><span class="span-right">{{ attach.CreateDate | date: 'dd-MM-yy' }}</span></p>
</ion-label> </ion-label>
@@ -78,7 +82,9 @@
</ion-list> </ion-list>
</div> </div>
</div> </div>
<div class="aside-right flex-column height-100">
</div>
<div class="aside-right flex-column height-100 d-none d-md-flex">
<div class="buttons"> <div class="buttons">
<button (click)="editEvent()" full class="btn-ok" shape="round" >Editar</button> <button (click)="editEvent()" full class="btn-ok" shape="round" >Editar</button>
<div class="solid"></div> <div class="solid"></div>
@@ -162,7 +162,6 @@ ion-menu{
} }
.bottom-content{ .bottom-content{
width: 360px;
margin: 0 auto; margin: 0 auto;
.bottom-content h3{ .bottom-content h3{
@@ -8,12 +8,14 @@ import { EventsService } from 'src/app/services/events.service';
import { Event } from '../../../models/event.model'; import { Event } from '../../../models/event.model';
import { EditEventPage } from '../edit-event/edit-event.page'; import { EditEventPage } from '../edit-event/edit-event.page';
import { InAppBrowser } from '@ionic-native/in-app-browser/ngx'; import { InAppBrowser } from '@ionic-native/in-app-browser/ngx';
import { ProcessesService } from 'src/app/services/processes.service';
@Component({ @Component({
selector: 'app-view-event', selector: 'app-view-event',
templateUrl: './view-event.page.html', templateUrl: './view-event.page.html',
styleUrls: ['./view-event.page.scss'], styleUrls: ['./view-event.page.scss'],
}) })
export class ViewEventPage implements OnInit { export class ViewEventPage implements OnInit {
loadedEvent: Event; loadedEvent: Event;
@@ -41,6 +43,7 @@ export class ViewEventPage implements OnInit {
private attachmentsService: AttachmentsService, private attachmentsService: AttachmentsService,
public alertController: AlertController, public alertController: AlertController,
private iab: InAppBrowser, private iab: InAppBrowser,
private processes: ProcessesService,
) )
{ {
this.profile = this.navParams.get('profile'); this.profile = this.navParams.get('profile');
@@ -65,6 +68,7 @@ export class ViewEventPage implements OnInit {
}; };
} }
close(){ close(){
console.log(this.isEventEdited); console.log(this.isEventEdited);
this.modalController.dismiss(this.isEventEdited); this.modalController.dismiss(this.isEventEdited);
@@ -81,6 +85,7 @@ export class ViewEventPage implements OnInit {
this.customDate = this.days[this.today.getDay()]+ ", " + this.today.getDate() +" de " + ( this.months[this.today.getMonth()]); this.customDate = this.days[this.today.getDay()]+ ", " + this.today.getDate() +" de " + ( this.months[this.today.getMonth()]);
}); });
} }
deleteEvent(){ deleteEvent(){
this.eventsService.deleteEvent(this.loadedEvent.EventId, 0).subscribe(async () => this.eventsService.deleteEvent(this.loadedEvent.EventId, 0).subscribe(async () =>
{ {
@@ -102,6 +107,26 @@ export class ViewEventPage implements OnInit {
}); });
} }
async editEventDetail() {
let classs;
if( window.innerWidth <= 800){
classs = 'modal'
} else {
classs = 'modal modal-desktop'
}
const modal = await this.modalController.create({
component: EditEventPage,
componentProps: {
eventId: this.loadedEvent.EventId,
profile: this.profile,
},
cssClass: classs,
});
}
async editEvent() { async editEvent() {
let classs; let classs;
@@ -133,11 +158,14 @@ export class ViewEventPage implements OnInit {
}); });
} }
viewDocument(sourceId){
viewDocument(){ this.processes.GetDocumentUrl(sourceId, '8').subscribe(res=>{
const url: string = this.loadedAttachments.DocumentURL.replace("webTRIX.Viewer","webTRIX.Viewer.Branch1"); console.log(res);
const url: string = res.replace("webTRIX.Viewer","webTRIX.Viewer.Branch1");
const browser = this.iab.create(url,"_blank"); const browser = this.iab.create(url,"_blank");
browser.show(); browser.show();
});
} }
} }
@@ -39,15 +39,14 @@
<ion-footer class="ion-no-border"> <ion-footer class="ion-no-border">
<ion-toolbar class="btn-div"> <ion-toolbar class="d-flex">
<ion-buttons slot="start"> <ion-buttons class="flex-grow-1" slot="start">
<ion-button class="btn-cancel" fill="clear" color="#061b52" (click)="close()"> <ion-button class="btn-cancel" fill="clear" color="#061b52" (click)="close()">
<ion-label>Cancelar</ion-label> <ion-label>Cancelar</ion-label>
<ion-icon name="close" slot="start"></ion-icon> <ion-icon name="close" slot="start"></ion-icon>
</ion-button> </ion-button>
</ion-buttons> </ion-buttons>
<ion-title></ion-title> <ion-buttons class="flex-grow-1" slot="end">
<ion-buttons slot="end">
<ion-button class="btn-ok" fill="clear" color="#fff" (click)="save()"> <ion-button class="btn-ok" fill="clear" color="#fff" (click)="save()">
<ion-label>OK</ion-label> <ion-label>OK</ion-label>
<ion-icon name="checkmark" slot="start"></ion-icon> <ion-icon name="checkmark" slot="start"></ion-icon>
@@ -1,8 +1,8 @@
import { Component, OnInit } from '@angular/core'; import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import { EventPerson } from 'src/app/models/eventperson.model'; import { EventPerson } from 'src/app/models/eventperson.model';
import { EventsService } from 'src/app/services/events.service'; import { EventsService } from 'src/app/services/events.service';
import { ModalController, NavController } from '@ionic/angular'; import { ModalController, NavController } from '@ionic/angular';
import { AttendeeModalPage } from '../attendee-modal/attendee-modal.page'; // import { AttendeeModalPage } from '../attendee-modal/attendee-modal.page';
@Component({ @Component({
selector: 'app-attendees', selector: 'app-attendees',
@@ -11,12 +11,18 @@ import { AttendeeModalPage } from '../attendee-modal/attendee-modal.page';
}) })
export class AttendeesPage implements OnInit { export class AttendeesPage implements OnInit {
eventAttendees: EventPerson[];
segment:string = "true"; segment:string = "true";
shouldShowCancel:boolean = true; shouldShowCancel:boolean = true;
searchCountryString = ''; // initialize your searchCountryString string empty searchCountryString = ''; // initialize your searchCountryString string empty
@Output() openAttendeeModal = new EventEmitter<any>();
@Output() openAddEvent = new EventEmitter<any>();
@Input() eventAttendees: EventPerson[];
@Output() GoBackEditOrAdd = new EventEmitter<any>();
constructor(private eventService: EventsService, private modalCtrl: ModalController, constructor(private eventService: EventsService, private modalCtrl: ModalController,
private navCtrl: NavController) { private navCtrl: NavController) {
} }
@@ -26,11 +32,15 @@ export class AttendeesPage implements OnInit {
} }
save(){ save(){
this.GoBackEditOrAdd.emit();
//this.openAddEvent.emit();
this.modalCtrl.dismiss(this.eventAttendees); this.modalCtrl.dismiss(this.eventAttendees);
} }
close(){ close(){
this.GoBackEditOrAdd.emit();
this.modalCtrl.dismiss(null); this.modalCtrl.dismiss(null);
//this.openAddEvent.emit();
} }
removeAttendee(attendee: EventPerson) removeAttendee(attendee: EventPerson)
@@ -42,9 +52,12 @@ export class AttendeesPage implements OnInit {
this.eventAttendees.splice(index, 1); this.eventAttendees.splice(index, 1);
} }
async addAttendees() async addAttendees() {
{
const modal = await this.modalCtrl.create({ console.log('Event Intervenient');
this.openAttendeeModal.emit();
/* const modal = await this.modalCtrl.create({
component: AttendeeModalPage, component: AttendeeModalPage,
componentProps: { componentProps: {
eventPersons: this.eventAttendees eventPersons: this.eventAttendees
@@ -73,7 +86,8 @@ export class AttendeesPage implements OnInit {
this.eventAttendees.push(att); this.eventAttendees.push(att);
}); });
} }
}); }); */
} }
} }
@@ -0,0 +1,215 @@
<ion-header>
<ion-toolbar>
<ion-buttons slot="start">
<ion-back-button defaultHref="{{ backURL }}"></ion-back-button>
</ion-buttons>
<ion-title class="header-title">21Visualizar Evento</ion-title>
<ion-buttons slot="end">
<button (click)="deleteConfirm()" class="ion-icon-delete">
<ion-icon name="trash"></ion-icon>
</button>
</ion-buttons>
</ion-toolbar>
</ion-header>
<ion-content padding>
<div *ngIf="loadedEvent">
<ion-item-group>
<ion-item-sliding>
<form [formGroup]="ionicForm" novalidate>
<ion-item>
<ion-label class="capitalizeText" position="stacked">Assunto</ion-label>
<ion-input class="capitalizeText" [(ngModel)]="loadedEvent.Subject" formControlName="subject" type="text" required></ion-input>
</ion-item>
<!-- Error messages -->
<span class="error ion-padding" *ngIf="errorControl.subject.errors?.required">
Campo obrigatório
</span>
</form>
<ion-item>
<ion-label position="stacked">Descrição</ion-label>
<ion-input class="capitalizeText" [(ngModel)]='loadedEvent.Body.Text'></ion-input>
</ion-item>
<ion-item>
<ion-label position="stacked">Localização</ion-label>
<ion-input class="capitalizeText" [(ngModel)]='loadedEvent.Location'></ion-input>
</ion-item>
<ion-item>
<ion-label position="stacked">Calendário</ion-label>
<ion-select class="capitalizeText" placeholder="{{loadedEvent.CalendarName}}" [(ngModel)]="loadedEvent.CalendarName" interface="action-sheet" class="custom-options" Cancel-text="Cancelar">
<ion-select-option Pessoal="Reunião">Pessoal</ion-select-option>
<ion-select-option Oficial="Viagem">Oficial</ion-select-option>
</ion-select>
</ion-item>
<ion-item>
<ion-label position="stacked">Tipo do evento</ion-label>
<ion-select placeholder="{{loadedEvent.EventType}}" [(ngModel)]="loadedEvent.EventType" interface="action-sheet" class="custom-options" Cancel-text="Cancelar">
<ion-select-option value="Reunião">Reunião</ion-select-option>
<ion-select-option value="Viagem">Viagem</ion-select-option>
<ion-select-option value="Conferência">Conferência</ion-select-option>
<ion-select-option value="Encontro">Encontro</ion-select-option>
</ion-select>
</ion-item>
<ion-item>
<ion-label position="stacked">Data Início</ion-label>
<ion-datetime value="{{loadedEvent.StartDate}}" [(ngModel)]="loadedEvent.StartDate" min="2020" max="2100"
displayFormat="D MMM YYYY H:mm" minuteValues="0,15,30,45"
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"></ion-datetime>
</ion-item>
<ion-item>
<ion-label position="stacked">Data Fim</ion-label>
<ion-datetime value="{{loadedEvent.EndDate}}" [(ngModel)]="loadedEvent.EndDate" min="2020" max="2100"
displayFormat="D MMM YYYY HH:mm" minuteValues="0,15,30,45"
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"></ion-datetime>
</ion-item>
<div class="div-attach" >
<ion-item>
<ion-buttons slot="end" (click)="openAttendees()">
<ion-label color="secondary">Editar</ion-label>
</ion-buttons>
<ion-label class="attach-label">Participantes</ion-label>
</ion-item>
<div *ngIf="loadedEvent.Attendees">
<div *ngFor="let attendee of loadedEvent.Attendees; let i=index">
<div *ngIf="i<1">
<ion-list >
<ion-item class="attendees" lines="none" >
<ion-icon class="attendees-icon" name="person" slot="start"></ion-icon>
<ion-label class="capitalizeText" class="attendees-list">{{attendee.Name}}</ion-label>
</ion-item>
</ion-list>
</div>
</div>
<div *ngIf="loadedEvent.Attendees.length > 1">
<ion-button class="see-more-button" fill="none" shape="round" (click)="openAttendees()">
<ion-label color="secondary">Ver mais...</ion-label>
</ion-button>
</div>
</div>
</div>
<div class="div-attach">
<ion-item>
<ion-buttons slot="end" (click)="showAlert()">
<ion-label color="secondary">Editar</ion-label>
</ion-buttons>
<ion-label class="attach-label">Anexos</ion-label>
</ion-item>
<div *ngIf="loadedEventAttachments">
<div *ngFor="let att of loadedEventAttachments; let j=index">
<div *ngIf="j<2">
<ion-list *ngIf="loadedEvent.HasAttachments">
<ion-progress-bar type="indeterminate" *ngIf="showLoader"></ion-progress-bar>
<ion-item lines="none" (click)="viewDocument(att.Link)">
<ion-icon name="attach" slot="start"></ion-icon>
<ion-label>
<p>{{ att.Description }}</p>
<p>{{ att.CreateDate }}</p>
</ion-label>
</ion-item>
</ion-list>
</div>
</div>
<div *ngIf="loadedEventAttachments.length > 1">
<ion-button class="see-more-button" fill="none" shape="round" (click)="openAttachments()"><!-- [routerLink]="['/home/attachments', loadedEvent.EventId]" -->
<ion-label color="secondary">Ver mais...</ion-label>
</ion-button>
</div>
</div>
<!-- Skeleton Attachment -->
<!-- <ion-list *ngIf="!loadedEventAttachments">
<ion-item lines="none" >
<ion-icon name="attach" slot="start"></ion-icon>
<ion-label>
<p> <ion-skeleton-text animated></ion-skeleton-text></p>
<p> <ion-skeleton-text animated></ion-skeleton-text></p>
</ion-label>
</ion-item>
</ion-list> -->
<!-- No attachment message -->
<ion-list *ngIf="!loadedEvent.HasAttachments">
<ion-item lines="none" >
<ion-label>
Sem anexos
</ion-label>
</ion-item>
</ion-list>
</div>
</ion-item-sliding>
</ion-item-group>
</div>
<!-- Skeleton screen -->
<div *ngIf="!loadedEvent">
<div class="ion-padding custom-skeleton">
<ion-skeleton-text animated style="width: 60%"></ion-skeleton-text>
<ion-skeleton-text animated></ion-skeleton-text>
<ion-skeleton-text animated style="width: 88%"></ion-skeleton-text>
<ion-skeleton-text animated style="width: 70%"></ion-skeleton-text>
<ion-skeleton-text animated style="width: 60%"></ion-skeleton-text>
</div>
<ion-list>
<ion-list-header>
<ion-label>
<ion-skeleton-text animated style="width: 20%"></ion-skeleton-text>
</ion-label>
</ion-list-header>
<ion-item>
<ion-avatar slot="start">
<ion-skeleton-text animated></ion-skeleton-text>
</ion-avatar>
<ion-label>
<h3>
<ion-skeleton-text animated style="width: 50%"></ion-skeleton-text>
</h3>
<p>
<ion-skeleton-text animated style="width: 80%"></ion-skeleton-text>
</p>
<p>
<ion-skeleton-text animated style="width: 60%"></ion-skeleton-text>
</p>
</ion-label>
</ion-item>
<ion-item>
<ion-thumbnail slot="start">
<ion-skeleton-text animated></ion-skeleton-text>
</ion-thumbnail>
<ion-label>
<h3>
<ion-skeleton-text animated style="width: 50%"></ion-skeleton-text>
</h3>
<p>
<ion-skeleton-text animated style="width: 80%"></ion-skeleton-text>
</p>
<p>
<ion-skeleton-text animated style="width: 60%"></ion-skeleton-text>
</p>
</ion-label>
</ion-item>
<ion-item>
<ion-skeleton-text animated style="width: 27px; height: 27px" slot="start"></ion-skeleton-text>
<ion-label>
<h3>
<ion-skeleton-text animated style="width: 50%"></ion-skeleton-text>
</h3>
<p>
<ion-skeleton-text animated style="width: 80%"></ion-skeleton-text>
</p>
<p>
<ion-skeleton-text animated style="width: 60%"></ion-skeleton-text>
</p>
</ion-label>
</ion-item>
</ion-list>
</div>
</ion-content>
<ion-footer>
<ion-toolbar>
<div class="event-detail-buttons">
<ion-button class="btn-ok" fill="clear" color="#fff" shape="round" (click)="Save()">Gravar</ion-button>
</div>
</ion-toolbar>
</ion-footer>
@@ -0,0 +1,165 @@
.content{
padding: 30px 20px 0 20px !important;
margin: 0;
float: left;
border-left: 1px solid #d8d8d8 !important;
}
.main-header{
font-family: Roboto;
background-color: #fff;
overflow:hidden;
color:#000;
transform: translate3d(0, 1px, 0);
.title-content{
margin: 0px auto;
overflow: auto;
padding: 0 !important;
background: #fff;
.middle{
padding: 0!important;
float: left;
}
}
.title{
font-size: 25px;
}
}
.ion-item-container{
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;
float: left;
overflow: auto;
}
.ion-item-class-2{
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: calc(100% - 45px);
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;
}
.buttons{
display: flex;
justify-content: space-between;
padding: 20px;
overflow: auto;
}
@@ -0,0 +1,24 @@
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
import { IonicModule } from '@ionic/angular';
import { EditEventComponent } from './edit-event.component';
describe('EditEventComponent', () => {
let component: EditEventComponent;
let fixture: ComponentFixture<EditEventComponent>;
beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({
declarations: [ EditEventComponent ],
imports: [IonicModule.forRoot()]
}).compileComponents();
fixture = TestBed.createComponent(EditEventComponent);
component = fixture.componentInstance;
fixture.detectChanges();
}));
it('should create', () => {
expect(component).toBeTruthy();
});
});
@@ -0,0 +1,242 @@
import { Component, OnInit } 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 { EventBody } from 'src/app/models/eventbody.model';
import { AlertController, ModalController } from '@ionic/angular';
import { EventPerson } from 'src/app/models/eventperson.model';
import { AttendeesPage } from 'src/app/pages/events/attendees/attendees.page';
import { AlertService } from 'src/app/services/alert.service';
import { Attachment } from 'src/app/models/attachment.model';
import { AttachmentsService } from 'src/app/services/attachments.service';
import { FormGroup, FormBuilder, Validators } from "@angular/forms";
import { InAppBrowser } from '@ionic-native/in-app-browser/ngx';
import { AttachmentsPage } from '../attachments/attachments.page';
@Component({
selector: 'app-edit-event-home',
templateUrl: './app-edit-event-home.page.html',
styleUrls: ['./app-edit-event-home.page.scss'],
})
export class EventEditPage implements OnInit {
loadedEvent: Event;
loadedEventAttachments: Attachment[];
pageId: string;
showLoader: boolean;
backURL: string;
ionicForm: FormGroup;
isSubmitted = false;
minDate: Date;
profile:string;
constructor(
public formBuilder: FormBuilder,
public alertController: AlertController,
private router: Router,
private activatedRoute: ActivatedRoute,
private eventsService: EventsService,
private modalCtrl: ModalController,
private alertService: AlertService,
private attachamentsService: AttachmentsService,
private route: Router,
private iab: InAppBrowser) {
this.loadedEvent = new Event();
this.loadedEvent.Body = new EventBody();
}
ngOnInit() {
this.loadEvent();
this.loadAttachments();
this.ionicForm = this.formBuilder.group({
subject: ['', [Validators.required]]
})
}
get errorControl() {
return this.ionicForm.controls;
}
loadEvent(){
let eventid: string;
this.activatedRoute.paramMap.subscribe(paramMap =>
{
if (!paramMap.has("eventId")){
return;
}
else{
this.pageId = paramMap.get('eventId');
eventid = paramMap.get('eventId');
console.log(eventid);
}
if (paramMap.has("caller")){
this.backURL = "/home/" + paramMap.get('caller');
}
}
);
this.eventsService.getEvent(eventid).subscribe(response => {
this.loadedEvent = response;
});
}
async openAttendees(){
const modal = await this.modalCtrl.create({
component: AttendeesPage,
componentProps: {
eventAttendees: this.loadedEvent.Attendees
},
cssClass: 'attendee',
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss().then((data) => {
if (data['data'] != null)
{
let newattendees: EventPerson[] = data['data'];
this.loadedEvent.Attendees = newattendees;
}
});
}
getEventAttendees(): EventPerson[]
{
return this.loadedEvent.Attendees;
}
setEventAttendees(newattendes: EventPerson[])
{
this.loadedEvent.Attendees = newattendes;
}
async deleteConfirm()
{
const alert = await this.alertController.create({
cssClass: 'my-custom-class',
header: 'Apagar evento!',
message: 'Deseja <strong>apagar</strong> o evento da agenda ' + this.loadedEvent.CalendarName + '?',
buttons: [
{
text: 'Não',
role: 'cancel',
cssClass: 'secondary',
handler: () => { }
}, {
text: 'Sim',
handler: () => {
this.Delete();
}
}
]
});
await alert.present();
}
Delete()
{
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.router.navigate(['/home/events']);
});
}
Save()
{
if (this.ionicForm.valid){
this.activatedRoute.paramMap.subscribe(paramMap =>{
if (paramMap.has("profile")){
console.log(paramMap.get('profile'));
}
});
this.eventsService.editEvent(this.loadedEvent, 2, 3).subscribe(async () =>
{
const alert = await this.alertController.create({
cssClass: 'my-custom-class',
header: 'Evento actualizado',
buttons: ['OK']
});
await alert.present();
});
}
}
showAlert(){
this.alertService.presentAlert("Funcionalidade em desenvolvimento");
}
loadAttachments()
{
/* console.log(this.pageId); */
this.attachamentsService.getAttachmentsById(this.pageId).subscribe(res => {
this.loadedEventAttachments = res;
console.log(res);
});
}
async viewDocument(documenturl:string)
{
const url: string = documenturl.replace("webTRIX.Viewer","webTRIX.Viewer.Branch1");
const browser = this.iab.create(url,"_blank");
browser.show();
}
back()
{
//this.back();
}
doRefresh(event){
/* this.RefreshEvents(); */
event.target.complete();
setTimeout(() => {
event.target.complete();
}, 2000);
}
navigateTo(ev){
this.route.navigate(['/home/events',ev]);
}
async openAttachments(){
const modal = await this.modalCtrl.create({
component: AttachmentsPage,
componentProps: {
eventId: this.pageId,
attachments: this.loadedEventAttachments
},
cssClass: 'attachments',
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss().then((data) => {
if (data['data'] != null)
{
let newattendees: EventPerson[] = data['data'];
this.loadedEvent.Attendees = newattendees;
}
});
}
}
@@ -23,7 +23,8 @@ const routes: Routes = [
{ {
path: 'attendee-modal', path: 'attendee-modal',
loadChildren: () => import('./attendee-modal/attendee-modal.module').then( m => m.AttendeeModalPageModule) loadChildren: () => import('./attendee-modal/attendee-modal.module').then( m => m.AttendeeModalPageModule)
}, },
{
path: 'event-detail-modal', path: 'event-detail-modal',
loadChildren: () => import('./event-detail-modal/event-detail-modal.module').then( m => m.EventDetailModalPageModule) loadChildren: () => import('./event-detail-modal/event-detail-modal.module').then( m => m.EventDetailModalPageModule)
} }
+30 -1
View File
@@ -15,6 +15,7 @@ import { DailyWorkTask } from '../../models/dailyworktask.model';
import { ViewEventPage } from '../agenda/view-event/view-event.page'; import { ViewEventPage } from '../agenda/view-event/view-event.page';
import { ExpedientePage } from '../gabinete-digital/expediente/expediente.page'; import { ExpedientePage } from '../gabinete-digital/expediente/expediente.page';
import { ExpedienteDetailPage } from '../gabinete-digital/expediente/expediente-detail/expediente-detail.page'; import { ExpedienteDetailPage } from '../gabinete-digital/expediente/expediente-detail/expediente-detail.page';
import { EventEditPage } from './edit-event/edit-event.component';
import { GabineteDigitalPage } from '../gabinete-digital/gabinete-digital.page'; import { GabineteDigitalPage } from '../gabinete-digital/gabinete-digital.page';
import { EditEventPage } from '../agenda/edit-event/edit-event.page'; import { EditEventPage } from '../agenda/edit-event/edit-event.page';
@@ -106,6 +107,7 @@ export class EventsPage implements OnInit {
doRefresh(event) { doRefresh(event) {
this.RefreshEvents(); this.RefreshEvents();
event.target.complete(); event.target.complete();
this.LoadList();
} }
onSegmentChange(){ onSegmentChange(){
@@ -265,7 +267,6 @@ export class EventsPage implements OnInit {
} else { } else {
classs = 'modal modal-desktop showAsideOptions' classs = 'modal modal-desktop showAsideOptions'
} }
console.log(this.profile);
const modal = await this.modalController.create({ const modal = await this.modalController.create({
component: ViewEventPage, component: ViewEventPage,
@@ -284,6 +285,34 @@ export class EventsPage implements OnInit {
}); });
} }
async editEventDetail(eventId:any) {
let classs;
if( window.innerWidth <= 800){
classs = 'modal'
} else {
classs = 'modal modal-desktop showAsideOptions'
}
const modal = await this.modalController.create({
component: EventEditPage,
componentProps:{
eventId: eventId,
profile: this.profile,
},
cssClass: classs,
});
await modal.present();
modal.onDidDismiss().then((res)=>{
if(res){
console.log(res);
this.RefreshEvents();
}
});
}
async viewExpedientDetail(serialNumber:any) { async viewExpedientDetail(serialNumber:any) {
let classs; let classs;
if( window.innerWidth <= 800){ if( window.innerWidth <= 800){
@@ -40,7 +40,7 @@ export class DiscartExpedientModalPage implements OnInit {
} }
save(){ save(){
if(this.action != 'discart'){ /* if(this.action != 'discart'){
let body = { "serialNumber": this.serialNumber, "action": "Tratado" } let body = { "serialNumber": this.serialNumber, "action": "Tratado" }
console.log(body); console.log(body);
this.processes.PostTaskAction(body); this.processes.PostTaskAction(body);
@@ -49,9 +49,9 @@ export class DiscartExpedientModalPage implements OnInit {
let body = { "serialNumber": this.serialNumber, "action": "Passivo" } let body = { "serialNumber": this.serialNumber, "action": "Passivo" }
console.log(body); console.log(body);
this.processes.PostTaskAction(body); this.processes.PostTaskAction(body);
} } */
this.router.navigate(['/home/gabinete-digital/expediente']); this.router.navigate(['/home/gabinete-digital/expediente']);
this.modalController.dismiss(); this.modalController.dismiss('close');
} }
} }
@@ -25,7 +25,7 @@
</ion-item> </ion-item>
<ion-item (click)="emendTask(loadedEvent.serialNumber)"> <ion-item (click)="emendTask(loadedEvent.serialNumber)">
<ion-icon name="create-outline"></ion-icon> <ion-icon name="create-outline"></ion-icon>
<ion-label>Emendar</ion-label> <ion-label>Emendar1</ion-label>
</ion-item> </ion-item>
<ion-item (click)="rejectTask(loadedEvent.serialNumber)"> <ion-item (click)="rejectTask(loadedEvent.serialNumber)">
<ion-icon name="close-sharp"></ion-icon> <ion-icon name="close-sharp"></ion-icon>
@@ -25,7 +25,7 @@
</ion-item> </ion-item>
<ion-item (click)="emendTask(loadedEvent.serialNumber)"> <ion-item (click)="emendTask(loadedEvent.serialNumber)">
<ion-icon name="create-outline"></ion-icon> <ion-icon name="create-outline"></ion-icon>
<ion-label>Emendar</ion-label> <ion-label>Emendar1</ion-label>
</ion-item> </ion-item>
<ion-item (click)="rejectTask(loadedEvent.serialNumber)"> <ion-item (click)="rejectTask(loadedEvent.serialNumber)">
<ion-icon name="close-sharp"></ion-icon> <ion-icon name="close-sharp"></ion-icon>
@@ -93,7 +93,7 @@
</ion-menu-button> </ion-menu-button>
</p> </p>
<p> <p>
<ion-button class="button-approve" shape="round" (click)="approveTask(loadedEvent.serialNumber)">Aprovar</ion-button> <ion-button class="button-approve" shape="round" (click)="approveTask(loadedEvent.serialNumber)">Aprovar1</ion-button>
</p> </p>
</ion-item> </ion-item>
<ion-item hidden> <ion-item hidden>
@@ -33,7 +33,12 @@ export class EventListPage implements OnInit {
ngOnInit() { ngOnInit() {
this.profile = this.navParams.get('profile'); this.profile = this.navParams.get('profile');
/* console.log(this.navParams.get('md')); */ /* console.log(this.navParams.get('md')); */
console.log(this.profile); if(this.profile == "mdgpr"){
this.profile = 'MDGPR'
} else {
this.profile = 'PR'
}
this.LoadToApproveEvents(); this.LoadToApproveEvents();
@@ -56,7 +56,7 @@
<div class="list-people"> <div class="list-people">
<ion-item lines="none"> <ion-item lines="none">
<ion-list> <ion-list>
<ion-label *ngIf="!taskParticipants" class="list-people-title">Adicionar intervenientes</ion-label> <ion-label *ngIf="!taskParticipants && taskParticipants.length >= 1" class="list-people-title">Adicionar intervenientes</ion-label>
<ion-label *ngFor="let participant of taskParticipants">{{participant.Name}}</ion-label> <ion-label *ngFor="let participant of taskParticipants">{{participant.Name}}</ion-label>
</ion-list> </ion-list>
</ion-item> </ion-item>
@@ -77,7 +77,7 @@
<div class="list-people"> <div class="list-people">
<ion-item lines="none"> <ion-item lines="none">
<ion-list> <ion-list>
<ion-label *ngIf="!taskParticipantsCc" class="list-people-title">Com conhecimento</ion-label> <ion-label *ngIf="!taskParticipantsCc && taskParticipantsCc.length >= 1" class="list-people-title">Com conhecimento</ion-label>
<ion-label *ngFor="let participant of taskParticipantsCc">{{participant.Name}}</ion-label> <ion-label *ngFor="let participant of taskParticipantsCc">{{participant.Name}}</ion-label>
</ion-list> </ion-list>
</ion-item> </ion-item>
@@ -118,7 +118,12 @@
<app-attendee-modal <app-attendee-modal
class="aside-right d-flex flex-column height-100" class="aside-right d-flex flex-column height-100"
[eventAttendees]="contacts" [eventAttendees]="contacts"
[adding]="adding"
[taskParticipants]="taskParticipants"
[taskParticipantsCc]="taskParticipantsCc"
(closeComponent)="closeComponent()" (closeComponent)="closeComponent()"
(setIntervenient)="setIntervenient($event)"
(setIntervenientCC)="setIntervenientCC($event)"
(setContact)="setContact($event)" (setContact)="setContact($event)"
></app-attendee-modal> ></app-attendee-modal>
@@ -16,7 +16,6 @@
} }
.container-div{ .container-div{
margin-bottom: 15px; margin-bottom: 15px;
overflow: auto;
} }
.ion-item-container{ .ion-item-container{
//width: 360px; //width: 360px;
@@ -12,6 +12,7 @@ import { AddParticipantsModalPage } from '../add-participants-modal/add-particip
import { environment } from 'src/environments/environment'; import { environment } from 'src/environments/environment';
import { DiscartExpedientModalPage } from '../../discart-expedient-modal/discart-expedient-modal.page'; import { DiscartExpedientModalPage } from '../../discart-expedient-modal/discart-expedient-modal.page';
import { AttachmentsService } from 'src/app/services/attachments.service'; import { AttachmentsService } from 'src/app/services/attachments.service';
import { ExpedienteDetailPage } from '../expediente-detail/expediente-detail.page';
@Component({ @Component({
selector: 'app-expedient-task-modal', selector: 'app-expedient-task-modal',
@@ -27,8 +28,10 @@ export class ExpedientTaskModalPage implements OnInit {
]; ];
taskType:string; taskType:string;
task: any; task: any;
taskParticipants: any;
taskParticipantsCc: any; taskParticipants: any = [];
taskParticipantsCc: any = [];
taskDate: Date; taskDate: Date;
taskDescription: string; taskDescription: string;
user: string; user: string;
@@ -43,7 +46,8 @@ export class ExpedientTaskModalPage implements OnInit {
// trigger hide and show for attendee component // trigger hide and show for attendee component
showAttendees= false; showAttendees= false;
adding: "intervenient" | "CC" adding: "intervenient" | "CC" = "intervenient";
profile: string;
constructor( constructor(
private modalController: ModalController, private modalController: ModalController,
@@ -74,6 +78,11 @@ export class ExpedientTaskModalPage implements OnInit {
this.postData.SubjectTypeId = '99999844'; this.postData.SubjectTypeId = '99999844';
/* Initialize 'Subject' with the title of the expedient */ /* Initialize 'Subject' with the title of the expedient */
this.postData.DispatchFolder.Subject = this.task.workflowInstanceDataFields.Subject; this.postData.DispatchFolder.Subject = this.task.workflowInstanceDataFields.Subject;
this.profile = this.navParams.get('profile');
}
async setAdding(type: "intervenient" | "CC"){
this.adding = type;
} }
ngOnInit() { ngOnInit() {
@@ -87,15 +96,18 @@ export class ExpedientTaskModalPage implements OnInit {
this.router.navigate(['/home/gabinete-digital/expediente']); this.router.navigate(['/home/gabinete-digital/expediente']);
this.modalController.dismiss(null); this.modalController.dismiss(null);
} }
cancelTask(){
this.modalController.dismiss(null);
}
getSubjectType(){ getSubjectType(){
this.processes.GetSubjectType().subscribe(res=>{ this.processes.GetSubjectType().subscribe(res=>{
console.log(res); console.log(res);
this.subjectTypes = res; this.subjectTypes = res;
}); });
} }
cancelTask(){
this.modalController.dismiss(null);
//this.viewExpedientDetail();
}
saveTask(){ saveTask(){
/* console.log(this.taskType); */ /* console.log(this.taskType); */
@@ -112,7 +124,9 @@ export class ExpedientTaskModalPage implements OnInit {
DispatchFolder: this.dispatchFolder, DispatchFolder: this.dispatchFolder,
} }
console.log(this.postData); console.log(this.postData);
this.processes.postDespatcho(this.postData); /* this.processes.postDespatcho(this.postData); */
//this.distartExpedientModal();
this.modalController.dismiss('openDiscart');
break; break;
case '1': case '1':
@@ -125,7 +139,9 @@ export class ExpedientTaskModalPage implements OnInit {
UsersSelected: this.participants, UsersSelected: this.participants,
DispatchFolder: this.dispatchFolder, DispatchFolder: this.dispatchFolder,
} }
this.processes.postParecer(this.postData); /* this.processes.postParecer(this.postData); */
//this.distartExpedientModal();
this.modalController.dismiss();
break; break;
case '2': case '2':
this.postData = { this.postData = {
@@ -138,10 +154,13 @@ export class ExpedientTaskModalPage implements OnInit {
DispatchFolder: this.dispatchFolder, DispatchFolder: this.dispatchFolder,
} }
this.processes.postDeferimento(this.postData); this.processes.postDeferimento(this.postData);
//this.distartExpedientModal();
this.close();
break; break;
} }
this.distartExpedientModal(); /* this.distartExpedientModal();
this.close(); this.close(); */
} }
getAttachments(){ getAttachments(){
this.attachmentsService.getAttachmentsBySerial(this.task.serialNumber).subscribe(res=>{ this.attachmentsService.getAttachmentsBySerial(this.task.serialNumber).subscribe(res=>{
@@ -239,25 +258,64 @@ export class ExpedientTaskModalPage implements OnInit {
}); });
await modal.present(); await modal.present();
modal.onDidDismiss(); modal.onDidDismiss().then(res=>{
if(res['data']=='close'){
console.log('Expedient Discard closed');
this.modalController.dismiss(res['data'])
}
});
} }
async setContact(data:EventPerson[]){ async setContact(data:EventPerson[]){
if(this.adding == "intervenient"){ if(this.adding == "intervenient"){
console.log('intervenient')
this.contacts = data;
this.taskParticipants = data; this.taskParticipants = data;
} else if (this.adding == "CC") { } else if (this.adding == "CC") {
console.log('CCCC')
this.taskParticipantsCc = data; this.taskParticipantsCc = data;
} }
} }
async setIntervenient(data){
this.taskParticipants = data;
}
async setIntervenientCC(data){
this.taskParticipantsCc = data;
}
async closeComponent(){ async closeComponent(){
this.showAttendees = false; this.showAttendees = false;
} }
async viewExpedientDetail() {
console.log(this.profile);
let classs;
if( window.innerWidth <= 800){
classs = 'modal'
} else {
classs = 'modal modal-desktop showAsideOptions'
}
const modal = await this.modalController.create({
component: ExpedienteDetailPage,
componentProps:{
serialNumber: this.task.serialNumber,
profile: this.profile,
},
cssClass: classs,
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss().then((res)=>{
console.log('!refresh list');
});
}
} }
@@ -60,6 +60,10 @@ export class ExpedienteDetailPage implements OnInit {
this.LoadRelatedEvents(this.serialnumber); this.LoadRelatedEvents(this.serialnumber);
} }
close(){
this.modalController.dismiss();
}
async LoadTaskDetail(serial: string) { async LoadTaskDetail(serial: string) {
this.processes.GetTask(serial).subscribe(res => { this.processes.GetTask(serial).subscribe(res => {
@@ -120,9 +124,11 @@ export class ExpedienteDetailPage implements OnInit {
openMenu() { openMenu() {
this.menu.open(); this.menu.open();
this.modalController.dismiss();
} }
async openExpedientActionsModal(taskAction: any, task: any) { async openExpedientActionsModal(taskAction: any, task: any) {
//this.modalController.dismiss();
let classs; let classs;
if( window.innerWidth <= 800){ if( window.innerWidth <= 800){
classs = 'modal' classs = 'modal'
@@ -134,11 +140,21 @@ export class ExpedienteDetailPage implements OnInit {
componentProps: { componentProps: {
taskAction: taskAction, taskAction: taskAction,
task: task, task: task,
profile: this.profile,
}, },
cssClass: classs, cssClass: classs,
}); });
await modal.present(); await modal.present();
modal.onDidDismiss(); modal.onDidDismiss().then(res=>{
console.log(res['data']);
if(res['data']=='openDiscart'){
console.log('open discart');
this.distartExpedientModal();
}
});
} }
discartExpedient() { discartExpedient() {
@@ -148,7 +164,7 @@ export class ExpedienteDetailPage implements OnInit {
this.router.navigate(['/home/gabinete-digital/expediente']); */ this.router.navigate(['/home/gabinete-digital/expediente']); */
} }
async distartExpedientModal(task: any){ async distartExpedientModal2(task: any){
const modal = await this.modalController.create({ const modal = await this.modalController.create({
component: DiscartExpedientModalPage, component: DiscartExpedientModalPage,
componentProps: { componentProps: {
@@ -201,4 +217,28 @@ export class ExpedienteDetailPage implements OnInit {
} }
}); });
} }
async distartExpedientModal(){
console.log(this.fulltask);
const modal = await this.modalController.create({
component: DiscartExpedientModalPage,
componentProps: {
serialNumber: this.fulltask.serialNumber,
folderId: this.fulltask.workflowInstanceDataFields.FolderID,
action: 'complete',
},
cssClass: 'discart-expedient-modal',
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss().then(res=>{
if(res['data']=='close'){
this.close();
/* console.log('2Expedient Discard closed2');
this.close();
this.openMenu(); */
}
});
}
} }
@@ -67,7 +67,7 @@ export class ExpedientePage implements OnInit {
console.log(this.profile); console.log(this.profile);
let classs; let classs;
if( window.innerWidth <= 1024){ if( window.innerWidth <= 800){
classs = 'modal modal-desktop' classs = 'modal modal-desktop'
} else { } else {
classs = 'gabinete-digital-mobile-modal-to-Desktop' classs = 'gabinete-digital-mobile-modal-to-Desktop'
@@ -84,7 +84,8 @@ export class ExpedientePage implements OnInit {
}); });
await modal.present(); await modal.present();
modal.onDidDismiss().then((res)=>{ modal.onDidDismiss().then((res)=>{
console.log('refresh list');
this.LoadList();
}); });
} }
@@ -163,7 +163,7 @@ this.processesbackend.GetActionsList().subscribe(res=>{
this.closeAllDesktopComponent(); this.closeAllDesktopComponent();
let classs; let classs;
if( window.innerWidth <= 1024){ if( window.innerWidth <= 800){
classs = 'modal' classs = 'modal'
} else { } else {
classs = 'gabinete-digital-mobile-modal-to-Desktop' classs = 'gabinete-digital-mobile-modal-to-Desktop'
@@ -86,7 +86,7 @@
class="height-100 d-flex flex-column overflow-hidden background-white flex-grow-1" class="height-100 d-flex flex-column overflow-hidden background-white flex-grow-1"
[folderId]="folderId" [folderId]="folderId"
[publicationType]="publicationType" [publicationType]="publicationType"
[publication]="publication"
(closeDesktopComponent)="closeDesktopComponent($event)" (closeDesktopComponent)="closeDesktopComponent($event)"
(goBacktoPublicationDetails)="goBacktoPublicationDetails($event)" (goBacktoPublicationDetails)="goBacktoPublicationDetails($event)"
(goBackToViewPublications)="goBackToViewPublications($event)" (goBackToViewPublications)="goBackToViewPublications($event)"
@@ -97,6 +97,7 @@
*ngIf="desktopComponent.showPublicationDetail" *ngIf="desktopComponent.showPublicationDetail"
class="height-100 d-flex flex-column overflow-hidden background-white flex-grow-1" class="height-100 d-flex flex-column overflow-hidden background-white flex-grow-1"
[publicationId]="publicationId" [publicationId]="publicationId"
[folderId]="folderId"
(addNewPublication)="addNewPublication($event)" (addNewPublication)="addNewPublication($event)"
(closeDesktopComponent)="closeDesktopComponent($event)" (closeDesktopComponent)="closeDesktopComponent($event)"
(goBacktoPublicationDetails)="goBacktoPublicationDetails($event)" (goBacktoPublicationDetails)="goBacktoPublicationDetails($event)"
@@ -67,12 +67,14 @@
</div> </div>
<div class="line"></div> <div class="line"></div>
<div class="middle-content"> <div class="middle-content">
<div *ngIf="loadedEvent.workflowInstanceDataFields.Participants">
<h5>Intervenientes</h5> <h5>Intervenientes</h5>
<ion-item class="ion-no-margin ion-no-padding"> <ion-item class="ion-no-margin ion-no-padding">
<ion-label> <ion-label>
<p>{{loadedEvent.workflowInstanceDataFields.Participants}}</p> <p>{{loadedEvent.workflowInstanceDataFields.Participants}}</p>
</ion-label> </ion-label>
</ion-item> </ion-item>
</div>
<h5>Detalhes</h5> <h5>Detalhes</h5>
<ion-item class="ion-no-margin ion-no-padding"> <ion-item class="ion-no-margin ion-no-padding">
<p [innerHTML]="loadedEvent.workflowInstanceDataFields.Body"></p> <p [innerHTML]="loadedEvent.workflowInstanceDataFields.Body"></p>
@@ -71,8 +71,12 @@ export class ApproveEventComponent implements OnInit {
}) })
} }
approveTask(serialNumber:string){ approveTask(serialNumber:string){
let body = { "serialNumber": serialNumber, "action": "Aprovar" }
this.approveEventDismiss.emit({ console.log(body);
this.processes.PostTaskAction(body);
this.alertService.presentAlert('Operação realizada com sucesso!');
this.modalController.dismiss(serialNumber);
/* this.approveEventDismiss.emit({
"serialNumber": serialNumber, "serialNumber": serialNumber,
"action": "Aprovar", "action": "Aprovar",
"saveData": { "saveData": {
@@ -80,7 +84,7 @@ export class ApproveEventComponent implements OnInit {
today: this.today, today: this.today,
customDate: this.customDate customDate: this.customDate
} }
}); }); */
} }
emendTask(serialNumber:string){ emendTask(serialNumber:string){
@@ -49,7 +49,7 @@
<ion-item <ion-item
class=" ion-no-padding width-100" class=" ion-no-padding width-100"
*ngFor="let event of eventsPRList" *ngFor="let event of eventsPRList"
(click)="openApproveModal(event.serialNumber)"> (click)="openApproveModal(event.serialNumber, event)">
<div class="item event-pr-{{event.workflowInstanceDataFields.Agenda}} width-100"> <div class="item event-pr-{{event.workflowInstanceDataFields.Agenda}} width-100">
<div class="approve-event-time"> <div class="approve-event-time">
<p>{{event.workflowInstanceDataFields.StartDate | date: 'hh:mm'}}</p> <p>{{event.workflowInstanceDataFields.StartDate | date: 'hh:mm'}}</p>
@@ -134,8 +134,8 @@
<div class="list-people"> <div class="list-people">
<ion-item lines="none"> <ion-item lines="none">
<ion-list> <ion-list>
<ion-label *ngIf="eventAttendees.length ==0" class="list-people-title">Adicionar intervenientes</ion-label> <ion-label *ngIf="taskParticipants.length ==0" class="list-people-title">Adicionar intervenientes</ion-label>
<ion-label *ngFor="let participant of eventAttendees">{{participant.Name}}</ion-label> <ion-label *ngFor="let participant of taskParticipants">{{participant.Name}}</ion-label>
</ion-list> </ion-list>
</ion-item> </ion-item>
</div> </div>
@@ -20,7 +20,7 @@ export class NewEventPage implements OnInit {
@Input() profile:string; @Input() profile:string;
@Input() selectedSegment: string; @Input() selectedSegment: string;
@Input() selectedDate: Date; @Input() selectedDate: Date;
@Input() eventAttendees: EventPerson[]; @Input() taskParticipants: EventPerson[];
@Output() onAddEvent = new EventEmitter<any>(); @Output() onAddEvent = new EventEmitter<any>();
@Output() openAttendeesComponent = new EventEmitter<any>(); @Output() openAttendeesComponent = new EventEmitter<any>();
@@ -109,7 +109,7 @@ export class NewEventPage implements OnInit {
save(){ save(){
this.postEvent.Attendees = this.eventAttendees; this.postEvent.Attendees = this.taskParticipants;
if(this.profile=='mdgpr'){ if(this.profile=='mdgpr'){
this.eventService.postEventMd(this.postEvent, this.postEvent.CalendarName).subscribe(); this.eventService.postEventMd(this.postEvent, this.postEvent.CalendarName).subscribe();
@@ -145,7 +145,6 @@ export class NewEventPage implements OnInit {
const restoredData = window['temp.path:/home/agenda/new-event.component.ts'] const restoredData = window['temp.path:/home/agenda/new-event.component.ts']
if(JSON.stringify(restoredData) != "{}" && undefined != restoredData){ if(JSON.stringify(restoredData) != "{}" && undefined != restoredData){
console.log('restore1111', restoredData)
this.postEvent = restoredData.postEvent this.postEvent = restoredData.postEvent
this.eventBody = restoredData.eventBody this.eventBody = restoredData.eventBody
this.segment = restoredData.segment this.segment = restoredData.segment
@@ -52,11 +52,11 @@
<div class="line"></div> <div class="line"></div>
<div *ngIf="loadedAttachments" class="bottom-content"> <div *ngIf="loadedAttachments" class="bottom-content">
<h5>Documentos Anexados</h5>
<ion-list> <ion-list>
<h3>Documentos Anexados</h3>
<ion-item lines="none" class="ion-no-margin ion-no-padding"> <ion-item lines="none" class="ion-no-margin ion-no-padding">
<ion-label *ngFor="let attach of loadedAttachments" <ion-label *ngFor="let attach of loadedAttachments"
(click)="viewDocument()"> (click)="viewDocument(attach.SourceId)">
<p class="attach-title-item">{{attach.SourceName}}</p> <p class="attach-title-item">{{attach.SourceName}}</p>
<p><span class="span-left">{{attach.Stakeholders}}</span><span class="span-right">{{ attach.CreateDate | date: 'dd-MM-yy' }}</span></p> <p><span class="span-left">{{attach.Stakeholders}}</span><span class="span-right">{{ attach.CreateDate | date: 'dd-MM-yy' }}</span></p>
</ion-label> </ion-label>
@@ -7,6 +7,7 @@ import { EventsService } from 'src/app/services/events.service';
import { Event } from 'src/app/models/event.model'; import { Event } from 'src/app/models/event.model';
import { EditEventPage } from 'src/app/pages/agenda/edit-event/edit-event.page'; import { EditEventPage } from 'src/app/pages/agenda/edit-event/edit-event.page';
import { InAppBrowser } from '@ionic-native/in-app-browser/ngx'; import { InAppBrowser } from '@ionic-native/in-app-browser/ngx';
import { ProcessesService } from 'src/app/services/processes.service';
@Component({ @Component({
selector: 'app-view-event', selector: 'app-view-event',
@@ -42,24 +43,26 @@ export class ViewEventPage implements OnInit {
private attachmentsService: AttachmentsService, private attachmentsService: AttachmentsService,
public alertController: AlertController, public alertController: AlertController,
private iab: InAppBrowser, private iab: InAppBrowser,
private processes: ProcessesService,
) )
{ {
this.isEventEdited = false; this.isEventEdited = false;
this.loadedEvent = new Event(); this.loadedEvent = new Event();
this.eventBody = { BodyType : "1", Text : ""}; this.eventBody = { BodyType : "1", Text : ""};
this.loadedEvent.Body = this.eventBody; this.loadedEvent.Body = this.eventBody;
} }
ngOnInit() { ngOnInit() {
/* console.log(this.eventId); */ /* console.log(this.eventId); */
this.loadEvent(); this.loadEvent();
this.getAttachments(); //this.getAttachments();
} }
ngOnChanges(changes: any): void { ngOnChanges(changes: any): void {
this.loadedAttachments = null;
this.loadEvent(); this.loadEvent();
this.getAttachments();
} }
close(){ close(){
@@ -73,12 +76,11 @@ export class ViewEventPage implements OnInit {
loadEvent(){ loadEvent(){
this.eventsService.getEvent(this.eventId).subscribe(res => { this.eventsService.getEvent(this.eventId).subscribe(res => {
this.loadedEvent = res; this.loadedEvent = res;
console.log(res); console.log(res);
this.today = new Date(res.StartDate); this.today = new Date(res.StartDate);
console.log(new Date(this.today)); console.log(new Date(this.today));
this.customDate = this.days[this.today.getDay()]+ ", " + this.today.getDate() +" de " + ( this.months[this.today.getMonth()]); this.customDate = this.days[this.today.getDay()]+ ", " + this.today.getDate() +" de " + ( this.months[this.today.getMonth()]);
this.getAttachments(this.loadedEvent.EventId);
}); });
} }
deleteEvent(){ deleteEvent(){
@@ -95,8 +97,8 @@ export class ViewEventPage implements OnInit {
}); });
} }
getAttachments(){ getAttachments(eventId){
this.attachmentsService.getAttachmentsById(this.eventId).subscribe(res=>{ this.attachmentsService.getAttachmentsById(eventId).subscribe(res=>{
this.loadedAttachments = res; this.loadedAttachments = res;
console.log(res); console.log(res);
}); });
@@ -109,10 +111,15 @@ export class ViewEventPage implements OnInit {
event: this.loadedEvent event: this.loadedEvent
}) })
} }
viewDocument(){
const url: string = this.loadedAttachments.DocumentURL.replace("webTRIX.Viewer","webTRIX.Viewer.Branch1"); viewDocument(sourceId){
this.processes.GetDocumentUrl(sourceId, '8').subscribe(res=>{
console.log(res);
const url: string = res.replace("webTRIX.Viewer","webTRIX.Viewer.Branch1");
const browser = this.iab.create(url,"_blank"); const browser = this.iab.create(url,"_blank");
browser.show(); browser.show();
});
} }
} }
@@ -6,7 +6,7 @@
<ion-progress-bar type="indeterminate" *ngIf="showLoader"></ion-progress-bar> <ion-progress-bar type="indeterminate" *ngIf="showLoader"></ion-progress-bar>
</ion-header> </ion-header>
<ion-content class="height-100 "> <ion-content class="height-100 overflow-y-auto">
<ion-item-group class="d-flex flex-column height-100 "> <ion-item-group class="d-flex flex-column height-100 ">
<ion-list lines="none" class="flex-grow-1 overflow-y-auto height-100" > <ion-list lines="none" class="flex-grow-1 overflow-y-auto height-100" >
@@ -26,10 +26,30 @@
</ion-item-sliding> </ion-item-sliding>
</ion-list> </ion-list>
<hr/> <hr/>
<div class="px-20 font-15 pt-20" style="border-top:1px solid #ebebeb;font-weight: 500;" *ngIf="selectedContact.length >= 1">Destinatário</div>
<ion-list lines="none" *ngIf="selectedContact.length >= 1" class="flex-grow-1 overflow-y-auto height-100 pb-0" >
<ion-list lines="none" *ngIf="taskParticipants.length >= 1 && adding == 'intervenient' " class="flex-grow-1 overflow-y-auto height-100 pb-0" >
<div class="px-20 font-15 pt-20" style="border-top:1px solid #ebebeb;font-weight: 500;" *ngIf="taskParticipants.length >= 1 || taskParticipantsCc.length >= 1" > Destinatário</div>
<ion-item-sliding class="px-20"> <ion-item-sliding class="px-20">
<ion-item *ngFor="let attendee of selectedContact;" class="d-flex"> <ion-item *ngFor="let attendee of taskParticipants;" class="d-flex">
<div class="pr-10">
<ion-icon class="font-35" src="assets/images/icons-userprofile.svg"></ion-icon>
</div>
<ion-label>
<h3>{{ attendee.Name }}</h3>
<p>{{ attendee.EmailAddress }}</p>
</ion-label>
<div style="color:red" (click)="remove(attendee)">
X
</div>
</ion-item>
</ion-item-sliding>
</ion-list>
<ion-list lines="none" *ngIf="taskParticipantsCc.length >= 1 && adding == 'CC' " class="flex-grow-1 overflow-y-auto height-100 pb-0" >
<div class="px-20 font-15 pt-20" style="border-top:1px solid #ebebeb;font-weight: 500;" *ngIf="taskParticipants.length >= 1 || taskParticipantsCc.length >= 1" > Destinatário</div>
<ion-item-sliding class="px-20">
<ion-item *ngFor="let attendee of taskParticipantsCc;" class="d-flex">
<div class="pr-10"> <div class="pr-10">
<ion-icon class="font-35" src="assets/images/icons-userprofile.svg"></ion-icon> <ion-icon class="font-35" src="assets/images/icons-userprofile.svg"></ion-icon>
</div> </div>
@@ -16,33 +16,47 @@ export class AttendeeModalPage implements OnInit {
selectedContact: EventPerson[] =[]; selectedContact: EventPerson[] =[];
eventPersons: EventPerson[]; eventPersons: EventPerson[];
@Input() eventAttendees: EventPerson[]; @Input() taskParticipants:EventPerson[] = [];
@Input() taskParticipantsCc:EventPerson[] = [];
constructor(private modalCtrl: ModalController, private contactsService: ContactsService) { } constructor(private modalCtrl: ModalController, private contactsService: ContactsService) { }
@Output() closeComponent = new EventEmitter<any>(); @Output() closeComponent = new EventEmitter<any>();
@Output() setContact = new EventEmitter<any>();
@Output() setIntervenient = new EventEmitter<any>();
@Output() setIntervenientCC = new EventEmitter<any>();
@Output() dynamicSetIntervenient = new EventEmitter<any>();
currentPath = window.location.pathname; currentPath = window.location.pathname;
@Input() adding: "intervenient" | "CC";
ngOnInit() { ngOnInit() {
this.fetchContacts(""); this.fetchContacts("");
this.selectedContact = this.eventAttendees;
if(this.taskParticipants == null || this.taskParticipants == undefined){
this.taskParticipants = [];
} }
ngOnChanges(){ if(this.taskParticipantsCc == null || this.taskParticipantsCc == undefined){
console.log('change !!!') this.taskParticipantsCc = [];
} }
}
ngOnChanges(event){}
save(){ save(){
// set data to agenda component
this.setContact.emit(this.selectedContact); this.setIntervenient.emit(this.taskParticipants);
this.setIntervenientCC.emit(this.taskParticipantsCc);
this.closeComponent.emit(); this.closeComponent.emit();
} }
setContactWithClose(){ setContactWithClose(){
if(this.currentPath == '/home/gabinete-digital'){ if(this.currentPath == '/home/gabinete-digital'){
this.setContact.emit(this.selectedContact); this.setIntervenient.emit(this.taskParticipants);
this.setIntervenientCC.emit(this.taskParticipantsCc);
} }
} }
@@ -56,9 +70,21 @@ export class AttendeeModalPage implements OnInit {
this.fetchContacts(evt.detail.value); this.fetchContacts(evt.detail.value);
} }
filterSearchList(itm: EventPerson): boolean { filterSearchList(itm: EventPerson): boolean {
const result = this.selectedContact.find((contact, index)=>{
if(this.adding == "intervenient"){
const result = this.taskParticipants.find((contact, index)=>{
if(contact.Name == itm.Name && contact.EmailAddress == itm.EmailAddress){
index = index;
return contact;
}
});
return undefined == result;
} else if (this.adding == "CC") {
const result = this.taskParticipantsCc.find((contact, index)=>{
if(contact.Name == itm.Name && contact.EmailAddress == itm.EmailAddress){ if(contact.Name == itm.Name && contact.EmailAddress == itm.EmailAddress){
index = index; index = index;
@@ -69,9 +95,13 @@ export class AttendeeModalPage implements OnInit {
return undefined == result; return undefined == result;
} }
}
remove(itm: EventPerson){ remove(itm: EventPerson){
this.selectedContact = this.selectedContact.filter((contact, index) =>{ if(this.adding == "intervenient"){
this.taskParticipants = this.taskParticipants.filter((contact, index) =>{
if(contact.Name != itm.Name && contact.EmailAddress != itm.EmailAddress){ if(contact.Name != itm.Name && contact.EmailAddress != itm.EmailAddress){
return contact; return contact;
@@ -80,14 +110,40 @@ export class AttendeeModalPage implements OnInit {
}); });
// run only in gabinete digital
} else if (this.adding == "CC") {
this.taskParticipantsCc = this.taskParticipantsCc.filter((contact, index) =>{
if(contact.Name != itm.Name && contact.EmailAddress != itm.EmailAddress){
return contact;
}
return false;
});
}
this.dynamicSetIntervenient.emit({
taskParticipants: this.taskParticipants,
taskParticipantsCc: this.taskParticipantsCc
})
this.setContactWithClose(); this.setContactWithClose();
} }
async selectContact(itm: EventPerson){ async selectContact(itm: EventPerson){
this.selectedContact.push(itm); if(this.adding == "intervenient"){
this.taskParticipants.push(itm);
} else if (this.adding == "CC") {
this.taskParticipantsCc.push(itm);
}
// run only in gabinete digital // run only in gabinete digital
this.setContactWithClose(); this.setContactWithClose();
@@ -67,7 +67,7 @@ S
} }
async openApproveModal(eventSerialNumber){ async openApproveModal(eventSerialNumber){
let classs; let classs;
if( window.innerWidth <= 1024){ if( window.innerWidth <= 800){
classs = 'modal modal-desktop' classs = 'modal modal-desktop'
} else { } else {
classs = 'modal modal-desktop showAsideOptions' classs = 'modal modal-desktop showAsideOptions'
@@ -81,7 +81,11 @@ S
cssClass: classs, cssClass: classs,
}); });
await modal.present(); await modal.present();
modal.onDidDismiss(); modal.onDidDismiss().then((res) => {
console.log(res['data']);
this.LoadToApproveEvents();
});
} }
doRefresh(event) { doRefresh(event) {
@@ -91,7 +91,8 @@ export class ExpedientsPage implements OnInit {
}); });
await modal.present(); await modal.present();
modal.onDidDismiss().then((res)=>{ modal.onDidDismiss().then((res)=>{
console.log('refresh list');
this.LoadList();
}); });
} }
@@ -13,7 +13,7 @@
<div class="content-container"> <div class="content-container">
<div *ngIf="publicationType!='1'" class="ion-item-container"> <div *ngIf="publicationType!='1'" class="ion-item-container">
<ion-input [(ngModel)]="pub.Title" name="title" ngDefaultControl placeholder="Título" ></ion-input> <ion-input [(ngModel)]="pub.Title" name="title" placeholder="Título" ></ion-input>
</div> </div>
@@ -29,9 +29,9 @@
</div> </div>
</div> </div>
<div class="container-title py-10">Fotografia Anexada</div> <div class="container-title py-10 hide-desktop">Fotografia Anexada</div>
<div class="picture d-flex pb-5" *ngIf="publication.FileBase64.length > 10"> <div class="picture d-flex pb-5 hide-desktop" *ngIf="publication.FileBase64">
<div class="post-img"> <div class="post-img">
<img src="{{publication.FileBase64}}" alt="image" > <img src="{{publication.FileBase64}}" alt="image" >
</div> </div>
@@ -45,28 +45,28 @@
</div> </div>
<div *ngIf="capturedImage != ''" class="ion-item-container-no-border"> <!-- <div *ngIf="capturedImage != ''" class="ion-item-container-no-border hide-desktop">
<ion-label class="attached-title">Fotografia Anexada</ion-label> <ion-label class="attached-title">Fotografia Anexada</ion-label>
<ion-item lines="none"> <ion-item lines="none">
<ion-thumbnail slot="start"> <ion-thumbnail slot="start">
<ion-img [(ngModel)]="capturedImage" name="image" ngDefaultControl [src]="'data:image/png;base64,'+capturedImage"></ion-img> <ion-img [(ngModel)]="capturedImage" name="image" ngDefaultControl [src]="'data:image/png;base64,'+capturedImage"></ion-img>
</ion-thumbnail> </ion-thumbnail> -->
<!-- <ion-thumbnail *ngIf="!publication" slot="start"> <!-- <ion-thumbnail *ngIf="!publication" slot="start">
<ion-img [(ngModel)]="publication.imageUrl" [src]="guestPicture"></ion-img> <ion-img [(ngModel)]="publication.imageUrl" [src]="guestPicture"></ion-img>
</ion-thumbnail> --> </ion-thumbnail> -->
<ion-label> <!-- <ion-label>
<p>{{capturedImageTitle}}</p> <p>{{capturedImageTitle}}</p>
<p hidden>size</p> <p hidden>size</p>
</ion-label> </ion-label>
<ion-icon (click)="clear()" name="close"></ion-icon> <ion-icon (click)="clear()" name="close"></ion-icon>
</ion-item> </ion-item> -->
<!-- <ion-thumbnail> <!-- <ion-thumbnail>
<ion-img src="{{imgUrl}}"></ion-img> <ion-img src="{{imgUrl}}"></ion-img>
</ion-thumbnail> --> </ion-thumbnail> -->
</div> <!-- </div> -->
<div class="ion-item-container-no-border"> <div class="ion-item-container-no-border hide-desktop">
<ion-label (click)="takePicture()"> <ion-label (click)="takePicture()">
<div class="attach-icon"> <div class="attach-icon">
<ion-icon src="assets/images/icons-add-photo.svg"></ion-icon> <ion-icon src="assets/images/icons-add-photo.svg"></ion-icon>
@@ -77,7 +77,7 @@
</ion-label> </ion-label>
</div> </div>
<div class="ion-item-container-no-border"> <div class="ion-item-container-no-border hide-desktop">
<ion-label (click)="getPicture()"> <ion-label (click)="getPicture()">
<div class="attach-icon"> <div class="attach-icon">
<ion-icon src="assets/images/icons-add-photos.svg"></ion-icon> <ion-icon src="assets/images/icons-add-photos.svg"></ion-icon>
@@ -153,3 +153,7 @@ font-size: 25px;
font-size: 15px; font-size: 15px;
font-weight: bold; font-weight: bold;
} }
.hide-desktop{
display: block;
}
@@ -35,7 +35,8 @@ export class NewPublicationPage implements OnInit {
photo: SafeResourceUrl; photo: SafeResourceUrl;
@Input() publication: Publication; publication: Publication = new Publication();
@Input() publicationType: string; @Input() publicationType: string;
@Input() folderId: string; @Input() folderId: string;
@Output() closeDesktopComponent = new EventEmitter<any>(); @Output() closeDesktopComponent = new EventEmitter<any>();
@@ -159,7 +160,7 @@ export class NewPublicationPage implements OnInit {
console.log(this.publication); console.log(this.publication);
this.publications.CreatePublication(this.folderId, this.publication); this.publications.CreatePublication(this.folderId, this.publication);
this.closeDesktopComponent.emit(); this.goBackToViewPublications.emit();
} }
} }
@@ -12,10 +12,11 @@ import { PublicationsService } from 'src/app/services/publications.service';
}) })
export class PublicationDetailPage implements OnInit { export class PublicationDetailPage implements OnInit {
showLoader: boolean; showLoader: boolean;
folderId: string; /* folderId: string; */
publication: Publication; publication: Publication;
@Input() publicationId: string; @Input() publicationId: string;
@Input() folderId: string;
@Output() addNewPublication = new EventEmitter<any>(); @Output() addNewPublication = new EventEmitter<any>();
@Output() closeDesktopComponent = new EventEmitter<any>(); @Output() closeDesktopComponent = new EventEmitter<any>();
@Output() goBackToViewPublications = new EventEmitter(); @Output() goBackToViewPublications = new EventEmitter();
@@ -41,6 +42,8 @@ export class PublicationDetailPage implements OnInit {
} }
ngOnInit() { ngOnInit() {
console.log(this.folderId);
/* console.log(this.publication.FileBase64); */ /* console.log(this.publication.FileBase64); */
this.getPublicationDetail(); this.getPublicationDetail();
} }
@@ -83,7 +86,7 @@ export class PublicationDetailPage implements OnInit {
console.log(res); console.log(res);
}); });
this.closeDesktopComponent.emit(); this.goBackToViewPublications.emit();
} }
async editPost(publicationType:any) { async editPost(publicationType:any) {
+12 -2
View File
@@ -293,6 +293,16 @@ border-top: 1px solid #d8d8d8;
height: 100%; height: 100%;
} }
} }
@media screen and (min-width: 1200px) {
.hide-desktop{
display: none !important;
}
.container-div{
border-bottom:none !important;
}
}
.hideAsideOptions{ .hideAsideOptions{
@media only screen and (max-width: 800px) { @media only screen and (max-width: 800px) {
.div-icon{ .div-icon{
@@ -320,7 +330,7 @@ border-top: 1px solid #d8d8d8;
} }
.showAsideOptions{ .showAsideOptions{
@media only screen and (min-width: 801px) { @media only screen and (min-width: 800px) {
.div-icon{ .div-icon{
display: none; display: none;
} }
@@ -427,7 +437,7 @@ border-top: 1px solid #d8d8d8;
} }
} }
@media only screen and (min-width: 1024px) { @media only screen and (min-width: 1365px) {
.gabinete-digital-mobile-modal-to-Desktop{ .gabinete-digital-mobile-modal-to-Desktop{
//top: 75px; //top: 75px;
left: 40%; left: 40%;
+1 -1
View File
@@ -65,7 +65,7 @@
.flex-0{ flex: 0;} .flex-0{ flex: 0;}
@media only screen and (min-width: 1024px) { @media only screen and (min-width: 800px) {
// overflow // overflow
.v-application-md .overflow-md-auto {overflow: auto !important;} .v-application-md .overflow-md-auto {overflow: auto !important;}
.overflow-md-hidden {overflow: hidden !important;} .overflow-md-hidden {overflow: hidden !important;}