in plc4j/tools/ui/frontend/project/src/pages/Inspect.tsx [29:88]
function getByDriverTree(driverList: Driver[], deviceList: Device[]):TreeItemData[] {
console.log("getByDriverTree " + JSON.stringify(driverList) + " " + JSON.stringify(deviceList))
if(driverList && deviceList) {
const driverMap = new Map<string, TreeItemData>()
let drivers:TreeItemData[] = []
driverList.forEach(value => {
const driverEntry:TreeItemData = {
id: value.code,
name: value.name,
type: "DRIVER",
driver: value,
supportsDiscovery: value.metadata.discoverySupported,
supportsBrowsing: false,
supportsReading: false,
supportsWriting: false,
supportsSubscribing: false,
supportsPublishing: false,
children: []
}
driverMap.set(value.code, driverEntry)
drivers = [...drivers, driverEntry]
})
drivers.sort((a,b) => (a.name > b.name) ? 1 : ((b.name > a.name) ? -1 : 0))
deviceList.forEach(value => {
const curDriverTreeItem = driverMap.get(value.protocolCode);
if(curDriverTreeItem && curDriverTreeItem.children) {
curDriverTreeItem.children = [...curDriverTreeItem.children, {
id: value.id?.toString(),
name: value.name,
type: "DEVICE",
device: value,
// Even if most connections will support reading/writing, in order to really know, we need a
// connection first. As we're not offering any connection-actions here anyway we just set all
// to false.
supportsDiscovery: false,
supportsBrowsing: false,
supportsReading: false,
supportsWriting: false,
supportsSubscribing: false,
supportsPublishing: false} as TreeItemData
]
}
})
return [{
id: "all",
name: "Root",
type: "ROOT",
supportsDiscovery: true,
supportsBrowsing: false,
supportsReading: false,
supportsWriting: false,
supportsSubscribing: false,
supportsPublishing: false,
children: drivers
}]
}
return []
}