Updated settings to a navbar layout

This commit is contained in:
Joel Collins 2020-04-23 17:30:04 +01:00
parent b871be48a4
commit 6fa77e04e3
7 changed files with 176 additions and 32 deletions

View file

@ -365,6 +365,11 @@ html {
padding: 0; padding: 0;
} }
.section-content {
padding: 0;
height: 100%;
}
// Style tour // Style tour
.v-tour__target--highlighted { .v-tour__target--highlighted {
box-shadow: 0px 40px 200px 30px rgba(0, 0, 0, 0.5), box-shadow: 0px 40px 200px 30px rgba(0, 0, 0, 0.5),

View file

@ -113,7 +113,7 @@
:require-connection="false" :require-connection="false"
:current-tab="currentTab" :current-tab="currentTab"
> >
<settingsContent /> <settingsContent class="section-content" />
</tabContent> </tabContent>
<tabContent <tabContent

View file

@ -4,7 +4,7 @@
:hidden="currentTab != tabID" :hidden="currentTab != tabID"
class="uk-width-expand uk-height-1-1" class="uk-width-expand uk-height-1-1"
> >
<div class="section-content"><slot></slot></div> <slot></slot>
</div> </div>
</template> </template>
@ -37,9 +37,4 @@ export default {
line-height: 20px; line-height: 20px;
cursor: default; cursor: default;
} }
.section-content {
padding: 0;
height: 100%;
}
</style> </style>

View file

@ -7,7 +7,7 @@
@click="setThisTab" @click="setThisTab"
> >
<slot></slot> <slot></slot>
<div class="tabtitle"> <div v-if="showTitle" class="tabtitle">
{{ computedTitle }} {{ computedTitle }}
</div> </div>
</a> </a>
@ -27,6 +27,16 @@ export default {
required: false, required: false,
default: undefined default: undefined
}, },
showTitle: {
type: Boolean,
required: false,
default: true
},
showTooltip: {
type: Boolean,
required: false,
default: true
},
currentTab: { currentTab: {
type: String, type: String,
required: true required: true
@ -52,7 +62,11 @@ export default {
}, },
tooltipOptions: function() { tooltipOptions: function() {
return `pos: right; title: ${this.computedTitle}; delay: 500`; if (this.showTooltip) {
return `pos: right; title: ${this.computedTitle}; delay: 500`;
} else {
return false;
}
}, },
classObject: function() { classObject: function() {

View file

@ -1,9 +1,6 @@
<template> <template>
<!-- Grid managing tab content --> <!-- Grid managing tab content -->
<div uk-grid class="uk-height-1-1 uk-margin-remove uk-padding-remove"> <div uk-grid class="uk-height-1-1 uk-margin-remove uk-padding-remove">
<div class="control-component">
<paneStatus />
</div>
<div class="view-component uk-width-expand uk-padding-small"> <div class="view-component uk-width-expand uk-padding-small">
<settingsDisplay /> <settingsDisplay />
</div> </div>
@ -11,14 +8,12 @@
</template> </template>
<script> <script>
import paneStatus from "../controlComponents/paneStatus";
import settingsDisplay from "../viewComponents/settingsDisplay.vue"; import settingsDisplay from "../viewComponents/settingsDisplay.vue";
export default { export default {
name: "NavigateContent", name: "NavigateContent",
components: { components: {
paneStatus,
settingsDisplay settingsDisplay
} }
}; };

View file

@ -79,10 +79,10 @@
<script> <script>
import axios from "axios"; import axios from "axios";
import progressBar from "../genericComponents/progressBar"; import progressBar from "../../genericComponents/progressBar";
export default { export default {
name: "PaneStatus", name: "StatusPane",
components: { components: {
progressBar progressBar

View file

@ -1,53 +1,178 @@
<template> <template>
<div id="settingsDisplay" class="uk-padding uk-height-1-1"> <!-- Grid managing tab content -->
<div class="uk-height-1-1 uk-child-width-expand@m" uk-grid> <div uk-grid class="uk-height-1-1 uk-margin-remove uk-padding-remove">
<div class="uk-padding-remove"> <div class="settings-nav">
<ul class="uk-nav uk-nav-default">
<li class="uk-nav-header">Application settings</li>
<li>
<tabIcon
id="settings-status-icon"
tab-i-d="status"
:show-title="false"
:show-tooltip="false"
:require-connection="false"
:current-tab="currentTab"
@set-tab="setTab"
>
Status
</tabIcon>
</li>
<li>
<tabIcon
id="settings-display-icon"
tab-i-d="display"
:show-title="false"
:show-tooltip="false"
:require-connection="false"
:current-tab="currentTab"
@set-tab="setTab"
>
Display
</tabIcon>
</li>
<li class="uk-nav-header">Microscope settings</li>
<li>
<tabIcon
id="settings-camera-icon"
tab-i-d="camera"
:show-title="false"
:show-tooltip="false"
:require-connection="true"
:current-tab="currentTab"
@set-tab="setTab"
>
Camera
</tabIcon>
</li>
<li>
<tabIcon
id="settings-mapping-icon"
tab-i-d="mapping"
:show-title="false"
:show-tooltip="false"
:require-connection="true"
:current-tab="currentTab"
@set-tab="setTab"
>
Camera/stage mapping
</tabIcon>
</li>
<li>
<tabIcon
id="settings-microscope-icon"
tab-i-d="microscope"
:show-title="false"
:show-tooltip="false"
:require-connection="true"
:current-tab="currentTab"
@set-tab="setTab"
>
General
</tabIcon>
</li>
</ul>
</div>
<div class="view-component uk-width-expand uk-padding-small">
<tabContent
tab-i-d="status"
:require-connection="false"
:current-tab="currentTab"
>
<div class="settings-pane uk-padding-small"> <div class="settings-pane uk-padding-small">
<h3>System settings</h3> <h3>Status</h3>
<statusPane />
</div>
</tabContent>
<tabContent
tab-i-d="display"
:require-connection="false"
:current-tab="currentTab"
>
<div class="settings-pane uk-padding-small">
<h3>Display settings</h3>
<appSettings /> <appSettings />
<hr /> <hr />
<streamSettings /> <streamSettings />
</div> </div>
</div> </tabContent>
<div class="uk-padding-remove">
<div v-if="$store.getters.ready" class="settings-pane uk-padding-small"> <tabContent
tab-i-d="camera"
:require-connection="true"
:current-tab="currentTab"
>
<div class="settings-pane uk-padding-small">
<h3>Camera settings</h3> <h3>Camera settings</h3>
<cameraSettings /> <cameraSettings />
</div> </div>
</div> </tabContent>
<div class="uk-padding-remove">
<div v-if="$store.getters.ready" class="settings-pane uk-padding-small"> <tabContent
tab-i-d="mapping"
:require-connection="true"
:current-tab="currentTab"
>
<div class="settings-pane uk-padding-small">
<h3>Camera/stage mapping settings</h3> <h3>Camera/stage mapping settings</h3>
<cameraStageMappingSettings /> <cameraStageMappingSettings />
</div> </div>
</div> </tabContent>
<div class="uk-padding-remove">
<div v-if="$store.getters.ready" class="settings-pane uk-padding-small"> <tabContent
tab-i-d="microscope"
:require-connection="true"
:current-tab="currentTab"
>
<div class="settings-pane uk-padding-small">
<h3>Microscope settings</h3> <h3>Microscope settings</h3>
<microscopeSettings /> <microscopeSettings />
</div> </div>
</div> </tabContent>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import statusPane from "./settingsComponents/statusPane.vue";
import streamSettings from "./settingsComponents/streamSettings.vue"; import streamSettings from "./settingsComponents/streamSettings.vue";
import microscopeSettings from "./settingsComponents/microscopeSettings.vue"; import microscopeSettings from "./settingsComponents/microscopeSettings.vue";
import cameraSettings from "./settingsComponents/cameraSettings.vue"; import cameraSettings from "./settingsComponents/cameraSettings.vue";
import appSettings from "./settingsComponents/appSettings.vue"; import appSettings from "./settingsComponents/appSettings.vue";
import cameraStageMappingSettings from "./settingsComponents/cameraStageMappingSettings.vue"; import cameraStageMappingSettings from "./settingsComponents/cameraStageMappingSettings.vue";
// Import generic components
import tabIcon from "../genericComponents/tabIcon";
import tabContent from "../genericComponents/tabContent";
// Export main app // Export main app
export default { export default {
name: "SettingsDisplay", name: "SettingsDisplay",
components: { components: {
statusPane,
streamSettings, streamSettings,
cameraSettings, cameraSettings,
microscopeSettings, microscopeSettings,
cameraStageMappingSettings, cameraStageMappingSettings,
appSettings appSettings,
tabIcon,
tabContent
},
data: function() {
return {
selected: "status",
currentTab: "status"
};
},
methods: {
setTab: function(event, tab) {
if (!(this.currentTab == tab)) {
this.currentTab = tab;
}
}
} }
}; };
</script> </script>
@ -57,6 +182,16 @@ export default {
border-width: 0 1px 0 0; border-width: 0 1px 0 0;
border-style: solid; border-style: solid;
border-color: rgba(180, 180, 180, 0.25); border-color: rgba(180, 180, 180, 0.25);
min-height: 100%; }
.settings-nav {
overflow-y: auto;
overflow-x: hidden;
width: 250px;
padding: 10px;
background-color: rgba(180, 180, 180, 0.03);
border-width: 0 1px 0 0;
border-style: solid;
border-color: rgba(180, 180, 180, 0.25);
} }
</style> </style>