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
}
|
{