+
+
Showing{' '}
- {Math.min(list.length, recordingsStore.pageSize)}{' '}
- out of {list.length} Recording
+ {Math.min(length, pageSize)}{' '}
+ out of {total} Recording
recordingsStore.updatePage(page)}
- limit={recordingsStore.pageSize}
+ limit={pageSize}
debounceRequest={100}
/>
diff --git a/frontend/app/mstore/recordingsStore.ts b/frontend/app/mstore/recordingsStore.ts
index 783c129e7..2b687df9e 100644
--- a/frontend/app/mstore/recordingsStore.ts
+++ b/frontend/app/mstore/recordingsStore.ts
@@ -1,34 +1,48 @@
import { makeAutoObservable } from 'mobx';
import { recordingsService } from 'App/services';
import { IRecord } from 'App/services/RecordingsService';
+import Period, { LAST_7_DAYS } from 'Types/app/period';
export default class RecordingsStore {
recordings: IRecord[] = [];
loading: boolean;
page = 1;
- pageSize = 15;
+ total: number = 0;
+ pageSize = 5;
order: 'desc' | 'asc' = 'desc';
search = '';
// later we will add search by user id
userId = '0';
+ startTimestamp = 0;
+ endTimestamp = 0;
+ rangeName: string = 'LAST_24_HOURS';
+ period: any = Period({ rangeName: LAST_7_DAYS });
constructor() {
makeAutoObservable(this);
}
- setRecordings(records: IRecord[]) {
+ setRecordings(records: IRecord[], total?: number) {
+ this.total = total || 0;
this.recordings = records;
}
setUserId(userId: string) {
this.userId = userId;
- this.fetchRecordings();
}
updateSearch(val: string) {
this.search = val;
+ this.page = 1;
}
+
+ updateTimestamps(period: any): void {
+ const { start, end, rangeName } = period;
+ this.period = Period({ start, end, rangeName });
+ this.page = 1;
+ }
+
updatePage(page: number) {
this.page = page;
}
@@ -38,15 +52,17 @@ export default class RecordingsStore {
page: this.page,
limit: this.pageSize,
order: this.order,
- search: this.search,
+ query: this.search,
userId: this.userId === '0' ? undefined : this.userId,
+ startTimestamp: this.period.start,
+ endTimestamp: this.period.end
};
this.loading = true;
try {
- const recordings = await recordingsService.fetchRecordings(filter);
- this.setRecordings(recordings);
- return recordings;
+ const response: { records: [], total: number } = await recordingsService.fetchRecordings(filter);
+ this.setRecordings(response.records, response.total);
+ return response.records;
} catch (e) {
console.error(e);
} finally {
@@ -54,7 +70,7 @@ export default class RecordingsStore {
}
}
- async fetchRecordingUrl(id: number): Promise
{
+ async fetchRecordingUrl(id: number): Promise {
this.loading = true;
try {
const recording = await recordingsService.fetchRecording(id);
diff --git a/frontend/app/services/RecordingsService.ts b/frontend/app/services/RecordingsService.ts
index 6dd3845c5..c5711e136 100644
--- a/frontend/app/services/RecordingsService.ts
+++ b/frontend/app/services/RecordingsService.ts
@@ -10,7 +10,10 @@ interface FetchFilter {
page: number;
limit: number;
order: 'asc' | 'desc';
- search: string;
+ query: string;
+ startTimestamp: number;
+ endTimestamp: number;
+ userId?: string;
}
export interface IRecord {
@@ -57,7 +60,7 @@ export default class RecordingsService {
});
}
- fetchRecordings(filters: FetchFilter): Promise {
+ fetchRecordings(filters: FetchFilter): Promise {
return this.client.post(`/assist/records`, filters).then((r) => {
return r.json().then((j) => j.data);
});