function SimpleGridRow()

in src/main/js/components/simple-grid/simple-grid-row.js [3:124]


function SimpleGridRow({data, hasDistributionKey = false}) {
    const {id, host, processesStatus, hostMetrics, group} = data;

    return (
        <>
            <tr>
                {renderProcessesStatus()}
                {renderHost()}
                {hasDistributionKey ? renderDistributionKey() : <></>}
                {renderMetrics()}

            </tr>
        </>
    )

    function renderProcessesStatus() {
        return (
            <td className="px-1 text-sm pb-1">
                <div className="flex justify-center w-full">
                    {
                        Object.keys(processesStatus)
                            .map(processName => {
                                const processData = processesStatus[processName];
                                let className = "rounded-full px-1 py-1 "
                                switch (processData.toLowerCase()) {
                                    case 'up':
                                        className += "service_up"
                                        break;
                                    case 'down':
                                        className += "service_down"
                                        break;
                                    default:
                                        className += "service_unknown"
                                        break;
                                }

                                return <div key={id + processName} className="flex pr-1">
                                    <div className={className}
                                         data-tooltip-id="vispana-tooltip"
                                         data-tooltip-content={processName}
                                         data-tooltip-place="top"></div>
                                </div>
                            })
                    }
                </div>
            </td>);
    }

    function renderHost() {
        return (
            <td className="px-6 py-2 whitespace-nowrap text-xs text-gray-300">
                <p className="overflow-ellipsis overflow-hidden">{host.hostname}</p>
            </td>
        )
    }

    function renderDistributionKey() {
        return (
            <td className="px-6 py-2">
                <div className="flex justify-center -m-2">
                    <div
                        className="px-2 h-6 text-green-300 text-xs font-extrabold rounded-md flex items-center justify-center border-dashed border border-green-300 m-2"
                        style={{minWidth: "80px"}}>
                        Group: {group.key}
                    </div>
                    <div
                        className="px-2 h-6 text-green-300 text-xs font-extrabold rounded-md flex items-center justify-center border-dashed border border-green-300 m-2"
                        style={{minWidth: "110px"}}>
                        Distribution: {group.distribution}
                    </div>
                </div>
            </td>
        )
    }

    function renderMetrics() {
        const cpuUsage = hostMetrics.cpuUsage
        const memoryUsage = hostMetrics.memoryUsage
        const diskUsage = hostMetrics.diskUsage
        let cpuUsageClassName = metricsProgressClass(cpuUsage);
        let memoryUsageClassName = metricsProgressClass(memoryUsage);
        let diskUsageClassName = metricsProgressClass(diskUsage);

        return (
            <>
                <td className="px-6 " style={{minWidth: "100px", maxWidth: "200px"}}>
                    <div style={{minWidth: "100px", maxWidth: "200px", margin: "auto"}}>
                        <progress className={cpuUsageClassName}
                                  data-tooltip-id="vispana-tooltip"
                                  data-tooltip-content={cpuUsage.toFixed(2) + "%"}
                                  data-tooltip-place="top"
                                  value={`${cpuUsage}`}
                                  max="100">
                        </progress>
                    </div>
                </td>
                <td className="px-6 " style={{minWidth: "100px", maxWidth: "200px"}}>
                    <div style={{minWidth: "100px", maxWidth: "200px", margin: "auto"}}>
                        <progress className={memoryUsageClassName}
                                  data-tooltip-id="vispana-tooltip"
                                  data-tooltip-content={memoryUsage.toFixed(2) + "%"}
                                  data-tooltip-place="top"
                                  value={`${memoryUsage}`}
                                  max="100">
                        </progress>
                    </div>
                </td>
                <td className="px-6 " style={{minWidth: "100px", maxWidth: "200px"}}>
                    <div style={{minWidth: "100px", maxWidth: "200px", margin: "auto"}}>
                        <progress className={diskUsageClassName}
                                  data-tooltip-id="vispana-tooltip"
                                  data-tooltip-content={diskUsage.toFixed(2) + "%"}
                                  data-tooltip-place="top"
                                  value={`${diskUsage}`}
                                  max="100">
                        </progress>
                    </div>
                </td>
            </>
        )
    }
}