73 lines
2 KiB
TypeScript
73 lines
2 KiB
TypeScript
import * as React from 'react';
|
|
import * as moment from "moment";
|
|
|
|
import Throbber from "./throbber";
|
|
|
|
export default class Build extends React.Component<any, any> {
|
|
render () {
|
|
let builds: any = this.props.data;
|
|
let buildsTable: any = [];
|
|
let table: any;
|
|
if (Object.keys(builds).length === 0) {
|
|
buildsTable.push('Loading')
|
|
table = <Throbber />
|
|
}
|
|
else {
|
|
// Get Builds
|
|
builds.forEach((element, i) => {
|
|
let tags: Array<any> = []
|
|
element.tags.forEach(tag => {
|
|
tags.push(
|
|
<span className="building-tag">
|
|
<span className="tag-span rp-tagSpan">
|
|
<i className="fa fa-tag"></i> {tag}
|
|
</span>
|
|
</span>
|
|
);
|
|
});
|
|
let buildId: string = element.id.split('-')[0];
|
|
let phase: string = element.phase ? element.phase : 'Cannot retrieve phase';
|
|
let started: string = element.started ? element.started : 'Cannot retrieve start date';
|
|
let message: string;
|
|
if (element.trigger_metadata && element.trigger_metadata.commit_info && element.trigger_metadata.commit_info.message){
|
|
message = element.trigger_metadata.commit_info.message;
|
|
}
|
|
else {
|
|
message = 'Cannot retrieve message';
|
|
}
|
|
buildsTable.push(
|
|
<tr key={buildId}>
|
|
<td>{phase}</td>
|
|
<td>{buildId}</td>
|
|
<td>{message}</td>
|
|
<td>{moment(started).format('l')}</td>
|
|
<td>{tags}</td>
|
|
</tr>
|
|
)
|
|
});
|
|
// Build the table
|
|
table = (
|
|
<table className="co-table">
|
|
<thead>
|
|
<tr>
|
|
<td></td>
|
|
<td>BUILD ID</td>
|
|
<td>TRIGGERED BY</td>
|
|
<td>DATE STARTED</td>
|
|
<td>TAGS</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{buildsTable}
|
|
</tbody>
|
|
</table>
|
|
);
|
|
}
|
|
return(
|
|
<div className="row">
|
|
{table}
|
|
</div>
|
|
);
|
|
}
|
|
}
|
|
|