import JobListCard from '../launchpad_card/jobListCard.jsx';
import NSVirtualLinks from '../virtual_links/nsVirtualLinks.jsx';
import LaunchpadFleetStore from '../launchpadFleetStore.js';
-
+import _forEach from 'lodash/forEach';
import Prism from 'prismjs';
import 'prismjs/themes/prism.css';
+import SkyquakeComponent from 'widgets/skyquake_container/skyquakeComponent.jsx';
+
+import {SkyquakeRBAC, isRBACValid} from 'widgets/skyquake_rbac/skyquakeRBAC.jsx';
+import ROLES from 'utils/roleConstants.js';
+const PROJECT_ROLES = ROLES.PROJECT;
-export default class RecordCard extends React.Component {
+class RecordCard extends React.Component {
constructor(props) {
super(props)
}
let notice = null;
+ let hasAccess = isRBACValid(this.context.userProfile, [PROJECT_ROLES.LCM_ADMIN, PROJECT_ROLES.PROJECT_ADMIN]);
+
switch(this.props.type) {
case 'vnfr' :
cardData = this.props.data[0];
if (displayConfigPrimitives) {
configPrimitiveComponent = (
<div className="flex vnfrConfigPrimitiveContainer">
- <VnfrConfigPrimitives data={configPrimitivesProps} />
+ <VnfrConfigPrimitives data={configPrimitivesProps} hasAccess={hasAccess} />
{/* <NsrPrimitiveJobList jobs={cardData['config-agent-job']}/> */}
<div style={{display:'flex', flexDirection: 'column', flex: '1 1 40%'}}>
<div className="launchpadCard_title">
// </pre>
function buildProperties(obj) {
let p = [];
- _.forEach(obj, function(v, k) {
+ _forEach(obj, function(v, k) {
+ if (!v) {
+ return null;
+ }
p.push(
- <div style={{margin: '0.5rem 0.5rem'}} key={k + vi}>
- <div style={{margin: '0 0.5rem',
- fontWeight: 'bold', textTransform: 'uppercase', color: '#5b5b5b'}}>{k}</div>
- <div style={{margin: '0 0.5rem'}}>{v.constructor.name != 'Object' ? v : buildProperties(v)}</div>
+ <div style={{margin: '0.5rem 0.5rem'}} key={k + '-' + vi}>
+ <div style={{margin: '0 0.5rem', fontWeight: 'bold', textTransform: 'uppercase', color: '#5b5b5b'}}>{k}</div>
+ <div style={{margin: '0 0.5rem'}}>{(v.constructor.name == 'String' || v.constructor.name == 'Number') ? v : buildProperties(v)}</div>
</div>
)
});
return p;
}
volumesHTML.push(
- <div key={vi}>
+ <div key={index + vi}>
<div className="launchpadCard_title">
- VOLUME
+ VOLUME ({vdur['name']})
</div>
<div style={{display: 'flex', flexDirection: 'column'}}>
{
if (displayConfigPrimitives) {
configPrimitiveComponent = (
<div className="flex nsConfigPrimitiveContainer">
- <NsrConfigPrimitives data={configPrimitivesProps} />
+ <NsrConfigPrimitives data={configPrimitivesProps} hasAccess={hasAccess} />
<div style={{display:'flex', flexDirection: 'column', flex: '1 1 40%'}}>
<div className="launchpadCard_title">
JOB LIST
let metricsAndParams = [];
- let nfviMetrics = <LpCardNfviMetrics data={cardData["nfvi-metrics"]} />;
+ let nfviMetrics = null //<LpCardNfviMetrics data={cardData["nfvi-metrics"]} />;
metricsAndParams.push(<div className="monitoringParams" key="mp">
{components.map(function(c, k) {
return <div key={k} className="mpSlide">{c.title}{c.component}</div>
consoleUrlsTabTitle = 'VDU Console Links';
tabList.push(
- <Tab key={cardData.id + '-cp'}>{consoleUrlsTabTitle}</Tab>
+ <Tab key={cardData.id + '-vducl'}>{consoleUrlsTabTitle}</Tab>
);
tabPanels.push(
- <TabPanel key={cardData.id + '-cp-panel'}>
+ <TabPanel key={cardData.id + '-vducl-panel'}>
<div className="consoleUrls">
{consoleUrlsComponent}
</div>
isLoading: true,
jobData: []
}
+RecordCard.contextTypes = {
+ router: React.PropTypes.object,
+ userProfile: React.PropTypes.object
+};
+
+export default SkyquakeComponent(RecordCard);