Skip to content

Commit

Permalink
feat(open-science-policy): Update texts and graphs
Browse files Browse the repository at this point in the history
  • Loading branch information
annelhote committed Jan 9, 2025
1 parent afe5b89 commit 2c25125
Show file tree
Hide file tree
Showing 3 changed files with 135 additions and 29 deletions.
154 changes: 129 additions & 25 deletions src/pages/Declinaisons/Policy/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import { getGraphOptions } from '../../../utils/chartOptions';
import { getCSSValue, getPercentageYAxis } from '../../../utils/helpers';

const { REACT_APP_OPENDATASOFT_API_KEY } = process.env;
const END_YEAR = 2024;
const OPENDATASOFT_LIMIT = 100;
const START_YEAR = 2016;

Expand All @@ -35,7 +36,7 @@ const Policy = () => {
offset = 0,
} = {}) => {
let url = 'https://data.enseignementsup-recherche.gouv.fr/api/explore/v2.1/catalog/datasets';
url += `/fr-esr-resultats-de-l-enquete-sur-la-mise-en-oeuvre-des-politiques-de-science-ou/records?limit=${limit}&offset=${offset}`;
url += `/fr-esr-enquete-etablissements-pnso2/records?limit=${limit}&offset=${offset}&order_by=uo_lib`;
url += `&apikey=${REACT_APP_OPENDATASOFT_API_KEY}`;
const response = await axios.get(url, {
headers: { accept: 'application/json; charset=utf-8' },
Expand All @@ -59,15 +60,15 @@ const Policy = () => {
}, []);

useEffect(() => {
const years = [
...Array(new Date().getFullYear() - START_YEAR + 1).keys(),
].map((year) => year + START_YEAR);
const years = [...Array(END_YEAR - START_YEAR + 1).keys()].map(
(year) => year + START_YEAR,
);
const tmp = {};
// eslint-disable-next-line no-return-assign
years.forEach((year) => (tmp[year] = { y: 0, y_percent: 0 }));
data.forEach((item) => {
if (item?.first_year_of_publication) {
tmp[item.first_year_of_publication].y += 1;
if (item?.['1_annee_publi_doc_cadre']) {
tmp[item['1_annee_publi_doc_cadre']].y += 1;
}
});
const series1 = {};
Expand Down Expand Up @@ -115,30 +116,31 @@ const Policy = () => {
),
};

const orderFromPolicyExists = {
Oui: 3,
Non: 2,
'Pas encore, mais nous y travaillons': 1,
};

let series2 = [];
data.forEach((item) => {
if (
!series2.find(
(serie) => serie.name === item.charter_policy_open_science_exists,
)
) {
if (!series2.find((serie) => serie.name === item['1_doc_cadre'])) {
series2.push({
color:
colorFromPolicyExists?.[item.charter_policy_open_science_exists]
?? getCSSValue('--g-500'),
name: item?.charter_policy_open_science_exists,
name: item['1_doc_cadre'],
y: 0,
});
}
series2.find(
(serie) => serie.name === item.charter_policy_open_science_exists,
).y += 1;
series2.find((serie) => serie.name === item['1_doc_cadre']).y += 1;
});
series2 = series2.map((item) => ({
...item,
name: item?.name ?? 'Pas de réponse',
y_percent: (item.y / data.length) * 100,
}));
series2 = series2
.map((item) => ({
...item,
color: colorFromPolicyExists[item?.name] ?? getCSSValue('--g-500'),
name: item?.name ?? 'Pas de réponse',
order: orderFromPolicyExists[item?.name] ?? 0,
y_percent: (item.y / data.length) * 100,
}))
.sort((a, b) => b.order - a.order);
const options2Tmp = getGraphOptions({ id: id2, intl });
options2Tmp.chart.type = 'pie';
options2Tmp.series = [
Expand All @@ -160,8 +162,26 @@ const Policy = () => {
}, [data, intl]);

useEffect(() => {
setChartComments1(customComments({ comments: {} }, id1, intl));
setChartComments2(customComments({ comments: {} }, id2, intl));
setChartComments1(
customComments(
{
comments: {},
ctas: ['https://hal-lara.archives-ouvertes.fr/hal-04842977'],
},
id1,
intl,
),
);
setChartComments2(
customComments(
{
comments: {},
ctas: ['https://hal-lara.archives-ouvertes.fr/hal-04842977'],
},
id2,
intl,
),
);
}, [id2, intl]);

return (
Expand All @@ -177,6 +197,31 @@ const Policy = () => {
</Row>
<Row>
<Col n='12'>
<FormattedMessage
id='other.policy.open-science-policy-contact'
values={{
cta: (chunks) => (
<a
className='external_link'
href='mailto:[email protected]'
rel='noreferrer'
target='_blank'
>
{chunks}
</a>
),
linebreak: (chunks) => (
<>
{chunks}
<br />
</>
),
}}
/>
</Col>
</Row>
<Row>
<Col n='12' className='fr-mt-5w'>
<ChartWrapper
chartRef={chartRef1}
domain=''
Expand Down Expand Up @@ -219,6 +264,65 @@ const Policy = () => {
</ChartWrapper>
</Col>
</Row>
<Row>
<Col n='12' className='fr-mt-5w'>
<table>
<thead>
<tr>
<th scope='col'>Établissement</th>
<th scope='col'>Année de publication du document-cadre</th>
<th scope='col'>
Lien vers le document-cadre le plus récent
</th>
</tr>
</thead>
<tbody>
{data
.filter((item) => item?.['1_url_doc_cadre'])
.map((item) => (
<tr>
<td>{item.uo_lib}</td>
<td>{item['1_annee_publi_doc_cadre']}</td>
<td>
<a
href={item['1_url_doc_cadre']}
rel='noreferrer'
target='_blank'
>
lien
</a>
</td>
</tr>
))}
</tbody>
</table>
</Col>
</Row>
<Row>
<Col n='12' className='fr-mt-5w'>
<FormattedMessage
id='other.policy.open-science-policy-contact'
values={{
cta: (chunks) => (
<a
className='external_link'
href='mailto:[email protected]'
rel='noreferrer'
target='_blank'
>
{chunks}
</a>
),
linebreak: (chunks) => (
<>
{chunks}
<br />
</>
),
}}
/>
</Col>
</Row>
</section>
</Container>
</div>
Expand Down
5 changes: 3 additions & 2 deletions src/translations/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -931,11 +931,12 @@
"app.national-publi.others.retractions.chart-by-reason.title": "Reason of retraction for French publications",
"app.national-publi.others.retractions.chart-by-reason.tooltip": "<b>{point.y} retracted publications</b> for reason {point.reason}",
"app.national-other.policy.open-science-policy.title": "Number of institutions with an open science policy",
"other.policy.open-science-policy-contact": "TO_BE_TRANSLATED",
"other.policy.open-science-policy.tooltip": "In {point.x}, <b>{point.y}</b> institution(s) had an open science policy,<br>ie. <b>{point.y_percent:.2f}%</b> des respondents.",
"other.policy.open-science-policy.comments": "This gaph shows the evolution of the number of institutions declaring having an open science policy. In green is the PNSO1 (National Plan for Open Science) period between 2018 and 2021, and in yellow is the PNSO2 period between 2021 and 2024. These data come from a survey carried out in early 2024.",
"other.policy.open-science-policy.comments": "TO_BE_TRANSLATED",
"app.national-other.policy.open-science-document.title": "Existence of an open science policy document",
"other.policy.open-science-document.tooltip": "<b>{point.y_percent:.2f}%</b> of respondents answered {point.name} to the question<br>of the existence of a document specifying the open science policy either <b>{point.y}</b> institution(s)",
"other.policy.open-science-document.comments": "This graph represents the proportion of institutions declaring the existence of a document specifying the open science policy, among respondents. These data come from a survey carried out in early 2024.",
"other.policy.open-science-document.comments": "TO_BE_TRANSLATED",
"other.policy.open-science-document.label.not_yet": "Not yet,<br/>but we are working on it",
"app.navigation.objet-recherche": "Research object navigation",
"app.methodologie.publication": "Methodology for monitoring open access to publications",
Expand Down
5 changes: 3 additions & 2 deletions src/translations/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -1166,11 +1166,12 @@
"app.national-publi.others.retractions.chart-by-reason.title": "Raison du retrait des publications françaises",
"app.national-publi.others.retractions.chart-by-reason.tooltip": "<b>{point.y} publications retirées</b> pour raison {point.reason}",
"app.national-other.policy.open-science-policy.title": "Evolution du nombre d'établissements qui se sont dotés d'une politique de science ouverte",
"other.policy.open-science-policy-contact": "Pour nous signaler l’adoption d’un document par votre établissement, la mise à jour d’une politique existante, ou un lien cassé, n’hésitez pas à nous écrire à l’adresse <cta>[email protected]</cta>.",
"other.policy.open-science-policy.tooltip": "En {point.x}, <b>{point.y}</b> établissement(s) avai(en)t une politique de science ouverte,<br>soit <b>{point.y_percent:.2f} %</b> des répondants.",
"other.policy.open-science-policy.comments": "Ce graphique présente l'évolution du nombre d'établissements déclarant avoir une politique de science ouverte. On retrouve en vert la période du PNSO1 (Plan National pour la Science Ouverte) entre 2018 et 2021 et en jaune le PNSO2 entre 2021 et 2024. Ces données sont issues d'une enquête réalisée début 2024.",
"other.policy.open-science-policy.comments": "Ce graphique présente l'évolution du nombre d'établissements déclarant avoir une politique de science ouverte. L'année de référence est l'année d'adoption d'une première politique de science ouverte. On retrouve en vert la période du premier Plan National pour la Science Ouverte, entre 2018 et 2021, et en jaune, la période du deuxième Plan national, depuis 2021. Ces données sont issues d'une enquête réalisée début 2024 par le MESR, dont les résultats ont été publiés dans un rapport (DOI: <cta0>10.52949/80</cta0>). A partir de 2025, les données sont collectées par signalement effectué par les établissements et par une veille systématique du ministère.",
"app.national-other.policy.open-science-document.title": "Existence d'un document précisant la politique de science ouverte",
"other.policy.open-science-document.tooltip": "<b>{point.y_percent:.2f} %</b> des répondants ont répondu {point.name} à la question<br>de l'existence d'un document précisant la politique de science ouverte<br>soit <b>{point.y}</b> établissement(s)",
"other.policy.open-science-document.comments": "Ce graphique représente la proportion d'établissements déclarant l'existence d'un document précisant la politique de science ouverte, parmi les répondants. Ces données sont issues d'une enquête réalisées début 2024.",
"other.policy.open-science-document.comments": "Ce graphique représente la proportion d'établissements qui ont déclaré l'existence d'un document précisant la politique de science ouverte. Ces données sont issues d'une enquête réalisées début 2024 par le MESR et dont les résultats ont été publiés dans un rapport (DOI : <cta0>10.52949/80</cta0>). A partir de 2025, les données sont collectées par signalement effectué par les établissements et par une veille systématique du ministère.",
"other.policy.open-science-document.label.not_yet": "Pas encore,<br/>mais nous y travaillons",
"app.navigation.objet-recherche": "Navigation par objet de recherche",
"app.navigation.methodologies": "Navigation dans les méthodologies",
Expand Down

0 comments on commit 2c25125

Please sign in to comment.