File size: 2,468 Bytes
c33448f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
from os import listdir
from os.path import isfile, join
import html

import gradio as gr

import pipe
from io_utils import get_logs_file

LOG_PATH = "./tmp"
CONFIG_PATH = "./cicd/configs/"
MAX_FILES_NUM = 20


def get_accordions_of_files(path, files):
    components = [None for _ in range(0, MAX_FILES_NUM)]
    for i in range(0, len(files)):
        if i >= MAX_FILES_NUM:
            break
        with open(join(path, files[i]), "r") as f:
            components[i] = f.read()
    return components


def get_accordions_of_log_files():
    log_files = [
        f for f in listdir(LOG_PATH) if isfile(join(LOG_PATH, f)) and f.endswith("_log")
    ]
    return get_accordions_of_files(LOG_PATH, log_files)


def get_accordions_of_config_files():
    config_files = [
        f
        for f in listdir(CONFIG_PATH)
        if isfile(join(CONFIG_PATH, f)) and f.endswith(".yaml")
    ]
    return get_accordions_of_files(CONFIG_PATH, config_files)


def get_config_files():
    config_files = [
        join(CONFIG_PATH, f)
        for f in listdir(CONFIG_PATH)
        if isfile(join(CONFIG_PATH, f)) and f.endswith(".yaml")
    ]
    return config_files


def get_log_files():
    return [
        join(LOG_PATH, f)
        for f in listdir(LOG_PATH)
        if isfile(join(LOG_PATH, f)) and f.endswith("log")
    ]


def get_jobs_info_in_queue():
    return [f"⌛️job id {html.escape(job[0])}: {html.escape(job[2])}<br/>" for job in pipe.jobs]

def get_queue_status():
    if len(pipe.jobs) > 0 or pipe.current is not None:
        current = pipe.current
        if current is None:
            current = "None"
        return f'<div style="padding-top: 5%">Current job: {html.escape(current)} <br/> Jobs in queue: <br/> {"".join(get_jobs_info_in_queue())}</div>'
    else:
        return '<div style="padding-top: 5%">No jobs in queue, please submit an evaluation task from another tab.</div>'


def get_demo():
    with gr.Row():
        gr.HTML(        
            value=get_queue_status,
            every=5,
        )
    with gr.Accordion(label="Log Files", open=False):
        with gr.Row():
            gr.Files(value=get_log_files, label="Log Files", every=10)
        with gr.Row():
            gr.Textbox(
                value=get_logs_file, every=0.5, lines=10, visible=True, label="Current Log File"
            )
    with gr.Accordion(label="Config Files", open=False):
        gr.Files(value=get_config_files, label="Config Files", every=10)