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 {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 {
constructor(props) {
let notice = null;
+ let hasAccess = isRBACValid(this.context.userProfile, [PROJECT_ROLES.LCM_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">
//That match the currently selected job id
if(v.id == cardData.id) {
return v.primitive.map(function(p, i) {
- return <JobListCard type="vnfr" job-id={job['job-id']} cardData={cardData} key={ob['job-id'] + '-' + i} {...p} />
+ return <JobListCard type="vnfr" job-id={job['job-id']} cardData={cardData} key={job['job-id'] + '-' + i} {...p} />
})
}
})
notice = <li className='notice'>* If a separate browser window does not open, please check if the popup was blocked and allow it.</li>
if(vdur.hasOwnProperty('volumes') && (vdur.volumes.length > 0)) {
displayVolumesTab = true;
- vdur.volumer.map((volume, vi) => {
+ vdur.volumes.map((volume, vi) => {
// let html = Prism.highlight(JSON.stringify(volume), Prism.languages.javascript, 'javascript');
// volumesHTML.push(
// <pre className="language-js" key={index + '-' + vi}>
// <code dangerouslySetInnerHTML={{__html: html}} />
// </pre>
- let properties = [];
- _.forEach(volume, function(v, k) {
- properties.push(
- <div style={{display: 'flex', margin: '0.5rem 0'}} key={k + vi}>
- <div style={{margin: '0 1rem',
- fontWeight: 'bold', textTransform: 'uppercase'}}>{k}</div>
- <div>{v}</div>
+ function buildProperties(obj) {
+ let p = [];
+ _forEach(obj, function(v, k) {
+ 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 == 'String' || v.constructor.name == 'Number') ? v : buildProperties(v)}</div>
</div>
)
- })
+ });
+ return p;
+ }
volumesHTML.push(
<div key={vi}>
<div className="launchpadCard_title">
VOLUME
</div>
-
+ <div style={{display: 'flex', flexDirection: 'column'}}>
{
- properties
+ buildProperties(volume)
}
+ </div>
</div>
)
})
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
//That match the currently selected job id
if(v.id == cardData.id) {
return v.primitive.map(function(p, i) {
- return <JobListCard type="vnfr" job-id={job['job-id']} cardData={cardData} key={ob['job-id'] + '-' + 'vnfr' + '-' + h} {...p} />
+ return <JobListCard type="vnfr" job-id={job['job-id']} cardData={cardData} key={job['job-id'] + '-' + 'vnfr' + '-' + h} {...p} />
})
}
})
if(this.props.isLoading) {
html = <DashboardCard className="loading" showHeader={true} title={cardData["short-name"]}><LoadingIndicator size={10} show={true} /></DashboardCard>
} else {
- let glyphValue = (this.props.mmmrecordDetailsToggleValue) ? "chevron-left" : "chevron-right";
+ let glyphValue = (!this.props.recordDetailsToggleValue) ? "chevron-left" : "chevron-right";
if (this.props.type == 'nsr') {
tabList.push(
isLoading: true,
jobData: []
}
+RecordCard.contextTypes = {
+ router: React.PropTypes.object,
+ userProfile: React.PropTypes.object
+};