no page or limit

This commit is contained in:
Drew Ansbacher
2021-08-22 14:49:24 -06:00
committed by Matt Hill
parent 0549c86048
commit 8b862b8172
5 changed files with 64 additions and 49 deletions

View File

@@ -14,8 +14,8 @@ export class AppLogsPage {
page = 1
pkgId: string
firstTimeLoaded = false
needInfinite = false
pageLength = 20
needInfinite = true
before: string
constructor (
private readonly route: ActivatedRoute,
@@ -33,11 +33,17 @@ export class AppLogsPage {
// get logs
const logs = await this.embassyApi.getPackageLogs({
id: this.pkgId,
limit: this.pageLength,
page: this.page,
before: this.before,
})
this.firstTimeLoaded = true
if (!logs.length) {
this.needInfinite = false
return
}
this.before = logs[0].timestamp
const container = document.getElementById('container')
const beforeContainerHeight = container.scrollHeight
const newLogs = document.getElementById('template').cloneNode(true) as HTMLElement
@@ -48,9 +54,6 @@ export class AppLogsPage {
// scroll down
scrollBy(0, afterContainerHeight - beforeContainerHeight)
this.content.scrollToPoint(0, afterContainerHeight - beforeContainerHeight)
const wrapper = document.getElementById('ion-content')
this.needInfinite = logs.length === this.pageLength
} catch (e) {
this.errToast.present(e)
}
@@ -58,7 +61,6 @@ export class AppLogsPage {
async loadData (e: any): Promise<void> {
await this.getLogs()
this.page++
e.target.complete()
}
}

View File

@@ -12,10 +12,9 @@ export class ServerLogsPage {
@ViewChild(IonContent, { static: false }) private content: IonContent
loading = true
logs: string
needInfinite = false
needInfinite = true
firstTimeLoaded = false
page = 1
pageLength = 20
before: string
constructor (
private readonly errToast: ErrorToastService,
@@ -29,10 +28,14 @@ export class ServerLogsPage {
async getLogs () {
try {
// get logs
const logs = await this.embassyApi.getServerLogs({
limit: this.pageLength,
page: this.page,
})
const logs = await this.embassyApi.getServerLogs({ before: this.before })
if (!logs.length) {
this.needInfinite = false
return
}
this.before = logs[0].timestamp
this.firstTimeLoaded = true
@@ -46,9 +49,6 @@ export class ServerLogsPage {
// scroll down
scrollBy(0, afterContainerHeight - beforeContainerHeight)
this.content.scrollToPoint(0, afterContainerHeight - beforeContainerHeight)
const wrapper = document.getElementById('ion-content')
this.needInfinite = logs.length === this.pageLength
} catch (e) {
this.errToast.present(e)
}
@@ -56,7 +56,6 @@ export class ServerLogsPage {
async loadData (e: any): Promise<void> {
await this.getLogs()
this.page++
e.target.complete()
}
}

View File

@@ -27,7 +27,7 @@ export module RR {
export type SetShareStatsReq = WithExpire<{ value: any }> // server.config.share-stats
export type SetShareStatsRes = WithRevision<null>
export type GetServerLogsReq = { before?: string, limit: number, page: number } // server.logs
export type GetServerLogsReq = { before?: string } // server.logs
export type GetServerLogsRes = Log[]
export type GetServerMetricsReq = { } // server.metrics
@@ -137,7 +137,7 @@ export module RR {
export type GetPackagePropertiesReq = { id: string } // package.properties
export type GetPackagePropertiesRes<T extends number> = PackagePropertiesVersioned<T>
export type GetPackageLogsReq = { page: number, limit: number, id: string, before?: string } // package.logs
export type GetPackageLogsReq = { id: string, before?: string } // package.logs
export type GetPackageLogsRes = Log[]
export type GetPackageMetricsReq = { id: string } // package.metrics

View File

@@ -75,10 +75,11 @@ export class MockApiService extends ApiService {
async getServerLogs (params: RR.GetServerLogsReq): Promise<RR.GetServerLogsRes> {
await pauseFor(2000)
if (params.page === 4) {
return (Mock.ServerLogs as []).slice(0, params.limit - 3)
if (Math.random() < .2) {
console.log('last page')
return []
}
return Mock.ServerLogs.slice(0, params.limit)
return Mock.ServerLogs
}
async getServerMetrics (params: RR.GetServerMetricsReq): Promise<RR.GetServerMetricsRes> {
@@ -313,10 +314,11 @@ export class MockApiService extends ApiService {
async getPackageLogs (params: RR.GetPackageLogsReq): Promise<RR.GetPackageLogsRes> {
await pauseFor(2000)
if (params.page === 4) {
return (Mock.PackageLogs as []).slice(0, params.limit - 5)
if (Math.random() < .2) {
console.log('last page')
return []
}
return Mock.PackageLogs.slice(0, params.limit)
return Mock.PackageLogs
}
async installPackageRaw (params: RR.InstallPackageReq): Promise<RR.InstallPackageRes> {