summaryrefslogtreecommitdiff
path: root/opendc-web/opendc-web-ui/src/components/topologies/sidebar/machine/MachineSidebar.js
blob: 6f89e10b3da32d8fe06dbe429be18d0e349ae474 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import PropTypes from 'prop-types'
import React from 'react'
import UnitTabsComponent from './UnitTabsComponent'
import DeleteMachine from './DeleteMachine'
import {
    TextContent,
    TextList,
    TextListItem,
    TextListItemVariants,
    TextListVariants,
    Title,
} from '@patternfly/react-core'
import { useSelector } from 'react-redux'

function MachineSidebar({ tileId, position }) {
    const machine = useSelector(({ topology }) => {
        const rack = topology.racks[topology.tiles[tileId].rack]
        return topology.machines[rack.machines[position - 1]]
    })
    const machineId = machine.id
    return (
        <div>
            <TextContent>
                <Title headingLevel="h2">Details</Title>
                <TextList component={TextListVariants.dl}>
                    <TextListItem component={TextListItemVariants.dt}>Name</TextListItem>
                    <TextListItem component={TextListItemVariants.dd}>
                        Machine at position {machine.position}
                    </TextListItem>
                </TextList>

                <Title headingLevel="h2">Actions</Title>
                <DeleteMachine machineId={machineId} />

                <Title headingLevel="h2">Units</Title>
            </TextContent>
            <div className="pf-u-h-100">
                <UnitTabsComponent machineId={machineId} />
            </div>
        </div>
    )
}

MachineSidebar.propTypes = {
    tileId: PropTypes.string.isRequired,
    position: PropTypes.number.isRequired,
}

export default MachineSidebar