go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/milo/ui/src/build/components/builder_table/builder_row.tsx (about) 1 // Copyright 2024 The LUCI Authors. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 import { Link } from '@mui/material'; 16 import { styled } from '@mui/system'; 17 import { Link as RouterLink } from 'react-router-dom'; 18 19 import { getBuilderURLPath } from '@/common/tools/url_utils'; 20 import { BuilderID } from '@/proto/go.chromium.org/luci/buildbucket/proto/builder_common.pb'; 21 22 import { BuilderStats } from './builder_stats'; 23 import { RecentBuilds } from './recent_builds'; 24 25 const Row = styled('tr')({ 26 height: '40px', 27 '& > td': { 28 padding: '5px', 29 borderBottom: '1px solid rgb(224, 224, 224)', 30 }, 31 // All columns except the last one shrink to fit. 32 '& > td:not(:last-of-type)': { 33 width: '1px', 34 whiteSpace: 'nowrap', 35 }, 36 }); 37 38 export interface BuilderRowProps { 39 readonly item: BuilderID; 40 } 41 42 export function BuilderRow({ item: builder }: BuilderRowProps) { 43 return ( 44 <Row> 45 <td> 46 <Link component={RouterLink} to={getBuilderURLPath(builder)}> 47 {builder.project}/{builder.bucket}/{builder.builder} 48 </Link> 49 </td> 50 <td> 51 <BuilderStats builder={builder} /> 52 </td> 53 <td> 54 <RecentBuilds builder={builder} /> 55 </td> 56 </Row> 57 ); 58 }