Improve Agenda

This commit is contained in:
Peter Maquiran
2021-07-16 22:50:08 +01:00
parent 90d16c85ae
commit 81db9eda26
6 changed files with 104 additions and 118 deletions
+11
View File
@@ -0,0 +1,11 @@
export class eventSource {
title: string
startTime: any
endTime: any
allDay: boolean
event: any
calendarName?: string
segment?: string
profile: 'md' | 'pr'
id:any
}[]
+2 -1
View File
@@ -16,7 +16,8 @@
<div class="main-content">
<!-- Toolbar -->
<ion-progress-bar class="calendar-progress-bar" type="indeterminate" *ngIf="showLoader"></ion-progress-bar>
<ion-progress-bar type="indeterminate" *ngIf="showLoader"></ion-progress-bar>
<div>
<!-- Calendar is here -->
<div class="calendar-segment-{{profile}}">
+79 -112
View File
@@ -25,6 +25,7 @@ import { AuthService } from 'src/app/services/auth.service';
import { User } from 'src/app/models/user.model';
import { DateAdapter } from '@angular/material/core';
import { ToastService } from 'src/app/services/toast.service';
import { eventSource } from 'src/app/models/agenda/eventSource';
@Component({
selector: 'app-agenda',
@@ -77,7 +78,8 @@ export class AgendaPage implements OnInit {
showTimeline=true;
/* List of events of our calendar */
eventSource = [];
eventSource : eventSource[] = []
/* The title of the calendar */
viewTitle: string;
@@ -110,10 +112,6 @@ export class AgendaPage implements OnInit {
profile:'mdgpr' | 'pr';
eventsList: Event[];
eventsListPessoal: Event[];
eventsListOficial: Event[];
// this will make toggle add event and.
showEventEditOrOpen: "edit" | "add" | "" | "eventoToApprove" = ""
prEventList: Event[];
@@ -358,39 +356,6 @@ export class AgendaPage implements OnInit {
return momentG(date, formate , wgs)
}
// for timeline
timeLineTemplate(startTime: string, eventlocation: string, eventDiscription: any, calendarName: string, subject: string, startTimeWisthS: string, endTime: string, eventIndex: number, profile: string): string{
const startHours = parseInt(startTimeWisthS.split(':')[0]);
const startMinutos = parseInt(startTimeWisthS.split(':')[1]);
const endHours = parseInt(endTime.split(':')[0]);
const endMinutos = parseInt(endTime.split(':')[1]);
let top = '0';
// console.log('startMinutos', startMinutos);
if(startHours < endHours){
if (startMinutos != 0 ){
top = `${ Math.abs((startMinutos)) }`
}
}
const profile_ = profile == 'md'? 'mdgpr': 'pr';
return `
<div class="overflow-hidden timeline-box timeline-box-event-${eventIndex} timeline-${profile_}-box-${calendarName} calendar-top${top}">
<div>
<span class="timeline-start-time">${startHours.toString().padStart(2, '0')}:${startMinutos.toString().padStart(2, '0')}</span><span class="timeline-location">${eventlocation}</span>
</div>
<div class="timeline-event-discription">
${subject}
</div>
</div>
`
}
// for timeline
timelineFilter(calendarName, eventsList, profile){
@@ -408,12 +373,7 @@ export class AgendaPage implements OnInit {
const startHours = new Date(element.StartDate).getHours().toLocaleString();
const EndHours = new Date(element.EndDate).getHours().toLocaleString();
const startHoursOtherFormate = new Date(element.StartDate).getHours().toLocaleString()+':'+new Date(element.StartDate).getMinutes().toLocaleString();
const EndHoursOtherFormate = formatDate(new Date(element.EndDate), 'HH:mm', 'pt');
events.push({
title: this.timeLineTemplate(startHours, element.Location, element.Body, element.CalendarName, element.Subject,startHoursOtherFormate,EndHoursOtherFormate, eventIndex, profile),
start: setHours(setMinutes(new Date(element.StartDate), 0), parseInt(startHours)),
end: setHours(setMinutes(new Date(element.EndDate), 0), parseInt(EndHours)),
color: {
@@ -456,7 +416,6 @@ export class AgendaPage implements OnInit {
if (startTimeSamp < endTimeSamp && (endMinutes + endHours) == 0) {
endTime = new Date(endTime);
endTime.setSeconds(endTime.getSeconds() - 1);
console.log('new date ======================================================')
return new Date(endTime)
} else {
return new Date(endTime)
@@ -464,8 +423,12 @@ export class AgendaPage implements OnInit {
}
get LL () {
return this.eventSource.length
}
loadRangeEvents(startTime: Date, endTime: Date) {
this.eventSelectedDate = new Date(startTime);
this.showLoader = true;
@@ -489,16 +452,16 @@ export class AgendaPage implements OnInit {
// clear the current month only
this.eventSource = this.eventSource.filter((e)=> {
if(new Date(startTime).getTime() <= new Date(e.StartDate).getTime() &&
new Date(endTime).getTime() >= new Date(e.EndDate).getTime() && e.profile != 'md') {
if(new Date(startTime).getTime() <= new Date(e.startTime).getTime() &&
new Date(endTime).getTime() >= new Date(e.endTime).getTime() && e.profile == 'md') {
return false
}
return true
})
this.eventsList = response;
const eventsList = response;
// loop
this.eventsList.forEach((element, eventIndex) => {
eventsList.forEach((element, eventIndex) => {
this.eventSource.push({
title: element.Subject,
@@ -512,7 +475,7 @@ export class AgendaPage implements OnInit {
});
});
const list = this.timelineFilter(this.timelineFilterState, this.eventsList, 'mdgpr');
const list = this.timelineFilter(this.timelineFilterState, eventsList, 'mdgpr');
this.TimelineMDList = this.eventListBox(list)
@@ -544,17 +507,17 @@ export class AgendaPage implements OnInit {
// clear the current month only
this.eventSource = this.eventSource.filter((e)=> {
if(new Date(startTime).getTime() <= new Date(e.StartDate).getTime() &&
new Date(endTime).getTime() >= new Date(e.EndDate).getTime() && e.profile != 'pr') {
if(new Date(startTime).getTime() <= new Date(e.startTime).getTime() &&
new Date(endTime).getTime() >= new Date(e.endTime).getTime() && e.profile == 'pr') {
return false
}
return true
})
this.eventsList = response;
const eventsList = response;
// calendar
this.eventsList.forEach((element, eventIndex) => {
eventsList.forEach((element, eventIndex) => {
this.eventSource.push({
title: element.Subject,
startTime: new Date(element.StartDate),
@@ -568,7 +531,7 @@ export class AgendaPage implements OnInit {
});
const list = this.timelineFilter(this.timelineFilterState, this.eventsList, 'pr');
const list = this.timelineFilter(this.timelineFilterState, eventsList, 'pr');
this.TimelineMDList = this.eventListBox(list)
@@ -599,17 +562,17 @@ export class AgendaPage implements OnInit {
// clear the current month only
this.eventSource = this.eventSource.filter((e)=> {
if(new Date(startTime).getTime() <= new Date(e.StartDate).getTime() &&
new Date(endTime).getTime() >= new Date(e.EndDate).getTime() && e.profile != 'pr') {
if(new Date(startTime).getTime() <= new Date(e.startTime).getTime() &&
new Date(endTime).getTime() >= new Date(e.endTime).getTime() && e.profile == 'pr') {
return false
}
return true
})
this.eventsList = response;
const eventsList = response;
// calendar
this.eventsList.forEach((element, eventIndex) => {
eventsList.forEach((element, eventIndex) => {
this.eventSource.push({
title: element.Subject,
startTime: new Date(element.StartDate),
@@ -623,7 +586,7 @@ export class AgendaPage implements OnInit {
});
const list = this.timelineFilter(this.timelineFilterState, this.eventsList, 'pr');
const list = this.timelineFilter(this.timelineFilterState, eventsList, 'pr');
this.TimelineMDList = this.eventListBox(list)
@@ -654,18 +617,18 @@ export class AgendaPage implements OnInit {
// clear the current month only
this.eventSource = this.eventSource.filter((e)=> {
if(new Date(startTime).getTime() <= new Date(e.StartDate).getTime() &&
new Date(endTime).getTime() >= new Date(e.EndDate).getTime() && e.profile != 'md') {
if(new Date(startTime).getTime() <= new Date(e.startTime).getTime() &&
new Date(endTime).getTime() >= new Date(e.endTime).getTime() && e.profile == 'md') {
return false
}
return true
})
this.eventsListPessoal= [];
this.eventsListPessoal = response.filter(data => data.CalendarName == "Pessoal");
const eventsList = response.filter(data => data.CalendarName == "Pessoal");
// loop
this.eventsListPessoal.forEach((element, eventIndex) => {
eventsList.forEach((element, eventIndex) => {
this.eventSource.push({
title: element.Subject,
@@ -679,7 +642,7 @@ export class AgendaPage implements OnInit {
});
});
const list = this.timelineFilter(this.timelineFilterState, this.eventsListPessoal, 'mdgpr');
const list = this.timelineFilter(this.timelineFilterState, eventsList, 'mdgpr');
this.TimelineMDList = this.eventListBox(list)
@@ -704,15 +667,15 @@ export class AgendaPage implements OnInit {
// clear the current month only
this.eventSource = this.eventSource.filter((e)=> {
if(new Date(startTime).getTime() <= new Date(e.StartDate).getTime() &&
new Date(endTime).getTime() >= new Date(e.EndDate).getTime() && e.profile != 'pr') {
if(new Date(startTime).getTime() <= new Date(e.startTime).getTime() &&
new Date(endTime).getTime() >= new Date(e.endTime).getTime() && e.profile == 'pr') {
return false
}
return true
})
this.eventsListPessoal = response.filter(data => data.CalendarName == "Pessoal");
this.eventsListPessoal.forEach(element => {
const eventsList = response.filter(data => data.CalendarName == "Pessoal");
eventsList.forEach(element => {
this.eventSource.push({
title: element.Subject,
startTime: new Date(element.StartDate),
@@ -724,7 +687,7 @@ export class AgendaPage implements OnInit {
});
});
const list = this.timelineFilter(this.timelineFilterState, this.eventsListPessoal, 'pr');
const list = this.timelineFilter(this.timelineFilterState, eventsList, 'pr');
this.TimelineMDList = this.eventListBox(list)
@@ -748,7 +711,7 @@ export class AgendaPage implements OnInit {
case "Oficial":
//Inicializa o array eventSource
this.eventsListOficial = [];
const eventsList = [];
if(this.profile == "mdgpr" && this.loggeduser.Profile == 'MDGPR') {
this.eventService.getAllMdEvents(momentG(new Date(startTime),'yyyy-MM-dd HH:mm:ss'), momentG(new Date(endTime),'yyyy-MM-dd 23:59:59')).then((res:any) => {
@@ -758,16 +721,16 @@ export class AgendaPage implements OnInit {
// clear the current month only
this.eventSource = this.eventSource.filter((e)=> {
if(new Date(startTime).getTime() <= new Date(e.StartDate).getTime() &&
new Date(endTime).getTime() >= new Date(e.EndDate).getTime() && e.profile != 'md') {
if(new Date(startTime).getTime() <= new Date(e.startTime).getTime() &&
new Date(endTime).getTime() >= new Date(e.endTime).getTime() && e.profile == 'md') {
return false
}
return true
})
this.eventsListOficial = res.filter(data => data.CalendarName == "Oficial");
const eventsList = res.filter(data => data.CalendarName == "Oficial");
this.eventsListOficial.forEach(element => {
eventsList.forEach(element => {
this.eventSource.push({
title: element.Subject,
startTime: new Date(element.StartDate),
@@ -779,7 +742,7 @@ export class AgendaPage implements OnInit {
});
});
const list = this.timelineFilter(this.timelineFilterState, this.eventsListOficial, 'mdgpr');
const list = this.timelineFilter(this.timelineFilterState, eventsList, 'mdgpr');
this.TimelineMDList = this.eventListBox(list)
@@ -803,15 +766,15 @@ export class AgendaPage implements OnInit {
// clear the current month only
this.eventSource = this.eventSource.filter((e)=> {
if(new Date(startTime).getTime() <= new Date(e.StartDate).getTime() &&
new Date(endTime).getTime() >= new Date(e.EndDate).getTime() && e.profile != 'pr') {
if(new Date(startTime).getTime() <= new Date(e.startTime).getTime() &&
new Date(endTime).getTime() >= new Date(e.endTime).getTime() && e.profile == 'pr') {
return false
}
return true
})
this.eventsListOficial = res.filter(data => data.CalendarName == "Oficial");
this.eventsListOficial.forEach(element => {
const eventsList = res.filter(data => data.CalendarName == "Oficial");
eventsList.forEach(element => {
this.eventSource.push({
title: element.Subject,
startTime: new Date(element.StartDate),
@@ -823,7 +786,7 @@ export class AgendaPage implements OnInit {
});
});
const list = this.timelineFilter(this.timelineFilterState, this.eventsListOficial, 'pr');
const list = this.timelineFilter(this.timelineFilterState, eventsList, 'pr');
this.TimelineMDList = this.eventListBox(list)
@@ -854,30 +817,30 @@ export class AgendaPage implements OnInit {
this.eventService.getAllMdEvents( momentG(new Date(startTime),'yyyy-MM-dd HH:mm:ss'), momentG(new Date(endTime),'yyyy-MM-dd 23:59:59') ).then( (response:any) => {
let eventsList;
if(this.segment == 'Oficial') {
this.eventsList = response.filter(data => data.CalendarName == "Oficial");
eventsList = response.filter(data => data.CalendarName == "Oficial");
} else if (this.segment == 'Pessoal') {
this.eventsList = response.filter(data => data.CalendarName == "Pessoal");
eventsList = response.filter(data => data.CalendarName == "Pessoal");
} else {
this.eventsList = response;
eventsList = response;
}
// clear the current month only
this.eventSource = this.eventSource.filter((e)=> {
if(new Date(startTime).getTime() <= new Date(e.StartDate).getTime() &&
new Date(endTime).getTime() >= new Date(e.EndDate).getTime() && e.profile != 'md') {
if(new Date(startTime).getTime() <= new Date(e.startTime).getTime() &&
new Date(endTime).getTime() >= new Date(e.endTime).getTime() && e.profile == 'md') {
return false
}
return true
})
// loop
this.eventsList.forEach((element, eventIndex) => {
eventsList.forEach((element, eventIndex) => {
// calendar
this.eventSource.push({
index: eventIndex,
title: element.Subject,
startTime: new Date(element.StartDate),
endTime: this.EventTretment({
@@ -893,7 +856,7 @@ export class AgendaPage implements OnInit {
});
const MDEventList = this.timelineFilter(this.timelineFilterState, this.eventsList, 'mdgpr');
const MDEventList = this.timelineFilter(this.timelineFilterState, eventsList, 'mdgpr');
this.TimelineMDList = this.eventListBox(MDEventList, 'md')
@@ -919,27 +882,29 @@ export class AgendaPage implements OnInit {
this.eventService.getAllSharedEvents(momentG(new Date(startTime),'yyyy-MM-dd HH:mm:ss'), momentG(new Date(endTime),'yyyy-MM-dd 23:59:59')).then((response:any) => {
if(this.segment == 'Oficial') {
this.eventsList = response.filter(data => data.CalendarName == "Oficial");
} else if (this.segment == 'Pessoal') {
this.eventsList = response.filter(data => data.CalendarName == "Pessoal");
} else {
this.eventsList = response;
}
let eventsList;
if(this.segment == 'Oficial') {
eventsList = response.filter(data => data.CalendarName == "Oficial");
} else if (this.segment == 'Pessoal') {
eventsList = response.filter(data => data.CalendarName == "Pessoal");
} else {
eventsList = response;
}
// clear the current month only
this.eventSource = this.eventSource.filter((e)=> {
if(new Date(startTime).getTime() <= new Date(e.StartDate).getTime() &&
new Date(endTime).getTime() >= new Date(e.EndDate).getTime() && e.profile != 'pr') {
if(new Date(startTime).getTime() <= new Date(e.startTime).getTime() &&
new Date(endTime).getTime() >= new Date(e.endTime).getTime() && e.profile == 'pr') {
console.log('remove from agenda')
return false
}
return true
})
this.eventsList.forEach((element, eventIndex) => {
eventsList.forEach((element, eventIndex) => {
// calendar
this.eventSource.push({
index: eventIndex,
title: element.Subject,
startTime: new Date(element.StartDate),
endTime: new Date(element.EndDate),
@@ -952,7 +917,7 @@ export class AgendaPage implements OnInit {
});
this.TimelinePR = this.timelineFilter(this.timelineFilterState, this.eventsList, 'pr');
this.TimelinePR = this.timelineFilter(this.timelineFilterState, eventsList, 'pr');
this.TimelinePRList = this.eventListBox(this.TimelinePR)
@@ -980,27 +945,29 @@ export class AgendaPage implements OnInit {
this.eventService.getAllPrEvents(momentG(new Date(startTime),'yyyy-MM-dd HH:mm:ss'), momentG(new Date(endTime),'yyyy-MM-dd 23:59:59')).then((response:any) => {
let eventsList;
if(this.segment == 'Oficial') {
this.eventsList = response.filter(data => data.CalendarName == "Oficial");
eventsList = response.filter(data => data.CalendarName == "Oficial");
} else if (this.segment == 'Pessoal') {
this.eventsList = response.filter(data => data.CalendarName == "Pessoal");
eventsList = response.filter(data => data.CalendarName == "Pessoal");
} else {
this.eventsList = response;
eventsList = response;
}
// clear the current month only
this.eventSource = this.eventSource.filter((e)=> {
if(new Date(startTime).getTime() <= new Date(e.StartDate).getTime() &&
new Date(endTime).getTime() >= new Date(e.EndDate).getTime() && e.profile != 'pr') {
if(new Date(startTime).getTime() <= new Date(e.startTime).getTime() &&
new Date(endTime).getTime() >= new Date(e.endTime).getTime() && e.profile == 'pr') {
console.log('remove from agenda')
return false
}
return true
})
this.eventsList.forEach((element, eventIndex) => {
eventsList.forEach((element, eventIndex) => {
// calendar
this.eventSource.push({
index: eventIndex,
title: element.Subject,
startTime: new Date(element.StartDate),
endTime: new Date(element.EndDate),
@@ -1013,7 +980,7 @@ export class AgendaPage implements OnInit {
});
this.TimelinePR = this.timelineFilter(this.timelineFilterState, this.eventsList, 'pr');
this.TimelinePR = this.timelineFilter(this.timelineFilterState, eventsList, 'pr');
this.TimelinePRList = this.eventListBox(this.TimelinePR)
+5
View File
@@ -0,0 +1,5 @@
export class eventListBox {
filterProfile() {}
daysBetween(){}
list() {}
}
@@ -4,7 +4,6 @@
<ion-content class="height-100">
<ion-refresher slot="fixed" (ionRefresh)="doRefresh($event)">
<ion-progress-bar type="indeterminate" *ngIf="showLoader"></ion-progress-bar>
<ion-refresher-content>
</ion-refresher-content>
</ion-refresher>
@@ -13,6 +12,7 @@
<!-- Aside left -->
<div class="aside-wrapper d-flex flex-column justify-center width-md-40 flex-grow-1 ">
<ion-progress-bar type="indeterminate" *ngIf="showLoader"></ion-progress-bar>
<div class="title-container">
<ion-label class="title">Gabinete Digital</ion-label>
<button *ngIf="hideRefreshBtn" class="btn-no-color btn-refresh" (click)="doRefresh($event)">
@@ -4,7 +4,6 @@
<ion-content>
<ion-refresher name="refresher" slot="fixed" (ionRefresh)="doRefresh($event)">
<ion-progress-bar type="indeterminate" *ngIf="showLoader"></ion-progress-bar>
<ion-refresher-content>
</ion-refresher-content>
</ion-refresher>
@@ -14,8 +13,11 @@
<!-- Left -->
<div class="aside-left app-default-padding d-flex flex-grow-1 flex-column width-30 ">
<!-- Header -->
<ion-toolbar >
<div class="main-header">
<ion-progress-bar type="indeterminate" *ngIf="showLoader"></ion-progress-bar>
<ion-toolbar >
<div class="main-header">
<div class="title-content width-100 d-flex justify-space-between">
<div class="div-title flex-grow-1">
<ion-label class="title ">Acções Presidenciais</ion-label>
@@ -30,7 +32,7 @@
</div>
</div>
</div>
</ion-toolbar>
</ion-toolbar>
<!-- Content -->
<div class="aside overflow-y-auto d-flex flex-wrap width-100">