summaryrefslogtreecommitdiff
path: root/src/components
AgeCommit message (Collapse)AuthorFilesLines
2026-09-28Add asset tag edit functionality to overview pageHEADmasterNishant Tiwari1-1/+9
Implemented the ability to view and edit the system asset tag directly from the Overview page, including a modal dialog for editing, Vuex store action for saving, and truncation in the app header. Changes: - Added ModalAssetTag.vue component with: - Form input for editing the asset tag value - Vuelidate validation requiring a non-empty tag - Updated OverviewServer.vue to: - Display asset tag in the system information section - Add inline edit button using Carbon edit icon - Dispatch saveAssetTag store action with toast feedback - Refresh global system info after a successful save - Added saveAssetTag action to SystemStore.js using PATCH against the system path endpoint - Updated AppHeader.vue to truncate asset tags longer than 30 characters with an ellipsis, preserving full value in the title attribute for accessibility - Added translation keys for asset tag label, modal title, and success/error toast messages in en-US, ka-GE, and ru-RU locale files Testing: - Verified asset tag displays correctly in system info section - Verified modal opens, validates, and submits correctly - Verified PATCH request updates asset tag on the server - Validated success and error toast notifications display - Confirmed long asset tags are truncated in the header Change-Id: I6ac51dfc24b9d40986b74e9220cff955b029d659 Signed-off-by: Nishant Tiwari <tiwari.nishant@ibm.com>
2026-09-28Implemented Reboot BMC with TanStack Vue QueryNikhil Ashoka2-2/+104
This change migrates the Reboot BMC page from Vuex to TanStack Query and Composition API Key changes: 1. Redfish types (src/api/types/redfish.ts): - Adds Manager interface with LastResetTime and Actions fields, typed in PascalCase to match the Redfish schema 2. BMC reboot composable (src/components/Composables/useRebootBmc.ts): - Replaces Vuex controls/getLastBmcRebootTime and controls/rebootBmc with a Composition API composable - Uses useRedfishRoot() to resolve the Managers collection URI from ServiceRoot; fetches the first member (the BMC Manager) in queryFn - Configures staleTime: Infinity and gcTime: Infinity because LastResetTime only changes on a reboot; onSuccess invalidation handles the one real change event, avoiding unnecessary refetches - mutationFn is pure (no i18n strings, no toast calls); view owns all user-facing messages via try/catch - onSuccess calls invalidateQueries only (no optimistic update, which would be immediately overwritten by the refetch) - resetTarget prefers Actions['#Manager.Reset'].target from the cached Manager, falls back to the conventional Redfish path 3. View modernization (src/views/Operations/RebootBmc/RebootBmc.vue): - Refactors from Options API to <script setup>, using useRebootBmc(), useLoadingBar(), and useToast() composables - Loader semantics: isLoading drives the loading bar on first fetch only; cached data renders instantly on re-navigation with a silent background refetch (no flicker) - Reboot button disabled when bmcQuery.isError is true, preventing mutation dispatch with an unavailable reset target - Confirm dialog uses eventBus.$emit('confirm:open', ...) directly, matching the $confirm global property contract without Options API 4. Store cleanup (src/store/modules/Operations/ControlStore.js): - Removes lastBmcRebootTime state, getter, and setLastBmcRebootTime mutation (now owned by bmcQuery in the composable) - Removes getLastBmcRebootTime and rebootBmc actions (replaced by useQuery and useMutation in useRebootBmc.ts) - Removes unused i18n import - Remaining ControlStore state (isOperationInProgress, lastPowerOperationTime) and server power actions are unchanged; they are still used by ServerPowerOperations.vue and Firmware.vue 5. Toast rendering fix (src/components/Composables/useToast.ts, src/plugins/toast.js): - Fixes modelValue: false → true for danger/error toasts in both the Composition API useToast composable and the Options API ToastPlugin; modelValue: false suppressed toast rendering entirely in bootstrap-vue-next, making error toasts invisible app-wide Tested-by: Manual testing on development server - Last BMC reboot time loads correctly from Manager.LastResetTime - Reboot button triggers GracefulRestart POST; success and error toasts display with localized messages - Loading bar shows on first page load and during reboot POST; subsequent visits render cached data instantly - Read-only user receives the global Unauthorized toast (403 interceptor) followed by the page-level error toast Change-Id: I5d49527f176041958e48889d6261780fcffdd9df Signed-off-by: Nikhil Ashoka <a.nikhil@ibm.com>
2026-08-20Fix translation bugs and remove unused keysNikhil Ashoka1-2/+3
- Fix three structural bugs found by locale audit: - ka-GE: rename pageFirmware.sectionTitleHostCards to sectionTitleBiosCards to match the key used by FirmwareCardsBios.vue. - ru-RU: move global.offline.okToRetryCancelToLogin out of global.toast.offline to global.offline, restoring the correct nesting path that matches en-US and ka-GE. - PostCodeLogs: fix deleteAllLogs confirm dialog to reference pagePostCodeLogs.modal.deleteAllMessage/Title instead of pageEventLogs.modal.*, decoupling the two pages so future wording changes to Event Logs cannot silently affect Post Code Logs. - TableDns: fix delete action title passed as a raw key string literal to TableRowAction; wrap with i18n.global.t() so the translated string is rendered instead of the key path. - Remove 30 unused translation keys from all three locale files (en-US, ru-RU, ka-GE). They were not being used. Change-Id: I7edd9b326e1a4ad096508d5ed1661e1234c7f571 Signed-off-by: Nikhil Ashoka <a.nikhil@ibm.com>
2026-08-13Fix header checkbox select-all in View All modeAravinth Sri Krishna Raja Raghavan1-8/+10
When "View All" is selected under Items per Page, perPage is 0. The selection logic fell back to `this.perPage || 10`, treating the falsy 0 as a page size of 10. Clicking the header checkbox therefore selected only the first 10 displayed logs instead of all of them, and the selected count did not reflect the true total. Treat perPage === 0 as "View All" so the computed page bounds span every item. The calculation is centralized in a getPageBounds() helper shared by the select-all handler and the header checkbox state logic, keeping the two paths consistent. Also fix a UI state bug where, after a resolve/unresolve action, the row checkboxes appeared unselected but the selection header remained visible and still referenced the stale selection. clearSelectedRows() is now called in a finally() block so it runs whether the dispatch succeeds or fails, keeping the selection state consistent. fix issue for: https://github.com/openbmc/webui-vue/issues/142 Change-Id: I46b33c1d73c633d6c7df446ceecaf4222be9ea90 Signed-off-by: Aravinth Sri Krishna Raja Raghavan <aravinths@ami.com>
2026-07-20Fix toast visibility and auto-hide behaviorAravinth Sri Krishna Raja Raghavan1-3/+5
In bootstrap-vue-next 0.40.8 a toast's modelValue controls visibility: a number auto-hides after that many milliseconds, true shows until dismissed, and false is never rendered. Because non-success toasts were created with modelValue: false, only success toasts (which used a numeric value) ever appeared. Give every variant a valid modelValue so error, info, and warning toasts render. Success toasts auto-dismiss after 10s; all other variants stay visible until the user closes them manually so important messages are not missed. Change-Id: I2d885aa81d3cfb040d3e29f570f8c8855beae0f1 Signed-off-by: Aravinth Sri Krishna Raja Raghavan <aravinths@ami.com>
2026-06-25Add Access Denied alert to SOL consoleAravinth S3-20/+56
Non-admin users navigating to the Serial Over LAN page had no clear feedback — the page either failed silently or showed a generic error. Show the SOL button and nav item to all users and render an Access Denied alert when the session lacks the required privilege. A reusable AccessDeniedAlert global component is introduced so other restricted pages can adopt the same pattern with a single line. Change-Id: Ifbb93bb966c801b3a72230e8f3b752b62ef22929 Signed-off-by: Aravinth Sri Krishna Raja Raghavan <aravinths@ami.com>
2026-06-09Implemented Power page with VueQuery and Composition APINikhil Ashoka3-3/+238
This change switches power control to the EnvironmentMetrics-based Redfish endpoint, derives minimum and maximum power cap values dynamically from Redfish data, and updates ControlMode and SetPoint handling to align with the latest schema. Key changes: 1. Power control API and Redfish types: - Removes src/api/services/powerControlService.ts; fetching and PATCH are handled in the composable using shared Redfish utilities - Adds EnvironmentMetrics and PowerLimitWatts types in src/api/types/redfish.ts with proper ControlMode enum ('Automatic' | 'Disabled' | 'Manual' | 'Override') - Chassis gains an EnvironmentMetrics link - Composable resolves the Chassis collection via useRedfishCollection<Chassis>('/redfish/v1/Chassis'), picks the first chassis with EnvironmentMetrics, and fetches that resource with useQuery; mutation sends PATCH and invalidates queries to refetch fresh server state (returns Promise<void>; view owns user-facing messages) 2. Power control composable (src/components/Composables/usePowerControl.ts): - Replaces Vuex PowerControlStore with a Composition API-based composable - Uses useRedfishRoot() and useRedfishCollection for cached ServiceRoot and Chassis; uses TanStack Query to load and cache EnvironmentMetrics power data - Configures staleTime (30s freshness window) and refetchInterval (30s automatic polling when tab visible) for live power consumption updates - Note: Only controls the first Chassis with EnvironmentMetrics in multi-chassis systems (intentional for current use case) - Forwards AbortSignal to API calls for proper request cancellation - Reuses shouldRetry function from useAllSubResources - Derives dynamic min and max power cap values from Redfish PowerLimitWatts.AllowableMin/Max - Provides a mutation for submitting updated SetPoint and ControlMode; omits SetPoint when disabling to avoid sending invalid values - Handles all ControlMode enum values (Automatic, Disabled, Manual, Override); UI sets Automatic/Disabled but preserves Manual/Override when read from server - Type-safe parameters (number | null instead of string coercion) 3. Toast composable and global plugin: - useToast.ts (renamed from .js) uses bootstrap-vue-next useToast() with TypeScript types; keeps successToast/errorToast API with i18n titles - Type restricted to string for simplicity; includes TODO for potential VNode support expansion if needed - src/plugins/toast.js continues to expose global $toast for Options API - BVToastMixin.js updated to use modelValue and extract VNode content for consistency with bootstrap-vue-next 0.40.8 - Both implementations use isStatus: true for consistent toast styling with status icons 4. Views modernization: - Refactors src/views/ResourceManagement/Power.vue to use <script setup>, usePowerControl(), and the new toast composable; submitForm uses try/catch and t('pageServerPowerOperations.toast.*') for success/error toasts - Implements value caching to preserve user's typed input when toggling power cap checkbox on/off - Guards form sync watcher with v$.value?.$dirty check to prevent overwriting in-progress edits during background refetch - Loader semantics: show on first load (isLoading) and mutations, but render cached data instantly on subsequent visits with silent background refetch (avoids flicker) - Renamed validator from 'between' to 'withinPowerCapRange' to avoid confusion with Vuelidate's built-in validator - Handles all ControlMode values (Automatic, Disabled, Manual, Override) in form state synchronization - Refactors src/views/Overview/OverviewPower.vue to read from the power control composable instead of Vuex; implements settled computed to emit overview-power-complete only when chassis collection is fetched AND either no EnvironmentMetrics exists or metrics query has completed (prevents premature completion) - Shows power cap for all active control modes (Automatic, Manual, Override) - Removes mapState/mapActions usage and related Vuex wiring 5. Store cleanup and typing: - Deletes src/store/modules/ResourceManagement/PowerControlStore.js - Removes PowerControlStore registration from src/store/index.js - Updates src/store/api.d.ts to match actual implementation (set_auth_token with snake_case, accepts string | null | undefined) - Adds src/i18n.d.ts to provide basic typing for the shared api Tested-by: Manual testing on development server - Power consumption and cap values load correctly from EnvironmentMetrics with automatic 30-second polling (refetchInterval) when tab is visible - Min and max power cap values reflect dynamic limits from Redfish - Updating the power cap and enable state sends correct SetPoint and ControlMode values; SetPoint is omitted when disabling - All ControlMode values (Automatic, Disabled, Manual, Override) are handled correctly - User's typed values are preserved when toggling power cap checkbox - Form edits are not overwritten by background refetch (dirty state guard) - Success/error toasts show localized messages with consistent modelValue-based timing and status icons - Overview power card reflects updated power state; overview loader waits for both chassis and metrics queries to settle before completing - Request cancellation works properly on component unmount Change-Id: Ic61631efd8790150a5e2914822f1dd25bd77305a Signed-off-by: Nikhil Ashoka <a.nikhil@ibm.com>
2026-06-02Add dynamic language selector in headerAravinth S2-21/+63
Enable users to switch between English, Russian, and Georgian languages directly from the application header, eliminating the need to log out and log back in to change language preferences. Prior to this enhancement, changing the interface language required users to: - Log out from their current session - Return to the login page - Select a different language - Log back in with credentials This workflow disruption made it impractical for operators to switch languages during their work sessions. The new language selector in the user dropdown allows users to: - Change language instantly from any page without logout - Switch between languages as needed during a single session - Maintain active sessions and current page context - Access all three supported languages (English, Russian, Georgian) The language preference persists across sessions via the Vuex store, so the selected language remains active after logout and login. This improvement is particularly valuable for: - Multilingual teams sharing the same BMC system - Operators who need to verify terminology in different languages - Training scenarios where instructors switch between languages - International deployments with diverse user bases Implementation includes: - Language dropdown in user menu (between Profile Settings and Log Out) - getAvailableLanguages() helper in i18n.js using Intl.DisplayNames to automatically generate language labels in "{English} - {Native}" format (e.g., "Russian - Русский", "US - English") - getRoutePageTitle() helper in i18n.js to eliminate duplicated route-to-title logic between App.vue and PageTitle.vue - Reactive translations via Vue i18n computed properties - Page title updates in both DOM (PageTitle component) and browser tab (App.vue document.title) - Component re-rendering triggered by routerKey increment - Centralized localStorage persistence in GlobalStore.js setLanguagePreference mutation - Translation keys added to en-US.json, ru-RU.json, and ka-GE.json (global.pageTitle.missing, appHeader.language) All interface text, navigation menus, and page titles update immediately when language is changed. Change-Id: Ie11523c5ff23fc1600aca2d8ee5adb542c5ce4b3 Signed-off-by: Aravinth Sri Krishna Raja Raghavan <aravinths@ami.com>
2026-05-27Add privilege check for firmware update pageAravinth S1-0/+53
Disables firmware update page buttons for users with "Read-only" privileges to improve user experience. This helps users understand when they lack permissions to perform firmware updates based on their current session role. This is a UI-only improvement. Backend (bmcweb) validates all operations according to Redfish privilege rules regardless of UI state. Changes: - Created reusable usePrivilegeCheck() composable - Added privilege check to disable firmware update controls for read-only users - Added info banner to notify "The attempted action is not accessible from the logged in account. Contact your system administrator to check your privilege role". - Follows Vue 3 Composition API patterns Tested-by: Manual testing with Administrator, Operator, and ReadOnly roles Change-Id: I7e6e28267b094ab04f7dcc4b1e0cc609dc7f5e28 Signed-off-by: Aravinth Sri Krishna Raja Raghavan <aravinths@ami.com>
2026-03-09Implemented dynamic fetching of the sensorsNishant Tiwari1-1/+1
This commit updates the implementation to dynamically discover all chassis and fetch sensors from each. Changes include: - Updated useSensors to use /redfish/v1/Chassis collection endpoint - Fixed discoverParentsWithSubResource to properly check individual chassis members for Sensors sub-resource The implementation now automatically discovers all chassis, fetches sensors from each, and deduplicates results by @odata.id. Tested: Verified sensors display from all chassis in multi-chassis systems Change-Id: Idadaef1be1b019cdded52ce7debe6f5f795e985e Signed-off-by: Nishant Tiwari <tiwari.nishant@ibm.com>
2026-03-05Implemented styling changesVedangi Mittal8-39/+74
- Implemented styling changes to restore UI appearance, behavior, margins, and sizing consistent with Vue 2. - Fixed broken styling across the search bar, filters, buttons, pagination, app navigation, cards, badges, and toast messages. Change-Id: If4aa37635136d94ebd3ad0a7533260bd788c2436 Signed-off-by: Vedangi Mittal <vedangimittal3004@gmail.com>
2026-02-24Implement Bootstrap 5 confirm modal dialogJason Westover1-33/+253
Replace window.confirm() shim with proper Bootstrap 5 modal using b-modal component from bootstrap-vue-next. This provides a consistent, themeable dialog experience matching the Vue 2 $bvModal.msgBoxConfirm() appearance across the application. Key changes: - ConfirmModal.vue: Full BS5 modal with request queue, ESC key support, optional processing state, and proper cleanup in beforeUnmount - All original Bootstrap 4 parameters preserved for consistent behavior The modal supports: - Multiple simultaneous confirm requests via queue - Custom titles and button text with i18n integration - Multi-line message support: `messageLines` - Variant styling (primary default, danger, secondary) - Auto-focus control for safer UX on destructive actions - Full theme customization via CSS variables - Modal positioned at top (not centered) matching Vue 2 behavior - No header close button for controlled dismiss behavior - Optional checkbox confirmation via confirmationText parameter Keyboard and focus enhancements: - Auto-focus configurable button when modal opens (cancel by default) - ESC key cancels dialog - $confirm() accepts optional second parameter for extra options - Added aria properties and removed unused refs Files using dialogs to test: - Logs: Dumps, EventLogs, PostCodeLogs - Operations: ServerPowerOperations - Security: Sessions, Certificates, Ldap, UserManagement - Settings: Network (IPv4/IPv6), SnmpAlerts Testing: - Manually tested most confirmation dialogs across the application - Verified keyboard-only interaction from Dumps page delete dialog Change-Id: I03fed8d79f40f47b43bc4b2c788396cf183b3e99 Signed-off-by: Jason Westover <jwestover@nvidia.com>
2026-02-24Fix spelling mistakes using codespellGeorge Liu1-1/+1
Change-Id: Iefb20fbf212f11d104aa1cff4f050e9ce6c60200 Signed-off-by: George Liu <liuxiwei@ieisystem.com>
2026-02-13Implemented Sensors page with VueQuery and Composition APINishant Tiwari5-0/+367
Introduce reusable Redfish API infrastructure and modernize the Sensors page to use Vue 3 Composition API with TanStack Query, eliminating the need for Vuex store patterns for server state management. This change provides a foundation for migrating other hardware status pages (Memory, Processors, Drives, etc.) to a more maintainable and performant architecture. Key changes: 1. Generic Redfish composables (src/api/composables/): - useRedfishRoot.ts: Caches ServiceRoot and detects OData support - useRedfishCollection.ts: Smart collection fetcher with OData $expand/$select support and graceful fallback - useAllSubResources.ts: Generic pattern for fetching nested resources from parent collections 2. Sensors page modernization: - Migrated from Vuex store to TanStack Query (Vue Query) - Created useSensors.ts composable for data fetching - Removed legacy Thermal and PowerSubsystem endpoints - Now uses only modern /Chassis/{id}/Sensors collection - Maintains existing UI/UX with Bootstrap Vue table 3. TypeScript support: - Added tsconfig.json and webpack ts-loader configuration - Created required Redfish type definitions - Preserves Redfish PascalCase property names 4. Performance optimizations: - Auto-detects and uses OData $expand for fewer API calls - Implements automatic caching and deduplication - Smart retry logic with exponential backoff - 30-second stale time with 5-minute garbage collection Benefits for future development: - The generic composables are designed for reuse across components: // Fetch all Memory from all Systems useAllSubResources<Memory>('/redfish/v1/Systems', 'Memory') // Fetch all Drives from all Storage useAllSubResources<Drive>('/redfish/v1/Storage', 'Drives') - Implemented TypeScript types - Reuses existing Bootstrap table components - Preserves existing UI/UX - Focuses on infrastructure reusability This pattern eliminates boilerplate Vuex store code and provides better developer experience with automatic loading states, error handling, and background refetching. Tested-by: Manual testing on development server - Sensors page loads correctly - OData optimization works when supported - Graceful fallback when OData unavailable - All table functionality preserved (sorting, filtering, export, cancel and searching) Change-Id: Id605319140f607b295d24085f3681f09ac0d5ebd Signed-off-by: Nishant Tiwari <tiwari.nishant@ibm.com>
2026-01-20Migrate build system from Vue-CLI to ViteJason Westover6-44/+40
"Vue CLI is in Maintenance Mode!" https://cli.vuejs.org/ Vite is created by Vue's creator and is the recommended build tool for Vue 3. It supports most of the configured conventions in Vue CLI. Dev Server startup is 60X faster and HMR is noticeably faster ~50ms. Better Tree-shaking support and modern ESM support. This migration preserves all existing functionality while eliminating Vue 2 legacy dependencies. Build Output Comparison (gzipped): Master (Webpack) Vite Delta CSS: 39 KB 45 KB +6 KB (+15%) JS: 505 KB 483 KB -22 KB (-4.4%) Total dist: 556 KB 544 KB -12 KB (-2.2%) Build time: ~29s ~7s ~4x faster Build System Changes: - Replace vue.config.js with vite.config.js - Remove babel.config.js (Vite uses esbuild) - Remove postcss.config.js (Vite handles PostCSS internally) - Add index.html to project root with ESM module entry point - Add custom Vite plugin for directory import resolution - Rename .eslintrc.js to .eslintrc.cjs (ESM compatibility) Dependency Updates: - Remove @vue/cli-* packages and webpack-related dependencies - Add vite, @vitejs/plugin-vue, @vitejs/plugin-basic-ssl - Add vite-svg-loader, vite-plugin-compression - Upgrade Bootstrap to 5.3.8 - Upgrade Sass to 1.97.2 (supports quietDeps option) - Upgrade xterm to @xterm/xterm v6 (new package name) - Upgrade xterm-addon-* to @xterm/addon-* packages - Upgrade vue-i18n to v11 - Upgrade eslint to 8.57.1 - Upgrade axios-cache-interceptor to latest Environment Variable Migration: - Change VUE_APP_* prefix to VITE_* (Vite convention) - Replace process.env with import.meta.env in source files - Update .env.ibm, .env.intel example files - Update documentation with new variable names ESM Module Compatibility: - Replace require('@/eventBus') with ESM imports (~23 files) - Ensure event bus listeners are registered/unregistered with stable handler references to prevent leaks - Replace require.context with import.meta.glob in i18n.js - Convert SVG inline loader to vite-svg-loader component imports SCSS/Sass Updates: - Remove tilde (~) prefix from node_modules imports - Add silenceDeprecations and quietDeps for Bootstrap warnings - Fix color() function syntax for Sass 2.0 compatibility xterm.js v6 Migration: - Update imports to @xterm/xterm, @xterm/addon-attach, @xterm/addon-fit - Replace deprecated setOption() with constructor options - Add CSS fix for helper textarea visibility Dev Server: - Configure HTTPS with @vitejs/plugin-basic-ssl - Preserve proxy configuration for BMC backend - Add WebSocket proxy auth token forwarding for /console, /kvm, /vm - Configure HMR on separate WebSocket path (/ws_hmr) X-Auth-Token Persistence (opt-in): - Add VITE_STORE_SESSION env flag for non-cookie auth backends - Persist X-Auth-Token to session cookie when enabled - Enables direct browser navigation to Redfish endpoints Follow-on: CI/testing updates (unit test runner + run-ci alignment) Some Jest config changes skipped here since this follow-on commit switches to Vitest. follow-up change is here: https://gerrit.openbmc.org/c/openbmc/webui-vue/+/86511 Tested: Sanity tested most navigational screens in the default UI, including many different types of API calls. Tested most build options. Tested the new i18n:report and it is working correctly. Change-Id: Ie84d1ed6121ffe7d2ddb379084d833b8d5a6fccf Signed-off-by: Jason Westover <jwestover@nvidia.com>
2026-01-14Fix Unit tests and useI18n() misusejason westover13-42/+0
Vue 3's vue-i18n requires useI18n() to be called within setup() or reactive contexts. Calling it in Options API data() creates disconnected i18n instances that cannot resolve linked messages. Component fixes: - Enable globalInjection in i18n.js for automatic $t injection - Remove explicit useI18n() imports from 84 components that incorrectly called useI18n().t in their data() functions Unit test fixes: - Mock @/i18n module in jest.setup.js because Webpack's require.context() does not work in Jest, leaving the real module with no locale messages loaded - Re-export real createI18nInstance so i18n unit tests work - Update snapshots to reflect real translated text instead of raw translation keys - Fix b-form-radio/checkbox stubs to wrap content in div for proper data-test-id attribute inheritance - Remove duplicate i18n plugin installations from individual test files that caused 'already registered' warnings - Suppress expected missing-key warning in vendor overlay test Tested: - Sanity testing on webui, ensured translations work. - All Unit tests pass (19/19) with no Errors or Warnings. Change-Id: I9789acd823261eccc7affde0957dd22e8fec06b1 Signed-off-by: Jason Westover <jwestover@nvidia.com>
2026-01-12Migrate Vuelidate from v1 to v2 APIJason Westover1-3/+3
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>
2025-12-18Fix Vue 3 v-model and form event handlingJason Westover1-7/+53
Add proper Vue 3 v-model support to components that are used with v-model bindings from parent components: - FormFile: Add modelValue prop with computed getter/setter, emit both update:modelValue and input events for backward compatibility, maintain internal state when parent uses @input instead of v-model - Modal components: Add modelValue prop and isModalVisible computed property for proper two-way binding with bootstrap-vue-next Fix form validation event handling by changing @input to @change for select, radio, and checkbox elements. In Vue 3 with bootstrap-vue-next, these elements do not fire @input correctly on first selection. Components updated: - FormFile.vue - ModalConfigureConnection.vue - ModalAddDestination.vue - ModalUser.vue - ModalSettings.vue - ModalAddRoleGroup.vue - FirmwareModalUpdateFirmware.vue - FactoryResetModal.vue - ModalGenerateCsr.vue - ModalUploadCertificate.vue - DumpsModalConfirmation.vue Change-Id: Ib7376fdff8e9ab5e764f5fae80ac05a761b70312 Signed-off-by: Jason Westover <jwestover@nvidia.com>
2025-12-02Fixed Loading bar overriding the App Headertiwari-nishant1-1/+2
- Made the position of loading bar relative to top header - Loading bar now appears below the App header Change-Id: I1b0ecca593a039c8354160b505e6aa299c40e6f9 Signed-off-by: Nishant Tiwari <tiwari.nishant@ibm.com>
2025-11-22Migrate to Bootstrap 5 and remove Vue compat pluginjason westover22-256/+505
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>
2025-10-31Fixed linter warning messagesHariharan Rangasamy7-0/+7
Warnings: src/components/AppHeader/AppHeader.vue 235:18 warning The "refresh" event has been triggered but not declared on `emits` option vue/require-explicit-emits src/components/Global/FormFile.vue 11:23 warning The "input" event has been triggered but not declared on `emits` option vue/require-explicit-emits src/components/Global/Search.vue 64:18 warning The "change-search" event has been triggered but not declared on `emits` option vue/require-explicit-emits 68:18 warning The "clear-search" event has been triggered but not declared on `emits` option vue/require-explicit-emits src/components/Global/TableDateFilter.vue 165:18 warning The "change" event has been triggered but not declared on `emits` option vue/require-explicit-emits src/components/Global/TableFilter.vue 107:18 warning The "filter-change" event has been triggered but not declared on `emits` option vue/require-explicit-emits src/components/Global/TableRowAction.vue 47:21 warning The "click-table-action" event has been triggered but not declared on `emits` option vue/require-explicit-emits src/components/Global/TableToolbar.vue 16:27 warning The "batch-action" event has been triggered but not declared on `emits` option vue/require-explicit-emits 23:27 warning The "clear-selected" event has been triggered but not declared on `emits` option vue/require-explicit-emits src/views/Logs/Dumps/DumpsModalConfirmation.vue 85:18 warning The "ok" event has been triggered but not declared on `emits` option vue/require-explicit-emits src/views/Operations/FactoryReset/FactoryResetModal.vue 122:18 warning The "okConfirm" event has been triggered but not declared on `emits` option vue/require-explicit-emits src/views/Operations/Firmware/FirmwareFormUpdate.vue 6:9 warning `<template>` require directive vue/no-lone-template src/views/Operations/Firmware/FirmwareModalSwitchToRunning.vue 7:16 warning The "ok" event has been triggered but not declared on `emits` option vue/require-explicit-emits src/views/Operations/Firmware/FirmwareModalUpdateFirmware.vue 7:16 warning The "ok" event has been triggered but not declared on `emits` option vue/require-explicit-emits src/views/Operations/VirtualMedia/ModalConfigureConnection.vue 127:18 warning The "ok" event has been triggered but not declared on `emits` option vue/require-explicit-emits src/views/SecurityAndAccess/Certificates/ModalUploadCertificate.vue 147:18 warning The "ok" event has been triggered but not declared on `emits` option vue/require-explicit-emits src/views/SecurityAndAccess/Ldap/ModalAddRoleGroup.vue 147:18 warning The "ok" event has been triggered but not declared on `emits` option vue/require-explicit-emits 163:18 warning The "hidden" event has been triggered but not declared on `emits` option vue/require-explicit-emits src/views/SecurityAndAccess/UserManagement/ModalSettings.vue 200:18 warning The "ok" event has been triggered but not declared on `emits` option vue/require-explicit-emits src/views/SecurityAndAccess/UserManagement/ModalUser.vue 370:18 warning The "ok" event has been triggered but not declared on `emits` option vue/require-explicit-emits 386:18 warning The "hidden" event has been triggered but not declared on `emits` option vue/require-explicit-emits src/views/Settings/DateTime/DateTime.vue 328:18 warning The "change" event has been triggered but not declared on `emits` option vue/require-explicit-emits src/views/Settings/Network/ModalDefaultGateway.vue 103:18 warning The "ok" event has been triggered but not declared on `emits` option vue/require-explicit-emits 114:18 warning The "hidden" event has been triggered but not declared on `emits` option vue/require-explicit-emits src/views/Settings/Network/ModalDns.vue 81:18 warning The "ok" event has been triggered but not declared on `emits` option vue/require-explicit-emits 92:18 warning The "hidden" event has been triggered but not declared on `emits` option vue/require-explicit-emits src/views/Settings/Network/ModalHostname.vue 99:18 warning The "ok" event has been triggered but not declared on `emits` option vue/require-explicit-emits 110:18 warning The "hidden" event has been triggered but not declared on `emits` option vue/require-explicit-emits src/views/Settings/Network/ModalIpv4.vue 148:18 warning The "ok" event has been triggered but not declared on `emits` option vue/require-explicit-emits 165:18 warning The "hidden" event has been triggered but not declared on `emits` option vue/require-explicit-emits src/views/Settings/Network/ModalIpv6.vue 120:18 warning The "ok" event has been triggered but not declared on `emits` option vue/require-explicit-emits 135:18 warning The "hidden" event has been triggered but not declared on `emits` option vue/require-explicit-emits src/views/Settings/Network/ModalMacAddress.vue 98:18 warning The "ok" event has been triggered but not declared on `emits` option vue/require-explicit-emits 109:18 warning The "hidden" event has been triggered but not declared on `emits` option vue/require-explicit-emits src/views/Settings/SnmpAlerts/ModalAddDestination.vue 124:18 warning The "ok" event has been triggered but not declared on `emits` option vue/require-explicit-emits 139:18 warning The "hidden" event has been triggered but not declared on `emits` option vue/require-explicit-emits Change-Id: I66fb82679cc12003ad435c5c73bb67c2d70b3658 Signed-off-by: Hariharan Rangasamy <hariharanr@ami.com>
2025-05-09i18n: clean up invalid i18n.t commentJason M. Bills1-2/+0
The i18n.t method changed to i18n.global.t for vue3 support, so this comment is no longer valid. I found this on the Intel router and am pushing this for completeness, but I didn't test this environment. Tested: Did not test Change-Id: Ieba177977583bf05f6444466a630f4e6f83af91f Signed-off-by: Jason M. Bills <jason.m.bills@intel.com>
2025-03-26style: add Sass configuration for Vue 3suryav972414-53/+5
Configure sass in the vue.config.js file and remove the import of the scss file from each page. The styles are handled by the css loaderOptions in the config file. Every component and page has the appropriate style applied. The appearance adjusts to the openBmc webui in Vue 2. Change-Id: I3773c063646185b80b7bd61d05aa80a993cbd121 Signed-off-by: Surya Venkatesan <suryav@ami.com>
2025-02-05[RFC] add Dumps page to navigationPaul Fertser1-0/+5
The functionality of initiating and displaying dumps is not enabled by default in bmcweb but it's used by at least Facebook, Fii and IBM. While IBM has their own overview page and router code which makes it accessible the others do not. I do not know what the policy should be about exposing features like that, please comment. Guess ideally webui should discover available features on startup and add to the menu dynamically, any takers? Change-Id: I9c85ecaba009547c69166c5cbaba62a005d75f48 Signed-off-by: Paul Fertser <fercerpav@gmail.com>
2024-10-03Date and time page helper issueSurya Venkatesan1-1/+1
Invalid feedback element if condition change, Helper import change in date time page and table date filter global component. Change-Id: I1f01943229b78d4dff36f3905fe3781ba696d528 Signed-off-by: Surya Venkatesan <suryav@ami.com>
2024-10-03Invalid feedback if condition changeSurya Venkatesan1-4/+4
For required, invalid format, minlength, maxlength, date, pattern validation if condition change in the few components Change-Id: Id8eebc140301e48dde833a604ca92426ebf77c9c Signed-off-by: Surya Venkatesan <suryav@ami.com>
2024-10-03Firmware page vuelidate and form file error fixSurya Venkatesan1-1/+1
While add a file in the form file vuelidate error occurs and global component form file not return a file, by emit the $event in form file fix the issue. Change-Id: Icbeddc7a3faa262f12e85268206ae70950f37905 Signed-off-by: Surya Venkatesan <suryav@ami.com>
2024-10-03Vuelidate, I18n, and filter are upgraded to vue3Surya V7-18/+27
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>
2024-10-03i18n, vue-router and vuex upgradeEd Tanous13-44/+85
1. Configuration of i18n legacy as false. 2. Translation function t is called using the useI18n. 3. Used the i18n.global.t() function from i18n instead of this.$t() 4. Event bus error that occurred during logout. 5. Implemented vue-router 4.4.0 and vuex upgrade to 4.1.0 Change-Id: I9464d82c76dcc1445ce271983ea3ab9d7b03d265 Signed-off-by: Surya Venkatesan <suryav@ami.com>
2024-10-03Upgrade vue3 and all dependenciesEd Tanous17-17/+73
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>
2024-07-12Break long file name into multiple linesFarah Rasheed1-0/+1
In the FormFile component, break a long file name into multiple lines using the word-break CSS property. This ensures that long file names are properly displayed within their container without causing overflow issues. Fixes #121 The word-break property will allow the text to wrap onto the next line at any character, maintaining the layout integrity and improving the user interface. Change-Id: Id534dd4e8f7737a60483272f2fdd70deb7a8a002 Signed-off-by: Farah Rasheed <Farah.Rasheed1@dell.com>
2024-04-24Inline the header svgEd Tanous1-0/+1
Ideally we wouldn't have to pull down this file on every load, and we could just inline it. This commit implements inlining. Note, that this requires a minor modification to the unit test, as the inline header remains when unit tests are run. It's not clear at this time how to make inlining plugin operate on unit tests, but it doesn't seem terribly important. Tested: Loading the webui no longer shows a download of logo-header Change-Id: Iaa5be5b5a84e0ad6e1f430113f929032835c9f1c Signed-off-by: Ed Tanous <ed@tanous.net>
2024-03-05Reformat files with new linterEd Tanous6-15/+22
All changes should be whitespace, and were done using npm run-script lint. Change-Id: I943c6b435c5c872841af5affc1e89910468b5ca6 Signed-off-by: Ed Tanous <ed@tanous.net>
2023-08-10Add SNMP alerts page and test hooksKonstantin Aladyshev1-0/+5
This page will be included in Configuration section of the primary navigation. The user will be able to delete and add alert destination. Change-Id: I396d19a54ea11724f2c5aec67e20ba9abff947d3 Signed-off-by: Konstantin Aladyshev <aladyshev22@gmail.com>
2023-06-20Fix kvm session and add event busKonstantin1-0/+5
Bug description: Before this commit KVM window wasn't being closed after logging out Test: Step1. Launch webui on browser and see KVM page on /#/operations/kvm. Step2. Open additional window using 'Open in new tab'. Step3. Navigate to another page. For example, /#/operations/key-clear. Step4. Logout. Window is still open. Change-Id: Ife79ebca41eb4d588c0b8f4fae06135420eda155 Signed-off-by: Konstantin Maskov <sulwirld@gmail.com>
2023-04-10Filter the event log data by severity and statuskirankumarb071-8/+11
In the event logs page, if the filter options are selected for both severity and status, it displays row that falls into either of the two categories: severity or status. The filter options are in two categories: severity [OK, Warning, Critical], and status [Resolved, Unresolved] If select the filter options "Critical" on severity and "Unresolved" on status, it shows every row whose status is "Unresolved" whether its severity is "Ok" or "Warning", If the row data is "Critical" or "Unresolved", it shows in the table. As per the filter selection, it shouldn't show the row data that has "Ok" or "Warning" but the status is "Unresolved"; it should show only the row data that is in both "Critical" and "Unresolved". This commit will work as follows: if different categories are selected, that will be applied with an "and" logic, and within the same category, it will be applied with an "or" logic. Change-Id: I5ddf6e5ebe35c961306e68885febf6f2324ebaee Signed-off-by: Kirankumar Ballapalli <kirankumarb@ami.com>
2023-03-27Added route restrictions based on user privilegeDamian Celico3-1/+25
This commit allows us to add 'exclusiveToRoles' field to route config files, with the list of roles that can access this resource, if needed. In this case, only Administrator can access Virtual-Media page and SOL console, and it is blocked for other users. Signed-off-by: Sivaprabu Ganesan <sivaprabug@ami.com> Change-Id: Ibcee18bd92d97c34414ecaf2caf6af28070c5538
2023-03-15Fix pre commit script breakkirankumarb071-11/+13
There is no validation handle before checking the page title name from the router. Which causes the pre-commit script to through error. This patch set will handle this scenario and fix the break. Change-Id: I5aed3bfeba643c2eb2b2753bf8f6d984b5100361 Signed-off-by: Kirankumar Ballapalli <kirankumarb@ami.com>
2023-02-13Page heading do not translated on language changekirankumarb071-0/+15
Log in and log out of the application, change the language, and login to the application. The heading and title are in the previous language translation is handled in the router, and the languages are selected after the router has rendered.The page title and heading translation are handled after the language is selected. Change-Id: Iba42fe3a535fe0b402f551c3f43e19d5ff12181d Signed-off-by: Kirankumar Ballapalli <kirankumarb@ami.com>
2022-02-04Add Key clear page under Operations sectionSandeepa Singh1-0/+5
This page will allow privileged user to clear encrypted keys. - Only admin and CE login user will be able to see the page - The UI will be different for both, admin and CE login user(service) - This page is IBM only Signed-off-by: Sandeepa Singh <sandeepa.singh@ibm.com> Change-Id: Ic6fe3454de815629a6b2250daa99ab21f2b316c3
2021-12-23Fixed routerKey prop eslint warningKenneth Fullbright1-1/+4
Eslint throws a warning to props that don't have a default value - Added a default value to the routerKey prop. Signed-off-by: Kenneth Fullbright <kennyneedsmilky@gmail.com> Change-Id: I2d9d4abd0512eeadf27f8941a0f391979eb9a80a
2021-12-20Fixed refresh system info on headerkennyneedsmilky1-1/+4
The refresh button in the App header previously only re-rendered the main mage section, this change also refreshes the app header and main content. Signed-off-by: Kenneth Fullbright <kennyneedsmilky@gmail.com> Change-Id: Iff7f3f14bca8ddfd815ccb1b87dd182c4bfd79ba
2021-09-24Rename TableDataFormatter mixin to DataFormatterDixsie Wolmers1-4/+4
Mixin was renamed to reflect usage on all components, not only tables. Signed-off-by: Dixsie Wolmers <dixsie@ibm.com> Change-Id: Ic962ba879fffa39b9f6f93446771fbf6f67915d0
2021-09-03Update login page layoutDerick Montague1-1/+1
This update will: - Change the positioning of the form to be on the left - Add the built on OpenBMC logo to the bottom right corner of the screen - Add the ability to include a GUI custom name using a .env variable. If the variable is not present, the login page will not include the <h1> section heading element. - Remove the word "logo" from the alt attribute for the company logo image used in the application header and on the login page. Github story: https://github.com/openbmc/webui-vue/issues/63 Signed-off-by: Derick Montague <derick.montague@ibm.com> Change-Id: I83ac5aecff0b3858c3ab5f38ab1aaa603d59acf1
2021-08-27Add system information on Appheader pageSukanya Pandey1-9/+30
- Model type and serial number are newly added system info data on Appheader. - On small screens and below system information(model type, serial number and asset tag) will be hidden. - On large screen and below model type and serial number will be visible but asset tag will be hidden. - For all other screens all the system info will be visible. Signed-off-by: Sukanya Pandey <sukapan1@in.ibm.com> Change-Id: Ia844a26f658083cbd5fa9c8f3f6bea8b65ddcd11
2021-08-16Resolve the download bug on postcode logs pageSandeepa Singh1-3/+9
The design has been updated to hide the download button when the key 'AdditionalDataURI' is not present in the redfish API response. Signed-off-by: Sandeepa Singh <sandeepa.singh@ibm.com> Change-Id: If78968ad72e62348b4b81967a3b61c2af53fa020
2021-08-10IA update: Add resource management sectionSandeepa Singh1-5/+14
This is the sixth commit for information architecture changes and has the following changes: - Resource management section has been added - Carbon icon used for resource management section is data--base--alt - Manage power usage page from operations has been moved to resource management - Manage power usage page has been updated to power page Signed-off-by: Sandeepa Singh <sandeepa.singh@ibm.com> Change-Id: If3feb994dbad19dd6cfb1507d976d09643c8e4d6
2021-08-10IA update: Update access and control sectionSandeepa Singh1-20/+20
This is the fifth commit of the information architecture changes and has the following changes: - The icon for access and control has been updated - Access and control section has been updated to security and access section - Security settings page has been updated to policies page and moved to security and access section - Client sessions page has been updated to sessions page - Local user management page has been updated to user management page - SSL certificates page has been updated to certificates page Signed-off-by: Sandeepa Singh <sandeepa.singh@ibm.com> Change-Id: Ie93cee9002742ecf7d33615636f4f159f4395fc4
2021-08-10IA update: Update configuration to settingsSandeepa Singh1-21/+16
This is the fourth update to information architecture changes and has the following changes: - The configuration section is updated to settings - The date and time settings page is updated to date and time - The network settings page is updated to network - The power restore policy page in operations section is moved to settings section Signed-off-by: Sandeepa Singh <sandeepa.singh@ibm.com> Change-Id: I6f5ab25f5227530be430bd39a4d9629b3bf09d8b
2021-08-10IA update: Update control section to operationsSandeepa Singh2-21/+16
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