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"
[profile]="profile"
[selectedSegment]=segment
[taskParticipants]="taskParticipants"
[selectedDate]="eventSelectedDate"
(onAddEvent)="openAddEventDismiss($event)"
(openAttendeesComponent)="openAttendeesComponent($event)"
@@ -385,6 +386,11 @@
[eventAttendees]="contacts"
(closeComponent)="GoBackEditOrAdd()"
(setContact)="setContact($event)"
[adding]="adding"
[taskParticipants]="taskParticipants"
[taskParticipantsCc]="taskParticipantsCc"
(setIntervenient)="setIntervenient($event)"
(setIntervenientCC)="setIntervenientCC($event)"
>
</app-attendee-modal>
+17 -11
View File
@@ -94,6 +94,11 @@ export class AgendaPage implements OnInit {
selectedEventId: string | number;
postEvent: any;
taskParticipants: any = [];
taskParticipantsCc: any = [];
adding: "intervenient" | "CC" = "intervenient";
@ViewChild(CalendarComponent) myCal: CalendarComponent;
segment: "Combinado" | "Pessoal" | "Oficial";
@@ -259,14 +264,14 @@ export class AgendaPage implements OnInit {
onTimeSelected = (ev: { selectedTime: Date, events: any[] }) => {
console.log('Selected time: ' + ev.selectedTime + ', hasEvents: ' + (ev.events !== undefined && ev.events.length !== 0));
this.eventSelectedDate2 = ev.selectedTime;
};
}
onRangeChanged (ev: { startTime: Date, endTime: Date }) {
this.rangeStartDate = ev.startTime;
this.rangeEndDate = ev.endTime;
this.loadRangeEvents(this.rangeStartDate, this.rangeEndDate);
};
}
async openCalModal() {
const modal = await this.modalCtrl.create({
@@ -912,10 +917,6 @@ export class AgendaPage implements OnInit {
this.selectedEvent = data.event;
this.postEvent = data.event;
console.log(this.selectedEvent);
console.log(this.postEvent);
this.mobileComponent.showEditEvent = true;
}
@@ -945,8 +946,6 @@ export class AgendaPage implements OnInit {
}
approveEventDismiss({saveData, serialNumber, action}){
console.log(saveData);
if(action == 'Aprovar'){
this.eventToaprove = {
@@ -996,7 +995,6 @@ export class AgendaPage implements OnInit {
// open component
async openAttendeesComponent(data){
if(Array.isArray(data)){
if(data.length >= 1){
@@ -1027,7 +1025,6 @@ export class AgendaPage implements OnInit {
async GoBackEditOrAdd(){
if(this.showEventEditOrOpen == "edit"){
this.cloneAllmobileComponent();
@@ -1042,7 +1039,6 @@ export class AgendaPage implements OnInit {
}
//
async closeComponentEditEventOrAdd(){
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 { EditEventPage } from './edit-event.page';
import { AttendeeModalPage } from 'src/app/shared/event/attendee-modal/attendee-modal.page';
@NgModule({
imports: [
@@ -15,6 +16,9 @@ import { EditEventPage } from './edit-event.page';
IonicModule,
EditEventPageRoutingModule
],
declarations: [EditEventPage]
declarations: [
EditEventPage,
AttendeeModalPage
]
})
export class EditEventPageModule {}
@@ -1,7 +1,9 @@
<ion-content>
<div class="main-content">
<div class="content d-flex flex-column width-100">
<div class="main-header">
<div class="main-content height-100">
<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>
<div class="title-content">
<div class="middle">
@@ -10,212 +12,226 @@
</div>
</ion-header>
</div>
<ion-item-sliding>
<ion-item-sliding class="overflow-y-auto">
<div class="px-20">
<div class="ion-item-container width-100">
<ion-input placeholder="Assunto" [(ngModel)]="postEvent.Subject"></ion-input>
</div>
<div class="container-div width-100">
<div class="ion-item-class-2">
<div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-location.svg"></ion-icon>
</div>
<div class="ion-input-class">
<ion-input placeholder="Localização" [(ngModel)]="postEvent.Location"></ion-input>
</div>
</div>
<!-- Error messages -->
<!-- <span class="error ion-padding" >
Campo obrigatório
</span> -->
</div>
<div class="container-div width-100">
<div class="ion-item-class-2">
<div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-calendar.svg"></ion-icon>
</div>
<div class="ion-input-class">
<ion-select disabled placeholder="Selecione agenda"
selectedText="{{postEvent.CalendarName}}"
[(ngModel)]="postEvent.CalendarName"
interface="action-sheet" Cancel-text="Cancelar"
required>
<ion-select-option value="Oficial">Oficial</ion-select-option>
<ion-select-option value="Pessoal">Pessoal</ion-select-option>
</ion-select>
</div>
</div>
</div>
<div class="container-div width-100">
<div class="ion-item-class-2">
<div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-calendar.svg"></ion-icon>
</div>
<div class="ion-input-class">
<ion-select placeholder="Selecione tipo"
[(ngModel)]="postEvent.Categories[0]"
selectedText="{{postEvent.Categories[0]}}"
interface="action-sheet"
Cancel-text="Cancelar" required>
<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>
</div>
</div>
</div>
<div class="container-div width-100">
<div class="ion-item-class-2 width-100">
<div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-calendar.svg"></ion-icon>
</div>
<div class="ion-input-class width-100">
<ion-datetime
placeholder="Início"
[(ngModel)]="postEvent.StartDate"
displayFormat="D MMM YYYY H:mm"
minuteValues="0,15,30,45"
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
min="2018"
max="2022"
>
</ion-datetime>
<!-- <ion-input placeholder="Data início" [(ngModel)]="postData.StartDate"></ion-input> -->
</div>
</div>
</div>
<div class="container-div width-100">
<div class="ion-item-class-2">
<div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-calendar.svg"></ion-icon>
</div>
<div class="ion-input-class">
<ion-datetime
placeholder="Fim"
[(ngModel)]="postEvent.EndDate"
displayFormat="D MMM YYYY H:mm"
minuteValues="0,15,30,45"
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
min="2018"
max="2022"
>
</ion-datetime>
<!-- <ion-input placeholder="Data fim" [(ngModel)]="postData.EndDate"></ion-input> -->
</div>
</div>
</div>
<div class="container-div width-100">
<div class="ion-item-class-2">
<div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-refresh.svg"></ion-icon>
</div>
<div class="ion-input-class">
<ion-select placeholder="Selecione repetição"
[(ngModel)]="postEvent.IsRecurring"
selectedText="{{isRecurring}}"
interface="action-sheet"
Cancel-text="Cancelar" required>
<ion-select-option value="false">Não se repete</ion-select-option>
<ion-select-option value="true">Repete</ion-select-option>
</ion-select>
</div>
</div>
</div>
<div class="width-100">
<div class="container-div width-50">
<div class="ion-item-class-2">
<div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-person.svg"></ion-icon>
</div>
<div class="ion-input-class-no-height">
<div class="list-people">
<ion-item lines="none">
<ion-list>
<ion-label *ngIf="!taskParticipants" class="list-people-title">Adicionar intervenientes</ion-label>
<ion-label *ngFor="let participant of taskParticipants">{{participant.Name}}</ion-label>
</ion-list>
</ion-item>
</div>
<div class="add-people">
<ion-icon (click)="addParticipants()" slot="start" src="assets/images/icons-arrow-forward.svg"></ion-icon>
</div>
</div>
</div>
</div>
<div class="container-div width-50">
<div class="ion-item-class-2">
<div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-person.svg"></ion-icon>
</div>
<div class="ion-input-class-no-height">
<div class="list-people">
<ion-item lines="none">
<ion-list>
<ion-label *ngIf="!taskParticipantsCc" class="list-people-title">Adicionar intervenientes</ion-label>
<ion-label *ngFor="let participant of taskParticipantsCc">{{participant.Name}}</ion-label>
</ion-list>
</ion-item>
</div>
<div class="add-people">
<ion-icon (click)="addParticipantsCC()" slot="start" src="assets/images/icons-arrow-forward.svg"></ion-icon>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="container-div width-100 pb-20">
<div class="ion-item-class-2 d-flex">
<div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
</div>
<div class="ion-input-class-no-height width-100">
<ion-textarea placeholder="Detalhes" [(ngModel)]="postEvent.Body.Text" rows="6" cols="20"></ion-textarea>
</div>
</div>
<div hidden class="ion-item-container-no-border">
<ion-label>
<div class="attach-icon">
<ion-icon src="assets/images/icons-attach-doc.svg"></ion-icon>
</div>
<div class="attach-document">
<ion-label>Anexar Documentos</ion-label>
</div>
</ion-label>
</div>
</div>
<div class="ion-item-container width-100">
<ion-input placeholder="Assunto" [(ngModel)]="postEvent.Subject"></ion-input>
</div>
<div class="container-div width-100">
<div class="ion-item-class-2">
<div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-location.svg"></ion-icon>
</div>
<div class="ion-input-class">
<ion-input placeholder="Localização" [(ngModel)]="postEvent.Location"></ion-input>
</div>
</div>
<!-- Error messages -->
<!-- <span class="error ion-padding" >
Campo obrigatório
</span> -->
</div>
<div class="container-div width-100">
<div class="ion-item-class-2">
<div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-calendar.svg"></ion-icon>
</div>
<div class="ion-input-class">
<ion-select disabled placeholder="Selecione agenda"
selectedText="{{postEvent.CalendarName}}"
[(ngModel)]="postEvent.CalendarName"
interface="action-sheet" Cancel-text="Cancelar"
required>
<ion-select-option value="Oficial">Oficial</ion-select-option>
<ion-select-option value="Pessoal">Pessoal</ion-select-option>
</ion-select>
</div>
</div>
</div>
<div class="container-div width-100">
<div class="ion-item-class-2">
<div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-calendar.svg"></ion-icon>
</div>
<div class="ion-input-class">
<ion-select placeholder="Selecione tipo"
[(ngModel)]="postEvent.Categories[0]"
selectedText="{{postEvent.Categories[0]}}"
interface="action-sheet"
Cancel-text="Cancelar" required>
<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>
</div>
</div>
</div>
<div class="container-div width-100">
<div class="ion-item-class-2 width-100">
<div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-calendar.svg"></ion-icon>
</div>
<div class="ion-input-class width-100">
<ion-datetime
placeholder="Início"
[(ngModel)]="postEvent.StartDate"
displayFormat="D MMM YYYY H:mm"
minuteValues="0,15,30,45"
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
min="2018"
max="2022"
>
</ion-datetime>
<!-- <ion-input placeholder="Data início" [(ngModel)]="postData.StartDate"></ion-input> -->
</div>
</div>
</div>
<div class="container-div width-100">
<div class="ion-item-class-2">
<div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-calendar.svg"></ion-icon>
</div>
<div class="ion-input-class">
<ion-datetime
placeholder="Fim"
[(ngModel)]="postEvent.EndDate"
displayFormat="D MMM YYYY H:mm"
minuteValues="0,15,30,45"
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
min="2018"
max="2022"
>
</ion-datetime>
<!-- <ion-input placeholder="Data fim" [(ngModel)]="postData.EndDate"></ion-input> -->
</div>
</div>
</div>
<div class="container-div width-100">
<div class="ion-item-class-2">
<div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-refresh.svg"></ion-icon>
</div>
<div class="ion-input-class">
<ion-select placeholder="Selecione repetição"
[(ngModel)]="postEvent.IsRecurring"
selectedText="{{isRecurring}}"
interface="action-sheet"
Cancel-text="Cancelar" required>
<ion-select-option value="false">Não se repete</ion-select-option>
<ion-select-option value="true">Repete</ion-select-option>
</ion-select>
</div>
</div>
</div>
<div class="width-100">
<div class="container-div width-50">
<div class="ion-item-class-2">
<div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-person.svg"></ion-icon>
</div>
<div (click)="openAttendees()" class="ion-input-class-no-height">
<div class="list-people">
<ion-item lines="none">
<ion-list>
<ion-label class="list-people-title">Adicionar Destinatários</ion-label>
<ion-label hidden >Text</ion-label>
</ion-list>
</ion-item>
</div>
<div class="add-people">
<ion-icon slot="start" src="assets/images/icons-arrow-forward.svg"></ion-icon>
</div>
</div>
</div>
</div>
<div class="container-div width-50">
<div class="ion-item-class-2">
<div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-people-cc.svg"></ion-icon>
</div>
<div (click)="openAttendees()" class="ion-input-class-no-height">
<div class="list-people">
<ion-item lines="none">
<ion-list>
<ion-label class="list-people-title">Adicionar CC</ion-label>
<ion-label hidden >Text</ion-label>
</ion-list>
</ion-item>
</div>
<div class="add-people">
<ion-icon slot="start" src="assets/images/icons-arrow-forward.svg"></ion-icon>
</div>
</div>
</div>
</div>
</div>
<div class="container-div width-100">
<div class="ion-item-class-2">
<div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
</div>
<div class="ion-input-class-no-height width-100">
<ion-textarea placeholder="Detalhes" [(ngModel)]="postEvent.Body.Text" rows="6" cols="20"></ion-textarea>
</div>
</div>
</div>
<div hidden class="ion-item-container-no-border">
<ion-label>
<div class="attach-icon">
<ion-icon src="assets/images/icons-attach-doc.svg"></ion-icon>
</div>
<div class="attach-document">
<ion-label>Anexar Documentos</ion-label>
</div>
</ion-label>
</div>
<div hidden>
<ion-item>
<ion-label>Documentos Anexados</ion-label>
</ion-item>
<ion-list>
<div hidden>
<ion-item>
<ion-label>
<h4 class="attach-title-item">Text</h4>
<p><span class="span-left">Text</span><span class="span-right"> Text </span></p>
</ion-label>
</ion-item>
</ion-list>
</div>
<ion-label>Documentos Anexados</ion-label>
</ion-item>
<ion-list>
<ion-item>
<ion-label>
<h4 class="attach-title-item">Text</h4>
<p><span class="span-left">Text</span><span class="span-right"> Text </span></p>
</ion-label>
</ion-item>
</ion-list>
</div>
</ion-item-sliding>
</div>
<div class="aside-right flex-column height-100">
</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>
</ion-content>
<ion-footer>
<ion-footer class="background-whit">
<div class="buttons">
<button class="btn-cancel" shape="round" (click)="close()">Cancelar</button>
<button class="btn-ok" shape="round" (click)="save()">Gravar</button>
@@ -1,6 +1,10 @@
.title-content::after, .header-md::after{
display: none;
}
.content{
padding: 30px 20px 0 20px !important;
margin: 0;
float: left;
border-left: 1px solid #d8d8d8 !important;
@@ -8,13 +12,12 @@
.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{
@@ -38,12 +41,10 @@
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;
@@ -72,10 +73,8 @@
width: calc(100% - 45px);
border: 1px solid #ebebeb;
border-radius: 5px;
overflow: auto;
}
.list-people{
//width: 256px;
float: left;
}
@@ -3,7 +3,6 @@ import { AlertController, ModalController, NavParams } from '@ionic/angular';
import { EventBody } from 'src/app/models/eventbody.model';
import { EventPerson } from 'src/app/models/eventperson.model';
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 { Event } from '../../../models/event.model';
import { AttendeesPage } from '../../events/attendees/attendees.page';
@@ -27,6 +26,11 @@ export class EditEventPage implements OnInit {
selectedDate: Date;
minDate: string;
taskParticipants: any = [];
taskParticipantsCc: any = [];
adding: "intervenient" | "CC" = "intervenient";
constructor(
private modalController: ModalController,
private navParams: NavParams,
@@ -36,6 +40,18 @@ export class EditEventPage implements OnInit {
) {
this.isEventEdited = false;
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){
this.isRecurring = "Não se repete";
}
@@ -46,8 +62,6 @@ export class EditEventPage implements OnInit {
}
ngOnInit() {
console.log(this.profile);
console.log(this.postEvent);
window.onresize = (event) => {
// if not mobile remove all component
@@ -75,26 +89,55 @@ export class EditEventPage implements OnInit {
this.modalController.dismiss(this.isEventEdited);
}
async openAttendees()
{
const modal = await this.modalController.create({
component: AttendeesPage,
componentProps: {
eventAttendees: this.postEvent.Attendees
},
cssClass: 'attendee',
backdropDismiss: false
});
async openAttendees(){
await modal.present();
modal.onDidDismiss().then((data) => {
if (data['data'] != null)
{
let newattendees: EventPerson[] = data['data'];
this.postEvent.Attendees = newattendees;
}
});
}
if(window.innerWidth <= 1024) {
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.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,51 +34,57 @@
</div>
</div>
</div>
<div class="upper-content">
<div class="content-location">
<p><span class="date">{{loadedEvent.Location}}</span><span class="label">{{loadedEvent.CalendarName}}</span></p>
<div class="overflow-y-auto">
<div class="upper-content">
<div class="content-location">
<p><span class="date">{{loadedEvent.Location}}</span><span class="label">{{loadedEvent.CalendarName}}</span></p>
</div>
<div class="content-details">
<ion-label>
<p>{{customDate}}</p>
<p>das {{loadedEvent.StartDate | date: 'HH:mm'}} às {{loadedEvent.EndDate | date: 'HH:mm'}}</p>
<p *ngIf="!loadedEvent.IsRecurring">(Não se repete)</p>
<p *ngIf="loadedEvent.IsRecurring">Repete</p>
</ion-label>
</div>
</div>
<div class="content-details">
<ion-label>
<p>{{customDate}}</p>
<p>das {{loadedEvent.StartDate | date: 'HH:mm'}} às {{loadedEvent.EndDate | date: 'HH:mm'}}</p>
<p *ngIf="!loadedEvent.IsRecurring">(Não se repete)</p>
<p *ngIf="loadedEvent.IsRecurring">Repete</p>
</ion-label>
</div>
</div>
<div class="line"></div>
<div class="middle-content">
<div *ngIf="loadedEvent.Attendees">
<h5>Intervenientes</h5>
<ion-item class="ion-no-margin ion-no-padding">
<ion-label>
<div *ngFor="let attendee of loadedEvent.Attendees">
<p>{{attendee.Name}}</p>
</div>
</ion-label>
</ion-item>
</div>
<h5>Detalhes</h5>
<ion-item class="ion-no-margin ion-no-padding">
<textarea disabled class="width-100" [innerHTML]="loadedEvent.Body.Text" rows="6"></textarea>
</ion-item>
</div>
<div *ngIf="loadedAttachments" class="bottom-content">
<ion-list>
<h3>Documentos Anexados</h3>
<div class="line"></div>
<div class="middle-content">
<div *ngIf="loadedEvent.Attendees">
<h5>Intervenientes</h5>
<ion-item class="ion-no-margin ion-no-padding">
<ion-label *ngFor="let attach of loadedAttachments"
(click)="viewDocument()">
<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>
</ion-label>
</ion-item>
</ion-list>
<ion-label>
<div *ngFor="let attendee of loadedEvent.Attendees">
<p>{{attendee.Name}}</p>
</div>
</ion-label>
</ion-item>
</div>
<div *ngIf="loadedEvent.Body.Text">
<h5>Detalhes</h5>
<ion-item class="ion-no-margin ion-no-padding">
<textarea disabled class="width-100" [innerHTML]="loadedEvent.Body.Text" rows="6"></textarea>
</ion-item>
</div>
</div>
<div *ngIf="loadedAttachments" class="bottom-content width-100">
<ion-list>
<h5>Documentos Anexados</h5>
<ion-item class="ion-no-margin ion-no-padding">
<ion-label *ngFor="let attach of loadedAttachments"
(click)="viewDocument(attach.SourceId)">
<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>
</ion-label>
</ion-item>
</ion-list>
</div>
</div>
</div>
<div class="aside-right flex-column height-100">
<div class="aside-right flex-column height-100 d-none d-md-flex">
<div class="buttons">
<button (click)="editEvent()" full class="btn-ok" shape="round" >Editar</button>
<div class="solid"></div>
@@ -162,7 +162,6 @@ ion-menu{
}
.bottom-content{
width: 360px;
margin: 0 auto;
.bottom-content h3{
@@ -8,12 +8,14 @@ import { EventsService } from 'src/app/services/events.service';
import { Event } from '../../../models/event.model';
import { EditEventPage } from '../edit-event/edit-event.page';
import { InAppBrowser } from '@ionic-native/in-app-browser/ngx';
import { ProcessesService } from 'src/app/services/processes.service';
@Component({
selector: 'app-view-event',
templateUrl: './view-event.page.html',
styleUrls: ['./view-event.page.scss'],
})
export class ViewEventPage implements OnInit {
loadedEvent: Event;
@@ -41,6 +43,7 @@ export class ViewEventPage implements OnInit {
private attachmentsService: AttachmentsService,
public alertController: AlertController,
private iab: InAppBrowser,
private processes: ProcessesService,
)
{
this.profile = this.navParams.get('profile');
@@ -65,6 +68,7 @@ export class ViewEventPage implements OnInit {
};
}
close(){
console.log(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()]);
});
}
deleteEvent(){
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() {
let classs;
@@ -133,11 +158,14 @@ export class ViewEventPage implements OnInit {
});
}
viewDocument(){
const url: string = this.loadedAttachments.DocumentURL.replace("webTRIX.Viewer","webTRIX.Viewer.Branch1");
const browser = this.iab.create(url,"_blank");
browser.show();
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");
browser.show();
});
}
}
@@ -39,15 +39,14 @@
<ion-footer class="ion-no-border">
<ion-toolbar class="btn-div">
<ion-buttons slot="start">
<ion-toolbar class="d-flex">
<ion-buttons class="flex-grow-1" slot="start">
<ion-button class="btn-cancel" fill="clear" color="#061b52" (click)="close()">
<ion-label>Cancelar</ion-label>
<ion-icon name="close" slot="start"></ion-icon>
</ion-button>
</ion-buttons>
<ion-title></ion-title>
<ion-buttons slot="end">
<ion-buttons class="flex-grow-1" slot="end">
<ion-button class="btn-ok" fill="clear" color="#fff" (click)="save()">
<ion-label>OK</ion-label>
<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 { EventsService } from 'src/app/services/events.service';
import { ModalController, NavController } from '@ionic/angular';
import { AttendeeModalPage } from '../attendee-modal/attendee-modal.page';
// import { AttendeeModalPage } from '../attendee-modal/attendee-modal.page';
@Component({
selector: 'app-attendees',
@@ -11,12 +11,18 @@ import { AttendeeModalPage } from '../attendee-modal/attendee-modal.page';
})
export class AttendeesPage implements OnInit {
eventAttendees: EventPerson[];
segment:string = "true";
shouldShowCancel:boolean = true;
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,
private navCtrl: NavController) {
}
@@ -26,11 +32,15 @@ export class AttendeesPage implements OnInit {
}
save(){
this.GoBackEditOrAdd.emit();
//this.openAddEvent.emit();
this.modalCtrl.dismiss(this.eventAttendees);
}
close(){
this.GoBackEditOrAdd.emit();
this.modalCtrl.dismiss(null);
//this.openAddEvent.emit();
}
removeAttendee(attendee: EventPerson)
@@ -42,9 +52,12 @@ export class AttendeesPage implements OnInit {
this.eventAttendees.splice(index, 1);
}
async addAttendees()
{
const modal = await this.modalCtrl.create({
async addAttendees() {
console.log('Event Intervenient');
this.openAttendeeModal.emit();
/* const modal = await this.modalCtrl.create({
component: AttendeeModalPage,
componentProps: {
eventPersons: this.eventAttendees
@@ -73,7 +86,8 @@ export class AttendeesPage implements OnInit {
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;
}
});
}
}
+34 -33
View File
@@ -1,37 +1,38 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { EventsPage } from './events.page';
const routes: Routes = [
{
path: '',
component: EventsPage
},
{
path: 'event-detail',
loadChildren: () => import('./event-detail/event-detail.module').then( m => m.EventDetailPageModule)
},
{
path: 'attachments',
loadChildren: () => import('./attachments/attachments.module').then( m => m.AttachmentsPageModule)
},
{
path: 'attendees',
loadChildren: () => import('./attendees/attendees.module').then( m => m.AttendeesPageModule)
},
{
path: 'attendee-modal',
loadChildren: () => import('./attendee-modal/attendee-modal.module').then( m => m.AttendeeModalPageModule)
},
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { EventsPage } from './events.page';
const routes: Routes = [
{
path: '',
component: EventsPage
},
{
path: 'event-detail',
loadChildren: () => import('./event-detail/event-detail.module').then( m => m.EventDetailPageModule)
},
{
path: 'attachments',
loadChildren: () => import('./attachments/attachments.module').then( m => m.AttachmentsPageModule)
},
{
path: 'attendees',
loadChildren: () => import('./attendees/attendees.module').then( m => m.AttendeesPageModule)
},
{
path: 'attendee-modal',
loadChildren: () => import('./attendee-modal/attendee-modal.module').then( m => m.AttendeeModalPageModule)
},
{
path: 'event-detail-modal',
loadChildren: () => import('./event-detail-modal/event-detail-modal.module').then( m => m.EventDetailModalPageModule)
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
})
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
})
export class EventsPageRoutingModule {}
+30 -1
View File
@@ -15,6 +15,7 @@ import { DailyWorkTask } from '../../models/dailyworktask.model';
import { ViewEventPage } from '../agenda/view-event/view-event.page';
import { ExpedientePage } from '../gabinete-digital/expediente/expediente.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 { EditEventPage } from '../agenda/edit-event/edit-event.page';
@@ -106,6 +107,7 @@ export class EventsPage implements OnInit {
doRefresh(event) {
this.RefreshEvents();
event.target.complete();
this.LoadList();
}
onSegmentChange(){
@@ -265,7 +267,6 @@ export class EventsPage implements OnInit {
} else {
classs = 'modal modal-desktop showAsideOptions'
}
console.log(this.profile);
const modal = await this.modalController.create({
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) {
let classs;
if( window.innerWidth <= 800){
@@ -40,7 +40,7 @@ export class DiscartExpedientModalPage implements OnInit {
}
save(){
if(this.action != 'discart'){
/* if(this.action != 'discart'){
let body = { "serialNumber": this.serialNumber, "action": "Tratado" }
console.log(body);
this.processes.PostTaskAction(body);
@@ -49,9 +49,9 @@ export class DiscartExpedientModalPage implements OnInit {
let body = { "serialNumber": this.serialNumber, "action": "Passivo" }
console.log(body);
this.processes.PostTaskAction(body);
}
} */
this.router.navigate(['/home/gabinete-digital/expediente']);
this.modalController.dismiss();
this.modalController.dismiss('close');
}
}
@@ -25,7 +25,7 @@
</ion-item>
<ion-item (click)="emendTask(loadedEvent.serialNumber)">
<ion-icon name="create-outline"></ion-icon>
<ion-label>Emendar</ion-label>
<ion-label>Emendar1</ion-label>
</ion-item>
<ion-item (click)="rejectTask(loadedEvent.serialNumber)">
<ion-icon name="close-sharp"></ion-icon>
@@ -25,7 +25,7 @@
</ion-item>
<ion-item (click)="emendTask(loadedEvent.serialNumber)">
<ion-icon name="create-outline"></ion-icon>
<ion-label>Emendar</ion-label>
<ion-label>Emendar1</ion-label>
</ion-item>
<ion-item (click)="rejectTask(loadedEvent.serialNumber)">
<ion-icon name="close-sharp"></ion-icon>
@@ -93,7 +93,7 @@
</ion-menu-button>
</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>
</ion-item>
<ion-item hidden>
@@ -33,7 +33,12 @@ export class EventListPage implements OnInit {
ngOnInit() {
this.profile = this.navParams.get('profile');
/* console.log(this.navParams.get('md')); */
console.log(this.profile);
if(this.profile == "mdgpr"){
this.profile = 'MDGPR'
} else {
this.profile = 'PR'
}
this.LoadToApproveEvents();
@@ -56,7 +56,7 @@
<div class="list-people">
<ion-item lines="none">
<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-list>
</ion-item>
@@ -77,7 +77,7 @@
<div class="list-people">
<ion-item lines="none">
<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-list>
</ion-item>
@@ -118,7 +118,12 @@
<app-attendee-modal
class="aside-right d-flex flex-column height-100"
[eventAttendees]="contacts"
[adding]="adding"
[taskParticipants]="taskParticipants"
[taskParticipantsCc]="taskParticipantsCc"
(closeComponent)="closeComponent()"
(setIntervenient)="setIntervenient($event)"
(setIntervenientCC)="setIntervenientCC($event)"
(setContact)="setContact($event)"
></app-attendee-modal>
@@ -16,7 +16,6 @@
}
.container-div{
margin-bottom: 15px;
overflow: auto;
}
.ion-item-container{
//width: 360px;
@@ -12,6 +12,7 @@ import { AddParticipantsModalPage } from '../add-participants-modal/add-particip
import { environment } from 'src/environments/environment';
import { DiscartExpedientModalPage } from '../../discart-expedient-modal/discart-expedient-modal.page';
import { AttachmentsService } from 'src/app/services/attachments.service';
import { ExpedienteDetailPage } from '../expediente-detail/expediente-detail.page';
@Component({
selector: 'app-expedient-task-modal',
@@ -27,8 +28,10 @@ export class ExpedientTaskModalPage implements OnInit {
];
taskType:string;
task: any;
taskParticipants: any;
taskParticipantsCc: any;
taskParticipants: any = [];
taskParticipantsCc: any = [];
taskDate: Date;
taskDescription: string;
user: string;
@@ -43,7 +46,8 @@ export class ExpedientTaskModalPage implements OnInit {
// trigger hide and show for attendee component
showAttendees= false;
adding: "intervenient" | "CC"
adding: "intervenient" | "CC" = "intervenient";
profile: string;
constructor(
private modalController: ModalController,
@@ -74,6 +78,11 @@ export class ExpedientTaskModalPage implements OnInit {
this.postData.SubjectTypeId = '99999844';
/* Initialize 'Subject' with the title of the expedient */
this.postData.DispatchFolder.Subject = this.task.workflowInstanceDataFields.Subject;
this.profile = this.navParams.get('profile');
}
async setAdding(type: "intervenient" | "CC"){
this.adding = type;
}
ngOnInit() {
@@ -87,15 +96,18 @@ export class ExpedientTaskModalPage implements OnInit {
this.router.navigate(['/home/gabinete-digital/expediente']);
this.modalController.dismiss(null);
}
cancelTask(){
this.modalController.dismiss(null);
}
getSubjectType(){
this.processes.GetSubjectType().subscribe(res=>{
console.log(res);
this.subjectTypes = res;
});
}
cancelTask(){
this.modalController.dismiss(null);
//this.viewExpedientDetail();
}
saveTask(){
/* console.log(this.taskType); */
@@ -112,7 +124,9 @@ export class ExpedientTaskModalPage implements OnInit {
DispatchFolder: this.dispatchFolder,
}
console.log(this.postData);
this.processes.postDespatcho(this.postData);
/* this.processes.postDespatcho(this.postData); */
//this.distartExpedientModal();
this.modalController.dismiss('openDiscart');
break;
case '1':
@@ -125,7 +139,9 @@ export class ExpedientTaskModalPage implements OnInit {
UsersSelected: this.participants,
DispatchFolder: this.dispatchFolder,
}
this.processes.postParecer(this.postData);
/* this.processes.postParecer(this.postData); */
//this.distartExpedientModal();
this.modalController.dismiss();
break;
case '2':
this.postData = {
@@ -138,10 +154,13 @@ export class ExpedientTaskModalPage implements OnInit {
DispatchFolder: this.dispatchFolder,
}
this.processes.postDeferimento(this.postData);
//this.distartExpedientModal();
this.close();
break;
}
this.distartExpedientModal();
this.close();
/* this.distartExpedientModal();
this.close(); */
}
getAttachments(){
this.attachmentsService.getAttachmentsBySerial(this.task.serialNumber).subscribe(res=>{
@@ -239,25 +258,64 @@ export class ExpedientTaskModalPage implements OnInit {
});
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[]){
if(this.adding == "intervenient"){
console.log('intervenient')
this.contacts = data;
this.taskParticipants = data;
} else if (this.adding == "CC") {
console.log('CCCC')
this.taskParticipantsCc = data;
}
}
async setIntervenient(data){
this.taskParticipants = data;
}
async setIntervenientCC(data){
this.taskParticipantsCc = data;
}
async closeComponent(){
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);
}
close(){
this.modalController.dismiss();
}
async LoadTaskDetail(serial: string) {
this.processes.GetTask(serial).subscribe(res => {
@@ -120,9 +124,11 @@ export class ExpedienteDetailPage implements OnInit {
openMenu() {
this.menu.open();
this.modalController.dismiss();
}
async openExpedientActionsModal(taskAction: any, task: any) {
//this.modalController.dismiss();
let classs;
if( window.innerWidth <= 800){
classs = 'modal'
@@ -134,11 +140,21 @@ export class ExpedienteDetailPage implements OnInit {
componentProps: {
taskAction: taskAction,
task: task,
profile: this.profile,
},
cssClass: classs,
});
await modal.present();
modal.onDidDismiss();
modal.onDidDismiss().then(res=>{
console.log(res['data']);
if(res['data']=='openDiscart'){
console.log('open discart');
this.distartExpedientModal();
}
});
}
discartExpedient() {
@@ -148,7 +164,7 @@ export class ExpedienteDetailPage implements OnInit {
this.router.navigate(['/home/gabinete-digital/expediente']); */
}
async distartExpedientModal(task: any){
async distartExpedientModal2(task: any){
const modal = await this.modalController.create({
component: DiscartExpedientModalPage,
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);
let classs;
if( window.innerWidth <= 1024){
if( window.innerWidth <= 800){
classs = 'modal modal-desktop'
} else {
classs = 'gabinete-digital-mobile-modal-to-Desktop'
@@ -84,7 +84,8 @@ export class ExpedientePage implements OnInit {
});
await modal.present();
modal.onDidDismiss().then((res)=>{
console.log('refresh list');
this.LoadList();
});
}
@@ -163,7 +163,7 @@ this.processesbackend.GetActionsList().subscribe(res=>{
this.closeAllDesktopComponent();
let classs;
if( window.innerWidth <= 1024){
if( window.innerWidth <= 800){
classs = 'modal'
} else {
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"
[folderId]="folderId"
[publicationType]="publicationType"
[publication]="publication"
(closeDesktopComponent)="closeDesktopComponent($event)"
(goBacktoPublicationDetails)="goBacktoPublicationDetails($event)"
(goBackToViewPublications)="goBackToViewPublications($event)"
@@ -97,6 +97,7 @@
*ngIf="desktopComponent.showPublicationDetail"
class="height-100 d-flex flex-column overflow-hidden background-white flex-grow-1"
[publicationId]="publicationId"
[folderId]="folderId"
(addNewPublication)="addNewPublication($event)"
(closeDesktopComponent)="closeDesktopComponent($event)"
(goBacktoPublicationDetails)="goBacktoPublicationDetails($event)"
@@ -67,12 +67,14 @@
</div>
<div class="line"></div>
<div class="middle-content">
<div *ngIf="loadedEvent.workflowInstanceDataFields.Participants">
<h5>Intervenientes</h5>
<ion-item class="ion-no-margin ion-no-padding">
<ion-label>
<p>{{loadedEvent.workflowInstanceDataFields.Participants}}</p>
</ion-label>
</ion-item>
</div>
<h5>Detalhes</h5>
<ion-item class="ion-no-margin ion-no-padding">
<p [innerHTML]="loadedEvent.workflowInstanceDataFields.Body"></p>
@@ -71,8 +71,12 @@ export class ApproveEventComponent implements OnInit {
})
}
approveTask(serialNumber:string){
this.approveEventDismiss.emit({
let body = { "serialNumber": serialNumber, "action": "Aprovar" }
console.log(body);
this.processes.PostTaskAction(body);
this.alertService.presentAlert('Operação realizada com sucesso!');
this.modalController.dismiss(serialNumber);
/* this.approveEventDismiss.emit({
"serialNumber": serialNumber,
"action": "Aprovar",
"saveData": {
@@ -80,7 +84,7 @@ export class ApproveEventComponent implements OnInit {
today: this.today,
customDate: this.customDate
}
});
}); */
}
emendTask(serialNumber:string){
@@ -49,7 +49,7 @@
<ion-item
class=" ion-no-padding width-100"
*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="approve-event-time">
<p>{{event.workflowInstanceDataFields.StartDate | date: 'hh:mm'}}</p>
@@ -134,8 +134,8 @@
<div class="list-people">
<ion-item lines="none">
<ion-list>
<ion-label *ngIf="eventAttendees.length ==0" class="list-people-title">Adicionar intervenientes</ion-label>
<ion-label *ngFor="let participant of eventAttendees">{{participant.Name}}</ion-label>
<ion-label *ngIf="taskParticipants.length ==0" class="list-people-title">Adicionar intervenientes</ion-label>
<ion-label *ngFor="let participant of taskParticipants">{{participant.Name}}</ion-label>
</ion-list>
</ion-item>
</div>
@@ -20,7 +20,7 @@ export class NewEventPage implements OnInit {
@Input() profile:string;
@Input() selectedSegment: string;
@Input() selectedDate: Date;
@Input() eventAttendees: EventPerson[];
@Input() taskParticipants: EventPerson[];
@Output() onAddEvent = new EventEmitter<any>();
@Output() openAttendeesComponent = new EventEmitter<any>();
@@ -109,7 +109,7 @@ export class NewEventPage implements OnInit {
save(){
this.postEvent.Attendees = this.eventAttendees;
this.postEvent.Attendees = this.taskParticipants;
if(this.profile=='mdgpr'){
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']
if(JSON.stringify(restoredData) != "{}" && undefined != restoredData){
console.log('restore1111', restoredData)
this.postEvent = restoredData.postEvent
this.eventBody = restoredData.eventBody
this.segment = restoredData.segment
@@ -52,11 +52,11 @@
<div class="line"></div>
<div *ngIf="loadedAttachments" class="bottom-content">
<h5>Documentos Anexados</h5>
<ion-list>
<h3>Documentos Anexados</h3>
<ion-item lines="none" class="ion-no-margin ion-no-padding">
<ion-label *ngFor="let attach of loadedAttachments"
(click)="viewDocument()">
(click)="viewDocument(attach.SourceId)">
<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>
</ion-label>
@@ -7,6 +7,7 @@ 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';
import { ProcessesService } from 'src/app/services/processes.service';
@Component({
selector: 'app-view-event',
@@ -42,24 +43,26 @@ export class ViewEventPage implements OnInit {
private attachmentsService: AttachmentsService,
public alertController: AlertController,
private iab: InAppBrowser,
private processes: ProcessesService,
)
{
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();
//this.getAttachments();
}
ngOnChanges(changes: any): void {
this.loadedAttachments = null;
this.loadEvent();
this.getAttachments();
}
close(){
@@ -73,12 +76,11 @@ export class ViewEventPage implements OnInit {
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()]);
this.getAttachments(this.loadedEvent.EventId);
});
}
deleteEvent(){
@@ -95,8 +97,8 @@ export class ViewEventPage implements OnInit {
});
}
getAttachments(){
this.attachmentsService.getAttachmentsById(this.eventId).subscribe(res=>{
getAttachments(eventId){
this.attachmentsService.getAttachmentsById(eventId).subscribe(res=>{
this.loadedAttachments = res;
console.log(res);
});
@@ -109,10 +111,15 @@ export class ViewEventPage implements OnInit {
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();
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");
browser.show();
});
}
}
@@ -6,9 +6,9 @@
<ion-progress-bar type="indeterminate" *ngIf="showLoader"></ion-progress-bar>
</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-item-sliding class="px-20">
<div *ngFor="let attendee of contacts;">
@@ -26,10 +26,30 @@
</ion-item-sliding>
</ion-list>
<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 *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">
<ion-icon class="font-35" src="assets/images/icons-userprofile.svg"></ion-icon>
</div>
@@ -16,33 +16,47 @@ export class AttendeeModalPage implements OnInit {
selectedContact: EventPerson[] =[];
eventPersons: EventPerson[];
@Input() eventAttendees: EventPerson[];
@Input() taskParticipants:EventPerson[] = [];
@Input() taskParticipantsCc:EventPerson[] = [];
constructor(private modalCtrl: ModalController, private contactsService: ContactsService) { }
@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;
@Input() adding: "intervenient" | "CC";
ngOnInit() {
this.fetchContacts("");
this.selectedContact = this.eventAttendees;
if(this.taskParticipants == null || this.taskParticipants == undefined){
this.taskParticipants = [];
}
if(this.taskParticipantsCc == null || this.taskParticipantsCc == undefined){
this.taskParticipantsCc = [];
}
}
ngOnChanges(){
console.log('change !!!')
}
ngOnChanges(event){}
save(){
// set data to agenda component
this.setContact.emit(this.selectedContact);
this.setIntervenient.emit(this.taskParticipants);
this.setIntervenientCC.emit(this.taskParticipantsCc);
this.closeComponent.emit();
}
setContactWithClose(){
if(this.currentPath == '/home/gabinete-digital'){
this.setContact.emit(this.selectedContact);
this.setIntervenient.emit(this.taskParticipants);
this.setIntervenientCC.emit(this.taskParticipantsCc);
}
}
@@ -56,39 +70,81 @@ export class AttendeeModalPage implements OnInit {
this.fetchContacts(evt.detail.value);
}
filterSearchList(itm: EventPerson): boolean {
const result = this.selectedContact.find((contact, index)=>{
if(contact.Name == itm.Name && contact.EmailAddress == itm.EmailAddress){
index = index;
return contact;
}
});
return undefined == result;
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){
index = index;
return contact;
}
});
return undefined == result;
}
}
remove(itm: EventPerson){
this.selectedContact = this.selectedContact.filter((contact, index) =>{
if(this.adding == "intervenient"){
if(contact.Name != itm.Name && contact.EmailAddress != itm.EmailAddress){
return contact;
}
return false;
this.taskParticipants = this.taskParticipants.filter((contact, index) =>{
});
if(contact.Name != itm.Name && contact.EmailAddress != itm.EmailAddress){
return contact;
}
return false;
});
} 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
})
// run only in gabinete digital
this.setContactWithClose();
}
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
this.setContactWithClose();
}
@@ -67,7 +67,7 @@ S
}
async openApproveModal(eventSerialNumber){
let classs;
if( window.innerWidth <= 1024){
if( window.innerWidth <= 800){
classs = 'modal modal-desktop'
} else {
classs = 'modal modal-desktop showAsideOptions'
@@ -81,7 +81,11 @@ S
cssClass: classs,
});
await modal.present();
modal.onDidDismiss();
modal.onDidDismiss().then((res) => {
console.log(res['data']);
this.LoadToApproveEvents();
});
}
doRefresh(event) {
@@ -91,7 +91,8 @@ export class ExpedientsPage implements OnInit {
});
await modal.present();
modal.onDidDismiss().then((res)=>{
console.log('refresh list');
this.LoadList();
});
}
@@ -13,7 +13,7 @@
<div class="content-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>
@@ -29,9 +29,9 @@
</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">
<img src="{{publication.FileBase64}}" alt="image" >
</div>
@@ -45,28 +45,28 @@
</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-item lines="none">
<ion-thumbnail slot="start">
<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-img [(ngModel)]="publication.imageUrl" [src]="guestPicture"></ion-img>
</ion-thumbnail> -->
<ion-label>
<!-- <ion-label>
<p>{{capturedImageTitle}}</p>
<p hidden>size</p>
</ion-label>
<ion-icon (click)="clear()" name="close"></ion-icon>
</ion-item>
</ion-item> -->
<!-- <ion-thumbnail>
<ion-img src="{{imgUrl}}"></ion-img>
</ion-thumbnail> -->
</div>
<!-- </div> -->
<div class="ion-item-container-no-border">
<div class="ion-item-container-no-border hide-desktop">
<ion-label (click)="takePicture()">
<div class="attach-icon">
<ion-icon src="assets/images/icons-add-photo.svg"></ion-icon>
@@ -77,7 +77,7 @@
</ion-label>
</div>
<div class="ion-item-container-no-border">
<div class="ion-item-container-no-border hide-desktop">
<ion-label (click)="getPicture()">
<div class="attach-icon">
<ion-icon src="assets/images/icons-add-photos.svg"></ion-icon>
@@ -152,4 +152,8 @@ font-size: 25px;
.container-title{
font-size: 15px;
font-weight: bold;
}
}
.hide-desktop{
display: block;
}
@@ -35,7 +35,8 @@ export class NewPublicationPage implements OnInit {
photo: SafeResourceUrl;
@Input() publication: Publication;
publication: Publication = new Publication();
@Input() publicationType: string;
@Input() folderId: string;
@Output() closeDesktopComponent = new EventEmitter<any>();
@@ -159,7 +160,7 @@ export class NewPublicationPage implements OnInit {
console.log(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 {
showLoader: boolean;
folderId: string;
/* folderId: string; */
publication: Publication;
@Input() publicationId: string;
@Input() folderId: string;
@Output() addNewPublication = new EventEmitter<any>();
@Output() closeDesktopComponent = new EventEmitter<any>();
@Output() goBackToViewPublications = new EventEmitter();
@@ -41,6 +42,8 @@ export class PublicationDetailPage implements OnInit {
}
ngOnInit() {
console.log(this.folderId);
/* console.log(this.publication.FileBase64); */
this.getPublicationDetail();
}
@@ -83,7 +86,7 @@ export class PublicationDetailPage implements OnInit {
console.log(res);
});
this.closeDesktopComponent.emit();
this.goBackToViewPublications.emit();
}
async editPost(publicationType:any) {
+12 -2
View File
@@ -293,6 +293,16 @@ border-top: 1px solid #d8d8d8;
height: 100%;
}
}
@media screen and (min-width: 1200px) {
.hide-desktop{
display: none !important;
}
.container-div{
border-bottom:none !important;
}
}
.hideAsideOptions{
@media only screen and (max-width: 800px) {
.div-icon{
@@ -320,7 +330,7 @@ border-top: 1px solid #d8d8d8;
}
.showAsideOptions{
@media only screen and (min-width: 801px) {
@media only screen and (min-width: 800px) {
.div-icon{
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{
//top: 75px;
left: 40%;
+1 -1
View File
@@ -65,7 +65,7 @@
.flex-0{ flex: 0;}
@media only screen and (min-width: 1024px) {
@media only screen and (min-width: 800px) {
// overflow
.v-application-md .overflow-md-auto {overflow: auto !important;}
.overflow-md-hidden {overflow: hidden !important;}