diff --git a/src/App.js b/src/App.js index 06398317..fe0951f6 100644 --- a/src/App.js +++ b/src/App.js @@ -24,6 +24,7 @@ import EssaisCliniques from './pages/BaroSante/EssaisCliniques'; import Etudes from './pages/BaroSante/Etudes'; import DataCode from './pages/DataCode'; import HowTo from './pages/Declinaisons/HowTo'; +import Policy from './pages/Declinaisons/Policy'; import Variations from './pages/Declinaisons/Variations'; import Error404 from './pages/Error404'; import Integration from './pages/Integration'; @@ -31,7 +32,7 @@ import Project from './pages/Project'; import messagesEN from './translations/en.json'; import messagesFR from './translations/fr.json'; import TranslationPage from './translations/translations-page'; -import { isInLocal } from './utils/helpers'; +import { isInLocal, isInProduction } from './utils/helpers'; import { GraphNavigationContextProvider } from './utils/Hooks/useGraphNavigation'; import useLang from './utils/Hooks/useLang'; @@ -40,22 +41,24 @@ const messages = { fr: messagesFR, }; -const redirects = { - '/a-propos/notes-flash': '/a-propos/communication', - '/about/notes': '/about/communication', - '/a-propos/declinaisons': '/declinaisons/bso-locaux', - '/about/declinaisons': '/declinaisons/bso-locaux', - '/sante/publications/general': '/publications/general', - '/sante/publications/disciplines': '/publications/general', - '/sante/publications/editeurs': '/publications/general', - '/sante/publications/archives': '/publications/general', - '/sante/publications/affiliations': '/publications/general', - '/health/publications/general': '/publications/general', - '/health/publications/fields': '/publications/general', - '/health/publications/publishers': '/publications/general', - '/health/publications/repositories': '/publications/general', - '/health/publications/affiliations': '/publications/general', -}; +const redirects = isInProduction + ? {} + : { + '/a-propos/notes-flash': '/a-propos/communication', + '/about/notes': '/about/communication', + '/a-propos/declinaisons': '/declinaisons/bso-locaux', + '/about/declinaisons': '/declinaisons/bso-locaux', + '/sante/publications/general': '/publications/general', + '/sante/publications/disciplines': '/publications/general', + '/sante/publications/editeurs': '/publications/general', + '/sante/publications/archives': '/publications/general', + '/sante/publications/affiliations': '/publications/general', + '/health/publications/general': '/publications/general', + '/health/publications/fields': '/publications/general', + '/health/publications/publishers': '/publications/general', + '/health/publications/repositories': '/publications/general', + '/health/publications/affiliations': '/publications/general', + }; function App() { const { lang, urls } = useLang(); @@ -273,6 +276,18 @@ function App() { path={urls.howto[key]} /> ))} + {Object.keys(urls.policy).map((key) => ( + <Route + element={( + <PageTracker> + <Policy /> + </PageTracker> + )} + exact + key={key} + path={urls.policy[key]} + /> + ))} {Object.keys(urls.opendata).map((key) => ( <Route element={( diff --git a/src/components/Charts/orcid/general/chart-indicator-these-discipline.js b/src/components/Charts/orcid/general/chart-indicator-these-discipline.js index 4da45010..54af7f24 100644 --- a/src/components/Charts/orcid/general/chart-indicator-these-discipline.js +++ b/src/components/Charts/orcid/general/chart-indicator-these-discipline.js @@ -35,7 +35,7 @@ const Chart = ({ domain, hasComments, hasFooter, id }) => { 'first_these_discipline.discipline.keyword', 'has_orcid', 'app.orcid.active', - getCSSValue('--green-light-125'), + getCSSValue('--thesesfr'), 100, ); const { categories, dataGraph } = allData; @@ -83,7 +83,7 @@ Chart.defaultProps = { domain: '', hasComments: true, hasFooter: true, - id: 'orcid.general.chart-indicator-these-year', + id: 'orcid.general.chart-indicator-these-discipline', }; Chart.propTypes = { domain: PropTypes.oneOf(domains), diff --git a/src/components/Charts/orcid/general/chart-indicator-these-year.js b/src/components/Charts/orcid/general/chart-indicator-these-year.js index 7be9a7dc..25a186bd 100644 --- a/src/components/Charts/orcid/general/chart-indicator-these-year.js +++ b/src/components/Charts/orcid/general/chart-indicator-these-year.js @@ -35,7 +35,7 @@ const Chart = ({ domain, hasComments, hasFooter, id }) => { 'first_these_year', 'has_orcid', 'app.orcid.active', - getCSSValue('--green-light-125'), + getCSSValue('--thesesfr'), 100, ); const { categories, dataGraph } = allData; diff --git a/src/components/Charts/orcid/general/get-data.js b/src/components/Charts/orcid/general/get-data.js index 4be2d5ea..4d6fb451 100644 --- a/src/components/Charts/orcid/general/get-data.js +++ b/src/components/Charts/orcid/general/get-data.js @@ -64,7 +64,7 @@ function useGetData(beforeLastObservationSnap, observationSnap, domain) { '%Y', new Date(item.key_as_string).getTime(), ), - color: getCSSValue('--green-light-125'), + color: getCSSValue('--thesesfr'), })), }, ]; diff --git a/src/components/GraphNavigation/index.js b/src/components/GraphNavigation/index.js index caa99b5c..4cd3f05b 100644 --- a/src/components/GraphNavigation/index.js +++ b/src/components/GraphNavigation/index.js @@ -15,7 +15,7 @@ import { v4 as uuidv4 } from 'uuid'; import useScroll from '../../utils/Hooks/useScroll'; import useViewport from '../../utils/Hooks/useViewport'; -function GraphNavigation({ mobileTitleIntl, children }) { +function GraphNavigation({ children, mobileTitleIntl }) { const [sticky, setSticky] = useState(false); const [offsetTop, setOffsetTop] = useState(null); const [initOffsetTop, setInitOffsetTop] = useState(null); diff --git a/src/components/Header/index.js b/src/components/Header/index.js index e023a742..d588f7b1 100644 --- a/src/components/Header/index.js +++ b/src/components/Header/index.js @@ -507,9 +507,7 @@ function Header() { /> </NavItem> <NavItem - current={path.startsWith( - `/${urls.variations[lang].split('/')[1]}`, - )} + current={path === urls.nationalOrcid[lang]} title={intl.formatMessage({ id: 'app.header.nav.orcid', defaultMessage: 'ORCID', @@ -549,6 +547,15 @@ function Header() { })} asLink={<RouterLink to={urls.howto[lang] + search} />} /> + <NavSubItem + current={path === urls.policy[lang]} + title={intl.formatMessage({ + id: 'app.header.nav.declinaisons.policy', + defaultMessage: + 'Politique de science ouverte des établissements', + })} + asLink={<RouterLink to={urls.policy[lang] + search} />} + /> </NavItem> <NavItem current={path.startsWith( diff --git a/src/config/urls.js b/src/config/urls.js index 81db1e0e..865a6f6a 100644 --- a/src/config/urls.js +++ b/src/config/urls.js @@ -206,6 +206,10 @@ export default { fr: '/declinaisons/comment-realiser-bso-local', en: '/declinaisons/howto', }, + policy: { + fr: '/declinaisons/politique-etablissements', + en: '/declinaisons/institutional-policy', + }, project: { fr: '/projet-et-equipe', en: '/project-and-team', diff --git a/src/pages/Declinaisons/Policy/index.js b/src/pages/Declinaisons/Policy/index.js new file mode 100644 index 00000000..fd179d8d --- /dev/null +++ b/src/pages/Declinaisons/Policy/index.js @@ -0,0 +1,20 @@ +import { Col, Container, Row } from '@dataesr/react-dsfr'; +import { FormattedMessage } from 'react-intl'; + +const Policy = () => ( + <div className='policy no-arrow-link'> + <Container> + <section className='color-blue-dark-125 content py-48'> + <Row gutters> + <Col n='12'> + <h2> + <FormattedMessage id='app.header.nav.declinaisons.policy' /> + </h2> + </Col> + </Row> + </section> + </Container> + </div> +); + +export default Policy; diff --git a/src/pages/Declinaisons/Variations/index.js b/src/pages/Declinaisons/Variations/index.js index 99e36b1f..a6b2d00d 100644 --- a/src/pages/Declinaisons/Variations/index.js +++ b/src/pages/Declinaisons/Variations/index.js @@ -6,7 +6,7 @@ import Banner from '../../../components/Banner'; import CardLogo from '../../../components/CardLogo'; import Icon from '../../../components/Icon'; -function Variations() { +const Variations = () => { const renderIcons = ( <Row justifyContent='center' alignItems='middle' gutters> <Col n='12'> @@ -494,6 +494,6 @@ function Variations() { </Container> </div> ); -} +}; export default Variations; diff --git a/src/translations/en.json b/src/translations/en.json index 687ca7e8..723e6035 100644 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -324,6 +324,7 @@ "app.header.nav.declinaisons.existing": "The institutions monitors", "app.header.nav.declinaisons": "The local monitors", "app.header.nav.declinaisons.howto": "Tutorial to create your local monitor", + "app.header.nav.declinaisons.policy": "Institutional open science policy", "app.header.subtitle": "Measure the evolution of open science in France using reliable, open and controlled data.", "app.header.title": "French Open Science Monitor", "app.header.title-bis": "the French Open Science Monitor", @@ -1357,10 +1358,11 @@ "url.software.general": "/software/general", "url.thesis": "/thesis", "app.orcid.nb": "Number of ORCID accounts", + "app.orcid.nb-cumulated": "Number of cumulated ORCID accounts", "app.orcid.count": "Total number of French ORCID to-date", "app.orcid.employment-count": "Total number of ORCID with a French employement to-date", "app.orcid.thesis-count": "Total ORCIDs who defended a thesis in France", - "app.orcid.creation-date": "ORCID account creation date", + "app.orcid.creation-year": "ORCID account creation year", "app.orcid.these-proportion": "Proportion of French PhD that have an ORCID", "app.orcid.general": "General", "app.orcid.intro": "ORCID - Open Researcher and Contributor ID - is an international non-profit organization backed by a community of research organizations, publishers, funders, professional associations and other players in the research ecosystem. ORCID's mission is to maintain a registry of unique and persistent identifiers dedicated to researchers and authors of scientific publications. The ORCID identifier facilitates reliable and transparent interconnection between researchers, their work and the structures to which they belong. The adoption of the ORCID identifier by researchers consolidates their digital identity and the visibility of their work, and makes it possible to feed data from ORCID into research information systems, thus avoiding double entries.", diff --git a/src/translations/fr.json b/src/translations/fr.json index dc354e5a..b7b791c4 100644 --- a/src/translations/fr.json +++ b/src/translations/fr.json @@ -509,6 +509,7 @@ "app.header.nav.declinaisons.existing": "Les baromètres des établissements", "app.header.nav.declinaisons": "Les baromètres locaux", "app.header.nav.declinaisons.howto": "Tutoriel pour réaliser son BSO local", + "app.header.nav.declinaisons.policy": "Politique de science ouverte des établissements", "app.header.subtitle": "Mesurer l'évolution de la science ouverte en France à partir de données fiables, ouvertes et maîtrisées.", "app.header.subsubtitle": "La science ouverte est la diffusion sans entrave des résultats, des méthodes et des produits de la recherche scientifique. Elle s'appuie sur l'opportunité que représente la mutation numérique pour développer l'accès ouvert aux publications et - autant que possible - aux données, au codes sources et aux méthodes de la recherche.", "app.header.title": "Baromètre français de la Science Ouverte", @@ -1331,8 +1332,9 @@ "app.orcid.employment-count": "Total ORCID avec employeur français à date", "app.orcid.thesis-count": "Total ORCID ayant soutenu une thèse en France", "app.orcid.nb": "Nombre de comptes ORCID", + "app.orcid.nb-cumulated": "Nombre de comptes ORCID cumulés", "app.orcid.perc": "Proportion de comptes ORCID", - "app.orcid.creation-date": "Date de création de l'ORCID", + "app.orcid.creation-year": "Année de création de l'ORCID", "app.orcid.proportion": "Proportion de comptes ORCID français", "app.orcid.these-proportion": "Proportion de personnes ayant soutenu une thèse en France et disposant d'un ORCID", "app.orcid.active": "actif", diff --git a/src/utils/chartOptions.js b/src/utils/chartOptions.js index fc3172d0..aa7915b2 100644 --- a/src/utils/chartOptions.js +++ b/src/utils/chartOptions.js @@ -3885,9 +3885,11 @@ export const chartOptions = { labels: { rotation: -90, }, - title: { text: intl.formatMessage({ id: 'app.orcid.creation-date' }) }, + title: { text: intl.formatMessage({ id: 'app.orcid.creation-year' }) }, }; - options.yAxis.title.text = intl.formatMessage({ id: 'app.orcid.nb' }); + options.yAxis.title.text = intl.formatMessage({ + id: 'app.orcid.nb-cumulated', + }); options.legend.title.text = null; options.plotOptions = { column: { @@ -3910,7 +3912,7 @@ export const chartOptions = { options.chart.type = 'column'; options.xAxis = { categories, - title: { text: intl.formatMessage({ id: 'app.orcid.creation-date' }) }, + title: { text: intl.formatMessage({ id: 'app.orcid.creation-year' }) }, }; options.yAxis.title.text = intl.formatMessage({ id: 'app.orcid.nb' }); options.legend.enabled = false; diff --git a/src/utils/constants.js b/src/utils/constants.js index efb77297..2d81d3c7 100644 --- a/src/utils/constants.js +++ b/src/utils/constants.js @@ -35,6 +35,7 @@ export const mobileButtonLabel = { '/donnees-de-la-recherche/disciplines': 'app.data.disciplines', '/donnees-de-la-recherche/editeurs': 'app.data.editeurs', '/theses-de-doctorat/general': 'app.thesis.general', + '/orcid/general': 'app.orcid.general', }, en: { '/health/publications/fields': 'app.publi.disciplines', @@ -63,6 +64,7 @@ export const mobileButtonLabel = { '/research-data/disciplines': 'app.data.disciplines', '/research-data/publishers': 'app.data.editeurs', '/thesis/general': 'app.thesis.general', + '/orcid/general': 'app.orcid.general', }, };