Skip to content

Commit 5a16d3b

Browse files
authored
UI improvements (#5479)
1 parent d114bfa commit 5a16d3b

File tree

4 files changed

+75
-35
lines changed

4 files changed

+75
-35
lines changed

web/components/shared/themed/themedTimeFilterShadCN.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,9 @@ export function ThemedTimeFilterShadCN({
145145
};
146146

147147
const formatDateDisplay = (from: Date, to: Date) => {
148-
if (isLive && !hasCustomTimeFilter) {
149-
if (from.toDateString() === to.toDateString()) {
148+
// When live mode is on, always show "Now" as the end time
149+
if (isLive) {
150+
if (from.toDateString() === new Date().toDateString()) {
150151
return `${format(from, "LLL d, yyyy")} ${format(from, "HH:mm")} - Now`;
151152
} else {
152153
return `${format(from, "LLL d, yyyy HH:mm")} - Now`;

web/components/templates/requests/RequestsPage.tsx

Lines changed: 68 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -189,28 +189,44 @@ export default function RequestsPage(props: RequestsPageV2Props) {
189189
if (currentTimeFilter && currentTimeFilter.split("_")[0] === "custom") {
190190
const [_, start, end] = currentTimeFilter.split("_");
191191

192-
const filter: FilterNode = {
193-
left: {
194-
request_response_rmt: {
195-
request_created_at: {
196-
gte: new Date(start),
192+
// When live mode is on, don't set an upper bound so new data can appear
193+
if (isLive) {
194+
const filter: FilterNode = {
195+
left: {
196+
request_response_rmt: {
197+
request_created_at: {
198+
gte: new Date(start),
199+
},
197200
},
198201
},
199-
},
200-
operator: "and",
201-
right: {
202+
operator: "and",
203+
right: cacheFilter,
204+
};
205+
return filter;
206+
} else {
207+
const filter: FilterNode = {
202208
left: {
203209
request_response_rmt: {
204210
request_created_at: {
205-
lte: new Date(end),
211+
gte: new Date(start),
206212
},
207213
},
208214
},
209215
operator: "and",
210-
right: cacheFilter,
211-
},
212-
};
213-
return filter;
216+
right: {
217+
left: {
218+
request_response_rmt: {
219+
request_created_at: {
220+
lte: new Date(end),
221+
},
222+
},
223+
},
224+
operator: "and",
225+
right: cacheFilter,
226+
},
227+
};
228+
return filter;
229+
}
214230
} else {
215231
return defaultFilter;
216232
}
@@ -529,28 +545,44 @@ export default function RequestsPage(props: RequestsPageV2Props) {
529545
(key: TimeInterval, value: string) => {
530546
if (key === "custom") {
531547
const [start, end] = value.split("_");
532-
const filter: FilterNode = {
533-
left: {
534-
request_response_rmt: {
535-
request_created_at: {
536-
gte: new Date(start),
548+
// When live mode is on, don't set an upper bound so new data can appear
549+
if (isLive) {
550+
const filter: FilterNode = {
551+
left: {
552+
request_response_rmt: {
553+
request_created_at: {
554+
gte: new Date(start),
555+
},
537556
},
538557
},
539-
},
540-
operator: "and",
541-
right: {
558+
operator: "and",
559+
right: cacheFilter,
560+
};
561+
setTimeFilter(filter);
562+
} else {
563+
const filter: FilterNode = {
542564
left: {
543565
request_response_rmt: {
544566
request_created_at: {
545-
lte: new Date(end),
567+
gte: new Date(start),
546568
},
547569
},
548570
},
549571
operator: "and",
550-
right: cacheFilter,
551-
},
552-
};
553-
setTimeFilter(filter);
572+
right: {
573+
left: {
574+
request_response_rmt: {
575+
request_created_at: {
576+
lte: new Date(end),
577+
},
578+
},
579+
},
580+
operator: "and",
581+
right: cacheFilter,
582+
},
583+
};
584+
setTimeFilter(filter);
585+
}
554586
} else {
555587
setTimeFilter({
556588
request_response_rmt: {
@@ -561,7 +593,7 @@ export default function RequestsPage(props: RequestsPageV2Props) {
561593
});
562594
}
563595
},
564-
[isCached, setTimeFilter],
596+
[isCached, isLive, setTimeFilter],
565597
);
566598

567599
// if shift is pressed, we select the rows in the highlighted range
@@ -610,6 +642,15 @@ export default function RequestsPage(props: RequestsPageV2Props) {
610642
/* -------------------------------------------------------------------------- */
611643
/* EFFECTS */
612644
/* -------------------------------------------------------------------------- */
645+
// When isLive changes, re-apply the time filter to add/remove upper bound
646+
useEffect(() => {
647+
const currentTimeFilter = searchParams.get("t");
648+
if (currentTimeFilter && currentTimeFilter.split("_")[0] === "custom") {
649+
const [, start, end] = currentTimeFilter.split("_");
650+
onTimeSelectHandler("custom" as TimeInterval, `${start}_${end}`);
651+
}
652+
}, [isLive]);
653+
613654
// Synchronize page state from URL query parameters
614655
useEffect(() => {
615656
const pageFromQuery = router.query.page;

web/lib/freeTierLimits.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -132,12 +132,9 @@ export const FREE_TIER_CONFIG: FreeTierConfig = {
132132
},
133133
properties: {
134134
main: {
135-
getLimit: () => 1,
136-
description: (limit) =>
137-
`You can have up to ${limit} properties with the free tier`,
135+
getLimit: () => Infinity, // Unlimited properties for free tier
136+
description: () => `Unlimited properties`,
138137
upgradeFeatureName: FEATURE_DISPLAY_NAMES.properties,
139-
upgradeMessage: (limit, used) =>
140-
`You've used ${used}/${limit} properties. Upgrade for unlimited access.`,
141138
},
142139
},
143140
users: {

web/lib/timeCalculations/time.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,8 @@ export const getTimeInterval = ({
9696
}): TimeIncrement => {
9797
const diff = end.getTime() - start.getTime();
9898

99-
if (diff < 1000 * 60 * 60 * 2) {
99+
if (diff < 1000 * 60 * 60 * 6) {
100+
// Use minute granularity for ranges up to 6 hours
100101
return "min";
101102
} else if (diff < 1000 * 60 * 60 * 24 * 3) {
102103
// Use hourly granularity for ranges up to 3 days

0 commit comments

Comments
 (0)