JoanGiner commited on
Commit
a8b72a9
·
1 Parent(s): 3da08bc

bugfixes to the tool

Browse files
Files changed (3) hide show
  1. besser_example.json +1 -1
  2. markdownGenerator.py +1 -0
  3. 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% famela", "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", "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"]}
 
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, domma 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,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 context",
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 governament process of your software project")
362
 
363
- if st.button("Add governament processes"):
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"Governament 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.")
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 governament bodies of your software project (boards and funders)")
378
  key = "governance_bodies"
379
  init_state(key)
380
- if st.button("Add governament bodies"):
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")