function getByDriverTree()

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 []
}