Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 78 additions & 0 deletions _data/eoc_dashboard.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# Equal Opportunity Dashboard data.
#
# The `meta`, `members` and `mc` keys below are AUTO-GENERATED from
# CA24136-WG-members.csv by scripts/extract-eoc-stats.rb — do not edit
# them by hand; re-run the script to refresh. Aggregate counts only;
# no personal data is stored here.

meta:
generated: "2026-06-29"
source: "CA24136-WG-members.csv"

members:
title: "Action Members"
subtitle: "Composition of the Action"
headline: "191"
headline_label: "members across 38 countries"
stats:
- label: "Women"
value: "24.6%"
fraction: [47, 191]
- label: "ITC"
value: "54.5%"
fraction: [104, 191]
- label: "Young Researchers"
value: "55.0%"
fraction: [105, 191]
note: "Men: 142 (74.3%) · Other / prefer not to say: 2 (1.0%)"

mc:
title: "Management Committee"
subtitle: "Governance representation"
headline: "56"
headline_label: "MC members across 33 countries"
stats:
- label: "Women"
value: "30.4%"
fraction: [17, 56]
- label: "ITC"
value: "64.3%"
fraction: [36, 56]
- label: "Young Researchers"
value: "28.6%"
fraction: [16, 56]
note: "Men: 39 (69.6%)"

# === MANUAL SECTION (edited by hand — preserved when this script re-runs) ===

# Each entry below renders as its own summary box on the dashboard.
# Add as many entries as you like; provide `fraction: [count, total]` on a stat
# to draw a bar. These figures are gathered by hand (not available in the CSV).

conference:
- title: "Inaugural Conference: NextGen Synergy"
subtitle: "Inclusiveness in scientific visibility"
headline: "90+"
headline_label: "participants across 21 countries"
stats:
- label: "ITC"
value: "17/21"
fraction: [17, 21]
- label: "Women keynote speakers"
value: "1/8"
fraction: [1, 8]
note: "Hosted in Prague · local chair: Tatiana Valentine Guy · ~50% women as session chairs"

stsm:
- title: "STSM Participation"
subtitle: "Mobility and career development"
headline: "5"
headline_label: "STSM applications (1 call)"
stats:
- label: "ITC involved"
value: "4/6"
fraction: [4, 6]
- label: "Women applicants"
value: "2/5"
fraction: [2, 5]
note: "2 ITC ↔ ITC missions"
4 changes: 3 additions & 1 deletion _includes/desktop-menu.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
<a href="{{ site.baseUrl }}/action-leaders" class="mobile-sub-item">Action Leaders</a>
<a href="{{ site.baseUrl }}/core-group" class="mobile-sub-item">Core Group</a>
<a href="{{ site.baseUrl }}/mc-members" class="mobile-sub-item">Management Committee</a>
<a href="{{ site.baseUrl }}/equal-opportunity" class="mobile-sub-item">Equal Opportunity</a>
</details>
</div>
</div>
Expand Down Expand Up @@ -68,12 +69,13 @@
<li class="nav-item{% if page.url == '/dissemination/' %} nav-active{% endif %}">
<a href="{{ site.baseUrl }}/dissemination">Dissemination</a>
</li>
<li class="nav-item nav-dropdown{% if page.url == '/action-leaders/' or page.url == '/core-group/' or page.url == '/mc-members/' %} nav-active{% endif %}">
<li class="nav-item nav-dropdown{% if page.url == '/action-leaders/' or page.url == '/core-group/' or page.url == '/mc-members/' or page.url == '/equal-opportunity/' %} nav-active{% endif %}">
<a href="javascript:void(0)">Organisation</a>
<ul class="nav-dropdown-menu">
<li><a href="{{ site.baseUrl }}/action-leaders"{% if page.url == '/action-leaders/' %} class="nav-dropdown-active"{% endif %}>Action Leaders</a></li>
<li><a href="{{ site.baseUrl }}/core-group"{% if page.url == '/core-group/' %} class="nav-dropdown-active"{% endif %}>Core Group</a></li>
<li><a href="{{ site.baseUrl }}/mc-members"{% if page.url == '/mc-members/' %} class="nav-dropdown-active"{% endif %}>Management Committee</a></li>
<li><a href="{{ site.baseUrl }}/equal-opportunity"{% if page.url == '/equal-opportunity/' %} class="nav-dropdown-active"{% endif %}>Equal Opportunity</a></li>
</ul>
</li>
</nav>
Expand Down
37 changes: 37 additions & 0 deletions _includes/eoc-box.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{% comment %}
Renders one Equal Opportunity summary box.
Parameter: box - a hash with title, subtitle, headline, headline_label,
stats (list of {label, value, fraction:[count,total]}), note.
{% endcomment %}
{% assign box = include.box %}
<div class="card eoc-box">
<h3>{{ box.title }}</h3>
{% if box.subtitle %}<p class="eoc-box__subtitle">{{ box.subtitle }}</p>{% endif %}
{% if box.headline %}
<p class="eoc-box__headline">
<span class="eoc-box__number">{{ box.headline }}</span>
{% if box.headline_label %}<span class="eoc-box__headline-label">{{ box.headline_label }}</span>{% endif %}
</p>
{% endif %}
{% if box.stats %}
<ul class="eoc-box__stats">
{% for stat in box.stats %}
<li class="eoc-box__stat">
<div class="eoc-box__stat-head">
<span class="eoc-box__stat-label">{{ stat.label }}</span>
<span class="eoc-box__stat-value">{{ stat.value }}</span>
</div>
{% if stat.fraction %}
{% assign num = stat.fraction[0] | times: 1.0 %}
{% assign den = stat.fraction[1] %}
{% if den and den != 0 %}
{% assign pct = num | divided_by: den | times: 100 | round: 2 %}
<span class="eoc-box__bar"><span class="eoc-box__bar-fill" style="width: {{ pct }}%;"></span></span>
{% endif %}
{% endif %}
</li>
{% endfor %}
</ul>
{% endif %}
{% if box.note %}<p class="eoc-box__note">{{ box.note }}</p>{% endif %}
</div>
85 changes: 85 additions & 0 deletions _sass/eoc.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
@use "variables" as *;

.eoc-box {
text-align: left;

&__subtitle {
margin: -0.25rem 0 0.75rem;
color: $altBlue;
font-size: 0.9rem;
}

&__headline {
margin: 0 0 1rem;
}

&__number {
font-size: 2.4rem;
font-weight: bold;
color: $mainBlue;
line-height: 1;
}

&__headline-label {
color: $mainBlue;
font-size: 0.9rem;
margin-left: 0.4rem;
}

&__stats {
list-style: none;
margin: 0;
padding: 0;
}

&__stat {
margin-bottom: 0.75rem;
}

&__stat-head {
display: flex;
justify-content: space-between;
align-items: baseline;
margin-bottom: 0.2rem;
}

&__stat-label {
color: $mainBlue;
font-size: 0.9rem;
}

&__stat-value {
color: $altBlue;
font-weight: bold;
font-size: 0.9rem;
}

&__bar {
display: block;
width: 100%;
height: 0.5rem;
background: $altGray;
border-radius: 999px;
overflow: hidden;
}

&__bar-fill {
display: block;
height: 100%;
background: $mainGreen;
border-radius: 999px;
}

&__note {
margin: 1rem 0 0;
color: $mainGray;
font-size: 0.8rem;
}
}

.eoc-source {
text-align: center;
color: $mainGray;
font-size: 0.85rem;
margin-top: 2rem;
}
3 changes: 2 additions & 1 deletion assets/css/main.scss
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,5 @@
@use "news" as *;
@use "responsive" as *;
@use "dissemination" as *;
@use "jobs" as *;
@use "jobs" as *;
@use "eoc" as *;
15 changes: 15 additions & 0 deletions extract-eoc-stats.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/bin/bash
# Extracts aggregate Equal Opportunity statistics from the WG members CSV into
# _data/eoc_dashboard.yml, via the Docker container (so no local Ruby is needed).
#
# Usage: ./extract-eoc-stats.sh [path/to/members.csv]

CSV="${1:-CA24136-WG-members.csv}"

if [ ! -f "$CSV" ]; then
echo "Error: CSV file '$CSV' not found"
echo "Usage: ./extract-eoc-stats.sh [path/to/members.csv]"
exit 1
fi

docker compose run --rm intercoml-homepage ruby scripts/extract-eoc-stats.rb "$CSV"
36 changes: 36 additions & 0 deletions pages/equal-opportunity.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
title: Equal Opportunity
permalink: /:basename/
---

{% assign d = site.data.eoc_dashboard %}

<div class="sub-container">
<h1>Equal Opportunity Dashboard</h1>

<p>
{{ site.actionAbbreviation }} is committed to inclusiveness and balanced participation across all
Action activities. This dashboard summarises the involvement of women, Young Researchers (YR) and
researchers from Inclusiveness Target Countries (ITC) in the Action.
</p>

<h2>Composition of the Action</h2>
<div class="cards-container">
{% if d.members %}{% include eoc-box.html box=d.members %}{% endif %}
{% if d.mc %}{% include eoc-box.html box=d.mc %}{% endif %}
</div>

{% if d.conference or d.stsm %}
<h2>Activities</h2>
<div class="cards-container">
{% for c in d.conference %}{% include eoc-box.html box=c %}{% endfor %}
{% for s in d.stsm %}{% include eoc-box.html box=s %}{% endfor %}
</div>
{% endif %}

{% if d.meta.generated %}
<p class="eoc-source">
Figures generated from membership records on {{ d.meta.generated }}.
</p>
{% endif %}
</div>
Loading