X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=skyquake%2Fplugins%2Flaunchpad%2Fsrc%2Flaunchpad_card%2FjobListCard.jsx;fp=skyquake%2Fplugins%2Flaunchpad%2Fsrc%2Flaunchpad_card%2FjobListCard.jsx;h=2a665406fb15d2eb02a34099b98e2b0215daeec8;hb=e29efc315df33d546237e270470916e26df391d6;hp=0000000000000000000000000000000000000000;hpb=9c5e457509ba5a1822c316635c6308874e61b4b9;p=osm%2FUI.git diff --git a/skyquake/plugins/launchpad/src/launchpad_card/jobListCard.jsx b/skyquake/plugins/launchpad/src/launchpad_card/jobListCard.jsx new file mode 100644 index 000000000..2a665406f --- /dev/null +++ b/skyquake/plugins/launchpad/src/launchpad_card/jobListCard.jsx @@ -0,0 +1,177 @@ +/* + * + * 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 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']) { + jobDetails = ( +
+

Job Details

+ +
+
{job['job-status-details']}
+

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;