diff --git a/static/js/app-dashboard/components/app.vue b/static/js/app-dashboard/components/app.vue index 237a03a..7477e35 100644 --- a/static/js/app-dashboard/components/app.vue +++ b/static/js/app-dashboard/components/app.vue @@ -117,7 +117,14 @@ />
- +
@@ -147,6 +154,11 @@ export default { data: {}, conferences: null, + paginatedConferences: null, + conferencesCount: 0, + conferencesPage: 1, + conferencesPerPage: 20, + conferencesLoading: false, sessions: null, connections: null, issues: null, @@ -179,8 +191,13 @@ export default { }, async created() { + const since = new Date(); + since.setDate(since.getDate() - peermetrics.daysHistory); + const created_at_gte = since.toISOString(); + this.data.issues = await peermetrics.get(peermetrics.urls.issues(), { - appId: peermetrics.app.id + appId: peermetrics.app.id, + created_at_gte, }).catch(e => { console.warn(e) }); @@ -190,9 +207,9 @@ export default { } this.data.conferences = await peermetrics.get(peermetrics.urls.conferences(), { - appId: peermetrics.app.id - }) - .catch(e => { + appId: peermetrics.app.id, + created_at_gte, + }).catch(e => { console.warn(e) }); @@ -201,18 +218,22 @@ export default { this.conferences = Object.freeze(this.data.conferences); } + await this.fetchConferences(); + this.data.sessions = await peermetrics.get(peermetrics.urls.sessions, { - appId: peermetrics.app.id + appId: peermetrics.app.id, + created_at_gte, }) .catch(e => console.warn(e)); - + if(this.data.sessions) { this.data.sessions = peermetrics.utils.populateIssues(this.data.sessions, this.data.issues) this.sessions = Object.freeze(this.data.sessions); } this.data.connections = await peermetrics.get(peermetrics.urls.connections(), { - appId: peermetrics.app.id + appId: peermetrics.app.id, + created_at_gte, }) .catch(e => { console.warn(e) @@ -291,6 +312,26 @@ export default { return Object.values(object).sort((a, b) => a.value > b.value ? 1 : -1) }, + async fetchConferences(page) { + if (page) this.conferencesPage = page; + this.conferencesLoading = true; + const offset = (this.conferencesPage - 1) * this.conferencesPerPage; + try { + const response = await peermetrics.get(peermetrics.urls.conferences(), { + appId: peermetrics.app.id, + limit: this.conferencesPerPage, + offset: offset, + }); + if (response) { + this.paginatedConferences = Object.freeze(response.results || []); + this.conferencesCount = response.count || 0; + } + } catch (e) { + console.warn(e); + } + this.conferencesLoading = false; + }, + applyFilters () { // if no filters are applied, use all the data if (!this.selectedAppVersion && !this.selectedBrowser && !this.selectedOs && !this.selectedCountry) { diff --git a/static/js/app-dashboard/components/conferencesTab.vue b/static/js/app-dashboard/components/conferencesTab.vue index 68b7292..303015b 100644 --- a/static/js/app-dashboard/components/conferencesTab.vue +++ b/static/js/app-dashboard/components/conferencesTab.vue @@ -5,9 +5,12 @@
-
+
+ Loading conferences... +
+ - - + + >
@@ -52,7 +50,6 @@ diff --git a/static/js/mixins/conferences.js b/static/js/mixins/conferences.js index 82471ed..42ead6d 100644 --- a/static/js/mixins/conferences.js +++ b/static/js/mixins/conferences.js @@ -28,10 +28,10 @@ const conferencesFunctions = { return !!conference.conference_name; }, hasError(conference) { - return conference.issues.some((issue) => issue.type === 'error') + return conference.issues && conference.issues.some((issue) => issue.type === 'error') }, hasWarning(conference) { - return conference.issues.some((issue) => issue.type === 'warning') + return conference.issues && conference.issues.some((issue) => issue.type === 'warning') }, createPath(conference) { return peermetrics.createPath('conference', conference.id) diff --git a/static/js/participant/components/conferencesTab.vue b/static/js/participant/components/conferencesTab.vue index 5f71b88..00606fb 100644 --- a/static/js/participant/components/conferencesTab.vue +++ b/static/js/participant/components/conferencesTab.vue @@ -140,7 +140,7 @@ export default { // if an sfu, show all conferences that had at least one issue if (this.isSfu) { return this.conferences.filter((conference) => { - return conference.issues.length + return conference.issues && conference.issues.length }) }