From 8047ae3d83ba0718fb7a42907036157e5c680b85 Mon Sep 17 00:00:00 2001 From: "Andrey V.Kosteltsev" Date: Mon, 4 Jul 2022 23:59:32 +0300 Subject: IBS: _sila UI theme --- .env.sila | 12 + src/assets/images/_sila/built-on-openbmc-logo.svg | 13 + src/assets/images/_sila/login-company-logo.svg | 1 + src/assets/images/_sila/logo-header.svg | 1 + src/assets/styles/_obmc-sila.scss | 6 + src/assets/styles/bmc/_sila/_alert.scss | 70 +++ src/assets/styles/bmc/_sila/_badge.scss | 21 + src/assets/styles/bmc/_sila/_base.scss | 50 ++ src/assets/styles/bmc/_sila/_bootstrap-grid.scss | 8 + src/assets/styles/bmc/_sila/_buttons.scss | 82 +++ src/assets/styles/bmc/_sila/_calendar.scss | 17 + src/assets/styles/bmc/_sila/_card.scss | 5 + src/assets/styles/bmc/_sila/_dropdown.scss | 31 ++ src/assets/styles/bmc/_sila/_forms.scss | 132 +++++ src/assets/styles/bmc/_sila/_index.scss | 18 + src/assets/styles/bmc/_sila/_kvm.scss | 12 + src/assets/styles/bmc/_sila/_modal.scss | 12 + src/assets/styles/bmc/_sila/_pagination.scss | 24 + src/assets/styles/bmc/_sila/_section-divider.scss | 3 + src/assets/styles/bmc/_sila/_sol.scss | 3 + src/assets/styles/bmc/_sila/_tables.scss | 171 ++++++ src/assets/styles/bmc/_sila/_toasts.scss | 61 +++ src/components/_sila/AppHeader/AppHeader.vue | 384 +++++++++++++ src/components/_sila/AppHeader/index.js | 2 + .../_sila/AppNavigation/AppNavigation.vue | 255 +++++++++ .../_sila/AppNavigation/AppNavigationMixin.js | 182 +++++++ src/components/_sila/AppNavigation/index.js | 2 + src/components/_sila/Global/Alert.vue | 47 ++ src/components/_sila/Global/ButtonBackToTop.vue | 68 +++ src/components/_sila/Global/FormFile.vue | 119 ++++ src/components/_sila/Global/InfoTooltip.vue | 35 ++ .../_sila/Global/InputPasswordToggle.vue | 54 ++ src/components/_sila/Global/LoadingBar.vue | 93 ++++ src/components/_sila/Global/PageContainer.vue | 37 ++ src/components/_sila/Global/PageSection.vue | 29 + src/components/_sila/Global/PageTitle.vue | 32 ++ src/components/_sila/Global/Search.vue | 83 +++ src/components/_sila/Global/StatusIcon.vue | 61 +++ src/components/_sila/Global/TableCellCount.vue | 35 ++ src/components/_sila/Global/TableDateFilter.vue | 165 ++++++ src/components/_sila/Global/TableFilter.vue | 114 ++++ src/components/_sila/Global/TableRowAction.vue | 112 ++++ src/components/_sila/Global/TableToolbar.vue | 130 +++++ src/components/_sila/Global/TableToolbarExport.vue | 36 ++ src/components/_sila/Mixins/BVPaginationMixin.js | 34 ++ .../_sila/Mixins/BVTableSelectableMixin.js | 41 ++ src/components/_sila/Mixins/BVToastMixin.js | 115 ++++ src/components/_sila/Mixins/DataFormatterMixin.js | 30 + src/components/_sila/Mixins/JumpLinkMixin.js | 27 + src/components/_sila/Mixins/LoadingBarMixin.js | 19 + .../_sila/Mixins/LocalTimezoneLabelMixin.js | 14 + src/components/_sila/Mixins/SearchFilterMixin.js | 14 + src/components/_sila/Mixins/TableFilterMixin.js | 58 ++ src/components/_sila/Mixins/TableRowExpandMixin.js | 15 + src/components/_sila/Mixins/TableSortMixin.js | 11 + src/components/_sila/Mixins/VuelidateMixin.js | 10 + src/env/assets/styles/_sila.scss | 92 ++++ src/env/components/AppNavigation/sila.js | 182 +++++++ src/env/router/sila.js | 286 ++++++++++ src/env/store/sila.js | 10 + src/layouts/_sila/AppLayout.vue | 91 ++++ src/layouts/_sila/ConsoleLayout.vue | 9 + src/layouts/_sila/LoginLayout.vue | 112 ++++ src/views/_sila/ChangePassword/ChangePassword.vue | 134 +++++ src/views/_sila/ChangePassword/index.js | 2 + .../_sila/HardwareStatus/Inventory/Inventory.vue | 196 +++++++ .../Inventory/InventoryServiceIndicator.vue | 76 +++ .../Inventory/InventoryTableAssembly.vue | 153 ++++++ .../Inventory/InventoryTableBmcManager.vue | 245 +++++++++ .../Inventory/InventoryTableChassis.vue | 191 +++++++ .../Inventory/InventoryTableDimmSlot.vue | 255 +++++++++ .../Inventory/InventoryTableFans.vue | 190 +++++++ .../Inventory/InventoryTablePowerSupplies.vue | 208 +++++++ .../Inventory/InventoryTableProcessors.vue | 251 +++++++++ .../Inventory/InventoryTableSystem.vue | 224 ++++++++ src/views/_sila/HardwareStatus/Inventory/index.js | 2 + src/views/_sila/HardwareStatus/Sensors/Sensors.vue | 256 +++++++++ src/views/_sila/HardwareStatus/Sensors/index.js | 2 + src/views/_sila/Login/Login.vue | 146 +++++ src/views/_sila/Login/index.js | 2 + src/views/_sila/Logs/Dumps/Dumps.vue | 404 ++++++++++++++ src/views/_sila/Logs/Dumps/DumpsForm.vue | 97 ++++ .../_sila/Logs/Dumps/DumpsModalConfirmation.vue | 75 +++ src/views/_sila/Logs/Dumps/index.js | 2 + src/views/_sila/Logs/EventLogs/EventLogs.vue | 604 +++++++++++++++++++++ src/views/_sila/Logs/EventLogs/index.js | 2 + src/views/_sila/Logs/PostCodeLogs/PostCodeLogs.vue | 347 ++++++++++++ src/views/_sila/Logs/PostCodeLogs/index.js | 2 + .../_sila/Operations/FactoryReset/FactoryReset.vue | 117 ++++ .../Operations/FactoryReset/FactoryResetModal.vue | 113 ++++ src/views/_sila/Operations/FactoryReset/index.js | 2 + src/views/_sila/Operations/Firmware/Firmware.vue | 93 ++++ .../Firmware/FirmwareAlertServerPower.vue | 50 ++ .../_sila/Operations/Firmware/FirmwareCardsBmc.vue | 136 +++++ .../Operations/Firmware/FirmwareCardsHost.vue | 73 +++ .../Operations/Firmware/FirmwareFormUpdate.vue | 187 +++++++ .../Firmware/FirmwareModalSwitchToRunning.vue | 31 ++ .../Firmware/FirmwareModalUpdateFirmware.vue | 44 ++ src/views/_sila/Operations/Firmware/index.js | 2 + src/views/_sila/Operations/KeyClear/KeyClear.vue | 106 ++++ src/views/_sila/Operations/KeyClear/index.js | 2 + src/views/_sila/Operations/Kvm/Kvm.vue | 24 + src/views/_sila/Operations/Kvm/KvmConsole.vue | 170 ++++++ src/views/_sila/Operations/Kvm/index.js | 2 + src/views/_sila/Operations/RebootBmc/RebootBmc.vue | 83 +++ src/views/_sila/Operations/RebootBmc/index.js | 2 + .../Operations/SerialOverLan/SerialOverLan.vue | 24 + .../SerialOverLan/SerialOverLanConsole.vue | 172 ++++++ src/views/_sila/Operations/SerialOverLan/index.js | 2 + .../ServerPowerOperations/BootSettings.vue | 132 +++++ .../ServerPowerOperations.vue | 260 +++++++++ .../Operations/ServerPowerOperations/index.js | 2 + .../VirtualMedia/ModalConfigureConnection.vue | 145 +++++ .../_sila/Operations/VirtualMedia/VirtualMedia.vue | 221 ++++++++ src/views/_sila/Operations/VirtualMedia/index.js | 2 + src/views/_sila/Overview/Overview.vue | 100 ++++ src/views/_sila/Overview/OverviewCard.vue | 81 +++ src/views/_sila/Overview/OverviewDumps.vue | 54 ++ src/views/_sila/Overview/OverviewEvents.vue | 85 +++ src/views/_sila/Overview/OverviewFirmware.vue | 49 ++ src/views/_sila/Overview/OverviewInventory.vue | 57 ++ src/views/_sila/Overview/OverviewNetwork.vue | 71 +++ src/views/_sila/Overview/OverviewPower.vue | 48 ++ src/views/_sila/Overview/OverviewQuickLinks.vue | 56 ++ src/views/_sila/Overview/OverviewServer.vue | 47 ++ src/views/_sila/Overview/index.js | 2 + src/views/_sila/PageNotFound/PageNotFound.vue | 12 + src/views/_sila/PageNotFound/index.js | 2 + .../_sila/ProfileSettings/ProfileSettings.vue | 222 ++++++++ src/views/_sila/ProfileSettings/index.js | 2 + src/views/_sila/ResourceManagement/Power.vue | 170 ++++++ src/views/_sila/ResourceManagement/index.js | 2 + .../Certificates/Certificates.vue | 322 +++++++++++ .../Certificates/CsrCountryCodes.js | 345 ++++++++++++ .../Certificates/ModalGenerateCsr.vue | 496 +++++++++++++++++ .../Certificates/ModalUploadCertificate.vue | 168 ++++++ .../_sila/SecurityAndAccess/Certificates/index.js | 2 + src/views/_sila/SecurityAndAccess/Ldap/Ldap.vue | 435 +++++++++++++++ .../SecurityAndAccess/Ldap/ModalAddRoleGroup.vue | 164 ++++++ .../SecurityAndAccess/Ldap/TableRoleGroups.vue | 269 +++++++++ src/views/_sila/SecurityAndAccess/Ldap/index.js | 2 + .../_sila/SecurityAndAccess/Policies/Policies.vue | 213 ++++++++ .../_sila/SecurityAndAccess/Policies/index.js | 2 + .../_sila/SecurityAndAccess/Sessions/Sessions.vue | 294 ++++++++++ .../_sila/SecurityAndAccess/Sessions/index.js | 2 + .../UserManagement/ModalSettings.vue | 215 ++++++++ .../SecurityAndAccess/UserManagement/ModalUser.vue | 386 +++++++++++++ .../UserManagement/TableRoles.vue | 92 ++++ .../UserManagement/UserManagement.vue | 391 +++++++++++++ .../SecurityAndAccess/UserManagement/index.js | 2 + src/views/_sila/Settings/DateTime/DateTime.vue | 417 ++++++++++++++ src/views/_sila/Settings/DateTime/index.js | 2 + src/views/_sila/Settings/Network/ModalDns.vue | 92 ++++ src/views/_sila/Settings/Network/ModalHostname.vue | 110 ++++ src/views/_sila/Settings/Network/ModalIpv4.vue | 165 ++++++ .../_sila/Settings/Network/ModalMacAddress.vue | 109 ++++ src/views/_sila/Settings/Network/Network.vue | 167 ++++++ .../Settings/Network/NetworkGlobalSettings.vue | 161 ++++++ .../Settings/Network/NetworkInterfaceSettings.vue | 117 ++++ src/views/_sila/Settings/Network/TableDns.vue | 145 +++++ src/views/_sila/Settings/Network/TableIpv4.vue | 169 ++++++ src/views/_sila/Settings/Network/index.js | 2 + .../PowerRestorePolicy/PowerRestorePolicy.vue | 91 ++++ .../_sila/Settings/PowerRestorePolicy/index.js | 2 + 164 files changed, 16870 insertions(+) create mode 100644 .env.sila create mode 100644 src/assets/images/_sila/built-on-openbmc-logo.svg create mode 100644 src/assets/images/_sila/login-company-logo.svg create mode 100644 src/assets/images/_sila/logo-header.svg create mode 100644 src/assets/styles/_obmc-sila.scss create mode 100644 src/assets/styles/bmc/_sila/_alert.scss create mode 100644 src/assets/styles/bmc/_sila/_badge.scss create mode 100644 src/assets/styles/bmc/_sila/_base.scss create mode 100644 src/assets/styles/bmc/_sila/_bootstrap-grid.scss create mode 100644 src/assets/styles/bmc/_sila/_buttons.scss create mode 100644 src/assets/styles/bmc/_sila/_calendar.scss create mode 100644 src/assets/styles/bmc/_sila/_card.scss create mode 100644 src/assets/styles/bmc/_sila/_dropdown.scss create mode 100644 src/assets/styles/bmc/_sila/_forms.scss create mode 100644 src/assets/styles/bmc/_sila/_index.scss create mode 100644 src/assets/styles/bmc/_sila/_kvm.scss create mode 100644 src/assets/styles/bmc/_sila/_modal.scss create mode 100644 src/assets/styles/bmc/_sila/_pagination.scss create mode 100644 src/assets/styles/bmc/_sila/_section-divider.scss create mode 100644 src/assets/styles/bmc/_sila/_sol.scss create mode 100644 src/assets/styles/bmc/_sila/_tables.scss create mode 100644 src/assets/styles/bmc/_sila/_toasts.scss create mode 100644 src/components/_sila/AppHeader/AppHeader.vue create mode 100644 src/components/_sila/AppHeader/index.js create mode 100644 src/components/_sila/AppNavigation/AppNavigation.vue create mode 100644 src/components/_sila/AppNavigation/AppNavigationMixin.js create mode 100644 src/components/_sila/AppNavigation/index.js create mode 100644 src/components/_sila/Global/Alert.vue create mode 100644 src/components/_sila/Global/ButtonBackToTop.vue create mode 100644 src/components/_sila/Global/FormFile.vue create mode 100644 src/components/_sila/Global/InfoTooltip.vue create mode 100644 src/components/_sila/Global/InputPasswordToggle.vue create mode 100644 src/components/_sila/Global/LoadingBar.vue create mode 100644 src/components/_sila/Global/PageContainer.vue create mode 100644 src/components/_sila/Global/PageSection.vue create mode 100644 src/components/_sila/Global/PageTitle.vue create mode 100644 src/components/_sila/Global/Search.vue create mode 100644 src/components/_sila/Global/StatusIcon.vue create mode 100644 src/components/_sila/Global/TableCellCount.vue create mode 100644 src/components/_sila/Global/TableDateFilter.vue create mode 100644 src/components/_sila/Global/TableFilter.vue create mode 100644 src/components/_sila/Global/TableRowAction.vue create mode 100644 src/components/_sila/Global/TableToolbar.vue create mode 100644 src/components/_sila/Global/TableToolbarExport.vue create mode 100644 src/components/_sila/Mixins/BVPaginationMixin.js create mode 100644 src/components/_sila/Mixins/BVTableSelectableMixin.js create mode 100644 src/components/_sila/Mixins/BVToastMixin.js create mode 100644 src/components/_sila/Mixins/DataFormatterMixin.js create mode 100644 src/components/_sila/Mixins/JumpLinkMixin.js create mode 100644 src/components/_sila/Mixins/LoadingBarMixin.js create mode 100644 src/components/_sila/Mixins/LocalTimezoneLabelMixin.js create mode 100644 src/components/_sila/Mixins/SearchFilterMixin.js create mode 100644 src/components/_sila/Mixins/TableFilterMixin.js create mode 100644 src/components/_sila/Mixins/TableRowExpandMixin.js create mode 100644 src/components/_sila/Mixins/TableSortMixin.js create mode 100644 src/components/_sila/Mixins/VuelidateMixin.js create mode 100644 src/env/assets/styles/_sila.scss create mode 100644 src/env/components/AppNavigation/sila.js create mode 100644 src/env/router/sila.js create mode 100644 src/env/store/sila.js create mode 100644 src/layouts/_sila/AppLayout.vue create mode 100644 src/layouts/_sila/ConsoleLayout.vue create mode 100644 src/layouts/_sila/LoginLayout.vue create mode 100644 src/views/_sila/ChangePassword/ChangePassword.vue create mode 100644 src/views/_sila/ChangePassword/index.js create mode 100644 src/views/_sila/HardwareStatus/Inventory/Inventory.vue create mode 100644 src/views/_sila/HardwareStatus/Inventory/InventoryServiceIndicator.vue create mode 100644 src/views/_sila/HardwareStatus/Inventory/InventoryTableAssembly.vue create mode 100644 src/views/_sila/HardwareStatus/Inventory/InventoryTableBmcManager.vue create mode 100644 src/views/_sila/HardwareStatus/Inventory/InventoryTableChassis.vue create mode 100644 src/views/_sila/HardwareStatus/Inventory/InventoryTableDimmSlot.vue create mode 100644 src/views/_sila/HardwareStatus/Inventory/InventoryTableFans.vue create mode 100644 src/views/_sila/HardwareStatus/Inventory/InventoryTablePowerSupplies.vue create mode 100644 src/views/_sila/HardwareStatus/Inventory/InventoryTableProcessors.vue create mode 100644 src/views/_sila/HardwareStatus/Inventory/InventoryTableSystem.vue create mode 100644 src/views/_sila/HardwareStatus/Inventory/index.js create mode 100644 src/views/_sila/HardwareStatus/Sensors/Sensors.vue create mode 100644 src/views/_sila/HardwareStatus/Sensors/index.js create mode 100644 src/views/_sila/Login/Login.vue create mode 100644 src/views/_sila/Login/index.js create mode 100644 src/views/_sila/Logs/Dumps/Dumps.vue create mode 100644 src/views/_sila/Logs/Dumps/DumpsForm.vue create mode 100644 src/views/_sila/Logs/Dumps/DumpsModalConfirmation.vue create mode 100644 src/views/_sila/Logs/Dumps/index.js create mode 100644 src/views/_sila/Logs/EventLogs/EventLogs.vue create mode 100644 src/views/_sila/Logs/EventLogs/index.js create mode 100644 src/views/_sila/Logs/PostCodeLogs/PostCodeLogs.vue create mode 100644 src/views/_sila/Logs/PostCodeLogs/index.js create mode 100644 src/views/_sila/Operations/FactoryReset/FactoryReset.vue create mode 100644 src/views/_sila/Operations/FactoryReset/FactoryResetModal.vue create mode 100644 src/views/_sila/Operations/FactoryReset/index.js create mode 100644 src/views/_sila/Operations/Firmware/Firmware.vue create mode 100644 src/views/_sila/Operations/Firmware/FirmwareAlertServerPower.vue create mode 100644 src/views/_sila/Operations/Firmware/FirmwareCardsBmc.vue create mode 100644 src/views/_sila/Operations/Firmware/FirmwareCardsHost.vue create mode 100644 src/views/_sila/Operations/Firmware/FirmwareFormUpdate.vue create mode 100644 src/views/_sila/Operations/Firmware/FirmwareModalSwitchToRunning.vue create mode 100644 src/views/_sila/Operations/Firmware/FirmwareModalUpdateFirmware.vue create mode 100644 src/views/_sila/Operations/Firmware/index.js create mode 100644 src/views/_sila/Operations/KeyClear/KeyClear.vue create mode 100644 src/views/_sila/Operations/KeyClear/index.js create mode 100644 src/views/_sila/Operations/Kvm/Kvm.vue create mode 100644 src/views/_sila/Operations/Kvm/KvmConsole.vue create mode 100644 src/views/_sila/Operations/Kvm/index.js create mode 100644 src/views/_sila/Operations/RebootBmc/RebootBmc.vue create mode 100644 src/views/_sila/Operations/RebootBmc/index.js create mode 100644 src/views/_sila/Operations/SerialOverLan/SerialOverLan.vue create mode 100644 src/views/_sila/Operations/SerialOverLan/SerialOverLanConsole.vue create mode 100644 src/views/_sila/Operations/SerialOverLan/index.js create mode 100644 src/views/_sila/Operations/ServerPowerOperations/BootSettings.vue create mode 100644 src/views/_sila/Operations/ServerPowerOperations/ServerPowerOperations.vue create mode 100644 src/views/_sila/Operations/ServerPowerOperations/index.js create mode 100644 src/views/_sila/Operations/VirtualMedia/ModalConfigureConnection.vue create mode 100644 src/views/_sila/Operations/VirtualMedia/VirtualMedia.vue create mode 100644 src/views/_sila/Operations/VirtualMedia/index.js create mode 100644 src/views/_sila/Overview/Overview.vue create mode 100644 src/views/_sila/Overview/OverviewCard.vue create mode 100644 src/views/_sila/Overview/OverviewDumps.vue create mode 100644 src/views/_sila/Overview/OverviewEvents.vue create mode 100644 src/views/_sila/Overview/OverviewFirmware.vue create mode 100644 src/views/_sila/Overview/OverviewInventory.vue create mode 100644 src/views/_sila/Overview/OverviewNetwork.vue create mode 100644 src/views/_sila/Overview/OverviewPower.vue create mode 100644 src/views/_sila/Overview/OverviewQuickLinks.vue create mode 100644 src/views/_sila/Overview/OverviewServer.vue create mode 100644 src/views/_sila/Overview/index.js create mode 100644 src/views/_sila/PageNotFound/PageNotFound.vue create mode 100644 src/views/_sila/PageNotFound/index.js create mode 100644 src/views/_sila/ProfileSettings/ProfileSettings.vue create mode 100644 src/views/_sila/ProfileSettings/index.js create mode 100644 src/views/_sila/ResourceManagement/Power.vue create mode 100644 src/views/_sila/ResourceManagement/index.js create mode 100644 src/views/_sila/SecurityAndAccess/Certificates/Certificates.vue create mode 100644 src/views/_sila/SecurityAndAccess/Certificates/CsrCountryCodes.js create mode 100644 src/views/_sila/SecurityAndAccess/Certificates/ModalGenerateCsr.vue create mode 100644 src/views/_sila/SecurityAndAccess/Certificates/ModalUploadCertificate.vue create mode 100644 src/views/_sila/SecurityAndAccess/Certificates/index.js create mode 100644 src/views/_sila/SecurityAndAccess/Ldap/Ldap.vue create mode 100644 src/views/_sila/SecurityAndAccess/Ldap/ModalAddRoleGroup.vue create mode 100644 src/views/_sila/SecurityAndAccess/Ldap/TableRoleGroups.vue create mode 100644 src/views/_sila/SecurityAndAccess/Ldap/index.js create mode 100644 src/views/_sila/SecurityAndAccess/Policies/Policies.vue create mode 100644 src/views/_sila/SecurityAndAccess/Policies/index.js create mode 100644 src/views/_sila/SecurityAndAccess/Sessions/Sessions.vue create mode 100644 src/views/_sila/SecurityAndAccess/Sessions/index.js create mode 100644 src/views/_sila/SecurityAndAccess/UserManagement/ModalSettings.vue create mode 100644 src/views/_sila/SecurityAndAccess/UserManagement/ModalUser.vue create mode 100644 src/views/_sila/SecurityAndAccess/UserManagement/TableRoles.vue create mode 100644 src/views/_sila/SecurityAndAccess/UserManagement/UserManagement.vue create mode 100644 src/views/_sila/SecurityAndAccess/UserManagement/index.js create mode 100644 src/views/_sila/Settings/DateTime/DateTime.vue create mode 100644 src/views/_sila/Settings/DateTime/index.js create mode 100644 src/views/_sila/Settings/Network/ModalDns.vue create mode 100644 src/views/_sila/Settings/Network/ModalHostname.vue create mode 100644 src/views/_sila/Settings/Network/ModalIpv4.vue create mode 100644 src/views/_sila/Settings/Network/ModalMacAddress.vue create mode 100644 src/views/_sila/Settings/Network/Network.vue create mode 100644 src/views/_sila/Settings/Network/NetworkGlobalSettings.vue create mode 100644 src/views/_sila/Settings/Network/NetworkInterfaceSettings.vue create mode 100644 src/views/_sila/Settings/Network/TableDns.vue create mode 100644 src/views/_sila/Settings/Network/TableIpv4.vue create mode 100644 src/views/_sila/Settings/Network/index.js create mode 100644 src/views/_sila/Settings/PowerRestorePolicy/PowerRestorePolicy.vue create mode 100644 src/views/_sila/Settings/PowerRestorePolicy/index.js diff --git a/.env.sila b/.env.sila new file mode 100644 index 00000000..f5000278 --- /dev/null +++ b/.env.sila @@ -0,0 +1,12 @@ +NODE_ENV=production +VUE_APP_ENV_NAME="sila" +VUE_APP_COMPANY_NAME="IBS" +VUE_APP_GUI_NAME="BMC System Management" +VUE_APP_SUBSCRIBE_SOCKET_DISABLED="true" +VUE_APP_SWITCH_TO_BACKUP_IMAGE_DISABLED="true" +VUE_APP_MODIFY_SSH_POLICY_DISABLED="true" +VUE_APP_VIRTUAL_MEDIA_LIST_ENABLED="true" +CUSTOM_STYLES="true" +CUSTOM_APP_NAV="true" +CUSTOM_STORE="true" +CUSTOM_ROUTER="true" diff --git a/src/assets/images/_sila/built-on-openbmc-logo.svg b/src/assets/images/_sila/built-on-openbmc-logo.svg new file mode 100644 index 00000000..53e7fdc5 --- /dev/null +++ b/src/assets/images/_sila/built-on-openbmc-logo.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/images/_sila/login-company-logo.svg b/src/assets/images/_sila/login-company-logo.svg new file mode 100644 index 00000000..d0fa158c --- /dev/null +++ b/src/assets/images/_sila/login-company-logo.svg @@ -0,0 +1 @@ +Asset 1 \ No newline at end of file diff --git a/src/assets/images/_sila/logo-header.svg b/src/assets/images/_sila/logo-header.svg new file mode 100644 index 00000000..2dba9c4c --- /dev/null +++ b/src/assets/images/_sila/logo-header.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/styles/_obmc-sila.scss b/src/assets/styles/_obmc-sila.scss new file mode 100644 index 00000000..ea2507f0 --- /dev/null +++ b/src/assets/styles/_obmc-sila.scss @@ -0,0 +1,6 @@ +// Vendor styles +@import "./bootstrap"; +@import "~bootstrap-vue/src/index"; + +// IBS BMC styles +@import "./bmc/_sila"; diff --git a/src/assets/styles/bmc/_sila/_alert.scss b/src/assets/styles/bmc/_sila/_alert.scss new file mode 100644 index 00000000..0e78ba64 --- /dev/null +++ b/src/assets/styles/bmc/_sila/_alert.scss @@ -0,0 +1,70 @@ +.alert { + display: flex; + padding: $spacer; + border-width: 0 0 0 3px; + color: gray("800"); + margin-bottom: $spacer; + + &.small { + padding: $spacer / 2; + font-size: 1rem; + } + + .close { + font-weight: 300; + opacity: 1; + } + + .alert-icon { + display: inline-flex; + align-items: flex-start; + margin-right: $spacer; + margin-bottom: $spacer; + + @include media-breakpoint-up(sm) { + margin-bottom: 0; + } + } + + .alert-content { + flex: 1 1 auto; + } + + .alert-title { + margin-bottom: $spacer / 2; + } + + .alert-msg { + p + p { + margin-bottom: $spacer; + } + + p:last-of-type { + margin-bottom: 0; + } + } + + &.alert-info { + border-left-color: theme-color("info"); + background-color: theme-color-light("info"); + fill: theme-color("info"); + } + + &.alert-success { + border-left-color: theme-color("success"); + background-color: theme-color-light("success"); + fill: theme-color("success"); + } + + &.alert-danger { + border-left-color: theme-color("danger"); + background-color: theme-color-light("danger"); + fill: theme-color("danger"); + } + + &.alert-warning { + border-left-color: theme-color("warning"); + background-color: theme-color-light("warning"); + fill: theme-color("warning"); + } + } \ No newline at end of file diff --git a/src/assets/styles/bmc/_sila/_badge.scss b/src/assets/styles/bmc/_sila/_badge.scss new file mode 100644 index 00000000..0b88b499 --- /dev/null +++ b/src/assets/styles/bmc/_sila/_badge.scss @@ -0,0 +1,21 @@ +.badge-pill { + // Need to explicitly set border-radius + // for pill variant because global $enable-rounded + // Bootstrap setting removes rounded pill style + border-radius: 10rem; + fill: currentColor; + font-weight: 400; + line-height: 1.5; + display: inline-flex; + .close { + font-size: 1em; + margin-left: $spacer/2; + font-weight: inherit; + color: inherit; + } +} + +.badge-primary { + background-color: theme-color-light("info"); + color: theme-color("info"); +} \ No newline at end of file diff --git a/src/assets/styles/bmc/_sila/_base.scss b/src/assets/styles/bmc/_sila/_base.scss new file mode 100644 index 00000000..c11e046c --- /dev/null +++ b/src/assets/styles/bmc/_sila/_base.scss @@ -0,0 +1,50 @@ +dt, +legend, +label { + color: gray("800"); + font-size: 14px; + font-weight: 400; + line-height: 1.4285; +} + +h1, +.h1 { + font-size: 2.625rem; + font-weight: 300; + line-height: 1.238; +} + +h2, +.h2 { + font-size: 2.25rem; + font-weight: 300; + line-height: 1.3333; +} + +h3, +.h3 { + font-size: 1.75rem; + font-weight: 400; + line-height: 1.2857; +} + +h4, +.h4 { + font-size: 1.25rem; + font-weight: 400; + line-height: 1.3; +} + +h5, +.h5 { + font-size: 1rem; + font-weight: 500; + line-height: 1.375; +} + +h6, +.h6 { + font-size: 0.875rem; + font-weight: 500; + line-height: 1.2857; +} diff --git a/src/assets/styles/bmc/_sila/_bootstrap-grid.scss b/src/assets/styles/bmc/_sila/_bootstrap-grid.scss new file mode 100644 index 00000000..7ad7c81b --- /dev/null +++ b/src/assets/styles/bmc/_sila/_bootstrap-grid.scss @@ -0,0 +1,8 @@ +.container-xl { + // Fluid layout container class sets 100% + // width until xl breakpoint. Once a max-width + // is set, setting the left margin to 0 is needed + // so the content doesn't center align + // https://bootstrap-vue.org/docs/components/layout#fluid-width-container + margin-left: 0; +} \ No newline at end of file diff --git a/src/assets/styles/bmc/_sila/_buttons.scss b/src/assets/styles/bmc/_sila/_buttons.scss new file mode 100644 index 00000000..2a7b8169 --- /dev/null +++ b/src/assets/styles/bmc/_sila/_buttons.scss @@ -0,0 +1,82 @@ +.btn { + padding-top: $spacer / 2; + padding-right: $spacer; + padding-bottom: $spacer / 2; + padding-left: $spacer; + display: inline-flex; + align-items: center; + justify-content: space-around; + svg { + margin-right: $spacer / 4; + } + &:disabled { + color: gray("600"); + fill: currentColor; + box-shadow: none !important; + &:not(.btn-link) { + border-color: gray("400"); + background-color: gray("400"); + } + } +} + +.btn-primary { + fill: currentColor; + &:focus, + &:not(:disabled):not(.disabled):active:focus { + border-color: $white; + box-shadow: inset 0 0 0 3px theme-color('primary'), inset 0 0 0 5px $white; + } +} + +.btn-secondary { + fill: currentColor; + &:focus, + &:not(:disabled):not(.disabled):active:focus { + border-color: $white; + box-shadow: inset 0 0 0 3px theme-color('secondary'), inset 0 0 0 5px $white; + } +} + +// Global style for all button link +.btn-link { + font-weight: $headings-font-weight; + fill: theme-color("primary"); + text-decoration: none !important; + &:hover { + background-color: gray("200"); + color: theme-color("primary"); + } + &:active { + background-color: gray("300"); + } + &:focus { + box-shadow: inset 0 0 0 2px theme-color("primary"); + color: theme-color("primary"); + outline: none; + } + &:disabled { + box-shadow: $btn-focus-box-shadow; + } +} + +// Icon only buttons +.btn-icon-only svg { + margin-right: 0; +} + +// Datepicker, clear search and Password toggle buttons +.input-action-btn, +.btn-datepicker { + position: absolute; + right: 0; + top: 0; + z-index: $zindex-dropdown + 1; +} + +// Contain input buttons within input +.btn-datepicker .dropdown-toggle, +.input-action-btn { + padding: 7px; + margin: 1px; +} \ No newline at end of file diff --git a/src/assets/styles/bmc/_sila/_calendar.scss b/src/assets/styles/bmc/_sila/_calendar.scss new file mode 100644 index 00000000..0307a6ce --- /dev/null +++ b/src/assets/styles/bmc/_sila/_calendar.scss @@ -0,0 +1,17 @@ +.b-calendar-nav { + .btn { + &:hover { + background: none; + color: theme-color("dark"); + } + } +} + +.b-calendar-grid .btn { + display: inline-block; +} + +// Date picker focus +.b-calendar .b-calendar-grid { + padding: 6px 12px; +} \ No newline at end of file diff --git a/src/assets/styles/bmc/_sila/_card.scss b/src/assets/styles/bmc/_sila/_card.scss new file mode 100644 index 00000000..5f2a5962 --- /dev/null +++ b/src/assets/styles/bmc/_sila/_card.scss @@ -0,0 +1,5 @@ +.card { + .bg-success { + background-color: theme-color-light('success')!important; + } +} \ No newline at end of file diff --git a/src/assets/styles/bmc/_sila/_dropdown.scss b/src/assets/styles/bmc/_sila/_dropdown.scss new file mode 100644 index 00000000..969c4c68 --- /dev/null +++ b/src/assets/styles/bmc/_sila/_dropdown.scss @@ -0,0 +1,31 @@ +// Make calendar visible over the table +.dropdown-menu { + z-index: $zindex-dropdown + 1; + padding: 0; +} +.dropdown-item { + padding-left: $spacer/4; + margin-top: -1 * $spacer/4; +} +.b-dropdown-form { + padding: $spacer/2; + .form-group { + margin-bottom: $spacer/2; + } +} +// Table filter dropdown clear button style +.table-filter { + .dropdown-item { + &:hover { + background-color: gray("200"); + } + &:active { + background-color: gray("300"); + } + &:focus { + outline: none; + background-color: transparent; + box-shadow: inset 0 0 0 2px theme-color("primary"); + } + } +} \ No newline at end of file diff --git a/src/assets/styles/bmc/_sila/_forms.scss b/src/assets/styles/bmc/_sila/_forms.scss new file mode 100644 index 00000000..428a40c2 --- /dev/null +++ b/src/assets/styles/bmc/_sila/_forms.scss @@ -0,0 +1,132 @@ +// Helper text +.form-text { + font-size: $form-label-font-size; + line-height: $form-line-height; + margin-top: -$spacer / 4; + margin-bottom: $spacer / 2; + color: gray("700")!important; +} + +// Legend label +.col-form-label { + color: gray("800"); + font-size: $form-label-font-size; + line-height: $form-line-height; +} + +.form-group { + margin-bottom: $spacer * 2; +} + +.custom-select, +.form-control, +.input-group-text { + border-color: gray("500") !important; + background-color: gray("100"); +} + +.custom-select, +.form-control { + &:active { + border: 1px solid $primary!important; + } + &:focus { + color: theme-color("dark"); + background-color: gray("100"); + box-shadow: inset 0 0 0 3px gray("100"), inset 0 0 0 5px $primary !important; + } + &:disabled { + background-color: gray("400"); + color: gray("600"); + } + &::placeholder { + color: gray("600"); + } + &.is-invalid, + &:invalid { + border: 1px solid theme-color("danger") !important; + } +} + +.custom-select, +.custom-control-label, +.form-control { + color: theme-color("dark") !important; + font-size: 1rem; +} + +// Inverted form colors +.form-background { + background-color: gray("100"); + .custom-select, + .form-control { + background-color: $white; + &:focus { + background-color: $white; + } + &:disabled { + background-color: gray("400"); + color: gray("600"); + } + } +} + +.invalid-feedback { + font-size: $form-label-font-size; + line-height: $form-line-height; +} + +.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after, +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before, +.custom-control-input:checked ~ .custom-control-label::before { + background-color: $black; + border-color: $black; + cursor: pointer; +} + +.custom-control { + .custom-control-input[disabled=disabled] { + & + .custom-control-label { + // Disabled label for checkbox, radio, + // switch bootstrap form components + color: gray("600")!important; + } + } +} + +.custom-control-input:focus ~ .custom-control-label::before{ + box-shadow: 0 0 0 2px theme-color("primary"); +} + +.custom-control-label::after { + cursor: pointer; +} + +.b-form-tag-remove { + // X button to remove tag + font-weight: normal; +} + +.b-form-tags-button { + // Add button inside input field + white-space: nowrap; + margin-right: -$spacer; + &.btn-link-primary { + color: theme-color("primary"); + fill: currentColor; + } +} + +// Form validation icon + .form-control.is-invalid, + .form-control.is-valid { + background-position: right 1rem bottom 50%; + } + +// Form validation icon with datepicker or password toggle icon +.form-control-with-button { + &.is-invalid, + &.is-valid { + background-position: right 3rem bottom 50%; + } +} diff --git a/src/assets/styles/bmc/_sila/_index.scss b/src/assets/styles/bmc/_sila/_index.scss new file mode 100644 index 00000000..74594e35 --- /dev/null +++ b/src/assets/styles/bmc/_sila/_index.scss @@ -0,0 +1,18 @@ +// OpenBMC Global Style Overrides of out of the box +// Bootstrap styles +@import "./alert"; +@import "./badge"; +@import "./base"; +@import "./bootstrap-grid"; +@import "./buttons"; +@import "./calendar"; +@import "./card"; +@import "./dropdown"; +@import "./forms"; +@import "./kvm"; +@import "./modal"; +@import "./pagination"; +@import "./section-divider"; +@import "./sol"; +@import "./tables"; +@import "./toasts"; \ No newline at end of file diff --git a/src/assets/styles/bmc/_sila/_kvm.scss b/src/assets/styles/bmc/_sila/_kvm.scss new file mode 100644 index 00000000..a7223844 --- /dev/null +++ b/src/assets/styles/bmc/_sila/_kvm.scss @@ -0,0 +1,12 @@ +#terminal-kvm { + height: calc(100vh - 300px); + display: flex; + &.full-window { + height: calc(100vh - 80px); + } + div:nth-child(1) { + background: transparent !important; + display: block !important; + overflow: hidden !important; + } +} \ No newline at end of file diff --git a/src/assets/styles/bmc/_sila/_modal.scss b/src/assets/styles/bmc/_sila/_modal.scss new file mode 100644 index 00000000..e2fa0cd8 --- /dev/null +++ b/src/assets/styles/bmc/_sila/_modal.scss @@ -0,0 +1,12 @@ +.modal-header { + .close { + font-weight: normal; + color: theme-color("dark"); + opacity: 1; + } + .modal-title { + font-size: 1.25rem; + font-weight: normal; + line-height: 1.3; + } +} diff --git a/src/assets/styles/bmc/_sila/_pagination.scss b/src/assets/styles/bmc/_sila/_pagination.scss new file mode 100644 index 00000000..d38ce5d2 --- /dev/null +++ b/src/assets/styles/bmc/_sila/_pagination.scss @@ -0,0 +1,24 @@ +.table-pagination-select { + display: flex; + flex-direction: row-reverse; + justify-content: flex-end; + select { + width: fit-content; + } + label { + margin-left: $spacer; + line-height: $spacer * 2; + } +} + +.b-pagination { + @include media-breakpoint-up(sm) { + justify-content: flex-end; + } + .page-item.active button { + color: theme-color("dark"); + background-color: color("white"); + border-color: $border-color; + box-shadow: inset 0px -3px theme-color("primary"); + } +} \ No newline at end of file diff --git a/src/assets/styles/bmc/_sila/_section-divider.scss b/src/assets/styles/bmc/_sila/_section-divider.scss new file mode 100644 index 00000000..620c9e56 --- /dev/null +++ b/src/assets/styles/bmc/_sila/_section-divider.scss @@ -0,0 +1,3 @@ +.section-divider { + border-bottom: 1px solid gray('400'); + } \ No newline at end of file diff --git a/src/assets/styles/bmc/_sila/_sol.scss b/src/assets/styles/bmc/_sila/_sol.scss new file mode 100644 index 00000000..6987cf79 --- /dev/null +++ b/src/assets/styles/bmc/_sila/_sol.scss @@ -0,0 +1,3 @@ +#terminal .xterm .xterm-viewport { + overflow: auto; +} \ No newline at end of file diff --git a/src/assets/styles/bmc/_sila/_tables.scss b/src/assets/styles/bmc/_sila/_tables.scss new file mode 100644 index 00000000..e8b5a832 --- /dev/null +++ b/src/assets/styles/bmc/_sila/_tables.scss @@ -0,0 +1,171 @@ +.table { + position: relative; + z-index: $zindex-dropdown; + + td { + border-top: 1px solid gray("300"); + border-bottom: 1px solid gray("300"); + &:first-of-type { + border-left: 1px solid gray("300"); + } + &:last-of-type { + border-right: 1px solid gray("300"); + } + vertical-align: middle; + + // Table action buttons + .btn-link { + width: 40px; + height: 40px; + padding: 5px !important; + display: inline-flex; + justify-content: center; + align-items: center; + } + } + + // thead-light added for specificity + .thead-light th { + vertical-align: middle; + border-top: 1px solid gray("300"); + border-bottom: 1px solid gray("300"); + &:first-of-type { + border-left: 1px solid gray("300"); + } + &:last-of-type { + border-right: 1px solid gray("300"); + } + color: theme-color("dark"); + &:focus { + outline: none; + } + } + + .status-icon svg { + width: 1rem; + height: auto; + } + + .b-table-has-details { + td { + border-bottom: none; + } + .table-row-expand svg { + transform: rotate(180deg); + } + } + + .b-table-details { + background-color: theme-color("light"); + td { + padding-left: calc(50px + (#{$table-cell-padding} * 2)); + padding-right: calc(50px + (#{$table-cell-padding} * 2)); + } + dl { + margin: 0; + } + dt { + float: left; + clear: left; + margin-right: $spacer / 2; + } + dd { + line-height: 1.2 + } + } + + .table-row-expand { + width: 50px; + .btn { + padding: 0; + width: 50px; + } + svg { + fill: theme-color("dark"); + } + } + .b-table-sort-icon-left { + background-position: left calc(1.5rem / 2) center !important; + padding-left: calc(1.2rem + 0.65em) !important; + &:focus { + outline: none; + box-shadow: inset 0 0 0 2px theme-color('primary') !important; + } + &:hover { + background-color: theme-color-dark('light'); + } + } +} + +.b-table-sticky-header td { + border-top: none; +} + +// Table stacked style for small screen only +@include media-breakpoint-down(xs) { + .b-table-stacked-sm { + border: 1px solid gray("300"); + + tr { + + &:not(:first-child) > td[aria-colindex='1'] { + border-top: 1px solid gray("300"); + padding-top: 0.625rem; + } + + &:not(.b-table-empty-row) { + position: relative; // Restrict background color to get zebra striping for the row + + &::before, + &::after { + position: absolute; + top: 0; + height: 100%; + z-index: -1; + } + + &:before { + content: ''; + background-color: gray("200"); + width: 40%; + border-right: 1px solid gray("300"); + } + + &:after { + content: ''; + right: 0; + width: 60%; + } + + &:nth-child(even)::after { + background-color: gray("100"); // Zebra striping for the row + } + } + + td { + border: 0; + padding: 0.75rem; + text-align: left !important; + + &:last-of-type { + border-right: 0; + } + } + } + } + + .table.b-table.b-table-stacked-sm > tbody > tr > [data-label] { + &::before { + text-align: left; + padding-left: $spacer /2; + } + + > div { + padding-left: 1rem; + } + } + + .table.b-table.b-table-stacked-sm > tbody > tr > :first-child { + border-top-width: 1px; + } +} diff --git a/src/assets/styles/bmc/_sila/_toasts.scss b/src/assets/styles/bmc/_sila/_toasts.scss new file mode 100644 index 00000000..4e2ad7fa --- /dev/null +++ b/src/assets/styles/bmc/_sila/_toasts.scss @@ -0,0 +1,61 @@ +.b-toaster { + top: 75px!important; // make sure toasts do not hide top header +} + +// Toast component and status icon style +.toast { + padding: $spacer/2 $spacer/2 $spacer/2 $spacer+2; + border-width: 0 0 0 3px; + box-shadow: $box-shadow; + .close { + font-weight: 300; + opacity: 1; + } +} + +.toast-header { + display: flex; + align-items: flex-start; + background-color: inherit!important; //override specificity + border: none; + color: theme-color("dark")!important; //override specificity + padding-bottom: 0; +} + +.toast-icon { + display: flex; + margin-right: 1rem; + + svg { + margin-left: -2.5rem; + } + + + .close { + line-height: .9; + } +} + +.toast-body { + color: theme-color("dark"); + padding-top: 0; +} + +.b-toast-success .toast { + border-left-color: theme-color("success")!important; + background-color: theme-color-light("success")!important; +} + +.b-toast-info .toast { + border-left-color: theme-color("info")!important; + background-color: theme-color-light("info")!important; +} + +.b-toast-danger .toast { + border-left-color: theme-color("danger")!important; + background-color: theme-color-light("danger")!important; +} + +.b-toast-warning .toast { + border-left-color: theme-color("warning")!important; + background-color: theme-color-light("warning")!important; +} \ No newline at end of file diff --git a/src/components/_sila/AppHeader/AppHeader.vue b/src/components/_sila/AppHeader/AppHeader.vue new file mode 100644 index 00000000..84e4588f --- /dev/null +++ b/src/components/_sila/AppHeader/AppHeader.vue @@ -0,0 +1,384 @@ + + + + + diff --git a/src/components/_sila/AppHeader/index.js b/src/components/_sila/AppHeader/index.js new file mode 100644 index 00000000..e180e80f --- /dev/null +++ b/src/components/_sila/AppHeader/index.js @@ -0,0 +1,2 @@ +import AppHeader from './AppHeader'; +export default AppHeader; diff --git a/src/components/_sila/AppNavigation/AppNavigation.vue b/src/components/_sila/AppNavigation/AppNavigation.vue new file mode 100644 index 00000000..acfabe76 --- /dev/null +++ b/src/components/_sila/AppNavigation/AppNavigation.vue @@ -0,0 +1,255 @@ + + + + + diff --git a/src/components/_sila/AppNavigation/AppNavigationMixin.js b/src/components/_sila/AppNavigation/AppNavigationMixin.js new file mode 100644 index 00000000..bbbbb1ee --- /dev/null +++ b/src/components/_sila/AppNavigation/AppNavigationMixin.js @@ -0,0 +1,182 @@ +import IconDashboard from '@carbon/icons-vue/es/dashboard/16'; +import IconTextLinkAnalysis from '@carbon/icons-vue/es/text-link--analysis/16'; +import IconDataCheck from '@carbon/icons-vue/es/data--check/16'; +import IconSettingsAdjust from '@carbon/icons-vue/es/settings--adjust/16'; +import IconSettings from '@carbon/icons-vue/es/settings/16'; +import IconSecurity from '@carbon/icons-vue/es/security/16'; +import IconChevronUp from '@carbon/icons-vue/es/chevron--up/16'; +import IconDataBase from '@carbon/icons-vue/es/data--base--alt/16'; + +const AppNavigationMixin = { + components: { + iconOverview: IconDashboard, + iconLogs: IconTextLinkAnalysis, + iconHealth: IconDataCheck, + iconControl: IconSettingsAdjust, + iconSettings: IconSettings, + iconSecurityAndAccess: IconSecurity, + iconExpand: IconChevronUp, + iconResourceManagement: IconDataBase, + }, + data() { + return { + navigationItems: [ + { + id: 'overview', + label: this.$t('appNavigation.overview'), + route: '/', + icon: 'iconOverview', + }, + { + id: 'logs', + label: this.$t('appNavigation.logs'), + icon: 'iconLogs', + children: [ + { + id: 'event-logs', + label: this.$t('appNavigation.eventLogs'), + route: '/logs/event-logs', + }, + { + id: 'post-code-logs', + label: this.$t('appNavigation.postCodeLogs'), + route: '/logs/post-code-logs', + }, + ], + }, + { + id: 'hardware-status', + label: this.$t('appNavigation.hardwareStatus'), + icon: 'iconHealth', + children: [ + { + id: 'inventory', + label: this.$t('appNavigation.inventory'), + route: '/hardware-status/inventory', + }, + { + id: 'sensors', + label: this.$t('appNavigation.sensors'), + route: '/hardware-status/sensors', + }, + ], + }, + { + id: 'operations', + label: this.$t('appNavigation.operations'), + icon: 'iconControl', + children: [ + { + id: 'factory-reset', + label: this.$t('appNavigation.factoryReset'), + route: '/operations/factory-reset', + }, + { + id: 'kvm', + label: this.$t('appNavigation.kvm'), + route: '/operations/kvm', + }, + { + id: 'key-clear', + label: this.$t('appNavigation.keyClear'), + route: '/operations/key-clear', + }, + { + id: 'firmware', + label: this.$t('appNavigation.firmware'), + route: '/operations/firmware', + }, + { + id: 'reboot-bmc', + label: this.$t('appNavigation.rebootBmc'), + route: '/operations/reboot-bmc', + }, + { + id: 'serial-over-lan', + label: this.$t('appNavigation.serialOverLan'), + route: '/operations/serial-over-lan', + }, + { + id: 'server-power-operations', + label: this.$t('appNavigation.serverPowerOperations'), + route: '/operations/server-power-operations', + }, + { + id: 'virtual-media', + label: this.$t('appNavigation.virtualMedia'), + route: '/operations/virtual-media', + }, + ], + }, + { + id: 'settings', + label: this.$t('appNavigation.settings'), + icon: 'iconSettings', + children: [ + { + id: 'date-time', + label: this.$t('appNavigation.dateTime'), + route: '/settings/date-time', + }, + { + id: 'network', + label: this.$t('appNavigation.network'), + route: '/settings/network', + }, + { + id: 'power-restore-policy', + label: this.$t('appNavigation.powerRestorePolicy'), + route: '/settings/power-restore-policy', + }, + ], + }, + { + id: 'security-and-access', + label: this.$t('appNavigation.securityAndAccess'), + icon: 'iconSecurityAndAccess', + children: [ + { + id: 'sessions', + label: this.$t('appNavigation.sessions'), + route: '/security-and-access/sessions', + }, + { + id: 'ldap', + label: this.$t('appNavigation.ldap'), + route: '/security-and-access/ldap', + }, + { + id: 'user-management', + label: this.$t('appNavigation.userManagement'), + route: '/security-and-access/user-management', + }, + { + id: 'policies', + label: this.$t('appNavigation.policies'), + route: '/security-and-access/policies', + }, + { + id: 'certificates', + label: this.$t('appNavigation.certificates'), + route: '/security-and-access/certificates', + }, + ], + }, + { + id: 'resource-management', + label: this.$t('appNavigation.resourceManagement'), + icon: 'iconResourceManagement', + children: [ + { + id: 'power', + label: this.$t('appNavigation.power'), + route: '/resource-management/power', + }, + ], + }, + ], + }; + }, +}; + +export default AppNavigationMixin; diff --git a/src/components/_sila/AppNavigation/index.js b/src/components/_sila/AppNavigation/index.js new file mode 100644 index 00000000..88fe8eb6 --- /dev/null +++ b/src/components/_sila/AppNavigation/index.js @@ -0,0 +1,2 @@ +import AppNavigation from './AppNavigation'; +export default AppNavigation; diff --git a/src/components/_sila/Global/Alert.vue b/src/components/_sila/Global/Alert.vue new file mode 100644 index 00000000..e8de9e27 --- /dev/null +++ b/src/components/_sila/Global/Alert.vue @@ -0,0 +1,47 @@ + + + diff --git a/src/components/_sila/Global/ButtonBackToTop.vue b/src/components/_sila/Global/ButtonBackToTop.vue new file mode 100644 index 00000000..9160c7b7 --- /dev/null +++ b/src/components/_sila/Global/ButtonBackToTop.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/src/components/_sila/Global/FormFile.vue b/src/components/_sila/Global/FormFile.vue new file mode 100644 index 00000000..cf713acf --- /dev/null +++ b/src/components/_sila/Global/FormFile.vue @@ -0,0 +1,119 @@ + + + + + diff --git a/src/components/_sila/Global/InfoTooltip.vue b/src/components/_sila/Global/InfoTooltip.vue new file mode 100644 index 00000000..c91109d1 --- /dev/null +++ b/src/components/_sila/Global/InfoTooltip.vue @@ -0,0 +1,35 @@ + + + + + diff --git a/src/components/_sila/Global/InputPasswordToggle.vue b/src/components/_sila/Global/InputPasswordToggle.vue new file mode 100644 index 00000000..d2c0d4a6 --- /dev/null +++ b/src/components/_sila/Global/InputPasswordToggle.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/src/components/_sila/Global/LoadingBar.vue b/src/components/_sila/Global/LoadingBar.vue new file mode 100644 index 00000000..0e9551b5 --- /dev/null +++ b/src/components/_sila/Global/LoadingBar.vue @@ -0,0 +1,93 @@ + + + + + diff --git a/src/components/_sila/Global/PageContainer.vue b/src/components/_sila/Global/PageContainer.vue new file mode 100644 index 00000000..ab4adb63 --- /dev/null +++ b/src/components/_sila/Global/PageContainer.vue @@ -0,0 +1,37 @@ + + + + diff --git a/src/components/_sila/Global/PageSection.vue b/src/components/_sila/Global/PageSection.vue new file mode 100644 index 00000000..dd39ddd5 --- /dev/null +++ b/src/components/_sila/Global/PageSection.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/src/components/_sila/Global/PageTitle.vue b/src/components/_sila/Global/PageTitle.vue new file mode 100644 index 00000000..45c75edb --- /dev/null +++ b/src/components/_sila/Global/PageTitle.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/src/components/_sila/Global/Search.vue b/src/components/_sila/Global/Search.vue new file mode 100644 index 00000000..ac8f9bfb --- /dev/null +++ b/src/components/_sila/Global/Search.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/src/components/_sila/Global/StatusIcon.vue b/src/components/_sila/Global/StatusIcon.vue new file mode 100644 index 00000000..4552633e --- /dev/null +++ b/src/components/_sila/Global/StatusIcon.vue @@ -0,0 +1,61 @@ + + + + + diff --git a/src/components/_sila/Global/TableCellCount.vue b/src/components/_sila/Global/TableCellCount.vue new file mode 100644 index 00000000..acb4d443 --- /dev/null +++ b/src/components/_sila/Global/TableCellCount.vue @@ -0,0 +1,35 @@ + + + diff --git a/src/components/_sila/Global/TableDateFilter.vue b/src/components/_sila/Global/TableDateFilter.vue new file mode 100644 index 00000000..aa10cb5c --- /dev/null +++ b/src/components/_sila/Global/TableDateFilter.vue @@ -0,0 +1,165 @@ + + + diff --git a/src/components/_sila/Global/TableFilter.vue b/src/components/_sila/Global/TableFilter.vue new file mode 100644 index 00000000..7c66bea6 --- /dev/null +++ b/src/components/_sila/Global/TableFilter.vue @@ -0,0 +1,114 @@ + + + + + diff --git a/src/components/_sila/Global/TableRowAction.vue b/src/components/_sila/Global/TableRowAction.vue new file mode 100644 index 00000000..549f1b52 --- /dev/null +++ b/src/components/_sila/Global/TableRowAction.vue @@ -0,0 +1,112 @@ + + + diff --git a/src/components/_sila/Global/TableToolbar.vue b/src/components/_sila/Global/TableToolbar.vue new file mode 100644 index 00000000..5235feae --- /dev/null +++ b/src/components/_sila/Global/TableToolbar.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/src/components/_sila/Global/TableToolbarExport.vue b/src/components/_sila/Global/TableToolbarExport.vue new file mode 100644 index 00000000..69646ea6 --- /dev/null +++ b/src/components/_sila/Global/TableToolbarExport.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/components/_sila/Mixins/BVPaginationMixin.js b/src/components/_sila/Mixins/BVPaginationMixin.js new file mode 100644 index 00000000..4ccf6f2c --- /dev/null +++ b/src/components/_sila/Mixins/BVPaginationMixin.js @@ -0,0 +1,34 @@ +import i18n from '@/i18n'; +export const currentPage = 1; +export const perPage = 20; +export const itemsPerPageOptions = [ + { + value: 10, + text: '10', + }, + { + value: 20, + text: '20', + }, + { + value: 30, + text: '30', + }, + { + value: 40, + text: '40', + }, + { + value: 0, + text: i18n.t('global.table.viewAll'), + }, +]; +const BVPaginationMixin = { + methods: { + getTotalRowCount(count) { + return this.perPage === 0 ? 0 : count; + }, + }, +}; + +export default BVPaginationMixin; diff --git a/src/components/_sila/Mixins/BVTableSelectableMixin.js b/src/components/_sila/Mixins/BVTableSelectableMixin.js new file mode 100644 index 00000000..b4f0b953 --- /dev/null +++ b/src/components/_sila/Mixins/BVTableSelectableMixin.js @@ -0,0 +1,41 @@ +export const selectedRows = []; +export const tableHeaderCheckboxModel = false; +export const tableHeaderCheckboxIndeterminate = false; + +const BVTableSelectableMixin = { + methods: { + clearSelectedRows(tableRef) { + if (tableRef) tableRef.clearSelected(); + }, + toggleSelectRow(tableRef, rowIndex) { + if (tableRef && rowIndex !== undefined) { + tableRef.isRowSelected(rowIndex) + ? tableRef.unselectRow(rowIndex) + : tableRef.selectRow(rowIndex); + } + }, + onRowSelected(selectedRows, totalRowsCount) { + if (selectedRows && totalRowsCount !== undefined) { + this.selectedRows = selectedRows; + if (selectedRows.length === 0) { + this.tableHeaderCheckboxIndeterminate = false; + this.tableHeaderCheckboxModel = false; + } else if (selectedRows.length === totalRowsCount) { + this.tableHeaderCheckboxIndeterminate = false; + this.tableHeaderCheckboxModel = true; + } else { + this.tableHeaderCheckboxIndeterminate = true; + this.tableHeaderCheckboxModel = true; + } + } + }, + onChangeHeaderCheckbox(tableRef) { + if (tableRef) { + if (this.tableHeaderCheckboxModel) tableRef.selectAllRows(); + else tableRef.clearSelected(); + } + }, + }, +}; + +export default BVTableSelectableMixin; diff --git a/src/components/_sila/Mixins/BVToastMixin.js b/src/components/_sila/Mixins/BVToastMixin.js new file mode 100644 index 00000000..a04ef438 --- /dev/null +++ b/src/components/_sila/Mixins/BVToastMixin.js @@ -0,0 +1,115 @@ +import StatusIcon from '../Global/StatusIcon'; + +const BVToastMixin = { + components: { + StatusIcon, + }, + methods: { + $_BVToastMixin_createTitle(title, status) { + const statusIcon = this.$createElement('StatusIcon', { + props: { status }, + }); + const titleWithIcon = this.$createElement( + 'strong', + { class: 'toast-icon' }, + [statusIcon, title] + ); + return titleWithIcon; + }, + $_BVToastMixin_createBody(messageBody) { + if (Array.isArray(messageBody)) { + return messageBody.map((message) => + this.$createElement('p', { class: 'mb-0' }, message) + ); + } else { + return [this.$createElement('p', { class: 'mb-0' }, messageBody)]; + } + }, + $_BVToastMixin_createTimestamp() { + const timestamp = this.$options.filters.formatTime(new Date()); + return this.$createElement('p', { class: 'mt-3 mb-0' }, timestamp); + }, + $_BVToastMixin_createRefreshAction() { + return this.$createElement( + 'BLink', + { + class: 'd-inline-block mt-3', + on: { + click: () => { + this.$root.$emit('refresh-application'); + }, + }, + }, + this.$t('global.action.refresh') + ); + }, + $_BVToastMixin_initToast(body, title, variant) { + this.$root.$bvToast.toast(body, { + title, + variant, + autoHideDelay: 10000, //auto hide in milliseconds + noAutoHide: variant !== 'success', + isStatus: true, + solid: true, + }); + }, + successToast( + message, + { + title: t = this.$t('global.status.success'), + timestamp, + refreshAction, + } = {} + ) { + const body = this.$_BVToastMixin_createBody(message); + const title = this.$_BVToastMixin_createTitle(t, 'success'); + if (refreshAction) body.push(this.$_BVToastMixin_createRefreshAction()); + if (timestamp) body.push(this.$_BVToastMixin_createTimestamp()); + this.$_BVToastMixin_initToast(body, title, 'success'); + }, + errorToast( + message, + { + title: t = this.$t('global.status.error'), + timestamp, + refreshAction, + } = {} + ) { + const body = this.$_BVToastMixin_createBody(message); + const title = this.$_BVToastMixin_createTitle(t, 'danger'); + if (refreshAction) body.push(this.$_BVToastMixin_createRefreshAction()); + if (timestamp) body.push(this.$_BVToastMixin_createTimestamp()); + this.$_BVToastMixin_initToast(body, title, 'danger'); + }, + warningToast( + message, + { + title: t = this.$t('global.status.warning'), + timestamp, + refreshAction, + } = {} + ) { + const body = this.$_BVToastMixin_createBody(message); + const title = this.$_BVToastMixin_createTitle(t, 'warning'); + if (refreshAction) body.push(this.$_BVToastMixin_createRefreshAction()); + if (timestamp) body.push(this.$_BVToastMixin_createTimestamp()); + this.$_BVToastMixin_initToast(body, title, 'warning'); + }, + infoToast( + message, + { + title: t = this.$t('global.status.informational'), + timestamp, + refreshAction, + } = {} + ) { + const body = this.$_BVToastMixin_createBody(message); + const title = this.$_BVToastMixin_createTitle(t, 'info'); + if (refreshAction) body.push(this.$_BVToastMixin_createRefreshAction()); + if (timestamp) body.push(this.$_BVToastMixin_createTimestamp()); + this.$_BVToastMixin_initToast(body, title, 'info'); + }, + }, +}; + +export default BVToastMixin; diff --git a/src/components/_sila/Mixins/DataFormatterMixin.js b/src/components/_sila/Mixins/DataFormatterMixin.js new file mode 100644 index 00000000..5ce79327 --- /dev/null +++ b/src/components/_sila/Mixins/DataFormatterMixin.js @@ -0,0 +1,30 @@ +const DataFormatterMixin = { + methods: { + dataFormatter(value) { + if (value === undefined || value === null || value === '') { + return '--'; + } else if (typeof value === 'number') { + return parseFloat(value.toFixed(3)); + } else { + return value; + } + }, + statusIcon(status) { + switch (status) { + case 'OK': + return 'success'; + case 'Warning': + return 'warning'; + case 'Critical': + return 'danger'; + default: + return ''; + } + }, + dataFormatterArray(value) { + return value.join(', '); + }, + }, +}; + +export default DataFormatterMixin; diff --git a/src/components/_sila/Mixins/JumpLinkMixin.js b/src/components/_sila/Mixins/JumpLinkMixin.js new file mode 100644 index 00000000..b038527b --- /dev/null +++ b/src/components/_sila/Mixins/JumpLinkMixin.js @@ -0,0 +1,27 @@ +const JumpLinkMixin = { + methods: { + setFocus(element) { + element.setAttribute('tabindex', '-1'); + element.focus(); + // Reason: https://axesslab.com/skip-links/#update-3-a-comment-from-gov-uk + element.removeAttribute('tabindex'); + }, + scrollToOffset(event) { + // Select element to scroll to + const ref = event.target.getAttribute('data-ref'); + const element = this.$refs[ref].$el; + + // Set focus and tabindex on selected element + this.setFocus(element); + + // Set scroll offset below header + const offset = element.offsetTop - 50; + window.scroll({ + top: offset, + behavior: 'smooth', + }); + }, + }, +}; + +export default JumpLinkMixin; diff --git a/src/components/_sila/Mixins/LoadingBarMixin.js b/src/components/_sila/Mixins/LoadingBarMixin.js new file mode 100644 index 00000000..d1152703 --- /dev/null +++ b/src/components/_sila/Mixins/LoadingBarMixin.js @@ -0,0 +1,19 @@ +export const loading = true; + +const LoadingBarMixin = { + methods: { + startLoader() { + this.$root.$emit('loader-start'); + this.loading = true; + }, + endLoader() { + this.$root.$emit('loader-end'); + this.loading = false; + }, + hideLoader() { + this.$root.$emit('loader-hide'); + }, + }, +}; + +export default LoadingBarMixin; diff --git a/src/components/_sila/Mixins/LocalTimezoneLabelMixin.js b/src/components/_sila/Mixins/LocalTimezoneLabelMixin.js new file mode 100644 index 00000000..6b4141c6 --- /dev/null +++ b/src/components/_sila/Mixins/LocalTimezoneLabelMixin.js @@ -0,0 +1,14 @@ +import { format } from 'date-fns-tz'; + +const LocalTimezoneLabelMixin = { + methods: { + localOffset() { + const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone; + const shortTz = this.$options.filters.shortTimeZone(new Date()); + const pattern = `'${shortTz}' O`; + return format(new Date(), pattern, { timezone }).replace('GMT', 'UTC'); + }, + }, +}; + +export default LocalTimezoneLabelMixin; diff --git a/src/components/_sila/Mixins/SearchFilterMixin.js b/src/components/_sila/Mixins/SearchFilterMixin.js new file mode 100644 index 00000000..a4819e26 --- /dev/null +++ b/src/components/_sila/Mixins/SearchFilterMixin.js @@ -0,0 +1,14 @@ +export const searchFilter = null; + +const SearchFilterMixin = { + methods: { + onChangeSearchInput(searchValue) { + this.searchFilter = searchValue; + }, + onClearSearchInput() { + this.searchFilter = null; + }, + }, +}; + +export default SearchFilterMixin; diff --git a/src/components/_sila/Mixins/TableFilterMixin.js b/src/components/_sila/Mixins/TableFilterMixin.js new file mode 100644 index 00000000..7a2cc540 --- /dev/null +++ b/src/components/_sila/Mixins/TableFilterMixin.js @@ -0,0 +1,58 @@ +import { includes } from 'lodash'; + +const TableFilterMixin = { + methods: { + getFilteredTableData(tableData = [], filters = []) { + const filterItems = filters.reduce((arr, filter) => { + return [...arr, ...filter.values]; + }, []); + // If no filters are active, then return all table data + if (filterItems.length === 0) return tableData; + + // Check if row property value is included in list of + // active filters + return tableData.filter((row) => { + let returnRow = false; + for (const { key, values } of filters) { + const rowProperty = row[key]; + if (rowProperty && includes(values, rowProperty)) { + returnRow = true; + break; + } + } + return returnRow; + }); + }, + getFilteredTableDataByDate( + tableData = [], + startDate, + endDate, + propertyKey = 'date' + ) { + if (!startDate && !endDate) return tableData; + let startDateInMs = startDate ? startDate.getTime() : 0; + let endDateInMs = endDate ? endDate.getTime() : Number.POSITIVE_INFINITY; + + const isUtcDisplay = this.$store.getters['global/isUtcDisplay']; + + //Offset preference selected + if (!isUtcDisplay) { + startDateInMs = startDate + ? startDate.getTime() + startDate.getTimezoneOffset() * 60000 + : 0; + endDateInMs = endDate + ? endDate.getTime() + endDate.getTimezoneOffset() * 60000 + : Number.POSITIVE_INFINITY; + } + + return tableData.filter((row) => { + const date = row[propertyKey]; + if (!(date instanceof Date)) return; + const dateInMs = date.getTime(); + if (dateInMs >= startDateInMs && dateInMs <= endDateInMs) return row; + }); + }, + }, +}; + +export default TableFilterMixin; diff --git a/src/components/_sila/Mixins/TableRowExpandMixin.js b/src/components/_sila/Mixins/TableRowExpandMixin.js new file mode 100644 index 00000000..7f815a46 --- /dev/null +++ b/src/components/_sila/Mixins/TableRowExpandMixin.js @@ -0,0 +1,15 @@ +import i18n from '@/i18n'; +export const expandRowLabel = i18n.t('global.table.expandTableRow'); + +const TableRowExpandMixin = { + methods: { + toggleRowDetails(row) { + row.toggleDetails(); + row.detailsShowing + ? (this.expandRowLabel = this.$t('global.table.expandTableRow')) + : (this.expandRowLabel = this.$t('global.table.collapseTableRow')); + }, + }, +}; + +export default TableRowExpandMixin; diff --git a/src/components/_sila/Mixins/TableSortMixin.js b/src/components/_sila/Mixins/TableSortMixin.js new file mode 100644 index 00000000..c0997350 --- /dev/null +++ b/src/components/_sila/Mixins/TableSortMixin.js @@ -0,0 +1,11 @@ +const STATUS = ['OK', 'Warning', 'Critical']; + +const TableSortMixin = { + methods: { + sortStatus(a, b, key) { + return STATUS.indexOf(a[key]) - STATUS.indexOf(b[key]); + }, + }, +}; + +export default TableSortMixin; diff --git a/src/components/_sila/Mixins/VuelidateMixin.js b/src/components/_sila/Mixins/VuelidateMixin.js new file mode 100644 index 00000000..fec85251 --- /dev/null +++ b/src/components/_sila/Mixins/VuelidateMixin.js @@ -0,0 +1,10 @@ +const VuelidateMixin = { + methods: { + getValidationState(model) { + const { $dirty, $error } = model; + return $dirty ? !$error : null; + }, + }, +}; + +export default VuelidateMixin; diff --git a/src/env/assets/styles/_sila.scss b/src/env/assets/styles/_sila.scss new file mode 100644 index 00000000..884d62b5 --- /dev/null +++ b/src/env/assets/styles/_sila.scss @@ -0,0 +1,92 @@ +@font-face { + font-family: 'Inter'; + src: url('~@/env/assets/fonts/Inter/Inter-ExtraLight.woff2') format('woff2'); + font-weight: 200; +} +@font-face { + font-family: 'Inter'; + src: url('~@/env/assets/fonts/Inter/Inter-ExtraLightItalic.woff2') format('woff2'); + font-weight: 200; + font-style: italic; +} +@font-face { + font-family: 'Inter'; + src: url('~@/env/assets/fonts/Inter/Inter-Light.woff2') format('woff2'); + font-weight: 300; +} +@font-face { + font-family: 'Inter'; + src: url('~@/env/assets/fonts/Inter/Inter-Regular.woff2') format('woff2'); + font-weight: 400; +} +@font-face { + font-family: 'Inter'; + src: url('~@/env/assets/fonts/Inter/Inter-Italic.woff2') format('woff2'); + font-weight: 400; + font-style: italic; +} +@font-face { + font-family: 'Inter'; + src: url('~@/env/assets/fonts/Inter/Inter-Medium.woff2') format('woff2'); + font-weight: 500; +} +@font-face { + font-family: 'Inter'; + src: url('~@/env/assets/fonts/Inter/Inter-Bold.woff2') format('woff2'); + font-weight: 700; +} +@font-face { + font-family: 'Inter'; + src: url('~@/env/assets/fonts/Inter/Inter-BoldItalic.woff2') format('woff2'); + font-weight: 700; + font-style: italic; +} + +// IBS uses Inter https://github.com/rsms/inter + +$font-family-base: "Inter", "Helvetica Neue", Helvetica, Arial, sans-serif; + +$dark: #2c405a; + +$blue: #0070ff; +$red: #e11717; +$green: #34b233; +$yellow: #f5bd1f; + +$primary: $red; +$danger: $red; +$success: $green; +$warning: $yellow; + +$dark-hover: #3c506a; + +$red-hover: #FC2A2A; +$red-active: #df2323; +$red-disabled: #E17171; +$red-click: #C71414; +$red-shadow: #e1171780; +$red-light-background: #e117170d; + +$gray-2: #fbfbfc; +$gray-5: #1a3e5b0d; +$gray-5-hover: #1427351a; +$gray-10: #1a3e5b1a; +$gray-20: #1a3e5b33; +$red-40:#e1171766; + +$surface-secondary: #F3F4F5; +$on-surface-secondary: #040a0f99; +$on-surface-tretiatry: #040A0F4D; + +$text-primary: #0C1C29; +$text-secondary: #0C1C29E5; +$text-tretiatry: #0c1c2999; +$text-quaternary: #0c1c294d; + +$login-page-description-color: #0c1c2999; + +$border-radius: 8px; + +$loading-color: #c11d1d; +$navbar-color: $dark; + diff --git a/src/env/components/AppNavigation/sila.js b/src/env/components/AppNavigation/sila.js new file mode 100644 index 00000000..bbbbb1ee --- /dev/null +++ b/src/env/components/AppNavigation/sila.js @@ -0,0 +1,182 @@ +import IconDashboard from '@carbon/icons-vue/es/dashboard/16'; +import IconTextLinkAnalysis from '@carbon/icons-vue/es/text-link--analysis/16'; +import IconDataCheck from '@carbon/icons-vue/es/data--check/16'; +import IconSettingsAdjust from '@carbon/icons-vue/es/settings--adjust/16'; +import IconSettings from '@carbon/icons-vue/es/settings/16'; +import IconSecurity from '@carbon/icons-vue/es/security/16'; +import IconChevronUp from '@carbon/icons-vue/es/chevron--up/16'; +import IconDataBase from '@carbon/icons-vue/es/data--base--alt/16'; + +const AppNavigationMixin = { + components: { + iconOverview: IconDashboard, + iconLogs: IconTextLinkAnalysis, + iconHealth: IconDataCheck, + iconControl: IconSettingsAdjust, + iconSettings: IconSettings, + iconSecurityAndAccess: IconSecurity, + iconExpand: IconChevronUp, + iconResourceManagement: IconDataBase, + }, + data() { + return { + navigationItems: [ + { + id: 'overview', + label: this.$t('appNavigation.overview'), + route: '/', + icon: 'iconOverview', + }, + { + id: 'logs', + label: this.$t('appNavigation.logs'), + icon: 'iconLogs', + children: [ + { + id: 'event-logs', + label: this.$t('appNavigation.eventLogs'), + route: '/logs/event-logs', + }, + { + id: 'post-code-logs', + label: this.$t('appNavigation.postCodeLogs'), + route: '/logs/post-code-logs', + }, + ], + }, + { + id: 'hardware-status', + label: this.$t('appNavigation.hardwareStatus'), + icon: 'iconHealth', + children: [ + { + id: 'inventory', + label: this.$t('appNavigation.inventory'), + route: '/hardware-status/inventory', + }, + { + id: 'sensors', + label: this.$t('appNavigation.sensors'), + route: '/hardware-status/sensors', + }, + ], + }, + { + id: 'operations', + label: this.$t('appNavigation.operations'), + icon: 'iconControl', + children: [ + { + id: 'factory-reset', + label: this.$t('appNavigation.factoryReset'), + route: '/operations/factory-reset', + }, + { + id: 'kvm', + label: this.$t('appNavigation.kvm'), + route: '/operations/kvm', + }, + { + id: 'key-clear', + label: this.$t('appNavigation.keyClear'), + route: '/operations/key-clear', + }, + { + id: 'firmware', + label: this.$t('appNavigation.firmware'), + route: '/operations/firmware', + }, + { + id: 'reboot-bmc', + label: this.$t('appNavigation.rebootBmc'), + route: '/operations/reboot-bmc', + }, + { + id: 'serial-over-lan', + label: this.$t('appNavigation.serialOverLan'), + route: '/operations/serial-over-lan', + }, + { + id: 'server-power-operations', + label: this.$t('appNavigation.serverPowerOperations'), + route: '/operations/server-power-operations', + }, + { + id: 'virtual-media', + label: this.$t('appNavigation.virtualMedia'), + route: '/operations/virtual-media', + }, + ], + }, + { + id: 'settings', + label: this.$t('appNavigation.settings'), + icon: 'iconSettings', + children: [ + { + id: 'date-time', + label: this.$t('appNavigation.dateTime'), + route: '/settings/date-time', + }, + { + id: 'network', + label: this.$t('appNavigation.network'), + route: '/settings/network', + }, + { + id: 'power-restore-policy', + label: this.$t('appNavigation.powerRestorePolicy'), + route: '/settings/power-restore-policy', + }, + ], + }, + { + id: 'security-and-access', + label: this.$t('appNavigation.securityAndAccess'), + icon: 'iconSecurityAndAccess', + children: [ + { + id: 'sessions', + label: this.$t('appNavigation.sessions'), + route: '/security-and-access/sessions', + }, + { + id: 'ldap', + label: this.$t('appNavigation.ldap'), + route: '/security-and-access/ldap', + }, + { + id: 'user-management', + label: this.$t('appNavigation.userManagement'), + route: '/security-and-access/user-management', + }, + { + id: 'policies', + label: this.$t('appNavigation.policies'), + route: '/security-and-access/policies', + }, + { + id: 'certificates', + label: this.$t('appNavigation.certificates'), + route: '/security-and-access/certificates', + }, + ], + }, + { + id: 'resource-management', + label: this.$t('appNavigation.resourceManagement'), + icon: 'iconResourceManagement', + children: [ + { + id: 'power', + label: this.$t('appNavigation.power'), + route: '/resource-management/power', + }, + ], + }, + ], + }; + }, +}; + +export default AppNavigationMixin; diff --git a/src/env/router/sila.js b/src/env/router/sila.js new file mode 100644 index 00000000..39590cfa --- /dev/null +++ b/src/env/router/sila.js @@ -0,0 +1,286 @@ +import AppLayout from '@/layouts/_sila/AppLayout.vue'; +import ChangePassword from '@/views/_sila/ChangePassword'; +import Sessions from '@/views/_sila/SecurityAndAccess/Sessions'; +import ConsoleLayout from '@/layouts/_sila/ConsoleLayout.vue'; +import DateTime from '@/views/_sila/Settings/DateTime'; +import EventLogs from '@/views/_sila/Logs/EventLogs'; +import Firmware from '@/views/_sila/Operations/Firmware'; +import FactoryReset from '@/views/_sila/Operations/FactoryReset'; +import Inventory from '@/views/_sila/HardwareStatus/Inventory'; +import Kvm from '@/views/_sila/Operations/Kvm'; +import KvmConsole from '@/views/_sila/Operations/Kvm/KvmConsole'; +import Ldap from '@/views/_sila/SecurityAndAccess/Ldap'; +import UserManagement from '@/views/_sila/SecurityAndAccess/UserManagement'; +import Login from '@/views/_sila/Login'; +import LoginLayout from '@/layouts/_sila/LoginLayout'; +import Network from '@/views/_sila/Settings/Network'; +import Overview from '@/views/_sila/Overview'; +import PageNotFound from '@/views/_sila/PageNotFound'; +import PostCodeLogs from '@/views/_sila/Logs/PostCodeLogs'; +import PowerRestorePolicy from '@/views/_sila/Settings/PowerRestorePolicy'; +import ProfileSettings from '@/views/_sila/ProfileSettings'; +import RebootBmc from '@/views/_sila/Operations/RebootBmc'; +import Policies from '@/views/_sila/SecurityAndAccess/Policies'; +import Sensors from '@/views/_sila/HardwareStatus/Sensors'; +import SerialOverLan from '@/views/_sila/Operations/SerialOverLan'; +import SerialOverLanConsole from '@/views/_sila/Operations/SerialOverLan/SerialOverLanConsole'; +import ServerPowerOperations from '@/views/_sila/Operations/ServerPowerOperations'; +import KeyClear from '@/views/_sila/Operations/KeyClear'; +import Certificates from '@/views/_sila/SecurityAndAccess/Certificates'; +import VirtualMedia from '@/views/_sila/Operations/VirtualMedia'; +import Power from '@/views/_sila/ResourceManagement/Power'; +import i18n from '@/i18n'; + +const routes = [ + { + path: '/login', + component: LoginLayout, + children: [ + { + path: '', + name: 'login', + component: Login, + meta: { + title: i18n.t('appPageTitle.login'), + }, + }, + { + path: '/change-password', + name: 'change-password', + component: ChangePassword, + meta: { + title: i18n.t('appPageTitle.changePassword'), + requiresAuth: true, + }, + }, + ], + }, + { + path: '/console', + component: ConsoleLayout, + meta: { + requiresAuth: true, + }, + children: [ + { + path: 'serial-over-lan-console', + name: 'serial-over-lan-console', + component: SerialOverLanConsole, + meta: { + title: i18n.t('appPageTitle.serialOverLan'), + }, + }, + { + path: 'kvm', + name: 'kvm-console', + component: KvmConsole, + meta: { + title: i18n.t('appPageTitle.kvm'), + }, + }, + ], + }, + { + path: '/', + meta: { + requiresAuth: true, + }, + component: AppLayout, + children: [ + { + path: '', + name: 'overview', + component: Overview, + meta: { + title: i18n.t('appPageTitle.overview'), + }, + }, + { + path: '/profile-settings', + name: 'profile-settings', + component: ProfileSettings, + meta: { + title: i18n.t('appPageTitle.profileSettings'), + }, + }, + { + path: '/logs/event-logs', + name: 'event-logs', + component: EventLogs, + meta: { + title: i18n.t('appPageTitle.eventLogs'), + }, + }, + { + path: '/logs/post-code-logs', + name: 'post-code-logs', + component: PostCodeLogs, + meta: { + title: i18n.t('appPageTitle.postCodeLogs'), + }, + }, + { + path: '/hardware-status/inventory', + name: 'inventory', + component: Inventory, + meta: { + title: i18n.t('appPageTitle.inventory'), + }, + }, + { + path: '/hardware-status/sensors', + name: 'sensors', + component: Sensors, + meta: { + title: i18n.t('appPageTitle.sensors'), + }, + }, + { + path: '/security-and-access/sessions', + name: 'sessions', + component: Sessions, + meta: { + title: i18n.t('appPageTitle.sessions'), + }, + }, + { + path: '/security-and-access/ldap', + name: 'ldap', + component: Ldap, + meta: { + title: i18n.t('appPageTitle.ldap'), + }, + }, + { + path: '/security-and-access/user-management', + name: 'user-management', + component: UserManagement, + meta: { + title: i18n.t('appPageTitle.userManagement'), + }, + }, + { + path: '/security-and-access/policies', + name: 'policies', + component: Policies, + meta: { + title: i18n.t('appPageTitle.policies'), + }, + }, + { + path: '/security-and-access/certificates', + name: 'certificates', + component: Certificates, + meta: { + title: i18n.t('appPageTitle.certificates'), + }, + }, + { + path: '/settings/date-time', + name: 'date-time', + component: DateTime, + meta: { + title: i18n.t('appPageTitle.dateTime'), + }, + }, + { + path: '/operations/kvm', + name: 'kvm', + component: Kvm, + meta: { + title: i18n.t('appPageTitle.kvm'), + }, + }, + { + path: '/operations/firmware', + name: 'firmware', + component: Firmware, + meta: { + title: i18n.t('appPageTitle.firmware'), + }, + }, + { + path: '/settings/network', + name: 'network', + component: Network, + meta: { + title: i18n.t('appPageTitle.network'), + }, + }, + { + path: '/settings/power-restore-policy', + name: 'power-restore-policy', + component: PowerRestorePolicy, + meta: { + title: i18n.t('appPageTitle.powerRestorePolicy'), + }, + }, + { + path: '/resource-management/power', + name: 'power', + component: Power, + meta: { + title: i18n.t('appPageTitle.power'), + }, + }, + { + path: '/operations/factory-reset', + name: 'factory-reset', + component: FactoryReset, + meta: { + title: i18n.t('appPageTitle.factoryReset'), + }, + }, + { + path: '/operations/key-clear', + name: 'key-clear', + component: KeyClear, + meta: { + title: i18n.t('appPageTitle.keyClear'), + }, + }, + { + path: '/operations/reboot-bmc', + name: 'reboot-bmc', + component: RebootBmc, + meta: { + title: i18n.t('appPageTitle.rebootBmc'), + }, + }, + { + path: '/operations/serial-over-lan', + name: 'serial-over-lan', + component: SerialOverLan, + meta: { + title: i18n.t('appPageTitle.serialOverLan'), + }, + }, + { + path: '/operations/server-power-operations', + name: 'server-power-operations', + component: ServerPowerOperations, + meta: { + title: i18n.t('appPageTitle.serverPowerOperations'), + }, + }, + { + path: '/operations/virtual-media', + name: 'virtual-media', + component: VirtualMedia, + meta: { + title: i18n.t('appPageTitle.virtualMedia'), + }, + }, + { + path: '*', + name: 'page-not-found', + component: PageNotFound, + meta: { + title: i18n.t('appPageTitle.pageNotFound'), + }, + }, + ], + }, +]; + +export default routes; diff --git a/src/env/store/sila.js b/src/env/store/sila.js new file mode 100644 index 00000000..d0834c3b --- /dev/null +++ b/src/env/store/sila.js @@ -0,0 +1,10 @@ +import store from '@/store'; +import KeyClearStore from '@/store/modules/Operations/KeyClearStore'; + +store.registerModule('key-clear', KeyClearStore); + +// Use store.registerModule() to register env specific +// store modules +// https://vuex.vuejs.org/api/#registermodule + +export default store; diff --git a/src/layouts/_sila/AppLayout.vue b/src/layouts/_sila/AppLayout.vue new file mode 100644 index 00000000..0b78e5b1 --- /dev/null +++ b/src/layouts/_sila/AppLayout.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/src/layouts/_sila/ConsoleLayout.vue b/src/layouts/_sila/ConsoleLayout.vue new file mode 100644 index 00000000..9f8175bf --- /dev/null +++ b/src/layouts/_sila/ConsoleLayout.vue @@ -0,0 +1,9 @@ + + + diff --git a/src/layouts/_sila/LoginLayout.vue b/src/layouts/_sila/LoginLayout.vue new file mode 100644 index 00000000..cdff2040 --- /dev/null +++ b/src/layouts/_sila/LoginLayout.vue @@ -0,0 +1,112 @@ + + + + + diff --git a/src/views/_sila/ChangePassword/ChangePassword.vue b/src/views/_sila/ChangePassword/ChangePassword.vue new file mode 100644 index 00000000..2440ace1 --- /dev/null +++ b/src/views/_sila/ChangePassword/ChangePassword.vue @@ -0,0 +1,134 @@ + + + + + diff --git a/src/views/_sila/ChangePassword/index.js b/src/views/_sila/ChangePassword/index.js new file mode 100644 index 00000000..9de0af42 --- /dev/null +++ b/src/views/_sila/ChangePassword/index.js @@ -0,0 +1,2 @@ +import ChangePassword from './ChangePassword.vue'; +export default ChangePassword; diff --git a/src/views/_sila/HardwareStatus/Inventory/Inventory.vue b/src/views/_sila/HardwareStatus/Inventory/Inventory.vue new file mode 100644 index 00000000..fcdbf8d2 --- /dev/null +++ b/src/views/_sila/HardwareStatus/Inventory/Inventory.vue @@ -0,0 +1,196 @@ + + + diff --git a/src/views/_sila/HardwareStatus/Inventory/InventoryServiceIndicator.vue b/src/views/_sila/HardwareStatus/Inventory/InventoryServiceIndicator.vue new file mode 100644 index 00000000..01f4a446 --- /dev/null +++ b/src/views/_sila/HardwareStatus/Inventory/InventoryServiceIndicator.vue @@ -0,0 +1,76 @@ + + diff --git a/src/views/_sila/HardwareStatus/Inventory/InventoryTableAssembly.vue b/src/views/_sila/HardwareStatus/Inventory/InventoryTableAssembly.vue new file mode 100644 index 00000000..b4010bfe --- /dev/null +++ b/src/views/_sila/HardwareStatus/Inventory/InventoryTableAssembly.vue @@ -0,0 +1,153 @@ + + + diff --git a/src/views/_sila/HardwareStatus/Inventory/InventoryTableBmcManager.vue b/src/views/_sila/HardwareStatus/Inventory/InventoryTableBmcManager.vue new file mode 100644 index 00000000..48b914f4 --- /dev/null +++ b/src/views/_sila/HardwareStatus/Inventory/InventoryTableBmcManager.vue @@ -0,0 +1,245 @@ + + + diff --git a/src/views/_sila/HardwareStatus/Inventory/InventoryTableChassis.vue b/src/views/_sila/HardwareStatus/Inventory/InventoryTableChassis.vue new file mode 100644 index 00000000..b49cec7f --- /dev/null +++ b/src/views/_sila/HardwareStatus/Inventory/InventoryTableChassis.vue @@ -0,0 +1,191 @@ + + + diff --git a/src/views/_sila/HardwareStatus/Inventory/InventoryTableDimmSlot.vue b/src/views/_sila/HardwareStatus/Inventory/InventoryTableDimmSlot.vue new file mode 100644 index 00000000..65994810 --- /dev/null +++ b/src/views/_sila/HardwareStatus/Inventory/InventoryTableDimmSlot.vue @@ -0,0 +1,255 @@ + + + diff --git a/src/views/_sila/HardwareStatus/Inventory/InventoryTableFans.vue b/src/views/_sila/HardwareStatus/Inventory/InventoryTableFans.vue new file mode 100644 index 00000000..fe788c53 --- /dev/null +++ b/src/views/_sila/HardwareStatus/Inventory/InventoryTableFans.vue @@ -0,0 +1,190 @@ + + + diff --git a/src/views/_sila/HardwareStatus/Inventory/InventoryTablePowerSupplies.vue b/src/views/_sila/HardwareStatus/Inventory/InventoryTablePowerSupplies.vue new file mode 100644 index 00000000..aed7871a --- /dev/null +++ b/src/views/_sila/HardwareStatus/Inventory/InventoryTablePowerSupplies.vue @@ -0,0 +1,208 @@ + + + diff --git a/src/views/_sila/HardwareStatus/Inventory/InventoryTableProcessors.vue b/src/views/_sila/HardwareStatus/Inventory/InventoryTableProcessors.vue new file mode 100644 index 00000000..7d5dd700 --- /dev/null +++ b/src/views/_sila/HardwareStatus/Inventory/InventoryTableProcessors.vue @@ -0,0 +1,251 @@ + + + diff --git a/src/views/_sila/HardwareStatus/Inventory/InventoryTableSystem.vue b/src/views/_sila/HardwareStatus/Inventory/InventoryTableSystem.vue new file mode 100644 index 00000000..cf2cf020 --- /dev/null +++ b/src/views/_sila/HardwareStatus/Inventory/InventoryTableSystem.vue @@ -0,0 +1,224 @@ + + + diff --git a/src/views/_sila/HardwareStatus/Inventory/index.js b/src/views/_sila/HardwareStatus/Inventory/index.js new file mode 100644 index 00000000..c9fde8d2 --- /dev/null +++ b/src/views/_sila/HardwareStatus/Inventory/index.js @@ -0,0 +1,2 @@ +import Inventory from './Inventory.vue'; +export default Inventory; diff --git a/src/views/_sila/HardwareStatus/Sensors/Sensors.vue b/src/views/_sila/HardwareStatus/Sensors/Sensors.vue new file mode 100644 index 00000000..6329d9d8 --- /dev/null +++ b/src/views/_sila/HardwareStatus/Sensors/Sensors.vue @@ -0,0 +1,256 @@ + + + diff --git a/src/views/_sila/HardwareStatus/Sensors/index.js b/src/views/_sila/HardwareStatus/Sensors/index.js new file mode 100644 index 00000000..fc71b611 --- /dev/null +++ b/src/views/_sila/HardwareStatus/Sensors/index.js @@ -0,0 +1,2 @@ +import Sensors from './Sensors.vue'; +export default Sensors; diff --git a/src/views/_sila/Login/Login.vue b/src/views/_sila/Login/Login.vue new file mode 100644 index 00000000..8d96573a --- /dev/null +++ b/src/views/_sila/Login/Login.vue @@ -0,0 +1,146 @@ + + + diff --git a/src/views/_sila/Login/index.js b/src/views/_sila/Login/index.js new file mode 100644 index 00000000..8fe0250d --- /dev/null +++ b/src/views/_sila/Login/index.js @@ -0,0 +1,2 @@ +import Login from './Login.vue'; +export default Login; diff --git a/src/views/_sila/Logs/Dumps/Dumps.vue b/src/views/_sila/Logs/Dumps/Dumps.vue new file mode 100644 index 00000000..81c9de04 --- /dev/null +++ b/src/views/_sila/Logs/Dumps/Dumps.vue @@ -0,0 +1,404 @@ + + + diff --git a/src/views/_sila/Logs/Dumps/DumpsForm.vue b/src/views/_sila/Logs/Dumps/DumpsForm.vue new file mode 100644 index 00000000..07f4a060 --- /dev/null +++ b/src/views/_sila/Logs/Dumps/DumpsForm.vue @@ -0,0 +1,97 @@ + + + diff --git a/src/views/_sila/Logs/Dumps/DumpsModalConfirmation.vue b/src/views/_sila/Logs/Dumps/DumpsModalConfirmation.vue new file mode 100644 index 00000000..f8e20cfd --- /dev/null +++ b/src/views/_sila/Logs/Dumps/DumpsModalConfirmation.vue @@ -0,0 +1,75 @@ + + + diff --git a/src/views/_sila/Logs/Dumps/index.js b/src/views/_sila/Logs/Dumps/index.js new file mode 100644 index 00000000..65525fb0 --- /dev/null +++ b/src/views/_sila/Logs/Dumps/index.js @@ -0,0 +1,2 @@ +import Dumps from './Dumps.vue'; +export default Dumps; diff --git a/src/views/_sila/Logs/EventLogs/EventLogs.vue b/src/views/_sila/Logs/EventLogs/EventLogs.vue new file mode 100644 index 00000000..5b8ca110 --- /dev/null +++ b/src/views/_sila/Logs/EventLogs/EventLogs.vue @@ -0,0 +1,604 @@ + + + diff --git a/src/views/_sila/Logs/EventLogs/index.js b/src/views/_sila/Logs/EventLogs/index.js new file mode 100644 index 00000000..521efde4 --- /dev/null +++ b/src/views/_sila/Logs/EventLogs/index.js @@ -0,0 +1,2 @@ +import EventLogs from './EventLogs.vue'; +export default EventLogs; diff --git a/src/views/_sila/Logs/PostCodeLogs/PostCodeLogs.vue b/src/views/_sila/Logs/PostCodeLogs/PostCodeLogs.vue new file mode 100644 index 00000000..d116d2ed --- /dev/null +++ b/src/views/_sila/Logs/PostCodeLogs/PostCodeLogs.vue @@ -0,0 +1,347 @@ + + + diff --git a/src/views/_sila/Logs/PostCodeLogs/index.js b/src/views/_sila/Logs/PostCodeLogs/index.js new file mode 100644 index 00000000..ab591124 --- /dev/null +++ b/src/views/_sila/Logs/PostCodeLogs/index.js @@ -0,0 +1,2 @@ +import PostCodeLogs from './PostCodeLogs.vue'; +export default PostCodeLogs; diff --git a/src/views/_sila/Operations/FactoryReset/FactoryReset.vue b/src/views/_sila/Operations/FactoryReset/FactoryReset.vue new file mode 100644 index 00000000..897348fc --- /dev/null +++ b/src/views/_sila/Operations/FactoryReset/FactoryReset.vue @@ -0,0 +1,117 @@ + + + diff --git a/src/views/_sila/Operations/FactoryReset/FactoryResetModal.vue b/src/views/_sila/Operations/FactoryReset/FactoryResetModal.vue new file mode 100644 index 00000000..170bf284 --- /dev/null +++ b/src/views/_sila/Operations/FactoryReset/FactoryResetModal.vue @@ -0,0 +1,113 @@ + + diff --git a/src/views/_sila/Operations/FactoryReset/index.js b/src/views/_sila/Operations/FactoryReset/index.js new file mode 100644 index 00000000..eae747e0 --- /dev/null +++ b/src/views/_sila/Operations/FactoryReset/index.js @@ -0,0 +1,2 @@ +import FactoryReset from './FactoryReset.vue'; +export default FactoryReset; diff --git a/src/views/_sila/Operations/Firmware/Firmware.vue b/src/views/_sila/Operations/Firmware/Firmware.vue new file mode 100644 index 00000000..a2acb9b0 --- /dev/null +++ b/src/views/_sila/Operations/Firmware/Firmware.vue @@ -0,0 +1,93 @@ + + + diff --git a/src/views/_sila/Operations/Firmware/FirmwareAlertServerPower.vue b/src/views/_sila/Operations/Firmware/FirmwareAlertServerPower.vue new file mode 100644 index 00000000..24aa1d69 --- /dev/null +++ b/src/views/_sila/Operations/Firmware/FirmwareAlertServerPower.vue @@ -0,0 +1,50 @@ + + + diff --git a/src/views/_sila/Operations/Firmware/FirmwareCardsBmc.vue b/src/views/_sila/Operations/Firmware/FirmwareCardsBmc.vue new file mode 100644 index 00000000..d79a8769 --- /dev/null +++ b/src/views/_sila/Operations/Firmware/FirmwareCardsBmc.vue @@ -0,0 +1,136 @@ + + + diff --git a/src/views/_sila/Operations/Firmware/FirmwareCardsHost.vue b/src/views/_sila/Operations/Firmware/FirmwareCardsHost.vue new file mode 100644 index 00000000..b4a8e90d --- /dev/null +++ b/src/views/_sila/Operations/Firmware/FirmwareCardsHost.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/src/views/_sila/Operations/Firmware/FirmwareFormUpdate.vue b/src/views/_sila/Operations/Firmware/FirmwareFormUpdate.vue new file mode 100644 index 00000000..ac4b23fc --- /dev/null +++ b/src/views/_sila/Operations/Firmware/FirmwareFormUpdate.vue @@ -0,0 +1,187 @@ + + + diff --git a/src/views/_sila/Operations/Firmware/FirmwareModalSwitchToRunning.vue b/src/views/_sila/Operations/Firmware/FirmwareModalSwitchToRunning.vue new file mode 100644 index 00000000..dc4a4973 --- /dev/null +++ b/src/views/_sila/Operations/Firmware/FirmwareModalSwitchToRunning.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/views/_sila/Operations/Firmware/FirmwareModalUpdateFirmware.vue b/src/views/_sila/Operations/Firmware/FirmwareModalUpdateFirmware.vue new file mode 100644 index 00000000..18355217 --- /dev/null +++ b/src/views/_sila/Operations/Firmware/FirmwareModalUpdateFirmware.vue @@ -0,0 +1,44 @@ + + + diff --git a/src/views/_sila/Operations/Firmware/index.js b/src/views/_sila/Operations/Firmware/index.js new file mode 100644 index 00000000..ad15cc03 --- /dev/null +++ b/src/views/_sila/Operations/Firmware/index.js @@ -0,0 +1,2 @@ +import Firmware from './Firmware.vue'; +export default Firmware; diff --git a/src/views/_sila/Operations/KeyClear/KeyClear.vue b/src/views/_sila/Operations/KeyClear/KeyClear.vue new file mode 100644 index 00000000..2524da10 --- /dev/null +++ b/src/views/_sila/Operations/KeyClear/KeyClear.vue @@ -0,0 +1,106 @@ + + + diff --git a/src/views/_sila/Operations/KeyClear/index.js b/src/views/_sila/Operations/KeyClear/index.js new file mode 100644 index 00000000..56de8c4e --- /dev/null +++ b/src/views/_sila/Operations/KeyClear/index.js @@ -0,0 +1,2 @@ +import KeyClear from './KeyClear.vue'; +export default KeyClear; diff --git a/src/views/_sila/Operations/Kvm/Kvm.vue b/src/views/_sila/Operations/Kvm/Kvm.vue new file mode 100644 index 00000000..1a41baaf --- /dev/null +++ b/src/views/_sila/Operations/Kvm/Kvm.vue @@ -0,0 +1,24 @@ + + + + + diff --git a/src/views/_sila/Operations/Kvm/KvmConsole.vue b/src/views/_sila/Operations/Kvm/KvmConsole.vue new file mode 100644 index 00000000..c028a9fc --- /dev/null +++ b/src/views/_sila/Operations/Kvm/KvmConsole.vue @@ -0,0 +1,170 @@ + + + + + diff --git a/src/views/_sila/Operations/Kvm/index.js b/src/views/_sila/Operations/Kvm/index.js new file mode 100644 index 00000000..ac4f9667 --- /dev/null +++ b/src/views/_sila/Operations/Kvm/index.js @@ -0,0 +1,2 @@ +import Kvm from './Kvm.vue'; +export default Kvm; diff --git a/src/views/_sila/Operations/RebootBmc/RebootBmc.vue b/src/views/_sila/Operations/RebootBmc/RebootBmc.vue new file mode 100644 index 00000000..900619cd --- /dev/null +++ b/src/views/_sila/Operations/RebootBmc/RebootBmc.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/src/views/_sila/Operations/RebootBmc/index.js b/src/views/_sila/Operations/RebootBmc/index.js new file mode 100644 index 00000000..ac31417e --- /dev/null +++ b/src/views/_sila/Operations/RebootBmc/index.js @@ -0,0 +1,2 @@ +import RebootBmc from './RebootBmc.vue'; +export default RebootBmc; diff --git a/src/views/_sila/Operations/SerialOverLan/SerialOverLan.vue b/src/views/_sila/Operations/SerialOverLan/SerialOverLan.vue new file mode 100644 index 00000000..48a68345 --- /dev/null +++ b/src/views/_sila/Operations/SerialOverLan/SerialOverLan.vue @@ -0,0 +1,24 @@ + + + diff --git a/src/views/_sila/Operations/SerialOverLan/SerialOverLanConsole.vue b/src/views/_sila/Operations/SerialOverLan/SerialOverLanConsole.vue new file mode 100644 index 00000000..694083fd --- /dev/null +++ b/src/views/_sila/Operations/SerialOverLan/SerialOverLanConsole.vue @@ -0,0 +1,172 @@ + + + + + diff --git a/src/views/_sila/Operations/SerialOverLan/index.js b/src/views/_sila/Operations/SerialOverLan/index.js new file mode 100644 index 00000000..7c8bc7c0 --- /dev/null +++ b/src/views/_sila/Operations/SerialOverLan/index.js @@ -0,0 +1,2 @@ +import SerialOverLan from './SerialOverLan.vue'; +export default SerialOverLan; diff --git a/src/views/_sila/Operations/ServerPowerOperations/BootSettings.vue b/src/views/_sila/Operations/ServerPowerOperations/BootSettings.vue new file mode 100644 index 00000000..4896286b --- /dev/null +++ b/src/views/_sila/Operations/ServerPowerOperations/BootSettings.vue @@ -0,0 +1,132 @@ + + + diff --git a/src/views/_sila/Operations/ServerPowerOperations/ServerPowerOperations.vue b/src/views/_sila/Operations/ServerPowerOperations/ServerPowerOperations.vue new file mode 100644 index 00000000..9e030837 --- /dev/null +++ b/src/views/_sila/Operations/ServerPowerOperations/ServerPowerOperations.vue @@ -0,0 +1,260 @@ + + + diff --git a/src/views/_sila/Operations/ServerPowerOperations/index.js b/src/views/_sila/Operations/ServerPowerOperations/index.js new file mode 100644 index 00000000..10430047 --- /dev/null +++ b/src/views/_sila/Operations/ServerPowerOperations/index.js @@ -0,0 +1,2 @@ +import ServerPowerOperations from './ServerPowerOperations.vue'; +export default ServerPowerOperations; diff --git a/src/views/_sila/Operations/VirtualMedia/ModalConfigureConnection.vue b/src/views/_sila/Operations/VirtualMedia/ModalConfigureConnection.vue new file mode 100644 index 00000000..b0bcfb2b --- /dev/null +++ b/src/views/_sila/Operations/VirtualMedia/ModalConfigureConnection.vue @@ -0,0 +1,145 @@ + + + diff --git a/src/views/_sila/Operations/VirtualMedia/VirtualMedia.vue b/src/views/_sila/Operations/VirtualMedia/VirtualMedia.vue new file mode 100644 index 00000000..8a3d5add --- /dev/null +++ b/src/views/_sila/Operations/VirtualMedia/VirtualMedia.vue @@ -0,0 +1,221 @@ + + + diff --git a/src/views/_sila/Operations/VirtualMedia/index.js b/src/views/_sila/Operations/VirtualMedia/index.js new file mode 100644 index 00000000..4573e865 --- /dev/null +++ b/src/views/_sila/Operations/VirtualMedia/index.js @@ -0,0 +1,2 @@ +import VirtualMedia from './VirtualMedia.vue'; +export default VirtualMedia; diff --git a/src/views/_sila/Overview/Overview.vue b/src/views/_sila/Overview/Overview.vue new file mode 100644 index 00000000..9960f373 --- /dev/null +++ b/src/views/_sila/Overview/Overview.vue @@ -0,0 +1,100 @@ + + + diff --git a/src/views/_sila/Overview/OverviewCard.vue b/src/views/_sila/Overview/OverviewCard.vue new file mode 100644 index 00000000..4fc0a031 --- /dev/null +++ b/src/views/_sila/Overview/OverviewCard.vue @@ -0,0 +1,81 @@ + + + + + diff --git a/src/views/_sila/Overview/OverviewDumps.vue b/src/views/_sila/Overview/OverviewDumps.vue new file mode 100644 index 00000000..a2ae4e4e --- /dev/null +++ b/src/views/_sila/Overview/OverviewDumps.vue @@ -0,0 +1,54 @@ + + + diff --git a/src/views/_sila/Overview/OverviewEvents.vue b/src/views/_sila/Overview/OverviewEvents.vue new file mode 100644 index 00000000..b73c0b48 --- /dev/null +++ b/src/views/_sila/Overview/OverviewEvents.vue @@ -0,0 +1,85 @@ + + + + + diff --git a/src/views/_sila/Overview/OverviewFirmware.vue b/src/views/_sila/Overview/OverviewFirmware.vue new file mode 100644 index 00000000..f1f9ce53 --- /dev/null +++ b/src/views/_sila/Overview/OverviewFirmware.vue @@ -0,0 +1,49 @@ + + + diff --git a/src/views/_sila/Overview/OverviewInventory.vue b/src/views/_sila/Overview/OverviewInventory.vue new file mode 100644 index 00000000..575cb7b7 --- /dev/null +++ b/src/views/_sila/Overview/OverviewInventory.vue @@ -0,0 +1,57 @@ + + + diff --git a/src/views/_sila/Overview/OverviewNetwork.vue b/src/views/_sila/Overview/OverviewNetwork.vue new file mode 100644 index 00000000..b81e5c73 --- /dev/null +++ b/src/views/_sila/Overview/OverviewNetwork.vue @@ -0,0 +1,71 @@ + + + diff --git a/src/views/_sila/Overview/OverviewPower.vue b/src/views/_sila/Overview/OverviewPower.vue new file mode 100644 index 00000000..0d84c76c --- /dev/null +++ b/src/views/_sila/Overview/OverviewPower.vue @@ -0,0 +1,48 @@ + + + diff --git a/src/views/_sila/Overview/OverviewQuickLinks.vue b/src/views/_sila/Overview/OverviewQuickLinks.vue new file mode 100644 index 00000000..bc579b03 --- /dev/null +++ b/src/views/_sila/Overview/OverviewQuickLinks.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/src/views/_sila/Overview/OverviewServer.vue b/src/views/_sila/Overview/OverviewServer.vue new file mode 100644 index 00000000..d066d391 --- /dev/null +++ b/src/views/_sila/Overview/OverviewServer.vue @@ -0,0 +1,47 @@ + + + diff --git a/src/views/_sila/Overview/index.js b/src/views/_sila/Overview/index.js new file mode 100644 index 00000000..8553ef3d --- /dev/null +++ b/src/views/_sila/Overview/index.js @@ -0,0 +1,2 @@ +import Overview from './Overview.vue'; +export default Overview; diff --git a/src/views/_sila/PageNotFound/PageNotFound.vue b/src/views/_sila/PageNotFound/PageNotFound.vue new file mode 100644 index 00000000..91341dbb --- /dev/null +++ b/src/views/_sila/PageNotFound/PageNotFound.vue @@ -0,0 +1,12 @@ + + diff --git a/src/views/_sila/PageNotFound/index.js b/src/views/_sila/PageNotFound/index.js new file mode 100644 index 00000000..ed1d519a --- /dev/null +++ b/src/views/_sila/PageNotFound/index.js @@ -0,0 +1,2 @@ +import PageNotFound from './PageNotFound.vue'; +export default PageNotFound; diff --git a/src/views/_sila/ProfileSettings/ProfileSettings.vue b/src/views/_sila/ProfileSettings/ProfileSettings.vue new file mode 100644 index 00000000..8f01c59b --- /dev/null +++ b/src/views/_sila/ProfileSettings/ProfileSettings.vue @@ -0,0 +1,222 @@ + + + diff --git a/src/views/_sila/ProfileSettings/index.js b/src/views/_sila/ProfileSettings/index.js new file mode 100644 index 00000000..d6589c72 --- /dev/null +++ b/src/views/_sila/ProfileSettings/index.js @@ -0,0 +1,2 @@ +import ProfileSettings from './ProfileSettings.vue'; +export default ProfileSettings; diff --git a/src/views/_sila/ResourceManagement/Power.vue b/src/views/_sila/ResourceManagement/Power.vue new file mode 100644 index 00000000..cc0cc993 --- /dev/null +++ b/src/views/_sila/ResourceManagement/Power.vue @@ -0,0 +1,170 @@ + + + diff --git a/src/views/_sila/ResourceManagement/index.js b/src/views/_sila/ResourceManagement/index.js new file mode 100644 index 00000000..5882decd --- /dev/null +++ b/src/views/_sila/ResourceManagement/index.js @@ -0,0 +1,2 @@ +import Power from './Power.vue'; +export default Power; diff --git a/src/views/_sila/SecurityAndAccess/Certificates/Certificates.vue b/src/views/_sila/SecurityAndAccess/Certificates/Certificates.vue new file mode 100644 index 00000000..0113b80a --- /dev/null +++ b/src/views/_sila/SecurityAndAccess/Certificates/Certificates.vue @@ -0,0 +1,322 @@ + + + diff --git a/src/views/_sila/SecurityAndAccess/Certificates/CsrCountryCodes.js b/src/views/_sila/SecurityAndAccess/Certificates/CsrCountryCodes.js new file mode 100644 index 00000000..a2d70007 --- /dev/null +++ b/src/views/_sila/SecurityAndAccess/Certificates/CsrCountryCodes.js @@ -0,0 +1,345 @@ +import i18n from '@/i18n'; + +export const COUNTRY_LIST = [ + { name: 'Afghanistan', code: 'AF', label: i18n.t('countries.AF') }, + { name: 'Albania', code: 'AL', label: i18n.t('countries.AL') }, + { name: 'Algeria', code: 'DZ', label: i18n.t('countries.DZ') }, + { name: 'American Samoa', code: 'AS', label: i18n.t('countries.AS') }, + { name: 'Andorra', code: 'AD', label: i18n.t('countries.AD') }, + { name: 'Angola', code: 'AO', label: i18n.t('countries.AO') }, + { name: 'Anguilla', code: 'AI', label: i18n.t('countries.AI') }, + { name: 'Antarctica', code: 'AQ', label: i18n.t('countries.AQ') }, + { name: 'Antigua and Barbuda', code: 'AG', label: i18n.t('countries.AG') }, + { name: 'Argentina', code: 'AR', label: i18n.t('countries.AR') }, + { name: 'Armenia', code: 'AM', label: i18n.t('countries.AM') }, + { name: 'Aruba', code: 'AW', label: i18n.t('countries.AW') }, + { name: 'Australia', code: 'AU', label: i18n.t('countries.AU') }, + { name: 'Austria', code: 'AT', label: i18n.t('countries.AT') }, + { name: 'Azerbaijan', code: 'AZ', label: i18n.t('countries.AZ') }, + { name: 'Bahamas, The', code: 'BS', label: i18n.t('countries.BS') }, + { name: 'Bahrain', code: 'BH', label: i18n.t('countries.BH') }, + { name: 'Bangladesh', code: 'BD', label: i18n.t('countries.BD') }, + { name: 'Barbados', code: 'BB', label: i18n.t('countries.BB') }, + { name: 'Belarus', code: 'BY', label: i18n.t('countries.BY') }, + { name: 'Belgium', code: 'BE', label: i18n.t('countries.BE') }, + { name: 'Belize', code: 'BZ', label: i18n.t('countries.BZ') }, + { name: 'Benin', code: 'BJ', label: i18n.t('countries.BJ') }, + { name: 'Bermuda', code: 'BM', label: i18n.t('countries.BM') }, + { name: 'Bhutan', code: 'BT', label: i18n.t('countries.BT') }, + { name: 'Bolivia', code: 'BO', label: i18n.t('countries.BO') }, + { + name: 'Bonaire, Sint Eustatius and Saba', + code: 'BQ', + label: i18n.t('countries.BQ'), + }, + { + name: 'Bosnia and Herzegovina ', + code: 'BA', + label: i18n.t('countries.BA'), + }, + { name: 'Bostwana', code: 'BW', label: i18n.t('countries.BW') }, + { name: 'Bouvet Island', code: 'BV', label: i18n.t('countries.BV') }, + { name: 'Brazil', code: 'BR', label: i18n.t('countries.BR') }, + { + name: 'British Indian Ocean Territory', + code: 'IO', + label: i18n.t('countries.IO'), + }, + { name: 'Brunei Darussalam ', code: 'BN', label: i18n.t('countries.BN') }, + { name: 'Bulgaria', code: 'BG', label: i18n.t('countries.BG') }, + { name: 'Burkina Faso', code: 'BF', label: i18n.t('countries.BF') }, + { name: 'Burundi', code: 'BI', label: i18n.t('countries.BI') }, + { name: 'Cabo Verde', code: 'CV', label: i18n.t('countries.CV') }, + { name: 'Cambodia', code: 'KH', label: i18n.t('countries.KH') }, + { name: 'Cameroon', code: 'CM', label: i18n.t('countries.CM') }, + { name: 'Canada', code: 'CA', label: i18n.t('countries.CA') }, + { name: 'Cayman Islands', code: 'KY', label: i18n.t('countries.KY') }, + { + name: 'Central African Republic', + code: 'CF', + label: i18n.t('countries.CF'), + }, + { name: 'Chad', code: 'TD', label: i18n.t('countries.TD') }, + { name: 'Chile', code: 'CL', label: i18n.t('countries.CL') }, + { name: 'China', code: 'CN', label: i18n.t('countries.CN') }, + { name: 'Christmas Island ', code: 'CX', label: i18n.t('countries.CX') }, + { name: 'Cocos(Keeling) Islands', code: 'CC', label: i18n.t('countries.CC') }, + { name: 'Columbia', code: 'CO', label: i18n.t('countries.CO') }, + { name: 'Comoros', code: 'KM', label: i18n.t('countries.KM') }, + { + name: 'Congo, The Democratic Republic of the', + code: 'CD', + label: i18n.t('countries.CD'), + }, + { name: 'Congo', code: 'CG', label: i18n.t('countries.CG') }, + { name: 'Cook Islands', code: 'CK', label: i18n.t('countries.CK') }, + { name: 'Costa Rica', code: 'CR', label: i18n.t('countries.CR') }, + { name: 'Croatia', code: 'HR', label: i18n.t('countries.HR') }, + { name: 'Cuba', code: 'CU', label: i18n.t('countries.CU') }, + { name: 'Curaçao', code: 'CW', label: i18n.t('countries.CW') }, + { name: 'Cyprus', code: 'CY', label: i18n.t('countries.CY') }, + { name: 'Czechia', code: 'CZ', label: i18n.t('countries.CZ') }, + { name: "Côte d'Ivoire", code: 'CI', label: i18n.t('countries.CI') }, + { name: 'Denmark', code: 'DK', label: i18n.t('countries.DK') }, + { name: 'Djibouti', code: 'DJ', label: i18n.t('countries.DJ') }, + { name: 'Dominica', code: 'DM', label: i18n.t('countries.DM') }, + { name: 'Dominican Republic', code: 'DO', label: i18n.t('countries.DO') }, + { name: 'Ecuador', code: 'EC', label: i18n.t('countries.EC') }, + { name: 'Egypt', code: 'EG', label: i18n.t('countries.EG') }, + { name: 'El Salvador', code: 'SV', label: i18n.t('countries.SV') }, + { name: 'Equatorial Guinea ', code: 'GQ', label: i18n.t('countries.GQ') }, + { name: 'Eritrea', code: 'ER', label: i18n.t('countries.ER') }, + { name: 'Estonia', code: 'EE', label: i18n.t('countries.EE') }, + { name: 'Eswatini', code: 'SZ', label: i18n.t('countries.SZ') }, + { name: 'Ethiopia', code: 'ET', label: i18n.t('countries.ET') }, + { + name: 'Falkland Islands (Malvinas)', + code: 'FK', + label: i18n.t('countries.FK'), + }, + { name: 'Faroe Islands', code: 'FO', label: i18n.t('countries.FO') }, + { name: 'Fiji', code: 'FJ', label: i18n.t('countries.FJ') }, + { name: 'Finland', code: 'FI', label: i18n.t('countries.FI') }, + { name: 'France', code: 'FR', label: i18n.t('countries.FR') }, + { name: 'French Guiana', code: 'GF', label: i18n.t('countries.GF') }, + { name: 'French Polynesia', code: 'PF', label: i18n.t('countries.PF') }, + { + name: 'French Southern Territories', + code: 'TF', + label: i18n.t('countries.TF'), + }, + { name: 'Gabon', code: 'GA', label: i18n.t('countries.GA') }, + { name: 'Gambia, The', code: 'GM', label: i18n.t('countries.GM') }, + { name: 'Georgia', code: 'GE', label: i18n.t('countries.GE') }, + { name: 'Germany', code: 'DE', label: i18n.t('countries.DE') }, + { name: 'Ghana', code: 'GH', label: i18n.t('countries.GH') }, + { name: 'Gibraltar', code: 'GI', label: i18n.t('countries.GI') }, + { name: 'Greece', code: 'GR', label: i18n.t('countries.GR') }, + { name: 'Greenland', code: 'GL', label: i18n.t('countries.GL') }, + { name: 'Grenada', code: 'GD', label: i18n.t('countries.GD') }, + { name: 'Guadeloupe', code: 'GP', label: i18n.t('countries.GP') }, + { name: 'Guam', code: 'GU', label: i18n.t('countries.GU') }, + { name: 'Guatemala', code: 'GT', label: i18n.t('countries.GT') }, + { name: 'Guernsey', code: 'GG', label: i18n.t('countries.GG') }, + { name: 'Guinea', code: 'GN', label: i18n.t('countries.GN') }, + { name: 'Guinea-Bissau', code: 'GW', label: i18n.t('countries.GW') }, + { name: 'Guyana', code: 'GY', label: i18n.t('countries.GY') }, + { name: 'Haiti', code: 'HT', label: i18n.t('countries.HT') }, + { + name: 'Heard Island and McDonald Islands', + code: 'HM', + label: i18n.t('countries.HM'), + }, + { name: 'Holy See', code: 'VA', label: i18n.t('countries.VA') }, + { name: 'Honduras', code: 'HN', label: i18n.t('countries.HN') }, + { name: 'Hong Kong', code: 'HK', label: i18n.t('countries.HK') }, + { name: 'Hungary', code: 'HU', label: i18n.t('countries.HU') }, + { name: 'Iceland', code: 'IS', label: i18n.t('countries.IS') }, + { name: 'India', code: 'IN', label: i18n.t('countries.IN') }, + { name: 'Indonesia', code: 'ID', label: i18n.t('countries.ID') }, + { + name: 'Iran, Islamic Republic of', + code: 'IR', + label: i18n.t('countries.IR'), + }, + { name: 'Iraq', code: 'IQ', label: i18n.t('countries.IQ') }, + { name: 'Ireland', code: 'IE', label: i18n.t('countries.IE') }, + { name: 'Isle of Man', code: 'IM', label: i18n.t('countries.IM') }, + { name: 'Israel', code: 'IL', label: i18n.t('countries.IL') }, + { name: 'Italy', code: 'IT', label: i18n.t('countries.IT') }, + { name: 'Jamaica', code: 'JM', label: i18n.t('countries.JM') }, + { name: 'Japan', code: 'JP', label: i18n.t('countries.JP') }, + { name: 'Jersey', code: 'JE', label: i18n.t('countries.JE') }, + { name: 'Jordan', code: 'JO', label: i18n.t('countries.JO') }, + { name: 'Kazakhstan', code: 'KZ', label: i18n.t('countries.KZ') }, + { name: 'Kenya', code: 'KE', label: i18n.t('countries.KE') }, + { name: 'Kiribati', code: 'KI', label: i18n.t('countries.KI') }, + { name: 'Korea, Republic of', code: 'KR', label: i18n.t('countries.KR') }, + { + name: "Korea, Democratic People's Republic of", + code: 'KP', + label: i18n.t('countries.KP'), + }, + { name: 'Kuwait', code: 'KW', label: i18n.t('countries.KW') }, + { name: 'Kyrgyzstan', code: 'KG', label: i18n.t('countries.KG') }, + { + name: "Lao People's Democratic Republic", + code: 'LA', + label: i18n.t('countries.LA'), + }, + { name: 'Latvia', code: 'LV', label: i18n.t('countries.LV') }, + { name: 'Lebanon', code: 'LB', label: i18n.t('countries.LB') }, + { name: 'Lesotho', code: 'LS', label: i18n.t('countries.LS') }, + { name: 'Liberia', code: 'LR', label: i18n.t('countries.LR') }, + { name: 'Libya', code: 'LY', label: i18n.t('countries.LY') }, + { name: 'Liechtenstein', code: 'LI', label: i18n.t('countries.LI') }, + { name: 'Lithuania', code: 'LT', label: i18n.t('countries.LT') }, + { name: 'Luxembourg', code: 'LU', label: i18n.t('countries.LU') }, + { name: 'Macao', code: 'MO', label: i18n.t('countries.MO') }, + { + name: 'Macedonia, The Former Yugoslav Republic of', + code: 'MK', + label: i18n.t('countries.MK'), + }, + { name: 'Madagascar', code: 'MG', label: i18n.t('countries.MG') }, + { name: 'Malawi', code: 'MW', label: i18n.t('countries.MW') }, + { name: 'Malaysia', code: 'MY', label: i18n.t('countries.MY') }, + { name: 'Maldives', code: 'MV', label: i18n.t('countries.MV') }, + { name: 'Mali', code: 'ML', label: i18n.t('countries.ML') }, + { name: 'Malta', code: 'MT', label: i18n.t('countries.MT') }, + { name: 'Marshall Islands', code: 'MH', label: i18n.t('countries.MH') }, + { name: 'Martinique', code: 'MQ', label: i18n.t('countries.MQ') }, + { name: 'Mauritania', code: 'MR', label: i18n.t('countries.MR') }, + { name: 'Mauritius', code: 'MU', label: i18n.t('countries.MU') }, + { name: 'Mayotte', code: 'YT', label: i18n.t('countries.YT') }, + { name: 'Mexico', code: 'MX', label: i18n.t('countries.MX') }, + { + name: 'Micronesia, Federated States of', + code: 'FM', + label: i18n.t('countries.FM'), + }, + { name: 'Moldova, Republic of', code: 'MD', label: i18n.t('countries.MD') }, + { name: 'Monaco', code: 'MC', label: i18n.t('countries.MC') }, + { name: 'Mongolia', code: 'MN', label: i18n.t('countries.MN') }, + { name: 'Montenegro', code: 'ME', label: i18n.t('countries.ME') }, + { name: 'Montserrat', code: 'MS', label: i18n.t('countries.MS') }, + { name: 'Morocco', code: 'MA', label: i18n.t('countries.MA') }, + { name: 'Mozambique', code: 'MZ', label: i18n.t('countries.MZ') }, + { name: 'Myanmar', code: 'MM', label: i18n.t('countries.MM') }, + { name: 'Namibia', code: 'NA', label: i18n.t('countries.NA') }, + { name: 'Nauru', code: 'NR', label: i18n.t('countries.NR') }, + { name: 'Nepal', code: 'NP', label: i18n.t('countries.NP') }, + { name: 'Netherlands', code: 'NL', label: i18n.t('countries.NL') }, + { name: 'New Caledonia', code: 'NC', label: i18n.t('countries.NC') }, + { name: 'New Zealand', code: 'NZ', label: i18n.t('countries.NZ') }, + { name: 'Nicaragua', code: 'NI', label: i18n.t('countries.NI') }, + { name: 'Niger', code: 'NE', label: i18n.t('countries.NE') }, + { name: 'Nigeria', code: 'NG', label: i18n.t('countries.NG') }, + { name: 'Niue', code: 'NU', label: i18n.t('countries.NU') }, + { name: 'Norfolk Island', code: 'NF', label: i18n.t('countries.NF') }, + { + name: 'Northern Mariana Islands', + code: 'MP', + label: i18n.t('countries.MP'), + }, + { name: 'Norway', code: 'NO', label: i18n.t('countries.NO') }, + { name: 'Oman', code: 'OM', label: i18n.t('countries.OM') }, + { name: 'Pakistan', code: 'PK', label: i18n.t('countries.PK') }, + { name: 'Palau', code: 'PW', label: i18n.t('countries.PW') }, + { name: 'Palestine', code: 'PS', label: i18n.t('countries.PS') }, + { name: 'Panama', code: 'PA', label: i18n.t('countries.PA') }, + { name: 'Papua New Guinea', code: 'PG', label: i18n.t('countries.PG') }, + { name: 'Paraguay', code: 'PY', label: i18n.t('countries.PY') }, + { name: 'Peru', code: 'PE', label: i18n.t('countries.PE') }, + { name: 'Philippines', code: 'PH', label: i18n.t('countries.PH') }, + { name: 'Pitcairn', code: 'PN', label: i18n.t('countries.PN') }, + { name: 'Poland', code: 'PL', label: i18n.t('countries.PL') }, + { name: 'Portugal', code: 'PT', label: i18n.t('countries.PT') }, + { name: 'Puerto Rico', code: 'PR', label: i18n.t('countries.PR') }, + { name: 'Qatar', code: 'QA', label: i18n.t('countries.QA') }, + { name: 'Romania', code: 'RO', label: i18n.t('countries.RO') }, + { name: 'Russian Federation', code: 'RU', label: i18n.t('countries.RU') }, + { name: 'Rwanda', code: 'RW', label: i18n.t('countries.RW') }, + { name: 'Réunion', code: 'RE', label: i18n.t('countries.RE') }, + { name: 'Saint Barthélemy', code: 'BL', label: i18n.t('countries.BL') }, + { + name: 'Saint Helena, Ascension and Tristan da Cunha', + code: 'SH', + label: i18n.t('countries.SH'), + }, + { name: 'Saint Kitts and Nevis ', code: 'KN', label: i18n.t('countries.KN') }, + { name: 'Saint Lucia', code: 'LC', label: i18n.t('countries.LC') }, + { name: 'Saint Martin', code: 'MF', label: i18n.t('countries.MF') }, + { + name: 'Saint Pierre and Miquelon', + code: 'PM', + label: i18n.t('countries.PM'), + }, + { + name: 'Saint Vincent and the Grenadines', + code: 'VC', + label: i18n.t('countries.VC'), + }, + { name: 'Samoa', code: 'WS', label: i18n.t('countries.WS') }, + { name: 'San Marino ', code: 'SM', label: i18n.t('countries.SM') }, + { name: 'Sao Tome and Principe', code: 'ST', label: i18n.t('countries.ST') }, + { name: 'Saudi Arabia', code: 'SA', label: i18n.t('countries.SA') }, + { name: 'Senegal', code: 'SN', label: i18n.t('countries.SN') }, + { name: 'Serbia', code: 'RS', label: i18n.t('countries.RS') }, + { name: 'Seychelles', code: 'SC', label: i18n.t('countries.SC') }, + { name: 'Sierra Leone', code: 'SL', label: i18n.t('countries.SL') }, + { name: 'Singapore', code: 'SG', label: i18n.t('countries.SG') }, + { name: 'Sint Maarten', code: 'SX', label: i18n.t('countries.SX') }, + { name: 'Slovakia', code: 'SK', label: i18n.t('countries.SK') }, + { name: 'Slovenia', code: 'SI', label: i18n.t('countries.SI') }, + { name: 'Solomon Islands', code: 'SB', label: i18n.t('countries.SB') }, + { name: 'Somalia', code: 'SO', label: i18n.t('countries.SO') }, + { name: 'South Africa ', code: 'ZA', label: i18n.t('countries.ZA') }, + { + name: 'South Georgia and the South Sandwich Islands', + code: 'GS', + label: i18n.t('countries.GS'), + }, + { name: 'South Sudan', code: 'SS', label: i18n.t('countries.SS') }, + { name: 'Spain', code: 'ES', label: i18n.t('countries.ES') }, + { name: 'Sri Lanka', code: 'LK', label: i18n.t('countries.LK') }, + { name: 'Sudan', code: 'SD', label: i18n.t('countries.SD') }, + { name: 'Suriname', code: 'SR', label: i18n.t('countries.SR') }, + { name: 'Svalbard and Jan Mayen', code: 'SJ', label: i18n.t('countries.SJ') }, + { name: 'Sweden', code: 'SE', label: i18n.t('countries.SE') }, + { name: 'Switzerland', code: 'CH', label: i18n.t('countries.CH') }, + { name: 'Syrian Arab Republic', code: 'SY', label: i18n.t('countries.SY') }, + { name: 'Taiwan', code: 'TW', label: i18n.t('countries.TW') }, + { name: 'Tajikistan', code: 'TJ', label: i18n.t('countries.TJ') }, + { + name: 'Tanzania, United Republic of', + code: 'TZ', + label: i18n.t('countries.TZ'), + }, + { name: 'Thailand', code: 'TH', label: i18n.t('countries.TH') }, + { name: 'Timor-Leste', code: 'TL', label: i18n.t('countries.TL') }, + { name: 'Togo', code: 'TG', label: i18n.t('countries.TG') }, + { name: 'Tokelau', code: 'TK', label: i18n.t('countries.TK') }, + { name: 'Tonga', code: 'TO', label: i18n.t('countries.TO') }, + { name: 'Trinidad and Tobago', code: 'TT', label: i18n.t('countries.TT') }, + { name: 'Tunisia', code: 'TN', label: i18n.t('countries.TN') }, + { name: 'Turkey', code: 'TR', label: i18n.t('countries.TR') }, + { name: 'Turkmenistan', code: 'TM', label: i18n.t('countries.TM') }, + { + name: 'Turks and Caicos Islands', + code: 'TC', + label: i18n.t('countries.TC'), + }, + { name: 'Tuvalu', code: 'TV', label: i18n.t('countries.TV') }, + { name: 'Uganda', code: 'UG', label: i18n.t('countries.UG') }, + { name: 'Ukraine', code: 'UA', label: i18n.t('countries.UA') }, + { name: 'United Arab Emirates', code: 'AE', label: i18n.t('countries.AE') }, + { name: 'United Kingdom', code: 'GB', label: i18n.t('countries.GB') }, + { + name: 'United States Minor Outlying Islands', + code: 'UM', + label: i18n.t('countries.UM'), + }, + { + name: 'United States of America', + code: 'US', + label: i18n.t('countries.US'), + }, + { name: 'Uruguay', code: 'UY', label: i18n.t('countries.UY') }, + { name: 'Uzbekistan', code: 'UZ', label: i18n.t('countries.UZ') }, + { name: 'Vanuatu', code: 'VU', label: i18n.t('countries.VU') }, + { name: 'Venezuela', code: 'VE', label: i18n.t('countries.VE') }, + { name: 'Viet Nam', code: 'VN', label: i18n.t('countries.VN') }, + { + name: 'Virgin Islands, British', + code: 'VG', + label: i18n.t('countries.VG'), + }, + { name: 'Virgin Islands, U.S', code: 'VI', label: i18n.t('countries.VI') }, + { name: 'Wallis and Futuna', code: 'WF', label: i18n.t('countries.WF') }, + { name: 'Western Sahara', code: 'EH', label: i18n.t('countries.EH') }, + { name: 'Yemen', code: 'YE', label: i18n.t('countries.YE') }, + { name: 'Zambia', code: 'ZM', label: i18n.t('countries.ZM') }, + { name: 'Zimbabwe', code: 'ZW', label: i18n.t('countries.ZW') }, + { name: 'Åland Islands', code: 'AX', label: i18n.t('countries.AX') }, +]; diff --git a/src/views/_sila/SecurityAndAccess/Certificates/ModalGenerateCsr.vue b/src/views/_sila/SecurityAndAccess/Certificates/ModalGenerateCsr.vue new file mode 100644 index 00000000..d76f9fe1 --- /dev/null +++ b/src/views/_sila/SecurityAndAccess/Certificates/ModalGenerateCsr.vue @@ -0,0 +1,496 @@ + + + diff --git a/src/views/_sila/SecurityAndAccess/Certificates/ModalUploadCertificate.vue b/src/views/_sila/SecurityAndAccess/Certificates/ModalUploadCertificate.vue new file mode 100644 index 00000000..f4db7a26 --- /dev/null +++ b/src/views/_sila/SecurityAndAccess/Certificates/ModalUploadCertificate.vue @@ -0,0 +1,168 @@ + + + diff --git a/src/views/_sila/SecurityAndAccess/Certificates/index.js b/src/views/_sila/SecurityAndAccess/Certificates/index.js new file mode 100644 index 00000000..aff57b59 --- /dev/null +++ b/src/views/_sila/SecurityAndAccess/Certificates/index.js @@ -0,0 +1,2 @@ +import Certificates from './Certificates.vue'; +export default Certificates; diff --git a/src/views/_sila/SecurityAndAccess/Ldap/Ldap.vue b/src/views/_sila/SecurityAndAccess/Ldap/Ldap.vue new file mode 100644 index 00000000..1f2108de --- /dev/null +++ b/src/views/_sila/SecurityAndAccess/Ldap/Ldap.vue @@ -0,0 +1,435 @@ + + + diff --git a/src/views/_sila/SecurityAndAccess/Ldap/ModalAddRoleGroup.vue b/src/views/_sila/SecurityAndAccess/Ldap/ModalAddRoleGroup.vue new file mode 100644 index 00000000..6ea2561a --- /dev/null +++ b/src/views/_sila/SecurityAndAccess/Ldap/ModalAddRoleGroup.vue @@ -0,0 +1,164 @@ + + + diff --git a/src/views/_sila/SecurityAndAccess/Ldap/TableRoleGroups.vue b/src/views/_sila/SecurityAndAccess/Ldap/TableRoleGroups.vue new file mode 100644 index 00000000..5ae3e3d1 --- /dev/null +++ b/src/views/_sila/SecurityAndAccess/Ldap/TableRoleGroups.vue @@ -0,0 +1,269 @@ + + + diff --git a/src/views/_sila/SecurityAndAccess/Ldap/index.js b/src/views/_sila/SecurityAndAccess/Ldap/index.js new file mode 100644 index 00000000..6ae3abfc --- /dev/null +++ b/src/views/_sila/SecurityAndAccess/Ldap/index.js @@ -0,0 +1,2 @@ +import Ldap from './Ldap.vue'; +export default Ldap; diff --git a/src/views/_sila/SecurityAndAccess/Policies/Policies.vue b/src/views/_sila/SecurityAndAccess/Policies/Policies.vue new file mode 100644 index 00000000..1dc197c7 --- /dev/null +++ b/src/views/_sila/SecurityAndAccess/Policies/Policies.vue @@ -0,0 +1,213 @@ + + + + + diff --git a/src/views/_sila/SecurityAndAccess/Policies/index.js b/src/views/_sila/SecurityAndAccess/Policies/index.js new file mode 100644 index 00000000..77023908 --- /dev/null +++ b/src/views/_sila/SecurityAndAccess/Policies/index.js @@ -0,0 +1,2 @@ +import Policies from './Policies.vue'; +export default Policies; diff --git a/src/views/_sila/SecurityAndAccess/Sessions/Sessions.vue b/src/views/_sila/SecurityAndAccess/Sessions/Sessions.vue new file mode 100644 index 00000000..07ee725d --- /dev/null +++ b/src/views/_sila/SecurityAndAccess/Sessions/Sessions.vue @@ -0,0 +1,294 @@ + + + + diff --git a/src/views/_sila/SecurityAndAccess/Sessions/index.js b/src/views/_sila/SecurityAndAccess/Sessions/index.js new file mode 100644 index 00000000..aa113aff --- /dev/null +++ b/src/views/_sila/SecurityAndAccess/Sessions/index.js @@ -0,0 +1,2 @@ +import Sessions from './Sessions.vue'; +export default Sessions; diff --git a/src/views/_sila/SecurityAndAccess/UserManagement/ModalSettings.vue b/src/views/_sila/SecurityAndAccess/UserManagement/ModalSettings.vue new file mode 100644 index 00000000..0f05123c --- /dev/null +++ b/src/views/_sila/SecurityAndAccess/UserManagement/ModalSettings.vue @@ -0,0 +1,215 @@ + + + diff --git a/src/views/_sila/SecurityAndAccess/UserManagement/ModalUser.vue b/src/views/_sila/SecurityAndAccess/UserManagement/ModalUser.vue new file mode 100644 index 00000000..0f8757ce --- /dev/null +++ b/src/views/_sila/SecurityAndAccess/UserManagement/ModalUser.vue @@ -0,0 +1,386 @@ + + + diff --git a/src/views/_sila/SecurityAndAccess/UserManagement/TableRoles.vue b/src/views/_sila/SecurityAndAccess/UserManagement/TableRoles.vue new file mode 100644 index 00000000..61ef1ee8 --- /dev/null +++ b/src/views/_sila/SecurityAndAccess/UserManagement/TableRoles.vue @@ -0,0 +1,92 @@ + + + diff --git a/src/views/_sila/SecurityAndAccess/UserManagement/UserManagement.vue b/src/views/_sila/SecurityAndAccess/UserManagement/UserManagement.vue new file mode 100644 index 00000000..c6c556c8 --- /dev/null +++ b/src/views/_sila/SecurityAndAccess/UserManagement/UserManagement.vue @@ -0,0 +1,391 @@ + + + + + diff --git a/src/views/_sila/SecurityAndAccess/UserManagement/index.js b/src/views/_sila/SecurityAndAccess/UserManagement/index.js new file mode 100644 index 00000000..c3aebec3 --- /dev/null +++ b/src/views/_sila/SecurityAndAccess/UserManagement/index.js @@ -0,0 +1,2 @@ +import UserManagement from './UserManagement.vue'; +export default UserManagement; diff --git a/src/views/_sila/Settings/DateTime/DateTime.vue b/src/views/_sila/Settings/DateTime/DateTime.vue new file mode 100644 index 00000000..f5e063d1 --- /dev/null +++ b/src/views/_sila/Settings/DateTime/DateTime.vue @@ -0,0 +1,417 @@ + + + diff --git a/src/views/_sila/Settings/DateTime/index.js b/src/views/_sila/Settings/DateTime/index.js new file mode 100644 index 00000000..2df21eae --- /dev/null +++ b/src/views/_sila/Settings/DateTime/index.js @@ -0,0 +1,2 @@ +import DateTime from './DateTime.vue'; +export default DateTime; diff --git a/src/views/_sila/Settings/Network/ModalDns.vue b/src/views/_sila/Settings/Network/ModalDns.vue new file mode 100644 index 00000000..7f127173 --- /dev/null +++ b/src/views/_sila/Settings/Network/ModalDns.vue @@ -0,0 +1,92 @@ + + + diff --git a/src/views/_sila/Settings/Network/ModalHostname.vue b/src/views/_sila/Settings/Network/ModalHostname.vue new file mode 100644 index 00000000..f3221ec7 --- /dev/null +++ b/src/views/_sila/Settings/Network/ModalHostname.vue @@ -0,0 +1,110 @@ + + + diff --git a/src/views/_sila/Settings/Network/ModalIpv4.vue b/src/views/_sila/Settings/Network/ModalIpv4.vue new file mode 100644 index 00000000..dcf4a579 --- /dev/null +++ b/src/views/_sila/Settings/Network/ModalIpv4.vue @@ -0,0 +1,165 @@ + + + diff --git a/src/views/_sila/Settings/Network/ModalMacAddress.vue b/src/views/_sila/Settings/Network/ModalMacAddress.vue new file mode 100644 index 00000000..d563f4ce --- /dev/null +++ b/src/views/_sila/Settings/Network/ModalMacAddress.vue @@ -0,0 +1,109 @@ + + + diff --git a/src/views/_sila/Settings/Network/Network.vue b/src/views/_sila/Settings/Network/Network.vue new file mode 100644 index 00000000..2abbcd7a --- /dev/null +++ b/src/views/_sila/Settings/Network/Network.vue @@ -0,0 +1,167 @@ + + + diff --git a/src/views/_sila/Settings/Network/NetworkGlobalSettings.vue b/src/views/_sila/Settings/Network/NetworkGlobalSettings.vue new file mode 100644 index 00000000..30287673 --- /dev/null +++ b/src/views/_sila/Settings/Network/NetworkGlobalSettings.vue @@ -0,0 +1,161 @@ + + + diff --git a/src/views/_sila/Settings/Network/NetworkInterfaceSettings.vue b/src/views/_sila/Settings/Network/NetworkInterfaceSettings.vue new file mode 100644 index 00000000..023d29bc --- /dev/null +++ b/src/views/_sila/Settings/Network/NetworkInterfaceSettings.vue @@ -0,0 +1,117 @@ + + + diff --git a/src/views/_sila/Settings/Network/TableDns.vue b/src/views/_sila/Settings/Network/TableDns.vue new file mode 100644 index 00000000..569109f1 --- /dev/null +++ b/src/views/_sila/Settings/Network/TableDns.vue @@ -0,0 +1,145 @@ + + + diff --git a/src/views/_sila/Settings/Network/TableIpv4.vue b/src/views/_sila/Settings/Network/TableIpv4.vue new file mode 100644 index 00000000..75870031 --- /dev/null +++ b/src/views/_sila/Settings/Network/TableIpv4.vue @@ -0,0 +1,169 @@ + + + diff --git a/src/views/_sila/Settings/Network/index.js b/src/views/_sila/Settings/Network/index.js new file mode 100644 index 00000000..97bf0397 --- /dev/null +++ b/src/views/_sila/Settings/Network/index.js @@ -0,0 +1,2 @@ +import Network from './Network.vue'; +export default Network; diff --git a/src/views/_sila/Settings/PowerRestorePolicy/PowerRestorePolicy.vue b/src/views/_sila/Settings/PowerRestorePolicy/PowerRestorePolicy.vue new file mode 100644 index 00000000..06e30f3e --- /dev/null +++ b/src/views/_sila/Settings/PowerRestorePolicy/PowerRestorePolicy.vue @@ -0,0 +1,91 @@ + + + diff --git a/src/views/_sila/Settings/PowerRestorePolicy/index.js b/src/views/_sila/Settings/PowerRestorePolicy/index.js new file mode 100644 index 00000000..fab0d477 --- /dev/null +++ b/src/views/_sila/Settings/PowerRestorePolicy/index.js @@ -0,0 +1,2 @@ +import PowerRestorePolicy from './PowerRestorePolicy.vue'; +export default PowerRestorePolicy; -- cgit v1.2.3