@@ -51,7 +51,7 @@ import {
51
51
ALERT_STATUS_FILTERS , ALERT_PERIOD_DROPDOWN_MENU ,
52
52
} from ' @/services/alert-manager/v2/constants/alert-table-constant' ;
53
53
import {
54
- convertRelativePeriodToPeriod , initiatePeriodByGranularity ,
54
+ convertRelativePeriodToPeriod ,
55
55
} from ' @/services/alert-manager/v2/helpers/alert-period-helper' ;
56
56
import { ALERT_MANAGER_ROUTE } from ' @/services/alert-manager/v2/routes/route-constant' ;
57
57
import { useAlertPageStore } from ' @/services/alert-manager/v2/stores/alert-page-store' ;
@@ -111,26 +111,31 @@ const filterState = reactive({
111
111
{ label: i18n .t (' ALERT_MANAGER.ALERTS.HIGH' ), name: ALERT_URGENCY .HIGH },
112
112
{ label: i18n .t (' ALERT_MANAGER.ALERTS.LOW' ), name: ALERT_URGENCY .LOW },
113
113
])),
114
- period: initiatePeriodByGranularity ()[ 0 ] ,
114
+ period: { start: undefined , end: undefined } ,
115
115
periodMenuItems: computed <AlertPeriodItemType []>(() => [
116
+ {
117
+ type: ' item' ,
118
+ name: ' ALL' ,
119
+ label: i18n .t (' ALERT_MANAGER.ALERTS.ALL' ),
120
+ },
116
121
{
117
122
name: ALERT_PERIOD_DROPDOWN_MENU .LAST_1_MONTH ,
118
123
relativePeriod: { value: 1 },
119
124
label: i18n .t (' ALERT_MANAGER.ALERTS.LAST_1_MONTHS' ),
120
125
},
121
126
{
122
127
name: ALERT_PERIOD_DROPDOWN_MENU .LAST_3_MONTHS ,
123
- relativePeriod: { value: 2 },
128
+ relativePeriod: { value: 3 },
124
129
label: i18n .t (' ALERT_MANAGER.ALERTS.LAST_3_MONTHS' ),
125
130
},
126
131
{
127
132
name: ALERT_PERIOD_DROPDOWN_MENU .LAST_6_MONTHS ,
128
- relativePeriod: { value: 5 },
133
+ relativePeriod: { value: 6 },
129
134
label: i18n .t (' ALERT_MANAGER.ALERTS.LAST_6_MONTHS' ),
130
135
},
131
136
{
132
137
name: ALERT_PERIOD_DROPDOWN_MENU .LAST_12_MONTHS ,
133
- relativePeriod: { value: 11 },
138
+ relativePeriod: { value: 12 },
134
139
label: i18n .t (' ALERT_MANAGER.ALERTS.LAST_12_MONTHS' ),
135
140
},
136
141
{
@@ -152,7 +157,8 @@ const filterState = reactive({
152
157
const { isStartInvalid, isEndInvalid } = checkPeriod (LIMIT_MONTH );
153
158
return isStartInvalid || isEndInvalid ;
154
159
}),
155
- selectedPeriod: ALERT_PERIOD_DROPDOWN_MENU .LAST_1_MONTH as string ,
160
+ selectedPeriod: ALERT_PERIOD_DROPDOWN_MENU .ALL as string ,
161
+ showPeriodBadge: computed <boolean >(() => filterState .selectedPeriod === ALERT_PERIOD_DROPDOWN_MENU .CUSTOM && filterState .period .start && filterState .period .end ),
156
162
serviceDropdownList: computed <SelectDropdownMenuItem []>(() => alertPageGetters .serviceDropdownList ),
157
163
statusFields: computed <AlertFilterType []>(() => ([
158
164
{ label: i18n .t (' ALERT_MANAGER.ALERTS.OPEN' ), name: ALERT_STATUS_FILTERS .OPEN },
@@ -237,6 +243,9 @@ const handleSelectPeriod = async (periodMenuName: AlertPeriodDropdownMenuType) =
237
243
state .customRangeModalVisible = true ;
238
244
return ;
239
245
}
246
+ if (periodMenuName === ALERT_PERIOD_DROPDOWN_MENU .ALL ) {
247
+ filterState .period = { start: undefined , end: undefined };
248
+ }
240
249
filterState .selectedPeriod = periodMenuName ;
241
250
const selectedPeriodItem = filterState .periodMenuItems .find ((d ) => d .name === periodMenuName ) || {} as AlertPeriodItemType ;
242
251
filterState .period = selectedPeriodItem .relativePeriod ? convertRelativePeriodToPeriod (selectedPeriodItem .relativePeriod ) : filterState .period ;
@@ -274,13 +283,14 @@ const handleExportToExcel = async () => {
274
283
});
275
284
};
276
285
const handleCustomRangeModalConfirm = (start : string , end : string ) => {
277
- filterState .period = { start: dayjs ( start ). startOf ( ' month ' ). format ( ' YYYY-MM-DD ' ) , end: dayjs ( end ). endOf ( ' month ' ). format ( ' YYYY-MM-DD ' ) };
286
+ filterState .period = { start , end };
278
287
filterState .selectedPeriod = ALERT_PERIOD_DROPDOWN_MENU .CUSTOM ;
279
288
state .customRangeModalVisible = false ;
280
289
fetchAlertsList ();
281
290
};
282
291
283
292
const fetchAlertsList = async () => {
293
+ state .loading = true ;
284
294
try {
285
295
filterQueryHelper .setFilters ([]);
286
296
if (storeState .selectedUrgency !== ' ALL' ) {
@@ -295,12 +305,17 @@ const fetchAlertsList = async () => {
295
305
filterQueryHelper .addFilter ({ k: ' labels' , v: filterState .selectedLabels .map ((i ) => i .name ), o: ' =' });
296
306
}
297
307
298
- if (filterState .period .start ) {
308
+ if (filterState .period .start && filterState . period . end && ( filterState . period . start === filterState . period . end ) ) {
299
309
filterQueryHelper .addFilter ({ k: ' created_at' , v: filterState .period .start , o: ' >=' });
310
+ } else {
311
+ if (filterState .period .start ) {
312
+ filterQueryHelper .addFilter ({ k: ' created_at' , v: filterState .period .start , o: ' >=' });
313
+ }
314
+ if (filterState .period .end ) {
315
+ filterQueryHelper .addFilter ({ k: ' created_at' , v: filterState .period .end , o: ' <=' });
316
+ }
300
317
}
301
- if (filterState .period .end ) {
302
- filterQueryHelper .addFilter ({ k: ' created_at' , v: filterState .period .end , o: ' <=' });
303
- }
318
+
304
319
305
320
if (state .isServicePage ) {
306
321
filterQueryHelper .addFilter ({ k: ' service_id' , v: storeState .serviceId , o: ' =' });
@@ -320,6 +335,8 @@ const fetchAlertsList = async () => {
320
335
await alertPageStore .fetchAlertsList (params );
321
336
} catch (e ) {
322
337
ErrorHandler .handleError (e , true );
338
+ } finally {
339
+ state .loading = false ;
323
340
}
324
341
};
325
342
@@ -343,12 +360,7 @@ watch(() => storeState.serviceId, async (serviceId) => {
343
360
await queryTagHelper .setURLQueryStringFilters (route .query .filters );
344
361
}
345
362
346
- try {
347
- state .loading = true ;
348
- await fetchAlertsList ();
349
- } finally {
350
- state .loading = false ;
351
- }
363
+ await fetchAlertsList ();
352
364
})();
353
365
</script >
354
366
@@ -398,15 +410,24 @@ watch(() => storeState.serviceId, async (serviceId) => {
398
410
<span >{{ item.label }}</span >
399
411
</template >
400
412
</p-select-dropdown >
401
- <p-select-dropdown :menu =" filterState.periodMenuItems"
402
- :selection-label =" $t('ALERT_MANAGER.ALERTS.PERIOD')"
403
- disable-proxy
404
- style-type =" rounded"
405
- use-fixed-menu-style
406
- :selected =" filterState.selectedPeriod"
407
- :invalid =" filterState.isPeriodInvalid"
408
- @select =" handleSelectPeriod"
409
- />
413
+ <div >
414
+ <p-select-dropdown :menu =" filterState.periodMenuItems"
415
+ :selection-label =" $t('ALERT_MANAGER.ALERTS.PERIOD')"
416
+ disable-proxy
417
+ style-type =" rounded"
418
+ use-fixed-menu-style
419
+ :selected =" filterState.selectedPeriod"
420
+ :invalid =" filterState.isPeriodInvalid"
421
+ @select =" handleSelectPeriod"
422
+ />
423
+ <p-badge v-if =" filterState.showPeriodBadge"
424
+ badge-type =" subtle"
425
+ style-type =" gray200"
426
+ class =" ml-2"
427
+ >
428
+ {{ `${dayjs.utc(filterState.period.start).format('MMM D, YYYY')} ~ ${dayjs.utc(filterState.period.end).format('MMM D, YYYY')}` }}
429
+ </p-badge >
430
+ </div >
410
431
<p-divider vertical
411
432
class =" divider"
412
433
/>
@@ -521,7 +542,7 @@ watch(() => storeState.serviceId, async (serviceId) => {
521
542
<custom-date-modal :visible.sync =" state.customRangeModalVisible"
522
543
:start =" filterState.period?.start"
523
544
:end =" filterState.period?.end"
524
- :datetime-picker-data-type =" 'yearToMonth '"
545
+ :datetime-picker-data-type =" 'yearToDate '"
525
546
use-restricted-mode
526
547
@confirm =" handleCustomRangeModalConfirm"
527
548
/>
0 commit comments