Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migration de la génération des Preview avec la Pandoc API #1022

Merged
merged 3 commits into from
Oct 29, 2024

Conversation

thom4parisot
Copy link
Member

@thom4parisot thom4parisot commented Sep 30, 2024

  • suppression du sous-module git templates-stylo
  • repose sur stylo-export pour générer le HTML de preview
  • supprime pandoc du module export (vitesse d'installation ++)
  • typage de configuration pour que le plantage arrive le plus rapidement possible au démarrage (plutôt que pendant son fonctionnement)

based on #1064 (pas obligé ceci dit)

fixes #987
fixes #907

refs #119
refs #1001
refs #139

Copy link

netlify bot commented Sep 30, 2024

Deploy Preview for stylo-docs canceled.

Name Link
🔨 Latest commit 1cb1a89
🔍 Latest deploy log https://app.netlify.com/sites/stylo-docs/deploys/6720fbd01608510007812aa0

@thom4parisot thom4parisot marked this pull request as ready for review September 30, 2024 14:25
export/src/export.js Outdated Show resolved Hide resolved
Copy link
Collaborator

@davidbgk davidbgk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So many trailing spaces 🙈

@thom4parisot thom4parisot force-pushed the feature/export-refactor branch 2 times, most recently from cbc72ed to b541045 Compare September 30, 2024 18:38
@thom4parisot
Copy link
Member Author

@RochDLY après vérification, c'est pas un souci pour les books : le fonctionnement actuel était déjà de concaténer les contenus et de prendre la biblio du premier article venu. Le fait de se brancher sur le nouveau module d'export ne change rien au mécanisme.

@thom4parisot thom4parisot changed the title Supprime la référence au submodule git des templates d'export Migration de la génération des Preview avec la Pandoc API Oct 1, 2024
graphql/config.js Outdated Show resolved Hide resolved
@ggrossetie
Copy link
Collaborator

Afin de limiter le "risque", est-ce que ça vaut le coup de déployer une nouvelle version avec l'ajout de convict afin de gérer la configuration applicative puis de basculer la génération de la preview sur l'API Pandoc ?

@thom4parisot
Copy link
Member Author

thom4parisot commented Oct 14, 2024

@ggrossetie oui c'est une bonne idée de séparer les deux changements :)

Je suggère une démo de la fonctionnalité lors du point hebdo du 15 octobre pour recueillir des retours sans déployer en dév. (je crois qu'on n'utilise pas le bon template de preview, et ça peut peut-être avoir un impact sur l'intégration des annotations Hypothesis).

cc @RochDLY

export/src/export.js Outdated Show resolved Hide resolved
@thom4parisot thom4parisot force-pushed the feature/export-refactor branch 2 times, most recently from dba5beb to 2f30af6 Compare October 14, 2024 11:27
@thom4parisot thom4parisot force-pushed the feature/export-refactor branch from 2f30af6 to 7668759 Compare October 28, 2024 10:50
Copy link

netlify bot commented Oct 28, 2024

Deploy Preview for stylo-dev ready!

Name Link
🔨 Latest commit 1cb1a89
🔍 Latest deploy log https://app.netlify.com/sites/stylo-dev/deploys/6720fbd06665250008a32292
😎 Deploy Preview https://deploy-preview-1022--stylo-dev.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

Comment on lines 63 to 77
if (preview) {
const previewStylesheet = await readFile(join(__dirname, 'assets', 'preview.css'), { encoding: 'utf8' })

res.send(html5)
} finally {
if (tmpDirectory) {
await fs.rm(tmpDirectory, { recursive: true, maxRetries: 3 })
html5 = html5.replace(/(<\/head>\s?)/gs, `<meta name="robots" content="noindex, nofollow"/>
<style type="text/css">${previewStylesheet}</style>
$1`
)

html5 = html5.replace(/<\/body>/, `<script type="application/json" class="js-hypothesis-config">
{
"openSidebar": true
}
</script>
<script src="https://hypothes.is/embed.js" async></script>
</body>`)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

La "magie" de la preview repose sur :

  • l'injection du script Hypothesis
  • l'ajout d'une balise de non-référencement dans les moteurs de recherche
  • l'injection des styles CSS

md_content: md,
bib_content: bib,
yaml_content: yaml,
with_toc: preview,
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@davidbgk la seule différence avec le rendu "legacy", c'est l'absence de la table des matières.

J'ai tenté de passer with_toc en argument et j'interprète qu'il n'est pas lu mais réglé en dur dans pandocapi.py#L75.

C'est bien ça ?

On avait évoqué l'idée de passer un template pandoc… et en fait passer une feuille de style ça serait pas mal aussi.

Qu'est-ce que t'en penses ?

Copy link
Collaborator

@davidbgk davidbgk Oct 28, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bonne investigation, c'est effectivement en dur pour l'instant 👍

Pour la feuille de style, quel serait le besoin ? Que faites-vous du retour de l'API ? Est-ce que le body est extrait ou vous reprenez tout tel quel ?

Edit : ah mais on parle de CSS ou de CSL en fait ? 🙃

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actuellement on "hacke" la sortie HTML en y injectant du CSS inliné dans une balise HTML. Et deux-trois autres balises aussi d'ailleurs (la config Hypothesis et une balise <meta>).

Avant cette PR, c'était la commande Pandoc qui incluait les CSS dans le template (preview.css finissait dans la variable highlight-css par je ne sais quel procédé).

Enfin, à terme j'imagine qu'on récupèrera le HTML et qu'on l'injectera/stylera dans l'interface Stylo directement (peut-être sous forme de WebComponent, ça dépend comment on arrive à gérer l'intégration avec Hypothesis).

Partant pour y aller pas à pas ; d'abord un truc qui marche et ensuite on voit où on peut améliorer sans que ça soit casse-gueule.

@thom4parisot thom4parisot force-pushed the feature/export-refactor branch from 7668759 to 277cecb Compare October 28, 2024 11:13

html5 = html5.replace(/<\/body>/, `<script type="application/json" class="js-hypothesis-config">
{
"openSidebar": false
Copy link
Member Author

@thom4parisot thom4parisot Oct 28, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@RochDLY écrit en privé (parce que dans les transports) :

A priori ce [l'ouverture du panneau latéral] n'est pas un comportement souhaité, certains utilisateurs ont demandé à ce que le volet soit fermé par défaut et que l'ouverture soit une action manuelle (en cliquant sur le petit bouton en haut à droite de l'écran de la preview)

Retour intégré !

@thom4parisot thom4parisot added [domain] export-legacy 📜 Ancien module d'export multi-formats (pre Stylo v2) [domain] export 📜 Module d'export multi-formats par défaut (depuis Stylo v2) labels Oct 29, 2024
@thom4parisot thom4parisot force-pushed the feature/export-refactor branch from 277cecb to 1cb1a89 Compare October 29, 2024 15:14
@thom4parisot thom4parisot merged commit b76e6c0 into master Oct 29, 2024
15 checks passed
@thom4parisot thom4parisot deleted the feature/export-refactor branch October 29, 2024 16:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[domain] export 📜 Module d'export multi-formats par défaut (depuis Stylo v2) [domain] export-legacy 📜 Ancien module d'export multi-formats (pre Stylo v2)
Projects
None yet
4 participants