summaryrefslogtreecommitdiff
path: root/frontend/src/components/app/sidebars/project/TopologyListComponent.js
blob: 986157119c234ed036b5a50ff24a46202166305b (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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import PropTypes from 'prop-types'
import React from 'react'
import Shapes from '../../../../shapes'
import FontAwesome from 'react-fontawesome'

class TopologyListComponent extends React.Component {
    static propTypes = {
        show: PropTypes.bool.isRequired,
        topologies: PropTypes.arrayOf(Shapes.Topology),
        currentTopologyId: PropTypes.string,
        onChooseTopology: PropTypes.func.isRequired,
        onNewTopology: PropTypes.func.isRequired,
        onDeleteTopology: PropTypes.func.isRequired,
    }

    onChoose(id) {
        this.props.onChooseTopology(id)
    }

    onDuplicate() {
        this.props.onNewTopology(
            this.textInput.value,
            this.originTopology.value,
        )
    }

    onDelete(id) {
        this.props.onDeleteTopology(id)
    }

    render() {
        return (
            <div className="pb-3">
                <h2>
                    Topologies
                    <button className="btn btn-outline-primary float-right" onClick={this.props.onNewTopology}>
                        <FontAwesome name="plus"/>
                    </button>
                </h2>

                {this.props.topologies.map((topology, idx) => (
                    <div key={topology._id} className="row mb-1">
                        <div className={'col-8 align-self-center ' + (topology._id === this.props.currentTopologyId ? 'font-weight-bold' : '')}>
                            {topology.name}
                        </div>
                        <div className="col-4 text-right">
                            <span
                                className="btn btn-outline-primary mr-1 fa fa-play"
                                onClick={() => this.onChoose(topology._id)}
                            />
                            <span
                                className={'btn btn-outline-danger fa fa-trash ' + (idx === 0 ? 'disabled' : '')}
                                onClick={() => idx !== 0 ? this.onDelete(topology._id) : undefined}
                            />
                        </div>
                    </div>
                ))}
            </div>
        )
    }
}

export default TopologyListComponent