diff --git a/src/pages/newCalendar/components/CalendarBackground.vue b/src/pages/newCalendar/components/CalendarBackground.vue index 0b729b4..8b079a0 100644 --- a/src/pages/newCalendar/components/CalendarBackground.vue +++ b/src/pages/newCalendar/components/CalendarBackground.vue @@ -19,8 +19,7 @@ export default { timeCount() { return ( this.workingHours.end.split(":")[0] - - this.workingHours.start.split(":")[0] + - 1 + this.workingHours.start.split(":")[0] ); }, }, diff --git a/src/pages/newCalendar/components/CalendarColumn.vue b/src/pages/newCalendar/components/CalendarColumn.vue index d23c7ac..5c3e70f 100644 --- a/src/pages/newCalendar/components/CalendarColumn.vue +++ b/src/pages/newCalendar/components/CalendarColumn.vue @@ -8,7 +8,8 @@ v-for="record in filteredRecords", :key="record?.id", :record="record", - :expanded-type="expandedDisplayType" + :expanded-type="expandedDisplayType", + :style="eventCardPosition(record.start, record.end)" ) .footer.flex.items-center.justify-center.bg-white.h-9(v-if="!expandedDisplayType") span.text-smm.color-grey 0 записей @@ -18,12 +19,20 @@ import * as moment from "moment/moment"; import { recordList } from "@/pages/newCalendar/utils/calendarConfig.js"; import CalendarRecordCard from "@/pages/newCalendar/components/CalendarRecordCard.vue"; +import { verifyTime } from "@/pages/newCalendar/utils/calendarFunctions.js"; export default { name: "CalendarColumn", components: { CalendarRecordCard }, props: { date: Object, expandedDisplayType: Boolean, + dayEndTime: Number, + dayStartTime: Number, + }, + data() { + return { + pixelsPerHour: 76, + }; }, computed: { filteredRecords() { @@ -33,11 +42,37 @@ export default { this.date.format("YYYY-MM-DD") ); }, + pixelsPerMinute() { + return this.pixelsPerHour / 60; + }, }, methods: { transformDayName(name) { return name[0]?.toUpperCase() + name?.slice(1); }, + eventCardPosition(startTime, endTime) { + let start = startTime + .slice(11, -4) + .split(":") + .map((elem) => parseInt(elem, 10)); + let end = endTime.slice(11, -4); + let position = + (start[0] - this.dayStartTime) * this.pixelsPerHour + + start[1] * this.pixelsPerMinute + + 4; + if ( + parseInt(start[0], 10) < this.dayStartTime || + verifyTime(end) > this.dayEndTime + ) { + return { + top: "0px", + visibility: "hidden", + }; + } + return { + top: `${position}px`, + }; + }, }, }; @@ -45,7 +80,6 @@ export default {