Skip to content

Commit 2f5c3e7

Browse files
authored
feat: add 'View anyway' button for single-date comparison range (#173)
* feat: add 'View anyway' button for single-date comparison range * fix: deduplicate dates in GPU graph legend for single-date view
1 parent 02507ba commit 2f5c3e7

3 files changed

Lines changed: 27 additions & 2 deletions

File tree

packages/app/cypress/component/date-range-picker.cy.tsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,4 +78,12 @@ describe('DateRangePicker', () => {
7878
cy.contains('Select date range').click();
7979
cy.contains('Only 1 date available').should('be.visible');
8080
});
81+
82+
it('view anyway button selects the single available date and closes dialog', () => {
83+
cy.mount(<DateRangePickerHarness availableDates={['2026-01-01']} />);
84+
cy.contains('Select date range').click();
85+
cy.contains('button', 'View anyway').click();
86+
cy.get('[role="dialog"]').should('not.exist');
87+
cy.get('[data-testid="date-range-output"]').should('contain', '2026-01-01 to 2026-01-01');
88+
});
8189
});

packages/app/src/components/inference/ui/GPUGraph.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,12 @@ const GPUGraph = React.memo(
7373
dates.push(selectedDateRange.startDate, selectedDateRange.endDate);
7474
}
7575
dates.push(...selectedDates);
76-
dates.sort((a, b) => new Date(a).getTime() - new Date(b).getTime());
76+
const deduplicated = [...new Set(dates)];
77+
deduplicated.sort((a, b) => new Date(a).getTime() - new Date(b).getTime());
7778
const sortedGPUs = [...selectedGPUs].toSorted(
7879
(a, b) => getModelSortIndex(a) - getModelSortIndex(b) || a.localeCompare(b),
7980
);
80-
return { dates, sortedGPUs };
81+
return { dates: deduplicated, sortedGPUs };
8182
}, [selectedDateRange, selectedDates, selectedGPUs]);
8283

8384
const graphIdentifiers = useMemo(() => {

packages/app/src/components/ui/date-range-picker.tsx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@ export function DateRangePicker({
7070
return placeholder;
7171
}
7272
if (dateRange.startDate && dateRange.endDate) {
73+
if (dateRange.startDate === dateRange.endDate) {
74+
return formatDisplayDate(dateRange.startDate);
75+
}
7376
return `${formatDisplayDate(dateRange.startDate)} - ${formatDisplayDate(dateRange.endDate)}`;
7477
}
7578
if (dateRange.startDate) {
@@ -219,6 +222,19 @@ export function DateRangePicker({
219222
Historical comparison requires at least 2 dates. Please change Model, ISL/OSL,
220223
or GPU selection.
221224
</p>
225+
<Button
226+
variant="outline"
227+
size="sm"
228+
className="mt-1"
229+
onClick={() => {
230+
const singleDate = availableDates[0];
231+
track('date_range_picker_view_single_date', { date: singleDate });
232+
onChange({ startDate: singleDate, endDate: singleDate });
233+
setOpen(false);
234+
}}
235+
>
236+
View anyway
237+
</Button>
222238
</div>
223239
</div>
224240
)}

0 commit comments

Comments
 (0)