@@ -16,8 +16,9 @@ import { getAuditLogs } from "api/enterpriseApi";
16
16
import EventTypeTimeChart from "./charts/eventTypesTime" ;
17
17
import { debounce } from "lodash" ;
18
18
import { DatePicker } from "antd" ;
19
- import dayjs from "dayjs" ;
20
- import { Link } from "react-router-dom" ;
19
+ import dayjs , { Dayjs } from "dayjs" ;
20
+ import { Link , useLocation } from "react-router-dom" ;
21
+ import history from "util/history" ;
21
22
import { SETTING_URL } from "@lowcoder-ee/constants/routesURL" ;
22
23
import { EyeOutlined } from "@ant-design/icons" ;
23
24
@@ -102,6 +103,7 @@ export function AuditLogDashboard() {
102
103
} ;
103
104
104
105
const currentUser = useSelector ( getUser ) ;
106
+ const location = useLocation ( ) ;
105
107
106
108
const [ allLogs , setAllLogs ] = useState < AuditLog [ ] > ( [ ] ) ;
107
109
const [ currentPageLogs , setCurrentPageLogs ] = useState < AuditLog [ ] > ( [ ] ) ;
@@ -112,8 +114,47 @@ export function AuditLogDashboard() {
112
114
const [ form ] = Form . useForm ( ) ;
113
115
const [ pagination , setPagination ] = useState ( { pageSize : 25 , current : 1 } ) ;
114
116
115
- // Add state to store date range
116
- const [ dateRange , setDateRange ] = useState < { fromTimestamp ?: string ; toTimestamp ?: string } > ( { } ) ;
117
+ // Function to get URL parameters
118
+ const getQueryParams = ( ) => {
119
+ const params = new URLSearchParams ( location . search ) ;
120
+ let queryObject : Record < string , any > = { } ;
121
+
122
+ // Convert search params into a JavaScript object
123
+ params . forEach ( ( value , key ) => {
124
+ if ( key !== 'fromTimestamp' && key !== 'toTimestamp' ) {
125
+ queryObject [ key ] = value ;
126
+ }
127
+ } ) ;
128
+
129
+ // set date range picker values
130
+ let dateRange = new Array < Dayjs > ( 2 ) ;
131
+ if ( params . get ( 'fromTimestamp' ) ) {
132
+ dateRange [ 0 ] = dayjs ( params . get ( 'fromTimestamp' ) ) ;
133
+ }
134
+ if ( params . get ( 'toTimestamp' ) ) {
135
+ dateRange [ 1 ] = dayjs ( params . get ( 'toTimestamp' ) ) ;
136
+ }
137
+
138
+ queryObject [ 'dateRange' ] = dateRange ;
139
+ return queryObject ;
140
+ } ;
141
+
142
+ useEffect ( ( ) => {
143
+ form . setFieldsValue ( getQueryParams ( ) ) ;
144
+ } , [ ] ) ;
145
+
146
+ const handleQueryParams = ( queryParams : Record < string , string > ) => {
147
+ const params = new URLSearchParams ( ) ;
148
+ Object . keys ( queryParams ) . map ( ( key ) => {
149
+ const value = queryParams [ key ] ;
150
+ if ( value ) {
151
+ params . set ( key , value ) ;
152
+ } else {
153
+ params . delete ( key ) ; // Remove the key if the value is empty
154
+ }
155
+ } )
156
+ history . push ( { search : params . toString ( ) } )
157
+ }
117
158
118
159
// Fetch Logs with all form values if set
119
160
const fetchLogs = async ( newPage : number , resetData : boolean = false ) => {
@@ -126,18 +167,20 @@ export function AuditLogDashboard() {
126
167
pageNum : newPage , // API page number
127
168
fromTimestamp : formValues . dateRange ?. [ 0 ] ? formValues . dateRange [ 0 ] . toISOString ( ) : undefined ,
128
169
toTimestamp : formValues . dateRange ?. [ 1 ] ? formValues . dateRange [ 1 ] . toISOString ( ) : undefined ,
129
- } ) . filter ( ( [ _ , value ] ) => value !== undefined && value !== null && value !== "" )
170
+ } ) . filter ( ( [ key , value ] ) => value !== undefined && value !== null && value !== "" && key !== 'dateRange' )
130
171
) ;
131
-
172
+
173
+ handleQueryParams ( cleanedParams as any ) ;
174
+
132
175
setLoading ( true ) ;
133
176
try {
134
177
const data = await getAuditLogs ( cleanedParams ) ;
135
178
136
179
if ( resetData ) {
137
- setAllLogs ( data . data ) ;
180
+ setAllLogs ( data . data || [ ] ) ;
138
181
setPagination ( { pageSize : 25 , current : 1 } ) ; // Reset pagination
139
182
} else {
140
- setAllLogs ( ( prevLogs ) => [ ...prevLogs , ...data . data ] ) ;
183
+ setAllLogs ( ( prevLogs ) => [ ...prevLogs , ...( data ? .data || [ ] ) ] ) ;
141
184
}
142
185
143
186
setTotal ( data . totalCount ) ;
0 commit comments