/* * * Copyright 2016 RIFT.IO Inc * * 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. * */ import React from 'react'; import './jobListCard.scss' import TreeView from 'react-treeview'; import Uptime from 'widgets/uptime/uptime.jsx'; import Modal from 'react-awesome-modal'; class JobListCard extends React.Component { constructor(props) { super(props); this.state = {}; this.state.hideParameters = true; this.state.modalVisible = false; } openModal() { this.setState({ modalVisible : true }); } closeModal() { this.setState({ modalVisible : false }); } getStatusColor(status) { let color; switch(status) { case 'success' : color = 'green'; break; case 'failure' : color = 'red'; break; default : color = 'yellow'; break; } return 'jobListCard--status_' + color; } toggleParametersView(hideParameters) { this.setState({ hideParameters: !hideParameters }) } getJobDetails(job) { let jobDetails = null; if (job['job-status-details']) { let jobDetailsArray = job['job-status-details'].split(/\\n/); let jobDetailsText = []; jobDetailsArray && jobDetailsArray.map((jobDetail) => { jobDetailsText.push(jobDetail); jobDetailsText.push(
); }); jobDetails = (

Job Details

Job Details} key={'job-details'} defaultCollapsed={false}>

{jobDetailsText}

Close

); } return jobDetails; } nsrCardHTML(props, key) { let self = this; let jobListStatus = this.getStatusColor(this.props['job-status']); let hideParameters = this.state.hideParameters; let parameterList = function(props) { return props['parameter'] && props['parameter'].map((p, i) => { let k = null; if(key) { k = k + '-' + i; } return (
{p.name}: {p.value}
); }); } let jobDetailsHTML = this.getJobDetails(this.props); return (
{props['job-name']}
ID: {this.props['job-id']}
ago

{hideParameters ? 'Show' : 'Hide'} Parameters

{ parameterList(props) } { props.vnfr && props.vnfr.map(function(v) { return v.primitive && v.primitive.map(function(p) { return parameterList(p, p.name) }) }) }
{jobDetailsHTML}
) } vnfrCardHTML(props) { let self = this; let jobListStatus = this.getStatusColor(props['execution-status'] ); let hideParameters = this.state.hideParameters; return (
{props.name}
ID: {props['job-id']}

{ hideParameters ? 'Show' : 'Hide' } Parameters

{ props['parameter'] && props['parameter'].map((q, k) => { return (
{q.name}: {q.value}
); }) }
) } render() { let html; let card =
if (this.props.type=="nsr") { card = this.nsrCardHTML(this.props); } if (this.props.type=="vnfr") { card = this.vnfrCardHTML(this.props); } return card; } } export default JobListCard;