Skip to content

Commit ec4d358

Browse files
authored
Merge pull request #422 from yileicn/main
feat: add specific day query option to time range filter
2 parents 74985d9 + 2c627b7 commit ec4d358

6 files changed

Lines changed: 56 additions & 7 deletions

File tree

src/lib/helpers/constants.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ export const TIME_RANGE_OPTIONS = [
5757
{ label: TimeRange.Last12Hours, value: TimeRange.Last12Hours, qty: 12, unit: 'hours' },
5858
{ label: TimeRange.Today, value: TimeRange.Today, qty: 1, unit: 'days' },
5959
{ label: TimeRange.Yesterday, value: TimeRange.Yesterday, qty: 1, unit: 'days' },
60+
{ label: TimeRange.SpecificDay, value: TimeRange.SpecificDay, isSpecificDay: true },
6061
{ label: TimeRange.Last3Days, value: TimeRange.Last3Days, qty: 3, unit: 'days' },
6162
{ label: TimeRange.Last7Days, value: TimeRange.Last7Days, qty: 7, unit: 'days' },
6263
{ label: TimeRange.Last30Days, value: TimeRange.Last30Days, qty: 30, unit: 'days' },

src/lib/helpers/enums.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,7 @@ const timeRange = {
257257
Last12Hours: "Last 12 hours",
258258
Today: "Today",
259259
Yesterday: "Yesterday",
260+
SpecificDay: "Specific day",
260261
Last3Days: "Last 3 days",
261262
Last7Days: "Last 7 days",
262263
Last30Days: "Last 30 days",

src/lib/helpers/types/conversationTypes.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,7 @@ IRichContent.prototype.language;
324324
* @property {UserStateDetailModel[]} states
325325
* @property {string[]} tags
326326
* @property {string?} [timeRange]
327+
* @property {string} [specificDate] - When timeRange is SpecificDay, date in YYYY-MM-DD (e.g. 2026-01-25)
327328
*/
328329

329330
/**

src/lib/helpers/utils/common.js

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,9 +192,10 @@ export function getCleanUrl(url) {
192192

193193
/**
194194
* @param {string} timeRange
195+
* @param {string} [specificDate] - When timeRange is SpecificDay, date in YYYY-MM-DD format (e.g. 2026-01-25)
195196
* @returns {{ startTime: string | null, endTime: string | null }}
196197
*/
197-
export function convertTimeRange(timeRange) {
198+
export function convertTimeRange(timeRange, specificDate) {
198199
let ret = { startTime: null, endTime: null };
199200

200201
if (!timeRange) {
@@ -240,6 +241,17 @@ export function convertTimeRange(timeRange) {
240241
endTime: moment().subtract(1, 'days').endOf('day').utc().format()
241242
};
242243
break;
244+
case TimeRange.SpecificDay:
245+
if (specificDate && moment(specificDate).isValid()) {
246+
ret = {
247+
...ret,
248+
// @ts-ignore
249+
startTime: moment(specificDate).startOf('day').utc().format(),
250+
// @ts-ignore
251+
endTime: moment(specificDate).endOf('day').utc().format()
252+
};
253+
}
254+
break;
243255
default:
244256
break;
245257
}

src/routes/page/conversation/+page.svelte

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@
4040
const firstPage = 1;
4141
const pageSize = 15;
4242
43+
// Get today's date in YYYY-MM-DD format
44+
const getTodayStr = () => {
45+
const d = new Date();
46+
return d.getFullYear() + '-' + String(d.getMonth() + 1).padStart(2, '0') + '-' + String(d.getDate()).padStart(2, '0');
47+
};
48+
4349
/** @type {boolean} */
4450
let isLoading = false;
4551
let isComplete = false;
@@ -96,6 +102,7 @@
96102
status: null,
97103
taskId: null,
98104
timeRange: TimeRange.Last12Hours,
105+
specificDate: '',
99106
states: [],
100107
tags: []
101108
};
@@ -111,7 +118,7 @@
111118
page: $page.url.searchParams.get("page"),
112119
pageSize: $page.url.searchParams.get("pageSize")
113120
}, { defaultPageSize: pageSize });
114-
innerTimeRange = convertTimeRange(searchOption.timeRange || '');
121+
innerTimeRange = convertTimeRange(searchOption.timeRange || '', searchOption.specificDate);
115122
116123
filter = {
117124
...filter,
@@ -298,7 +305,7 @@
298305
299306
function refreshFilter() {
300307
const searchStates = getSearchStates();
301-
innerTimeRange = convertTimeRange(searchOption.timeRange || '');
308+
innerTimeRange = convertTimeRange(searchOption.timeRange || '', searchOption.specificDate);
302309
303310
filter = {
304311
...filter,
@@ -398,9 +405,12 @@
398405
tags: e.target.value?.length > 0 ? [e.target.value] : []
399406
};
400407
} else if (type === 'timeRange') {
408+
const timeRange = selectedValues.length > 0 ? selectedValues[0] : null;
409+
const isSpecificDay = timeRange === TimeRange.SpecificDay;
401410
searchOption = {
402411
...searchOption,
403-
timeRange: selectedValues.length > 0 ? selectedValues[0] : null
412+
timeRange,
413+
specificDate: isSpecificDay ? (searchOption.specificDate || getTodayStr()) : ''
404414
};
405415
}
406416
}
@@ -517,6 +527,13 @@
517527
options={timeRangeOptions}
518528
on:select={e => changeOption(e, 'timeRange')}
519529
/>
530+
{#if searchOption.timeRange === TimeRange.SpecificDay}
531+
<Input
532+
type="date"
533+
bind:value={searchOption.specificDate}
534+
class="mt-2"
535+
/>
536+
{/if}
520537
</Col>
521538
<Col lg="1">
522539
<Button

src/routes/page/instruction/log/+page.svelte

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@
3636
value: x.value
3737
}));
3838
39+
// Get today's date in YYYY-MM-DD format
40+
const getTodayStr = () => {
41+
const d = new Date();
42+
return d.getFullYear() + '-' + String(d.getMonth() + 1).padStart(2, '0') + '-' + String(d.getDate()).padStart(2, '0');
43+
};
44+
3945
/** @type {import('$commonTypes').Pagination} */
4046
let pager = { page: firstPage, size: pageSize, count: 0 }
4147
@@ -64,6 +70,7 @@
6470
models: [],
6571
template: '',
6672
timeRange: TimeRange.Today,
73+
specificDate: '',
6774
states: []
6875
};
6976
@@ -87,7 +94,7 @@
8794
page: $page.url.searchParams.get("page"),
8895
pageSize: $page.url.searchParams.get("pageSize")
8996
}, { defaultPageSize: pageSize });
90-
innerTimeRange = convertTimeRange(searchOption.timeRange);
97+
innerTimeRange = convertTimeRange(searchOption.timeRange, searchOption.specificDate);
9198
9299
filter = {
93100
...filter,
@@ -223,9 +230,12 @@
223230
models: selectedValues
224231
};
225232
} else if (type === 'timeRange') {
233+
const timeRange = selectedValues.length > 0 ? selectedValues[0] : null;
234+
const isSpecificDay = timeRange === TimeRange.SpecificDay;
226235
searchOption = {
227236
...searchOption,
228-
timeRange: selectedValues.length > 0 ? selectedValues[0] : null
237+
timeRange,
238+
specificDate: isSpecificDay ? (searchOption.specificDate || getTodayStr()) : ''
229239
};
230240
}
231241
}
@@ -242,7 +252,7 @@
242252
const models = searchOption.models;
243253
const template = util.trim(searchOption.template) || null;
244254
const states = getSearchStates();
245-
innerTimeRange = convertTimeRange(searchOption.timeRange);
255+
innerTimeRange = convertTimeRange(searchOption.timeRange, searchOption.specificDate);
246256
247257
filter = {
248258
...filter,
@@ -382,6 +392,13 @@
382392
options={timeRangeOptions}
383393
on:select={e => changeOption(e, 'timeRange')}
384394
/>
395+
{#if searchOption.timeRange === TimeRange.SpecificDay}
396+
<Input
397+
type="date"
398+
bind:value={searchOption.specificDate}
399+
class="mt-2"
400+
/>
401+
{/if}
385402
</Col>
386403
<Col lg="1">
387404
<Button

0 commit comments

Comments
 (0)