From 350dbd04a5778b5592982a7200585bbf9b573777 Mon Sep 17 00:00:00 2001 From: Matt Hill Date: Sat, 17 Dec 2022 22:08:45 -0700 Subject: [PATCH] auto reconnect to logs websocket and hopefully fix scrolling issues --- frontend/projects/shared/styles/shared.scss | 20 ++- .../app/components/logs/logs.component.html | 20 ++- .../src/app/components/logs/logs.component.ts | 144 ++++++++++++------ .../apps-routes/app-logs/app-logs.page.html | 2 +- .../kernel-logs/kernel-logs.page.html | 4 +- .../server-logs/server-logs.page.html | 4 +- .../services/api/embassy-mock-api.service.ts | 1 + frontend/projects/ui/src/styles.scss | 18 --- 8 files changed, 133 insertions(+), 80 deletions(-) diff --git a/frontend/projects/shared/styles/shared.scss b/frontend/projects/shared/styles/shared.scss index 59f8f5ca98..62d1571ceb 100644 --- a/frontend/projects/shared/styles/shared.scss +++ b/frontend/projects/shared/styles/shared.scss @@ -120,4 +120,22 @@ ion-modal { .color-primary-shade { color: var(--ion-color-primary-shade) -} \ No newline at end of file +} + +@keyframes ellipsis-dot { + 25% { + content: ''; + } + + 50% { + content: '.'; + } + + 75% { + content: '..'; + } + + 100% { + content: '...'; + } +} diff --git a/frontend/projects/ui/src/app/components/logs/logs.component.html b/frontend/projects/ui/src/app/components/logs/logs.component.html index 9040d4108e..231f0347aa 100644 --- a/frontend/projects/ui/src/app/components/logs/logs.component.html +++ b/frontend/projects/ui/src/app/components/logs/logs.component.html @@ -3,7 +3,7 @@ - {{ title }} + {{ pageTitle }} @@ -15,7 +15,7 @@ >
-
- Websocket failed.... -
- +

+ Reconnecting +

+

+ Waiting for network connectivity +

${ + success ? 'Reconnected' : 'Disconnected' + } at ${toLocalIsoString(new Date())}
` + container?.append(elem) + if (this.isOnBottom) { + setTimeout(() => { + this.scrollToBottom() + }, 25) + } + } + private processRes(res: LogsRes) { const { entries, 'start-cursor': startCursor } = res @@ -180,7 +225,7 @@ export class LogsComponent { container?.prepend(newLogs) const afterContainerHeight = container?.scrollHeight || 0 - // scroll down + // maintain scroll height setTimeout(() => { this.content?.scrollToPoint( 0, @@ -189,12 +234,11 @@ export class LogsComponent { }, 25) if (entries.length < this.limit) { - this.needInfinite = false + this.infiniteStatus = 2 } } else { container?.append(newLogs) if (this.autoScroll) { - // scroll to bottom setTimeout(() => { this.scrollToBottom() }, 25) diff --git a/frontend/projects/ui/src/app/pages/apps-routes/app-logs/app-logs.page.html b/frontend/projects/ui/src/app/pages/apps-routes/app-logs/app-logs.page.html index 30bdea9646..4617646f50 100644 --- a/frontend/projects/ui/src/app/pages/apps-routes/app-logs/app-logs.page.html +++ b/frontend/projects/ui/src/app/pages/apps-routes/app-logs/app-logs.page.html @@ -3,6 +3,6 @@ [followLogs]="followLogs()" [defaultBack]="'/services/' + pkgId" [context]="pkgId" - title="Service Logs" + pageTitle="Service Logs" class="ion-page" > diff --git a/frontend/projects/ui/src/app/pages/server-routes/kernel-logs/kernel-logs.page.html b/frontend/projects/ui/src/app/pages/server-routes/kernel-logs/kernel-logs.page.html index f37d9c886e..e744ec68f8 100644 --- a/frontend/projects/ui/src/app/pages/server-routes/kernel-logs/kernel-logs.page.html +++ b/frontend/projects/ui/src/app/pages/server-routes/kernel-logs/kernel-logs.page.html @@ -2,7 +2,7 @@ [fetchLogs]="fetchLogs()" [followLogs]="followLogs()" context="kernel" - defaultBack="embassy" - title="Kernel Logs" + defaultBack="system" + pageTitle="Kernel Logs" class="ion-page" > diff --git a/frontend/projects/ui/src/app/pages/server-routes/server-logs/server-logs.page.html b/frontend/projects/ui/src/app/pages/server-routes/server-logs/server-logs.page.html index 3d84f59680..e9501c2b9a 100644 --- a/frontend/projects/ui/src/app/pages/server-routes/server-logs/server-logs.page.html +++ b/frontend/projects/ui/src/app/pages/server-routes/server-logs/server-logs.page.html @@ -2,7 +2,7 @@ [fetchLogs]="fetchLogs()" [followLogs]="followLogs()" context="eos" - defaultBack="embassy" - title="OS Logs" + defaultBack="system" + pageTitle="OS Logs" class="ion-page" > diff --git a/frontend/projects/ui/src/app/services/api/embassy-mock-api.service.ts b/frontend/projects/ui/src/app/services/api/embassy-mock-api.service.ts index d511c8a60c..558dc71e28 100644 --- a/frontend/projects/ui/src/app/services/api/embassy-mock-api.service.ts +++ b/frontend/projects/ui/src/app/services/api/embassy-mock-api.service.ts @@ -171,6 +171,7 @@ export class MockApiService extends ApiService { map((_, index) => { // mock fire open observer if (index === 0) config.openObserver?.next(new Event('')) + if (index === 100) throw new Error('HAAHHA') return Mock.ServerLogs[0] }), ) diff --git a/frontend/projects/ui/src/styles.scss b/frontend/projects/ui/src/styles.scss index e7bdfb8fcd..b11b0bdcd4 100644 --- a/frontend/projects/ui/src/styles.scss +++ b/frontend/projects/ui/src/styles.scss @@ -295,24 +295,6 @@ h2 { line-height: unset; } -@keyframes ellipsis-dot { - 25% { - content: ''; - } - - 50% { - content: '.'; - } - - 75% { - content: '..'; - } - - 100% { - content: '...'; - } -} - @keyframes flickerAnimation { 0% { opacity: 1;