diff --git a/src/app/models/beast-orm.ts b/src/app/models/beast-orm.ts index 6d1062fe3..e1f119cce 100644 --- a/src/app/models/beast-orm.ts +++ b/src/app/models/beast-orm.ts @@ -57,7 +57,7 @@ models.register({ // // acçoes export class ActionModel extends models.Model{ static $tableName = 'ActionModel11' - + ProcessId = models.IntegerField({unique: true}) Description = models.CharField() Detail = models.CharField() @@ -91,7 +91,7 @@ export class PublicationDetailsModel extends models.Model{ export class WebtrixUserModel extends models.Model { - + FullName = models.CharField() Role = models.CharField() } @@ -110,3 +110,7 @@ models.register({ version: 14, models: [PublicationDetailsModel, ActionModel, PublicationFolderModel] }) + + + +window["MessageModel"] = MessageModel diff --git a/src/app/pages/agenda/agenda.page.html b/src/app/pages/agenda/agenda.page.html index 4bf9da3f0..e4aaae551 100644 --- a/src/app/pages/agenda/agenda.page.html +++ b/src/app/pages/agenda/agenda.page.html @@ -215,31 +215,29 @@
-
+
- - +
-
+
+
+ +
+ + -
+
-
-
- {{ TimelineDay(events.key)}}
{{ events.value[0].start | date: 'MMMM'}}
-
+
+ {{ day.daysInfo.dayName }}
{{month.monthInfo.monthName}}
+
-
- -
+
@@ -266,10 +264,11 @@
{{SessionStore.user.FullName}}
{{eventService.getCalendarOwnNameByCalendarId(event.event.CalendarId)}}
+
-
+
diff --git a/src/app/pages/agenda/agenda.page.scss b/src/app/pages/agenda/agenda.page.scss index 02ecb1522..94edd8f82 100644 --- a/src/app/pages/agenda/agenda.page.scss +++ b/src/app/pages/agenda/agenda.page.scss @@ -875,13 +875,12 @@ $font-size: rem(15); font-weight: bold !important; } -.ss-timeline > :nth-child(2) .dayShow { - display: none; +.header-day .dayShow:nth-child(1) { + display: none !important; } -.ss-timeline > :nth-child(1) .dayShow { - margin-top: 0px !important; -} + + .calendar-options { position: relative; diff --git a/src/app/pages/agenda/agenda.page.ts b/src/app/pages/agenda/agenda.page.ts index f90403029..efb9dd479 100644 --- a/src/app/pages/agenda/agenda.page.ts +++ b/src/app/pages/agenda/agenda.page.ts @@ -734,14 +734,26 @@ export class AgendaPage implements OnInit { const selectedCalendarIds = this.getSelectedAgendaCalendars(); this.listToPresent = this.CalendarStore.getEventsByCalendarIds(selectedCalendarIds) - this.TimelineMDList = this.listBoxService.list(this.listToPresent, 'md', this.rangeStartDate, this.rangeEndDate, { segment: this.segment, selectedDate: this.eventSelectedDate }) + const year = this.listBoxService.list(this.listToPresent, 'md', this.rangeStartDate, this.rangeEndDate, { segment: this.segment, selectedDate: this.eventSelectedDate }) + this.TimelineMDList = year - const selectedDay = momentG(this.eventSelectedDate, 'dd', 'pt'); - if(this.TimelineMDList[selectedDay]) { - if(momentG(new Date(this.TimelineMDList[selectedDay][0].start), 'MMMM', 'pt') == momentG(this.eventSelectedDate, 'MMMM', 'pt')) { - this.hasEventToday = true + const yearName = momentG(new Date(this.eventSelectedDate), 'yyyy') + const monthName = momentG(new Date(this.eventSelectedDate), 'MMMM') + const dayName = momentG(new Date(this.eventSelectedDate), 'dd') + + let YearIndex = year.findIndex( x => x.yearInfo.yearName == yearName) + if(YearIndex == 0) { + let MonthNameIndex = year[YearIndex].months.findIndex( x => x.monthInfo.monthName == monthName) + if(MonthNameIndex == 0) { + let DayNameIndex = year[YearIndex].months[MonthNameIndex].days.findIndex( x => x.daysInfo.dayName == dayName) + if(DayNameIndex == 0) { + this.hasEventToday = true + } else { + this.hasEventToday = false + } + } else { + this.hasEventToday = false } - } else { this.hasEventToday = false } diff --git a/src/app/services/agenda/list-box.service.ts b/src/app/services/agenda/list-box.service.ts index 986327729..d158b93bc 100644 --- a/src/app/services/agenda/list-box.service.ts +++ b/src/app/services/agenda/list-box.service.ts @@ -1,6 +1,7 @@ import { Injectable } from '@angular/core'; import { CustomCalendarEvent, EventListStore } from 'src/app/models/agenda/AgendaEventList'; import { DateService } from '../date.service'; +import { momentG } from 'src/plugin/momentG'; @Injectable({ providedIn: 'root' @@ -9,6 +10,7 @@ export class ListBoxService { height = "unset" + constructor( private dateService: DateService ){} @@ -35,7 +37,7 @@ export class ListBoxService { daysBetween(){ } - list(eventSource: EventListStore[], profile: 'md' | 'pr' | 'all', rangeStartDate, randEndDate, {segment = 'Combinado', selectedDate= null}) { + list(eventSource: EventListStore[], profile: 'md' | 'pr' | 'all', rangeStartDate, randEndDate, {segment = 'Combinado', selectedDate= null}): Year[] { // // filter range // if(selectedDate) { @@ -45,7 +47,6 @@ export class ListBoxService { // ) // } - if(segment!='Combinado') { eventSource = this.filterSegment(eventSource, segment) } @@ -54,11 +55,32 @@ export class ListBoxService { // eventSource = this.filterProfile(eventSource, profile) // } - let newStracture:CustomCalendarEvent[]; - + let newStracture:CustomCalendarEvent[]; newStracture = this.encapsulation(eventSource); - return this.display(newStracture, selectedDate) + // const object = {} + + // for (const e of newStracture.reverse()) { + // if(!object[momentG(new Date(e.start), 'MMMM yyyy')]) { + // object[momentG(new Date(e.start), 'MMMM yyyy')] = [] + // } + // object[momentG(new Date(e.start), 'MMMM yyyy')].push(e) + // } + + // console.log({object}) + + // const daysStringNum = Object.keys(object).reverse() + + // const daysObject = {} + + // for(const day of daysStringNum) { + // daysObject[day] = object[day] + // } + + // console.log({daysObject}) + + + return this.display(newStracture, selectedDate).year // console.log({daysObject}) @@ -74,12 +96,19 @@ export class ListBoxService { // return daysObject } + sortArrayISODate(myArray: any): any[] { + + return myArray.sort((a,b) => + Date.parse(b.start ) + - + Date.parse(a.start)) + } display(list: CustomCalendarEvent[], selectedDate) { let days = {}; + const year: Year[] = [] - list.forEach( (event:CustomCalendarEvent, index) => { - + this.sortArrayISODate(list).reverse().forEach( (event:CustomCalendarEvent, index) => { var startDate: any = new Date(event.start); @@ -109,7 +138,7 @@ export class ListBoxService { const StartEvent = this.transForm(event, {startMany: true, endMany: false, middle: false}) - if(this.CanPush(event, selectedDate)) days[day].push(StartEvent) + if(this.CanPush(event, selectedDate)) {days[day].push(StartEvent); this.push(StartEvent, year)} let i = 1; @@ -135,12 +164,12 @@ export class ListBoxService { // last push const EndEvent = this.transForm(event, {startMany: false, endMany: true, middle: false}) - if(this.CanPush(event, selectedDate)) days[otherDays].push(EndEvent) + if(this.CanPush(event, selectedDate)) {days[otherDays].push(EndEvent) ; this.push(event, year)} } else { const EndEvent = this.transForm(event, {startMany: false,endMany: true, middle: true}) - if(this.CanPush(event, selectedDate)) days[otherDays].push(EndEvent) + if(this.CanPush(event, selectedDate)) {days[otherDays].push(EndEvent) ; this.push(event, year)} } days[otherDays] = days[otherDays].reverse() @@ -150,13 +179,13 @@ export class ListBoxService { } else { - if(this.CanPush(event, selectedDate)) days[day].push(event) + if(this.CanPush(event, selectedDate)) { days[day].push(event) ; this.push(event, year) } } } else { - if(this.CanPush(event, selectedDate)) days[day].push(event) + if(this.CanPush(event, selectedDate)) { days[day].push(event) ; this.push(event, year) } } } else { - if(this.CanPush(event, selectedDate) && diffDays != 2) days[day].push(event) + if(this.CanPush(event, selectedDate) && diffDays != 2) { days[day].push(event) ; this.push(event, year) } } // @@ -173,18 +202,69 @@ export class ListBoxService { }) - return days + return {days, year} } + + push(event: any, year: Year[]) { + const date = new Date(event.start) + + const yearName = momentG(new Date(date), 'yyyy') + const monthName = momentG(new Date(date), 'MMMM') + const dayName = momentG(new Date(date), 'dd') + + + let YearIndex = year.findIndex( x => x.yearInfo.yearName == yearName) + + + + if(YearIndex == -1) { + YearIndex = year.push({ + yearInfo: { + yearName: yearName + }, + months: [] + }) + + YearIndex-- + } + + let MonthNameIndex = year[YearIndex].months.findIndex( x => x.monthInfo.monthName == monthName) + + if(MonthNameIndex == -1) { + MonthNameIndex = year[YearIndex].months.push({ + monthInfo: { + monthName: monthName + }, + days: [] + }) + + MonthNameIndex -- + } + + let DayNameIndex = year[YearIndex].months[MonthNameIndex].days.findIndex( x => x.daysInfo.dayName == dayName) + + if(DayNameIndex == -1) { + year[YearIndex].months[MonthNameIndex].days.push({ + daysInfo: { + dayName: dayName + }, + events: [event] + }) + } else { + year[YearIndex].months[MonthNameIndex].days[DayNameIndex].events.push(event) + } + + } + CanPush(event: any, selectedDate: Date) { const limite = this.endOfMonth(selectedDate) limite.setDate(limite.getDate() + 10) + limite.setHours(0) - return new Date(event.start).getFullYear() >= selectedDate.getFullYear() && - new Date(event.start).getMonth() >= selectedDate.getMonth() && - new Date(event.start).getTime() >= selectedDate.getTime() && - new Date(event.start).getTime() <= limite.getTime() + return (selectedDate.getTime() <= new Date(event.start).getTime() || selectedDate.getTime() <= new Date(event.end).getTime()) && + (limite.getTime() >= new Date(event.start).getTime() || limite.getTime() >= new Date(event.end).getTime()) } encapsulation(eventsList:EventListStore[]): CustomCalendarEvent[] { @@ -262,3 +342,67 @@ export class ListBoxService { return date; } } + +interface DayInfo { + // Define properties for dayInfo here + dayName: string +} + +interface Day { + // Define properties for day here + +} + +interface Month { + monthInfo: { + monthName: string + // Define properties for yearInfo inside months here + } + days: { + daysInfo: DayInfo; + events: Day[]; + }[] +} + +interface Year { + yearInfo: { + yearName: string + // Define properties for yearInfo here + }; + months: Month[]; +} + +const years: Year[] = [ + { + yearInfo: { + yearName: "" + // Define properties for yearInfo inside the first year here + }, + months: [ + { + monthInfo: { + monthName: "", + // Define properties for yearInfo inside the first month here + }, + days: [ + { + daysInfo: { + dayName: "", + // Define properties for dayInfo inside the first day here + }, + events: [ + { + // Define properties for the first day here + }, + ], + } + ], + }, + // Add more months here as needed + ], + }, + // Add more years here as needed +]; + + +years[0].months[0].days[0].events