zuul/web/src/containers/job/Job.jsx

91 lines
2.4 KiB
JavaScript

// Copyright 2018 Red Hat, 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 * as React from 'react'
import PropTypes from 'prop-types'
import {
Tab,
Tabs,
TabTitleText,
Title
} from '@patternfly/react-core'
import JobVariant from './JobVariant'
class Job extends React.Component {
static propTypes = {
job: PropTypes.array.isRequired,
}
state = {
activeTabeKey: 0
}
renderVariantTitle (variant) {
let title = variant.variant_description
if (!title) {
title = ''
/* NOTE(ianw) 2021-08-13 : it seems like if this is only defined
for one branch we don't get the branches. This might be a
bug. In this case, use the source context branch (i.e. where
it's defined */
if (variant.branches.length === 0) {
title = variant.source_context.branch
} else {
variant.branches.forEach((item) => {
if (title) {
title += ', '
}
title += item
})
}
}
return title
}
handleTabClick ( tabIndex ) {
this.setState({
activeTabKey: tabIndex
})
}
render () {
const { job } = this.props
const { activeTabKey } = this.state
return (
<React.Fragment>
<Title headingLevel="h2">
Details for job <span style={{color: 'var(--pf-global--primary-color--100)'}}>{job[0].name}</span>
</Title>
<Tabs activeKey={activeTabKey}
onSelect={(event, tabIndex) => this.handleTabClick(tabIndex)}
isBox>
{job.map((variant, idx) => (
<Tab eventKey={idx} key={idx}
title={<TabTitleText>{this.renderVariantTitle(variant)}</TabTitleText>}>
<JobVariant
variant={job[idx]}
parent={this}
/>
</Tab>
))}
</Tabs>
</React.Fragment>
)
}
}
export default Job