feat: add tabs, product type column, and discovered field - #3417
Conversation
2daa143 to
a98454e
Compare
a98454e to
e1fdf15
Compare
There was a problem hiding this comment.
Pull request overview
Adds UI affordances on the Devices page to segment devices by status and expose additional device metadata, extending the device model to support a “discovered” flag and deriving a “Product Type” column from fwSku.
Changes:
- Adds
discovered?: booleantoDeviceInfo. - Introduces a
mat-tab-groupwith All / Activated / Discovered tabs and client-side tab filtering with per-tab counts. - Adds a “Product Type” table column computed from the firmware SKU bitmask.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 6 comments.
| File | Description |
|---|---|
| src/models/models.ts | Extends DeviceInfo with an optional discovered flag used by the new UI filtering. |
| src/app/devices/devices.component.ts | Adds tab state + filtering, stores server total count, and introduces getProductType() for the new column. |
| src/app/devices/devices.component.html | Adds the tabs UI and renders the new Product Type column in the device table. |
Comments suppressed due to low confidence (1)
src/app/devices/devices.component.ts:193
- The Product Type column is marked sortable (mat-sort-header), but MatTableDataSource will sort by a 'productType' property that doesn't exist on Device. As a result, sorting by this column will not work unless a sortingDataAccessor is provided.
constructor() {
this.selectedDevices = new SelectionModel<Device>(true, [])
this.powerStates = this.devicesService.PowerStates
if (!this.isCloudMode) {
this.displayedColumns = [
'select',
'hostname',
'productType',
'tags',
'actions',
'notification'
]
}
}
c6bc8b9 to
c922b08
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 16 out of 17 changed files in this pull request and generated 1 comment.
Comments suppressed due to low confidence (1)
src/app/devices/devices.component.ts:168
- applyTabFilter() currently sets totalCount to the locally filtered page size for tabs 1/2, while the data itself is still coming from a server-paginated request ($top/$skip). This makes the paginator length inconsistent and (combined with the template gating) prevents users from navigating to other pages while on Activated/Discovered tabs. Also, the new Product Type column is marked sortable in the template, but MatTableDataSource sorting will not work for a computed value unless a sortingDataAccessor is provided.
private applyTabFilter(): void {
let filtered: Device[]
switch (this.activeTab()) {
case 1:
filtered = this.allDevicesData.filter(
(d) => d.deviceInfo?.currentMode != null && d.deviceInfo.currentMode !== 'not activated'
)
this.totalCount.set(filtered.length)
break
case 2:
filtered = this.allDevicesData.filter((d) => d.deviceInfo?.discovered === true)
this.totalCount.set(filtered.length)
break
default:
filtered = this.allDevicesData
this.totalCount.set(this.serverTotalCount)
break
}
this.devices.data = filtered
}
c922b08 to
4158eee
Compare
- Add All/Activated/Discovered tab group to devices list - Add Product Type column derived from fwSku bitmask (ISM/vPro) - Add discovered field to DeviceInfo model - Show paginator on all tabs using server total count - Add i18n keys for tab labels and Product Type header in all 12 locales - Add unit tests for getProductType and tab filter logic - Fix cdk-overlay-backdrop leak in device.spec.ts cypress test Resolves: #3417
b68d35c to
0681000
Compare
- Add All/Activated/Discovered tab group to devices list - Add Product Type column derived from fwSku bitmask (ISM/vPro) - Add discovered field to DeviceInfo model - Show paginator on all tabs using server total count - Add i18n keys for tab labels and Product Type header in all 12 locales - Add unit tests for getProductType and tab filter logic - Fix cdk-overlay-backdrop leak in device.spec.ts cypress test Resolves: #3417
3783c79 to
90be1cd
Compare
- Add All/Activated/Discovered tab group to devices list - Add Product Type column derived from fwSku bitmask (ISM/vPro) - Add discovered field to DeviceInfo model - Show paginator on all tabs using server total count - Add i18n keys for tab labels and Product Type header in all 12 locales - Add unit tests for getProductType and tab filter logic - Fix cdk-overlay-backdrop leak in device.spec.ts cypress test Resolves: #3417
90be1cd to
3dba353
Compare
- Add All/Activated/Discovered tab group to devices list - Add Product Type column derived from fwSku bitmask (ISM/vPro) - Add discovered field to DeviceInfo model - Show paginator on all tabs using server total count - Add i18n keys for tab labels and Product Type header in all 12 locales - Add unit tests for getProductType and tab filter logic - Fix cdk-overlay-backdrop leak in device.spec.ts cypress test Resolves: #3417
3dba353 to
d9a1126
Compare
|
@ShradhaGupta31 : Tried out this PR, the UI seems to be working fine as expected. How about the following column where Type shows - Activated/Discovered and Tags - showcase CCM/ACM Here's what I see with your PR:
|
@sudhir-intc - This PR covers the Product Type and Tabs-related changes only. Since the associated keywords were still under discussion at the time, this PR was limited to the Tabs and Product Type updates only. Now that the keyword changes are finalized, I will raise a separate PR for the Type-related updates. For Tags, the appropriate tag needs to be populated through the API. Once the API provides values such as |
- Add All/Activated/Discovered tab group to devices list - Add Product Type column derived from fwSku bitmask (ISM/vPro) - Add discovered field to DeviceInfo model - Show paginator on all tabs using server total count - Add i18n keys for tab labels and Product Type header in all 12 locales - Add unit tests for getProductType and tab filter logic - Fix cdk-overlay-backdrop leak in device.spec.ts cypress test Resolves: #3417
f0f72ef to
84e429d
Compare
- Add All/Activated/Discovered tab group to devices list - Add Product Type column derived from fwSku bitmask (ISM/vPro) - Add discovered field to DeviceInfo model - Show paginator on all tabs using server total count - Add i18n keys for tab labels and Product Type header in all 12 locales - Add unit tests for getProductType and tab filter logic - Fix cdk-overlay-backdrop leak in device.spec.ts cypress test Resolves: #3417
84e429d to
50609f2
Compare
- Add All/Activated/Discovered tab group to devices list - Add Product Type column derived from fwSku bitmask (ISM/vPro) - Add discovered field to DeviceInfo model - Show paginator on all tabs using server total count - Add i18n keys for tab labels and Product Type header in all 12 locales - Add unit tests for getProductType and tab filter logic - Fix cdk-overlay-backdrop leak in device.spec.ts cypress test Resolves: #3417
- Add All/Activated/Discovered tab group to devices list - Add Product Type column derived from fwSku bitmask (ISM/vPro) - Add discovered field to DeviceInfo model - Show paginator on all tabs using server total count - Add i18n keys for tab labels and Product Type header in all 12 locales - Add unit tests for getProductType and tab filter logic - Fix cdk-overlay-backdrop leak in device.spec.ts cypress test Resolves: #3417
- Add All/Activated/Discovered tab group to devices list - Add Product Type column derived from fwSku bitmask (ISM/vPro) - Add discovered field to DeviceInfo model - Show paginator on all tabs using server total count - Add i18n keys for tab labels and Product Type header in all 12 locales - Add unit tests for getProductType and tab filter logic - Fix cdk-overlay-backdrop leak in device.spec.ts cypress test Resolves: #3417
0502625 to
63aed0e
Compare
- Add All/Activated/Discovered tab group to devices list - Add Product Type column derived from fwSku bitmask (ISM/vPro) - Add discovered field to DeviceInfo model - Show paginator on all tabs using server total count - Add i18n keys for tab labels and Product Type header in all 12 locales - Add unit tests for getProductType and tab filter logic - Fix cdk-overlay-backdrop leak in device.spec.ts cypress test Resolves: #3417
63aed0e to
8db552f
Compare
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Unresolved UI, pagination, request-ordering, statistics, and Cypress coverage issues block approval.
Get a fresh assessment by requesting another Copilot review.
Review effort: Lite
Findings: 3
Open (4)
8db552f to
ce098fe
Compare
sinchubhat
left a comment
There was a problem hiding this comment.
LGTM functionality wise
- Add All/Activated/Discovered tab group to devices list - Add Product Type column derived from fwSku bitmask (ISM/vPro) - Add discovered field to DeviceInfo model - Show paginator on all tabs using server total count - Add i18n keys for tab labels and Product Type header in all 12 locales - Add unit tests for getProductType and tab filter logic - Fix cdk-overlay-backdrop leak in device.spec.ts cypress test Resolves: #3417
- updated logic to include server side counts Signed-off-by: ShradhaGupta31 <shradha.gupta@intel.com>
…ices.component.spec.ts
- Console now shows only Discovered and Managed tabs instead of the prior All/Activated/Discovered set; - Power actions (up/off/restart) are hidden for devices on the Discovered tab, since they haven't been activated yet. - Update getProductType to label devices with no/unrecognized fwSku as "non-vPro" instead of an empty string. Signed-off-by: ShradhaGupta31 <shradha.gupta@intel.com>
ce098fe to
64fa3ad
Compare
# [3.68.0](v3.67.1...v3.68.0) (2026-09-25) ### Features * add tabs, product type column, and discovered field ([#3417](#3417)) ([ccb263d](ccb263d))
|
🎉 This PR is included in version 3.68.0 🎉 The release is available on:
Your semantic-release bot 📦🚀 |








Addresses: #3432
UI after this change:

