summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaksim Zakharov <m.zakharov@IBS.RU>2022-04-28 15:28:17 +0300
committerMaksim Zakharov <m.zakharov@IBS.RU>2022-04-28 15:28:17 +0300
commit6b73ccbfeb4dd2bab907e6226e0655de99a56e13 (patch)
treea150912d797c0be22a8bdf4950cd1ad1c8d8ee73 /src
parent3f9ce4eaf391733e8769caec8da84302c012b21e (diff)
downloadwebui-vue-6b73ccbfeb4dd2bab907e6226e0655de99a56e13.tar.xz
restyled header and add subheader
Diffstat (limited to 'src')
-rw-r--r--src/assets/images/header/header-avatar.svg10
-rw-r--r--src/assets/images/header/header-clock.svg3
-rw-r--r--src/assets/images/header/icon-notification.svg5
-rw-r--r--src/assets/images/header/logout-icon.svg3
-rw-r--r--src/assets/styles/bmc/custom/_buttons.scss12
-rw-r--r--src/assets/styles/bmc/helpers/_colors.scss11
-rw-r--r--src/assets/styles/bmc/helpers/_variables.scss3
-rw-r--r--src/components/AppHeader/AppHeader.vue235
-rw-r--r--src/components/SubHeader/SubHeader.vue169
-rw-r--r--src/components/SubHeader/index.js1
-rw-r--r--src/layouts/AppLayout.vue14
-rw-r--r--src/locales/ru-RU.json17
-rw-r--r--src/router/routes.js19
-rw-r--r--src/views/InformationAndFAQ/InformationAndFAQ.vue9
-rw-r--r--src/views/InformationAndFAQ/index.js1
-rw-r--r--src/views/Support/Support.vue9
-rw-r--r--src/views/Support/index.js1
17 files changed, 428 insertions, 94 deletions
diff --git a/src/assets/images/header/header-avatar.svg b/src/assets/images/header/header-avatar.svg
new file mode 100644
index 00000000..70a97d0f
--- /dev/null
+++ b/src/assets/images/header/header-avatar.svg
@@ -0,0 +1,10 @@
+<svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<rect x="3" y="3" width="28" height="28" rx="14" fill="url(#pattern0)"/>
+<path d="M17 32C8.71573 32 2 25.2843 2 17H0C0 26.3888 7.61116 34 17 34V32ZM32 17C32 25.2843 25.2843 32 17 32V34C26.3888 34 34 26.3888 34 17H32ZM17 2C25.2843 2 32 8.71573 32 17H34C34 7.61116 26.3888 0 17 0V2ZM17 0C7.61116 0 0 7.61116 0 17H2C2 8.71573 8.71573 2 17 2V0Z" fill="#E11717"/>
+<defs>
+<pattern id="pattern0" patternContentUnits="objectBoundingBox" width="1" height="1">
+<use xlink:href="#image0_1034_21700" transform="translate(0 -0.25) scale(0.003125)"/>
+</pattern>
+<image id="image0_1034_21700" width="320" height="480" xlink:href="data:image/jpeg;base64,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"/>
+</defs>
+</svg>
diff --git a/src/assets/images/header/header-clock.svg b/src/assets/images/header/header-clock.svg
new file mode 100644
index 00000000..dae2f062
--- /dev/null
+++ b/src/assets/images/header/header-clock.svg
@@ -0,0 +1,3 @@
+<svg width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M4.995 0C2.235 0 0 2.24 0 5C0 7.76 2.235 10 4.995 10C7.76 10 10 7.76 10 5C10 2.24 7.76 0 4.995 0ZM5 9C2.79 9 1 7.21 1 5C1 2.79 2.79 1 5 1C7.21 1 9 2.79 9 5C9 7.21 7.21 9 5 9ZM4.89 2.5H4.86C4.66 2.5 4.5 2.66 4.5 2.86V5.22C4.5 5.395 4.59 5.56 4.745 5.65L6.82 6.895C6.99 6.995 7.21 6.945 7.31 6.775C7.415 6.605 7.36 6.38 7.185 6.28L5.25 5.13V2.86C5.25 2.66 5.09 2.5 4.89 2.5Z" fill="white" fill-opacity="0.7"/>
+</svg>
diff --git a/src/assets/images/header/icon-notification.svg b/src/assets/images/header/icon-notification.svg
new file mode 100644
index 00000000..22b5ecc0
--- /dev/null
+++ b/src/assets/images/header/icon-notification.svg
@@ -0,0 +1,5 @@
+<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M22.075 20.4085L21 19.3335V15.1668C21 12.6085 19.6334 10.4668 17.25 9.90016V9.3335C17.25 8.64183 16.6917 8.0835 16 8.0835C15.3084 8.0835 14.75 8.64183 14.75 9.3335V9.90016C12.3584 10.4668 11 12.6002 11 15.1668V19.3335L9.92504 20.4085C9.40004 20.9335 9.76671 21.8335 10.5084 21.8335H21.4834C22.2334 21.8335 22.6 20.9335 22.075 20.4085ZM19.3334 20.1668H12.6667V15.1668C12.6667 13.1002 13.925 11.4168 16 11.4168C18.075 11.4168 19.3334 13.1002 19.3334 15.1668V20.1668ZM16 24.3335C16.9167 24.3335 17.6667 23.5835 17.6667 22.6668H14.3334C14.3334 23.5835 15.075 24.3335 16 24.3335Z" fill="white"/>
+<rect x="14" y="6" width="12" height="12" rx="6" fill="#E11717"/>
+<path d="M18.2919 9.18182V15H17.0618V10.3494H17.0277L15.6953 11.1847V10.0938L17.1357 9.18182H18.2919ZM21.956 15.1278C21.4673 15.1259 21.0469 15.0057 20.6946 14.767C20.3442 14.5284 20.0743 14.1828 19.8849 13.7301C19.6974 13.2775 19.6046 12.733 19.6065 12.0966C19.6065 11.4621 19.7003 10.9214 19.8878 10.4744C20.0772 10.0275 20.3471 9.6875 20.6974 9.45455C21.0497 9.2197 21.4692 9.10227 21.956 9.10227C22.4427 9.10227 22.8613 9.2197 23.2116 9.45455C23.5639 9.68939 23.8348 10.0303 24.0241 10.4773C24.2135 10.9223 24.3073 11.4621 24.3054 12.0966C24.3054 12.7348 24.2107 13.2803 24.0213 13.733C23.8338 14.1856 23.5649 14.5312 23.2145 14.7699C22.8641 15.0085 22.4446 15.1278 21.956 15.1278ZM21.956 14.108C22.2893 14.108 22.5554 13.9403 22.7543 13.6051C22.9531 13.2699 23.0516 12.767 23.0497 12.0966C23.0497 11.6553 23.0043 11.2879 22.9134 10.9943C22.8243 10.7008 22.6974 10.4801 22.5327 10.3324C22.3698 10.1847 22.1776 10.1108 21.956 10.1108C21.6245 10.1108 21.3594 10.2765 21.1605 10.608C20.9616 10.9394 20.8613 11.4356 20.8594 12.0966C20.8594 12.5436 20.9039 12.9167 20.9929 13.2159C21.0838 13.5133 21.2116 13.7367 21.3764 13.8864C21.5412 14.0341 21.7344 14.108 21.956 14.108Z" fill="white"/>
+</svg>
diff --git a/src/assets/images/header/logout-icon.svg b/src/assets/images/header/logout-icon.svg
new file mode 100644
index 00000000..c0e8cee2
--- /dev/null
+++ b/src/assets/images/header/logout-icon.svg
@@ -0,0 +1,3 @@
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M6.99167 11.575C7.31667 11.9 7.84167 11.9 8.16667 11.575L11.1583 8.58333C11.4833 8.25833 11.4833 7.73333 11.1583 7.40833L8.16667 4.41667C7.84167 4.09167 7.31667 4.09167 6.99167 4.41667C6.66667 4.74167 6.66667 5.26667 6.99167 5.59167L8.55833 7.16667H1.33333C0.875 7.16667 0.5 7.54167 0.5 8C0.5 8.45833 0.875 8.83333 1.33333 8.83333H8.55833L6.99167 10.4C6.66667 10.725 6.675 11.2583 6.99167 11.575ZM13.8333 0.5H2.16667C1.24167 0.5 0.5 1.25 0.5 2.16667V4.66667C0.5 5.125 0.875 5.5 1.33333 5.5C1.79167 5.5 2.16667 5.125 2.16667 4.66667V3C2.16667 2.54167 2.54167 2.16667 3 2.16667H13C13.4583 2.16667 13.8333 2.54167 13.8333 3V13C13.8333 13.4583 13.4583 13.8333 13 13.8333H3C2.54167 13.8333 2.16667 13.4583 2.16667 13V11.3333C2.16667 10.875 1.79167 10.5 1.33333 10.5C0.875 10.5 0.5 10.875 0.5 11.3333V13.8333C0.5 14.75 1.25 15.5 2.16667 15.5H13.8333C14.75 15.5 15.5 14.75 15.5 13.8333V2.16667C15.5 1.25 14.75 0.5 13.8333 0.5Z" fill="white"/>
+</svg>
diff --git a/src/assets/styles/bmc/custom/_buttons.scss b/src/assets/styles/bmc/custom/_buttons.scss
index 210aef90..5b0d1e31 100644
--- a/src/assets/styles/bmc/custom/_buttons.scss
+++ b/src/assets/styles/bmc/custom/_buttons.scss
@@ -21,7 +21,7 @@
}
.btn-primary {
- background-color: $button-colour;
+ background-color: $button-color;
border-radius: 8px;
border: none;
font-family: Inter;
@@ -30,23 +30,23 @@
font-size: 16px;
line-height: 20px;
&:hover {
- background-color: $button-colour-hover;
+ background-color: $button-color-hover;
}
&:not(:disabled):not(.disabled):active:focus,
&:focus-visible {
border: none;
box-shadow: none;
- background-color: $button-colour-click;
+ background-color: $button-color-click;
}
&:focus {
border: none;
- box-shadow: none;
- background-color: $button-colour;
+ box-shadow: 0px 0px 0px 4px rgba(225, 23, 23, 0.5);
+ background-color: $button-color;
}
&:active {
border: none;
box-shadow: none;
- background-color: $button-colour;
+ background-color: $button-color;
}
}
diff --git a/src/assets/styles/bmc/helpers/_colors.scss b/src/assets/styles/bmc/helpers/_colors.scss
index 4e9dd738..d6412140 100644
--- a/src/assets/styles/bmc/helpers/_colors.scss
+++ b/src/assets/styles/bmc/helpers/_colors.scss
@@ -45,8 +45,11 @@ $text-h1-color: #0C1C29;
$input-background: rgba(26, 62, 91, 0.05);
$input-background-hover: rgba(20, 39, 53, 0.103);
-$button-colour: #E11717;
-$button-colour-hover: #cc1414;
-$button-colour-active: #df2323;
-$button-colour-click: rgb(114, 1, 1);
+$button-color: #E11717;
+$button-color-hover: #FC2A2A;
+$button-color-active: #df2323;
+$button-color-disabled: #E17171;
+$button-color-click: #C71414;
+
+$nav-link-bg: rgba(225, 23, 23, 0.4);
diff --git a/src/assets/styles/bmc/helpers/_variables.scss b/src/assets/styles/bmc/helpers/_variables.scss
index ba32e3bd..0c8763b0 100644
--- a/src/assets/styles/bmc/helpers/_variables.scss
+++ b/src/assets/styles/bmc/helpers/_variables.scss
@@ -7,7 +7,8 @@ $transition-collapse: height $duration--slow-01 $standard-easing--expres
// OpenBMC Custom Variables
$responsive-layout-bp: lg;
-$header-height: 48px;
+$top-header-height: 56px;
+$header-height: 95px;
$navigation-width: 300px;
$form-label-font-size: .875rem;
$form-line-height: 1.25rem;
diff --git a/src/components/AppHeader/AppHeader.vue b/src/components/AppHeader/AppHeader.vue
index fec889fd..aeb91878 100644
--- a/src/components/AppHeader/AppHeader.vue
+++ b/src/components/AppHeader/AppHeader.vue
@@ -31,7 +31,7 @@
</b-button>
<b-navbar-nav>
<b-navbar-brand
- class="mr-0"
+ class="mr-0 app-logo"
to="/"
data-test-id="appHeader-container-overview"
>
@@ -49,82 +49,138 @@
</div>
</b-navbar-nav>
<!-- Right aligned nav items -->
- <b-navbar-nav class="ml-auto helper-menu">
+ <b-navbar-nav class="helper-menu">
<b-nav-item
- to="/logs/event-logs"
+ to="/"
data-test-id="appHeader-container-health"
+ class="nav-top-button"
+ :class="{
+ 'active-route-top-nav': ![
+ 'profile-settings',
+ 'information-and-faq',
+ 'support',
+ ].includes($route.path.split('/')[1]),
+ }"
>
- <status-icon :status="healthStatusIcon" />
- {{ $t('appHeader.health') }}
+ {{ $t('appHeader.servers') }}
</b-nav-item>
+
+ <b-nav-item
+ to="/profile-settings"
+ data-test-id="appHeader-container-health"
+ class="nav-top-button"
+ :class="{
+ 'active-route-top-nav': ''.includes(
+ $route.path.split('profile-settings')[1]
+ ),
+ }"
+ >
+ {{ $t('appHeader.settings') }}
+ </b-nav-item>
+
<b-nav-item
- to="/operations/server-power-operations"
+ to="/information-and-faq"
data-test-id="appHeader-container-power"
+ class="nav-top-button"
+ :class="{
+ 'active-route-top-nav': ''.includes(
+ $route.path.split('information-and-faq')[1]
+ ),
+ }"
>
- <status-icon :status="serverStatusIcon" />
- {{ $t('appHeader.power') }}
+ {{ $t('appHeader.informationAndFAQ') }}
+ </b-nav-item>
+
+ <b-nav-item
+ to="/support"
+ data-test-id="appHeader-container-power"
+ class="nav-top-button"
+ :class="{
+ 'active-route-top-nav': ''.includes(
+ $route.path.split('support')[1]
+ ),
+ }"
+ >
+ {{ $t('appHeader.support') }}
</b-nav-item>
- <!-- Using LI elements instead of b-nav-item to support semantic button elements -->
- <li class="nav-item">
- <b-button
- id="app-header-refresh"
- variant="link"
- data-test-id="appHeader-button-refresh"
- @click="refresh"
- >
- <icon-renew :title="$t('appHeader.titleRefresh')" />
- <span class="responsive-text">{{ $t('appHeader.refresh') }}</span>
- </b-button>
- </li>
- <li class="nav-item">
- <b-dropdown
- id="app-header-user"
- variant="link"
- right
- data-test-id="appHeader-container-user"
- >
- <template #button-content>
- <icon-avatar :title="$t('appHeader.titleProfile')" />
- <span class="responsive-text">{{ username }}</span>
- </template>
- <b-dropdown-item
- to="/profile-settings"
- data-test-id="appHeader-link-profile"
- >{{ $t('appHeader.profileSettings') }}
- </b-dropdown-item>
- <b-dropdown-item
- data-test-id="appHeader-link-logout"
- @click="logout"
- >
- {{ $t('appHeader.logOut') }}
- </b-dropdown-item>
- </b-dropdown>
- </li>
</b-navbar-nav>
- <!-- <img
+ <!-- Left nav items-->
+ <img
class="header-clock__icon"
- src="@/assets/images/login/header-clock.svg"
+ src="@/assets/images/header/header-clock.svg"
+ :alt="altLogo"
/>
<span style="color: white">15:54:00</span>
- <img
+ <b-nav-item
+ to="/logs/event-logs"
+ data-test-id="appHeader-container-health"
+ style="display: block"
+ >
+ <status-icon :status="healthStatusIcon" />
+ {{ $t('appHeader.health') }}
+ </b-nav-item>
+ <b-nav-item
+ to="/operations/server-power-operations"
+ data-test-id="appHeader-container-power"
+ style="display: block"
+ >
+ <status-icon :status="serverStatusIcon" />
+ {{ $t('appHeader.power') }}
+ </b-nav-item>
+ <div class="nav-item">
+ <b-button
+ id="app-header-refresh"
+ variant="link"
+ data-test-id="appHeader-button-refresh"
+ @click="refresh"
+ >
+ <icon-renew :title="$t('appHeader.titleRefresh')" />
+ <span class="responsive-text">{{ $t('appHeader.refresh') }}</span>
+ </b-button>
+ </div>
+ <div class="nav-item">
+ <b-dropdown
+ id="app-header-user"
+ variant="link"
+ right
+ data-test-id="appHeader-container-user"
+ >
+ <template #button-content>
+ <icon-avatar :title="$t('appHeader.titleProfile')" />
+ <span class="responsive-text">{{ username }}</span>
+ </template>
+ <b-dropdown-item
+ to="/profile-settings"
+ data-test-id="appHeader-link-profile"
+ >{{ $t('appHeader.profileSettings') }}
+ </b-dropdown-item>
+ <b-dropdown-item
+ data-test-id="appHeader-link-logout"
+ @click="logout"
+ >
+ {{ $t('appHeader.logOut') }}
+ </b-dropdown-item>
+ </b-dropdown>
+ </div>
+ <!-- <img
style="margin-left: 20px"
class="header-avatar__icon"
- src="@/assets/images/login/header-avatar.svg"
+ src="@/assets/images/header/header-avatar.svg"
/>
- <span style="color: white">Маргарита тутова</span>
+ <span style="color: white">Маргарита тутова</span> -->
<b-button id="app-header-notification" class="app-header-notification">
<img
class="header-notification__icon"
- src="@/assets/images/login/icon-notification.svg"
+ src="@/assets/images/header/icon-notification.svg"
/>
</b-button>
<b-button id="app-header-logout" class="app-header-logout">
<img
class="header-logout__icon"
- src="@/assets/images/login/logout-icon.svg"
- @click="logout"
+ src="@/assets/images/header/logout-icon.svg"
+ :alt="altLogo"
/>
- </b-button> -->
+ </b-button>
</b-navbar>
</header>
<loading-bar />
@@ -133,19 +189,18 @@
<script>
import BVToastMixin from '@/components/Mixins/BVToastMixin';
-import IconAvatar from '@carbon/icons-vue/es/user--avatar/20';
import IconClose from '@carbon/icons-vue/es/close/20';
import IconMenu from '@carbon/icons-vue/es/menu/20';
+import IconAvatar from '@carbon/icons-vue/es/user--avatar/20';
import IconRenew from '@carbon/icons-vue/es/renew/20';
import StatusIcon from '@/components/Global/StatusIcon';
import LoadingBar from '@/components/Global/LoadingBar';
-
export default {
name: 'AppHeader',
components: {
- IconAvatar,
IconClose,
IconMenu,
+ IconAvatar,
IconRenew,
StatusIcon,
LoadingBar,
@@ -265,6 +320,7 @@ export default {
box-shadow: inset 0 0 0 3px $padding-color, inset 0 0 0 5px $outline-color;
}
.app-header {
+ flex-grow: 1;
.link-skip-nav {
position: absolute;
top: -60px;
@@ -276,39 +332,44 @@ export default {
transition-timing-function: $entrance-easing--expressive;
}
}
+
+ .app-logo {
+ margin-top: 10px;
+ }
+ .nav-top-button {
+ color: $white;
+ padding: 0px;
+ margin: 0px 8px;
+ }
+
+ .active-route-top-nav {
+ background-color: $nav-link-bg;
+ border-radius: 4px;
+ }
+
.navbar-text,
.nav-link,
.btn-link {
- color: color('white') !important;
- fill: currentColor;
- padding: 0.68rem 1rem !important;
+ border-radius: 4px;
+ color: $white !important;
&:hover {
- background-color: theme-color-level(light, 10);
+ background-color: $nav-link-bg;
}
&:active {
- background-color: theme-color-level(light, 9);
- }
- &:focus {
- @include focus-box-shadow;
- outline: 0;
+ background-color: $nav-link-bg;
}
}
- .nav-item {
- fill: theme-color('light');
- }
-
.navbar {
padding: 0;
background-color: $navbar-color;
@include media-breakpoint-up($responsive-layout-bp) {
- height: $header-height;
+ height: $top-header-height;
}
.helper-menu {
@include media-breakpoint-down(sm) {
- background-color: gray('800');
width: 100%;
justify-content: flex-end;
@@ -316,11 +377,6 @@ export default {
.btn {
padding: $spacer / 1.125 $spacer / 2;
}
-
- .nav-link:focus,
- .btn:focus {
- @include focus-box-shadow($dark);
- }
}
.responsive-text {
@@ -335,14 +391,13 @@ export default {
@include media-breakpoint-up($responsive-layout-bp) {
padding: 0 $spacer;
}
- align-items: center;
+ align-items: baseline;
.navbar-brand,
.nav-link {
transition: $focus-transition;
}
.nav-tags {
- color: theme-color-level(light, 3);
@include media-breakpoint-down(xs) {
@include sr-only;
}
@@ -356,8 +411,8 @@ export default {
.nav-trigger {
fill: theme-color('light');
- width: $header-height;
- height: $header-height;
+ width: $top-header-height;
+ height: $top-header-height;
transition: none;
display: inline-flex;
flex: 0 0 20px;
@@ -398,11 +453,29 @@ export default {
.navbar-brand {
padding: $spacer/2;
- height: $header-height;
+ height: $top-header-height;
line-height: 1;
&:focus {
box-shadow: inset 0 0 0 3px $navbar-color, inset 0 0 0 5px color('white');
outline: 0;
}
}
+
+.header-clock__icon {
+ margin-left: auto;
+}
+
+.app-header-logout,
+.app-header-notification {
+ margin: 0 5px;
+ background: none;
+ border: none;
+ width: 30px;
+ height: 30px;
+ &:hover {
+ background: $nav-link-bg;
+ border-radius: 5px;
+ border: none;
+ }
+}
</style>
diff --git a/src/components/SubHeader/SubHeader.vue b/src/components/SubHeader/SubHeader.vue
new file mode 100644
index 00000000..815d2677
--- /dev/null
+++ b/src/components/SubHeader/SubHeader.vue
@@ -0,0 +1,169 @@
+<template>
+ <div>
+ <section id="sub-header">
+ <b-navbar type="dark" :aria-label="$t('appHeader.applicationHeader')">
+ <!-- top navigation menu -->
+ <b-navbar-nav>
+ <b-nav-item
+ to="/"
+ exact
+ data-test-id="appHeader-container-health"
+ class="subheader-button"
+ >
+ {{ $t('subHeader.serverInfo') }}
+ </b-nav-item>
+
+ <b-nav-item
+ to="/operations/kvm"
+ data-test-id="appHeader-container-health"
+ class="subheader-button"
+ :class="{
+ 'active-route-top': ''.includes(
+ $route.path.split('operations/kvm')[1]
+ ),
+ }"
+ >
+ {{ $t('subHeader.console') }}
+ </b-nav-item>
+
+ <b-nav-item
+ to="/security-and-access/user-management"
+ data-test-id="appHeader-container-power"
+ class="subheader-button"
+ :class="{
+ 'active-route-top': ''.includes(
+ $route.path.split('security-and-access/user-management')[1]
+ ),
+ }"
+ >
+ {{ $t('subHeader.administration') }}
+ </b-nav-item>
+ <!-- Using LI elements instead of b-nav-item to support semantic button elements -->
+ </b-navbar-nav>
+ </b-navbar>
+ </section>
+ </div>
+</template>
+
+<script>
+import BVToastMixin from '@/components/Mixins/BVToastMixin';
+
+export default {
+ name: 'AppHeader',
+ mixins: [BVToastMixin],
+ props: {
+ routerKey: {
+ type: Number,
+ default: 0,
+ },
+ },
+ data() {
+ return {
+ isNavigationOpen: false,
+ };
+ },
+ computed: {
+ isNavTagPresent() {
+ return this.assetTag || this.modelType || this.serialNumber;
+ },
+ },
+ mounted() {
+ this.$root.$on(
+ 'change-is-navigation-open',
+ (isNavigationOpen) => (this.isNavigationOpen = isNavigationOpen)
+ );
+ },
+ methods: {
+ toggleNavigation() {
+ this.$root.$emit('toggle-navigation');
+ },
+ setFocus(event) {
+ event.preventDefault();
+ this.$root.$emit('skip-navigation');
+ },
+ },
+};
+</script>
+
+<style lang="scss">
+@mixin focus-box-shadow($padding-color: $navbar-color, $outline-color: $white) {
+ box-shadow: inset 0 0 0 3px $padding-color, inset 0 0 0 5px $outline-color;
+}
+.sub-header {
+ height: 39px;
+
+ .subheader-button {
+ margin-left: 10px;
+ }
+
+ .active-route-top {
+ background-color: $white;
+ color: #1a3e5b !important;
+ border-radius: 4px;
+ }
+
+ .navbar-text,
+ .nav-link,
+ .btn-link {
+ border-radius: 4px;
+ padding: 0.68rem 1rem !important;
+
+ &:hover {
+ background-color: $white;
+ color: #1a3e5b !important;
+ border-radius: 4px;
+ border-bottom: 5px;
+ }
+ &:active {
+ background-color: $white;
+ color: #1a3e5b !important;
+ border-bottom: 5px;
+ border-radius: 4px;
+ }
+ }
+
+ .navbar {
+ padding: 0;
+ background-color: $navbar-color;
+ @include media-breakpoint-up($responsive-layout-bp) {
+ height: 39px;
+ }
+
+ .helper-menu {
+ @include media-breakpoint-down(sm) {
+ width: 100%;
+ justify-content: flex-end;
+ .nav-link,
+ .btn {
+ padding: $spacer / 1.125 $spacer / 2;
+ margin-left: 10px;
+ }
+ }
+ }
+ }
+
+ .navbar-nav {
+ align-items: baseline;
+ padding-left: 24px;
+ .nav-link {
+ color: white;
+ }
+ .nav-tags {
+ @include media-breakpoint-down(xs) {
+ @include sr-only;
+ }
+ .asset-tag {
+ @include media-breakpoint-down($responsive-layout-bp) {
+ @include sr-only;
+ }
+ }
+ }
+ }
+
+ .router-link-active {
+ color: #1a3e5b !important;
+ background-color: white;
+ padding: 0.68rem 1rem !important;
+ }
+}
+</style>
diff --git a/src/components/SubHeader/index.js b/src/components/SubHeader/index.js
new file mode 100644
index 00000000..ad26fced
--- /dev/null
+++ b/src/components/SubHeader/index.js
@@ -0,0 +1 @@
+export { default } from './SubHeader.vue';
diff --git a/src/layouts/AppLayout.vue b/src/layouts/AppLayout.vue
index 0b78e5b1..f53601c9 100644
--- a/src/layouts/AppLayout.vue
+++ b/src/layouts/AppLayout.vue
@@ -6,6 +6,7 @@
:router-key="routerKey"
@refresh="refresh"
/>
+ <sub-header ref="focusTarget" class="sub-header" :router-key="routerKey" />
<app-navigation class="app-navigation" />
<page-container class="app-content">
<router-view ref="routerView" :key="routerKey" />
@@ -17,6 +18,7 @@
<script>
import AppHeader from '@/components/AppHeader';
+import SubHeader from '@/components/SubHeader';
import AppNavigation from '@/components/AppNavigation';
import PageContainer from '@/components/Global/PageContainer';
import ButtonBackToTop from '@/components/Global/ButtonBackToTop';
@@ -26,6 +28,7 @@ export default {
name: 'App',
components: {
AppHeader,
+ SubHeader,
AppNavigation,
PageContainer,
ButtonBackToTop,
@@ -60,15 +63,17 @@ export default {
.app-container {
display: grid;
grid-template-columns: 100%;
- grid-template-rows: auto;
+ grid-template-rows: 56px 39px 1fr;
grid-template-areas:
'header'
+ 'subheader'
'content';
@include media-breakpoint-up($responsive-layout-bp) {
grid-template-columns: $navigation-width 1fr;
grid-template-areas:
'header header'
+ 'subheader subheader'
'navigation content';
}
}
@@ -80,6 +85,13 @@ export default {
z-index: $zindex-fixed + 1;
}
+.sub-header {
+ grid-area: subheader;
+ position: sticky;
+ top: 56px;
+ z-index: $zindex-fixed + 1;
+}
+
.app-navigation {
grid-area: navigation;
}
diff --git a/src/locales/ru-RU.json b/src/locales/ru-RU.json
index ede1a164..b2d82601 100644
--- a/src/locales/ru-RU.json
+++ b/src/locales/ru-RU.json
@@ -86,6 +86,10 @@
},
"appHeader": {
"applicationHeader": "Заголовок веб-приложения",
+ "servers": "Серверы",
+ "settings": "Настройки",
+ "informationAndFAQ": "Информация и FAQ",
+ "support": "Поддержка",
"health": "Состояние",
"logOut": "Выход",
"power": "Питание",
@@ -97,7 +101,19 @@
"titleProfile": "Показать меню профиля",
"titleRefresh": "Обновить данные веб-приложения"
},
+ "subHeader": {
+ "serverInfo": "Информаци о сервере",
+ "console": "Виртуальная консоль",
+ "administration": "Администрирование"
+ },
"appNavigation": {
+ "systemInformaion": "Краткое описание системы",
+ "overviewInfo": "Основная информация",
+ "networkParametrs": "Параметры сети",
+ "eventLogs": "Журнал событий",
+ "serverParam": "Параметры сервера",
+
+
"resourceManagement": "Управление ресурсами",
"securityAndAccess": "Безопасность и доступ",
"sessions": "@:appPageTitle.sessions",
@@ -105,7 +121,6 @@
"operations": "Управление",
"dateTime": "@:appPageTitle.dateTime",
"dumps": "@:appPageTitle.dumps",
- "eventLogs": "@:appPageTitle.eventLogs",
"factoryReset": "@:appPageTitle.factoryReset",
"firmware": "@:appPageTitle.firmware",
"hardwareStatus": "Статус оборудования",
diff --git a/src/router/routes.js b/src/router/routes.js
index 3cbdabce..5703e62a 100644
--- a/src/router/routes.js
+++ b/src/router/routes.js
@@ -29,6 +29,9 @@ import ServerPowerOperations from '@/views/Operations/ServerPowerOperations';
import Certificates from '@/views/SecurityAndAccess/Certificates';
import VirtualMedia from '@/views/Operations/VirtualMedia';
import Power from '@/views/ResourceManagement/Power';
+import InformationAndFAQ from '@/views/InformationAndFAQ';
+import Support from '@/views/Support';
+
import i18n from '@/i18n';
const routes = [
@@ -176,6 +179,22 @@ const routes = [
},
},
{
+ path: '/information-and-faq',
+ name: 'information-and-faq',
+ component: InformationAndFAQ,
+ meta: {
+ title: i18n.t('appPageTitle.informationAndFAQ'),
+ },
+ },
+ {
+ path: '/support',
+ name: 'support',
+ component: Support,
+ meta: {
+ title: i18n.t('appPageTitle.support'),
+ },
+ },
+ {
path: '/settings/date-time',
name: 'date-time',
component: DateTime,
diff --git a/src/views/InformationAndFAQ/InformationAndFAQ.vue b/src/views/InformationAndFAQ/InformationAndFAQ.vue
new file mode 100644
index 00000000..ede7b3d8
--- /dev/null
+++ b/src/views/InformationAndFAQ/InformationAndFAQ.vue
@@ -0,0 +1,9 @@
+<template>
+ <span>This Page (Information And FAQ) In develop</span>
+</template>
+
+<script>
+export default {
+ name: 'InformationAndFAQ',
+};
+</script>
diff --git a/src/views/InformationAndFAQ/index.js b/src/views/InformationAndFAQ/index.js
new file mode 100644
index 00000000..6bbeaba6
--- /dev/null
+++ b/src/views/InformationAndFAQ/index.js
@@ -0,0 +1 @@
+export { default } from './InformationAndFAQ.vue';
diff --git a/src/views/Support/Support.vue b/src/views/Support/Support.vue
new file mode 100644
index 00000000..a23ad55f
--- /dev/null
+++ b/src/views/Support/Support.vue
@@ -0,0 +1,9 @@
+<template>
+ <span>This Page (Support) In develop</span>
+</template>
+
+<script>
+export default {
+ name: 'Support',
+};
+</script>
diff --git a/src/views/Support/index.js b/src/views/Support/index.js
new file mode 100644
index 00000000..80b31621
--- /dev/null
+++ b/src/views/Support/index.js
@@ -0,0 +1 @@
+export { default } from './Support.vue';