summaryrefslogtreecommitdiffstats
path: root/src/app/model/modelSearch/components/ModelCard.jsx
blob: 2890b527cebb3037ccd4ed27bc92e8ad927a62cc (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
64
65
66
67
68
69
70
71
72
73
74
75
/*
 * ============LICENSE_START=======================================================
 * org.onap.aai
 * ================================================================================
 * Copyright © 2017-2021 AT&T Intellectual Property. All rights reserved.
 * ================================================================================
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * ============LICENSE_END=========================================================
 */

import React from 'react';
import ModelRelationships from './ModelRelationships.jsx';
import { Link } from 'react-router-dom';
import {ExportExcel} from 'utils/ExportExcel.js';
let buildAttrList = ExportExcel.buildAttrList;

const modelCard = (props) => {

  var propKey = '';
  var navigateQueryBuilder = '';
  var editModalIcon = '';
  var requiredParams = buildAttrList(props.nodeType,[],'mandatory');
  const properties = Object.keys(props.nodeProps).map((prop, idx) => {
    let description='';
    for(var a in requiredParams){
      if(requiredParams[a].value === prop){
        description=requiredParams[a].description;
        if(propKey === ''){
          propKey = prop + ':' + btoa('<pre>' + props.nodeProps[prop].toString() + '</pre>');
        }else{
          propKey = propKey + ';' + prop + ':' + btoa('<pre>' + props.nodeProps[prop].toString() + '</pre>');
        }
      }
    }
    return (
      <p className='pre-wrap-text' key={idx}><strong title={description}>{prop}:</strong> {props.nodeProps[prop].toString()}</p>
    );
  });
  let pathNameStr = '/customDslBuilder/' + props.nodeType + '/' + propKey;
  editModalIcon = <a className={props.isWriteAllowed ? 'show' : 'hidden'} onClick={e => {props.openEditNodeModal(props.nodeUrl)}}><i style={{cursor: 'pointer'}} className="pull-right fa fa-pencil-square-o" aria-hidden="true"></i></a>;
  navigateQueryBuilder = <Link
                  to={{
                    pathname: pathNameStr
                   }}>
                   <i className={'icon-misc-operationsL pull-right'} role="img"></i>
                   </Link>;
  return (
    <div className='card model-card'>
      <div className='card-header'>
        <h4 className='card-title'>{props['nodeType']}{editModalIcon}{navigateQueryBuilder}</h4>
      </div>
      <div className='card-header'>
        {props.nodeUrl}
      </div>
      <div className='card-content model-card-content'>
        {properties}
      </div>
      <div className='card-footer'>
        <ModelRelationships historyStackString={props.historyStackString} relatives={props} openHistoryModal={props.openHistoryModal} />
      </div>
    </div>
  );
};

export default modelCard;