Spaces:
Running
Running
v0.8.8
#18
by
DmitryRyumin
- opened
- app.css +5 -0
- app.py +4 -3
- app/description.py +16 -3
- app/description_steps.py +19 -5
- app/event_handlers/event_handlers.py +14 -2
- app/event_handlers/languages.py +21 -2
- app/tabs.py +10 -4
- config.toml +29 -5
app.css
CHANGED
@@ -5,6 +5,10 @@
|
|
5 |
color: #006900;
|
6 |
}
|
7 |
|
|
|
|
|
|
|
|
|
8 |
div.app-flex-container {
|
9 |
display: flex;
|
10 |
gap: 6px;
|
@@ -132,6 +136,7 @@ div.languages-container_wrapper {
|
|
132 |
width: auto;
|
133 |
position: absolute;
|
134 |
right: 0px;
|
|
|
135 |
}
|
136 |
|
137 |
div.languages-container {
|
|
|
5 |
color: #006900;
|
6 |
}
|
7 |
|
8 |
+
h1 > a {
|
9 |
+
display: contents;
|
10 |
+
}
|
11 |
+
|
12 |
div.app-flex-container {
|
13 |
display: flex;
|
14 |
gap: 6px;
|
|
|
136 |
width: auto;
|
137 |
position: absolute;
|
138 |
right: 0px;
|
139 |
+
z-index: 10;
|
140 |
}
|
141 |
|
142 |
div.languages-container {
|
app.py
CHANGED
@@ -13,7 +13,7 @@ from app.event_handlers.event_handlers import setup_app_event_handlers
|
|
13 |
from app import tabs
|
14 |
from app.components import dropdown_create_ui
|
15 |
|
16 |
-
gr.set_static_paths(paths=[
|
17 |
|
18 |
|
19 |
def create_gradio_app() -> gr.Blocks:
|
@@ -31,7 +31,8 @@ def create_gradio_app() -> gr.Blocks:
|
|
31 |
elem_classes="languages-container",
|
32 |
) as languages_row:
|
33 |
country_flags = gr.Image(
|
34 |
-
value=
|
|
|
35 |
container=False,
|
36 |
interactive=False,
|
37 |
show_label=False,
|
@@ -48,7 +49,7 @@ def create_gradio_app() -> gr.Blocks:
|
|
48 |
visible=True,
|
49 |
show_label=False,
|
50 |
elem_classes="dropdown-language-container",
|
51 |
-
interactive=
|
52 |
)
|
53 |
|
54 |
tab_results = {}
|
|
|
13 |
from app import tabs
|
14 |
from app.components import dropdown_create_ui
|
15 |
|
16 |
+
gr.set_static_paths(paths=[config_data.StaticPaths_IMAGES])
|
17 |
|
18 |
|
19 |
def create_gradio_app() -> gr.Blocks:
|
|
|
31 |
elem_classes="languages-container",
|
32 |
) as languages_row:
|
33 |
country_flags = gr.Image(
|
34 |
+
value=config_data.StaticPaths_IMAGES
|
35 |
+
+ config_data.Images_LANGUAGES[0],
|
36 |
container=False,
|
37 |
interactive=False,
|
38 |
show_label=False,
|
|
|
49 |
visible=True,
|
50 |
show_label=False,
|
51 |
elem_classes="dropdown-language-container",
|
52 |
+
interactive=True,
|
53 |
)
|
54 |
|
55 |
tab_results = {}
|
app/description.py
CHANGED
@@ -8,11 +8,24 @@ License: MIT License
|
|
8 |
# Importing necessary components for the Gradio app
|
9 |
from app.config import config_data
|
10 |
|
11 |
-
|
12 |
-
<h1><a href="https://github.com/aimclub/OCEANAI" target="_blank">OCEAN-AI</a>
|
13 |
|
14 |
<div class="app-flex-container">
|
15 |
-
<img src="https://img.shields.io/badge/version-v{
|
16 |
<a href='https://github.com/DmitryRyumin/OCEANAI' target='_blank'><img src='https://img.shields.io/github/stars/DmitryRyumin/OCEANAI?style=flat' alt='GitHub' /></a>
|
17 |
</div>
|
18 |
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
# Importing necessary components for the Gradio app
|
9 |
from app.config import config_data
|
10 |
|
11 |
+
TEMPLATE = """\
|
12 |
+
<h1><a href="https://github.com/aimclub/OCEANAI" target="_blank">OCEAN-AI</a> {description}.</h1>
|
13 |
|
14 |
<div class="app-flex-container">
|
15 |
+
<img src="https://img.shields.io/badge/version-v{version}-rc0" alt="{version_label}">
|
16 |
<a href='https://github.com/DmitryRyumin/OCEANAI' target='_blank'><img src='https://img.shields.io/github/stars/DmitryRyumin/OCEANAI?style=flat' alt='GitHub' /></a>
|
17 |
</div>
|
18 |
"""
|
19 |
+
|
20 |
+
DESCRIPTIONS = [
|
21 |
+
TEMPLATE.format(
|
22 |
+
description=config_data.InformationMessages_DESCRIPTIONS[0],
|
23 |
+
version=config_data.AppSettings_APP_VERSION,
|
24 |
+
version_label="Version",
|
25 |
+
),
|
26 |
+
TEMPLATE.format(
|
27 |
+
description=config_data.InformationMessages_DESCRIPTIONS[1],
|
28 |
+
version=config_data.AppSettings_APP_VERSION,
|
29 |
+
version_label="Версия",
|
30 |
+
),
|
31 |
+
]
|
app/description_steps.py
CHANGED
@@ -8,10 +8,24 @@ License: MIT License
|
|
8 |
# Importing necessary components for the Gradio app
|
9 |
from app.config import config_data
|
10 |
|
11 |
-
|
12 |
-
<h2 align="center">{
|
13 |
"""
|
14 |
|
15 |
-
|
16 |
-
|
17 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
# Importing necessary components for the Gradio app
|
9 |
from app.config import config_data
|
10 |
|
11 |
+
STEPS_TEMPLATE = """\
|
12 |
+
<h2 align="center">{text}</h2>
|
13 |
"""
|
14 |
|
15 |
+
STEP_1 = [
|
16 |
+
STEPS_TEMPLATE.format(
|
17 |
+
text=config_data.InformationMessages_STEP_1[0],
|
18 |
+
),
|
19 |
+
STEPS_TEMPLATE.format(
|
20 |
+
text=config_data.InformationMessages_STEP_1[1],
|
21 |
+
),
|
22 |
+
]
|
23 |
+
|
24 |
+
STEP_2 = [
|
25 |
+
STEPS_TEMPLATE.format(
|
26 |
+
text=config_data.InformationMessages_STEP_2[0],
|
27 |
+
),
|
28 |
+
STEPS_TEMPLATE.format(
|
29 |
+
text=config_data.InformationMessages_STEP_2[1],
|
30 |
+
),
|
31 |
+
]
|
app/event_handlers/event_handlers.py
CHANGED
@@ -28,6 +28,8 @@ from app.event_handlers.practical_task_sorted import event_handler_practical_tas
|
|
28 |
|
29 |
|
30 |
def setup_app_event_handlers(
|
|
|
|
|
31 |
notifications,
|
32 |
files,
|
33 |
video,
|
@@ -98,8 +100,18 @@ def setup_app_event_handlers(
|
|
98 |
# Events
|
99 |
languages.select(
|
100 |
fn=event_handler_languages,
|
101 |
-
inputs=[languages],
|
102 |
-
outputs=[
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
103 |
queue=True,
|
104 |
)
|
105 |
files.change(
|
|
|
28 |
|
29 |
|
30 |
def setup_app_event_handlers(
|
31 |
+
description,
|
32 |
+
step_1,
|
33 |
notifications,
|
34 |
files,
|
35 |
video,
|
|
|
100 |
# Events
|
101 |
languages.select(
|
102 |
fn=event_handler_languages,
|
103 |
+
inputs=[languages, files],
|
104 |
+
outputs=[
|
105 |
+
description,
|
106 |
+
step_1,
|
107 |
+
country_flags,
|
108 |
+
languages,
|
109 |
+
tab1,
|
110 |
+
tab2,
|
111 |
+
tab3,
|
112 |
+
tab4,
|
113 |
+
files,
|
114 |
+
],
|
115 |
queue=True,
|
116 |
)
|
117 |
files.change(
|
app/event_handlers/languages.py
CHANGED
@@ -8,11 +8,16 @@ License: MIT License
|
|
8 |
import gradio as gr
|
9 |
|
10 |
# Importing necessary components for the Gradio app
|
|
|
|
|
11 |
from app.config import config_data
|
12 |
-
from app.components import
|
|
|
|
|
|
|
13 |
|
14 |
|
15 |
-
def event_handler_languages(languages):
|
16 |
if languages.lower() == "english":
|
17 |
lang_id = 0
|
18 |
choices = config_data.Settings_LANGUAGES_EN
|
@@ -24,6 +29,11 @@ def event_handler_languages(languages):
|
|
24 |
choices = config_data.Settings_LANGUAGES_EN
|
25 |
|
26 |
return (
|
|
|
|
|
|
|
|
|
|
|
27 |
dropdown_create_ui(
|
28 |
label=None,
|
29 |
info=None,
|
@@ -36,4 +46,13 @@ def event_handler_languages(languages):
|
|
36 |
gr.Tab(config_data.Labels_APP_LABEL[lang_id]),
|
37 |
gr.Tab(config_data.Labels_ABOUT_APP_LABEL[lang_id]),
|
38 |
gr.Tab(config_data.Labels_ABOUT_AUTHORS_LABEL[lang_id]),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
)
|
|
|
8 |
import gradio as gr
|
9 |
|
10 |
# Importing necessary components for the Gradio app
|
11 |
+
from app.description import DESCRIPTIONS
|
12 |
+
from app.description_steps import STEP_1
|
13 |
from app.config import config_data
|
14 |
+
from app.components import (
|
15 |
+
files_create_ui,
|
16 |
+
dropdown_create_ui,
|
17 |
+
)
|
18 |
|
19 |
|
20 |
+
def event_handler_languages(languages, files):
|
21 |
if languages.lower() == "english":
|
22 |
lang_id = 0
|
23 |
choices = config_data.Settings_LANGUAGES_EN
|
|
|
29 |
choices = config_data.Settings_LANGUAGES_EN
|
30 |
|
31 |
return (
|
32 |
+
gr.Markdown(value=DESCRIPTIONS[lang_id]),
|
33 |
+
gr.HTML(value=STEP_1[lang_id]),
|
34 |
+
gr.Image(
|
35 |
+
value=config_data.StaticPaths_IMAGES + config_data.Images_LANGUAGES[lang_id]
|
36 |
+
),
|
37 |
dropdown_create_ui(
|
38 |
label=None,
|
39 |
info=None,
|
|
|
46 |
gr.Tab(config_data.Labels_APP_LABEL[lang_id]),
|
47 |
gr.Tab(config_data.Labels_ABOUT_APP_LABEL[lang_id]),
|
48 |
gr.Tab(config_data.Labels_ABOUT_AUTHORS_LABEL[lang_id]),
|
49 |
+
gr.Tab(config_data.Labels_REQUIREMENTS_LABEL[lang_id]),
|
50 |
+
files_create_ui(
|
51 |
+
value=files,
|
52 |
+
label="{} ({})".format(
|
53 |
+
config_data.OtherMessages_VIDEO_FILES[lang_id],
|
54 |
+
", ".join(config_data.Settings_SUPPORTED_VIDEO_EXT),
|
55 |
+
),
|
56 |
+
file_types=[f".{ext}" for ext in config_data.Settings_SUPPORTED_VIDEO_EXT],
|
57 |
+
),
|
58 |
)
|
app/tabs.py
CHANGED
@@ -8,7 +8,7 @@ License: MIT License
|
|
8 |
import gradio as gr
|
9 |
|
10 |
# Importing necessary components for the Gradio app
|
11 |
-
from app.description import
|
12 |
from app.description_steps import STEP_1, STEP_2
|
13 |
from app.mbti_description import MBTI_DESCRIPTION, MBTI_DATA
|
14 |
from app.app import APP
|
@@ -31,14 +31,18 @@ from app.components import (
|
|
31 |
|
32 |
|
33 |
def app_tab():
|
34 |
-
gr.Markdown(
|
|
|
|
|
35 |
|
36 |
-
gr.HTML(value=STEP_1)
|
37 |
|
38 |
with gr.Row():
|
39 |
files = files_create_ui(
|
40 |
label="{} ({})".format(
|
41 |
-
config_data.OtherMessages_VIDEO_FILES
|
|
|
|
|
42 |
", ".join(config_data.Settings_SUPPORTED_VIDEO_EXT),
|
43 |
),
|
44 |
file_types=[f".{ext}" for ext in config_data.Settings_SUPPORTED_VIDEO_EXT],
|
@@ -588,6 +592,8 @@ def app_tab():
|
|
588 |
)
|
589 |
|
590 |
return (
|
|
|
|
|
591 |
notifications,
|
592 |
files,
|
593 |
video,
|
|
|
8 |
import gradio as gr
|
9 |
|
10 |
# Importing necessary components for the Gradio app
|
11 |
+
from app.description import DESCRIPTIONS
|
12 |
from app.description_steps import STEP_1, STEP_2
|
13 |
from app.mbti_description import MBTI_DESCRIPTION, MBTI_DATA
|
14 |
from app.app import APP
|
|
|
31 |
|
32 |
|
33 |
def app_tab():
|
34 |
+
description = gr.Markdown(
|
35 |
+
value=DESCRIPTIONS[config_data.AppSettings_DEFAULT_LANG_ID]
|
36 |
+
)
|
37 |
|
38 |
+
step_1 = gr.HTML(value=STEP_1[config_data.AppSettings_DEFAULT_LANG_ID])
|
39 |
|
40 |
with gr.Row():
|
41 |
files = files_create_ui(
|
42 |
label="{} ({})".format(
|
43 |
+
config_data.OtherMessages_VIDEO_FILES[
|
44 |
+
config_data.AppSettings_DEFAULT_LANG_ID
|
45 |
+
],
|
46 |
", ".join(config_data.Settings_SUPPORTED_VIDEO_EXT),
|
47 |
),
|
48 |
file_types=[f".{ext}" for ext in config_data.Settings_SUPPORTED_VIDEO_EXT],
|
|
|
592 |
)
|
593 |
|
594 |
return (
|
595 |
+
description,
|
596 |
+
step_1,
|
597 |
notifications,
|
598 |
files,
|
599 |
video,
|
config.toml
CHANGED
@@ -1,8 +1,13 @@
|
|
1 |
[AppSettings]
|
2 |
-
APP_VERSION = "0.8.
|
3 |
CSS_PATH = "app.css"
|
|
|
4 |
|
5 |
[InformationMessages]
|
|
|
|
|
|
|
|
|
6 |
NOTI_VIDEOS = "Select the video(s)"
|
7 |
PRACTICAL_TASKS_INFO = "Choose a practical task"
|
8 |
PRACTICAL_SUBTASKS_INFO = "Choose a practical subtask"
|
@@ -14,11 +19,17 @@ DROPDOWN_CANDIDATES_INFO = "What profession are you interested in?"
|
|
14 |
DROPDOWN_LANGUAGES_INFO = "Select the language of the app"
|
15 |
VALUE_FROM_TO_INFO = "Set value from {} to {}"
|
16 |
SUM_WEIGHTS = "The sum of the weights of the personality traits should be 100, not {}"
|
17 |
-
STEP_1 =
|
18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
|
20 |
[OtherMessages]
|
21 |
-
VIDEO_FILES = "Video Files"
|
22 |
CALCULATE_PT_SCORES = "Calculation of Big Five personality traits scores"
|
23 |
CALCULATE_PT_SCORES_ERR = "Personality traits scores have not been calculated. Try uploading a different file(s)"
|
24 |
CALCULATE_PRACTICAL_TASK = "Solving practical task"
|
@@ -73,13 +84,26 @@ MDA_CATEGORIES = "divice_characteristics_priorities.csv"
|
|
73 |
POTENTIAL_CANDIDATES = "potential_candidates.csv"
|
74 |
MBTI_JOB = "mbti_job_match.csv"
|
75 |
|
|
|
|
|
|
|
|
|
|
|
|
|
76 |
[Settings]
|
77 |
LANGUAGES_EN = ["English", "Russian"]
|
78 |
LANGUAGES_RU = ["Английский", "Русский"]
|
79 |
SHORT_PROFESSIONAL_SKILLS = ["OPE", "CON", "EXT", "AGR", "NNEU"]
|
80 |
DROPDOWN_PROFESSIONAL_SKILLS = ["Analytical", "Interactive", "Routine", "Non-Routine"]
|
81 |
DROPDOWN_COLLEAGUES = ["major", "minor"]
|
82 |
-
DROPDOWN_CANDIDATES = [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
83 |
DROPDOWN_MBTI = [
|
84 |
"The Inspector (ISTJ): Accountant, Auditor, Budget Analyst, Financial Manager, Developer, Systems Analyst, Librarian etc.",
|
85 |
"The Protector (ISFJ): Nurse, Doctor, Veterinarian or Veterinary Nurse/Assistant, Social Worker, Agricultural or Food Scientist, Secretary, Driver, etc.",
|
|
|
1 |
[AppSettings]
|
2 |
+
APP_VERSION = "0.8.8"
|
3 |
CSS_PATH = "app.css"
|
4 |
+
DEFAULT_LANG_ID = 0
|
5 |
|
6 |
[InformationMessages]
|
7 |
+
DESCRIPTIONS = [
|
8 |
+
"is an open-source framework for Big Five personality traits assessment and HR-processes automatization",
|
9 |
+
"- библиотека с открытым исходным кодом для оценивания большой пятерки качеств личности человека и автоматизации HR-процессов",
|
10 |
+
]
|
11 |
NOTI_VIDEOS = "Select the video(s)"
|
12 |
PRACTICAL_TASKS_INFO = "Choose a practical task"
|
13 |
PRACTICAL_SUBTASKS_INFO = "Choose a practical subtask"
|
|
|
19 |
DROPDOWN_LANGUAGES_INFO = "Select the language of the app"
|
20 |
VALUE_FROM_TO_INFO = "Set value from {} to {}"
|
21 |
SUM_WEIGHTS = "The sum of the weights of the personality traits should be 100, not {}"
|
22 |
+
STEP_1 = [
|
23 |
+
"Step 1: Calculation of personality traits scores",
|
24 |
+
"Шаг 1: Вычисление оценок персональных качеств личности человека",
|
25 |
+
]
|
26 |
+
STEP_2 = [
|
27 |
+
"Step 2: Solving practical task",
|
28 |
+
"Шаг 2: Решение практической задачи",
|
29 |
+
]
|
30 |
|
31 |
[OtherMessages]
|
32 |
+
VIDEO_FILES = ["Video Files", "Видеофайлы"]
|
33 |
CALCULATE_PT_SCORES = "Calculation of Big Five personality traits scores"
|
34 |
CALCULATE_PT_SCORES_ERR = "Personality traits scores have not been calculated. Try uploading a different file(s)"
|
35 |
CALCULATE_PRACTICAL_TASK = "Solving practical task"
|
|
|
84 |
POTENTIAL_CANDIDATES = "potential_candidates.csv"
|
85 |
MBTI_JOB = "mbti_job_match.csv"
|
86 |
|
87 |
+
[Images]
|
88 |
+
LANGUAGES = ["UK.png", "RU.png"]
|
89 |
+
|
90 |
+
[StaticPaths]
|
91 |
+
IMAGES = "images/"
|
92 |
+
|
93 |
[Settings]
|
94 |
LANGUAGES_EN = ["English", "Russian"]
|
95 |
LANGUAGES_RU = ["Английский", "Русский"]
|
96 |
SHORT_PROFESSIONAL_SKILLS = ["OPE", "CON", "EXT", "AGR", "NNEU"]
|
97 |
DROPDOWN_PROFESSIONAL_SKILLS = ["Analytical", "Interactive", "Routine", "Non-Routine"]
|
98 |
DROPDOWN_COLLEAGUES = ["major", "minor"]
|
99 |
+
DROPDOWN_CANDIDATES = [
|
100 |
+
"Managers/executives",
|
101 |
+
"Entrepreneurship",
|
102 |
+
"Social/Non profit making professions",
|
103 |
+
"Public sector professions",
|
104 |
+
"Scientists/researchers, and engineers",
|
105 |
+
"Custom",
|
106 |
+
]
|
107 |
DROPDOWN_MBTI = [
|
108 |
"The Inspector (ISTJ): Accountant, Auditor, Budget Analyst, Financial Manager, Developer, Systems Analyst, Librarian etc.",
|
109 |
"The Protector (ISFJ): Nurse, Doctor, Veterinarian or Veterinary Nurse/Assistant, Social Worker, Agricultural or Food Scientist, Secretary, Driver, etc.",
|