LT-249: Changing sidebar width when timepoints count is changed
This commit is contained in:
parent
7cb8ed6c9f
commit
c65e8861b0
@ -6,11 +6,13 @@
|
||||
<div class="mainContent {{#if leftSidebarOpen}}sidebar-left-open{{/if}} {{#if rightSidebarOpen}}sidebar-right-open{{/if}}">
|
||||
{{>viewerMain}}
|
||||
</div>
|
||||
<div class="sidebarMenu sidebar-right {{#if lesionSidebarOpen}}sidebar-open{{/if}}">
|
||||
{{>lesionTable}}
|
||||
</div>
|
||||
<div class="sidebarMenu sidebar-right {{#if additionalMeasurementsSidebarOpen}}sidebar-open{{/if}}">
|
||||
{{>additionalMeasurements}}
|
||||
<div class="sidebarMenu sidebar-right {{#if or lesionSidebarOpen additionalMeasurementsSidebarOpen}}sidebar-open{{/if}}">
|
||||
<div class="sidebar-option {{#if lesionSidebarOpen}}active{{/if}}">
|
||||
{{>lesionTable (extend this)}}
|
||||
</div>
|
||||
<div class="sidebar-option {{#if additionalMeasurementsSidebarOpen}}active{{/if}}">
|
||||
{{>additionalMeasurements (extend this)}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -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;
|
||||
}
|
||||
});
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -10,7 +10,7 @@ $headerRowHeight = 63px
|
||||
height: $headerRowHeight
|
||||
line-height: $headerRowHeight
|
||||
margin-top: 2px
|
||||
width: 316px
|
||||
width: 100%
|
||||
|
||||
&.inactive .add
|
||||
cursor: not-allowed
|
||||
|
||||
Loading…
Reference in New Issue
Block a user