diff --git a/app/src/plugins/app/_layout/app/app.layout.vue b/app/src/plugins/app/_layout/app/app.layout.vue
index d61f8e3..4d4c243 100644
--- a/app/src/plugins/app/_layout/app/app.layout.vue
+++ b/app/src/plugins/app/_layout/app/app.layout.vue
@@ -30,7 +30,11 @@ export default {
flex: 1 1 100%
#main-content
- height: fit-content
+ overflow-y: scroll
+ height: 100%
+ max-height: 100%
+ display: flex
+ flex-direction: column
.split-pane-right-side
width: 100vw
diff --git a/app/src/plugins/app@vendor/vue-cal/event.vue b/app/src/plugins/app@vendor/vue-cal/event.vue
index 02bf705..ca6b7b9 100644
--- a/app/src/plugins/app@vendor/vue-cal/event.vue
+++ b/app/src/plugins/app@vendor/vue-cal/event.vue
@@ -279,7 +279,6 @@ export default {
width = width - (parentNotSameOverlaps.length * (10 / sameOverlapsLength))
left = left + (5 * parentNotSameOverlaps.length - ((10 * parentNotSameOverlaps.length / sameOverlapsLength) * (this.eventPosition - parentNotSameOverlaps.length)))
}
- zIdnex = 10
}
if (this.vuecal.minEventWidth && width < this.vuecal.minEventWidth) {
diff --git a/app/src/plugins/app@vendor/vue-cal/index.vue b/app/src/plugins/app@vendor/vue-cal/index.vue
index e4f9c8d..7db0629 100644
--- a/app/src/plugins/app@vendor/vue-cal/index.vue
+++ b/app/src/plugins/app@vendor/vue-cal/index.vue
@@ -32,7 +32,7 @@
-
+
-
+
@@ -73,7 +73,7 @@
-
+
@@ -186,6 +186,7 @@ export default {
props: {
activeView: { type: String, default: 'week' },
+ scrollToHour: { type: Number, default: 0 }, // In minutes.
// Only used if there are daySplits with minSplitWidth, to add the same height top spacer on time column.
allDayBarHeight: { type: [String, Number], default: '25px' },
cellClickHold: { type: Boolean, default: true },
@@ -554,6 +555,9 @@ export default {
}
: {})
}
+
+ this.$refs['vuecal_scroll'].scrollTop = this.scrollToHour * this.timeCellHeight
+
this.$emit('view-change', params)
}
},
@@ -1302,6 +1306,13 @@ export default {
: {})
}
+ this.$refs['vuecal_scroll'].addEventListener('scroll', () => {
+ this.$refs['vuecal_weekday_heading'].onTimelineScroll(this.$refs['vuecal_scroll'].scrollTop)
+ })
+
+ this.viewportTimelineOffset = this.$refs['vuecal_scroll'].getBoundingClientRect().top
+ this.$refs['vuecal_scroll'].scrollTop = this.scrollToHour * this.timeCellHeight
+
this.$emit('ready', params)
this.ready = true
},
diff --git a/app/src/plugins/app@vendor/vue-cal/weekdays-headings.vue b/app/src/plugins/app@vendor/vue-cal/weekdays-headings.vue
index 1a1bc63..7f42bf0 100644
--- a/app/src/plugins/app@vendor/vue-cal/weekdays-headings.vue
+++ b/app/src/plugins/app@vendor/vue-cal/weekdays-headings.vue
@@ -1,6 +1,7 @@
//- weekdays-headings are on week view only.
-.vuecal__flex.vuecal__weekdays-headings
+.vuecal__flex.vuecal__weekdays-headings(
+ ref="vuecal_weekday_heading")
template(v-for="(heading, i) in headings" :key="i")
.vuecal__flex.vuecal__heading(
v-if="!heading.hide"
@@ -31,7 +32,8 @@ export default {
transitionDirection: { type: String, default: 'right' },
weekDays: { type: Array, default: () => [] },
switchToNarrowerView: { type: Function, default: () => {} },
- unscheduledTime: { type: Array, default: [] }
+ unscheduledTime: { type: Array, default: [] },
+ // viewPortOffset: { type: Number, default: 0 },
},
methods: {
@@ -48,7 +50,10 @@ export default {
name: heading.name,
initials: heading.initials,
...(heading.today ? { today: heading.today } : {})
- })
+ }),
+ onTimelineScroll(viewPortOffset) {
+ this.$refs['vuecal_weekday_heading'].style.top = `${viewPortOffset}px`
+ }
},
computed: {
diff --git a/app/src/plugins/tm@dashboard/tasks/_components/a-tasks-filter.vue b/app/src/plugins/tm@dashboard/tasks/_components/a-tasks-filter.vue
index c019bae..b965b4c 100644
--- a/app/src/plugins/tm@dashboard/tasks/_components/a-tasks-filter.vue
+++ b/app/src/plugins/tm@dashboard/tasks/_components/a-tasks-filter.vue
@@ -74,11 +74,7 @@ export default {
border-bottom: 1px solid rgba(33, 33, 33, 0.08)
gap: 25px
flex-wrap: wrap
- position: sticky
- top: 0
- z-index: 9999
- background: white
-
+ flex: 0 0 auto
.subheader-icon-button
border: 1px solid #ABABAB
@@ -100,6 +96,7 @@ export default {
.subheader-input
max-width: 250px !important
min-width: 250px
+ height: 56px
&:deep(.v-input__details)
display: none
@@ -107,11 +104,7 @@ export default {
&.disabled
pointer-events: none !important
-
-.date-wrapper
- flex: 0 1 385px
-
-@media (max-width: 1316px)
+@media (max-width: 1312px)
.date-wrapper
order: 3
diff --git a/app/src/plugins/tm@dashboard/tasks/_components/z-timeline.vue b/app/src/plugins/tm@dashboard/tasks/_components/z-timeline.vue
index 540a96f..5e475a2 100644
--- a/app/src/plugins/tm@dashboard/tasks/_components/z-timeline.vue
+++ b/app/src/plugins/tm@dashboard/tasks/_components/z-timeline.vue
@@ -11,8 +11,9 @@
:unscheduledTime="calData.unscheduled_times"
:overlaps-per-time-step="false"
:showTimeInCells="false"
- :time-cell-height="100"
- :snap-to-time="15"
+ :time-cell-height="timeCellHeight"
+ :snap-to-time="8 * 60"
+ :scroll-to-hour="calConfig.scrollHour"
:min-cell-width="300"
@ready="onReady()"
@view-change="weekChanged"
@@ -94,7 +95,7 @@ export default {
type: Object,
required: true,
default() {
- return {startHour: 8, endHour: 16, date: new Date()}
+ return {date: new Date(), scrollHour: 7}
}
}
},
@@ -112,12 +113,13 @@ export default {
},
focusedEventId: null,
showCompleteModal: null,
- showDeleteModal: null
+ showDeleteModal: null,
+ timeCellHeight: 100,
}
},
mounted() {
- this._scrollToDefaultTime()
+ this._scrollToDefaultTime()
},
methods: {
@@ -137,7 +139,7 @@ export default {
onReady() {
this.scrollToYesterday()
- this.correctTimecolumnMargin()
+ this.correctMargins()
},
scrollToYesterday() {
@@ -148,9 +150,10 @@ export default {
scrollContainer.scrollLeft = yesterdayCell.offsetLeft - scrollContainer.offsetLeft - 20
},
- correctTimecolumnMargin() {
+ correctMargins() {
const heightOfDayHeader = document.getElementsByClassName('vuecal__heading')[0].clientHeight
document.getElementsByClassName('vuecal__time-column')[0].style.marginTop = `${heightOfDayHeader}px`
+ document.getElementsByClassName('vuecal__cells-body')[0].style.marginTop = `${heightOfDayHeader}px`
},
getHeadingDate(value) {
@@ -211,7 +214,8 @@ export default {
.calendar-wrapper
width: 100%
- padding-top: 50px
+ height: 100%
+ // padding-top: 50px
&:deep()
.vuecal__cells
@@ -252,6 +256,16 @@ export default {
.vuecal__cell:before
border: none
+ .vuecal__scrollable-body
+ position: relative
+
+ .vuecal__weekdays-headings
+ position: absolute
+ top: 0
+ left: 20px
+ z-index: 999
+ background: white
+
.vuecal__heading
height: fit-content
min-height: 100%
diff --git a/app/src/plugins/tm@dashboard/tasks/tasks.vue b/app/src/plugins/tm@dashboard/tasks/tasks.vue
index e6faac0..2421b3f 100644
--- a/app/src/plugins/tm@dashboard/tasks/tasks.vue
+++ b/app/src/plugins/tm@dashboard/tasks/tasks.vue
@@ -35,8 +35,7 @@ export default {
dataLoaded: false,
config: {
date: new Date(),
- startHour: 8,
- endHour: 16,
+ scrollHour: 7,
}
}
},
@@ -70,9 +69,7 @@ export default {
time.surname = this.timelineData.surname
})
- // format working hours
- this.config.startHour = Number(this.timelineData.work_hours_from.split(':')[0]) - 1
- this.config.endHour = Number(this.timelineData.work_hours_to.split(':')[0]) + 1
+ this.config.scrollHour = Number(this.timelineData.work_hours_from.split(':')[0]) - 1
},
triggerToast(message) {
@@ -102,5 +99,10 @@ export default {
.w-loadable
text-align: center
padding-top: 20px
- height: 100%
+ height: calc( 100% - 121px )
+
+@media (max-width: 1312px)
+ .w-loadable
+ height: calc( 100% - 202px )
+
\ No newline at end of file
diff --git a/app/src/plugins/tm@dashboard/teams/_components/a-team-filter.vue b/app/src/plugins/tm@dashboard/teams/_components/a-team-filter.vue
index 8e5fd5c..7587e84 100644
--- a/app/src/plugins/tm@dashboard/teams/_components/a-team-filter.vue
+++ b/app/src/plugins/tm@dashboard/teams/_components/a-team-filter.vue
@@ -80,6 +80,7 @@ export default {
border-bottom: 1px solid rgba(33, 33, 33, 0.08)
gap: 25px
flex-wrap: wrap
+ flex: 0 0 auto
.subheader-icon-button
border: 1px solid #ABABAB
@@ -109,10 +110,7 @@ export default {
pointer-events: none !important
-.date-wrapper
- flex: 0 1 385px
-
-@media (max-width: 1316px)
+@media (max-width: 1312px)
.date-wrapper
order: 3
diff --git a/app/src/plugins/tm@dashboard/teams/teams.vue b/app/src/plugins/tm@dashboard/teams/teams.vue
index 7fcd8e3..7b768ed 100644
--- a/app/src/plugins/tm@dashboard/teams/teams.vue
+++ b/app/src/plugins/tm@dashboard/teams/teams.vue
@@ -1,6 +1,7 @@
+
@@ -38,5 +39,9 @@ export default {
.w-loadable
text-align: center
padding-top: 20px
- height: 100%
+ height: calc( 100% - 121px )
+
+@media (max-width: 1312px)
+ .w-loadable
+ height: calc( 100% - 202px )
\ No newline at end of file