diff --git a/src/app/pages/agenda/agenda.page.ts b/src/app/pages/agenda/agenda.page.ts
index c6d47d0bd..c545bdf77 100644
--- a/src/app/pages/agenda/agenda.page.ts
+++ b/src/app/pages/agenda/agenda.page.ts
@@ -27,6 +27,8 @@ import { DateAdapter } from '@angular/material/core';
import { ToastService } from 'src/app/services/toast.service';
import { eventSource } from 'src/app/models/agenda/eventSource';
import { eventListBox as eventListBoxComponent } from './eventListBox'
+import { CalendarService } from 'src/app/store/calendar.service';
+
@Component({
selector: 'app-agenda',
templateUrl: './agenda.page.html',
@@ -162,7 +164,8 @@ export class AgendaPage implements OnInit {
private sanitizer: DomSanitizer,
authService: AuthService,
private dateAdapter: DateAdapter
,
- private toastService: ToastService
+ private toastService: ToastService,
+ public calendarService: CalendarService
) {
this.dateAdapter.setLocale('es');
@@ -181,6 +184,16 @@ export class AgendaPage implements OnInit {
if(this.loggeduser.Profile == 'MDGPR') {
this.mobileComponent.showEventList = true;
}
+
+ setTimeout(()=>{
+ try {
+ this.myCal.update();
+ this.myCal.loadEvents();
+ } catch(e) {}
+
+ this.updateEventListBox()
+
+ }, 4000)
}
@@ -300,7 +313,15 @@ export class AgendaPage implements OnInit {
this.rangeEndDate = ev.endTime;
this.loadRangeEvents(this.rangeStartDate, this.rangeEndDate);
+
+
+ try {
+ this.myCal.update();
+ this.myCal.loadEvents();
+ } catch(e) {}
+
this.updateEventListBox()
+
}
// for calendar
@@ -433,13 +454,6 @@ export class AgendaPage implements OnInit {
loadRangeEvents(startTime: Date, endTime: Date) {
- try {
- this.myCal.loadEvents();
- this.myCal.update();
- } catch(e) {
-
- }
-
this.eventSelectedDate = new Date(startTime);
this.showLoader = true;
@@ -451,7 +465,6 @@ export class AgendaPage implements OnInit {
switch (this.segment) {
case "Combinado":
//Inicializa o array eventSource
- //this.eventSource=[];
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(
@@ -459,42 +472,12 @@ export class AgendaPage implements OnInit {
(response:any) => {
// calendar
- // this.eventSource=[];
+ this.calendarService.removeRange(startTime, endTime, 'md')
- // clear the current month only
- this.eventSource = this.eventSource.filter((e)=> {
- 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
- })
-
- const eventsList = response;
// loop
- eventsList.forEach((element, eventIndex) => {
-
- this.eventSource.push({
- title: element.Subject,
- startTime: new Date(element.StartDate),
- endTime: new Date(element.EndDate),
- allDay: false,
- event: element,
- calendarName: element.CalendarName,
- profile: 'md',
- id: element.EventId,
- });
- });
+ this.calendarService.pushEvent(response, 'md');
- const list = this.timelineFilter(this.timelineFilterState, eventsList, 'mdgpr');
-
- this.TimelineMDList = this.eventListBoxComponent.list(this.eventSource, 'md', this.rangeStartDate, this.rangeEndDate, 'date')
-
- this.events = list;
- // optional
- this.TimelineMD = list;
-
- console.log('TimelineMD', this.TimelineMD)
+ this.TimelineMDList = this.eventListBoxComponent.list(this.calendarService.eventSource, 'md', this.rangeStartDate, this.rangeEndDate, 'date')
this.myCal.update();
this.myCal.loadEvents();
@@ -502,60 +485,30 @@ export class AgendaPage implements OnInit {
this.showLoader = false;
this.showTimeline = true;
-
}).finally(()=>{
this.showLoader = false;
})
}
else if(this.profile == "pr" && this.loggeduser.Profile == 'MDGPR') {
- console.log('HERE PR');
- 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) => {
-
- // calendar
- //this.eventSource=[];
- // clear the current month only
- this.eventSource = this.eventSource.filter((e)=> {
- 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
- })
-
- const eventsList = response;
+ 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) => {
- // calendar
- eventsList.forEach((element, eventIndex) => {
- this.eventSource.push({
- title: element.Subject,
- startTime: new Date(element.StartDate),
- endTime: new Date(element.EndDate),
- allDay: false,
- event: element,
- calendarName: element.CalendarName,
- profile: 'pr',
- id: element.EventId,
- });
-
- });
-
+ this.calendarService.removeRange(startTime, endTime, 'pr')
+ // calendar
+ this.calendarService.pushEvent(response, 'pr');
+
+ this.TimelineMDList = this.eventListBoxComponent.list(this.calendarService.eventSource, 'pr', this.rangeStartDate, this.rangeEndDate, 'date')
- this.TimelineMDList = this.eventListBoxComponent.list(this.eventSource, 'pr', this.rangeStartDate, this.rangeEndDate, 'date')
+ this.myCal.update();
+ this.myCal.loadEvents();
- this.myCal.update();
- this.myCal.loadEvents();
+ this.showLoader = false;
+ this.showTimeline = true;
- this.showLoader = false;
- this.showTimeline = true;
-
-
}).finally(()=>{
this.showLoader = false;
- })
-
+ })
}
else if(this.loggeduser.Profile == 'PR') {
@@ -566,32 +519,13 @@ export class AgendaPage implements OnInit {
// this.eventSource=[];
// clear the current month only
- this.eventSource = this.eventSource.filter((e)=> {
- 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.calendarService.removeRange(startTime, endTime, 'pr')
- const eventsList = response;
-
- // calendar
- eventsList.forEach((element, eventIndex) => {
- this.eventSource.push({
- title: element.Subject,
- startTime: new Date(element.StartDate),
- endTime: new Date(element.EndDate),
- allDay: false,
- event: element,
- calendarName: element.CalendarName,
- profile: 'pr',
- id: element.EventId,
- });
-
- });
-
- this.TimelineMDList = this.eventListBoxComponent.list(this.eventSource, 'pr', this.rangeStartDate, this.rangeEndDate, 'date')
+ this.calendarService.pushEvent(response, 'pr');
+
+
+ this.TimelineMDList = this.eventListBoxComponent.list(this.calendarService.eventSource, 'pr', this.rangeStartDate, this.rangeEndDate, 'date')
+
this.myCal.update();
this.myCal.loadEvents();
@@ -599,7 +533,7 @@ export class AgendaPage implements OnInit {
this.showLoader = false;
this.showTimeline = true;
-
+
}).finally(()=>{
this.showLoader = false;
})
@@ -611,36 +545,15 @@ export class AgendaPage implements OnInit {
if(this.profile == "mdgpr" && this.loggeduser.Profile == 'MDGPR') {
this.eventService.getAllMdPessoalEvents(momentG(new Date(startTime),'yyyy-MM-dd HH:mm:ss'), momentG(new Date(endTime),'yyyy-MM-dd 23:59:59')).then((response:any) => {
- // this.eventSource=[];
-
- // clear the current month only
- this.eventSource = this.eventSource.filter((e)=> {
- 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.calendarService.removeRange(startTime, endTime, 'md')
const eventsList = response.filter(data => data.CalendarName == "Pessoal");
// loop
- eventsList.forEach((element, eventIndex) => {
-
- this.eventSource.push({
- title: element.Subject,
- startTime: new Date(element.StartDate),
- endTime: new Date(element.EndDate),
- allDay: false,
- event: element,
- calendarName: element.CalendarName,
- profile: 'md',
- id: element.EventId,
- });
- });
+ this.calendarService.pushEvent(eventsList, 'md');
+
+
+ this.TimelineMDList = this.eventListBoxComponent.list(this.calendarService.eventSource, 'md', this.rangeStartDate, this.rangeEndDate, 'date')
-
- this.TimelineMDList = this.eventListBoxComponent.list(this.eventSource, 'md', this.rangeStartDate, this.rangeEndDate, 'date')
-
this.myCal.update();
this.myCal.loadEvents();
@@ -656,30 +569,15 @@ export class AgendaPage implements OnInit {
//this.eventSource=[];
// clear the current month only
- this.eventSource = this.eventSource.filter((e)=> {
- 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.calendarService.removeRange(startTime, endTime, 'pr')
const eventsList = response.filter(data => data.CalendarName == "Pessoal");
- eventsList.forEach(element => {
- this.eventSource.push({
- title: element.Subject,
- startTime: new Date(element.StartDate),
- endTime: new Date(element.EndDate),
- allDay: false,
- event: element,
- profile: 'pr',
- id: element.EventId,
- });
- });
-
- this.TimelineMDList = this.eventListBoxComponent.list(this.eventSource, 'pr', this.rangeStartDate, this.rangeEndDate, 'date')
+ this.calendarService.pushEvent(eventsList, 'pr');
+ this.TimelineMDList = this.eventListBoxComponent.list(this.calendarService.eventSource, 'pr', this.rangeStartDate, this.rangeEndDate, 'date')
+
+
this.myCal.update();
this.myCal.loadEvents();
@@ -701,32 +599,14 @@ 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((res:any) => {
- // this.eventSource=[];
-
- // clear the current month only
- this.eventSource = this.eventSource.filter((e)=> {
- 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.calendarService.removeRange(startTime, endTime, 'md')
const eventsList = res.filter(data => data.CalendarName == "Oficial");
- eventsList.forEach(element => {
- this.eventSource.push({
- title: element.Subject,
- startTime: new Date(element.StartDate),
- endTime: new Date(element.EndDate),
- allDay: false,
- event: element,
- profile: 'md',
- id: element.EventId,
- });
- });
+ this.calendarService.pushEvent(eventsList, 'md');
- this.TimelineMDList = this.eventListBoxComponent.list(this.eventSource, 'md', this.rangeStartDate, this.rangeEndDate, 'date')
+
+ this.TimelineMDList = this.eventListBoxComponent.list(this.calendarService.eventSource, 'md', this.rangeStartDate, this.rangeEndDate, 'date')
this.myCal.update();
this.myCal.loadEvents();
@@ -742,31 +622,14 @@ export class AgendaPage implements OnInit {
// this.eventSource=[];
- // clear the current month only
- this.eventSource = this.eventSource.filter((e)=> {
- 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.calendarService.removeRange(startTime, endTime, 'pr')
const eventsList = res.filter(data => data.CalendarName == "Oficial");
- eventsList.forEach(element => {
- this.eventSource.push({
- title: element.Subject,
- startTime: new Date(element.StartDate),
- endTime: new Date(element.EndDate),
- allDay: false,
- event: element,
- profile: 'pr',
- id: element.EventId,
- });
- });
+ this.calendarService.pushEvent(eventsList, 'pr');
+
+ this.TimelineMDList = this.eventListBoxComponent.list(this.calendarService.eventSource, 'pr', this.rangeStartDate, this.rangeEndDate, 'date')
- this.TimelineMDList = this.eventListBoxComponent.list(this.eventSource, 'pr', this.rangeStartDate, this.rangeEndDate, 'date')
-
this.myCal.update();
this.myCal.loadEvents();
@@ -782,56 +645,33 @@ export class AgendaPage implements OnInit {
}
} else {
// calendar
+
let counter = 0;
if(this.loggeduser.Profile == 'MDGPR') {
- console.log('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( (response:any) => {
- let eventsList = response;
+ let eventsList = response;
- // clear the current month only
- this.eventSource = this.eventSource.filter((e)=> {
- 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.calendarService.removeRange(startTime, endTime, 'md')
- // loop
- eventsList.forEach((element, eventIndex) => {
-
- // calendar
- this.eventSource.push({
- title: element.Subject,
- startTime: new Date(element.StartDate),
- endTime: this.EventTretment({
- startTime: element.StartDate,
- endTime: element.EndDate
- }),
- allDay: false,
- event: element,
- calendarName: element.CalendarName,
- profile: 'md',
- id: element.EventId,
- });
-
- });
-
- this.TimelineMDList = this.eventListBoxComponent.list(this.eventSource, 'md', this.rangeStartDate, this.rangeEndDate, 'date')
-
- this.myCal.update();
- this.myCal.loadEvents();
-
- this.showTimelineMD = true;
-
- counter++;
- if(counter==2) {
- this.showLoader = false;
- }
+ // loop
+ this.calendarService.pushEvent(eventsList, 'md');
+
+ this.TimelineMDList = this.eventListBoxComponent.list(this.calendarService.eventSource, 'md', this.rangeStartDate, this.rangeEndDate, 'date')
+
+ this.myCal.update();
+ this.myCal.loadEvents();
+
+ this.showTimelineMD = true;
+
+ counter++;
+ if(counter==2) {
+ this.showLoader = false;
+ }
+
}).finally(()=> {
counter++;
if(counter==2) {
@@ -844,31 +684,12 @@ export class AgendaPage implements OnInit {
let eventsList = response;
// clear the current month only
- this.eventSource = this.eventSource.filter((e)=> {
- 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.calendarService.removeRange(startTime, endTime, 'pr')
- eventsList.forEach((element, eventIndex) => {
- // calendar
- this.eventSource.push({
- title: element.Subject,
- startTime: new Date(element.StartDate),
- endTime: new Date(element.EndDate),
- allDay: false,
- event: element,
- calendarName: element.CalendarName,
- profile:'pr',
- id: element.EventId
- });
-
- });
-
- this.TimelinePRList = this.eventListBoxComponent.list(this.eventSource, 'pr', this.rangeStartDate, this.rangeEndDate, 'date')
+ this.calendarService.pushEvent(eventsList, 'pr');
+ this.TimelinePRList = this.eventListBoxComponent.list(this.calendarService.eventSource, 'pr', this.rangeStartDate, this.rangeEndDate, 'date')
+
this.myCal.update();
this.myCal.loadEvents();
@@ -887,7 +708,6 @@ export class AgendaPage implements OnInit {
}
})
-
} else {
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) => {
@@ -902,36 +722,13 @@ export class AgendaPage implements OnInit {
}
// clear the current month only
- this.eventSource = this.eventSource.filter((e)=> {
- 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.calendarService.removeRange(startTime, endTime, 'pr')
- eventsList.forEach((element, eventIndex) => {
+ this.calendarService.pushEvent(eventsList, 'pr');
- // calendar
- this.eventSource.push({
- title: element.Subject,
- startTime: new Date(element.StartDate),
- endTime: new Date(element.EndDate),
- allDay: false,
- event: element,
- calendarName: element.CalendarName,
- profile:'pr',
- id: element.EventId,
- });
-
- });
-
- this.TimelinePR = this.timelineFilter(this.timelineFilterState, eventsList, 'pr');
+ this.TimelinePRList = this.eventListBoxComponent.list(this.calendarService.eventSource, 'pr', this.rangeStartDate, this.rangeEndDate, 'date')
- this.TimelinePRList = this.eventListBoxComponent.list(this.eventSource, 'pr', this.rangeStartDate, this.rangeEndDate, 'date')
-
this.myCal.update();
this.myCal.loadEvents();
@@ -955,8 +752,13 @@ export class AgendaPage implements OnInit {
}
updateEventListBox() {
- this.TimelinePRList = this.eventListBoxComponent.list(this.eventSource, 'pr', this.rangeStartDate, this.rangeEndDate, 'date')
- this.TimelineMDList = this.eventListBoxComponent.list(this.eventSource, 'md', this.rangeStartDate, this.rangeEndDate, 'date')
+
+ console.log('list',JSON.stringify(this.calendarService.eventSource))
+ this.TimelinePRList = this.eventListBoxComponent.list(this.calendarService.eventSource, 'pr', this.rangeStartDate, this.rangeEndDate, 'date')
+ this.TimelineMDList = this.eventListBoxComponent.list(this.calendarService.eventSource, 'md', this.rangeStartDate, this.rangeEndDate, 'date')
+
+ console.log('this.TimelineMDList', this.TimelineMDList)
+
}
eventListBox(list, nice?) {
diff --git a/src/app/pages/agenda/eventListBox.ts b/src/app/pages/agenda/eventListBox.ts
index 37d80dc41..280f7413a 100644
--- a/src/app/pages/agenda/eventListBox.ts
+++ b/src/app/pages/agenda/eventListBox.ts
@@ -46,13 +46,7 @@ export class eventListBox {
eventSource = this.filterProfile(eventSource, profile)
}
-
eventSource = this.getEventInsideRange(eventSource, rangeStartDate, randEndDate)
-
- if(profile == 'pr') {
- console.log('run', profile)
- console.log(eventSource)
- }
if(profile == 'md') {
eventSource = this.encapsulation(eventSource, 'mdgpr');
@@ -220,7 +214,6 @@ export class eventListBox {
}
})
}, 10)
-
return days
}
diff --git a/src/app/store/calendar.service.spec.ts b/src/app/store/calendar.service.spec.ts
new file mode 100644
index 000000000..18ba1f660
--- /dev/null
+++ b/src/app/store/calendar.service.spec.ts
@@ -0,0 +1,16 @@
+import { TestBed } from '@angular/core/testing';
+
+import { CalendarService } from './calendar.service';
+
+describe('CalendarService', () => {
+ let service: CalendarService;
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({});
+ service = TestBed.inject(CalendarService);
+ });
+
+ it('should be created', () => {
+ expect(service).toBeTruthy();
+ });
+});
diff --git a/src/app/store/calendar.service.ts b/src/app/store/calendar.service.ts
new file mode 100644
index 000000000..cbeff654f
--- /dev/null
+++ b/src/app/store/calendar.service.ts
@@ -0,0 +1,90 @@
+import { Injectable } from '@angular/core';
+import { eventSource } from '../models/agenda/eventSource';
+import { SHA1, SHA256, AES, enc } from 'crypto-js'
+import { LocalstoreService } from './localstore.service'
+
+@Injectable({
+ providedIn: 'root'
+})
+
+export class CalendarService {
+
+ private _eventSource : eventSource[] = []
+
+ constructor(localstoreService: LocalstoreService) {
+
+ const keyName = (SHA1(this.constructor.name+ 'eventSource')).toString()
+
+ let restore = localstoreService.get(keyName, [])
+
+ setTimeout(()=>{
+ restore.forEach((element, eventIndex) => {
+ this._eventSource.push({
+ title: element.title,
+ startTime: new Date(element.startTime),
+ endTime: new Date(element.endTime),
+ allDay: element.allDay,
+ event: element.event,
+ calendarName: element.calendarName,
+ profile: element.profile,
+ id: element.id,
+ });
+
+ });
+ },1)
+
+ setTimeout(() => {
+ setInterval(()=> {
+
+ localstoreService.set(keyName, this._eventSource)
+
+ }, 5000)
+ }, 10000)
+
+ }
+
+ ResetList(eventSource: eventSource[]) {
+ this._eventSource = eventSource
+ }
+
+ get eventSource() {
+ return this._eventSource
+ }
+
+ removeRange(rangeStartDate, rangeEndDate, profile) {
+ this._eventSource = this._eventSource.filter((e)=> {
+ if(new Date(rangeStartDate).getTime() <= new Date(e.startTime).getTime() &&
+ new Date(rangeEndDate).getTime() >= new Date(e.endTime).getTime() && e.profile == profile) {
+ return false
+ }
+ return true
+ })
+ }
+
+ pushEvent(eventsList, profile: 'pr' | 'md') {
+
+ let news = []
+ eventsList.forEach((element, eventIndex) => {
+ news.push({
+ title: element.Subject,
+ startTime: new Date(element.StartDate),
+ endTime: new Date(element.EndDate),
+ allDay: false,
+ event: element,
+ calendarName: element.CalendarName,
+ profile: profile,
+ id: element.EventId,
+ });
+
+ });
+
+ let instance = this._eventSource.concat(news)
+
+ const ids = instance.map(o => o.id)
+ const filtered = instance.filter(({id}, index) => !ids.includes(id, index + 1))
+
+ this._eventSource = (filtered)
+
+ }
+
+}
\ No newline at end of file