diff --git a/src/components/DNEGridChange/DNEGridChange.tsx b/src/components/DNEGridChange/DNEGridChange.tsx index 1a66df7..7a9b1f7 100644 --- a/src/components/DNEGridChange/DNEGridChange.tsx +++ b/src/components/DNEGridChange/DNEGridChange.tsx @@ -13,6 +13,44 @@ type ChangeDetailsProps = { setShowDetails: (show: boolean) => void; } +type ChangeDetailsPropsNotFound = { + changeid: string; + timestamp: bigint; +} + +const popoverWithText = (id: string, text: string) => { + return ( + + + {text} + + + ); + } + +export const DNEGridChangeNotFound = ({changeid, timestamp}: ChangeDetailsPropsNotFound) => { + const now = useCurrentTime(); + const content = ( + <> + + {changeid} + + +
{durationFromNowFormat(timestamp, now)}
+
+ + ); + + return ( +
+ {content} +
+ ); +} + export const DNEGridChange = ({change, showDetails, setShowDetails}: ChangeDetailsProps) => { const now = useCurrentTime(); const [showProps, setShowProps] = useState(false); @@ -85,16 +123,6 @@ export const DNEGridChange = ({change, showDetails, setShowDetails}: ChangeDetai const [changeAuthorName, changeEmail] = parseChangeAuthorNameAndEmail(change.author); - const popoverWithText = (id: string, text: string) => { - return ( - - - {text} - - - ); - } - const content = ( <> diff --git a/src/views/GridView/DNEGridView.tsx b/src/views/GridView/DNEGridView.tsx index 8849ccd..ab0d598 100644 --- a/src/views/GridView/DNEGridView.tsx +++ b/src/views/GridView/DNEGridView.tsx @@ -3,7 +3,7 @@ import './DNEGridView.scss'; import {ObservableMap, observable} from "mobx"; import {observer, useLocalObservable} from "mobx-react"; import {Link, useSearchParams} from "react-router-dom"; -import {Form} from "react-bootstrap"; +import {Form, OverlayTrigger, Popover} from "react-bootstrap"; import { Builder, Build, @@ -18,6 +18,7 @@ import { Buildrequest, } from "buildbot-data-js"; import { + dateFormat, LoadingIndicator, BuildLinkWithSummaryTooltip } from "buildbot-ui"; @@ -27,6 +28,7 @@ import {getConfig, DNEConfig, DNEView} from "../../utils/Config"; import {getRelatedOfFilteredDataMultiCollection} from "../../utils/DataMultiCollectionUtils"; import {useState} from "react"; import {DNEGridChange} from "../../components/DNEGridChange/DNEGridChange"; +import {DNEGridChangeNotFound} from "../../components/DNEGridChange/DNEGridChange"; function getViewSelectForm(config: DNEConfig, defaultFetchLimit: number) { @@ -394,17 +396,20 @@ export const DNEGridView = observer(() => { // then keep only last X changes .splice(buildFetchLimit); - const body = buildsPerChange.map(({change, builds}) => { + const body = buildsPerChange.map(({changeid, change, builds}) => { return ( { - change + change // The change has been properly polled, pull from the polled change info ? changeIsExpandedByChangeId.set(change.changeid, show)} /> - : "ChangeNotFound" + : changeid.length !=0 && builds.length != 0 // The change wasn't polled, pull what we can from earliest build + ? + : "ChangeNotFound" // Last resort, we just don't what this change is } {