bugfixes to the tool
Browse files- besser_example.json +1 -1
- markdownGenerator.py +1 -0
- sdc_view.py +25 -10
besser_example.json
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"master_title": "Besser", "master_desc": "BESSER (Better Software Faster) is a powerful low-code platform designed to streamline software development. Built on B-UML, our Python-based interpretation of a \"Universal Modeling Language\"\u2014inspired by and simplified from UML\u2014BESSER enables users to specify software applications efficiently. With B-UML, developers can define their application models and leverage built-in code generators to produce executable code for various frameworks, including Django models and SQLAlchemy-compatible database structures.", "governance_govProcesses": ["", ""], "governance_bodies": ["", ""], "usageContext_description": "Besser is inteded to be used by a broad community of app developers without the need of having coding skills.", "usageContext_targetCommunity": [""], "usageContext_adaptation": [""], "participants": ["", ""], "governance_projectType": ["public funded"], "governance_govProcesses_0": "BESSER is funded by the Luxembourg National Research Fund (FNR), the country\u2019s main agency for funding research across all scientific fields.", "governance_govProcesses_1": "The project is led by the recipient of the funds, its Principal Investigator.", "governance_bodies_0_name": "Funding programmes of the Luxembourg National Research Fund", "governance_bodies_0_description": "The Luxembourg National Research Fund (FNR, in French) is the main funding body for research in Luxembourg. The institution invests public funds and private donations into research projects in various branches of sciences and the humanities, with an emphasis on core strategic areas\n", "governance_bodies_0_participant_name": "", "governance_bodies_0_participant_location": "", "governance_bodies_0_participant_workdplace": "Presential", "governance_bodies_0_participant_ethincity": "", "governance_bodies_0_participant_gender": "", "governance_bodies_0_participant_disabilities": "", "governance_bodies_0_participant_sexualOrientation": "", "governance_bodies_0_participant_religion": "", "governance_bodies_0_organization_name": "Luxembourg\u2019s National Research Fund (FNR)", "governance_bodies_0_organization_age": [0, 99], "governance_bodies_0_organization_location": "Esch-sur-Alzette, Luxemburg", "governance_bodies_0_organization_workplace": "Presential", "governance_bodies_0_organization_ethnicities": "", "governance_bodies_0_organization_genders": "", "governance_bodies_0_organization_disabilities": "", "governance_bodies_0_organization_religious": "", "governance_bodies_0_type": ["funders"], "governance_bodies_1_name": "Principal Investigator", "governance_bodies_1_description": "The Principal investigator who is the recipients of the funds lead the project.", "governance_bodies_1_participant_name": "Jordi Cabot", "governance_bodies_1_participant_location": "", "governance_bodies_1_participant_workdplace": "Presential", "governance_bodies_1_participant_ethincity": "", "governance_bodies_1_participant_gender": "", "governance_bodies_1_participant_disabilities": "", "governance_bodies_1_participant_sexualOrientation": "", "governance_bodies_1_participant_religion": "", "governance_bodies_1_organization_name": "", "governance_bodies_1_organization_age": [10, 20], "governance_bodies_1_organization_location": "", "governance_bodies_1_organization_workplace": "Presential", "governance_bodies_1_organization_ethnicities": "", "governance_bodies_1_organization_genders": "", "governance_bodies_1_organization_disabilities": "", "governance_bodies_1_organization_religious": "", "governance_bodies_1_type": ["directors"], "governance_bodies_0_participant_age": 0, "governance_bodies_1_participant_age": 0, "usageContext_countries": ["France", "Luxembourg"], "usageContext_languages": ["French", "English"], "usageContext_targetCommunity_0_name": "Teacher and student of computer science", "usageContext_targetCommunity_0_description": "Teacher and student of computer science", "usageContext_targetCommunity_0_age": [18, 70], "usageContext_targetCommunity_0_location": "Luxembourg University", "usageContext_targetCommunity_0_workplace": "Presential", "usageContext_targetCommunity_0_ethnicities": "", "usageContext_targetCommunity_0_genders": "", "usageContext_targetCommunity_0_disabilities": "", "usageContext_targetCommunity_0_religious": "", "usageContext_targetCommunity_0_countries": ["Luxembourg"], "usageContext_targetCommunity_0_edlevel": ["bachelorEquivalent", "doctorateEquivalent"], "usageContext_targetCommunity_0_skills": ["beginner", "competent"], "usageContext_targetCommunity_0_languages": ["French"], "usageContext_adaptation_0_name": "Computer Science Teachers", "usageContext_adaptation_0_description": "The software have been adapted for its specific use in educational environments", "participants_0_name": "Development team", "participants_0_description": "The development team of Besser is composed of a geographical diversity team based on Luxemboug.", "participants_0_size": 16, "participants_0_age": [24, 45], "participants_0_location": "Esch-sur-Alzette, Luxemburg", "participants_0_workplace": "Presential", "participants_0_ethnicities": "Colombian,Brasilian, Argentinian, French ,Spanish, Pakistani, Serbian, Iranian, Morroco, Italian", "participants_0_genders": "80% male, 20%
|
|
|
1 |
+
{"master_title": "Besser", "master_desc": "BESSER (Better Software Faster) is a powerful low-code platform designed to streamline software development. Built on B-UML, our Python-based interpretation of a \"Universal Modeling Language\"\u2014inspired by and simplified from UML\u2014BESSER enables users to specify software applications efficiently. With B-UML, developers can define their application models and leverage built-in code generators to produce executable code for various frameworks, including Django models and SQLAlchemy-compatible database structures.", "governance_govProcesses": ["", ""], "governance_bodies": ["", ""], "usageContext_description": "Besser is inteded to be used by a broad community of app developers without the need of having coding skills.", "usageContext_targetCommunity": [""], "usageContext_adaptation": [""], "participants": ["", ""], "governance_projectType": ["public funded"], "governance_govProcesses_0": "BESSER is funded by the Luxembourg National Research Fund (FNR), the country\u2019s main agency for funding research across all scientific fields.", "governance_govProcesses_1": "The project is led by the recipient of the funds, its Principal Investigator.", "governance_bodies_0_name": "Funding programmes of the Luxembourg National Research Fund", "governance_bodies_0_description": "The Luxembourg National Research Fund (FNR, in French) is the main funding body for research in Luxembourg. The institution invests public funds and private donations into research projects in various branches of sciences and the humanities, with an emphasis on core strategic areas\n", "governance_bodies_0_participant_name": "", "governance_bodies_0_participant_location": "Esch-sur-Alzette, Luxemburg", "governance_bodies_0_participant_workdplace": "Presential", "governance_bodies_0_participant_ethincity": "", "governance_bodies_0_participant_gender": "", "governance_bodies_0_participant_disabilities": "", "governance_bodies_0_participant_sexualOrientation": "", "governance_bodies_0_participant_religion": "", "governance_bodies_0_organization_name": "Luxembourg\u2019s National Research Fund (FNR)", "governance_bodies_0_organization_age": [0, 99], "governance_bodies_0_organization_location": "Esch-sur-Alzette, Luxemburg", "governance_bodies_0_organization_workplace": "Presential", "governance_bodies_0_organization_ethnicities": "", "governance_bodies_0_organization_genders": "", "governance_bodies_0_organization_disabilities": "", "governance_bodies_0_organization_religious": "", "governance_bodies_0_type": ["funders"], "governance_bodies_1_name": "Principal Investigator", "governance_bodies_1_description": "The Principal investigator who is the recipients of the funds lead the project.", "governance_bodies_1_participant_name": "Jordi Cabot", "governance_bodies_1_participant_location": "Esch-sur-Alzette, Luxemburg", "governance_bodies_1_participant_workdplace": "Presential", "governance_bodies_1_participant_ethincity": "", "governance_bodies_1_participant_gender": "", "governance_bodies_1_participant_disabilities": "", "governance_bodies_1_participant_sexualOrientation": "", "governance_bodies_1_participant_religion": "", "governance_bodies_1_organization_name": "", "governance_bodies_1_organization_age": [10, 20], "governance_bodies_1_organization_location": "", "governance_bodies_1_organization_workplace": "Presential", "governance_bodies_1_organization_ethnicities": "", "governance_bodies_1_organization_genders": "", "governance_bodies_1_organization_disabilities": "", "governance_bodies_1_organization_religious": "", "governance_bodies_1_type": ["directors"], "governance_bodies_0_participant_age": 0, "governance_bodies_1_participant_age": 0, "usageContext_countries": ["France", "Luxembourg"], "usageContext_languages": ["French", "English"], "usageContext_targetCommunity_0_name": "Teacher and student of computer science", "usageContext_targetCommunity_0_description": "Teacher and student of computer science", "usageContext_targetCommunity_0_age": [18, 70], "usageContext_targetCommunity_0_location": "Luxembourg University", "usageContext_targetCommunity_0_workplace": "Presential", "usageContext_targetCommunity_0_ethnicities": "", "usageContext_targetCommunity_0_genders": "", "usageContext_targetCommunity_0_disabilities": "", "usageContext_targetCommunity_0_religious": "", "usageContext_targetCommunity_0_countries": ["Luxembourg"], "usageContext_targetCommunity_0_edlevel": ["bachelorEquivalent", "doctorateEquivalent"], "usageContext_targetCommunity_0_skills": ["beginner", "competent"], "usageContext_targetCommunity_0_languages": ["French"], "usageContext_adaptation_0_name": "Computer Science Teachers", "usageContext_adaptation_0_description": "The software have been adapted for its specific use in educational environments", "participants_0_name": "Development team", "participants_0_description": "The development team of Besser is composed of a geographical diversity team based on Luxemboug.", "participants_0_size": 16, "participants_0_age": [24, 45], "participants_0_location": "Esch-sur-Alzette, Luxemburg", "participants_0_workplace": "Presential", "participants_0_ethnicities": "Colombian,Brasilian, Argentinian, French ,Spanish, Pakistani, Serbian, Iranian, Morroco, Italian", "participants_0_genders": "80% male, 20% female", "participants_0_disabilities": "", "participants_0_religious": "", "participants_0_type": ["Development Team"], "participants_0_countries": ["Colombia", "Spain", "Pakistan", "Iran,IslamicRepublicof", "Argentina", "Brazil", "Serbia"], "participants_0_edlevel": ["masterEquivalent", "doctorateEquivalent"], "participants_0_skills": ["proficient", "advanced"], "participants_0_languages": ["Spanish-Castilian", "Catalan-Valencian", "English", "French"], "participants_1_name": "Usability test team", "participants_1_description": "An usability test team have been conducted with a crowd of users. Tester are student of the computer science degree at the Luxembourg University. Using the backend generator from scratch with the documentation of BESSER (with a given PlantUML, library model)\\n Using ChatGPT4o only giving the PlantUML model and no hand coding. More info in Besser's web project: http://besser-pearl.org/", "participants_1_size": 22, "participants_1_age": [22, 24], "participants_1_location": "University of Luxembourg", "participants_1_workplace": "Presential", "participants_1_ethnicities": "", "participants_1_genders": "", "participants_1_disabilities": "", "participants_1_religious": "", "participants_1_type": ["Tester Team"], "participants_1_countries": ["Luxembourg"], "participants_1_skills": ["beginner", "competent"], "participants_1_languages": ["Luxembourgish-Letzeburgesch"]}
|
markdownGenerator.py
CHANGED
@@ -70,6 +70,7 @@ def generate_markdown(state):
|
|
70 |
else:
|
71 |
html_str = html_str + f"""<td> </td>"""
|
72 |
if 'organization' in body:
|
|
|
73 |
if body['organization']['name']:
|
74 |
html_str = html_str + f"""
|
75 |
<td>{body['organization']['age'][0]}-{body['organization']['age'][1]}</td>
|
|
|
70 |
else:
|
71 |
html_str = html_str + f"""<td> </td>"""
|
72 |
if 'organization' in body:
|
73 |
+
|
74 |
if body['organization']['name']:
|
75 |
html_str = html_str + f"""
|
76 |
<td>{body['organization']['age'][0]}-{body['organization']['age'][1]}</td>
|
sdc_view.py
CHANGED
@@ -221,7 +221,7 @@ def render_sdc():
|
|
221 |
cached_text_input("Location", f"{key}_location", "Location of the organization")
|
222 |
cached_radio_input("WorkplaceType", ["Presential", "Hybrid", "Remote"], f"{key}_workplace", "The kind of organization")
|
223 |
cached_text_input("Ethnicities", f"{key}_ethnicities", "Ethinicities present in the organization, comma sepparated ")
|
224 |
-
cached_text_input("Genders", f"{key}_genders", "Distribution and presence of gender presence,
|
225 |
cached_text_input("Disabilities", f"{key}_disabilities", "Disabilities present in the organization, comma sepparated ")
|
226 |
cached_text_input("Religious Beliefs", f"{key}_religious", "Disabilities present in the organization, comma sepparated ")
|
227 |
with coll:
|
@@ -339,13 +339,27 @@ def render_sdc():
|
|
339 |
cached_text_input("The name of the software project", "master_title", "The title of the card")
|
340 |
cached_text_area("A description of the software project", "master_desc", "The title of the card")
|
341 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
342 |
|
|
|
|
|
|
|
|
|
|
|
343 |
with st.container( border=True):
|
344 |
-
st.subheader("Describe the different teams in the software project")
|
345 |
governance, usageContext, participants = st.tabs([
|
346 |
-
"Governance",
|
347 |
-
"Usage
|
348 |
-
"Participants"
|
349 |
])
|
350 |
|
351 |
with governance:
|
@@ -358,9 +372,9 @@ def render_sdc():
|
|
358 |
|
359 |
key = "governance_govProcesses"
|
360 |
init_state(key)
|
361 |
-
st.write("Define the set of
|
362 |
|
363 |
-
if st.button("Add
|
364 |
add_text_area(key)
|
365 |
# Loop over the array and create a text area with a remove button for each element
|
366 |
|
@@ -368,16 +382,16 @@ def render_sdc():
|
|
368 |
# Create two columns: one for the text area, one for the remove button
|
369 |
col1, col2 = st.columns([6, 1])
|
370 |
with col1:
|
371 |
-
cached_text_area(f"
|
372 |
with col2:
|
373 |
if st.button("Remove", key=f"remove_{key}_{idx}"):
|
374 |
remove_text_area(idx,key)
|
375 |
|
376 |
# BODIES
|
377 |
-
st.write("Add the different types of
|
378 |
key = "governance_bodies"
|
379 |
init_state(key)
|
380 |
-
if st.button("Add
|
381 |
add_text_area(key)
|
382 |
# Loop over the array and create a text area with a remove button for each element
|
383 |
|
@@ -385,6 +399,7 @@ def render_sdc():
|
|
385 |
# Create two columns: one for the text area, one for the remove button
|
386 |
with st.container(border=True):
|
387 |
st.subheader(f"Governance body:", divider="gray")
|
|
|
388 |
col1, col2 = st.columns([3, 2])
|
389 |
with col1:
|
390 |
cached_text_input("Body name", f"{key}_{idx}_name", "The name of id of the body")
|
|
|
221 |
cached_text_input("Location", f"{key}_location", "Location of the organization")
|
222 |
cached_radio_input("WorkplaceType", ["Presential", "Hybrid", "Remote"], f"{key}_workplace", "The kind of organization")
|
223 |
cached_text_input("Ethnicities", f"{key}_ethnicities", "Ethinicities present in the organization, comma sepparated ")
|
224 |
+
cached_text_input("Genders", f"{key}_genders", "Distribution and presence of gender presence, comma sepparated ")
|
225 |
cached_text_input("Disabilities", f"{key}_disabilities", "Disabilities present in the organization, comma sepparated ")
|
226 |
cached_text_input("Religious Beliefs", f"{key}_religious", "Disabilities present in the organization, comma sepparated ")
|
227 |
with coll:
|
|
|
339 |
cached_text_input("The name of the software project", "master_title", "The title of the card")
|
340 |
cached_text_area("A description of the software project", "master_desc", "The title of the card")
|
341 |
|
342 |
+
st.markdown(
|
343 |
+
"""
|
344 |
+
<style>
|
345 |
+
div[data-testid=stVerticalBlockBorderWrapper] div[data-baseweb="tab-list"] button p {
|
346 |
+
font-size: x-large;
|
347 |
+
}
|
348 |
+
.st-emotion-cache-0 esjhkag0 div[data-baseweb="tab-list"] {
|
349 |
+
padding-left: 22%;
|
350 |
+
}
|
351 |
|
352 |
+
|
353 |
+
</style>
|
354 |
+
""",
|
355 |
+
unsafe_allow_html=True
|
356 |
+
)
|
357 |
with st.container( border=True):
|
358 |
+
##st.subheader("Describe the different teams in the software project")
|
359 |
governance, usageContext, participants = st.tabs([
|
360 |
+
"🏢 **Governance**",
|
361 |
+
":twisted_rightwards_arrows: **Usage Context**",
|
362 |
+
":hammer_and_wrench: **Participants**"
|
363 |
])
|
364 |
|
365 |
with governance:
|
|
|
372 |
|
373 |
key = "governance_govProcesses"
|
374 |
init_state(key)
|
375 |
+
st.write("Define the set of government process of your software project")
|
376 |
|
377 |
+
if st.button("Add government processes"):
|
378 |
add_text_area(key)
|
379 |
# Loop over the array and create a text area with a remove button for each element
|
380 |
|
|
|
382 |
# Create two columns: one for the text area, one for the remove button
|
383 |
col1, col2 = st.columns([6, 1])
|
384 |
with col1:
|
385 |
+
cached_text_area(f"Government process {idx + 1}", f"governance_govProcesses_{idx}", "Specific the governance rules of the software project. For instance, the funders, or the role and the relation between the different bodies that governs the software.")
|
386 |
with col2:
|
387 |
if st.button("Remove", key=f"remove_{key}_{idx}"):
|
388 |
remove_text_area(idx,key)
|
389 |
|
390 |
# BODIES
|
391 |
+
st.write("Add the different types of government bodies of your software project (boards and funders)")
|
392 |
key = "governance_bodies"
|
393 |
init_state(key)
|
394 |
+
if st.button("Add government bodies"):
|
395 |
add_text_area(key)
|
396 |
# Loop over the array and create a text area with a remove button for each element
|
397 |
|
|
|
399 |
# Create two columns: one for the text area, one for the remove button
|
400 |
with st.container(border=True):
|
401 |
st.subheader(f"Governance body:", divider="gray")
|
402 |
+
|
403 |
col1, col2 = st.columns([3, 2])
|
404 |
with col1:
|
405 |
cached_text_input("Body name", f"{key}_{idx}_name", "The name of id of the body")
|