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}}">
|
<div class="mainContent {{#if leftSidebarOpen}}sidebar-left-open{{/if}} {{#if rightSidebarOpen}}sidebar-right-open{{/if}}">
|
||||||
{{>viewerMain}}
|
{{>viewerMain}}
|
||||||
</div>
|
</div>
|
||||||
<div class="sidebarMenu sidebar-right {{#if lesionSidebarOpen}}sidebar-open{{/if}}">
|
<div class="sidebarMenu sidebar-right {{#if or lesionSidebarOpen additionalMeasurementsSidebarOpen}}sidebar-open{{/if}}">
|
||||||
{{>lesionTable}}
|
<div class="sidebar-option {{#if lesionSidebarOpen}}active{{/if}}">
|
||||||
</div>
|
{{>lesionTable (extend this)}}
|
||||||
<div class="sidebarMenu sidebar-right {{#if additionalMeasurementsSidebarOpen}}sidebar-open{{/if}}">
|
</div>
|
||||||
{{>additionalMeasurements}}
|
<div class="sidebar-option {{#if additionalMeasurementsSidebarOpen}}active{{/if}}">
|
||||||
|
{{>additionalMeasurements (extend this)}}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -1,39 +1,27 @@
|
|||||||
Template.flexboxLayout.onCreated(() => {
|
Template.flexboxLayout.events({
|
||||||
const instance = Template.instance();
|
'transitionend .sidebarMenu'(event, instance) {
|
||||||
instance.state = instance.data.state;
|
handleResize();
|
||||||
});
|
},
|
||||||
|
'transitionend .sidebar-option'(event, instance) {
|
||||||
let resizeTimeout;
|
// Prevent this event from bubbling
|
||||||
Template.flexboxLayout.onRendered(() => {
|
event.stopPropagation();
|
||||||
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.helpers({
|
Template.flexboxLayout.helpers({
|
||||||
leftSidebarOpen() {
|
leftSidebarOpen() {
|
||||||
return Template.instance().state.get('leftSidebar');
|
return Template.instance().data.state.get('leftSidebar');
|
||||||
},
|
},
|
||||||
|
|
||||||
lesionSidebarOpen() {
|
lesionSidebarOpen() {
|
||||||
return Template.instance().state.get('rightSidebar') === 'lesions';
|
return Template.instance().data.state.get('rightSidebar') === 'lesions';
|
||||||
},
|
},
|
||||||
|
|
||||||
additionalMeasurementsSidebarOpen() {
|
additionalMeasurementsSidebarOpen() {
|
||||||
return Template.instance().state.get('rightSidebar') === 'additional';
|
return Template.instance().data.state.get('rightSidebar') === 'additional';
|
||||||
},
|
},
|
||||||
|
|
||||||
rightSidebarOpen() {
|
rightSidebarOpen() {
|
||||||
return Template.instance().state.get('rightSidebar') !== null;
|
return Template.instance().data.state.get('rightSidebar') !== null;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@ -8,51 +8,53 @@
|
|||||||
width: 100%
|
width: 100%
|
||||||
|
|
||||||
.sidebarMenu
|
.sidebarMenu
|
||||||
background: $primaryBackgroundColor
|
|
||||||
height: 100%
|
height: 100%
|
||||||
position: absolute
|
// required transformation to make inner fixed elements relative to this one
|
||||||
|
transform(scale(1))
|
||||||
transition($sidebarTransition)
|
transition($sidebarTransition)
|
||||||
z-index: 1
|
|
||||||
|
.sidebar-option
|
||||||
|
height: 100%
|
||||||
|
position: fixed
|
||||||
|
transform(translateX(100%))
|
||||||
|
transition($sidebarTransition)
|
||||||
|
width: 100%
|
||||||
|
|
||||||
|
&.active
|
||||||
|
transform(translateX(0%))
|
||||||
|
|
||||||
.sidebar-left
|
.sidebar-left
|
||||||
width: $studiesSidebarMenuWidth
|
max-width: $studiesSidebarMenuWidth
|
||||||
order: 1
|
order: 1
|
||||||
flex: 0
|
flex: 1
|
||||||
left: - $studiesSidebarMenuWidth
|
margin-left: - $studiesSidebarMenuWidth
|
||||||
border-right: $uiBorderThickness $uiBorderColor solid
|
border-right: $uiBorderThickness $uiBorderColor solid
|
||||||
|
|
||||||
&.sidebar-open
|
&.sidebar-open
|
||||||
left: 0
|
margin-left: 0
|
||||||
|
|
||||||
.mainContent
|
.mainContent
|
||||||
|
flex: 1
|
||||||
order: 2
|
order: 2
|
||||||
width: 100%
|
width: 100%
|
||||||
height: 100%
|
height: 100%
|
||||||
-webkit-transition: $sidebarTransition
|
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)
|
|
||||||
|
|
||||||
.sidebar-right
|
.sidebar-right
|
||||||
flex: 0
|
flex: 1
|
||||||
|
margin-right: - $lesionsSidebarMenuWidth
|
||||||
|
max-width: $lesionsSidebarMenuWidth
|
||||||
order: 3
|
order: 3
|
||||||
padding-left: 6px
|
padding-left: 6px
|
||||||
right: - $lesionsSidebarMenuWidth
|
position: relative
|
||||||
width: $lesionsSidebarMenuWidth
|
|
||||||
|
&[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
|
&:before
|
||||||
background-color: $uiBorderColor
|
background-color: $uiBorderColor
|
||||||
@ -65,7 +67,7 @@
|
|||||||
width: $uiBorderThickness
|
width: $uiBorderThickness
|
||||||
|
|
||||||
&.sidebar-open
|
&.sidebar-open
|
||||||
right: 0
|
margin-right: 0
|
||||||
|
|
||||||
.studiesListedChanger
|
.studiesListedChanger
|
||||||
padding: 20px 10px
|
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
|
// Temporary until we have a real window manager with events for series/study changed
|
||||||
Session.setDefault('NewSeriesLoaded', false);
|
Session.setDefault('NewSeriesLoaded', false);
|
||||||
|
|
||||||
|
|||||||
@ -10,7 +10,7 @@ $headerRowHeight = 63px
|
|||||||
height: $headerRowHeight
|
height: $headerRowHeight
|
||||||
line-height: $headerRowHeight
|
line-height: $headerRowHeight
|
||||||
margin-top: 2px
|
margin-top: 2px
|
||||||
width: 316px
|
width: 100%
|
||||||
|
|
||||||
&.inactive .add
|
&.inactive .add
|
||||||
cursor: not-allowed
|
cursor: not-allowed
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user