| 75b02039 | 21-Dec-2025 |
Jason Westover <jwestover@nvidia.com> |
Migrate Vuelidate from v1 to v2 API
Complete the migration from Vuelidate v1 (vuelidate 0.7.7) to v2 (@vuelidate/core 2.0.3 and @vuelidate/validators 2.0.4).
Changes include: - Replace imports from
Migrate Vuelidate from v1 to v2 API
Complete the migration from Vuelidate v1 (vuelidate 0.7.7) to v2 (@vuelidate/core 2.0.3 and @vuelidate/validators 2.0.4).
Changes include: - Replace imports from 'vuelidate/lib/validators' with '@vuelidate/validators' - Convert static 'validations:' objects to 'validations()' methods which return the validation rules object - Update helpers.regex() syntax from v1 two-arg format helpers.regex('name', pattern) to v2 single-arg helpers.regex(pattern) - Create custom macAddress validator using regex since macAddress is not included in @vuelidate/validators v2 - Remove deprecated vuelidate 0.7.7 package from dependencies - Add unit tests for Vuelidate v2 migration verification - Fix DateTime store to continue with DateTime update even if NTP settings update fails - Fix Network Table components (IPv4, IPv6, DNS) missing @ok event handlers for Add modal dialogs - Fix CSR country dropdown by restoring COUNTRY_LIST data and moving useI18n() call to setup() function - Fix disconnected modals in Network page by using eventBus to communicate between child components and parent (hostname, MAC address, default gateway edit buttons)
Tested: - npm run build completes successfully - npm run test:unit passes 66 new Vuelidate validation tests: - VuelidateMixin.spec.js: getValidationState method tests - TableDateFilter.spec.js: Date range validation tests - ModalHostname.spec.js: Hostname validation tests - ModalMacAddress.spec.js: MAC address validation tests - ModalUser.spec.js: User form validation tests - Manual testing performed: - User Management: Create/edit user with password confirmation - LDAP: Enable/disable with conditional field requirements - Date/Time: Switch between NTP and manual modes - Factory Reset: Confirm checkbox validation when server is on - Network Settings: Add IPv4, IPv6, DNS addresses via modals - Network Settings: Edit hostname, MAC address, default gateway - Certificates: Generate CSR with country dropdown working
Change-Id: I0f6b5d89d1791b36977f1a3c16cbd10bca6a484a Signed-off-by: Jason Westover <jwestover@nvidia.com>
show more ...
|
| d36ac8a8 | 03-Nov-2025 |
jason westover <jwestover@nvidia.com> |
Migrate to Bootstrap 5 and remove Vue compat plugin
Complete migration from Bootstrap 4 (bootstrap-vue) to Bootstrap 5 (bootstrap-vue-next) and remove the @vue/compat plugin to finalize the Vue 3 mi
Migrate to Bootstrap 5 and remove Vue compat plugin
Complete migration from Bootstrap 4 (bootstrap-vue) to Bootstrap 5 (bootstrap-vue-next) and remove the @vue/compat plugin to finalize the Vue 3 migration.
Bundle size impact: - Before (Bootstrap 4 + bootstrap-vue): 535 KiB gzipped - After (Bootstrap 5 + bootstrap-vue-next): 511 KiB gzipped - Reduction: 24 KiB (4.5% smaller)
Package updates: - Update bootstrap 4.6.2 -> 5.3.8 - Update bootstrap-vue 2.23.1 -> bootstrap-vue-next 0.40.8 - Remove @vue/compat plugin - Update vue 3.4.29 -> 3.5.24 and related packages - Add mitt 3.0.1 for global event bus - Add vue-demi 0.14.10 for library compatibility
Bootstrap 5 CSS updates: - Replace directional classes: ml/mr/pl/pr -> ms/me/ps/pe - Replace text-left/right -> text-start/end - Replace sr-only -> visually-hidden / visually-hidden-focusable - Update media breakpoint xs -> sm (Bootstrap 5 removed xs) - Update color functions: gray("700") -> $gray-700 - Add form-switch border-radius for curved toggles - Update alert, table, toast, form, and button styles
Bootstrap-Vue-Next API changes: - Use createBootstrap() for plugin registration - Update modal footer slots: #modal-footer -> #footer - Fix form select events: @change -> @update:model-value - Add v-model bindings to modals instead of manual show()/hide() - Update toast system with custom plugin wrapping useToast() - Register components and directives explicitly
Vue 3 specific updates: - Replace $root.$emit with mitt event bus (eventBus.js) - Update render function from h(App) to createApp(App) - Add emits option to components - Use h() instead of $createElement in mixins - Add Vue 3 compile-time feature flags with documentation - Update event listeners: $on/$off to eventBus methods - Add beforeUnmount cleanup for event listeners
New components and significant additions: - src/plugins/toast.js - Custom toast plugin wrapping useToast() for Options API compatibility - src/components/Global/ConfirmModal.vue - Global confirmation dialog shim to replace Bootstrap 4's removed bvModal.msgBoxConfirm - src/eventBus.js - mitt-based event bus with Vue 2-compatible API - Navigation state preservation on page refresh implemented
Critical fixes: - Add global API interceptor to strip Vue reactivity from payloads - Preserve binary data (File, Blob, FormData) in API requests - Fix Generate CSR modal v-model binding for proper open/close - Remove debug logging and fix jest configuration - Fix responsive text visibility in AppHeader - Update BVTableSelectableMixin for proper row selection - Fix BVToastMixin VNode rendering for Vue 3
Vue 3 modal fixes (lazy-loaded components): - Add v-model support to network modals (ModalIpv4, ModalIpv6, ModalDns, ModalHostname, ModalMacAddress, ModalDefaultGateway) by adding modelValue prop, watcher on modelValue that triggers show(), and update:modelValue emit in resetForm - Remove lazy loading from TableIpv4, TableIpv6, TableDns to ensure modal component refs are available when v-model triggers - Fix modal title accessibility by adding title prop to modals (ModalAddDestination, ModalUser, ModalAddRoleGroup, etc.)
i18n fixes (computed properties): - Fix computed properties using i18n translations in ModalAddRoleGroup, ModalUser, and ModalUploadCertificate - Move useI18n() call from data() to setup() and return i18n object - Use i18n.t() instead of $t in computed properties and templates - Prevents "this.$t is not a function" and "_ctx.$t is not a function" errors in Vue 3
Toast notification fixes: - Fix toast progress bar visibility by setting progressProps to undefined (documented way to opt-out) instead of false - Change modelValue prop to interval for auto-dismiss timing - Remove temporary CSS display:none hack from _toasts.scss
Network settings fixes: - Fix checkbox @change event sending Vue reactive proxy object instead of boolean by casting with !! operator in changeDomainNameState and related methods in NetworkGlobalSettings.vue - Ensures API receives plain boolean values in PATCH requests
Navigation fixes: - Fix nav-link styling for navigation items without children by replacing b-nav-item with router-link in AppNavigation.vue - Prevents blue font color from .nav-link CSS class
Configuration updates: - Remove vue-compat webpack configuration - Add Vue 3 feature flags (__VUE_OPTIONS_API__, etc.) - Add .cursor to .gitignore
Accessibility improvements: - Add autocomplete attributes to password and credential inputs - Add modal title props for screen reader support
Build completes successfully and UI behavior matches pre-migration.
Extracted features (to be submitted in follow-up PRs): The following features were removed from this migration PR to keep it focused on the Bootstrap 5 upgrade. They will be submitted separately: 1. UnresponsiveModal - Server connectivity watchdog with auto-retry 2. Auth token persistence - sessionStorage support for X-Auth-Token 3. Hardware store error handling - try/catch, dynamic discovery 4. Login page connecting indicator - Backend polling with spinner 5. Test updates - Jest setup and snapshot updates for Bootstrap-Vue-Next 6. Documentation updates - Vue 3 and Vue I18n v9+ API documentation 7. Enhanced ConfirmModal - Feature-rich confirmation dialog with custom actions
Change-Id: Ib76a58f324b3c926cf536e6e4626e4271639de38 Signed-off-by: Jason Westover <jwestover@nvidia.com>
show more ...
|
| 99fe228e | 20-Aug-2025 |
Aravinth S <aravinths@ami.com> |
Add privilege check to power operation button
Disables power operation buttons for users with "Read-only" privileges. This change ensures that only "Operator" and administrative users can perform po
Add privilege check to power operation button
Disables power operation buttons for users with "Read-only" privileges. This change ensures that only "Operator" and administrative users can perform power operations, preventing unauthorized actions and enhancing system security.
Change-Id: I515ede092cef3c82a110d9534d9f8d3d6afc3135 Signed-off-by: Aravinth S <aravinths@ami.com>
show more ...
|
| a5dbf55f | 13-Jan-2025 |
Huy Le Anh <hule@amperecomputing.com> |
Boot settings: remove oneTimeBootEnabled check
The commit [1] added oneTimeBootEnabled as condition to display he Boot settings menu. It is not reasonable as the option is disabled by default [2] an
Boot settings: remove oneTimeBootEnabled check
The commit [1] added oneTimeBootEnabled as condition to display he Boot settings menu. It is not reasonable as the option is disabled by default [2] and users can configure for a selected boot option to be applied once or permanent. This commit removes the check so that the menu is displayed when the boot source option is supported.
Tested: 1. Log in to BMC Web and go to the server-power-operations page 2. The boot settings options are shown.
[1]: https://github.com/openbmc/webui-vue/commit/918526f20c16a05c261a56814657942a707323dd
[2]: https://github.com/openbmc/openbmc/blob/f8b0a12a3781e1f771630cad1244016b1ed6f8cd/meta-phosphor/recipes-phosphor/settings/phosphor-settings-manager/boot_type.override.yml#L19
Change-Id: I1efd2ae0c201744076e3fb00229c81847e940687 Signed-off-by: Huy Le Anh <hule@amperecomputing.com>
show more ...
|
| 918526f2 | 19-Sep-2024 |
Shubhi Garg <shgarg@nvidia.com> |
Fix power operations as per DMTF redfish spec
[Problem Description]:
1) Power Operations page uses "Orderly" and "Immediate" strings for "Graceful reboot/shutdown" and "Force reboot/shutdown". Thes
Fix power operations as per DMTF redfish spec
[Problem Description]:
1) Power Operations page uses "Orderly" and "Immediate" strings for "Graceful reboot/shutdown" and "Force reboot/shutdown". These names do not align according to redfish spec and causes user confusion.
2) For boot settings, if "BootSourceOverrideEnabled" flag is false, WebUI allows to modify boot options.
[Changes]:
1) Changed reboot/shutdown naming convention as per DMTF redfish spec to view correct names on WebUI.
2) Added info-tooltip to give detailed information on Reboot/Shutdown options. Information is referenced from: https://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/ResetType
3) Added "oneTimeBootEnabled" condition check to render BootSettings if condition is true. "oneTimeBootEnabled" checks BootSourceOverrideEnabled flag, if true then BootSettings will be able to modify boot options.
[Testing]: 1) Load WebUI with the changes and go to Power operations page. 2) Check reboot shutdown names have changes to Graceful reboot/shutdown" and "Force reboot/shutdown". 3) Check if BootSettings template renders as expected.
Change-Id: I5a86e05ee03167ebb93ffd381af3a47c277990fd Signed-off-by: Shubhi Garg <shgarg@nvidia.com>
show more ...
|
| 1a814b9f | 23-Sep-2024 |
Surya Venkatesan <suryav@ami.com> |
LDAP and server power operation page fix
In LDAP loading declare outside the form, form validation condition change, server power operation page validation added and i18n method changed in the event
LDAP and server power operation page fix
In LDAP loading declare outside the form, form validation condition change, server power operation page validation added and i18n method changed in the event log store.
Change-Id: I903b4dec7da1a5a2cc8441c65693c57201405d70 Signed-off-by: Surya Venkatesan <suryav@ami.com>
show more ...
|
| de23ea23 | 11-Jul-2024 |
Surya V <suryav@ami.com> |
Vuelidate, I18n, and filter are upgraded to vue3
While navigating to the pages i18n, vuelidate, and filters errors occurred. i18n, and vuelidate code changes in each page adapted to vue3. Filter glo
Vuelidate, I18n, and filter are upgraded to vue3
While navigating to the pages i18n, vuelidate, and filters errors occurred. i18n, and vuelidate code changes in each page adapted to vue3. Filter global function for date and time format implemented in the main.js file and those files which as called the filter functions.
Change-Id: If1a2ee22d47750faef1c35ef2c263299067d9a20 Signed-off-by: Surya Venkatesan <suryav@ami.com>
show more ...
|
| 7d6b44cb | 23-Mar-2024 |
Ed Tanous <ed@tanous.net> |
Upgrade vue3 and all dependencies
Start the process of porting everything to Vue 3. I have most things working. npm run-scripts build works, npm install works. prettier passes. Styles load, logi
Upgrade vue3 and all dependencies
Start the process of porting everything to Vue 3. I have most things working. npm run-scripts build works, npm install works. prettier passes. Styles load, login works, webui loads.
This was primarily done using the linked documents below. It makes the following design decisions: 1. Vue is put in compat 2 mode, which allows most of the components to work as-is. 2. Bootstrap v4 is used along with bootstrap-vue to keep our components working. 3. Minor changes are made to load the latest versions of vue-router, vuex, and vue-i18n.
I suspect this patchset is good enough to start with, and we can clean up the broken things one patchset at a time. The things that need to happen are:
1. Get remaining features working again. This primiarily is vue-i18n for mixins, and non vue components. This likely needs to be done by not pulling in i18n into the non vue components, then using the .Vue files to do the internationalization in the component context, NOT in the mixin context. Alternatively, we could drop MixIns alltogether. 2. Get custom styles working again. Previously, we used some path hackery in vue.config.js to optionally pre-load styles. This stops working now that we're required to @import our modules. Likely we need some rearangement of the paths such that custom styles are a complete replacement (possibly importing the original) rather than additive with overrides. That's a guess, but I don't really see anyone else doing customization the way we've defined it here. 3. Bootstrap 5 no longer requires ANY custom vue modules, as it has dropped the jquery dependency. We won't be able to pull in bootstrap 5 all at once, so pull in bootstrap 5 under an alias, like "bootstrap5" that we can optionally import 5 or 4. 4. One at a time, start porting components over to Vue3 syntax and bootstrap 5. This will be the bulk of the manual work and review.
The only thing I think left is getting unit tests passing, which I commented out the pre-commit hook to make this PR.
Tested: Code builds. Needs better testing.
[1] https://router.vuejs.org/guide/migration/ [2] https://vue-i18n.intlify.dev/guide/migration/vue3 [3] https://vuelidate-next.netlify.app/migration_guide.html#package-name-and-imports
Change-Id: I5bb3187b9efbf2e4ff63e57994bc528756e2a981 Signed-off-by: Ed Tanous <ed@tanous.net>
show more ...
|
| d1ef18e6 | 06-Apr-2024 |
Paul Fertser <fercerpav@gmail.com> |
Focus default action in modal windows
Users of common WIMP GUIs (as opposed to interfaces primarily meant for touch input) expect dialog boxes to have keyboard focus set on the button for default ac
Focus default action in modal windows
Users of common WIMP GUIs (as opposed to interfaces primarily meant for touch input) expect dialog boxes to have keyboard focus set on the button for default action so that it can be executed by a single key press. Usually that is chosen to proceed with the operation but in cases where that leads to data loss the UI designers often pre-select Cancel as a precaution.
This patch adds suitable property to all invocations of msgBoxConfirm() method of `this.$bvModal` BootstrapVue object. For regular actions the confirmation button is selected and can be activated by Enter or Space bar. For actions deemed dangerous Cancel is focused instead so it takes two key presses (first being Tab to shift the focus) to prooceed.
This also improves accessibility following the Web Content Accessibility Guidelines (WCAG) published by W3C.
Tested: manually verified that modals are consistently shown with the specified button focused, Enter and Space bar key presses produce the same effect as left pointer button click: when Cancel is focused it just closes the window, when OK is focused it sends the corresponding request to the Redfish endpoint.
Change-Id: I66bfd02e48e08dc18994b11bbdd5d6b3ea27047f Signed-off-by: Paul Fertser <fercerpav@gmail.com>
show more ...
|
| 8132399c | 27-Feb-2024 |
Ed Tanous <ed@tanous.net> |
Reformat files with new linter
All changes should be whitespace, and were done using npm run-script lint.
Change-Id: I943c6b435c5c872841af5affc1e89910468b5ca6 Signed-off-by: Ed Tanous <ed@tanous.ne
Reformat files with new linter
All changes should be whitespace, and were done using npm run-script lint.
Change-Id: I943c6b435c5c872841af5affc1e89910468b5ca6 Signed-off-by: Ed Tanous <ed@tanous.net>
show more ...
|
| ed7278a2 | 26-Sep-2022 |
glukhov.mikhail <mikl@greenfil.ru> |
Added correct diagnostic mode display
Before the patch, the diagnostic mode was displayed as "Not available", after the patch "Diagnostic mode".
Test: in the console run the command "busctl set-pro
Added correct diagnostic mode display
Before the patch, the diagnostic mode was displayed as "Not available", after the patch "Diagnostic mode".
Test: in the console run the command "busctl set-property xyz.openbmc_project.State.Host \ /xyz/openbmc_project/state/host0 \ xyz.openbmc_project.State.Host CurrentHostState \ s "xyz.openbmc_project.State.Host.HostState.DiagnosticMode". open the "Server power operations" page, check the Server status
Signed-off-by: glukhov.mikhail <mikl@greenfil.ru> Change-Id: I90d04e05188eb92c4c4b38fe578ae36db0424b5c
show more ...
|
| e6807a4e | 28-Jun-2021 |
Lei YU <yulei.sh@bytedance.com> |
boot: Send current settings on every boot operation
In the boot page, it did not allowed to send the same options. However, there is a case that it is needed to send the boot options anyway.
In typ
boot: Send current settings on every boot operation
In the boot page, it did not allowed to send the same options. However, there is a case that it is needed to send the boot options anyway.
In typical x86 systems, when the BIOS is rebooted, it will clear the boot options during the boot, so the settings in the web page does not reflect to the BMC's boot option settings.
This patch allows to send the options anyway, so as long as user "applies" the settings, the boot options are set to BMC.
Tested: Verify the same boot options settings are set to BMC after BIOS boots.
Signed-off-by: Lei YU <yulei.sh@bytedance.com> Change-Id: I18ce341bbf9d968a78e8d818b005d1774936a48b
show more ...
|
| 68cbbe90 | 14-Jul-2021 |
Sandeepa Singh <sandeepa.singh@ibm.com> |
IA update: Update control section to operations
This is the third update to the information architecture changes and has the following changes:
- The control section has been updated to operations
IA update: Update control section to operations
This is the third update to the information architecture changes and has the following changes:
- The control section has been updated to operations - The server led page has been removed - The firmware page is moved to operations section
Signed-off-by: Sandeepa Singh <sandeepa.singh@ibm.com> Change-Id: I2e23da447890d7bee51892e1f782d5f2db6dded4
show more ...
|