mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-30 20:14:49 +00:00
no page or limit
This commit is contained in:
committed by
Aiden McClelland
parent
3d5ac47a82
commit
5ed99520ae
56
ui/package-lock.json
generated
56
ui/package-lock.json
generated
@@ -54,16 +54,16 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"rxjs": "6.6.7",
|
"rxjs": "^6.6.3",
|
||||||
"sorted-btree": "1.5.0",
|
"sorted-btree": "^1.5.0",
|
||||||
"uuid": "8.3.2"
|
"uuid": "^8.3.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "16.4.13",
|
"@types/node": "^15.0.0",
|
||||||
"@types/uuid": "8.3.1",
|
"@types/uuid": "^8.3.0",
|
||||||
"ts-node": "10.2.0",
|
"ts-node": "^9.1.1",
|
||||||
"tslint": "6.1.3",
|
"tslint": "^6.1.0",
|
||||||
"typescript": "4.3.5"
|
"typescript": "4.1.5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@ampproject/remapping": {
|
"node_modules/@ampproject/remapping": {
|
||||||
@@ -16820,7 +16820,9 @@
|
|||||||
"resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.0.tgz",
|
||||||
"integrity": "sha512-USH2jBb+C/hIpwD2iRjp0pe0k+MvzG0mlSn/FIdCgQhUb9ALPRjt2KIQdfZDS9r0ZIeUAg7gOu9KL0PFqGqr5Q==",
|
"integrity": "sha512-USH2jBb+C/hIpwD2iRjp0pe0k+MvzG0mlSn/FIdCgQhUb9ALPRjt2KIQdfZDS9r0ZIeUAg7gOu9KL0PFqGqr5Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {}
|
"requires": {
|
||||||
|
"ajv": "^8.0.0"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"core-js": {
|
"core-js": {
|
||||||
"version": "3.16.0",
|
"version": "3.16.0",
|
||||||
@@ -16898,7 +16900,9 @@
|
|||||||
"resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.0.tgz",
|
||||||
"integrity": "sha512-USH2jBb+C/hIpwD2iRjp0pe0k+MvzG0mlSn/FIdCgQhUb9ALPRjt2KIQdfZDS9r0ZIeUAg7gOu9KL0PFqGqr5Q==",
|
"integrity": "sha512-USH2jBb+C/hIpwD2iRjp0pe0k+MvzG0mlSn/FIdCgQhUb9ALPRjt2KIQdfZDS9r0ZIeUAg7gOu9KL0PFqGqr5Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {}
|
"requires": {
|
||||||
|
"ajv": "^8.0.0"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"json-schema-traverse": {
|
"json-schema-traverse": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
@@ -16942,7 +16946,9 @@
|
|||||||
"integrity": "sha512-Brah4Uo5/U8v76c6euTwtjVFFaVishwnJrQBYpev1JRh4vjA1F4HY3UzQez41YUCszUCXKagG8v6eVRBHV1gkw==",
|
"integrity": "sha512-Brah4Uo5/U8v76c6euTwtjVFFaVishwnJrQBYpev1JRh4vjA1F4HY3UzQez41YUCszUCXKagG8v6eVRBHV1gkw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"peer": true,
|
"peer": true,
|
||||||
"requires": {}
|
"requires": {
|
||||||
|
"ajv": "^8.0.0"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"json-schema-traverse": {
|
"json-schema-traverse": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
@@ -16995,7 +17001,9 @@
|
|||||||
"resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.0.tgz",
|
||||||
"integrity": "sha512-USH2jBb+C/hIpwD2iRjp0pe0k+MvzG0mlSn/FIdCgQhUb9ALPRjt2KIQdfZDS9r0ZIeUAg7gOu9KL0PFqGqr5Q==",
|
"integrity": "sha512-USH2jBb+C/hIpwD2iRjp0pe0k+MvzG0mlSn/FIdCgQhUb9ALPRjt2KIQdfZDS9r0ZIeUAg7gOu9KL0PFqGqr5Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {}
|
"requires": {
|
||||||
|
"ajv": "^8.0.0"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"json-schema-traverse": {
|
"json-schema-traverse": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
@@ -17073,7 +17081,9 @@
|
|||||||
"resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.0.tgz",
|
||||||
"integrity": "sha512-USH2jBb+C/hIpwD2iRjp0pe0k+MvzG0mlSn/FIdCgQhUb9ALPRjt2KIQdfZDS9r0ZIeUAg7gOu9KL0PFqGqr5Q==",
|
"integrity": "sha512-USH2jBb+C/hIpwD2iRjp0pe0k+MvzG0mlSn/FIdCgQhUb9ALPRjt2KIQdfZDS9r0ZIeUAg7gOu9KL0PFqGqr5Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {}
|
"requires": {
|
||||||
|
"ajv": "^8.0.0"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"json-schema-traverse": {
|
"json-schema-traverse": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
@@ -18622,7 +18632,9 @@
|
|||||||
"resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.0.tgz",
|
||||||
"integrity": "sha512-USH2jBb+C/hIpwD2iRjp0pe0k+MvzG0mlSn/FIdCgQhUb9ALPRjt2KIQdfZDS9r0ZIeUAg7gOu9KL0PFqGqr5Q==",
|
"integrity": "sha512-USH2jBb+C/hIpwD2iRjp0pe0k+MvzG0mlSn/FIdCgQhUb9ALPRjt2KIQdfZDS9r0ZIeUAg7gOu9KL0PFqGqr5Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {}
|
"requires": {
|
||||||
|
"ajv": "^8.0.0"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"json-schema-traverse": {
|
"json-schema-traverse": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
@@ -24491,14 +24503,14 @@
|
|||||||
"patch-db-client": {
|
"patch-db-client": {
|
||||||
"version": "file:../../patch-db/client",
|
"version": "file:../../patch-db/client",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/node": "16.4.13",
|
"@types/node": "^15.0.0",
|
||||||
"@types/uuid": "8.3.1",
|
"@types/uuid": "^8.3.0",
|
||||||
"rxjs": "6.6.7",
|
"rxjs": "^6.6.3",
|
||||||
"sorted-btree": "1.5.0",
|
"sorted-btree": "^1.5.0",
|
||||||
"ts-node": "10.2.0",
|
"ts-node": "^9.1.1",
|
||||||
"tslint": "6.1.3",
|
"tslint": "^6.1.0",
|
||||||
"typescript": "4.3.5",
|
"typescript": "4.1.5",
|
||||||
"uuid": "8.3.2"
|
"uuid": "^8.3.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"path-dirname": {
|
"path-dirname": {
|
||||||
|
|||||||
@@ -14,8 +14,8 @@ export class AppLogsPage {
|
|||||||
page = 1
|
page = 1
|
||||||
pkgId: string
|
pkgId: string
|
||||||
firstTimeLoaded = false
|
firstTimeLoaded = false
|
||||||
needInfinite = false
|
needInfinite = true
|
||||||
pageLength = 20
|
before: string
|
||||||
|
|
||||||
constructor (
|
constructor (
|
||||||
private readonly route: ActivatedRoute,
|
private readonly route: ActivatedRoute,
|
||||||
@@ -33,11 +33,17 @@ export class AppLogsPage {
|
|||||||
// get logs
|
// get logs
|
||||||
const logs = await this.embassyApi.getPackageLogs({
|
const logs = await this.embassyApi.getPackageLogs({
|
||||||
id: this.pkgId,
|
id: this.pkgId,
|
||||||
limit: this.pageLength,
|
before: this.before,
|
||||||
page: this.page,
|
|
||||||
})
|
})
|
||||||
this.firstTimeLoaded = true
|
this.firstTimeLoaded = true
|
||||||
|
|
||||||
|
if (!logs.length) {
|
||||||
|
this.needInfinite = false
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
this.before = logs[0].timestamp
|
||||||
|
|
||||||
const container = document.getElementById('container')
|
const container = document.getElementById('container')
|
||||||
const beforeContainerHeight = container.scrollHeight
|
const beforeContainerHeight = container.scrollHeight
|
||||||
const newLogs = document.getElementById('template').cloneNode(true) as HTMLElement
|
const newLogs = document.getElementById('template').cloneNode(true) as HTMLElement
|
||||||
@@ -48,9 +54,6 @@ export class AppLogsPage {
|
|||||||
// scroll down
|
// scroll down
|
||||||
scrollBy(0, afterContainerHeight - beforeContainerHeight)
|
scrollBy(0, afterContainerHeight - beforeContainerHeight)
|
||||||
this.content.scrollToPoint(0, afterContainerHeight - beforeContainerHeight)
|
this.content.scrollToPoint(0, afterContainerHeight - beforeContainerHeight)
|
||||||
|
|
||||||
const wrapper = document.getElementById('ion-content')
|
|
||||||
this.needInfinite = logs.length === this.pageLength
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.errToast.present(e)
|
this.errToast.present(e)
|
||||||
}
|
}
|
||||||
@@ -58,7 +61,6 @@ export class AppLogsPage {
|
|||||||
|
|
||||||
async loadData (e: any): Promise<void> {
|
async loadData (e: any): Promise<void> {
|
||||||
await this.getLogs()
|
await this.getLogs()
|
||||||
this.page++
|
|
||||||
e.target.complete()
|
e.target.complete()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,10 +12,9 @@ export class ServerLogsPage {
|
|||||||
@ViewChild(IonContent, { static: false }) private content: IonContent
|
@ViewChild(IonContent, { static: false }) private content: IonContent
|
||||||
loading = true
|
loading = true
|
||||||
logs: string
|
logs: string
|
||||||
needInfinite = false
|
needInfinite = true
|
||||||
firstTimeLoaded = false
|
firstTimeLoaded = false
|
||||||
page = 1
|
before: string
|
||||||
pageLength = 20
|
|
||||||
|
|
||||||
constructor (
|
constructor (
|
||||||
private readonly errToast: ErrorToastService,
|
private readonly errToast: ErrorToastService,
|
||||||
@@ -29,10 +28,14 @@ export class ServerLogsPage {
|
|||||||
async getLogs () {
|
async getLogs () {
|
||||||
try {
|
try {
|
||||||
// get logs
|
// get logs
|
||||||
const logs = await this.embassyApi.getServerLogs({
|
const logs = await this.embassyApi.getServerLogs({ before: this.before })
|
||||||
limit: this.pageLength,
|
|
||||||
page: this.page,
|
if (!logs.length) {
|
||||||
})
|
this.needInfinite = false
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
this.before = logs[0].timestamp
|
||||||
|
|
||||||
this.firstTimeLoaded = true
|
this.firstTimeLoaded = true
|
||||||
|
|
||||||
@@ -46,9 +49,6 @@ export class ServerLogsPage {
|
|||||||
// scroll down
|
// scroll down
|
||||||
scrollBy(0, afterContainerHeight - beforeContainerHeight)
|
scrollBy(0, afterContainerHeight - beforeContainerHeight)
|
||||||
this.content.scrollToPoint(0, afterContainerHeight - beforeContainerHeight)
|
this.content.scrollToPoint(0, afterContainerHeight - beforeContainerHeight)
|
||||||
|
|
||||||
const wrapper = document.getElementById('ion-content')
|
|
||||||
this.needInfinite = logs.length === this.pageLength
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.errToast.present(e)
|
this.errToast.present(e)
|
||||||
}
|
}
|
||||||
@@ -56,7 +56,6 @@ export class ServerLogsPage {
|
|||||||
|
|
||||||
async loadData (e: any): Promise<void> {
|
async loadData (e: any): Promise<void> {
|
||||||
await this.getLogs()
|
await this.getLogs()
|
||||||
this.page++
|
|
||||||
e.target.complete()
|
e.target.complete()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ export module RR {
|
|||||||
export type SetShareStatsReq = WithExpire<{ value: any }> // server.config.share-stats
|
export type SetShareStatsReq = WithExpire<{ value: any }> // server.config.share-stats
|
||||||
export type SetShareStatsRes = WithRevision<null>
|
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 GetServerLogsRes = Log[]
|
||||||
|
|
||||||
export type GetServerMetricsReq = { } // server.metrics
|
export type GetServerMetricsReq = { } // server.metrics
|
||||||
@@ -137,7 +137,7 @@ export module RR {
|
|||||||
export type GetPackagePropertiesReq = { id: string } // package.properties
|
export type GetPackagePropertiesReq = { id: string } // package.properties
|
||||||
export type GetPackagePropertiesRes<T extends number> = PackagePropertiesVersioned<T>
|
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 GetPackageLogsRes = Log[]
|
||||||
|
|
||||||
export type GetPackageMetricsReq = { id: string } // package.metrics
|
export type GetPackageMetricsReq = { id: string } // package.metrics
|
||||||
|
|||||||
@@ -75,10 +75,11 @@ export class MockApiService extends ApiService {
|
|||||||
|
|
||||||
async getServerLogs (params: RR.GetServerLogsReq): Promise<RR.GetServerLogsRes> {
|
async getServerLogs (params: RR.GetServerLogsReq): Promise<RR.GetServerLogsRes> {
|
||||||
await pauseFor(2000)
|
await pauseFor(2000)
|
||||||
if (params.page === 4) {
|
if (Math.random() < .2) {
|
||||||
return (Mock.ServerLogs as []).slice(0, params.limit - 3)
|
console.log('last page')
|
||||||
|
return []
|
||||||
}
|
}
|
||||||
return Mock.ServerLogs.slice(0, params.limit)
|
return Mock.ServerLogs
|
||||||
}
|
}
|
||||||
|
|
||||||
async getServerMetrics (params: RR.GetServerMetricsReq): Promise<RR.GetServerMetricsRes> {
|
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> {
|
async getPackageLogs (params: RR.GetPackageLogsReq): Promise<RR.GetPackageLogsRes> {
|
||||||
await pauseFor(2000)
|
await pauseFor(2000)
|
||||||
if (params.page === 4) {
|
if (Math.random() < .2) {
|
||||||
return (Mock.PackageLogs as []).slice(0, params.limit - 5)
|
console.log('last page')
|
||||||
|
return []
|
||||||
}
|
}
|
||||||
return Mock.PackageLogs.slice(0, params.limit)
|
return Mock.PackageLogs
|
||||||
}
|
}
|
||||||
|
|
||||||
async installPackageRaw (params: RR.InstallPackageReq): Promise<RR.InstallPackageRes> {
|
async installPackageRaw (params: RR.InstallPackageReq): Promise<RR.InstallPackageRes> {
|
||||||
|
|||||||
Reference in New Issue
Block a user