Skip to content

Commit 12f20bf

Browse files
authored
Merge pull request #237 from labmlai/stdout
Stdout
2 parents 24e6be4 + 1de6f69 commit 12f20bf

File tree

7 files changed

+36
-15
lines changed

7 files changed

+36
-15
lines changed

app/server/labml_app/analyses/experiments/stderr.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from fastapi import Request
1010

1111
from labml_app.analyses.analysis import Analysis
12-
from labml_app.analyses.logs import Logs
12+
from labml_app.analyses.logs import Logs, LogPageType
1313

1414

1515
class StdErr(Logs):
@@ -42,7 +42,7 @@ async def get_std_err(request: Request, run_uuid: str) -> Any:
4242
return JSONResponse(status_code=404, content={'message': 'Run not found'})
4343

4444
json = await request.json()
45-
page = json.get('page', -1)
45+
page = json.get('page', LogPageType.LAST.value)
4646

4747
key = StdErrIndex.get(run_uuid)
4848
std_out: StdErrModel

app/server/labml_app/analyses/experiments/stdlogger.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from fastapi import Request
1010

1111
from labml_app.analyses.analysis import Analysis
12-
from labml_app.analyses.logs import Logs
12+
from labml_app.analyses.logs import Logs, LogPageType
1313

1414

1515
class StdLogger(Logs):
@@ -42,7 +42,7 @@ async def get_std_logger(request: Request, run_uuid: str) -> Any:
4242
return JSONResponse(status_code=404, content={'message': 'Run not found'})
4343

4444
json = await request.json()
45-
page = json.get('page', -1)
45+
page = json.get('page', LogPageType.LAST.value)
4646

4747
key = StdLoggerIndex.get(run_uuid)
4848
std_out: StdLoggerModel

app/server/labml_app/analyses/experiments/stdout.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
import labml_app.db.run
1010
from labml_app.analyses.analysis import Analysis
11-
from labml_app.analyses.logs import Logs
11+
from labml_app.analyses.logs import Logs, LogPageType
1212

1313

1414
class StdOut(Logs):
@@ -43,7 +43,7 @@ async def get_stdout(request: Request, run_uuid: str) -> Any:
4343
return JSONResponse(status_code=404, content={'message': 'Run not found'})
4444

4545
json = await request.json()
46-
page = json.get('page', -1)
46+
page = json.get('page', LogPageType.LAST.value)
4747

4848
key = StdOutIndex.get(run_uuid)
4949
std_out: StdOutModel

app/server/labml_app/analyses/logs.py

+9-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from enum import Enum
2+
13
from labml_app.settings import LOG_CHAR_LIMIT
24

35
from typing import Any, Dict, List
@@ -57,6 +59,11 @@ class LogPageModel(Model['LogPageModel'], LogPage):
5759
pass
5860

5961

62+
class LogPageType(Enum):
63+
LAST = -1
64+
ALL = -2
65+
66+
6067
class Logs:
6168
log_pages: List[Key['LogPageModel']]
6269

@@ -66,10 +73,10 @@ def defaults(cls):
6673
log_pages=[]
6774
)
6875

69-
def get_data(self, page_no: int = -1):
76+
def get_data(self, page_no: int = LogPageType.LAST.value):
7077
page_dict: Dict[str, str] = {}
7178

72-
if page_no == -2:
79+
if page_no == LogPageType.ALL.value:
7380
pages: List['LogPage'] = [page.load() for page in self.log_pages]
7481
for i, p in enumerate(pages):
7582
page_dict[str(i)] = p.logs + p.logs_unmerged

app/ui/src/cache/cache.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {AnalysisData, CustomMetric, CustomMetricList, CustomMetricModel, Logs, Run} from "../models/run"
1+
import {AnalysisData, CustomMetric, CustomMetricList, CustomMetricModel, Logs, LogUpdateType, Run} from "../models/run"
22
import {Status} from "../models/status"
33
import NETWORK, {ErrorResponse} from "../network"
44
import { User} from "../models/user"
@@ -585,14 +585,14 @@ export class LogCache extends CacheObject<Logs> {
585585

586586
private async getAll(isRefresh = false): Promise<Logs> {
587587
if (isRefresh || this.data == null) {
588-
let data = new Logs(await NETWORK.getLogs(this.uuid, this.url, -2))
588+
let data = new Logs(await NETWORK.getLogs(this.uuid, this.url, LogUpdateType.ALL))
589589
this.data.mergeLogs(data)
590590
return this.data
591591
}
592592

593593
for (let pageNo = 0; pageNo < this.data.pageLength; pageNo++) {
594594
if (!this.data.hasPage(pageNo)) {
595-
let data = new Logs(await NETWORK.getLogs(this.uuid, this.url, -2))
595+
let data = new Logs(await NETWORK.getLogs(this.uuid, this.url, LogUpdateType.ALL))
596596
this.data.mergeLogs(data)
597597
break
598598
}
@@ -608,7 +608,7 @@ export class LogCache extends CacheObject<Logs> {
608608
return this.data.getPageAsLog(this.data.pageLength - 1)
609609
}
610610

611-
let data = new Logs(await NETWORK.getLogs(this.uuid, this.url, -1))
611+
let data = new Logs(await NETWORK.getLogs(this.uuid, this.url, LogUpdateType.LAST))
612612
this.data.mergeLogs(data)
613613
return data
614614
}
@@ -631,7 +631,7 @@ export class LogCache extends CacheObject<Logs> {
631631

632632
async get(isRefresh = false, ...args: any[]): Promise<Logs> {
633633
if (this.data == null || (isRefresh && isForceReloadTimeout(this.lastUpdated)) || isReloadTimeout(this.lastUpdated)) {
634-
this.data = await this.load(-1)
634+
this.data = await this.load(LogUpdateType.LAST)
635635

636636
this.lastUpdated = (new Date()).getTime()
637637
}

app/ui/src/components/log_view.ts

+11-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {Weya as $, WeyaElementFunction} from "../../../lib/weya/weya"
2-
import {Logs} from "../models/run";
2+
import {Logs, LogUpdateType} from "../models/run";
33
import Filter from "../utils/ansi_to_html"
44
import {CustomButton} from "./buttons"
55

@@ -51,17 +51,26 @@ export class LogView {
5151
this.renderLogs()
5252
}
5353

54+
private setLoading(isLoading: boolean) {
55+
this.loadMoreButton.disabled = isLoading
56+
this.loadAllButton.disabled = isLoading
57+
}
58+
5459
private onLoadMoreClick = () => {
60+
this.setLoading(true)
5561
this.loadPage(this.toLoadPage).then((logs) => {
5662
this.logs.mergeLogs(logs)
5763
this.renderLogs()
64+
this.setLoading(false)
5865
})
5966
}
6067

6168
private onLoadAllClick = () => {
62-
this.loadPage(-2).then((logs) => {
69+
this.setLoading(true)
70+
this.loadPage(LogUpdateType.ALL).then((logs) => {
6371
this.logs.mergeLogs(logs)
6472
this.renderLogs()
73+
this.setLoading(false)
6574
})
6675
}
6776

app/ui/src/models/run.ts

+5
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,11 @@ export interface LogUpdateFeedback {
263263
higherIndexes: string[]
264264
}
265265

266+
export enum LogUpdateType {
267+
LAST = -1,
268+
ALL = -2
269+
}
270+
266271
export class Logs {
267272
pages: Record<string, string>
268273
pageLength: number

0 commit comments

Comments
 (0)