5750fd9d1fc70d0fcd7668f5be4b126b540a0d72
[aai/sparky-fe.git] / src / app / tierSupport / selectedNodeDetails / SelectedNodeDetails.jsx
1 /*
2  * ============LICENSE_START=======================================================
3  * org.onap.aai
4  * ================================================================================
5  * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
6  * Copyright © 2017-2018 Amdocs
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *       http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END=========================================================
20  */
21 import {connect} from 'react-redux';
22 import React, {Component} from 'react';
23 import Table from 'react-bootstrap/lib/Table';
24 import LaunchInContext from 'app/tierSupport/launchExternalResource/LaunchExternalResource.jsx';
25 import i18n from 'utils/i18n/i18n';
26 import {
27   SELECTED_NODE_TITLE,
28   NO_SELECTION,
29   SELECTED_NODE_TABLE_COLUMN_NAMES
30 } from 'app/tierSupport/selectedNodeDetails/SelectedNodeDetailsConstants.js';
31
32 let mapStateToProps = ({tierSupport: {selectedNodeDetails}}) => {
33   let {nodeData = {}, nodeType = '', uid = ''} = selectedNodeDetails;
34
35   return {
36     nodeData,
37     nodeType,
38     uid
39   };
40 };
41
42 export class SelectedNodeDetails extends Component {
43   static propTypes = {
44     nodeData: React.PropTypes.object,
45     nodeType: React.PropTypes.string,
46     uid: React.PropTypes.string
47   };
48
49   render() {
50     const {nodeData, nodeType, uid} = this.props;
51
52     let tableClass = 'ts-selected-node-table';
53     let noSelectionMessageClass = 'hidden';
54     let tableColumns = [];
55     let tableRows = [];
56
57     if (Object.keys(nodeData).length > 0) {
58       let cellClassName = '';
59       for (let i = 1; i <= SELECTED_NODE_TABLE_COLUMN_NAMES.length; i++) {
60         cellClassName = (i % 2 ? 'left-column-cell' : 'right-column-cell');
61         tableColumns.push(<th className={cellClassName} key={i}>
62           {i18n(SELECTED_NODE_TABLE_COLUMN_NAMES[i - 1])}
63         </th>);
64       }
65
66       for (var key in nodeData) {
67         let value = nodeData[key];
68         tableRows.push(
69           <tr key={key}>
70             <td className='left-column-cell'>{key}</td>
71             <td className='right-column-cell'>{value}</td>
72           </tr>
73         );
74       }
75     } else {
76       tableClass = 'hidden';
77       noSelectionMessageClass = '';
78     }
79
80     return (
81       <div className='ts-selected-node-details'>
82         <h1>{i18n(SELECTED_NODE_TITLE)}</h1>
83         <h2>{nodeType}</h2>
84         <span>{uid} <LaunchInContext /></span>
85         <Table bsClass={tableClass}>
86           <thead>
87           <tr>
88             {tableColumns}
89           </tr>
90           </thead>
91           <tbody>
92           {tableRows}
93           </tbody>
94         </Table>
95         <p className={noSelectionMessageClass}>{i18n(NO_SELECTION)}</p>
96       </div>
97     );
98   }
99 }
100 export default connect(mapStateToProps)(SelectedNodeDetails);