diff --git a/Packages/lesiontracker/client/components/flexboxLayout/flexboxLayout.html b/Packages/lesiontracker/client/components/flexboxLayout/flexboxLayout.html index 65d782152..a7cfcd678 100644 --- a/Packages/lesiontracker/client/components/flexboxLayout/flexboxLayout.html +++ b/Packages/lesiontracker/client/components/flexboxLayout/flexboxLayout.html @@ -6,11 +6,13 @@
- - diff --git a/Packages/lesiontracker/client/components/flexboxLayout/flexboxLayout.js b/Packages/lesiontracker/client/components/flexboxLayout/flexboxLayout.js index f26742bd2..fa74a1a9b 100644 --- a/Packages/lesiontracker/client/components/flexboxLayout/flexboxLayout.js +++ b/Packages/lesiontracker/client/components/flexboxLayout/flexboxLayout.js @@ -1,39 +1,27 @@ -Template.flexboxLayout.onCreated(() => { - const instance = Template.instance(); - instance.state = instance.data.state; -}); - -let resizeTimeout; -Template.flexboxLayout.onRendered(() => { - const instance = Template.instance(); - - instance.autorun(() => { - Meteor.clearTimeout(resizeTimeout); - - // Trigger a resize any time the layout state changes - instance.state.get('leftSidebar'); - instance.state.get('rightSidebar'); - - resizeTimeout = Meteor.setTimeout(() => { - handleResize(); - }, 300); - }); +Template.flexboxLayout.events({ + 'transitionend .sidebarMenu'(event, instance) { + handleResize(); + }, + 'transitionend .sidebar-option'(event, instance) { + // Prevent this event from bubbling + event.stopPropagation(); + } }); Template.flexboxLayout.helpers({ leftSidebarOpen() { - return Template.instance().state.get('leftSidebar'); + return Template.instance().data.state.get('leftSidebar'); }, lesionSidebarOpen() { - return Template.instance().state.get('rightSidebar') === 'lesions'; + return Template.instance().data.state.get('rightSidebar') === 'lesions'; }, additionalMeasurementsSidebarOpen() { - return Template.instance().state.get('rightSidebar') === 'additional'; + return Template.instance().data.state.get('rightSidebar') === 'additional'; }, rightSidebarOpen() { - return Template.instance().state.get('rightSidebar') !== null; + return Template.instance().data.state.get('rightSidebar') !== null; } }); diff --git a/Packages/lesiontracker/client/components/flexboxLayout/flexboxLayout.styl b/Packages/lesiontracker/client/components/flexboxLayout/flexboxLayout.styl index 541bdee21..70489da24 100644 --- a/Packages/lesiontracker/client/components/flexboxLayout/flexboxLayout.styl +++ b/Packages/lesiontracker/client/components/flexboxLayout/flexboxLayout.styl @@ -8,51 +8,53 @@ width: 100% .sidebarMenu - background: $primaryBackgroundColor height: 100% - position: absolute + // required transformation to make inner fixed elements relative to this one + transform(scale(1)) transition($sidebarTransition) - z-index: 1 + + .sidebar-option + height: 100% + position: fixed + transform(translateX(100%)) + transition($sidebarTransition) + width: 100% + + &.active + transform(translateX(0%)) .sidebar-left - width: $studiesSidebarMenuWidth + max-width: $studiesSidebarMenuWidth order: 1 - flex: 0 - left: - $studiesSidebarMenuWidth + flex: 1 + margin-left: - $studiesSidebarMenuWidth border-right: $uiBorderThickness $uiBorderColor solid &.sidebar-open - left: 0 + margin-left: 0 .mainContent + flex: 1 order: 2 width: 100% height: 100% - -webkit-transition: $sidebarTransition - -ms-transition: $sidebarTransition - -o-transition: $sidebarTransition - -moz-transition: $sidebarTransition - transition: $sidebarTransition - transform: translate3d(0, 0, 0) - - &.sidebar-left-open.sidebar-right-open - width: 'calc(100% - %s)' % ($studiesSidebarMenuWidth + $lesionsSidebarMenuWidth) - - &.sidebar-right-open - width: 'calc(100% - %s)' % $lesionsSidebarMenuWidth - - &.sidebar-left-open - width: 'calc(100% - %s)' % $studiesSidebarMenuWidth - - &.sidebar-left-open - transform: translate3d($studiesSidebarMenuWidth, 0, 0) + transition($sidebarTransition) .sidebar-right - flex: 0 + flex: 1 + margin-right: - $lesionsSidebarMenuWidth + max-width: $lesionsSidebarMenuWidth order: 3 padding-left: 6px - right: - $lesionsSidebarMenuWidth - width: $lesionsSidebarMenuWidth + position: relative + + &[data-timepoints="3"] + margin-right: - ($lesionsSidebarMenuWidth + 135.5px) + max-width: $lesionsSidebarMenuWidth + 135.5px + + &[data-timepoints="4"] + margin-right: - ($lesionsSidebarMenuWidth + 270px) + max-width: $lesionsSidebarMenuWidth + 270px &:before background-color: $uiBorderColor @@ -65,7 +67,7 @@ width: $uiBorderThickness &.sidebar-open - right: 0 + margin-right: 0 .studiesListedChanger padding: 20px 10px diff --git a/Packages/lesiontracker/client/components/lesionTable/lesionTable.js b/Packages/lesiontracker/client/components/lesionTable/lesionTable.js index 6a82b5afc..00276849a 100644 --- a/Packages/lesiontracker/client/components/lesionTable/lesionTable.js +++ b/Packages/lesiontracker/client/components/lesionTable/lesionTable.js @@ -28,6 +28,27 @@ Template.lesionTable.onCreated(() => { }); }); +Template.lesionTable.onRendered(() => { + const instance = Template.instance(); + + instance.autorun(() => { + // Run this computation everytime the lesion table layout is changed + instance.data.lesionTableLayout.dep.depend(); + + if(instance.data.state.get('rightSidebar') !== 'lesions') { + // Remove the amount attribute from sidebar element tag + instance.$('#lesionTableContainer').closest('.sidebarMenu').removeAttr('data-timepoints'); + return; + } + + // Get the amount of timepoints being shown + const timepointAmount = instance.data.timepoints.get().length; + + // Set the amount in an attribute on sidebar element tag + instance.$('#lesionTableContainer').closest('.sidebarMenu').attr('data-timepoints', timepointAmount); + }); +}); + // Temporary until we have a real window manager with events for series/study changed Session.setDefault('NewSeriesLoaded', false); diff --git a/Packages/lesiontracker/client/components/lesionTableHeaderRow/lesionTableHeaderRow.styl b/Packages/lesiontracker/client/components/lesionTableHeaderRow/lesionTableHeaderRow.styl index 72bd7fe42..39362c9d6 100644 --- a/Packages/lesiontracker/client/components/lesionTableHeaderRow/lesionTableHeaderRow.styl +++ b/Packages/lesiontracker/client/components/lesionTableHeaderRow/lesionTableHeaderRow.styl @@ -10,7 +10,7 @@ $headerRowHeight = 63px height: $headerRowHeight line-height: $headerRowHeight margin-top: 2px - width: 316px + width: 100% &.inactive .add cursor: not-allowed