From 07df5098b7f58f91ccf086c6fa6bd5845455e87a Mon Sep 17 00:00:00 2001 From: Daria Golova Date: Wed, 26 Oct 2022 12:53:47 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D1=81=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=B8=D0=BB=D0=B0=20=D0=B8=D0=BD=D0=B4=D0=B8=D0=BA=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=20=D0=BF=D0=BE=D0=B4=20=D1=81=D0=BA=D1=80=D0=BE?= =?UTF-8?q?=D0=BB=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server.js | 44 ++++++++++++++- .../components/CalendarBackground.vue | 37 +----------- .../calendar/components/CalendarColumn.vue | 2 +- .../calendar/components/CalendarSchedule.vue | 56 ++++++++++++++++++- 4 files changed, 100 insertions(+), 39 deletions(-) diff --git a/server.js b/server.js index aa803bc..6968b29 100644 --- a/server.js +++ b/server.js @@ -642,7 +642,6 @@ export function clientsServer() { }, ], }, - { id: "2faa5ff2-2de6-422c-a401-1b35cd455223", start: "2022-10-25T17:10:00Z", @@ -686,6 +685,49 @@ export function clientsServer() { }, ], }, + { + id: "2faa5ff2-2de6-422c-a401-1b35cd455223", + start: "2022-10-26T20:10:00Z", + end: "2022-10-26T21:00:00Z", + kind: "call", + subkind: null, + description: "", + location: null, + members: [ + { + id: "a9239f9a-e824-4bb3-a260-2b32dae9bc76", + person: { + id: "15ff465c-2b7b-4d9a-9159-720c74d8b56d", + last_name: "Елесеевская", + first_name: "Татьяна", + patronymic: "Ивановна", + }, + role: null, + }, + ], + employees: [ + { + id: "f941a0c6-c734-4f79-92c2-d7a5674459e422", + employee: { + id: "db831a15-e876-481f-a658-6325de7c311e", + last_name: "Константинопольская", + first_name: "Юлия", + patronymic: "Викторовна", + }, + role: null, + }, + { + id: "f541a0c7-c750-4f79-92c0-d7a19354e422", + employee: { + id: "db938a67-e756-481f-a653-6325de7c567e", + last_name: "Коломойцев", + first_name: "Илья", + patronymic: "Константинович", + }, + role: "owner", + }, + ], + }, ], })); this.passthrough("http://45.84.227.122:8080/**"); diff --git a/src/pages/calendar/components/CalendarBackground.vue b/src/pages/calendar/components/CalendarBackground.vue index 8417ee5..b6155f4 100644 --- a/src/pages/calendar/components/CalendarBackground.vue +++ b/src/pages/calendar/components/CalendarBackground.vue @@ -32,6 +32,7 @@ export default { components: { CalendarColumn }, props: { timeCoil: Array, + filteredOwners: Array, eventsData: Array, currentDate: Object, sidebarWidth: String, @@ -68,37 +69,6 @@ export default { "scroll-x": this.ownersArrayLength > 3 && this.backgroundHeight < 855, }; }, - filteredOwners() { - let filteredArray = []; - let ownerAbsence = { - id: null, - last_name: null, - first_name: null, - patronymic: null, - }; - this.eventsData.forEach(({ employees }) => { - let findedElement = employees.find((elem) => elem.role === "owner"); - let emptyDataPresence = this.findObjectInArray( - filteredArray, - ownerAbsence - ); - if (!findedElement && !emptyDataPresence) { - filteredArray.push(ownerAbsence); - } - if (findedElement) { - let ownerPresence = this.findObjectInArray( - filteredArray, - findedElement.employee - ); - if (!ownerPresence) { - filteredArray.push(findedElement.employee); - } - } - }); - return filteredArray.sort( - (previous, subsequent) => Boolean(subsequent.id) - Boolean(previous.id) - ); - }, filteredEventsByDate() { return this.eventsData.filter( ({ start }) => @@ -127,11 +97,6 @@ export default { calculateBackgroundWidth() { this.backgroundWidth = this.$refs.backgroundWrapper.offsetWidth; }, - findObjectInArray(array, object) { - return array.find( - (item) => JSON.stringify(item) === JSON.stringify(object) - ); - }, filterEventsByOwner(owner) { let filteredArray = []; this.filteredEventsByDate.forEach((item) => { diff --git a/src/pages/calendar/components/CalendarColumn.vue b/src/pages/calendar/components/CalendarColumn.vue index 02c256c..9cfcfe1 100644 --- a/src/pages/calendar/components/CalendarColumn.vue +++ b/src/pages/calendar/components/CalendarColumn.vue @@ -58,7 +58,7 @@ export default { start[1] * this.pixelsPerMinute; if ( parseInt(start[0], 10) < this.dayStartTime || - parseInt(end, 10) > this.dayEndTime + parseInt(end, 10) >= this.dayEndTime ) { return { top: "0px", diff --git a/src/pages/calendar/components/CalendarSchedule.vue b/src/pages/calendar/components/CalendarSchedule.vue index 99848d9..bc9cdb5 100644 --- a/src/pages/calendar/components/CalendarSchedule.vue +++ b/src/pages/calendar/components/CalendarSchedule.vue @@ -9,6 +9,7 @@ ) .schedule-body.flex( :class="bodyVerticalScroll" + :style="setBodySize" ) div calendar-clock-column( @@ -21,6 +22,7 @@ :current-date="currentDate" :time-coil="timeCoil" :events-data="eventsData" + :filtered-owners="filteredOwners" :sidebar-width="sidebarWidth" :day-start-time="validateStartTime" :day-end-time="validateEndTime" @@ -77,6 +79,7 @@ export default { isShownIndicator: true, pixelsPerHour: 62, columnHeaderHeight: 48, + defaultColumnWidth: 470, }; }, computed: { @@ -96,6 +99,12 @@ export default { return this.verifyTime(this.timeInformation.dayEndTime); }, lineIndicatorLocation() { + if (this.filteredOwners.length > 3 && this.timeCoil.length - 1 > 13) { + return { + width: `${this.filteredOwners.length * this.defaultColumnWidth}px`, + top: `${this.calculateIndicatorLocation()}px`, + }; + } return { top: `${this.calculateIndicatorLocation()}px`, }; @@ -124,6 +133,47 @@ export default { "scroll-y": this.scheduleHeight > 855, }; }, + setBodySize() { + if (this.validateEndTime - this.validateStartTime > 13) { + return { + height: "855px", + }; + } + return { + width: "auto", + }; + }, + filteredOwners() { + let filteredArray = []; + let ownerAbsence = { + id: null, + last_name: null, + first_name: null, + patronymic: null, + }; + this.eventsData.forEach(({ employees }) => { + let findedElement = employees.find((elem) => elem.role === "owner"); + let emptyDataPresence = this.findObjectInArray( + filteredArray, + ownerAbsence + ); + if (!findedElement && !emptyDataPresence) { + filteredArray.push(ownerAbsence); + } + if (findedElement) { + let ownerPresence = this.findObjectInArray( + filteredArray, + findedElement.employee + ); + if (!ownerPresence) { + filteredArray.push(findedElement.employee); + } + } + }); + return filteredArray.sort( + (previous, subsequent) => Boolean(subsequent.id) - Boolean(previous.id) + ); + }, }, methods: { previousDate() { @@ -195,6 +245,11 @@ export default { } return result; }, + findObjectInArray(array, object) { + return array.find( + (item) => JSON.stringify(item) === JSON.stringify(object) + ); + }, }, watch: { currentTime() { @@ -255,5 +310,4 @@ export default { .schedule-body position: relative - height: 855px From 7b8db909fc45e1bf69e847d311d0d8deadd16771 Mon Sep 17 00:00:00 2001 From: Daria Golova Date: Wed, 26 Oct 2022 16:01:39 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D0=94=D0=BE=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB?= =?UTF-8?q?=D0=B0=20=D1=81=D0=BA=D1=80=D0=BE=D0=BB=D0=BB=D1=8B,=20=D0=B7?= =?UTF-8?q?=D0=B0=D1=84=D0=B8=D0=BA=D1=81=D0=B8=D1=80=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D0=BB=D0=B0=20=D1=85=D0=B5=D0=B4=D0=B5=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/CalendarBackground.vue | 15 +++++----- .../calendar/components/CalendarColumn.vue | 7 +++-- .../calendar/components/CalendarHeader.vue | 4 ++- .../calendar/components/CalendarSchedule.vue | 30 ++++++------------- 4 files changed, 24 insertions(+), 32 deletions(-) diff --git a/src/pages/calendar/components/CalendarBackground.vue b/src/pages/calendar/components/CalendarBackground.vue index b6155f4..9b036ce 100644 --- a/src/pages/calendar/components/CalendarBackground.vue +++ b/src/pages/calendar/components/CalendarBackground.vue @@ -64,17 +64,17 @@ export default { backgroundHeight() { return (this.timeCoil.length - 1) * this.pixelsPerHour + 48; }, - horizontalScrollPresence() { - return { - "scroll-x": this.ownersArrayLength > 3 && this.backgroundHeight < 855, - }; - }, filteredEventsByDate() { return this.eventsData.filter( ({ start }) => start.slice(0, 10) === this.currentDate.format("YYYY-MM-DD") ); }, + horizontalScrollPresence() { + return { + "scroll-x": this.ownersArrayLength > 3, + }; + }, }, methods: { calculateColumnPosition(elemIndex) { @@ -95,7 +95,7 @@ export default { }; }, calculateBackgroundWidth() { - this.backgroundWidth = this.$refs.backgroundWrapper.offsetWidth; + this.backgroundWidth = this.$refs.backgroundWrapper.scrollWidth; }, filterEventsByOwner(owner) { let filteredArray = []; @@ -118,8 +118,7 @@ export default {