docs(site): page Démarrage, traduction pt-br et captures régénéréesUnverified
La doc passe aux quatre langues de l'application : contenu pt-br (sans captures à lui, repli sur l'anglais), shots-seed.sh pour préparer une base de dev locale avant shots.mjs, captures fr/en/de refaites. La page Démarrage est réécrite en français et retraduite en en/de/pt-br.
bb2bb6b parent: 273717f modified
docs/site-documentation/README.md +40 -15 | @@ -1,18 +1,22 @@ | ||
| 1 | 1 | # Site de documentation d'Ex Ego |
| 2 | 2 | |
| 3 | 3 | Site statique **Zola** (≥ 0.23, qui a remplacé les shortcodes par les |
| 4 | -composants Tera), trilingue français / anglais / allemand comme l'application, | |
| 5 | -publié sur `https://ex-ego.durillon.family/documentation`. | |
| 4 | +composants Tera), dans les quatre langues de l'application (français, anglais, | |
| 5 | +allemand, portugais du Brésil), publié sur | |
| 6 | +`https://ex-ego.durillon.family/documentation`. | |
| 6 | 7 | |
| 7 | 8 | ``` |
| 8 | 9 | config.toml base_url avec le sous-chemin, langues, chaînes du gabarit |
| 9 | -content/ une page par écran (ecrans/) + trois situations (cas/) | |
| 10 | - fr = fichier nu, en/de = suffixe .en.md / .de.md | |
| 10 | +content/ une page « Démarrage » à la racine + une page par écran | |
| 11 | + (ecrans/) ; fr = fichier nu, les autres = suffixe | |
| 12 | + .en.md / .de.md / .pt-br.md | |
| 11 | 13 | templates/ base + index/section/page + components.html |
| 12 | 14 | static/doc.css tokens « Organic » repris de assets/style.css |
| 13 | 15 | static/fonts/ Caprasimo + Figtree sous-ensemblés en woff2 (OFL) |
| 14 | -static/img/<langue>/ captures, en JPEG XL et en PNG | |
| 15 | -shots.mjs produit les captures (3 langues) | |
| 16 | +static/img/<langue>/ captures, en JPEG XL et en PNG (dossier = code de langue | |
| 17 | + de l'app, d'où pt-br ; pas encore peuplé pour celle-ci) | |
| 18 | +shots-seed.sh prépare une base de dev pour shots.mjs | |
| 19 | +shots.mjs produit les captures (4 langues) | |
| 16 | 20 | img.sh encode les .jxl à côté des .png |
| 17 | 21 | ``` |
| 18 | 22 | |
| @@ -25,33 +29,54 @@ mise exec zola@latest -- zola serve --port 1112 # aperçu local | ||
| 25 | 29 | mise exec zola@latest -- zola check # liens internes et externes |
| 26 | 30 | ``` |
| 27 | 31 | |
| 32 | +Le portugais n'a pas encore ses captures : les composants d'image retombent | |
| 33 | +sur le dossier `en` quand le PNG manque dans la langue de la page (repli écrit | |
| 34 | +en dur dans `templates/components.html`, un composant ne voyant ni `config` ni | |
| 35 | +le contexte de l'appelant). Une passe de `shots.mjs` en `pt-br` suffit à le | |
| 36 | +faire disparaître, et l'avertissement posé sur la page d'accueil portugaise | |
| 37 | +sera alors à retirer. | |
| 38 | + | |
| 28 | 39 | `zola serve` réécrit `base_url` tout seul : ne pas passer `--base-url`, il |
| 29 | 40 | recolle le port et fabrique une URL invalide. |
| 30 | 41 | |
| 31 | 42 | ## Refaire les captures |
| 32 | 43 | |
| 33 | 44 | Les images sont versionnées : on ne les régénère que lorsque l'interface |
| 34 | -bouge. Il faut un serveur exego branché sur la base **DEV** (jamais la prod), | |
| 35 | -seedé par `docs/slides/demo/seed.mjs`, et les dépendances node d'`a11y/`. | |
| 45 | +bouge. Il faut une base de développement (jamais la prod), un serveur exego | |
| 46 | +branché dessus, et les dépendances node d'`a11y/`. | |
| 36 | 47 | |
| 37 | 48 | ```bash |
| 38 | -# 1. base DEV seedée (le seed pose les catégories, les temps, les tâches, | |
| 39 | -# le groupe « Temps avec Alix » et la catégorie archivée) | |
| 40 | -node ../slides/demo/seed.mjs | psql -X "$DATABASE_URL" | |
| 49 | +# 1. la base : table rase, puis les trois équipes et les trois comptes créés | |
| 50 | +# par le binaire (c'est lui qui hash les mots de passe), puis les | |
| 51 | +# catégories, deux mois de temps, les tâches et l'invitation en attente. | |
| 52 | +# DATABASE_URL par défaut : postgresql://exego:exego@localhost:5432/exego | |
| 53 | +./shots-seed.sh | |
| 41 | 54 | |
| 42 | 55 | # 2. serveur local sur cette base, port 8090 |
| 56 | +DATABASE_URL='postgresql://exego:exego@localhost:5432/exego' \ | |
| 57 | +BISCUIT_PRIVATE_KEY=$(cargo run -- keygen | grep -o '[0-9a-f]\{64\}') \ | |
| 58 | +PORT=8090 cargo run -- serve | |
| 43 | 59 | |
| 44 | 60 | # 3. captures : login, bascule de langue, 19 écrans et 10 extraits par langue |
| 45 | -CHROME=/usr/host/bin/google-chrome-stable TT_USER=camille TT_PASS=… node shots.mjs | |
| 61 | +# (fr, en, de, pt-br) | |
| 62 | +CHROME=/usr/host/bin/google-chrome-stable TT_USER=camille TT_PASS=exego-demo node shots.mjs | |
| 46 | 63 | |
| 47 | 64 | # 4. JPEG XL à côté des PNG |
| 48 | 65 | ./img.sh |
| 49 | 66 | ``` |
| 50 | 67 | |
| 51 | -Le script bascule la langue du compte de démonstration entre chaque passe et | |
| 52 | -le remet en français à la fin. Les pages anonymes (connexion, erreurs) sont | |
| 68 | +`shots-seed.sh` efface tout ce que contient la base avant d'écrire : elle lui | |
| 69 | +appartient. Le tirage des temps est un hachage et non un PRNG, donc deux | |
| 70 | +exécutions le même jour donnent exactement la même base. Le script commence | |
| 71 | +par retirer `POSTGRESQL_ADDON_URI` de l'environnement : le binaire la lit | |
| 72 | +AVANT `DATABASE_URL`, et une variable héritée du shell suffirait à envoyer les | |
| 73 | +créations de comptes sur une base Clever pendant que psql travaille sur la | |
| 74 | +base locale. | |
| 75 | + | |
| 76 | +`shots.mjs` bascule la langue du compte de démonstration entre chaque passe | |
| 77 | +et le remet en français à la fin. Les pages anonymes (connexion, erreurs) sont | |
| 53 | 78 | toujours rendues dans la langue par défaut de l'instance : elles sont |
| 54 | -capturées une fois et recopiées dans les trois dossiers, ce que le texte des | |
| 79 | +capturées une fois et recopiées dans les autres dossiers, ce que le texte des | |
| 55 | 80 | pages concernées mentionne explicitement. |
| 56 | 81 | |
| 57 | 82 | ## Écrire |
| @@ -1,18 +1,22 @@ | |||
| 1 | # Site de documentation d'Ex Ego | 1 | # Site de documentation d'Ex Ego |
| 2 | 2 | ||
| 3 | Site statique **Zola** (≥ 0.23, qui a remplacé les shortcodes par les | 3 | Site statique **Zola** (≥ 0.23, qui a remplacé les shortcodes par les |
| 4 | -composants Tera), trilingue français / anglais / allemand comme l'application, | 4 | +composants Tera), dans les quatre langues de l'application (français, anglais, |
| 5 | -publié sur `https://ex-ego.durillon.family/documentation`. | 5 | +allemand, portugais du Brésil), publié sur |
| 6 | +`https://ex-ego.durillon.family/documentation`. | ||
| 6 | 7 | ||
| 7 | ``` | 8 | ``` |
| 8 | config.toml base_url avec le sous-chemin, langues, chaînes du gabarit | 9 | config.toml base_url avec le sous-chemin, langues, chaînes du gabarit |
| 9 | -content/ une page par écran (ecrans/) + trois situations (cas/) | 10 | +content/ une page « Démarrage » à la racine + une page par écran |
| 10 | - fr = fichier nu, en/de = suffixe .en.md / .de.md | 11 | + (ecrans/) ; fr = fichier nu, les autres = suffixe |
| 12 | + .en.md / .de.md / .pt-br.md | ||
| 11 | templates/ base + index/section/page + components.html | 13 | templates/ base + index/section/page + components.html |
| 12 | static/doc.css tokens « Organic » repris de assets/style.css | 14 | static/doc.css tokens « Organic » repris de assets/style.css |
| 13 | static/fonts/ Caprasimo + Figtree sous-ensemblés en woff2 (OFL) | 15 | static/fonts/ Caprasimo + Figtree sous-ensemblés en woff2 (OFL) |
| 14 | -static/img/<langue>/ captures, en JPEG XL et en PNG | 16 | +static/img/<langue>/ captures, en JPEG XL et en PNG (dossier = code de langue |
| 15 | -shots.mjs produit les captures (3 langues) | 17 | + de l'app, d'où pt-br ; pas encore peuplé pour celle-ci) |
| 18 | +shots-seed.sh prépare une base de dev pour shots.mjs | ||
| 19 | +shots.mjs produit les captures (4 langues) | ||
| 16 | img.sh encode les .jxl à côté des .png | 20 | img.sh encode les .jxl à côté des .png |
| 17 | ``` | 21 | ``` |
| 18 | 22 | ||
| @@ -25,33 +29,54 @@ mise exec zola@latest -- zola serve --port 1112 # aperçu local | |||
| 25 | mise exec zola@latest -- zola check # liens internes et externes | 29 | mise exec zola@latest -- zola check # liens internes et externes |
| 26 | ``` | 30 | ``` |
| 27 | 31 | ||
| 32 | +Le portugais n'a pas encore ses captures : les composants d'image retombent | ||
| 33 | +sur le dossier `en` quand le PNG manque dans la langue de la page (repli écrit | ||
| 34 | +en dur dans `templates/components.html`, un composant ne voyant ni `config` ni | ||
| 35 | +le contexte de l'appelant). Une passe de `shots.mjs` en `pt-br` suffit à le | ||
| 36 | +faire disparaître, et l'avertissement posé sur la page d'accueil portugaise | ||
| 37 | +sera alors à retirer. | ||
| 38 | + | ||
| 28 | `zola serve` réécrit `base_url` tout seul : ne pas passer `--base-url`, il | 39 | `zola serve` réécrit `base_url` tout seul : ne pas passer `--base-url`, il |
| 29 | recolle le port et fabrique une URL invalide. | 40 | recolle le port et fabrique une URL invalide. |
| 30 | 41 | ||
| 31 | ## Refaire les captures | 42 | ## Refaire les captures |
| 32 | 43 | ||
| 33 | Les images sont versionnées : on ne les régénère que lorsque l'interface | 44 | Les images sont versionnées : on ne les régénère que lorsque l'interface |
| 34 | -bouge. Il faut un serveur exego branché sur la base **DEV** (jamais la prod), | 45 | +bouge. Il faut une base de développement (jamais la prod), un serveur exego |
| 35 | -seedé par `docs/slides/demo/seed.mjs`, et les dépendances node d'`a11y/`. | 46 | +branché dessus, et les dépendances node d'`a11y/`. |
| 36 | 47 | ||
| 37 | ```bash | 48 | ```bash |
| 38 | -# 1. base DEV seedée (le seed pose les catégories, les temps, les tâches, | 49 | +# 1. la base : table rase, puis les trois équipes et les trois comptes créés |
| 39 | -# le groupe « Temps avec Alix » et la catégorie archivée) | 50 | +# par le binaire (c'est lui qui hash les mots de passe), puis les |
| 40 | -node ../slides/demo/seed.mjs | psql -X "$DATABASE_URL" | 51 | +# catégories, deux mois de temps, les tâches et l'invitation en attente. |
| 52 | +# DATABASE_URL par défaut : postgresql://exego:exego@localhost:5432/exego | ||
| 53 | +./shots-seed.sh | ||
| 41 | 54 | ||
| 42 | # 2. serveur local sur cette base, port 8090 | 55 | # 2. serveur local sur cette base, port 8090 |
| 56 | +DATABASE_URL='postgresql://exego:exego@localhost:5432/exego' \ | ||
| 57 | +BISCUIT_PRIVATE_KEY=$(cargo run -- keygen | grep -o '[0-9a-f]\{64\}') \ | ||
| 58 | +PORT=8090 cargo run -- serve | ||
| 43 | 59 | ||
| 44 | # 3. captures : login, bascule de langue, 19 écrans et 10 extraits par langue | 60 | # 3. captures : login, bascule de langue, 19 écrans et 10 extraits par langue |
| 45 | -CHROME=/usr/host/bin/google-chrome-stable TT_USER=camille TT_PASS=… node shots.mjs | 61 | +# (fr, en, de, pt-br) |
| 62 | +CHROME=/usr/host/bin/google-chrome-stable TT_USER=camille TT_PASS=exego-demo node shots.mjs | ||
| 46 | 63 | ||
| 47 | # 4. JPEG XL à côté des PNG | 64 | # 4. JPEG XL à côté des PNG |
| 48 | ./img.sh | 65 | ./img.sh |
| 49 | ``` | 66 | ``` |
| 50 | 67 | ||
| 51 | -Le script bascule la langue du compte de démonstration entre chaque passe et | 68 | +`shots-seed.sh` efface tout ce que contient la base avant d'écrire : elle lui |
| 52 | -le remet en français à la fin. Les pages anonymes (connexion, erreurs) sont | 69 | +appartient. Le tirage des temps est un hachage et non un PRNG, donc deux |
| 70 | +exécutions le même jour donnent exactement la même base. Le script commence | ||
| 71 | +par retirer `POSTGRESQL_ADDON_URI` de l'environnement : le binaire la lit | ||
| 72 | +AVANT `DATABASE_URL`, et une variable héritée du shell suffirait à envoyer les | ||
| 73 | +créations de comptes sur une base Clever pendant que psql travaille sur la | ||
| 74 | +base locale. | ||
| 75 | + | ||
| 76 | +`shots.mjs` bascule la langue du compte de démonstration entre chaque passe | ||
| 77 | +et le remet en français à la fin. Les pages anonymes (connexion, erreurs) sont | ||
| 53 | toujours rendues dans la langue par défaut de l'instance : elles sont | 78 | toujours rendues dans la langue par défaut de l'instance : elles sont |
| 54 | -capturées une fois et recopiées dans les trois dossiers, ce que le texte des | 79 | +capturées une fois et recopiées dans les autres dossiers, ce que le texte des |
| 55 | pages concernées mentionne explicitement. | 80 | pages concernées mentionne explicitement. |
| 56 | 81 | ||
| 57 | ## Écrire | 82 | ## Écrire |
modified
docs/site-documentation/config.toml +26 -1 | @@ -24,7 +24,7 @@ lazy_async_image = true | ||
| 24 | 24 | [extra] |
| 25 | 25 | app_url = "https://ex-ego.durillon.family/" |
| 26 | 26 | repo_url = "https://github.com/judu/ex-ego" |
| 27 | -langs = ["fr", "en", "de"] | |
| 27 | +langs = ["fr", "en", "de", "pt-br"] | |
| 28 | 28 | |
| 29 | 29 | # Chaîne d'interface du gabarit (le contenu, lui, vit dans content/). |
| 30 | 30 | [translations] |
| @@ -33,6 +33,7 @@ languages = "Langue" | ||
| 33 | 33 | lang_fr = "Français" |
| 34 | 34 | lang_en = "English" |
| 35 | 35 | lang_de = "Deutsch" |
| 36 | +lang_pt-br = "Português" | |
| 36 | 37 | sections = "Sommaire du site" |
| 37 | 38 | summary = "Sommaire" |
| 38 | 39 | home = "Accueil" |
| @@ -54,6 +55,7 @@ languages = "Language" | ||
| 54 | 55 | lang_fr = "Français" |
| 55 | 56 | lang_en = "English" |
| 56 | 57 | lang_de = "Deutsch" |
| 58 | +lang_pt-br = "Português" | |
| 57 | 59 | sections = "Site contents" |
| 58 | 60 | summary = "Contents" |
| 59 | 61 | home = "Home" |
| @@ -75,6 +77,7 @@ languages = "Sprache" | ||
| 75 | 77 | lang_fr = "Français" |
| 76 | 78 | lang_en = "English" |
| 77 | 79 | lang_de = "Deutsch" |
| 80 | +lang_pt-br = "Português" | |
| 78 | 81 | sections = "Inhalt der Website" |
| 79 | 82 | summary = "Inhalt" |
| 80 | 83 | home = "Startseite" |
| @@ -83,3 +86,25 @@ prev = "Zurück" | ||
| 83 | 86 | next = "Weiter" |
| 84 | 87 | footer = "Ex Ego ist freie Software unter der Unlicense." |
| 85 | 88 | open_app = "Zur Anwendung" |
| 89 | + | |
| 90 | +[languages.pt-br] | |
| 91 | +title = "Documentação do Ex Ego" | |
| 92 | +description = "Contar o tempo que a gente gasta, em grupo, sem cobrar um do outro." | |
| 93 | +generate_feeds = false | |
| 94 | +build_search_index = false | |
| 95 | + | |
| 96 | +[languages.pt-br.translations] | |
| 97 | +skip = "Ir para o conteúdo" | |
| 98 | +languages = "Idioma" | |
| 99 | +lang_fr = "Français" | |
| 100 | +lang_en = "English" | |
| 101 | +lang_de = "Deutsch" | |
| 102 | +lang_pt-br = "Português" | |
| 103 | +sections = "Conteúdo do site" | |
| 104 | +summary = "Conteúdo" | |
| 105 | +home = "Início" | |
| 106 | +pager = "Página anterior e próxima" | |
| 107 | +prev = "Anterior" | |
| 108 | +next = "Próxima" | |
| 109 | +footer = "O Ex Ego é software livre, sob a licença Unlicense." | |
| 110 | +open_app = "Abrir o aplicativo" | |
| @@ -24,7 +24,7 @@ lazy_async_image = true | |||
| 24 | [extra] | 24 | [extra] |
| 25 | app_url = "https://ex-ego.durillon.family/" | 25 | app_url = "https://ex-ego.durillon.family/" |
| 26 | repo_url = "https://github.com/judu/ex-ego" | 26 | repo_url = "https://github.com/judu/ex-ego" |
| 27 | -langs = ["fr", "en", "de"] | 27 | +langs = ["fr", "en", "de", "pt-br"] |
| 28 | 28 | ||
| 29 | # Chaîne d'interface du gabarit (le contenu, lui, vit dans content/). | 29 | # Chaîne d'interface du gabarit (le contenu, lui, vit dans content/). |
| 30 | [translations] | 30 | [translations] |
| @@ -33,6 +33,7 @@ languages = "Langue" | |||
| 33 | lang_fr = "Français" | 33 | lang_fr = "Français" |
| 34 | lang_en = "English" | 34 | lang_en = "English" |
| 35 | lang_de = "Deutsch" | 35 | lang_de = "Deutsch" |
| 36 | +lang_pt-br = "Português" | ||
| 36 | sections = "Sommaire du site" | 37 | sections = "Sommaire du site" |
| 37 | summary = "Sommaire" | 38 | summary = "Sommaire" |
| 38 | home = "Accueil" | 39 | home = "Accueil" |
| @@ -54,6 +55,7 @@ languages = "Language" | |||
| 54 | lang_fr = "Français" | 55 | lang_fr = "Français" |
| 55 | lang_en = "English" | 56 | lang_en = "English" |
| 56 | lang_de = "Deutsch" | 57 | lang_de = "Deutsch" |
| 58 | +lang_pt-br = "Português" | ||
| 57 | sections = "Site contents" | 59 | sections = "Site contents" |
| 58 | summary = "Contents" | 60 | summary = "Contents" |
| 59 | home = "Home" | 61 | home = "Home" |
| @@ -75,6 +77,7 @@ languages = "Sprache" | |||
| 75 | lang_fr = "Français" | 77 | lang_fr = "Français" |
| 76 | lang_en = "English" | 78 | lang_en = "English" |
| 77 | lang_de = "Deutsch" | 79 | lang_de = "Deutsch" |
| 80 | +lang_pt-br = "Português" | ||
| 78 | sections = "Inhalt der Website" | 81 | sections = "Inhalt der Website" |
| 79 | summary = "Inhalt" | 82 | summary = "Inhalt" |
| 80 | home = "Startseite" | 83 | home = "Startseite" |
| @@ -83,3 +86,25 @@ prev = "Zurück" | |||
| 83 | next = "Weiter" | 86 | next = "Weiter" |
| 84 | footer = "Ex Ego ist freie Software unter der Unlicense." | 87 | footer = "Ex Ego ist freie Software unter der Unlicense." |
| 85 | open_app = "Zur Anwendung" | 88 | open_app = "Zur Anwendung" |
| 89 | + | ||
| 90 | +[languages.pt-br] | ||
| 91 | +title = "Documentação do Ex Ego" | ||
| 92 | +description = "Contar o tempo que a gente gasta, em grupo, sem cobrar um do outro." | ||
| 93 | +generate_feeds = false | ||
| 94 | +build_search_index = false | ||
| 95 | + | ||
| 96 | +[languages.pt-br.translations] | ||
| 97 | +skip = "Ir para o conteúdo" | ||
| 98 | +languages = "Idioma" | ||
| 99 | +lang_fr = "Français" | ||
| 100 | +lang_en = "English" | ||
| 101 | +lang_de = "Deutsch" | ||
| 102 | +lang_pt-br = "Português" | ||
| 103 | +sections = "Conteúdo do site" | ||
| 104 | +summary = "Conteúdo" | ||
| 105 | +home = "Início" | ||
| 106 | +pager = "Página anterior e próxima" | ||
| 107 | +prev = "Anterior" | ||
| 108 | +next = "Próxima" | ||
| 109 | +footer = "O Ex Ego é software livre, sob a licença Unlicense." | ||
| 110 | +open_app = "Abrir o aplicativo" | ||
added
docs/site-documentation/content/_index.pt-br.md +41 -0 | new file mode 100644 | ||
| @@ -0,0 +1,41 @@ | ||
| 1 | ++++ | |
| 2 | +title = "Ex Ego" | |
| 3 | +description = "Contar o tempo que a gente gasta, em grupo, sem cobrar um do outro." | |
| 4 | +sort_by = "weight" | |
| 5 | +template = "index.html" | |
| 6 | ++++ | |
| 7 | + | |
| 8 | +O Ex Ego é um pequeno aplicativo web onde você anota o tempo que gasta nas | |
| 9 | +coisas, categoria por categoria, e depois olha o que isso dá na escala de um | |
| 10 | +grupo. Uma casa, uma associação, um condomínio: qualquer lugar onde várias | |
| 11 | +pessoas fazem coisas juntas sem que ninguém mande nas outras. | |
| 12 | + | |
| 13 | +Não existe papel de administrador. Todos os membros de uma equipe têm | |
| 14 | +exatamente os mesmos poderes: renomear a equipe, convidar alguém, criar uma | |
| 15 | +categoria, corrigir uma tarefa. A única coisa que é só sua são os seus | |
| 16 | +registros de tempo, que mais ninguém pode alterar. | |
| 17 | + | |
| 18 | +As capturas de tela desta documentação ainda estão em inglês. Os textos abaixo | |
| 19 | +usam os termos do aplicativo em português, que é o que você vai ver na tela. | |
| 20 | + | |
| 21 | +## Cinco palavras para conhecer | |
| 22 | + | |
| 23 | +Uma **equipe** reúne pessoas e tudo o que elas contam juntas. Você pode fazer | |
| 24 | +parte de várias equipes e trocar de uma para a outra: a interface inteira | |
| 25 | +acompanha a equipe ativa, inclusive as cores. | |
| 26 | + | |
| 27 | +Uma **categoria** é aquilo em que se conta tempo, por exemplo Cozinha, Compras | |
| 28 | +ou Reuniões. Ela pertence à equipe, não a você, e qualquer pessoa pode criar | |
| 29 | +uma. Quando uma categoria não serve mais, a gente arquiva: ela sai das listas | |
| 30 | +de registro, mas os tempos já anotados continuam nas estatísticas. | |
| 31 | + | |
| 32 | +Um **tempo** é uma duração em minutos, presa a uma categoria e a uma data. Não | |
| 33 | +tem hora de início nem de fim, e não tem teto. Um tempo é seu: só você pode | |
| 34 | +corrigir ou excluir. | |
| 35 | + | |
| 36 | +Um **grupo** separa certas categorias. O tempo delas sai das estatísticas da | |
| 37 | +equipe e aparece num painel só dele. Serve para um assunto que você quer | |
| 38 | +acompanhar sem que ele esmague todo o resto. | |
| 39 | + | |
| 40 | +Uma **tarefa** é algo a fazer, com data, presa a uma categoria. Você pega, você | |
| 41 | +termina, e aí o aplicativo propõe reprogramá-la no ritmo que observou. | |
| new file mode 100644 | |||
| @@ -0,0 +1,41 @@ | |||
| 1 | ++++ | ||
| 2 | +title = "Ex Ego" | ||
| 3 | +description = "Contar o tempo que a gente gasta, em grupo, sem cobrar um do outro." | ||
| 4 | +sort_by = "weight" | ||
| 5 | +template = "index.html" | ||
| 6 | ++++ | ||
| 7 | + | ||
| 8 | +O Ex Ego é um pequeno aplicativo web onde você anota o tempo que gasta nas | ||
| 9 | +coisas, categoria por categoria, e depois olha o que isso dá na escala de um | ||
| 10 | +grupo. Uma casa, uma associação, um condomínio: qualquer lugar onde várias | ||
| 11 | +pessoas fazem coisas juntas sem que ninguém mande nas outras. | ||
| 12 | + | ||
| 13 | +Não existe papel de administrador. Todos os membros de uma equipe têm | ||
| 14 | +exatamente os mesmos poderes: renomear a equipe, convidar alguém, criar uma | ||
| 15 | +categoria, corrigir uma tarefa. A única coisa que é só sua são os seus | ||
| 16 | +registros de tempo, que mais ninguém pode alterar. | ||
| 17 | + | ||
| 18 | +As capturas de tela desta documentação ainda estão em inglês. Os textos abaixo | ||
| 19 | +usam os termos do aplicativo em português, que é o que você vai ver na tela. | ||
| 20 | + | ||
| 21 | +## Cinco palavras para conhecer | ||
| 22 | + | ||
| 23 | +Uma **equipe** reúne pessoas e tudo o que elas contam juntas. Você pode fazer | ||
| 24 | +parte de várias equipes e trocar de uma para a outra: a interface inteira | ||
| 25 | +acompanha a equipe ativa, inclusive as cores. | ||
| 26 | + | ||
| 27 | +Uma **categoria** é aquilo em que se conta tempo, por exemplo Cozinha, Compras | ||
| 28 | +ou Reuniões. Ela pertence à equipe, não a você, e qualquer pessoa pode criar | ||
| 29 | +uma. Quando uma categoria não serve mais, a gente arquiva: ela sai das listas | ||
| 30 | +de registro, mas os tempos já anotados continuam nas estatísticas. | ||
| 31 | + | ||
| 32 | +Um **tempo** é uma duração em minutos, presa a uma categoria e a uma data. Não | ||
| 33 | +tem hora de início nem de fim, e não tem teto. Um tempo é seu: só você pode | ||
| 34 | +corrigir ou excluir. | ||
| 35 | + | ||
| 36 | +Um **grupo** separa certas categorias. O tempo delas sai das estatísticas da | ||
| 37 | +equipe e aparece num painel só dele. Serve para um assunto que você quer | ||
| 38 | +acompanhar sem que ele esmague todo o resto. | ||
| 39 | + | ||
| 40 | +Uma **tarefa** é algo a fazer, com data, presa a uma categoria. Você pega, você | ||
| 41 | +termina, e aí o aplicativo propõe reprogramá-la no ritmo que observou. | ||
added
docs/site-documentation/content/demarrage.de.md +100 -0 | new file mode 100644 | ||
| @@ -0,0 +1,100 @@ | ||
| 1 | ++++ | |
| 2 | +title = "Erste Schritte" | |
| 3 | +description = "Die ersten Handgriffe in einem Team, das noch nichts enthält." | |
| 4 | +weight = 1 | |
| 5 | ++++ | |
| 6 | + | |
| 7 | +Ein frisch angelegtes Team ist leer: keine Kategorie, keine Zeit, keine | |
| 8 | +Aufgabe. Der Hinzufügen-Reiter sagt das sofort, denn er hat nichts anzubieten, | |
| 9 | +solange keine Kategorie existiert. Man füllt es in der Reihenfolge dieser | |
| 10 | +Seite, erst die Kategorien, dann die Zeiten, bis zu dem Moment, in dem die | |
| 11 | +Statistik etwas zu sagen beginnt. | |
| 12 | + | |
| 13 | +Wenn du über einen Einladungslink ins Team gekommen bist, läuft es | |
| 14 | +wahrscheinlich schon und die Kategorien sind da: geh direkt zu [den ersten | |
| 15 | +Zeiten](#die-ersten-zeiten). | |
| 16 | + | |
| 17 | +## Drei oder vier Kategorien anlegen | |
| 18 | + | |
| 19 | +{{<shot name="categories" alt="Kategorien-Bildschirm: Hinweis, dass die Kategorien dem Team gehören, Eingabefeld, dann die Liste der Kategorien mit ihren Farben." lang={lang} legende="Oben ein Feld, darunter die Liste, die sich füllt." />}} | |
| 20 | + | |
| 21 | +Der Link „Kategorien verwalten“ im Hinzufügen-Reiter führt zum Anlegen. | |
| 22 | + | |
| 23 | +Keine Kategorie ist vorgegeben, das Team legt sie selbst an. Manche mögen sehr | |
| 24 | +genaue Kategorien, andere lieber weiter gefasste. Weitere kommen dazu, wenn der | |
| 25 | +Bedarf auftaucht, und was ungenutzt bleibt, wird | |
| 26 | +[archiviert](@/ecrans/categories.de.md), ohne die schon gezählte Zeit zu | |
| 27 | +verlieren. | |
| 28 | + | |
| 29 | +Die Farbe wählt man nicht: Sie ergibt sich aus der Reihenfolge, in der die | |
| 30 | +Kategorien angelegt wurden, und alle sehen damit dieselbe. | |
| 31 | + | |
| 32 | +## Die ersten Zeiten | |
| 33 | + | |
| 34 | +{{<shot name="ajouter-duree" alt="Schritt zwei: die gewählte Kategorie, ein Minutenzähler mit Minus und Plus, Kurzwahlen für 5, 15, 30, 45 Minuten und 1 Std., ein Datumsfeld, die Schaltfläche Zeit hinzufügen." lang={lang} legende="Die Dauer, das Datum, und es ist erfasst." />}} | |
| 35 | + | |
| 36 | +Zurück im Hinzufügen-Reiter fragt „Zeit hinzufügen“ nach der Kategorie, danach | |
| 37 | +nach [Dauer und Datum](@/ecrans/duree.de.md). | |
| 38 | + | |
| 39 | +„Plus“ und „Minus“ gehen in Fünf-Minuten-Schritten, die Kurzwahlen setzen eine | |
| 40 | +runde Dauer, und die Zahl in der Mitte tippt man direkt, wenn man sie kennt. | |
| 41 | +Bei der Datumswahl geht der linke Pfeil einen Tag zurück, was vor allem dem | |
| 42 | +Nachtragen von gestern dient. | |
| 43 | + | |
| 44 | +Jede Erfassung führt zurück zum Bildschirm „Hinzufügen“, um gleich die nächste | |
| 45 | +einzutragen oder eine Stoppuhr zu starten. | |
| 46 | + | |
| 47 | +## Die Stoppuhr starten | |
| 48 | + | |
| 49 | +Die andere Karte im Hinzufügen-Reiter startet [eine | |
| 50 | +Messung](@/ecrans/minuteur.de.md), ohne etwas zu fragen: keine Kategorie, keine | |
| 51 | +Notiz. Sie bleibt in ihrem Band oben auf jedem Bildschirm sichtbar, und man | |
| 52 | +bewegt sich weiter durch die Anwendung, während sie läuft. | |
| 53 | + | |
| 54 | +Einsortiert wird die Messung erst beim Anhalten: Man wählt die Kategorie, dann öffnet | |
| 55 | +sich der Schritt mit der Dauer, die gemessenen Minuten schon eingetragen und | |
| 56 | +weiterhin änderbar. Geschrieben wird nichts, bevor die Erfassung bestätigt ist. | |
| 57 | + | |
| 58 | +## Die Statistik nach ein paar Tagen | |
| 59 | + | |
| 60 | +{{<shot name="stats" alt="Statistik-Bildschirm: Link „Meine Einträge“, die Pillen Maison und Temps avec Alix, dann das Wochendiagramm mit einer Säule pro Tag." lang={lang} legende="Es braucht eine Woche Einträge, damit der Bildschirm so aussieht." />}} | |
| 61 | + | |
| 62 | +Am ersten Abend tragen [die sechs Diagramme](@/ecrans/stats.de.md) erst zwei | |
| 63 | +oder drei Segmente. Nach einer Woche wird die Verteilung sichtbar, und ein Tipp | |
| 64 | +auf ein Segment öffnet die Einzelheiten: wer, welche Kategorie, wie lange, | |
| 65 | +welcher Anteil. | |
| 66 | + | |
| 67 | +## Die anderen dazuholen | |
| 68 | + | |
| 69 | +{{<extrait name="x-invitation" alt="Einladungskarte: „noa lädt dich in das Team Copropriété ein“, mit den Schaltflächen Annehmen und Ablehnen." lang={lang} legende="Die Einladung wartet oben in den Einstellungen der eingeladenen Person." />}} | |
| 70 | + | |
| 71 | +In [den Einstellungen](@/ecrans/parametres.de.md) nimmt das Einladungsfeld den | |
| 72 | +Benutzernamen von jemandem, der schon ein Konto hat. Die Karte erscheint oben | |
| 73 | +in dessen eigenen Einstellungen, und Annehmen wechselt gleich ins Team. | |
| 74 | + | |
| 75 | +Für jemanden ohne Konto erzeugt die Schaltfläche „Link erzeugen“ einen | |
| 76 | +Einladungslink, eine Stunde gültig, den man verschickt, wie man mag. Er führt | |
| 77 | +direkt zur Anmeldung in diesem Team. | |
| 78 | + | |
| 79 | +Bei den Rechten gibt es nichts einzustellen: jedes Mitglied kann das Team | |
| 80 | +umbenennen, Kategorien anlegen, einladen, Aufgaben korrigieren. Nur die | |
| 81 | +Zeiteinträge gehören denen, die sie geschrieben haben. | |
| 82 | + | |
| 83 | +## Aufgaben | |
| 84 | + | |
| 85 | +[Aufgaben](@/ecrans/taches.de.md) zählen keine Zeit. Sie sind die einzige | |
| 86 | +weitere Funktion der Anwendung: eine sehr einfache geteilte Aufgabenliste, mit | |
| 87 | +Aktivierungsdatum und Zuweisung. | |
| 88 | + | |
| 89 | +## Die Anzeige einstellen | |
| 90 | + | |
| 91 | +Ebenfalls in den Einstellungen drei Wahlmöglichkeiten, die zum Konto gehören | |
| 92 | +und nicht zum Gerät: die Sprache der Oberfläche, das Aussehen zwischen Organic | |
| 93 | +und Hoher Kontrast, und die Form der Diagramme zwischen Spalten und Zeilen. Sie | |
| 94 | +folgen dem Konto von einem Telefon zum nächsten, und zwei Mitglieder desselben | |
| 95 | +Teams dürfen sie verschieden einstellen. | |
| 96 | + | |
| 97 | +## Derselbe Weg als Video | |
| 98 | + | |
| 99 | +Diese Schritte gibt es auch als Film, am Stück auf einem leeren Team gespielt: | |
| 100 | +[die Ex-Ego-Demonstration](https://files.judu.bzh/ex-ego-readme-demo.mp4). | |
| new file mode 100644 | |||
| @@ -0,0 +1,100 @@ | |||
| 1 | ++++ | ||
| 2 | +title = "Erste Schritte" | ||
| 3 | +description = "Die ersten Handgriffe in einem Team, das noch nichts enthält." | ||
| 4 | +weight = 1 | ||
| 5 | ++++ | ||
| 6 | + | ||
| 7 | +Ein frisch angelegtes Team ist leer: keine Kategorie, keine Zeit, keine | ||
| 8 | +Aufgabe. Der Hinzufügen-Reiter sagt das sofort, denn er hat nichts anzubieten, | ||
| 9 | +solange keine Kategorie existiert. Man füllt es in der Reihenfolge dieser | ||
| 10 | +Seite, erst die Kategorien, dann die Zeiten, bis zu dem Moment, in dem die | ||
| 11 | +Statistik etwas zu sagen beginnt. | ||
| 12 | + | ||
| 13 | +Wenn du über einen Einladungslink ins Team gekommen bist, läuft es | ||
| 14 | +wahrscheinlich schon und die Kategorien sind da: geh direkt zu [den ersten | ||
| 15 | +Zeiten](#die-ersten-zeiten). | ||
| 16 | + | ||
| 17 | +## Drei oder vier Kategorien anlegen | ||
| 18 | + | ||
| 19 | +{{<shot name="categories" alt="Kategorien-Bildschirm: Hinweis, dass die Kategorien dem Team gehören, Eingabefeld, dann die Liste der Kategorien mit ihren Farben." lang={lang} legende="Oben ein Feld, darunter die Liste, die sich füllt." />}} | ||
| 20 | + | ||
| 21 | +Der Link „Kategorien verwalten“ im Hinzufügen-Reiter führt zum Anlegen. | ||
| 22 | + | ||
| 23 | +Keine Kategorie ist vorgegeben, das Team legt sie selbst an. Manche mögen sehr | ||
| 24 | +genaue Kategorien, andere lieber weiter gefasste. Weitere kommen dazu, wenn der | ||
| 25 | +Bedarf auftaucht, und was ungenutzt bleibt, wird | ||
| 26 | +[archiviert](@/ecrans/categories.de.md), ohne die schon gezählte Zeit zu | ||
| 27 | +verlieren. | ||
| 28 | + | ||
| 29 | +Die Farbe wählt man nicht: Sie ergibt sich aus der Reihenfolge, in der die | ||
| 30 | +Kategorien angelegt wurden, und alle sehen damit dieselbe. | ||
| 31 | + | ||
| 32 | +## Die ersten Zeiten | ||
| 33 | + | ||
| 34 | +{{<shot name="ajouter-duree" alt="Schritt zwei: die gewählte Kategorie, ein Minutenzähler mit Minus und Plus, Kurzwahlen für 5, 15, 30, 45 Minuten und 1 Std., ein Datumsfeld, die Schaltfläche Zeit hinzufügen." lang={lang} legende="Die Dauer, das Datum, und es ist erfasst." />}} | ||
| 35 | + | ||
| 36 | +Zurück im Hinzufügen-Reiter fragt „Zeit hinzufügen“ nach der Kategorie, danach | ||
| 37 | +nach [Dauer und Datum](@/ecrans/duree.de.md). | ||
| 38 | + | ||
| 39 | +„Plus“ und „Minus“ gehen in Fünf-Minuten-Schritten, die Kurzwahlen setzen eine | ||
| 40 | +runde Dauer, und die Zahl in der Mitte tippt man direkt, wenn man sie kennt. | ||
| 41 | +Bei der Datumswahl geht der linke Pfeil einen Tag zurück, was vor allem dem | ||
| 42 | +Nachtragen von gestern dient. | ||
| 43 | + | ||
| 44 | +Jede Erfassung führt zurück zum Bildschirm „Hinzufügen“, um gleich die nächste | ||
| 45 | +einzutragen oder eine Stoppuhr zu starten. | ||
| 46 | + | ||
| 47 | +## Die Stoppuhr starten | ||
| 48 | + | ||
| 49 | +Die andere Karte im Hinzufügen-Reiter startet [eine | ||
| 50 | +Messung](@/ecrans/minuteur.de.md), ohne etwas zu fragen: keine Kategorie, keine | ||
| 51 | +Notiz. Sie bleibt in ihrem Band oben auf jedem Bildschirm sichtbar, und man | ||
| 52 | +bewegt sich weiter durch die Anwendung, während sie läuft. | ||
| 53 | + | ||
| 54 | +Einsortiert wird die Messung erst beim Anhalten: Man wählt die Kategorie, dann öffnet | ||
| 55 | +sich der Schritt mit der Dauer, die gemessenen Minuten schon eingetragen und | ||
| 56 | +weiterhin änderbar. Geschrieben wird nichts, bevor die Erfassung bestätigt ist. | ||
| 57 | + | ||
| 58 | +## Die Statistik nach ein paar Tagen | ||
| 59 | + | ||
| 60 | +{{<shot name="stats" alt="Statistik-Bildschirm: Link „Meine Einträge“, die Pillen Maison und Temps avec Alix, dann das Wochendiagramm mit einer Säule pro Tag." lang={lang} legende="Es braucht eine Woche Einträge, damit der Bildschirm so aussieht." />}} | ||
| 61 | + | ||
| 62 | +Am ersten Abend tragen [die sechs Diagramme](@/ecrans/stats.de.md) erst zwei | ||
| 63 | +oder drei Segmente. Nach einer Woche wird die Verteilung sichtbar, und ein Tipp | ||
| 64 | +auf ein Segment öffnet die Einzelheiten: wer, welche Kategorie, wie lange, | ||
| 65 | +welcher Anteil. | ||
| 66 | + | ||
| 67 | +## Die anderen dazuholen | ||
| 68 | + | ||
| 69 | +{{<extrait name="x-invitation" alt="Einladungskarte: „noa lädt dich in das Team Copropriété ein“, mit den Schaltflächen Annehmen und Ablehnen." lang={lang} legende="Die Einladung wartet oben in den Einstellungen der eingeladenen Person." />}} | ||
| 70 | + | ||
| 71 | +In [den Einstellungen](@/ecrans/parametres.de.md) nimmt das Einladungsfeld den | ||
| 72 | +Benutzernamen von jemandem, der schon ein Konto hat. Die Karte erscheint oben | ||
| 73 | +in dessen eigenen Einstellungen, und Annehmen wechselt gleich ins Team. | ||
| 74 | + | ||
| 75 | +Für jemanden ohne Konto erzeugt die Schaltfläche „Link erzeugen“ einen | ||
| 76 | +Einladungslink, eine Stunde gültig, den man verschickt, wie man mag. Er führt | ||
| 77 | +direkt zur Anmeldung in diesem Team. | ||
| 78 | + | ||
| 79 | +Bei den Rechten gibt es nichts einzustellen: jedes Mitglied kann das Team | ||
| 80 | +umbenennen, Kategorien anlegen, einladen, Aufgaben korrigieren. Nur die | ||
| 81 | +Zeiteinträge gehören denen, die sie geschrieben haben. | ||
| 82 | + | ||
| 83 | +## Aufgaben | ||
| 84 | + | ||
| 85 | +[Aufgaben](@/ecrans/taches.de.md) zählen keine Zeit. Sie sind die einzige | ||
| 86 | +weitere Funktion der Anwendung: eine sehr einfache geteilte Aufgabenliste, mit | ||
| 87 | +Aktivierungsdatum und Zuweisung. | ||
| 88 | + | ||
| 89 | +## Die Anzeige einstellen | ||
| 90 | + | ||
| 91 | +Ebenfalls in den Einstellungen drei Wahlmöglichkeiten, die zum Konto gehören | ||
| 92 | +und nicht zum Gerät: die Sprache der Oberfläche, das Aussehen zwischen Organic | ||
| 93 | +und Hoher Kontrast, und die Form der Diagramme zwischen Spalten und Zeilen. Sie | ||
| 94 | +folgen dem Konto von einem Telefon zum nächsten, und zwei Mitglieder desselben | ||
| 95 | +Teams dürfen sie verschieden einstellen. | ||
| 96 | + | ||
| 97 | +## Derselbe Weg als Video | ||
| 98 | + | ||
| 99 | +Diese Schritte gibt es auch als Film, am Stück auf einem leeren Team gespielt: | ||
| 100 | +[die Ex-Ego-Demonstration](https://files.judu.bzh/ex-ego-readme-demo.mp4). | ||
added
docs/site-documentation/content/demarrage.en.md +96 -0 | new file mode 100644 | ||
| @@ -0,0 +1,96 @@ | ||
| 1 | ++++ | |
| 2 | +title = "Getting started" | |
| 3 | +description = "The first moves in a team that holds nothing yet." | |
| 4 | +weight = 1 | |
| 5 | ++++ | |
| 6 | + | |
| 7 | +A brand new team is empty: no category, no time entry, no task. The Add tab | |
| 8 | +says so right away, since it has nothing to offer until a category exists. You | |
| 9 | +fill it in the order of this page, categories first, then entries, up to the | |
| 10 | +moment the statistics start saying something. | |
| 11 | + | |
| 12 | +If you joined the team through an invitation link, it is probably running | |
| 13 | +already and the categories are there: go straight to [the first | |
| 14 | +entries](#the-first-entries). | |
| 15 | + | |
| 16 | +## Create three or four categories | |
| 17 | + | |
| 18 | +{{<shot name="categories" alt="Categories screen: a reminder that categories belong to the team, an add field, then the list of categories with their colours." lang={lang} legende="A field at the top, the list filling up below." />}} | |
| 19 | + | |
| 20 | +The “Manage categories” link, on the Add tab, leads to the creation screen. | |
| 21 | + | |
| 22 | +No category is imposed: it is up to the team to create them. Some people will | |
| 23 | +prefer very precise categories, others broader ones. You add more as the need | |
| 24 | +shows up, and you [archive](@/ecrans/categories.en.md) the ones that go unused | |
| 25 | +without losing the time already counted on them. | |
| 26 | + | |
| 27 | +The colour is not a choice: it follows the order in which the categories were | |
| 28 | +created, so everyone sees the same one. | |
| 29 | + | |
| 30 | +## The first entries | |
| 31 | + | |
| 32 | +{{<shot name="ajouter-duree" alt="Step two: the chosen category, a minute counter with minus and plus buttons, shortcuts for 5, 15, 30, 45 minutes and 1 h, a date picker, and the Add time button." lang={lang} legende="The duration, the date, and it is recorded." />}} | |
| 33 | + | |
| 34 | +Back on the Add tab, “Add time” asks for the category, then for [a duration and | |
| 35 | +a date](@/ecrans/duree.en.md). | |
| 36 | + | |
| 37 | +The “plus” and “minus” buttons move by five minutes, the shortcuts set a round | |
| 38 | +duration, and the number in the middle can be typed straight in when you know | |
| 39 | +it. On the date picker, the left arrow steps back one day, which mostly serves | |
| 40 | +to catch up on something forgotten yesterday. | |
| 41 | + | |
| 42 | +Every save brings you back to the Add screen, ready to record another one or to | |
| 43 | +start a timer. | |
| 44 | + | |
| 45 | +## Start the timer | |
| 46 | + | |
| 47 | +The other card on the Add tab starts [a measurement](@/ecrans/minuteur.en.md) | |
| 48 | +without asking anything: no category, no note. It stays visible in its banner at | |
| 49 | +the top of every screen, and you keep moving around the application while it | |
| 50 | +runs. | |
| 51 | + | |
| 52 | +Filing the measurement happens when you stop it: you pick the category, then | |
| 53 | +the duration step opens with the measured minutes already filled in, still | |
| 54 | +editable. Nothing is written until the entry is confirmed. | |
| 55 | + | |
| 56 | +## Statistics, after a few days | |
| 57 | + | |
| 58 | +{{<shot name="stats" alt="Statistics screen: a “My entries” link, the scope pills Maison and Temps avec Alix, then the weekly activity chart with one column per day." lang={lang} legende="It takes a week of entries for the screen to look like this." />}} | |
| 59 | + | |
| 60 | +On the first evening, [the six charts](@/ecrans/stats.en.md) carry only two or | |
| 61 | +three segments. After a week the split becomes visible, and touching a segment | |
| 62 | +opens the detail: who, which category, how long, what share. | |
| 63 | + | |
| 64 | +## Bring the others in | |
| 65 | + | |
| 66 | +{{<extrait name="x-invitation" alt="Invitation card: “noa invites you to join the team Copropriété”, with Accept and Decline buttons." lang={lang} legende="The invitation waits at the top of the invited person's settings." />}} | |
| 67 | + | |
| 68 | +In [the settings](@/ecrans/parametres.en.md), the invitation field takes the | |
| 69 | +username of someone who already has an account. The card shows up at the top of | |
| 70 | +their own settings, and accepting switches them onto the team straight away. | |
| 71 | + | |
| 72 | +For someone without an account yet, the “Generate a link” button produces an | |
| 73 | +invitation link, valid for one hour, to send by whatever means you like. It | |
| 74 | +takes them directly to signup inside this team. | |
| 75 | + | |
| 76 | +There is nothing to set up on the rights side: every member can rename the | |
| 77 | +team, create categories, invite people, fix tasks. Only the time entries belong | |
| 78 | +to whoever wrote them. | |
| 79 | + | |
| 80 | +## Tasks | |
| 81 | + | |
| 82 | +[Tasks](@/ecrans/taches.en.md) are not there to count time. They are the only | |
| 83 | +other feature of the application: a very simple shared to-do list, with an | |
| 84 | +activation date and assignees. | |
| 85 | + | |
| 86 | +## Set up the display | |
| 87 | + | |
| 88 | +Still in the settings, three choices that belong to the account rather than to | |
| 89 | +the device: the interface language, the look between Organic and High contrast, | |
| 90 | +and the chart format between Columns and Rows. They follow the account from one | |
| 91 | +phone to the next, and two members of the same team can set them differently. | |
| 92 | + | |
| 93 | +## The same walkthrough on video | |
| 94 | + | |
| 95 | +These steps also exist as a film, played end to end on an empty team: | |
| 96 | +[the Ex Ego demonstration](https://files.judu.bzh/ex-ego-readme-demo.mp4). | |
| new file mode 100644 | |||
| @@ -0,0 +1,96 @@ | |||
| 1 | ++++ | ||
| 2 | +title = "Getting started" | ||
| 3 | +description = "The first moves in a team that holds nothing yet." | ||
| 4 | +weight = 1 | ||
| 5 | ++++ | ||
| 6 | + | ||
| 7 | +A brand new team is empty: no category, no time entry, no task. The Add tab | ||
| 8 | +says so right away, since it has nothing to offer until a category exists. You | ||
| 9 | +fill it in the order of this page, categories first, then entries, up to the | ||
| 10 | +moment the statistics start saying something. | ||
| 11 | + | ||
| 12 | +If you joined the team through an invitation link, it is probably running | ||
| 13 | +already and the categories are there: go straight to [the first | ||
| 14 | +entries](#the-first-entries). | ||
| 15 | + | ||
| 16 | +## Create three or four categories | ||
| 17 | + | ||
| 18 | +{{<shot name="categories" alt="Categories screen: a reminder that categories belong to the team, an add field, then the list of categories with their colours." lang={lang} legende="A field at the top, the list filling up below." />}} | ||
| 19 | + | ||
| 20 | +The “Manage categories” link, on the Add tab, leads to the creation screen. | ||
| 21 | + | ||
| 22 | +No category is imposed: it is up to the team to create them. Some people will | ||
| 23 | +prefer very precise categories, others broader ones. You add more as the need | ||
| 24 | +shows up, and you [archive](@/ecrans/categories.en.md) the ones that go unused | ||
| 25 | +without losing the time already counted on them. | ||
| 26 | + | ||
| 27 | +The colour is not a choice: it follows the order in which the categories were | ||
| 28 | +created, so everyone sees the same one. | ||
| 29 | + | ||
| 30 | +## The first entries | ||
| 31 | + | ||
| 32 | +{{<shot name="ajouter-duree" alt="Step two: the chosen category, a minute counter with minus and plus buttons, shortcuts for 5, 15, 30, 45 minutes and 1 h, a date picker, and the Add time button." lang={lang} legende="The duration, the date, and it is recorded." />}} | ||
| 33 | + | ||
| 34 | +Back on the Add tab, “Add time” asks for the category, then for [a duration and | ||
| 35 | +a date](@/ecrans/duree.en.md). | ||
| 36 | + | ||
| 37 | +The “plus” and “minus” buttons move by five minutes, the shortcuts set a round | ||
| 38 | +duration, and the number in the middle can be typed straight in when you know | ||
| 39 | +it. On the date picker, the left arrow steps back one day, which mostly serves | ||
| 40 | +to catch up on something forgotten yesterday. | ||
| 41 | + | ||
| 42 | +Every save brings you back to the Add screen, ready to record another one or to | ||
| 43 | +start a timer. | ||
| 44 | + | ||
| 45 | +## Start the timer | ||
| 46 | + | ||
| 47 | +The other card on the Add tab starts [a measurement](@/ecrans/minuteur.en.md) | ||
| 48 | +without asking anything: no category, no note. It stays visible in its banner at | ||
| 49 | +the top of every screen, and you keep moving around the application while it | ||
| 50 | +runs. | ||
| 51 | + | ||
| 52 | +Filing the measurement happens when you stop it: you pick the category, then | ||
| 53 | +the duration step opens with the measured minutes already filled in, still | ||
| 54 | +editable. Nothing is written until the entry is confirmed. | ||
| 55 | + | ||
| 56 | +## Statistics, after a few days | ||
| 57 | + | ||
| 58 | +{{<shot name="stats" alt="Statistics screen: a “My entries” link, the scope pills Maison and Temps avec Alix, then the weekly activity chart with one column per day." lang={lang} legende="It takes a week of entries for the screen to look like this." />}} | ||
| 59 | + | ||
| 60 | +On the first evening, [the six charts](@/ecrans/stats.en.md) carry only two or | ||
| 61 | +three segments. After a week the split becomes visible, and touching a segment | ||
| 62 | +opens the detail: who, which category, how long, what share. | ||
| 63 | + | ||
| 64 | +## Bring the others in | ||
| 65 | + | ||
| 66 | +{{<extrait name="x-invitation" alt="Invitation card: “noa invites you to join the team Copropriété”, with Accept and Decline buttons." lang={lang} legende="The invitation waits at the top of the invited person's settings." />}} | ||
| 67 | + | ||
| 68 | +In [the settings](@/ecrans/parametres.en.md), the invitation field takes the | ||
| 69 | +username of someone who already has an account. The card shows up at the top of | ||
| 70 | +their own settings, and accepting switches them onto the team straight away. | ||
| 71 | + | ||
| 72 | +For someone without an account yet, the “Generate a link” button produces an | ||
| 73 | +invitation link, valid for one hour, to send by whatever means you like. It | ||
| 74 | +takes them directly to signup inside this team. | ||
| 75 | + | ||
| 76 | +There is nothing to set up on the rights side: every member can rename the | ||
| 77 | +team, create categories, invite people, fix tasks. Only the time entries belong | ||
| 78 | +to whoever wrote them. | ||
| 79 | + | ||
| 80 | +## Tasks | ||
| 81 | + | ||
| 82 | +[Tasks](@/ecrans/taches.en.md) are not there to count time. They are the only | ||
| 83 | +other feature of the application: a very simple shared to-do list, with an | ||
| 84 | +activation date and assignees. | ||
| 85 | + | ||
| 86 | +## Set up the display | ||
| 87 | + | ||
| 88 | +Still in the settings, three choices that belong to the account rather than to | ||
| 89 | +the device: the interface language, the look between Organic and High contrast, | ||
| 90 | +and the chart format between Columns and Rows. They follow the account from one | ||
| 91 | +phone to the next, and two members of the same team can set them differently. | ||
| 92 | + | ||
| 93 | +## The same walkthrough on video | ||
| 94 | + | ||
| 95 | +These steps also exist as a film, played end to end on an empty team: | ||
| 96 | +[the Ex Ego demonstration](https://files.judu.bzh/ex-ego-readme-demo.mp4). | ||
added
docs/site-documentation/content/demarrage.md +101 -0 | new file mode 100644 | ||
| @@ -0,0 +1,101 @@ | ||
| 1 | ++++ | |
| 2 | +title = "Démarrage" | |
| 3 | +description = "Les premiers gestes dans une équipe qui ne contient encore rien." | |
| 4 | +weight = 1 | |
| 5 | ++++ | |
| 6 | + | |
| 7 | +Une équipe qui vient de naître est vide : aucune catégorie, aucun temps, aucune | |
| 8 | +tâche. L'onglet Ajouter le dit tout de suite, puisqu'il n'a rien à proposer tant | |
| 9 | +qu'aucune catégorie n'existe. On la remplit dans l'ordre de cette page, les | |
| 10 | +catégories d'abord, puis les temps, jusqu'au moment où les statistiques | |
| 11 | +commencent à dire quelque chose. | |
| 12 | + | |
| 13 | +Si tu as rejoint l'équipe par un lien d'invitation, elle tourne probablement | |
| 14 | +déjà et les catégories sont là : va directement [aux premiers | |
| 15 | +temps](#les-premiers-temps). | |
| 16 | + | |
| 17 | +## Créer trois ou quatre catégories | |
| 18 | + | |
| 19 | +{{<shot name="categories" alt="Écran Catégories : rappel que les catégories appartiennent à l'équipe, champ d'ajout, puis la liste des catégories avec leur couleur." lang={lang} legende="Un champ en haut, la liste qui se remplit en dessous." />}} | |
| 20 | + | |
| 21 | +Le lien « Gérer les catégories », sur l'onglet Ajouter, mène à l'écran de | |
| 22 | +création. | |
| 23 | + | |
| 24 | +Aucune catégorie n’est imposée, c’est à l’équipe de les créer. | |
| 25 | +Certain·e·s préféreront des catégories très précises, d’autres des catégories plus larges. | |
| 26 | +On en ajoute au fur et à mesure que le besoin se fait sentir, et on | |
| 27 | +[archive](@/ecrans/categories.md) celles qui ne servent pas sans perdre le temps | |
| 28 | +déjà compté dessus. | |
| 29 | + | |
| 30 | +La couleur ne se choisit pas : elle découle de l’ordre de création des catégories | |
| 31 | +et tout le monde voit donc la même. | |
| 32 | + | |
| 33 | +## Les premiers temps | |
| 34 | + | |
| 35 | +{{<shot name="ajouter-duree" alt="Étape 2 : nom de la catégorie choisie, compteur de minutes avec boutons moins et plus, raccourcis 5, 15, 30, 45 minutes et 1 h, sélecteur de date, bouton Ajouter du temps." lang={lang} legende="La durée, la date, et c'est enregistré." />}} | |
| 36 | + | |
| 37 | +De retour sur l'onglet Ajouter, « Ajouter du temps » demande la catégorie, puis | |
| 38 | +[une durée et une date](@/ecrans/duree.md). | |
| 39 | + | |
| 40 | +Les boutons « plus » et « moins » avancent de cinq minutes, les raccourcis posent une | |
| 41 | +durée ronde, et le nombre au centre se tape directement quand on le connaît. | |
| 42 | +Sur le choix de la date, la flèche de gauche recule d'un jour. | |
| 43 | +Ça permet surtout de rattraper un oubli de la veille. | |
| 44 | + | |
| 45 | +Chaque enregistrement ramène à l’écran « Ajouter », pour pouvoir en enregistrer un nouveau | |
| 46 | +ou lancer un minuteur. | |
| 47 | + | |
| 48 | +## Lancer le minuteur | |
| 49 | + | |
| 50 | +L'autre carte de l'onglet Ajouter démarre [une mesure](@/ecrans/minuteur.md) | |
| 51 | +sans rien demander : ni catégorie, ni note. Elle reste visible dans son bandeau | |
| 52 | +en haut de chaque écran, et on continue à se promener dans l'application | |
| 53 | +pendant qu'elle tourne. | |
| 54 | + | |
| 55 | +C'est en l'arrêtant qu'on classifie la mesure : on choisit la catégorie, puis | |
| 56 | +l'étape de la durée s'ouvre avec les minutes mesurées déjà remplies, qu'on peut | |
| 57 | +encore corriger. Rien n'est écrit tant que la saisie n'est pas validée. | |
| 58 | + | |
| 59 | +## Les statistiques après quelques jours | |
| 60 | + | |
| 61 | +{{<shot name="stats" alt="Écran Statistiques : lien « Mes saisies », pastilles de scopes Maison et Temps avec Alix, puis le graphique de l'activité de la semaine, une colonne par jour." lang={lang} legende="Il faut une semaine de saisies pour que l'écran ressemble à ça." />}} | |
| 62 | + | |
| 63 | +Le premier soir, [les six graphiques](@/ecrans/stats.md) portent seulement deux ou trois | |
| 64 | +segments. | |
| 65 | +Au bout d'une semaine, la répartition commence à se voir, et toucher un segment ouvre le détail : qui, quelle | |
| 66 | +catégorie, combien de temps, quelle part. | |
| 67 | + | |
| 68 | +## Faire venir les autres | |
| 69 | + | |
| 70 | +{{<extrait name="x-invitation" alt="Carte d'invitation : « noa t'invite à rejoindre l'équipe Copropriété », boutons Accepter et Refuser." lang={lang} legende="L'invitation attend en haut des réglages de l'invité." />}} | |
| 71 | + | |
| 72 | +Dans [les réglages](@/ecrans/parametres.md), le champ d'invitation prend | |
| 73 | +l'identifiant de quelqu'un qui a déjà un compte. La carte apparaît en haut de | |
| 74 | +ses propres réglages, et accepter le fait basculer sur l'équipe dans la foulée. | |
| 75 | + | |
| 76 | +Pour quelqu'un qui n'a pas encore de compte, le bouton « Générer un lien » | |
| 77 | +génère un lien d'invitation valable une heure, à envoyer par le moyen de son | |
| 78 | +choix. Il amène directement à l'inscription dans cette équipe. | |
| 79 | + | |
| 80 | +Il n'y a rien à régler du côté des droits : tous les membres peuvent renommer | |
| 81 | +l'équipe, créer des catégories, inviter, corriger les tâches. Seules les | |
| 82 | +saisies de temps appartiennent à leur auteur. | |
| 83 | + | |
| 84 | +## Les tâches | |
| 85 | + | |
| 86 | +[Les tâches](@/ecrans/taches.md) ne servent pas à compter du temps. | |
| 87 | +C’est la seule autre fonctionnalité de l’application : une liste très simple de tâches partagée, avec | |
| 88 | +date d’activation et assignation. | |
| 89 | + | |
| 90 | +## Régler l'affichage | |
| 91 | + | |
| 92 | +Toujours dans les réglages, trois choix qui appartiennent au compte et non à | |
| 93 | +l'appareil : la langue de l'interface, l'apparence entre Organic et Contraste | |
| 94 | +élevé, et le format des graphiques entre Colonnes et Lignes. Ils suivent le | |
| 95 | +compte d'un téléphone à l'autre, et deux membres de la même équipe peuvent les | |
| 96 | +régler différemment. | |
| 97 | + | |
| 98 | +## Le même parcours en vidéo | |
| 99 | + | |
| 100 | +Ces étapes existent aussi en film, jouées d'affilée sur une équipe vide : | |
| 101 | +[la démonstration d'Ex Ego](https://files.judu.bzh/ex-ego-readme-demo.mp4). | |
| new file mode 100644 | |||
| @@ -0,0 +1,101 @@ | |||
| 1 | ++++ | ||
| 2 | +title = "Démarrage" | ||
| 3 | +description = "Les premiers gestes dans une équipe qui ne contient encore rien." | ||
| 4 | +weight = 1 | ||
| 5 | ++++ | ||
| 6 | + | ||
| 7 | +Une équipe qui vient de naître est vide : aucune catégorie, aucun temps, aucune | ||
| 8 | +tâche. L'onglet Ajouter le dit tout de suite, puisqu'il n'a rien à proposer tant | ||
| 9 | +qu'aucune catégorie n'existe. On la remplit dans l'ordre de cette page, les | ||
| 10 | +catégories d'abord, puis les temps, jusqu'au moment où les statistiques | ||
| 11 | +commencent à dire quelque chose. | ||
| 12 | + | ||
| 13 | +Si tu as rejoint l'équipe par un lien d'invitation, elle tourne probablement | ||
| 14 | +déjà et les catégories sont là : va directement [aux premiers | ||
| 15 | +temps](#les-premiers-temps). | ||
| 16 | + | ||
| 17 | +## Créer trois ou quatre catégories | ||
| 18 | + | ||
| 19 | +{{<shot name="categories" alt="Écran Catégories : rappel que les catégories appartiennent à l'équipe, champ d'ajout, puis la liste des catégories avec leur couleur." lang={lang} legende="Un champ en haut, la liste qui se remplit en dessous." />}} | ||
| 20 | + | ||
| 21 | +Le lien « Gérer les catégories », sur l'onglet Ajouter, mène à l'écran de | ||
| 22 | +création. | ||
| 23 | + | ||
| 24 | +Aucune catégorie n’est imposée, c’est à l’équipe de les créer. | ||
| 25 | +Certain·e·s préféreront des catégories très précises, d’autres des catégories plus larges. | ||
| 26 | +On en ajoute au fur et à mesure que le besoin se fait sentir, et on | ||
| 27 | +[archive](@/ecrans/categories.md) celles qui ne servent pas sans perdre le temps | ||
| 28 | +déjà compté dessus. | ||
| 29 | + | ||
| 30 | +La couleur ne se choisit pas : elle découle de l’ordre de création des catégories | ||
| 31 | +et tout le monde voit donc la même. | ||
| 32 | + | ||
| 33 | +## Les premiers temps | ||
| 34 | + | ||
| 35 | +{{<shot name="ajouter-duree" alt="Étape 2 : nom de la catégorie choisie, compteur de minutes avec boutons moins et plus, raccourcis 5, 15, 30, 45 minutes et 1 h, sélecteur de date, bouton Ajouter du temps." lang={lang} legende="La durée, la date, et c'est enregistré." />}} | ||
| 36 | + | ||
| 37 | +De retour sur l'onglet Ajouter, « Ajouter du temps » demande la catégorie, puis | ||
| 38 | +[une durée et une date](@/ecrans/duree.md). | ||
| 39 | + | ||
| 40 | +Les boutons « plus » et « moins » avancent de cinq minutes, les raccourcis posent une | ||
| 41 | +durée ronde, et le nombre au centre se tape directement quand on le connaît. | ||
| 42 | +Sur le choix de la date, la flèche de gauche recule d'un jour. | ||
| 43 | +Ça permet surtout de rattraper un oubli de la veille. | ||
| 44 | + | ||
| 45 | +Chaque enregistrement ramène à l’écran « Ajouter », pour pouvoir en enregistrer un nouveau | ||
| 46 | +ou lancer un minuteur. | ||
| 47 | + | ||
| 48 | +## Lancer le minuteur | ||
| 49 | + | ||
| 50 | +L'autre carte de l'onglet Ajouter démarre [une mesure](@/ecrans/minuteur.md) | ||
| 51 | +sans rien demander : ni catégorie, ni note. Elle reste visible dans son bandeau | ||
| 52 | +en haut de chaque écran, et on continue à se promener dans l'application | ||
| 53 | +pendant qu'elle tourne. | ||
| 54 | + | ||
| 55 | +C'est en l'arrêtant qu'on classifie la mesure : on choisit la catégorie, puis | ||
| 56 | +l'étape de la durée s'ouvre avec les minutes mesurées déjà remplies, qu'on peut | ||
| 57 | +encore corriger. Rien n'est écrit tant que la saisie n'est pas validée. | ||
| 58 | + | ||
| 59 | +## Les statistiques après quelques jours | ||
| 60 | + | ||
| 61 | +{{<shot name="stats" alt="Écran Statistiques : lien « Mes saisies », pastilles de scopes Maison et Temps avec Alix, puis le graphique de l'activité de la semaine, une colonne par jour." lang={lang} legende="Il faut une semaine de saisies pour que l'écran ressemble à ça." />}} | ||
| 62 | + | ||
| 63 | +Le premier soir, [les six graphiques](@/ecrans/stats.md) portent seulement deux ou trois | ||
| 64 | +segments. | ||
| 65 | +Au bout d'une semaine, la répartition commence à se voir, et toucher un segment ouvre le détail : qui, quelle | ||
| 66 | +catégorie, combien de temps, quelle part. | ||
| 67 | + | ||
| 68 | +## Faire venir les autres | ||
| 69 | + | ||
| 70 | +{{<extrait name="x-invitation" alt="Carte d'invitation : « noa t'invite à rejoindre l'équipe Copropriété », boutons Accepter et Refuser." lang={lang} legende="L'invitation attend en haut des réglages de l'invité." />}} | ||
| 71 | + | ||
| 72 | +Dans [les réglages](@/ecrans/parametres.md), le champ d'invitation prend | ||
| 73 | +l'identifiant de quelqu'un qui a déjà un compte. La carte apparaît en haut de | ||
| 74 | +ses propres réglages, et accepter le fait basculer sur l'équipe dans la foulée. | ||
| 75 | + | ||
| 76 | +Pour quelqu'un qui n'a pas encore de compte, le bouton « Générer un lien » | ||
| 77 | +génère un lien d'invitation valable une heure, à envoyer par le moyen de son | ||
| 78 | +choix. Il amène directement à l'inscription dans cette équipe. | ||
| 79 | + | ||
| 80 | +Il n'y a rien à régler du côté des droits : tous les membres peuvent renommer | ||
| 81 | +l'équipe, créer des catégories, inviter, corriger les tâches. Seules les | ||
| 82 | +saisies de temps appartiennent à leur auteur. | ||
| 83 | + | ||
| 84 | +## Les tâches | ||
| 85 | + | ||
| 86 | +[Les tâches](@/ecrans/taches.md) ne servent pas à compter du temps. | ||
| 87 | +C’est la seule autre fonctionnalité de l’application : une liste très simple de tâches partagée, avec | ||
| 88 | +date d’activation et assignation. | ||
| 89 | + | ||
| 90 | +## Régler l'affichage | ||
| 91 | + | ||
| 92 | +Toujours dans les réglages, trois choix qui appartiennent au compte et non à | ||
| 93 | +l'appareil : la langue de l'interface, l'apparence entre Organic et Contraste | ||
| 94 | +élevé, et le format des graphiques entre Colonnes et Lignes. Ils suivent le | ||
| 95 | +compte d'un téléphone à l'autre, et deux membres de la même équipe peuvent les | ||
| 96 | +régler différemment. | ||
| 97 | + | ||
| 98 | +## Le même parcours en vidéo | ||
| 99 | + | ||
| 100 | +Ces étapes existent aussi en film, jouées d'affilée sur une équipe vide : | ||
| 101 | +[la démonstration d'Ex Ego](https://files.judu.bzh/ex-ego-readme-demo.mp4). | ||
added
docs/site-documentation/content/demarrage.pt-br.md +98 -0 | new file mode 100644 | ||
| @@ -0,0 +1,98 @@ | ||
| 1 | ++++ | |
| 2 | +title = "Primeiros passos" | |
| 3 | +description = "Os primeiros gestos numa equipe que ainda não tem nada dentro." | |
| 4 | +weight = 1 | |
| 5 | ++++ | |
| 6 | + | |
| 7 | +Uma equipe recém-nascida está vazia: nenhuma categoria, nenhum tempo, nenhuma | |
| 8 | +tarefa. A aba Adicionar diz isso na hora, já que não tem nada a propor enquanto | |
| 9 | +nenhuma categoria existir. Ela se preenche na ordem desta página, as | |
| 10 | +categorias primeiro, depois os tempos, até o momento em que as estatísticas | |
| 11 | +começam a dizer alguma coisa. | |
| 12 | + | |
| 13 | +Se você entrou na equipe por um link de convite, ela provavelmente já está | |
| 14 | +rodando e as categorias estão lá: vá direto para [os primeiros | |
| 15 | +tempos](#os-primeiros-tempos). | |
| 16 | + | |
| 17 | +## Criar três ou quatro categorias | |
| 18 | + | |
| 19 | +{{<shot name="categories" alt="Tela Categorias: lembrete de que as categorias pertencem à equipe, campo de adição, depois a lista das categorias com sua cor." lang={lang} legende="Um campo em cima, a lista se enchendo embaixo." />}} | |
| 20 | + | |
| 21 | +O link “Gerenciar categorias”, na aba Adicionar, leva à tela de criação. | |
| 22 | + | |
| 23 | +Nenhuma categoria é imposta: é a equipe que cria as suas. Algumas pessoas vão | |
| 24 | +preferir categorias bem precisas, outras, categorias mais amplas. A gente | |
| 25 | +acrescenta conforme a necessidade aparece, e | |
| 26 | +[arquiva](@/ecrans/categories.pt-br.md) as que não servem sem perder o tempo já | |
| 27 | +contado nelas. | |
| 28 | + | |
| 29 | +A cor não se escolhe: ela vem da ordem de criação das categorias, e todo mundo | |
| 30 | +vê, portanto, a mesma. | |
| 31 | + | |
| 32 | +## Os primeiros tempos | |
| 33 | + | |
| 34 | +{{<shot name="ajouter-duree" alt="Etapa 2: nome da categoria escolhida, contador de minutos com botões menos e mais, atalhos de 5, 15, 30, 45 minutos e 1 h, seletor de data, botão Registrar tempo." lang={lang} legende="A duração, a data, e está registrado." />}} | |
| 35 | + | |
| 36 | +De volta à aba Adicionar, “Registrar tempo” pede a categoria, depois [uma | |
| 37 | +duração e uma data](@/ecrans/duree.pt-br.md). | |
| 38 | + | |
| 39 | +Os botões “mais” e “menos” andam de cinco em cinco minutos, os atalhos colocam | |
| 40 | +uma duração redonda, e o número do meio se digita direto quando você o conhece. | |
| 41 | +Na escolha da data, a seta da esquerda volta um dia, o que serve sobretudo para | |
| 42 | +recuperar um esquecimento de ontem. | |
| 43 | + | |
| 44 | +Cada registro traz você de volta à tela “Adicionar”, para registrar outro ou | |
| 45 | +iniciar um cronômetro. | |
| 46 | + | |
| 47 | +## Iniciar o cronômetro | |
| 48 | + | |
| 49 | +O outro cartão da aba Adicionar começa [uma | |
| 50 | +medição](@/ecrans/minuteur.pt-br.md) sem perguntar nada: nem categoria, nem | |
| 51 | +observação. Ela continua visível na sua faixa no alto de cada tela, e você | |
| 52 | +segue passeando pelo aplicativo enquanto ela roda. | |
| 53 | + | |
| 54 | +A medição só é classificada ao parar: você escolhe a categoria, e aí a etapa da | |
| 55 | +duração abre com os minutos medidos já preenchidos, ainda editáveis. Nada é | |
| 56 | +gravado enquanto o registro não for confirmado. | |
| 57 | + | |
| 58 | +## As estatísticas depois de alguns dias | |
| 59 | + | |
| 60 | +{{<shot name="stats" alt="Tela Estatísticas: link “Meus registros”, pastilhas de escopo Maison e Temps avec Alix, depois o gráfico da atividade da semana, uma coluna por dia." lang={lang} legende="É preciso uma semana de registros para a tela ficar assim." />}} | |
| 61 | + | |
| 62 | +Na primeira noite, [os seis gráficos](@/ecrans/stats.pt-br.md) carregam só dois | |
| 63 | +ou três segmentos. Depois de uma semana a divisão começa a aparecer, e tocar num | |
| 64 | +segmento abre o detalhe: quem, qual categoria, quanto tempo, que proporção. | |
| 65 | + | |
| 66 | +## Trazer as outras pessoas | |
| 67 | + | |
| 68 | +{{<extrait name="x-invitation" alt="Cartão de convite: “noa convida você para entrar na equipe Copropriété”, botões Aceitar e Recusar." lang={lang} legende="O convite espera no alto das configurações de quem foi convidado." />}} | |
| 69 | + | |
| 70 | +Nas [configurações](@/ecrans/parametres.pt-br.md), o campo de convite recebe o | |
| 71 | +nome de usuário de alguém que já tem conta. O cartão aparece no alto das | |
| 72 | +configurações dessa pessoa, e aceitar já muda para a equipe. | |
| 73 | + | |
| 74 | +Para quem ainda não tem conta, o botão “Gerar um link” fabrica um link de | |
| 75 | +convite que vale uma hora, para enviar do jeito que você quiser. Ele leva | |
| 76 | +direto ao cadastro dentro desta equipe. | |
| 77 | + | |
| 78 | +Não há nada a ajustar do lado dos direitos: todos os membros podem renomear a | |
| 79 | +equipe, criar categorias, convidar, corrigir tarefas. Só os registros de tempo | |
| 80 | +pertencem a quem os escreveu. | |
| 81 | + | |
| 82 | +## As tarefas | |
| 83 | + | |
| 84 | +[As tarefas](@/ecrans/taches.pt-br.md) não servem para contar tempo. São a | |
| 85 | +única outra funcionalidade do aplicativo: uma lista de tarefas compartilhada, | |
| 86 | +bem simples, com data de ativação e atribuição. | |
| 87 | + | |
| 88 | +## Ajustar a exibição | |
| 89 | + | |
| 90 | +Ainda nas configurações, três escolhas que pertencem à conta e não ao aparelho: | |
| 91 | +o idioma da interface, a aparência entre Organic e Alto contraste, e o formato | |
| 92 | +dos gráficos entre Colunas e Linhas. Eles seguem a conta de um celular para | |
| 93 | +outro, e dois membros da mesma equipe podem ajustá-los de maneiras diferentes. | |
| 94 | + | |
| 95 | +## O mesmo percurso em vídeo | |
| 96 | + | |
| 97 | +Essas etapas também existem em filme, jogadas de ponta a ponta numa equipe | |
| 98 | +vazia: [a demonstração do Ex Ego](https://files.judu.bzh/ex-ego-readme-demo.mp4). | |
| new file mode 100644 | |||
| @@ -0,0 +1,98 @@ | |||
| 1 | ++++ | ||
| 2 | +title = "Primeiros passos" | ||
| 3 | +description = "Os primeiros gestos numa equipe que ainda não tem nada dentro." | ||
| 4 | +weight = 1 | ||
| 5 | ++++ | ||
| 6 | + | ||
| 7 | +Uma equipe recém-nascida está vazia: nenhuma categoria, nenhum tempo, nenhuma | ||
| 8 | +tarefa. A aba Adicionar diz isso na hora, já que não tem nada a propor enquanto | ||
| 9 | +nenhuma categoria existir. Ela se preenche na ordem desta página, as | ||
| 10 | +categorias primeiro, depois os tempos, até o momento em que as estatísticas | ||
| 11 | +começam a dizer alguma coisa. | ||
| 12 | + | ||
| 13 | +Se você entrou na equipe por um link de convite, ela provavelmente já está | ||
| 14 | +rodando e as categorias estão lá: vá direto para [os primeiros | ||
| 15 | +tempos](#os-primeiros-tempos). | ||
| 16 | + | ||
| 17 | +## Criar três ou quatro categorias | ||
| 18 | + | ||
| 19 | +{{<shot name="categories" alt="Tela Categorias: lembrete de que as categorias pertencem à equipe, campo de adição, depois a lista das categorias com sua cor." lang={lang} legende="Um campo em cima, a lista se enchendo embaixo." />}} | ||
| 20 | + | ||
| 21 | +O link “Gerenciar categorias”, na aba Adicionar, leva à tela de criação. | ||
| 22 | + | ||
| 23 | +Nenhuma categoria é imposta: é a equipe que cria as suas. Algumas pessoas vão | ||
| 24 | +preferir categorias bem precisas, outras, categorias mais amplas. A gente | ||
| 25 | +acrescenta conforme a necessidade aparece, e | ||
| 26 | +[arquiva](@/ecrans/categories.pt-br.md) as que não servem sem perder o tempo já | ||
| 27 | +contado nelas. | ||
| 28 | + | ||
| 29 | +A cor não se escolhe: ela vem da ordem de criação das categorias, e todo mundo | ||
| 30 | +vê, portanto, a mesma. | ||
| 31 | + | ||
| 32 | +## Os primeiros tempos | ||
| 33 | + | ||
| 34 | +{{<shot name="ajouter-duree" alt="Etapa 2: nome da categoria escolhida, contador de minutos com botões menos e mais, atalhos de 5, 15, 30, 45 minutos e 1 h, seletor de data, botão Registrar tempo." lang={lang} legende="A duração, a data, e está registrado." />}} | ||
| 35 | + | ||
| 36 | +De volta à aba Adicionar, “Registrar tempo” pede a categoria, depois [uma | ||
| 37 | +duração e uma data](@/ecrans/duree.pt-br.md). | ||
| 38 | + | ||
| 39 | +Os botões “mais” e “menos” andam de cinco em cinco minutos, os atalhos colocam | ||
| 40 | +uma duração redonda, e o número do meio se digita direto quando você o conhece. | ||
| 41 | +Na escolha da data, a seta da esquerda volta um dia, o que serve sobretudo para | ||
| 42 | +recuperar um esquecimento de ontem. | ||
| 43 | + | ||
| 44 | +Cada registro traz você de volta à tela “Adicionar”, para registrar outro ou | ||
| 45 | +iniciar um cronômetro. | ||
| 46 | + | ||
| 47 | +## Iniciar o cronômetro | ||
| 48 | + | ||
| 49 | +O outro cartão da aba Adicionar começa [uma | ||
| 50 | +medição](@/ecrans/minuteur.pt-br.md) sem perguntar nada: nem categoria, nem | ||
| 51 | +observação. Ela continua visível na sua faixa no alto de cada tela, e você | ||
| 52 | +segue passeando pelo aplicativo enquanto ela roda. | ||
| 53 | + | ||
| 54 | +A medição só é classificada ao parar: você escolhe a categoria, e aí a etapa da | ||
| 55 | +duração abre com os minutos medidos já preenchidos, ainda editáveis. Nada é | ||
| 56 | +gravado enquanto o registro não for confirmado. | ||
| 57 | + | ||
| 58 | +## As estatísticas depois de alguns dias | ||
| 59 | + | ||
| 60 | +{{<shot name="stats" alt="Tela Estatísticas: link “Meus registros”, pastilhas de escopo Maison e Temps avec Alix, depois o gráfico da atividade da semana, uma coluna por dia." lang={lang} legende="É preciso uma semana de registros para a tela ficar assim." />}} | ||
| 61 | + | ||
| 62 | +Na primeira noite, [os seis gráficos](@/ecrans/stats.pt-br.md) carregam só dois | ||
| 63 | +ou três segmentos. Depois de uma semana a divisão começa a aparecer, e tocar num | ||
| 64 | +segmento abre o detalhe: quem, qual categoria, quanto tempo, que proporção. | ||
| 65 | + | ||
| 66 | +## Trazer as outras pessoas | ||
| 67 | + | ||
| 68 | +{{<extrait name="x-invitation" alt="Cartão de convite: “noa convida você para entrar na equipe Copropriété”, botões Aceitar e Recusar." lang={lang} legende="O convite espera no alto das configurações de quem foi convidado." />}} | ||
| 69 | + | ||
| 70 | +Nas [configurações](@/ecrans/parametres.pt-br.md), o campo de convite recebe o | ||
| 71 | +nome de usuário de alguém que já tem conta. O cartão aparece no alto das | ||
| 72 | +configurações dessa pessoa, e aceitar já muda para a equipe. | ||
| 73 | + | ||
| 74 | +Para quem ainda não tem conta, o botão “Gerar um link” fabrica um link de | ||
| 75 | +convite que vale uma hora, para enviar do jeito que você quiser. Ele leva | ||
| 76 | +direto ao cadastro dentro desta equipe. | ||
| 77 | + | ||
| 78 | +Não há nada a ajustar do lado dos direitos: todos os membros podem renomear a | ||
| 79 | +equipe, criar categorias, convidar, corrigir tarefas. Só os registros de tempo | ||
| 80 | +pertencem a quem os escreveu. | ||
| 81 | + | ||
| 82 | +## As tarefas | ||
| 83 | + | ||
| 84 | +[As tarefas](@/ecrans/taches.pt-br.md) não servem para contar tempo. São a | ||
| 85 | +única outra funcionalidade do aplicativo: uma lista de tarefas compartilhada, | ||
| 86 | +bem simples, com data de ativação e atribuição. | ||
| 87 | + | ||
| 88 | +## Ajustar a exibição | ||
| 89 | + | ||
| 90 | +Ainda nas configurações, três escolhas que pertencem à conta e não ao aparelho: | ||
| 91 | +o idioma da interface, a aparência entre Organic e Alto contraste, e o formato | ||
| 92 | +dos gráficos entre Colunas e Linhas. Eles seguem a conta de um celular para | ||
| 93 | +outro, e dois membros da mesma equipe podem ajustá-los de maneiras diferentes. | ||
| 94 | + | ||
| 95 | +## O mesmo percurso em vídeo | ||
| 96 | + | ||
| 97 | +Essas etapas também existem em filme, jogadas de ponta a ponta numa equipe | ||
| 98 | +vazia: [a demonstração do Ex Ego](https://files.judu.bzh/ex-ego-readme-demo.mp4). | ||
added
docs/site-documentation/content/ecrans/_index.pt-br.md +9 -0 | new file mode 100644 | ||
| @@ -0,0 +1,9 @@ | ||
| 1 | ++++ | |
| 2 | +title = "As telas" | |
| 3 | +description = "A volta completa pelo aplicativo, tela por tela, com a intenção de cada uma." | |
| 4 | +weight = 1 | |
| 5 | +sort_by = "weight" | |
| 6 | ++++ | |
| 7 | + | |
| 8 | +O aplicativo cabe em quatro abas e um punhado de telas secundárias, uma por | |
| 9 | +página aqui embaixo. | |
| new file mode 100644 | |||
| @@ -0,0 +1,9 @@ | |||
| 1 | ++++ | ||
| 2 | +title = "As telas" | ||
| 3 | +description = "A volta completa pelo aplicativo, tela por tela, com a intenção de cada uma." | ||
| 4 | +weight = 1 | ||
| 5 | +sort_by = "weight" | ||
| 6 | ++++ | ||
| 7 | + | ||
| 8 | +O aplicativo cabe em quatro abas e um punhado de telas secundárias, uma por | ||
| 9 | +página aqui embaixo. | ||
added
docs/site-documentation/content/ecrans/ajouter.pt-br.md +35 -0 | new file mode 100644 | ||
| @@ -0,0 +1,35 @@ | ||
| 1 | ++++ | |
| 2 | +title = "Adicionar tempo" | |
| 3 | +description = "A encruzilhada da aba Adicionar: contar a partir de agora, ou anotar o que já foi feito." | |
| 4 | +weight = 3 | |
| 5 | ++++ | |
| 6 | + | |
| 7 | +{{<shot name="ajouter-choix" alt="Tela Adicionar: dois cartões grandes, “Iniciar o cronômetro” e “Registrar tempo”, depois um link “Gerenciar categorias”." lang={lang} legende="Duas maneiras de contar: durante, ou depois." />}} | |
| 8 | + | |
| 9 | +A aba Adicionar abre com uma pergunta curta: eu conto a partir de agora, ou | |
| 10 | +anoto uma coisa que já foi feita? | |
| 11 | + | |
| 12 | +## Por que dois caminhos | |
| 13 | + | |
| 14 | +Duas situações: | |
| 15 | +- Estou prestes a fazer alguma coisa e lembro de medir: aí eu inicio o | |
| 16 | + cronômetro. | |
| 17 | +- Já fiz alguma coisa, olhei rápido a hora quando comecei, e estimo com cinco | |
| 18 | + minutos de folga quanto tempo levou. | |
| 19 | + | |
| 20 | +O cronômetro não pede a categoria na largada: você escolhe ao parar. Isso é de | |
| 21 | +propósito, porque na hora de começar uma tarefa a gente quer apertar e ir, e | |
| 22 | +porque a gente sempre sabe melhor o que fez depois de ter feito. | |
| 23 | + | |
| 24 | +## Gerenciar categorias | |
| 25 | + | |
| 26 | +O link para a gestão das categorias mora nesta tela, além dos ajustes. Ele | |
| 27 | +também fica na página de escolha de categoria, bem no momento em que você | |
| 28 | +percebe que falta uma. | |
| 29 | + | |
| 30 | +## Quando já tem um cronômetro rodando | |
| 31 | + | |
| 32 | +Se um cronômetro está em andamento na equipe ativa, esta tela de escolha some: | |
| 33 | +a aba Adicionar vira direto [a tela do cronômetro](@/ecrans/minuteur.pt-br.md). | |
| 34 | +Não dá para ter duas medições ao mesmo tempo: melhor mostrar a que está rodando | |
| 35 | +do que oferecer uma segunda. | |
| new file mode 100644 | |||
| @@ -0,0 +1,35 @@ | |||
| 1 | ++++ | ||
| 2 | +title = "Adicionar tempo" | ||
| 3 | +description = "A encruzilhada da aba Adicionar: contar a partir de agora, ou anotar o que já foi feito." | ||
| 4 | +weight = 3 | ||
| 5 | ++++ | ||
| 6 | + | ||
| 7 | +{{<shot name="ajouter-choix" alt="Tela Adicionar: dois cartões grandes, “Iniciar o cronômetro” e “Registrar tempo”, depois um link “Gerenciar categorias”." lang={lang} legende="Duas maneiras de contar: durante, ou depois." />}} | ||
| 8 | + | ||
| 9 | +A aba Adicionar abre com uma pergunta curta: eu conto a partir de agora, ou | ||
| 10 | +anoto uma coisa que já foi feita? | ||
| 11 | + | ||
| 12 | +## Por que dois caminhos | ||
| 13 | + | ||
| 14 | +Duas situações: | ||
| 15 | +- Estou prestes a fazer alguma coisa e lembro de medir: aí eu inicio o | ||
| 16 | + cronômetro. | ||
| 17 | +- Já fiz alguma coisa, olhei rápido a hora quando comecei, e estimo com cinco | ||
| 18 | + minutos de folga quanto tempo levou. | ||
| 19 | + | ||
| 20 | +O cronômetro não pede a categoria na largada: você escolhe ao parar. Isso é de | ||
| 21 | +propósito, porque na hora de começar uma tarefa a gente quer apertar e ir, e | ||
| 22 | +porque a gente sempre sabe melhor o que fez depois de ter feito. | ||
| 23 | + | ||
| 24 | +## Gerenciar categorias | ||
| 25 | + | ||
| 26 | +O link para a gestão das categorias mora nesta tela, além dos ajustes. Ele | ||
| 27 | +também fica na página de escolha de categoria, bem no momento em que você | ||
| 28 | +percebe que falta uma. | ||
| 29 | + | ||
| 30 | +## Quando já tem um cronômetro rodando | ||
| 31 | + | ||
| 32 | +Se um cronômetro está em andamento na equipe ativa, esta tela de escolha some: | ||
| 33 | +a aba Adicionar vira direto [a tela do cronômetro](@/ecrans/minuteur.pt-br.md). | ||
| 34 | +Não dá para ter duas medições ao mesmo tempo: melhor mostrar a que está rodando | ||
| 35 | +do que oferecer uma segunda. | ||
added
docs/site-documentation/content/ecrans/cadre.pt-br.md +43 -0 | new file mode 100644 | ||
| @@ -0,0 +1,43 @@ | ||
| 1 | ++++ | |
| 2 | +title = "A moldura comum" | |
| 3 | +description = "O cabeçalho, a barra de abas e a folha de troca de equipe, presentes em todo lugar." | |
| 4 | +weight = 1 | |
| 5 | ++++ | |
| 6 | + | |
| 7 | +Todas as páginas, menos a de entrada e as de erro, dividem a mesma estrutura. | |
| 8 | +Aprender uma vez basta para se achar em qualquer lugar. | |
| 9 | + | |
| 10 | +## Em cima: onde estou e quem sou | |
| 11 | + | |
| 12 | +{{<extrait name="x-entete" alt="Cabeçalho: pastilha verde da equipe Maison à esquerda, nome de usuário à direita, título da página embaixo." lang={lang} legende="O cabeçalho responde a duas perguntas antes mesmo de você ler a página." />}} | |
| 13 | + | |
| 14 | +A pastilha da esquerda leva o nome da equipe ativa, tingida com a cor dela. | |
| 15 | +Essa cor é calculada a partir do identificador da equipe: não se ajusta e nunca | |
| 16 | +muda. | |
| 17 | + | |
| 18 | +Nenhum registro deve ir parar na equipe errada por distração: por isso a equipe | |
| 19 | +e a conta ficam sempre à vista. | |
| 20 | + | |
| 21 | +## Trocar de equipe | |
| 22 | + | |
| 23 | +Tocar na pastilha abre uma folha que sobe de baixo e lista as equipes de que | |
| 24 | +você faz parte. | |
| 25 | + | |
| 26 | +{{<shot name="equipes" alt="Folha “Trocar de equipe” aberta por cima da tela Adicionar, com a lista das equipes." lang={lang} legende="A folha é uma âncora dentro da página: ela abre mesmo sem JavaScript." />}} | |
| 27 | + | |
| 28 | +A equipe ativa não fica guardada no banco, é um ajuste do aparelho. O celular | |
| 29 | +pode então continuar em “Maison” enquanto o notebook está na associação, sem | |
| 30 | +que os dois se atrapalhem. | |
| 31 | + | |
| 32 | +## Embaixo: as quatro abas | |
| 33 | + | |
| 34 | +{{<extrait name="x-tabbar" alt="Barra de abas: Adicionar, Stats, Tarefas com um contador 3, Ajustes com um contador 1." lang={lang} legende="Os contadores contam as tarefas a fazer e os convites recebidos." />}} | |
| 35 | + | |
| 36 | +A barra fica colada embaixo, ao alcance do polegar. Só quatro abas, arrumadas | |
| 37 | +por frequência de uso: a gente adiciona tempo todo dia, olha as estatísticas | |
| 38 | +uma vez por semana, as tarefas de vez em quando, e os ajustes quase nunca. | |
| 39 | + | |
| 40 | +Duas telas importantes não têm aba, de propósito. “Meus tempos” se alcança | |
| 41 | +pelas estatísticas e pelos ajustes, porque a gente vai lá para corrigir, não | |
| 42 | +para consultar. “Categorias” se alcança pela aba Adicionar, ali onde a falta de | |
| 43 | +uma categoria aparece. | |
| new file mode 100644 | |||
| @@ -0,0 +1,43 @@ | |||
| 1 | ++++ | ||
| 2 | +title = "A moldura comum" | ||
| 3 | +description = "O cabeçalho, a barra de abas e a folha de troca de equipe, presentes em todo lugar." | ||
| 4 | +weight = 1 | ||
| 5 | ++++ | ||
| 6 | + | ||
| 7 | +Todas as páginas, menos a de entrada e as de erro, dividem a mesma estrutura. | ||
| 8 | +Aprender uma vez basta para se achar em qualquer lugar. | ||
| 9 | + | ||
| 10 | +## Em cima: onde estou e quem sou | ||
| 11 | + | ||
| 12 | +{{<extrait name="x-entete" alt="Cabeçalho: pastilha verde da equipe Maison à esquerda, nome de usuário à direita, título da página embaixo." lang={lang} legende="O cabeçalho responde a duas perguntas antes mesmo de você ler a página." />}} | ||
| 13 | + | ||
| 14 | +A pastilha da esquerda leva o nome da equipe ativa, tingida com a cor dela. | ||
| 15 | +Essa cor é calculada a partir do identificador da equipe: não se ajusta e nunca | ||
| 16 | +muda. | ||
| 17 | + | ||
| 18 | +Nenhum registro deve ir parar na equipe errada por distração: por isso a equipe | ||
| 19 | +e a conta ficam sempre à vista. | ||
| 20 | + | ||
| 21 | +## Trocar de equipe | ||
| 22 | + | ||
| 23 | +Tocar na pastilha abre uma folha que sobe de baixo e lista as equipes de que | ||
| 24 | +você faz parte. | ||
| 25 | + | ||
| 26 | +{{<shot name="equipes" alt="Folha “Trocar de equipe” aberta por cima da tela Adicionar, com a lista das equipes." lang={lang} legende="A folha é uma âncora dentro da página: ela abre mesmo sem JavaScript." />}} | ||
| 27 | + | ||
| 28 | +A equipe ativa não fica guardada no banco, é um ajuste do aparelho. O celular | ||
| 29 | +pode então continuar em “Maison” enquanto o notebook está na associação, sem | ||
| 30 | +que os dois se atrapalhem. | ||
| 31 | + | ||
| 32 | +## Embaixo: as quatro abas | ||
| 33 | + | ||
| 34 | +{{<extrait name="x-tabbar" alt="Barra de abas: Adicionar, Stats, Tarefas com um contador 3, Ajustes com um contador 1." lang={lang} legende="Os contadores contam as tarefas a fazer e os convites recebidos." />}} | ||
| 35 | + | ||
| 36 | +A barra fica colada embaixo, ao alcance do polegar. Só quatro abas, arrumadas | ||
| 37 | +por frequência de uso: a gente adiciona tempo todo dia, olha as estatísticas | ||
| 38 | +uma vez por semana, as tarefas de vez em quando, e os ajustes quase nunca. | ||
| 39 | + | ||
| 40 | +Duas telas importantes não têm aba, de propósito. “Meus tempos” se alcança | ||
| 41 | +pelas estatísticas e pelos ajustes, porque a gente vai lá para corrigir, não | ||
| 42 | +para consultar. “Categorias” se alcança pela aba Adicionar, ali onde a falta de | ||
| 43 | +uma categoria aparece. | ||
added
docs/site-documentation/content/ecrans/categorie.pt-br.md +27 -0 | new file mode 100644 | ||
| @@ -0,0 +1,27 @@ | ||
| 1 | ++++ | |
| 2 | +title = "Etapa 1: a categoria" | |
| 3 | +description = "A lista das categorias da equipe, com o meu tempo da semana em cada uma." | |
| 4 | +weight = 5 | |
| 5 | ++++ | |
| 6 | + | |
| 7 | +{{<shot name="ajouter-categorie" alt="Etapa 1: lista das categorias da equipe em forma de pastilhas, cada uma com uma cor, um nome e o tempo gasto esta semana." lang={lang} legende="Etapa 1 de 2: escolha a categoria." />}} | |
| 8 | + | |
| 9 | +O registro manual acontece em duas etapas. A primeira é a escolha da categoria | |
| 10 | +numa lista. | |
| 11 | + | |
| 12 | +## O que cada linha diz | |
| 13 | + | |
| 14 | +{{<extrait name="x-categorie-pill" alt="Uma pastilha de categoria: bolinha colorida, nome da categoria, e à direita o tempo já contado esta semana." lang={lang} />}} | |
| 15 | + | |
| 16 | +Cada categoria tem uma cor, nesta tela e nos gráficos. A cor não se escolhe e | |
| 17 | +nunca muda. | |
| 18 | + | |
| 19 | +À direita, quando existe, aparece o tempo que eu mesmo já contei nessa | |
| 20 | +categoria esta semana. Está ali para responder à pergunta que a gente se faz | |
| 21 | +logo antes de registrar: será que eu já anotei isso, ou não? | |
| 22 | + | |
| 23 | +As categorias arquivadas não aparecem aqui. Elas continuam visíveis nas | |
| 24 | +estatísticas, mas não dá mais para contar tempo nelas. | |
| 25 | + | |
| 26 | +Se a equipe ainda não tem categoria nenhuma, a lista dá lugar a um convite para | |
| 27 | +criar uma, e o link “Gerenciar categorias” espera logo abaixo. | |
| new file mode 100644 | |||
| @@ -0,0 +1,27 @@ | |||
| 1 | ++++ | ||
| 2 | +title = "Etapa 1: a categoria" | ||
| 3 | +description = "A lista das categorias da equipe, com o meu tempo da semana em cada uma." | ||
| 4 | +weight = 5 | ||
| 5 | ++++ | ||
| 6 | + | ||
| 7 | +{{<shot name="ajouter-categorie" alt="Etapa 1: lista das categorias da equipe em forma de pastilhas, cada uma com uma cor, um nome e o tempo gasto esta semana." lang={lang} legende="Etapa 1 de 2: escolha a categoria." />}} | ||
| 8 | + | ||
| 9 | +O registro manual acontece em duas etapas. A primeira é a escolha da categoria | ||
| 10 | +numa lista. | ||
| 11 | + | ||
| 12 | +## O que cada linha diz | ||
| 13 | + | ||
| 14 | +{{<extrait name="x-categorie-pill" alt="Uma pastilha de categoria: bolinha colorida, nome da categoria, e à direita o tempo já contado esta semana." lang={lang} />}} | ||
| 15 | + | ||
| 16 | +Cada categoria tem uma cor, nesta tela e nos gráficos. A cor não se escolhe e | ||
| 17 | +nunca muda. | ||
| 18 | + | ||
| 19 | +À direita, quando existe, aparece o tempo que eu mesmo já contei nessa | ||
| 20 | +categoria esta semana. Está ali para responder à pergunta que a gente se faz | ||
| 21 | +logo antes de registrar: será que eu já anotei isso, ou não? | ||
| 22 | + | ||
| 23 | +As categorias arquivadas não aparecem aqui. Elas continuam visíveis nas | ||
| 24 | +estatísticas, mas não dá mais para contar tempo nelas. | ||
| 25 | + | ||
| 26 | +Se a equipe ainda não tem categoria nenhuma, a lista dá lugar a um convite para | ||
| 27 | +criar uma, e o link “Gerenciar categorias” espera logo abaixo. | ||
added
docs/site-documentation/content/ecrans/categories.pt-br.md +48 -0 | new file mode 100644 | ||
| @@ -0,0 +1,48 @@ | ||
| 1 | ++++ | |
| 2 | +title = "As categorias e os grupos" | |
| 3 | +description = "Criar, renomear, arquivar, e separar certas categorias." | |
| 4 | +weight = 14 | |
| 5 | ++++ | |
| 6 | + | |
| 7 | +{{<shot name="categories" alt="Tela Categorias: lembrete de que as categorias pertencem à equipe, campo de adição, depois a lista das categorias com sua cor." lang={lang} legende="Um campo para adicionar, a lista logo abaixo." />}} | |
| 8 | + | |
| 9 | +Chega-se aqui pela aba Adicionar ou pelos Ajustes, pelo link “Gerenciar | |
| 10 | +categorias”. | |
| 11 | + | |
| 12 | +## Criar, renomear, arquivar | |
| 13 | + | |
| 14 | +Criar uma categoria cabe num campo e num botão. Renomear se faz no lugar, | |
| 15 | +alterando o texto na lista e confirmando com a tecla Enter. | |
| 16 | + | |
| 17 | +Uma categoria que não serve mais se arquiva em vez de ser excluída. Ela some | |
| 18 | +das listas de registro, vai para o fim da tela, apagada, e os tempos já | |
| 19 | +contados nela continuam intactos nas estatísticas. Uma categoria arquivada se | |
| 20 | +restaura com um gesto. | |
| 21 | + | |
| 22 | +A cor não é um ajuste. Ela vem da ordem de criação dentro da equipe, numa | |
| 23 | +paleta de quinze tons, o que garante que uma cor quer dizer a mesma coisa em | |
| 24 | +todas as telas e para todo mundo. | |
| 25 | + | |
| 26 | +## Os grupos | |
| 27 | + | |
| 28 | +{{<extrait name="x-groupe-carte" alt="Cartão do grupo “Temps avec Alix” contendo três categorias, Balade, Histoires e Jeux, cada uma com um xis para tirar." lang={lang} legende="O grupo existe enquanto uma categoria o carregar." />}} | |
| 29 | + | |
| 30 | +Embaixo, a seção Grupos permite separar categorias. O tempo contado nelas sai | |
| 31 | +das estatísticas da equipe e aparece num painel próprio. | |
| 32 | + | |
| 33 | +Não existe tela de criação de grupo: você escolhe uma categoria, escreve um | |
| 34 | +nome de grupo, e o grupo existe. Ele some sozinho quando nenhuma categoria o | |
| 35 | +carrega mais. Um grupo é um rótulo, nada além disso. | |
| 36 | + | |
| 37 | +O formulário sugere os grupos que já existem enquanto você digita, o que evita | |
| 38 | +criar um segundo por causa de uma maiúscula esquecida. | |
| 39 | + | |
| 40 | +## Para que servem os grupos | |
| 41 | + | |
| 42 | +Um grupo se justifica quando um assunto distorceria a leitura do resto: o | |
| 43 | +cuidado com alguém da família, o tempo de lazer com uma criança. É interessante | |
| 44 | +de medir, mas não se compara com a roupa suja. | |
| 45 | + | |
| 46 | +Esse recurso não é útil para todo mundo. Se você quer mesmo separar medições de | |
| 47 | +categoria (por exemplo, uma obra em paralelo com a vida cotidiana), pode ser | |
| 48 | +mais interessante fazer duas equipes. | |
| new file mode 100644 | |||
| @@ -0,0 +1,48 @@ | |||
| 1 | ++++ | ||
| 2 | +title = "As categorias e os grupos" | ||
| 3 | +description = "Criar, renomear, arquivar, e separar certas categorias." | ||
| 4 | +weight = 14 | ||
| 5 | ++++ | ||
| 6 | + | ||
| 7 | +{{<shot name="categories" alt="Tela Categorias: lembrete de que as categorias pertencem à equipe, campo de adição, depois a lista das categorias com sua cor." lang={lang} legende="Um campo para adicionar, a lista logo abaixo." />}} | ||
| 8 | + | ||
| 9 | +Chega-se aqui pela aba Adicionar ou pelos Ajustes, pelo link “Gerenciar | ||
| 10 | +categorias”. | ||
| 11 | + | ||
| 12 | +## Criar, renomear, arquivar | ||
| 13 | + | ||
| 14 | +Criar uma categoria cabe num campo e num botão. Renomear se faz no lugar, | ||
| 15 | +alterando o texto na lista e confirmando com a tecla Enter. | ||
| 16 | + | ||
| 17 | +Uma categoria que não serve mais se arquiva em vez de ser excluída. Ela some | ||
| 18 | +das listas de registro, vai para o fim da tela, apagada, e os tempos já | ||
| 19 | +contados nela continuam intactos nas estatísticas. Uma categoria arquivada se | ||
| 20 | +restaura com um gesto. | ||
| 21 | + | ||
| 22 | +A cor não é um ajuste. Ela vem da ordem de criação dentro da equipe, numa | ||
| 23 | +paleta de quinze tons, o que garante que uma cor quer dizer a mesma coisa em | ||
| 24 | +todas as telas e para todo mundo. | ||
| 25 | + | ||
| 26 | +## Os grupos | ||
| 27 | + | ||
| 28 | +{{<extrait name="x-groupe-carte" alt="Cartão do grupo “Temps avec Alix” contendo três categorias, Balade, Histoires e Jeux, cada uma com um xis para tirar." lang={lang} legende="O grupo existe enquanto uma categoria o carregar." />}} | ||
| 29 | + | ||
| 30 | +Embaixo, a seção Grupos permite separar categorias. O tempo contado nelas sai | ||
| 31 | +das estatísticas da equipe e aparece num painel próprio. | ||
| 32 | + | ||
| 33 | +Não existe tela de criação de grupo: você escolhe uma categoria, escreve um | ||
| 34 | +nome de grupo, e o grupo existe. Ele some sozinho quando nenhuma categoria o | ||
| 35 | +carrega mais. Um grupo é um rótulo, nada além disso. | ||
| 36 | + | ||
| 37 | +O formulário sugere os grupos que já existem enquanto você digita, o que evita | ||
| 38 | +criar um segundo por causa de uma maiúscula esquecida. | ||
| 39 | + | ||
| 40 | +## Para que servem os grupos | ||
| 41 | + | ||
| 42 | +Um grupo se justifica quando um assunto distorceria a leitura do resto: o | ||
| 43 | +cuidado com alguém da família, o tempo de lazer com uma criança. É interessante | ||
| 44 | +de medir, mas não se compara com a roupa suja. | ||
| 45 | + | ||
| 46 | +Esse recurso não é útil para todo mundo. Se você quer mesmo separar medições de | ||
| 47 | +categoria (por exemplo, uma obra em paralelo com a vida cotidiana), pode ser | ||
| 48 | +mais interessante fazer duas equipes. | ||
added
docs/site-documentation/content/ecrans/duree.pt-br.md +27 -0 | new file mode 100644 | ||
| @@ -0,0 +1,27 @@ | ||
| 1 | ++++ | |
| 2 | +title = "Etapa 2: a duração e a data" | |
| 3 | +description = "Quanto tempo passou, e quando." | |
| 4 | +weight = 6 | |
| 5 | ++++ | |
| 6 | + | |
| 7 | +{{<shot name="ajouter-duree" alt="Etapa 2: nome da categoria escolhida, contador de minutos com botões menos e mais, atalhos de 5, 15, 30, 45 minutos e 1 h, seletor de data, botão Registrar tempo." lang={lang} legende="A duração primeiro, a data depois, a confirmação embaixo." />}} | |
| 8 | + | |
| 9 | +Segunda etapa. A categoria escolhida fica lembrada no alto, com a cor dela, e | |
| 10 | +um link deixa trocar sem perder o resto. | |
| 11 | + | |
| 12 | +## Três jeitos de informar uma duração | |
| 13 | + | |
| 14 | +{{<extrait name="x-stepper" alt="Contador de duração: botão menos à esquerda, o número 30 no centro, botão mais à direita." lang={lang} legende="O contador anda de cinco em cinco minutos." />}} | |
| 15 | + | |
| 16 | +Os botões mais e menos andam de cinco minutos, o que basta na maioria dos | |
| 17 | +casos. Os atalhos embaixo colocam uma duração de uma vez só. E o próprio número | |
| 18 | +é um campo de digitação: para três horas e quinze, você digita o valor em vez | |
| 19 | +de dar quarenta cliques. | |
| 20 | + | |
| 21 | +Não existe teto, uma duração só precisa ser maior que zero. | |
| 22 | + | |
| 23 | +## A data | |
| 24 | + | |
| 25 | +A data de hoje vem proposta por padrão, e duas setas voltam um dia para | |
| 26 | +recuperar um esquecimento. A seta “próximo” some assim que você volta a hoje: | |
| 27 | +não se conta tempo adiantado. | |
| new file mode 100644 | |||
| @@ -0,0 +1,27 @@ | |||
| 1 | ++++ | ||
| 2 | +title = "Etapa 2: a duração e a data" | ||
| 3 | +description = "Quanto tempo passou, e quando." | ||
| 4 | +weight = 6 | ||
| 5 | ++++ | ||
| 6 | + | ||
| 7 | +{{<shot name="ajouter-duree" alt="Etapa 2: nome da categoria escolhida, contador de minutos com botões menos e mais, atalhos de 5, 15, 30, 45 minutos e 1 h, seletor de data, botão Registrar tempo." lang={lang} legende="A duração primeiro, a data depois, a confirmação embaixo." />}} | ||
| 8 | + | ||
| 9 | +Segunda etapa. A categoria escolhida fica lembrada no alto, com a cor dela, e | ||
| 10 | +um link deixa trocar sem perder o resto. | ||
| 11 | + | ||
| 12 | +## Três jeitos de informar uma duração | ||
| 13 | + | ||
| 14 | +{{<extrait name="x-stepper" alt="Contador de duração: botão menos à esquerda, o número 30 no centro, botão mais à direita." lang={lang} legende="O contador anda de cinco em cinco minutos." />}} | ||
| 15 | + | ||
| 16 | +Os botões mais e menos andam de cinco minutos, o que basta na maioria dos | ||
| 17 | +casos. Os atalhos embaixo colocam uma duração de uma vez só. E o próprio número | ||
| 18 | +é um campo de digitação: para três horas e quinze, você digita o valor em vez | ||
| 19 | +de dar quarenta cliques. | ||
| 20 | + | ||
| 21 | +Não existe teto, uma duração só precisa ser maior que zero. | ||
| 22 | + | ||
| 23 | +## A data | ||
| 24 | + | ||
| 25 | +A data de hoje vem proposta por padrão, e duas setas voltam um dia para | ||
| 26 | +recuperar um esquecimento. A seta “próximo” some assim que você volta a hoje: | ||
| 27 | +não se conta tempo adiantado. | ||
added
docs/site-documentation/content/ecrans/mes-temps.pt-br.md +16 -0 | new file mode 100644 | ||
| @@ -0,0 +1,16 @@ | ||
| 1 | ++++ | |
| 2 | +title = "Meus tempos" | |
| 3 | +description = "A lista dos meus registros na equipe ativa, do mais recente ao mais antigo." | |
| 4 | +weight = 8 | |
| 5 | ++++ | |
| 6 | + | |
| 7 | +{{<shot name="mes-temps" alt="Lista “Meus tempos”: uma linha por registro, com a cor da categoria, o nome dela, a data e a duração, mais um lápis de edição." lang={lang} legende="Vinte linhas, depois “Ver mais”." />}} | |
| 8 | + | |
| 9 | +Esta tela mostra só os meus registros, na equipe ativa, os mais recentes | |
| 10 | +primeiro. A gente vem aqui para conferir ou corrigir. | |
| 11 | + | |
| 12 | +Um tempo pertence a quem o registrou, e só essa pessoa pode alterá-lo. | |
| 13 | + | |
| 14 | +Cada linha tem um lápis que leva à [página de | |
| 15 | +edição](@/ecrans/modifier-temps.pt-br.md). Quando não há nada para mostrar, uma | |
| 16 | +mensagem convida a começar em vez de deixar uma página em branco. | |
| new file mode 100644 | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | ++++ | ||
| 2 | +title = "Meus tempos" | ||
| 3 | +description = "A lista dos meus registros na equipe ativa, do mais recente ao mais antigo." | ||
| 4 | +weight = 8 | ||
| 5 | ++++ | ||
| 6 | + | ||
| 7 | +{{<shot name="mes-temps" alt="Lista “Meus tempos”: uma linha por registro, com a cor da categoria, o nome dela, a data e a duração, mais um lápis de edição." lang={lang} legende="Vinte linhas, depois “Ver mais”." />}} | ||
| 8 | + | ||
| 9 | +Esta tela mostra só os meus registros, na equipe ativa, os mais recentes | ||
| 10 | +primeiro. A gente vem aqui para conferir ou corrigir. | ||
| 11 | + | ||
| 12 | +Um tempo pertence a quem o registrou, e só essa pessoa pode alterá-lo. | ||
| 13 | + | ||
| 14 | +Cada linha tem um lápis que leva à [página de | ||
| 15 | +edição](@/ecrans/modifier-temps.pt-br.md). Quando não há nada para mostrar, uma | ||
| 16 | +mensagem convida a começar em vez de deixar uma página em branco. | ||
added
docs/site-documentation/content/ecrans/minuteur.pt-br.md +31 -0 | new file mode 100644 | ||
| @@ -0,0 +1,31 @@ | ||
| 1 | ++++ | |
| 2 | +title = "O cronômetro" | |
| 3 | +description = "Uma medição em andamento, visível em todo lugar, que dá para encerrar ou jogar fora." | |
| 4 | +weight = 4 | |
| 5 | ++++ | |
| 6 | + | |
| 7 | +{{<shot name="minuteur" alt="Tela do cronômetro: cartão damasco “CRONÔMETRO EM ANDAMENTO”, tempo decorrido em números grandes, hora de início, botões Encerrar o cronômetro e Cancelar o cronômetro." lang={lang} legende="Um número enorme e duas saídas." />}} | |
| 8 | + | |
| 9 | +Uma vez iniciado, o cronômetro toma a aba Adicionar inteira. O contador sobe a | |
| 10 | +cada segundo, a hora de início fica lembrada embaixo, e dois botões esperam: | |
| 11 | +encerrar, ou cancelar. | |
| 12 | + | |
| 13 | +## A faixa, para não esquecer | |
| 14 | + | |
| 15 | +{{<extrait name="x-bandeau-minuteur" alt="Faixa marrom no alto da tela Estatísticas, com um ícone de cronômetro, o tempo decorrido e a menção “em andamento”." lang={lang} legende="A faixa acompanha em todas as telas, e tocar nela para a medição." />}} | |
| 16 | + | |
| 17 | +Enquanto uma medição corre, uma faixa a lembra no alto de cada página. Ela | |
| 18 | +mesma é o botão de parada. | |
| 19 | + | |
| 20 | +Passando de quatro horas, a medição foi mais provavelmente esquecida do que | |
| 21 | +vivida: um aviso diz isso na hora de registrar. | |
| 22 | + | |
| 23 | +## Encerrar é chegar na etapa 2 | |
| 24 | + | |
| 25 | +Parar o cronômetro não cria um tempo na hora. A medição fica de lado e o | |
| 26 | +aplicativo propõe escolher a categoria, depois apresenta a etapa da duração com | |
| 27 | +os minutos medidos já preenchidos. Nada é gravado enquanto o registro não for | |
| 28 | +confirmado, e a duração proposta continua editável: uma medição de quarenta e | |
| 29 | +sete minutos, dos quais sete foram no telefone, pode virar quarenta. | |
| 30 | + | |
| 31 | +Cancelar joga a medição fora, sem escrever nada. | |
| new file mode 100644 | |||
| @@ -0,0 +1,31 @@ | |||
| 1 | ++++ | ||
| 2 | +title = "O cronômetro" | ||
| 3 | +description = "Uma medição em andamento, visível em todo lugar, que dá para encerrar ou jogar fora." | ||
| 4 | +weight = 4 | ||
| 5 | ++++ | ||
| 6 | + | ||
| 7 | +{{<shot name="minuteur" alt="Tela do cronômetro: cartão damasco “CRONÔMETRO EM ANDAMENTO”, tempo decorrido em números grandes, hora de início, botões Encerrar o cronômetro e Cancelar o cronômetro." lang={lang} legende="Um número enorme e duas saídas." />}} | ||
| 8 | + | ||
| 9 | +Uma vez iniciado, o cronômetro toma a aba Adicionar inteira. O contador sobe a | ||
| 10 | +cada segundo, a hora de início fica lembrada embaixo, e dois botões esperam: | ||
| 11 | +encerrar, ou cancelar. | ||
| 12 | + | ||
| 13 | +## A faixa, para não esquecer | ||
| 14 | + | ||
| 15 | +{{<extrait name="x-bandeau-minuteur" alt="Faixa marrom no alto da tela Estatísticas, com um ícone de cronômetro, o tempo decorrido e a menção “em andamento”." lang={lang} legende="A faixa acompanha em todas as telas, e tocar nela para a medição." />}} | ||
| 16 | + | ||
| 17 | +Enquanto uma medição corre, uma faixa a lembra no alto de cada página. Ela | ||
| 18 | +mesma é o botão de parada. | ||
| 19 | + | ||
| 20 | +Passando de quatro horas, a medição foi mais provavelmente esquecida do que | ||
| 21 | +vivida: um aviso diz isso na hora de registrar. | ||
| 22 | + | ||
| 23 | +## Encerrar é chegar na etapa 2 | ||
| 24 | + | ||
| 25 | +Parar o cronômetro não cria um tempo na hora. A medição fica de lado e o | ||
| 26 | +aplicativo propõe escolher a categoria, depois apresenta a etapa da duração com | ||
| 27 | +os minutos medidos já preenchidos. Nada é gravado enquanto o registro não for | ||
| 28 | +confirmado, e a duração proposta continua editável: uma medição de quarenta e | ||
| 29 | +sete minutos, dos quais sete foram no telefone, pode virar quarenta. | ||
| 30 | + | ||
| 31 | +Cancelar joga a medição fora, sem escrever nada. | ||
added
docs/site-documentation/content/ecrans/modifier-temps.pt-br.md +12 -0 | new file mode 100644 | ||
| @@ -0,0 +1,12 @@ | ||
| 1 | ++++ | |
| 2 | +title = "Editar um tempo" | |
| 3 | +description = "Corrigir uma categoria, uma duração, uma data, ou apagar o registro." | |
| 4 | +weight = 9 | |
| 5 | ++++ | |
| 6 | + | |
| 7 | +{{<shot name="modifier-temps" alt="Tela Editar o tempo: lista suspensa de categoria, campo de duração em minutos, campo de data, botão Salvar e botão Excluir." lang={lang} legende="Corrigir a categoria, a duração ou a data, ou apagar tudo." />}} | |
| 8 | + | |
| 9 | +O servidor confere duas coisas antes de abrir esta tela: que o registro é mesmo | |
| 10 | +meu, e que ele pertence à equipe ativa. Se não, é uma página 404. | |
| 11 | + | |
| 12 | +A exclusão é imediata e definitiva. | |
| new file mode 100644 | |||
| @@ -0,0 +1,12 @@ | |||
| 1 | ++++ | ||
| 2 | +title = "Editar um tempo" | ||
| 3 | +description = "Corrigir uma categoria, uma duração, uma data, ou apagar o registro." | ||
| 4 | +weight = 9 | ||
| 5 | ++++ | ||
| 6 | + | ||
| 7 | +{{<shot name="modifier-temps" alt="Tela Editar o tempo: lista suspensa de categoria, campo de duração em minutos, campo de data, botão Salvar e botão Excluir." lang={lang} legende="Corrigir a categoria, a duração ou a data, ou apagar tudo." />}} | ||
| 8 | + | ||
| 9 | +O servidor confere duas coisas antes de abrir esta tela: que o registro é mesmo | ||
| 10 | +meu, e que ele pertence à equipe ativa. Se não, é uma página 404. | ||
| 11 | + | ||
| 12 | +A exclusão é imediata e definitiva. | ||
modified
docs/site-documentation/content/ecrans/parametres.de.md +3 -2 | @@ -42,8 +42,9 @@ zwei Teams angehöre: man ist immer irgendwo Mitglied. | ||
| 42 | 42 | |
| 43 | 43 | ## Sprache und Darstellung |
| 44 | 44 | |
| 45 | -Die Sprache der Oberfläche wird hier gewählt, zwischen Französisch, Englisch | |
| 46 | -und Deutsch. Diese Einstellung gehört zum Konto, nicht zum Browser. | |
| 45 | +Die Sprache der Oberfläche wird hier gewählt, zwischen Französisch, Englisch, | |
| 46 | +Deutsch und Portugiesisch. Diese Einstellung gehört zum Konto, nicht zum | |
| 47 | +Browser. | |
| 47 | 48 | |
| 48 | 49 | Direkt darunter bietet das Anzeigethema das Aussehen Organic, das der |
| 49 | 50 | Screenshots dieser Dokumentation, sowie ein kontraststarkes Schwarzweiß für |
| @@ -42,8 +42,9 @@ zwei Teams angehöre: man ist immer irgendwo Mitglied. | |||
| 42 | 42 | ||
| 43 | ## Sprache und Darstellung | 43 | ## Sprache und Darstellung |
| 44 | 44 | ||
| 45 | -Die Sprache der Oberfläche wird hier gewählt, zwischen Französisch, Englisch | 45 | +Die Sprache der Oberfläche wird hier gewählt, zwischen Französisch, Englisch, |
| 46 | -und Deutsch. Diese Einstellung gehört zum Konto, nicht zum Browser. | 46 | +Deutsch und Portugiesisch. Diese Einstellung gehört zum Konto, nicht zum |
| 47 | +Browser. | ||
| 47 | 48 | ||
| 48 | Direkt darunter bietet das Anzeigethema das Aussehen Organic, das der | 49 | Direkt darunter bietet das Anzeigethema das Aussehen Organic, das der |
| 49 | Screenshots dieser Dokumentation, sowie ein kontraststarkes Schwarzweiß für | 50 | Screenshots dieser Dokumentation, sowie ein kontraststarkes Schwarzweiß für |
modified
docs/site-documentation/content/ecrans/parametres.en.md +2 -2 | @@ -41,8 +41,8 @@ you are always a member somewhere. | ||
| 41 | 41 | |
| 42 | 42 | ## Language and display |
| 43 | 43 | |
| 44 | -The interface language is chosen here, between French, English and German. It | |
| 45 | -is a setting of the account, not of the browser. | |
| 44 | +The interface language is chosen here, between French, English, German and | |
| 45 | +Portuguese. It is a setting of the account, not of the browser. | |
| 46 | 46 | |
| 47 | 47 | Just below, the display theme offers the Organic look, the one in this |
| 48 | 48 | documentation's screenshots, and a high-contrast black and white look for |
| @@ -41,8 +41,8 @@ you are always a member somewhere. | |||
| 41 | 41 | ||
| 42 | ## Language and display | 42 | ## Language and display |
| 43 | 43 | ||
| 44 | -The interface language is chosen here, between French, English and German. It | 44 | +The interface language is chosen here, between French, English, German and |
| 45 | -is a setting of the account, not of the browser. | 45 | +Portuguese. It is a setting of the account, not of the browser. |
| 46 | 46 | ||
| 47 | Just below, the display theme offers the Organic look, the one in this | 47 | Just below, the display theme offers the Organic look, the one in this |
| 48 | documentation's screenshots, and a high-contrast black and white look for | 48 | documentation's screenshots, and a high-contrast black and white look for |
modified
docs/site-documentation/content/ecrans/parametres.md +3 -2 | @@ -40,8 +40,9 @@ Le bouton pour quitter l'équipe n'apparaît que si j'appartiens à au moins deu | ||
| 40 | 40 | |
| 41 | 41 | ## La langue et l'affichage |
| 42 | 42 | |
| 43 | -La langue de l'interface se choisit ici, entre le français, l'anglais et | |
| 44 | -l'allemand. Ce réglage est au niveau du compte, pas du navigateur. | |
| 43 | +La langue de l'interface se choisit ici, entre le français, l'anglais, | |
| 44 | +l'allemand et le portugais. Ce réglage est au niveau du compte, pas du | |
| 45 | +navigateur. | |
| 45 | 46 | |
| 46 | 47 | Juste dessous, le thème d'affichage propose l'apparence Organic, celle des |
| 47 | 48 | captures de cette documentation, et une apparence à contraste élevé, en noir et |
| @@ -40,8 +40,9 @@ Le bouton pour quitter l'équipe n'apparaît que si j'appartiens à au moins deu | |||
| 40 | 40 | ||
| 41 | ## La langue et l'affichage | 41 | ## La langue et l'affichage |
| 42 | 42 | ||
| 43 | -La langue de l'interface se choisit ici, entre le français, l'anglais et | 43 | +La langue de l'interface se choisit ici, entre le français, l'anglais, |
| 44 | -l'allemand. Ce réglage est au niveau du compte, pas du navigateur. | 44 | +l'allemand et le portugais. Ce réglage est au niveau du compte, pas du |
| 45 | +navigateur. | ||
| 45 | 46 | ||
| 46 | Juste dessous, le thème d'affichage propose l'apparence Organic, celle des | 47 | Juste dessous, le thème d'affichage propose l'apparence Organic, celle des |
| 47 | captures de cette documentation, et une apparence à contraste élevé, en noir et | 48 | captures de cette documentation, et une apparence à contraste élevé, en noir et |
added
docs/site-documentation/content/ecrans/parametres.pt-br.md +52 -0 | new file mode 100644 | ||
| @@ -0,0 +1,52 @@ | ||
| 1 | ++++ | |
| 2 | +title = "As configurações" | |
| 3 | +description = "A equipe, os convites, o idioma, a exibição e a sessão, nessa ordem." | |
| 4 | +weight = 13 | |
| 5 | ++++ | |
| 6 | + | |
| 7 | +{{<shot name="parametres" alt="Tela Configurações: cartão de convite recebido com Aceitar e Recusar, cartão Conta, atalhos Meus registros e Categorias, campo para renomear a equipe." lang={lang} legende="O que pede resposta fica em cima." />}} | |
| 8 | + | |
| 9 | +Esta tela junta tudo o que não cabe em outro lugar: | |
| 10 | +- Convites para equipes | |
| 11 | +- Alterações dos tempos e das categorias (para quem pensa assim) | |
| 12 | +- Minhas equipes | |
| 13 | +- Exibição | |
| 14 | +- Minha conta | |
| 15 | + | |
| 16 | +## Os convites, bem no alto | |
| 17 | + | |
| 18 | +{{<extrait name="x-invitation" alt="Cartão de convite: “noa convida você para entrar na equipe Copropriété”, botões Aceitar e Recusar." lang={lang} />}} | |
| 19 | + | |
| 20 | +Um convite recebido aparece num cartão colorido, com dois botões. Um contador | |
| 21 | +também aparece na aba Ajustes. | |
| 22 | + | |
| 23 | +Aceitar faz entrar na equipe e já muda para ela. Recusar não avisa ninguém, e | |
| 24 | +não impede um novo convite mais tarde. | |
| 25 | + | |
| 26 | +## Gerenciar as equipes e convidar membros | |
| 27 | + | |
| 28 | +A partir desta tela, qualquer membro pode renomear a equipe, convidar alguém | |
| 29 | +pelo nome de usuário, cancelar um convite pendente, criar uma nova equipe, ou | |
| 30 | +sair desta. Não existe dono de equipe, e portanto não existe alguém a quem | |
| 31 | +pedir permissão. | |
| 32 | + | |
| 33 | +Os erros de convite são explícitos e aparecem ao lado do campo: conta | |
| 34 | +desconhecida, já é membro, convite já pendente. É o único lugar em que o | |
| 35 | +aplicativo pode dizer que uma conta existe, e isso é assumido, já que é preciso | |
| 36 | +poder convidar alguém. | |
| 37 | + | |
| 38 | +O botão para sair da equipe só aparece se eu pertenço a pelo menos duas | |
| 39 | +equipes: a gente é sempre membro de algum lugar. | |
| 40 | + | |
| 41 | +## O idioma e a exibição | |
| 42 | + | |
| 43 | +O idioma da interface se escolhe aqui, entre francês, inglês, alemão e | |
| 44 | +português. Esse ajuste é da conta, não do navegador. | |
| 45 | + | |
| 46 | +Logo abaixo, o tema de exibição oferece a aparência Organic, a das capturas | |
| 47 | +desta documentação, e uma aparência de alto contraste, em preto e branco, para | |
| 48 | +quem precisa de legibilidade máxima. | |
| 49 | + | |
| 50 | +## A sessão | |
| 51 | + | |
| 52 | +Bem embaixo, a troca de senha e a saída da conta. | |
| new file mode 100644 | |||
| @@ -0,0 +1,52 @@ | |||
| 1 | ++++ | ||
| 2 | +title = "As configurações" | ||
| 3 | +description = "A equipe, os convites, o idioma, a exibição e a sessão, nessa ordem." | ||
| 4 | +weight = 13 | ||
| 5 | ++++ | ||
| 6 | + | ||
| 7 | +{{<shot name="parametres" alt="Tela Configurações: cartão de convite recebido com Aceitar e Recusar, cartão Conta, atalhos Meus registros e Categorias, campo para renomear a equipe." lang={lang} legende="O que pede resposta fica em cima." />}} | ||
| 8 | + | ||
| 9 | +Esta tela junta tudo o que não cabe em outro lugar: | ||
| 10 | +- Convites para equipes | ||
| 11 | +- Alterações dos tempos e das categorias (para quem pensa assim) | ||
| 12 | +- Minhas equipes | ||
| 13 | +- Exibição | ||
| 14 | +- Minha conta | ||
| 15 | + | ||
| 16 | +## Os convites, bem no alto | ||
| 17 | + | ||
| 18 | +{{<extrait name="x-invitation" alt="Cartão de convite: “noa convida você para entrar na equipe Copropriété”, botões Aceitar e Recusar." lang={lang} />}} | ||
| 19 | + | ||
| 20 | +Um convite recebido aparece num cartão colorido, com dois botões. Um contador | ||
| 21 | +também aparece na aba Ajustes. | ||
| 22 | + | ||
| 23 | +Aceitar faz entrar na equipe e já muda para ela. Recusar não avisa ninguém, e | ||
| 24 | +não impede um novo convite mais tarde. | ||
| 25 | + | ||
| 26 | +## Gerenciar as equipes e convidar membros | ||
| 27 | + | ||
| 28 | +A partir desta tela, qualquer membro pode renomear a equipe, convidar alguém | ||
| 29 | +pelo nome de usuário, cancelar um convite pendente, criar uma nova equipe, ou | ||
| 30 | +sair desta. Não existe dono de equipe, e portanto não existe alguém a quem | ||
| 31 | +pedir permissão. | ||
| 32 | + | ||
| 33 | +Os erros de convite são explícitos e aparecem ao lado do campo: conta | ||
| 34 | +desconhecida, já é membro, convite já pendente. É o único lugar em que o | ||
| 35 | +aplicativo pode dizer que uma conta existe, e isso é assumido, já que é preciso | ||
| 36 | +poder convidar alguém. | ||
| 37 | + | ||
| 38 | +O botão para sair da equipe só aparece se eu pertenço a pelo menos duas | ||
| 39 | +equipes: a gente é sempre membro de algum lugar. | ||
| 40 | + | ||
| 41 | +## O idioma e a exibição | ||
| 42 | + | ||
| 43 | +O idioma da interface se escolhe aqui, entre francês, inglês, alemão e | ||
| 44 | +português. Esse ajuste é da conta, não do navegador. | ||
| 45 | + | ||
| 46 | +Logo abaixo, o tema de exibição oferece a aparência Organic, a das capturas | ||
| 47 | +desta documentação, e uma aparência de alto contraste, em preto e branco, para | ||
| 48 | +quem precisa de legibilidade máxima. | ||
| 49 | + | ||
| 50 | +## A sessão | ||
| 51 | + | ||
| 52 | +Bem embaixo, a troca de senha e a saída da conta. | ||
added
docs/site-documentation/content/ecrans/stats.pt-br.md +58 -0 | new file mode 100644 | ||
| @@ -0,0 +1,58 @@ | ||
| 1 | ++++ | |
| 2 | +title = "As estatísticas" | |
| 3 | +description = "Seis gráficos empilhados, painéis por grupo e os detalhes ao toque." | |
| 4 | +weight = 7 | |
| 5 | ++++ | |
| 6 | + | |
| 7 | +{{<shot name="stats" alt="Tela Estatísticas: link “Meus registros”, pastilhas de escopo Maison e Temps avec Alix, depois o gráfico da atividade da semana, uma coluna por dia." lang={lang} legende="O total do período é anunciado no título do gráfico." />}} | |
| 8 | + | |
| 9 | +É a tela que a gente olha a dois, no domingo à noite. | |
| 10 | + | |
| 11 | +## Seis gráficos, do mais fino ao mais largo | |
| 12 | + | |
| 13 | +O primeiro gráfico dá a atividade da semana, uma coluna por dia, colorida por | |
| 14 | +pessoa. É o que conta o ritmo: os dias cheios, os dias vazios, quem segurou a | |
| 15 | +casa na quarta. | |
| 16 | + | |
| 17 | +Os cinco gráficos seguintes são construídos no mesmo princípio: uma coluna por | |
| 18 | +pessoa e segmentos coloridos por categoria. Tem o dia, a semana, o mês, o ano, | |
| 19 | +e depois todo o histórico. A altura é relativa ao máximo exibido, e a maior | |
| 20 | +fatia fica no topo da coluna. | |
| 21 | + | |
| 22 | +{{<extrait name="x-legende" alt="Legenda das categorias: Administratif, Courses, Cuisine, Enfants, Linge, Ménage, cada uma com sua cor." lang={lang} legende="As cores são as mesmas das listas de registro." />}} | |
| 23 | + | |
| 24 | +Duas setas fazem cada gráfico recuar e avançar um período. | |
| 25 | + | |
| 26 | +## Os painéis de grupos | |
| 27 | + | |
| 28 | +{{<extrait name="x-scopes" alt="Duas pastilhas de navegação: Maison, selecionada, e Temps avec Alix." lang={lang} legende="Uma pastilha por painel, o carrossel desliza de um ao outro." />}} | |
| 29 | + | |
| 30 | +Quando categorias foram separadas num [grupo](@/ecrans/categories.pt-br.md), | |
| 31 | +elas saem das estatísticas da equipe e ganham o próprio painel, com os mesmos | |
| 32 | +seis gráficos. | |
| 33 | + | |
| 34 | +{{<shot name="stats-groupe" alt="Painel “Temps avec Alix”: os mesmos gráficos, só com as categorias Balade, Histoires e Jeux." lang={lang} legende="A mesma tela para um assunto que vive à parte." />}} | |
| 35 | + | |
| 36 | +Passa-se de um painel a outro tocando numa pastilha ou arrastando o carrossel. | |
| 37 | +Sem JavaScript, as pastilhas continuam sendo simples âncoras e a navegação | |
| 38 | +funciona do mesmo jeito. | |
| 39 | + | |
| 40 | +Um assunto volumoso esmaga todos os outros num gráfico comum, e certas coisas | |
| 41 | +não se comparam. O tempo passado brincando com uma criança não concorre com o | |
| 42 | +tempo passado fazendo compras. | |
| 43 | + | |
| 44 | +## O detalhe de um segmento | |
| 45 | + | |
| 46 | +{{<shot name="stats-detail" alt="Folha de detalhe aberta embaixo da tela: categoria Enfants, camille, 3 h 15, proporção do tempo dela 29 %, 6 registros." lang={lang} legende="O detalhe de um segmento abre na parte de baixo da tela." />}} | |
| 47 | + | |
| 48 | +Tocar num segmento colorido abre uma folha de detalhe: qual categoria, quem, | |
| 49 | +quanto tempo, que proporção do tempo dessa pessoa no período, e quantos | |
| 50 | +registros. | |
| 51 | + | |
| 52 | +## Quem aparece nas colunas | |
| 53 | + | |
| 54 | +Os membros atuais da equipe, e os antigos membros que têm tempo no período. | |
| 55 | +Quem saiu da equipe não se apaga do histórico: o que foi feito foi feito. | |
| 56 | + | |
| 57 | +No alto da tela, o link “Meus registros” leva à lista dos meus próprios tempos, | |
| 58 | +para corrigir o que precisar. | |
| new file mode 100644 | |||
| @@ -0,0 +1,58 @@ | |||
| 1 | ++++ | ||
| 2 | +title = "As estatísticas" | ||
| 3 | +description = "Seis gráficos empilhados, painéis por grupo e os detalhes ao toque." | ||
| 4 | +weight = 7 | ||
| 5 | ++++ | ||
| 6 | + | ||
| 7 | +{{<shot name="stats" alt="Tela Estatísticas: link “Meus registros”, pastilhas de escopo Maison e Temps avec Alix, depois o gráfico da atividade da semana, uma coluna por dia." lang={lang} legende="O total do período é anunciado no título do gráfico." />}} | ||
| 8 | + | ||
| 9 | +É a tela que a gente olha a dois, no domingo à noite. | ||
| 10 | + | ||
| 11 | +## Seis gráficos, do mais fino ao mais largo | ||
| 12 | + | ||
| 13 | +O primeiro gráfico dá a atividade da semana, uma coluna por dia, colorida por | ||
| 14 | +pessoa. É o que conta o ritmo: os dias cheios, os dias vazios, quem segurou a | ||
| 15 | +casa na quarta. | ||
| 16 | + | ||
| 17 | +Os cinco gráficos seguintes são construídos no mesmo princípio: uma coluna por | ||
| 18 | +pessoa e segmentos coloridos por categoria. Tem o dia, a semana, o mês, o ano, | ||
| 19 | +e depois todo o histórico. A altura é relativa ao máximo exibido, e a maior | ||
| 20 | +fatia fica no topo da coluna. | ||
| 21 | + | ||
| 22 | +{{<extrait name="x-legende" alt="Legenda das categorias: Administratif, Courses, Cuisine, Enfants, Linge, Ménage, cada uma com sua cor." lang={lang} legende="As cores são as mesmas das listas de registro." />}} | ||
| 23 | + | ||
| 24 | +Duas setas fazem cada gráfico recuar e avançar um período. | ||
| 25 | + | ||
| 26 | +## Os painéis de grupos | ||
| 27 | + | ||
| 28 | +{{<extrait name="x-scopes" alt="Duas pastilhas de navegação: Maison, selecionada, e Temps avec Alix." lang={lang} legende="Uma pastilha por painel, o carrossel desliza de um ao outro." />}} | ||
| 29 | + | ||
| 30 | +Quando categorias foram separadas num [grupo](@/ecrans/categories.pt-br.md), | ||
| 31 | +elas saem das estatísticas da equipe e ganham o próprio painel, com os mesmos | ||
| 32 | +seis gráficos. | ||
| 33 | + | ||
| 34 | +{{<shot name="stats-groupe" alt="Painel “Temps avec Alix”: os mesmos gráficos, só com as categorias Balade, Histoires e Jeux." lang={lang} legende="A mesma tela para um assunto que vive à parte." />}} | ||
| 35 | + | ||
| 36 | +Passa-se de um painel a outro tocando numa pastilha ou arrastando o carrossel. | ||
| 37 | +Sem JavaScript, as pastilhas continuam sendo simples âncoras e a navegação | ||
| 38 | +funciona do mesmo jeito. | ||
| 39 | + | ||
| 40 | +Um assunto volumoso esmaga todos os outros num gráfico comum, e certas coisas | ||
| 41 | +não se comparam. O tempo passado brincando com uma criança não concorre com o | ||
| 42 | +tempo passado fazendo compras. | ||
| 43 | + | ||
| 44 | +## O detalhe de um segmento | ||
| 45 | + | ||
| 46 | +{{<shot name="stats-detail" alt="Folha de detalhe aberta embaixo da tela: categoria Enfants, camille, 3 h 15, proporção do tempo dela 29 %, 6 registros." lang={lang} legende="O detalhe de um segmento abre na parte de baixo da tela." />}} | ||
| 47 | + | ||
| 48 | +Tocar num segmento colorido abre uma folha de detalhe: qual categoria, quem, | ||
| 49 | +quanto tempo, que proporção do tempo dessa pessoa no período, e quantos | ||
| 50 | +registros. | ||
| 51 | + | ||
| 52 | +## Quem aparece nas colunas | ||
| 53 | + | ||
| 54 | +Os membros atuais da equipe, e os antigos membros que têm tempo no período. | ||
| 55 | +Quem saiu da equipe não se apaga do histórico: o que foi feito foi feito. | ||
| 56 | + | ||
| 57 | +No alto da tela, o link “Meus registros” leva à lista dos meus próprios tempos, | ||
| 58 | +para corrigir o que precisar. | ||
added
docs/site-documentation/content/ecrans/tache-effectuee.pt-br.md +33 -0 | new file mode 100644 | ||
| @@ -0,0 +1,33 @@ | ||
| 1 | ++++ | |
| 2 | +title = "Marcar uma tarefa como feita" | |
| 3 | +description = "Terminar, creditar o tempo gasto, e reprogramar no ritmo observado." | |
| 4 | +weight = 12 | |
| 5 | ++++ | |
| 6 | + | |
| 7 | +{{<shot name="tache-effectuee" alt="Tela Tarefa concluída: nome da tarefa, interruptor “Registrar um tempo” com um contador de duração, depois interruptor “Reprogramar” com a data proposta e o ritmo observado." lang={lang} legende="Duas propostas, uma confirmação." />}} | |
| 8 | + | |
| 9 | +Dizer que uma tarefa está feita resolve três coisas de uma vez. | |
| 10 | + | |
| 11 | +## Um, está feita | |
| 12 | + | |
| 13 | +A tarefa volta ao estado concluída, com o nome da pessoa e a data. Nada é | |
| 14 | +apagado: cada mudança de estado fica guardada, o que dá à tarefa uma pequena | |
| 15 | +história. | |
| 16 | + | |
| 17 | +## Dois, registrar o tempo gasto | |
| 18 | + | |
| 19 | +O interruptor “Registrar um tempo” propõe criar um registro na categoria da | |
| 20 | +tarefa, em nome de quem acabou de terminá-la. É facultativo: o tempo talvez já | |
| 21 | +tenha sido medido no cronômetro, ou contado de uma vez para cinco tarefas da | |
| 22 | +mesma categoria. Fora esses casos, esse atalho evita ir registrar em outro | |
| 23 | +lugar. | |
| 24 | + | |
| 25 | +## Três, reprogramar | |
| 26 | + | |
| 27 | +O interruptor “Reprogramar” propõe uma data, calculada a partir das conclusões | |
| 28 | +anteriores dessa tarefa. O aplicativo pega o intervalo mediano entre duas | |
| 29 | +conclusões, aplica um piso de uma semana, e mostra o ritmo que observou, por | |
| 30 | +exemplo “a cada ~8 dias”. | |
| 31 | + | |
| 32 | +Pega-se a mediana em vez da média, porque um mês de férias não deve deslocar | |
| 33 | +todo o ritmo. Essa etapa também é facultativa: o interruptor a desliga. | |
| new file mode 100644 | |||
| @@ -0,0 +1,33 @@ | |||
| 1 | ++++ | ||
| 2 | +title = "Marcar uma tarefa como feita" | ||
| 3 | +description = "Terminar, creditar o tempo gasto, e reprogramar no ritmo observado." | ||
| 4 | +weight = 12 | ||
| 5 | ++++ | ||
| 6 | + | ||
| 7 | +{{<shot name="tache-effectuee" alt="Tela Tarefa concluída: nome da tarefa, interruptor “Registrar um tempo” com um contador de duração, depois interruptor “Reprogramar” com a data proposta e o ritmo observado." lang={lang} legende="Duas propostas, uma confirmação." />}} | ||
| 8 | + | ||
| 9 | +Dizer que uma tarefa está feita resolve três coisas de uma vez. | ||
| 10 | + | ||
| 11 | +## Um, está feita | ||
| 12 | + | ||
| 13 | +A tarefa volta ao estado concluída, com o nome da pessoa e a data. Nada é | ||
| 14 | +apagado: cada mudança de estado fica guardada, o que dá à tarefa uma pequena | ||
| 15 | +história. | ||
| 16 | + | ||
| 17 | +## Dois, registrar o tempo gasto | ||
| 18 | + | ||
| 19 | +O interruptor “Registrar um tempo” propõe criar um registro na categoria da | ||
| 20 | +tarefa, em nome de quem acabou de terminá-la. É facultativo: o tempo talvez já | ||
| 21 | +tenha sido medido no cronômetro, ou contado de uma vez para cinco tarefas da | ||
| 22 | +mesma categoria. Fora esses casos, esse atalho evita ir registrar em outro | ||
| 23 | +lugar. | ||
| 24 | + | ||
| 25 | +## Três, reprogramar | ||
| 26 | + | ||
| 27 | +O interruptor “Reprogramar” propõe uma data, calculada a partir das conclusões | ||
| 28 | +anteriores dessa tarefa. O aplicativo pega o intervalo mediano entre duas | ||
| 29 | +conclusões, aplica um piso de uma semana, e mostra o ritmo que observou, por | ||
| 30 | +exemplo “a cada ~8 dias”. | ||
| 31 | + | ||
| 32 | +Pega-se a mediana em vez da média, porque um mês de férias não deve deslocar | ||
| 33 | +todo o ritmo. Essa etapa também é facultativa: o interruptor a desliga. | ||
added
docs/site-documentation/content/ecrans/tache-formulaire.pt-br.md +32 -0 | new file mode 100644 | ||
| @@ -0,0 +1,32 @@ | ||
| 1 | ++++ | |
| 2 | +title = "Criar ou editar uma tarefa" | |
| 3 | +description = "Um nome, uma categoria, uma data, e eventualmente nomes de pessoas." | |
| 4 | +weight = 11 | |
| 5 | ++++ | |
| 6 | + | |
| 7 | +{{<duo a="tache-nouvelle" b="tache-modifier" alt_a="Formulário de nova tarefa: campo Nome da tarefa, escolha da categoria em pastilhas, data de ativação, lista dos membros para atribuir." alt_b="O mesmo formulário em edição, com o nome e a categoria já preenchidos." lang={lang} legende="O mesmo formulário serve para criar e para corrigir." />}} | |
| 8 | + | |
| 9 | +O formulário cabe em quatro campos, e só um deles é facultativo. | |
| 10 | + | |
| 11 | +## O nome, a categoria, a data | |
| 12 | + | |
| 13 | +A categoria se escolhe nas pastilhas coloridas da equipe, as mesmas de todo o | |
| 14 | +resto, o que prende a tarefa a um domínio e lhe dá a cor dela na lista. | |
| 15 | + | |
| 16 | +A data se chama data de ativação: é o dia a partir do qual a tarefa faz | |
| 17 | +sentido. Enquanto esse dia não chega, a tarefa espera no bloco “Em breve”. | |
| 18 | + | |
| 19 | +## Atribuição facultativa | |
| 20 | + | |
| 21 | +Embaixo, a lista dos membros da equipe deixa apontar uma ou várias pessoas. É | |
| 22 | +facultativo, e os outros membros podem pegar a tarefa mesmo assim. A atribuição | |
| 23 | +serve para a exibição, para o filtro “Minhas tarefas” e para a ordem da lista. | |
| 24 | +Ela não dá nem tira direito nenhum. | |
| 25 | + | |
| 26 | +## Edição de uma tarefa | |
| 27 | + | |
| 28 | +O mesmo formulário serve para corrigir uma tarefa que já existe. Uma ressalva: | |
| 29 | +se a tarefa está em andamento, só quem a pegou pode alterá-la. | |
| 30 | + | |
| 31 | +Uma tarefa também se exclui a partir desta tela. A exclusão é imediata e | |
| 32 | +definitiva. | |
| new file mode 100644 | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | ++++ | ||
| 2 | +title = "Criar ou editar uma tarefa" | ||
| 3 | +description = "Um nome, uma categoria, uma data, e eventualmente nomes de pessoas." | ||
| 4 | +weight = 11 | ||
| 5 | ++++ | ||
| 6 | + | ||
| 7 | +{{<duo a="tache-nouvelle" b="tache-modifier" alt_a="Formulário de nova tarefa: campo Nome da tarefa, escolha da categoria em pastilhas, data de ativação, lista dos membros para atribuir." alt_b="O mesmo formulário em edição, com o nome e a categoria já preenchidos." lang={lang} legende="O mesmo formulário serve para criar e para corrigir." />}} | ||
| 8 | + | ||
| 9 | +O formulário cabe em quatro campos, e só um deles é facultativo. | ||
| 10 | + | ||
| 11 | +## O nome, a categoria, a data | ||
| 12 | + | ||
| 13 | +A categoria se escolhe nas pastilhas coloridas da equipe, as mesmas de todo o | ||
| 14 | +resto, o que prende a tarefa a um domínio e lhe dá a cor dela na lista. | ||
| 15 | + | ||
| 16 | +A data se chama data de ativação: é o dia a partir do qual a tarefa faz | ||
| 17 | +sentido. Enquanto esse dia não chega, a tarefa espera no bloco “Em breve”. | ||
| 18 | + | ||
| 19 | +## Atribuição facultativa | ||
| 20 | + | ||
| 21 | +Embaixo, a lista dos membros da equipe deixa apontar uma ou várias pessoas. É | ||
| 22 | +facultativo, e os outros membros podem pegar a tarefa mesmo assim. A atribuição | ||
| 23 | +serve para a exibição, para o filtro “Minhas tarefas” e para a ordem da lista. | ||
| 24 | +Ela não dá nem tira direito nenhum. | ||
| 25 | + | ||
| 26 | +## Edição de uma tarefa | ||
| 27 | + | ||
| 28 | +O mesmo formulário serve para corrigir uma tarefa que já existe. Uma ressalva: | ||
| 29 | +se a tarefa está em andamento, só quem a pegou pode alterá-la. | ||
| 30 | + | ||
| 31 | +Uma tarefa também se exclui a partir desta tela. A exclusão é imediata e | ||
| 32 | +definitiva. | ||
added
docs/site-documentation/content/ecrans/taches.pt-br.md +35 -0 | new file mode 100644 | ||
| @@ -0,0 +1,35 @@ | ||
| 1 | ++++ | |
| 2 | +title = "As tarefas" | |
| 3 | +description = "O que está em andamento, o que há para fazer, o que volta em breve." | |
| 4 | +weight = 10 | |
| 5 | ++++ | |
| 6 | + | |
| 7 | +{{<shot name="taches" alt="Tela Tarefas: bloco “Em andamento” com duas tarefas pegas, depois bloco “A fazer”, cada bloco com um interruptor “Minhas tarefas”." lang={lang} legende="Dois blocos, um interruptor “Minhas tarefas” por bloco." />}} | |
| 8 | + | |
| 9 | +Uma tarefa é algo a fazer, presa a uma categoria e posta numa data. A tela as | |
| 10 | +arruma em três tempos: o que está em andamento, o que há para fazer, e o que | |
| 11 | +chega mais tarde, dobrado embaixo. | |
| 12 | + | |
| 13 | +## Pegar uma tarefa | |
| 14 | + | |
| 15 | +{{<extrait name="x-todo-carte" alt="Cartão de uma tarefa em andamento: bolinha com a cor da categoria, nome da tarefa, menção “pega por sacha” e a data." lang={lang} />}} | |
| 16 | + | |
| 17 | +Pegar uma tarefa a passa para em andamento e mostra quem pegou. Enquanto ela | |
| 18 | +está em andamento, só quem pegou pode alterá-la. | |
| 19 | + | |
| 20 | +Isso evita o grande clássico da vida em comum: duas pessoas fazendo a mesma | |
| 21 | +compra, cada uma convencida de que a outra não ia cuidar disso. Pegar uma | |
| 22 | +tarefa é anunciar. | |
| 23 | + | |
| 24 | +Dá para soltar o que você pegou. Ninguém fica preso, e sair de uma equipe solta | |
| 25 | +automaticamente o que você segurava lá. | |
| 26 | + | |
| 27 | +## Atribuir sem mandar | |
| 28 | + | |
| 29 | +Uma tarefa pode levar o nome de uma ou de várias pessoas. É uma indicação, não | |
| 30 | +uma limitação: qualquer membro pode pegá-la e terminá-la mesmo assim. Essa | |
| 31 | +escolha vem da ausência de hierarquia no aplicativo. | |
| 32 | + | |
| 33 | +Cada bloco tem seu interruptor “Minhas tarefas”, que esconde o que não me diz | |
| 34 | +respeito. O filtro fica escrito no endereço da página: dá para salvar a sua | |
| 35 | +visão nos favoritos. | |
| new file mode 100644 | |||
| @@ -0,0 +1,35 @@ | |||
| 1 | ++++ | ||
| 2 | +title = "As tarefas" | ||
| 3 | +description = "O que está em andamento, o que há para fazer, o que volta em breve." | ||
| 4 | +weight = 10 | ||
| 5 | ++++ | ||
| 6 | + | ||
| 7 | +{{<shot name="taches" alt="Tela Tarefas: bloco “Em andamento” com duas tarefas pegas, depois bloco “A fazer”, cada bloco com um interruptor “Minhas tarefas”." lang={lang} legende="Dois blocos, um interruptor “Minhas tarefas” por bloco." />}} | ||
| 8 | + | ||
| 9 | +Uma tarefa é algo a fazer, presa a uma categoria e posta numa data. A tela as | ||
| 10 | +arruma em três tempos: o que está em andamento, o que há para fazer, e o que | ||
| 11 | +chega mais tarde, dobrado embaixo. | ||
| 12 | + | ||
| 13 | +## Pegar uma tarefa | ||
| 14 | + | ||
| 15 | +{{<extrait name="x-todo-carte" alt="Cartão de uma tarefa em andamento: bolinha com a cor da categoria, nome da tarefa, menção “pega por sacha” e a data." lang={lang} />}} | ||
| 16 | + | ||
| 17 | +Pegar uma tarefa a passa para em andamento e mostra quem pegou. Enquanto ela | ||
| 18 | +está em andamento, só quem pegou pode alterá-la. | ||
| 19 | + | ||
| 20 | +Isso evita o grande clássico da vida em comum: duas pessoas fazendo a mesma | ||
| 21 | +compra, cada uma convencida de que a outra não ia cuidar disso. Pegar uma | ||
| 22 | +tarefa é anunciar. | ||
| 23 | + | ||
| 24 | +Dá para soltar o que você pegou. Ninguém fica preso, e sair de uma equipe solta | ||
| 25 | +automaticamente o que você segurava lá. | ||
| 26 | + | ||
| 27 | +## Atribuir sem mandar | ||
| 28 | + | ||
| 29 | +Uma tarefa pode levar o nome de uma ou de várias pessoas. É uma indicação, não | ||
| 30 | +uma limitação: qualquer membro pode pegá-la e terminá-la mesmo assim. Essa | ||
| 31 | +escolha vem da ausência de hierarquia no aplicativo. | ||
| 32 | + | ||
| 33 | +Cada bloco tem seu interruptor “Minhas tarefas”, que esconde o que não me diz | ||
| 34 | +respeito. O filtro fica escrito no endereço da página: dá para salvar a sua | ||
| 35 | +visão nos favoritos. | ||
added
docs/site-documentation/shots-seed.sh +312 -0 | new file mode 100755 | ||
| @@ -0,0 +1,312 @@ | ||
| 1 | +#!/usr/bin/env bash | |
| 2 | +# Prépare une base de développement pour `shots.mjs` : table rase, puis les | |
| 3 | +# équipes et les comptes créés par le binaire exego (c'est lui qui hash les | |
| 4 | +# mots de passe), puis les données que les captures doivent montrer. | |
| 5 | +# | |
| 6 | +# cd docs/site-documentation && ./shots-seed.sh | |
| 7 | +# | |
| 8 | +# Variables : | |
| 9 | +# DATABASE_URL base à remplir (défaut : la base locale du projet) | |
| 10 | +# TT_PASS mot de passe des trois comptes (défaut : exego-demo) | |
| 11 | +# EXEGO comment lancer le binaire (défaut : `exego` s'il est dans le | |
| 12 | +# PATH, sinon `cargo run --quiet --`) | |
| 13 | +# | |
| 14 | +# Ensuite, serveur sur cette base, puis : | |
| 15 | +# | |
| 16 | +# CHROME=/chemin/vers/chrome TT_USER=camille TT_PASS=exego-demo node shots.mjs | |
| 17 | +# | |
| 18 | +# Rejouable : le script efface tout avant d'écrire, donc deux exécutions le | |
| 19 | +# même jour donnent exactement la même base (le tirage des temps est un | |
| 20 | +# hachage, pas un PRNG). Les dates, elles, glissent avec le calendrier. | |
| 21 | +# | |
| 22 | +# Cousin de docs/slides/demo/seed.mjs, qui produit les mêmes données pour les | |
| 23 | +# slides mais suppose la base déjà peuplée de comptes. | |
| 24 | + | |
| 25 | +set -euo pipefail | |
| 26 | + | |
| 27 | +ICI=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) | |
| 28 | +RACINE=$(cd "$ICI/../.." && pwd) | |
| 29 | + | |
| 30 | +export DATABASE_URL=${DATABASE_URL:-postgresql://exego:exego@localhost:5432/exego} | |
| 31 | +TT_PASS=${TT_PASS:-exego-demo} | |
| 32 | + | |
| 33 | +# `config::pg_options` lit POSTGRESQL_ADDON_URI EN PREMIER : hérité du shell, | |
| 34 | +# il enverrait le binaire sur une base Clever pendant que psql travaille sur | |
| 35 | +# celle demandée ici. On le retire du décor. | |
| 36 | +unset POSTGRESQL_ADDON_URI | |
| 37 | + | |
| 38 | +# Garde-fou : l'hôte de la prod commence par bpuhu, celui de la base DEV par | |
| 39 | +# b8nju. Le premier n'est pas discutable. | |
| 40 | +if [[ $DATABASE_URL == *bpuhu* ]]; then | |
| 41 | + echo "refus : cette URL est celle de la base de PRODUCTION." >&2 | |
| 42 | + exit 1 | |
| 43 | +fi | |
| 44 | + | |
| 45 | +# L'URL affichée sans son mot de passe. | |
| 46 | +echo "→ base : $(sed -E 's#://[^@/]*@#://#' <<<"$DATABASE_URL")" | |
| 47 | + | |
| 48 | +if [ -n "${EXEGO:-}" ]; then | |
| 49 | + read -ra exego <<<"$EXEGO" | |
| 50 | +elif command -v exego >/dev/null 2>&1; then | |
| 51 | + exego=(exego) | |
| 52 | +else | |
| 53 | + exego=(cargo run --quiet --manifest-path "$RACINE/Cargo.toml" --) | |
| 54 | +fi | |
| 55 | + | |
| 56 | +psql=(psql -X -q -v ON_ERROR_STOP=1 "$DATABASE_URL") | |
| 57 | + | |
| 58 | +# ───────────────────────────────────────────────────────────── table rase | |
| 59 | + | |
| 60 | +# Sur une base vierge les tables n'existent pas encore : le vidage se saute | |
| 61 | +# tout seul, et la première commande exego appliquera les migrations. | |
| 62 | +# Les tables d'énumération (exego_enums) ne sont pas des données : on n'y | |
| 63 | +# touche pas. | |
| 64 | +"${psql[@]}" <<'SQL' | |
| 65 | +DO $$ | |
| 66 | +BEGIN | |
| 67 | + IF to_regclass('public.users') IS NULL THEN | |
| 68 | + RAISE NOTICE 'base vierge : les migrations vont tourner au premier appel du binaire.'; | |
| 69 | + ELSE | |
| 70 | + TRUNCATE time_entries, todo_assignees, todo_state_changes, todos, | |
| 71 | + invitations, timers, team_members, categories, teams, | |
| 72 | + users, revoked_tokens; | |
| 73 | + END IF; | |
| 74 | +END $$; | |
| 75 | +SQL | |
| 76 | + | |
| 77 | +# ──────────────────────────────────────────────────── équipes et comptes | |
| 78 | + | |
| 79 | +# Par le binaire, pas par du SQL : lui seul sait hasher un mot de passe en | |
| 80 | +# argon2id, et il pose les adhésions dans le bon ordre. L'ordre compte : | |
| 81 | +# l'équipe active se replie sur l'adhésion la plus ancienne, donc « Maison » | |
| 82 | +# doit être la première de camille et de sacha. | |
| 83 | +for equipe in "Maison" "Asso du quartier" "Copropriété"; do | |
| 84 | + "${exego[@]}" team add "$equipe" >/dev/null | |
| 85 | +done | |
| 86 | + | |
| 87 | +# camille est le compte des captures, sacha son binôme dans la maison, noa la | |
| 88 | +# voisine qui tient l'asso et d'où vient l'invitation en attente. | |
| 89 | +"${exego[@]}" user add camille --team "Maison" --password "$TT_PASS" >/dev/null | |
| 90 | +"${exego[@]}" user add sacha --team "Maison" --password "$TT_PASS" >/dev/null | |
| 91 | +"${exego[@]}" user add noa --team "Asso du quartier" --password "$TT_PASS" >/dev/null | |
| 92 | + | |
| 93 | +"${exego[@]}" user join camille --team "Asso du quartier" >/dev/null | |
| 94 | +"${exego[@]}" user join sacha --team "Asso du quartier" >/dev/null | |
| 95 | +"${exego[@]}" user join noa --team "Copropriété" >/dev/null | |
| 96 | + | |
| 97 | +echo "→ 3 équipes, 3 comptes (mot de passe : $TT_PASS)" | |
| 98 | + | |
| 99 | +# ─────────────────────────────────────────────────────────────── données | |
| 100 | + | |
| 101 | +"${psql[@]}" <<'SQL' | |
| 102 | +BEGIN; | |
| 103 | + | |
| 104 | +-- UUIDv7 daté : l'application génère ses identifiants en Rust (Uuid::now_v7), | |
| 105 | +-- où l'ordre lexicographique suit l'ordre de création. La couleur d'une | |
| 106 | +-- catégorie est son rang dans ce tri : sans horodatage croissant, la palette | |
| 107 | +-- des captures changerait d'un seed à l'autre. | |
| 108 | +CREATE FUNCTION pg_temp.uuid_v7(ts timestamptz) RETURNS uuid AS $$ | |
| 109 | + SELECT ( | |
| 110 | + lpad(to_hex((extract(epoch FROM ts) * 1000)::bigint), 12, '0') | |
| 111 | + || '7' || substr(md5(random()::text), 1, 3) -- version 7 | |
| 112 | + || '8' || substr(md5(random()::text), 1, 3) -- variante RFC 4122 | |
| 113 | + || substr(md5(random()::text), 1, 12) | |
| 114 | + )::uuid | |
| 115 | +$$ LANGUAGE sql VOLATILE; | |
| 116 | + | |
| 117 | +-- Le jour de l'application, pas celui du serveur : tout le calendrier d'Ex Ego | |
| 118 | +-- se calcule en Europe/Paris. | |
| 119 | +CREATE FUNCTION pg_temp.jour(decalage int) RETURNS date AS $$ | |
| 120 | + SELECT ((now() AT TIME ZONE 'Europe/Paris')::date) + decalage | |
| 121 | +$$ LANGUAGE sql STABLE; | |
| 122 | + | |
| 123 | +-- Tirage reproductible : un hachage de la graine plutôt qu'un PRNG. Le | |
| 124 | +-- tirage dépend ainsi du jour ET de l'habitude — un `random()` qui ne | |
| 125 | +-- regarderait que l'habitude, le planificateur le remonterait sur la liste | |
| 126 | +-- VALUES pour l'évaluer une fois pour toutes, et chaque habitude retenue | |
| 127 | +-- tomberait alors les 56 jours d'affilée. | |
| 128 | +CREATE FUNCTION pg_temp.alea(graine text) RETURNS double precision AS $$ | |
| 129 | + SELECT ('x' || substr(md5(graine), 1, 8))::bit(32)::bigint / 4294967296.0 | |
| 130 | +$$ LANGUAGE sql IMMUTABLE; | |
| 131 | + | |
| 132 | +CREATE FUNCTION pg_temp.u(text) RETURNS uuid AS $$ | |
| 133 | + SELECT id FROM users WHERE username = $1 | |
| 134 | +$$ LANGUAGE sql STABLE; | |
| 135 | + | |
| 136 | +CREATE FUNCTION pg_temp.t(text) RETURNS uuid AS $$ | |
| 137 | + SELECT id FROM teams WHERE name = $1 | |
| 138 | +$$ LANGUAGE sql STABLE; | |
| 139 | + | |
| 140 | +CREATE FUNCTION pg_temp.c(text) RETURNS uuid AS $$ | |
| 141 | + SELECT id FROM categories WHERE name = $1 | |
| 142 | +$$ LANGUAGE sql STABLE; | |
| 143 | + | |
| 144 | +CREATE FUNCTION pg_temp.todo(text) RETURNS uuid AS $$ | |
| 145 | + SELECT id FROM todos WHERE name = $1 | |
| 146 | +$$ LANGUAGE sql STABLE; | |
| 147 | + | |
| 148 | +-- ─────────────────────────────────────────────────────── catégories | |
| 149 | + | |
| 150 | +-- L'ordre de cette liste EST la palette : PALETTE[rang de création] dans | |
| 151 | +-- l'équipe, d'où l'horodatage croissant minute par minute. Étendre par la | |
| 152 | +-- fin, jamais par le milieu, sinon toutes les captures changent de couleur. | |
| 153 | +-- « Temps avec Alix » met trois catégories à part : leur temps sort des | |
| 154 | +-- statistiques de l'équipe et va dans son propre panneau. | |
| 155 | +INSERT INTO categories (id, name, archived, created_at, team_id, group_name) | |
| 156 | +SELECT pg_temp.uuid_v7(now() - interval '60 days' + v.rang * interval '1 minute'), | |
| 157 | + v.name, v.archived, | |
| 158 | + now() - interval '60 days' + v.rang * interval '1 minute', | |
| 159 | + pg_temp.t(v.team), v.groupe | |
| 160 | + FROM (VALUES | |
| 161 | + ( 1, 'Maison', 'Cuisine', false, NULL), | |
| 162 | + ( 2, 'Maison', 'Courses', false, NULL), | |
| 163 | + ( 3, 'Maison', 'Linge', false, NULL), | |
| 164 | + ( 4, 'Maison', 'Ménage', false, NULL), | |
| 165 | + ( 5, 'Maison', 'Enfants', false, NULL), | |
| 166 | + ( 6, 'Maison', 'Administratif', false, NULL), | |
| 167 | + ( 7, 'Asso du quartier', 'Réunions', false, NULL), | |
| 168 | + ( 8, 'Asso du quartier', 'Buvette', false, NULL), | |
| 169 | + ( 9, 'Asso du quartier', 'Communication', false, NULL), | |
| 170 | + (10, 'Maison', 'Jeux', false, 'Temps avec Alix'), | |
| 171 | + (11, 'Maison', 'Histoires', false, 'Temps avec Alix'), | |
| 172 | + (12, 'Maison', 'Balade', false, 'Temps avec Alix'), | |
| 173 | + (13, 'Maison', 'Jardin', true, NULL) | |
| 174 | + ) AS v(rang, team, name, archived, groupe); | |
| 175 | + | |
| 176 | +-- ─────────────────────────────────────────────────────────── temps | |
| 177 | + | |
| 178 | +-- Une habitude = une catégorie, quelqu'un, une probabilité par jour et une | |
| 179 | +-- fourchette de minutes. Sur 56 jours, ça donne des colonnes irrégulières | |
| 180 | +-- mais crédibles, avec un déséquilibre assumé : camille porte ~60 % du temps | |
| 181 | +-- de la maison. | |
| 182 | +INSERT INTO time_entries (id, user_id, category_id, minutes, entry_date, created_at) | |
| 183 | +SELECT pg_temp.uuid_v7(pg_temp.jour(-j.d) + time '20:00'), | |
| 184 | + pg_temp.u(h.username), pg_temp.c(h.cat), | |
| 185 | + GREATEST(5, (round((h.lo + pg_temp.alea(j.d || h.cat || h.username || '/min') | |
| 186 | + * (h.hi - h.lo)) / 5.0) * 5)::int), | |
| 187 | + pg_temp.jour(-j.d), | |
| 188 | + pg_temp.jour(-j.d) + time '20:00' | |
| 189 | + FROM generate_series(0, 55) AS j(d) | |
| 190 | + CROSS JOIN (VALUES | |
| 191 | + ('Cuisine', 'camille', 0.80, 25, 50), | |
| 192 | + ('Cuisine', 'sacha', 0.55, 20, 45), | |
| 193 | + ('Courses', 'camille', 0.28, 40, 70), | |
| 194 | + ('Courses', 'sacha', 0.15, 30, 60), | |
| 195 | + ('Linge', 'camille', 0.40, 20, 40), | |
| 196 | + ('Linge', 'sacha', 0.28, 15, 35), | |
| 197 | + ('Ménage', 'camille', 0.35, 30, 60), | |
| 198 | + ('Ménage', 'sacha', 0.30, 25, 50), | |
| 199 | + ('Enfants', 'camille', 0.70, 20, 60), | |
| 200 | + ('Enfants', 'sacha', 0.55, 20, 50), | |
| 201 | + ('Administratif', 'camille', 0.12, 20, 45), | |
| 202 | + ('Administratif', 'sacha', 0.08, 15, 40), | |
| 203 | + ('Réunions', 'noa', 0.18, 60, 90), | |
| 204 | + ('Réunions', 'camille', 0.12, 60, 90), | |
| 205 | + ('Réunions', 'sacha', 0.08, 60, 90), | |
| 206 | + ('Buvette', 'noa', 0.10, 90, 180), | |
| 207 | + ('Buvette', 'camille', 0.08, 60, 120), | |
| 208 | + ('Buvette', 'sacha', 0.10, 60, 120), | |
| 209 | + ('Communication', 'noa', 0.20, 20, 60), | |
| 210 | + ('Communication', 'camille', 0.05, 20, 40), | |
| 211 | + ('Communication', 'sacha', 0.03, 20, 40), | |
| 212 | + -- Temps avec Alix : à part, donc absent des stats d'équipe. | |
| 213 | + ('Jeux', 'camille', 0.50, 20, 45), | |
| 214 | + ('Jeux', 'sacha', 0.60, 25, 60), | |
| 215 | + ('Histoires', 'camille', 0.55, 10, 25), | |
| 216 | + ('Histoires', 'sacha', 0.45, 10, 20), | |
| 217 | + ('Balade', 'camille', 0.20, 45, 90), | |
| 218 | + ('Balade', 'sacha', 0.25, 45, 120) | |
| 219 | + ) AS h(cat, username, p, lo, hi) | |
| 220 | + WHERE pg_temp.alea(j.d || h.cat || h.username) < h.p; | |
| 221 | + | |
| 222 | +-- ─────────────────────────────────────────────────────────── tâches | |
| 223 | + | |
| 224 | +-- Une todo est UNE ligne réutilisée : `state` est l'état courant (1 en cours, | |
| 225 | +-- 2 à faire, 3 fait) et l'historique vit dans todo_state_changes. | |
| 226 | +INSERT INTO todos (id, category_id, name, created_at, activation_date, state_id) | |
| 227 | +SELECT pg_temp.uuid_v7(pg_temp.jour(-v.creee) + time '09:00'), | |
| 228 | + pg_temp.c(v.cat), v.name, | |
| 229 | + pg_temp.jour(-v.creee) + time '09:00', | |
| 230 | + pg_temp.jour(v.activation), v.state | |
| 231 | + FROM (VALUES | |
| 232 | + ('Nettoyer le frigo', 'Ménage', 12, -2, 1), | |
| 233 | + ('Prendre rendez-vous chez le pédiatre', 'Enfants', 6, -4, 2), | |
| 234 | + -- Complétions ~hebdomadaires : la reprogrammation proposée par | |
| 235 | + -- l'écran « effectuée » a de quoi être crédible (c'est sur cette | |
| 236 | + -- tâche-là que se prend la capture tache-effectuee). | |
| 237 | + ('Sortir les poubelles', 'Ménage', 45, 0, 2), | |
| 238 | + ('Trier les papiers', 'Administratif', 3, 0, 2), | |
| 239 | + ('Arroser les plantes', 'Ménage', 2, 3, 2), | |
| 240 | + -- Prise par camille : le compte des captures voit le verrou de son | |
| 241 | + -- côté (« Relâcher » et « Effectuée »). | |
| 242 | + ('Ranger la chambre d’Alix', 'Enfants', 5, -1, 1) | |
| 243 | + ) AS v(name, cat, creee, activation, state); | |
| 244 | + | |
| 245 | +INSERT INTO todo_state_changes (id, todo_id, state_id, user_id, changed_at) | |
| 246 | +SELECT pg_temp.uuid_v7(pg_temp.jour(-v.jour) + time '09:00' + v.rang * interval '1 minute'), | |
| 247 | + pg_temp.todo(v.todo), v.state, pg_temp.u(v.username), | |
| 248 | + pg_temp.jour(-v.jour) + time '09:00' + v.rang * interval '1 minute' | |
| 249 | + FROM (VALUES | |
| 250 | + ('Nettoyer le frigo', 12, 2, 'camille', 0), | |
| 251 | + ('Nettoyer le frigo', 1, 1, 'sacha', 1), | |
| 252 | + ('Prendre rendez-vous chez le pédiatre', 6, 2, 'sacha', 0), | |
| 253 | + ('Sortir les poubelles', 45, 2, 'camille', 0), | |
| 254 | + ('Sortir les poubelles', 38, 3, 'sacha', 1), | |
| 255 | + ('Sortir les poubelles', 38, 2, 'sacha', 2), | |
| 256 | + ('Sortir les poubelles', 31, 3, 'camille', 3), | |
| 257 | + ('Sortir les poubelles', 31, 2, 'camille', 4), | |
| 258 | + ('Sortir les poubelles', 23, 3, 'sacha', 5), | |
| 259 | + ('Sortir les poubelles', 23, 2, 'sacha', 6), | |
| 260 | + ('Sortir les poubelles', 16, 3, 'camille', 7), | |
| 261 | + ('Sortir les poubelles', 16, 2, 'camille', 8), | |
| 262 | + ('Sortir les poubelles', 8, 3, 'sacha', 9), | |
| 263 | + ('Sortir les poubelles', 8, 2, 'sacha', 10), | |
| 264 | + ('Trier les papiers', 3, 2, 'camille', 0), | |
| 265 | + ('Arroser les plantes', 2, 2, 'sacha', 0), | |
| 266 | + ('Ranger la chambre d’Alix', 5, 2, 'sacha', 0), | |
| 267 | + ('Ranger la chambre d’Alix', 0, 1, 'camille', 1) | |
| 268 | + ) AS v(todo, jour, state, username, rang); | |
| 269 | + | |
| 270 | +-- Assignations informatives : elles nourrissent l'affichage, le filtre | |
| 271 | +-- « Mes tâches » et le tri, jamais un droit. | |
| 272 | +INSERT INTO todo_assignees (todo_id, user_id) | |
| 273 | +SELECT pg_temp.todo(v.todo), pg_temp.u(v.username) | |
| 274 | + FROM (VALUES | |
| 275 | + ('Prendre rendez-vous chez le pédiatre', 'camille'), | |
| 276 | + ('Arroser les plantes', 'sacha') | |
| 277 | + ) AS v(todo, username); | |
| 278 | + | |
| 279 | +-- ─────────────────────────────────────────────────────── invitation | |
| 280 | + | |
| 281 | +-- Invitation en attente pour camille : c'est elle qui pose le compteur sur | |
| 282 | +-- l'onglet Réglages et qui donne la carte abricot de la capture x-invitation. | |
| 283 | +INSERT INTO invitations (id, team_id, invitee_id, inviter_id, created_at) | |
| 284 | +VALUES (pg_temp.uuid_v7(now() - interval '1 day'), | |
| 285 | + pg_temp.t('Copropriété'), pg_temp.u('camille'), pg_temp.u('noa'), | |
| 286 | + now() - interval '1 day'); | |
| 287 | + | |
| 288 | +COMMIT; | |
| 289 | +SQL | |
| 290 | + | |
| 291 | +# ────────────────────────────────────────────────────────── récapitulatif | |
| 292 | + | |
| 293 | +psql -X "$DATABASE_URL" -c " | |
| 294 | +SELECT t.name AS equipe, | |
| 295 | + (SELECT count(*) FROM team_members m WHERE m.team_id = t.id) AS membres, | |
| 296 | + (SELECT count(*) FROM categories c | |
| 297 | + WHERE c.team_id = t.id AND NOT c.archived) AS categories, | |
| 298 | + (SELECT count(*) FROM time_entries e JOIN categories c ON c.id = e.category_id | |
| 299 | + WHERE c.team_id = t.id) AS temps, | |
| 300 | + (SELECT count(*) FROM todos td JOIN categories c ON c.id = td.category_id | |
| 301 | + WHERE c.team_id = t.id) AS taches | |
| 302 | + FROM teams t ORDER BY t.name;" | |
| 303 | + | |
| 304 | +cat <<EOF | |
| 305 | +Base prête. Lancer le serveur dessus, puis les captures : | |
| 306 | + | |
| 307 | + DATABASE_URL='$DATABASE_URL' \\ | |
| 308 | + BISCUIT_PRIVATE_KEY=\$(cargo run -- keygen | grep -o '[0-9a-f]\{64\}') \\ | |
| 309 | + PORT=8090 cargo run -- serve | |
| 310 | + | |
| 311 | + CHROME=/chemin/vers/chrome TT_USER=camille TT_PASS=$TT_PASS node shots.mjs | |
| 312 | +EOF | |
| new file mode 100755 | |||
| @@ -0,0 +1,312 @@ | |||
| 1 | +#!/usr/bin/env bash | ||
| 2 | +# Prépare une base de développement pour `shots.mjs` : table rase, puis les | ||
| 3 | +# équipes et les comptes créés par le binaire exego (c'est lui qui hash les | ||
| 4 | +# mots de passe), puis les données que les captures doivent montrer. | ||
| 5 | +# | ||
| 6 | +# cd docs/site-documentation && ./shots-seed.sh | ||
| 7 | +# | ||
| 8 | +# Variables : | ||
| 9 | +# DATABASE_URL base à remplir (défaut : la base locale du projet) | ||
| 10 | +# TT_PASS mot de passe des trois comptes (défaut : exego-demo) | ||
| 11 | +# EXEGO comment lancer le binaire (défaut : `exego` s'il est dans le | ||
| 12 | +# PATH, sinon `cargo run --quiet --`) | ||
| 13 | +# | ||
| 14 | +# Ensuite, serveur sur cette base, puis : | ||
| 15 | +# | ||
| 16 | +# CHROME=/chemin/vers/chrome TT_USER=camille TT_PASS=exego-demo node shots.mjs | ||
| 17 | +# | ||
| 18 | +# Rejouable : le script efface tout avant d'écrire, donc deux exécutions le | ||
| 19 | +# même jour donnent exactement la même base (le tirage des temps est un | ||
| 20 | +# hachage, pas un PRNG). Les dates, elles, glissent avec le calendrier. | ||
| 21 | +# | ||
| 22 | +# Cousin de docs/slides/demo/seed.mjs, qui produit les mêmes données pour les | ||
| 23 | +# slides mais suppose la base déjà peuplée de comptes. | ||
| 24 | + | ||
| 25 | +set -euo pipefail | ||
| 26 | + | ||
| 27 | +ICI=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) | ||
| 28 | +RACINE=$(cd "$ICI/../.." && pwd) | ||
| 29 | + | ||
| 30 | +export DATABASE_URL=${DATABASE_URL:-postgresql://exego:exego@localhost:5432/exego} | ||
| 31 | +TT_PASS=${TT_PASS:-exego-demo} | ||
| 32 | + | ||
| 33 | +# `config::pg_options` lit POSTGRESQL_ADDON_URI EN PREMIER : hérité du shell, | ||
| 34 | +# il enverrait le binaire sur une base Clever pendant que psql travaille sur | ||
| 35 | +# celle demandée ici. On le retire du décor. | ||
| 36 | +unset POSTGRESQL_ADDON_URI | ||
| 37 | + | ||
| 38 | +# Garde-fou : l'hôte de la prod commence par bpuhu, celui de la base DEV par | ||
| 39 | +# b8nju. Le premier n'est pas discutable. | ||
| 40 | +if [[ $DATABASE_URL == *bpuhu* ]]; then | ||
| 41 | + echo "refus : cette URL est celle de la base de PRODUCTION." >&2 | ||
| 42 | + exit 1 | ||
| 43 | +fi | ||
| 44 | + | ||
| 45 | +# L'URL affichée sans son mot de passe. | ||
| 46 | +echo "→ base : $(sed -E 's#://[^@/]*@#://#' <<<"$DATABASE_URL")" | ||
| 47 | + | ||
| 48 | +if [ -n "${EXEGO:-}" ]; then | ||
| 49 | + read -ra exego <<<"$EXEGO" | ||
| 50 | +elif command -v exego >/dev/null 2>&1; then | ||
| 51 | + exego=(exego) | ||
| 52 | +else | ||
| 53 | + exego=(cargo run --quiet --manifest-path "$RACINE/Cargo.toml" --) | ||
| 54 | +fi | ||
| 55 | + | ||
| 56 | +psql=(psql -X -q -v ON_ERROR_STOP=1 "$DATABASE_URL") | ||
| 57 | + | ||
| 58 | +# ───────────────────────────────────────────────────────────── table rase | ||
| 59 | + | ||
| 60 | +# Sur une base vierge les tables n'existent pas encore : le vidage se saute | ||
| 61 | +# tout seul, et la première commande exego appliquera les migrations. | ||
| 62 | +# Les tables d'énumération (exego_enums) ne sont pas des données : on n'y | ||
| 63 | +# touche pas. | ||
| 64 | +"${psql[@]}" <<'SQL' | ||
| 65 | +DO $$ | ||
| 66 | +BEGIN | ||
| 67 | + IF to_regclass('public.users') IS NULL THEN | ||
| 68 | + RAISE NOTICE 'base vierge : les migrations vont tourner au premier appel du binaire.'; | ||
| 69 | + ELSE | ||
| 70 | + TRUNCATE time_entries, todo_assignees, todo_state_changes, todos, | ||
| 71 | + invitations, timers, team_members, categories, teams, | ||
| 72 | + users, revoked_tokens; | ||
| 73 | + END IF; | ||
| 74 | +END $$; | ||
| 75 | +SQL | ||
| 76 | + | ||
| 77 | +# ──────────────────────────────────────────────────── équipes et comptes | ||
| 78 | + | ||
| 79 | +# Par le binaire, pas par du SQL : lui seul sait hasher un mot de passe en | ||
| 80 | +# argon2id, et il pose les adhésions dans le bon ordre. L'ordre compte : | ||
| 81 | +# l'équipe active se replie sur l'adhésion la plus ancienne, donc « Maison » | ||
| 82 | +# doit être la première de camille et de sacha. | ||
| 83 | +for equipe in "Maison" "Asso du quartier" "Copropriété"; do | ||
| 84 | + "${exego[@]}" team add "$equipe" >/dev/null | ||
| 85 | +done | ||
| 86 | + | ||
| 87 | +# camille est le compte des captures, sacha son binôme dans la maison, noa la | ||
| 88 | +# voisine qui tient l'asso et d'où vient l'invitation en attente. | ||
| 89 | +"${exego[@]}" user add camille --team "Maison" --password "$TT_PASS" >/dev/null | ||
| 90 | +"${exego[@]}" user add sacha --team "Maison" --password "$TT_PASS" >/dev/null | ||
| 91 | +"${exego[@]}" user add noa --team "Asso du quartier" --password "$TT_PASS" >/dev/null | ||
| 92 | + | ||
| 93 | +"${exego[@]}" user join camille --team "Asso du quartier" >/dev/null | ||
| 94 | +"${exego[@]}" user join sacha --team "Asso du quartier" >/dev/null | ||
| 95 | +"${exego[@]}" user join noa --team "Copropriété" >/dev/null | ||
| 96 | + | ||
| 97 | +echo "→ 3 équipes, 3 comptes (mot de passe : $TT_PASS)" | ||
| 98 | + | ||
| 99 | +# ─────────────────────────────────────────────────────────────── données | ||
| 100 | + | ||
| 101 | +"${psql[@]}" <<'SQL' | ||
| 102 | +BEGIN; | ||
| 103 | + | ||
| 104 | +-- UUIDv7 daté : l'application génère ses identifiants en Rust (Uuid::now_v7), | ||
| 105 | +-- où l'ordre lexicographique suit l'ordre de création. La couleur d'une | ||
| 106 | +-- catégorie est son rang dans ce tri : sans horodatage croissant, la palette | ||
| 107 | +-- des captures changerait d'un seed à l'autre. | ||
| 108 | +CREATE FUNCTION pg_temp.uuid_v7(ts timestamptz) RETURNS uuid AS $$ | ||
| 109 | + SELECT ( | ||
| 110 | + lpad(to_hex((extract(epoch FROM ts) * 1000)::bigint), 12, '0') | ||
| 111 | + || '7' || substr(md5(random()::text), 1, 3) -- version 7 | ||
| 112 | + || '8' || substr(md5(random()::text), 1, 3) -- variante RFC 4122 | ||
| 113 | + || substr(md5(random()::text), 1, 12) | ||
| 114 | + )::uuid | ||
| 115 | +$$ LANGUAGE sql VOLATILE; | ||
| 116 | + | ||
| 117 | +-- Le jour de l'application, pas celui du serveur : tout le calendrier d'Ex Ego | ||
| 118 | +-- se calcule en Europe/Paris. | ||
| 119 | +CREATE FUNCTION pg_temp.jour(decalage int) RETURNS date AS $$ | ||
| 120 | + SELECT ((now() AT TIME ZONE 'Europe/Paris')::date) + decalage | ||
| 121 | +$$ LANGUAGE sql STABLE; | ||
| 122 | + | ||
| 123 | +-- Tirage reproductible : un hachage de la graine plutôt qu'un PRNG. Le | ||
| 124 | +-- tirage dépend ainsi du jour ET de l'habitude — un `random()` qui ne | ||
| 125 | +-- regarderait que l'habitude, le planificateur le remonterait sur la liste | ||
| 126 | +-- VALUES pour l'évaluer une fois pour toutes, et chaque habitude retenue | ||
| 127 | +-- tomberait alors les 56 jours d'affilée. | ||
| 128 | +CREATE FUNCTION pg_temp.alea(graine text) RETURNS double precision AS $$ | ||
| 129 | + SELECT ('x' || substr(md5(graine), 1, 8))::bit(32)::bigint / 4294967296.0 | ||
| 130 | +$$ LANGUAGE sql IMMUTABLE; | ||
| 131 | + | ||
| 132 | +CREATE FUNCTION pg_temp.u(text) RETURNS uuid AS $$ | ||
| 133 | + SELECT id FROM users WHERE username = $1 | ||
| 134 | +$$ LANGUAGE sql STABLE; | ||
| 135 | + | ||
| 136 | +CREATE FUNCTION pg_temp.t(text) RETURNS uuid AS $$ | ||
| 137 | + SELECT id FROM teams WHERE name = $1 | ||
| 138 | +$$ LANGUAGE sql STABLE; | ||
| 139 | + | ||
| 140 | +CREATE FUNCTION pg_temp.c(text) RETURNS uuid AS $$ | ||
| 141 | + SELECT id FROM categories WHERE name = $1 | ||
| 142 | +$$ LANGUAGE sql STABLE; | ||
| 143 | + | ||
| 144 | +CREATE FUNCTION pg_temp.todo(text) RETURNS uuid AS $$ | ||
| 145 | + SELECT id FROM todos WHERE name = $1 | ||
| 146 | +$$ LANGUAGE sql STABLE; | ||
| 147 | + | ||
| 148 | +-- ─────────────────────────────────────────────────────── catégories | ||
| 149 | + | ||
| 150 | +-- L'ordre de cette liste EST la palette : PALETTE[rang de création] dans | ||
| 151 | +-- l'équipe, d'où l'horodatage croissant minute par minute. Étendre par la | ||
| 152 | +-- fin, jamais par le milieu, sinon toutes les captures changent de couleur. | ||
| 153 | +-- « Temps avec Alix » met trois catégories à part : leur temps sort des | ||
| 154 | +-- statistiques de l'équipe et va dans son propre panneau. | ||
| 155 | +INSERT INTO categories (id, name, archived, created_at, team_id, group_name) | ||
| 156 | +SELECT pg_temp.uuid_v7(now() - interval '60 days' + v.rang * interval '1 minute'), | ||
| 157 | + v.name, v.archived, | ||
| 158 | + now() - interval '60 days' + v.rang * interval '1 minute', | ||
| 159 | + pg_temp.t(v.team), v.groupe | ||
| 160 | + FROM (VALUES | ||
| 161 | + ( 1, 'Maison', 'Cuisine', false, NULL), | ||
| 162 | + ( 2, 'Maison', 'Courses', false, NULL), | ||
| 163 | + ( 3, 'Maison', 'Linge', false, NULL), | ||
| 164 | + ( 4, 'Maison', 'Ménage', false, NULL), | ||
| 165 | + ( 5, 'Maison', 'Enfants', false, NULL), | ||
| 166 | + ( 6, 'Maison', 'Administratif', false, NULL), | ||
| 167 | + ( 7, 'Asso du quartier', 'Réunions', false, NULL), | ||
| 168 | + ( 8, 'Asso du quartier', 'Buvette', false, NULL), | ||
| 169 | + ( 9, 'Asso du quartier', 'Communication', false, NULL), | ||
| 170 | + (10, 'Maison', 'Jeux', false, 'Temps avec Alix'), | ||
| 171 | + (11, 'Maison', 'Histoires', false, 'Temps avec Alix'), | ||
| 172 | + (12, 'Maison', 'Balade', false, 'Temps avec Alix'), | ||
| 173 | + (13, 'Maison', 'Jardin', true, NULL) | ||
| 174 | + ) AS v(rang, team, name, archived, groupe); | ||
| 175 | + | ||
| 176 | +-- ─────────────────────────────────────────────────────────── temps | ||
| 177 | + | ||
| 178 | +-- Une habitude = une catégorie, quelqu'un, une probabilité par jour et une | ||
| 179 | +-- fourchette de minutes. Sur 56 jours, ça donne des colonnes irrégulières | ||
| 180 | +-- mais crédibles, avec un déséquilibre assumé : camille porte ~60 % du temps | ||
| 181 | +-- de la maison. | ||
| 182 | +INSERT INTO time_entries (id, user_id, category_id, minutes, entry_date, created_at) | ||
| 183 | +SELECT pg_temp.uuid_v7(pg_temp.jour(-j.d) + time '20:00'), | ||
| 184 | + pg_temp.u(h.username), pg_temp.c(h.cat), | ||
| 185 | + GREATEST(5, (round((h.lo + pg_temp.alea(j.d || h.cat || h.username || '/min') | ||
| 186 | + * (h.hi - h.lo)) / 5.0) * 5)::int), | ||
| 187 | + pg_temp.jour(-j.d), | ||
| 188 | + pg_temp.jour(-j.d) + time '20:00' | ||
| 189 | + FROM generate_series(0, 55) AS j(d) | ||
| 190 | + CROSS JOIN (VALUES | ||
| 191 | + ('Cuisine', 'camille', 0.80, 25, 50), | ||
| 192 | + ('Cuisine', 'sacha', 0.55, 20, 45), | ||
| 193 | + ('Courses', 'camille', 0.28, 40, 70), | ||
| 194 | + ('Courses', 'sacha', 0.15, 30, 60), | ||
| 195 | + ('Linge', 'camille', 0.40, 20, 40), | ||
| 196 | + ('Linge', 'sacha', 0.28, 15, 35), | ||
| 197 | + ('Ménage', 'camille', 0.35, 30, 60), | ||
| 198 | + ('Ménage', 'sacha', 0.30, 25, 50), | ||
| 199 | + ('Enfants', 'camille', 0.70, 20, 60), | ||
| 200 | + ('Enfants', 'sacha', 0.55, 20, 50), | ||
| 201 | + ('Administratif', 'camille', 0.12, 20, 45), | ||
| 202 | + ('Administratif', 'sacha', 0.08, 15, 40), | ||
| 203 | + ('Réunions', 'noa', 0.18, 60, 90), | ||
| 204 | + ('Réunions', 'camille', 0.12, 60, 90), | ||
| 205 | + ('Réunions', 'sacha', 0.08, 60, 90), | ||
| 206 | + ('Buvette', 'noa', 0.10, 90, 180), | ||
| 207 | + ('Buvette', 'camille', 0.08, 60, 120), | ||
| 208 | + ('Buvette', 'sacha', 0.10, 60, 120), | ||
| 209 | + ('Communication', 'noa', 0.20, 20, 60), | ||
| 210 | + ('Communication', 'camille', 0.05, 20, 40), | ||
| 211 | + ('Communication', 'sacha', 0.03, 20, 40), | ||
| 212 | + -- Temps avec Alix : à part, donc absent des stats d'équipe. | ||
| 213 | + ('Jeux', 'camille', 0.50, 20, 45), | ||
| 214 | + ('Jeux', 'sacha', 0.60, 25, 60), | ||
| 215 | + ('Histoires', 'camille', 0.55, 10, 25), | ||
| 216 | + ('Histoires', 'sacha', 0.45, 10, 20), | ||
| 217 | + ('Balade', 'camille', 0.20, 45, 90), | ||
| 218 | + ('Balade', 'sacha', 0.25, 45, 120) | ||
| 219 | + ) AS h(cat, username, p, lo, hi) | ||
| 220 | + WHERE pg_temp.alea(j.d || h.cat || h.username) < h.p; | ||
| 221 | + | ||
| 222 | +-- ─────────────────────────────────────────────────────────── tâches | ||
| 223 | + | ||
| 224 | +-- Une todo est UNE ligne réutilisée : `state` est l'état courant (1 en cours, | ||
| 225 | +-- 2 à faire, 3 fait) et l'historique vit dans todo_state_changes. | ||
| 226 | +INSERT INTO todos (id, category_id, name, created_at, activation_date, state_id) | ||
| 227 | +SELECT pg_temp.uuid_v7(pg_temp.jour(-v.creee) + time '09:00'), | ||
| 228 | + pg_temp.c(v.cat), v.name, | ||
| 229 | + pg_temp.jour(-v.creee) + time '09:00', | ||
| 230 | + pg_temp.jour(v.activation), v.state | ||
| 231 | + FROM (VALUES | ||
| 232 | + ('Nettoyer le frigo', 'Ménage', 12, -2, 1), | ||
| 233 | + ('Prendre rendez-vous chez le pédiatre', 'Enfants', 6, -4, 2), | ||
| 234 | + -- Complétions ~hebdomadaires : la reprogrammation proposée par | ||
| 235 | + -- l'écran « effectuée » a de quoi être crédible (c'est sur cette | ||
| 236 | + -- tâche-là que se prend la capture tache-effectuee). | ||
| 237 | + ('Sortir les poubelles', 'Ménage', 45, 0, 2), | ||
| 238 | + ('Trier les papiers', 'Administratif', 3, 0, 2), | ||
| 239 | + ('Arroser les plantes', 'Ménage', 2, 3, 2), | ||
| 240 | + -- Prise par camille : le compte des captures voit le verrou de son | ||
| 241 | + -- côté (« Relâcher » et « Effectuée »). | ||
| 242 | + ('Ranger la chambre d’Alix', 'Enfants', 5, -1, 1) | ||
| 243 | + ) AS v(name, cat, creee, activation, state); | ||
| 244 | + | ||
| 245 | +INSERT INTO todo_state_changes (id, todo_id, state_id, user_id, changed_at) | ||
| 246 | +SELECT pg_temp.uuid_v7(pg_temp.jour(-v.jour) + time '09:00' + v.rang * interval '1 minute'), | ||
| 247 | + pg_temp.todo(v.todo), v.state, pg_temp.u(v.username), | ||
| 248 | + pg_temp.jour(-v.jour) + time '09:00' + v.rang * interval '1 minute' | ||
| 249 | + FROM (VALUES | ||
| 250 | + ('Nettoyer le frigo', 12, 2, 'camille', 0), | ||
| 251 | + ('Nettoyer le frigo', 1, 1, 'sacha', 1), | ||
| 252 | + ('Prendre rendez-vous chez le pédiatre', 6, 2, 'sacha', 0), | ||
| 253 | + ('Sortir les poubelles', 45, 2, 'camille', 0), | ||
| 254 | + ('Sortir les poubelles', 38, 3, 'sacha', 1), | ||
| 255 | + ('Sortir les poubelles', 38, 2, 'sacha', 2), | ||
| 256 | + ('Sortir les poubelles', 31, 3, 'camille', 3), | ||
| 257 | + ('Sortir les poubelles', 31, 2, 'camille', 4), | ||
| 258 | + ('Sortir les poubelles', 23, 3, 'sacha', 5), | ||
| 259 | + ('Sortir les poubelles', 23, 2, 'sacha', 6), | ||
| 260 | + ('Sortir les poubelles', 16, 3, 'camille', 7), | ||
| 261 | + ('Sortir les poubelles', 16, 2, 'camille', 8), | ||
| 262 | + ('Sortir les poubelles', 8, 3, 'sacha', 9), | ||
| 263 | + ('Sortir les poubelles', 8, 2, 'sacha', 10), | ||
| 264 | + ('Trier les papiers', 3, 2, 'camille', 0), | ||
| 265 | + ('Arroser les plantes', 2, 2, 'sacha', 0), | ||
| 266 | + ('Ranger la chambre d’Alix', 5, 2, 'sacha', 0), | ||
| 267 | + ('Ranger la chambre d’Alix', 0, 1, 'camille', 1) | ||
| 268 | + ) AS v(todo, jour, state, username, rang); | ||
| 269 | + | ||
| 270 | +-- Assignations informatives : elles nourrissent l'affichage, le filtre | ||
| 271 | +-- « Mes tâches » et le tri, jamais un droit. | ||
| 272 | +INSERT INTO todo_assignees (todo_id, user_id) | ||
| 273 | +SELECT pg_temp.todo(v.todo), pg_temp.u(v.username) | ||
| 274 | + FROM (VALUES | ||
| 275 | + ('Prendre rendez-vous chez le pédiatre', 'camille'), | ||
| 276 | + ('Arroser les plantes', 'sacha') | ||
| 277 | + ) AS v(todo, username); | ||
| 278 | + | ||
| 279 | +-- ─────────────────────────────────────────────────────── invitation | ||
| 280 | + | ||
| 281 | +-- Invitation en attente pour camille : c'est elle qui pose le compteur sur | ||
| 282 | +-- l'onglet Réglages et qui donne la carte abricot de la capture x-invitation. | ||
| 283 | +INSERT INTO invitations (id, team_id, invitee_id, inviter_id, created_at) | ||
| 284 | +VALUES (pg_temp.uuid_v7(now() - interval '1 day'), | ||
| 285 | + pg_temp.t('Copropriété'), pg_temp.u('camille'), pg_temp.u('noa'), | ||
| 286 | + now() - interval '1 day'); | ||
| 287 | + | ||
| 288 | +COMMIT; | ||
| 289 | +SQL | ||
| 290 | + | ||
| 291 | +# ────────────────────────────────────────────────────────── récapitulatif | ||
| 292 | + | ||
| 293 | +psql -X "$DATABASE_URL" -c " | ||
| 294 | +SELECT t.name AS equipe, | ||
| 295 | + (SELECT count(*) FROM team_members m WHERE m.team_id = t.id) AS membres, | ||
| 296 | + (SELECT count(*) FROM categories c | ||
| 297 | + WHERE c.team_id = t.id AND NOT c.archived) AS categories, | ||
| 298 | + (SELECT count(*) FROM time_entries e JOIN categories c ON c.id = e.category_id | ||
| 299 | + WHERE c.team_id = t.id) AS temps, | ||
| 300 | + (SELECT count(*) FROM todos td JOIN categories c ON c.id = td.category_id | ||
| 301 | + WHERE c.team_id = t.id) AS taches | ||
| 302 | + FROM teams t ORDER BY t.name;" | ||
| 303 | + | ||
| 304 | +cat <<EOF | ||
| 305 | +Base prête. Lancer le serveur dessus, puis les captures : | ||
| 306 | + | ||
| 307 | + DATABASE_URL='$DATABASE_URL' \\ | ||
| 308 | + BISCUIT_PRIVATE_KEY=\$(cargo run -- keygen | grep -o '[0-9a-f]\{64\}') \\ | ||
| 309 | + PORT=8090 cargo run -- serve | ||
| 310 | + | ||
| 311 | + CHROME=/chemin/vers/chrome TT_USER=camille TT_PASS=$TT_PASS node shots.mjs | ||
| 312 | +EOF | ||
modified
docs/site-documentation/shots.mjs +9 -7 | @@ -1,12 +1,14 @@ | ||
| 1 | 1 | // Captures d'écran du site de documentation — Chrome headless via |
| 2 | 2 | // puppeteer-core, calqué sur docs/slides/demo/capture.mjs. |
| 3 | 3 | // |
| 4 | -// Particularité : la documentation est trilingue, donc chaque écran est | |
| 5 | -// capturé trois fois, une par langue de l'utilisateur (la langue est un | |
| 6 | -// réglage de compte, pas du navigateur). Sortie dans static/img/<lang>/. | |
| 4 | +// Particularité : la documentation suit les quatre langues de l'application, | |
| 5 | +// donc chaque écran est capturé quatre fois, une par langue de l'utilisateur | |
| 6 | +// (la langue est un réglage de compte, pas du navigateur). Sortie dans | |
| 7 | +// static/img/<lang>/, avec le code de langue de l'application (pt-br compris, | |
| 8 | +// puisque c'est aussi celui des dossiers et des URL du site). | |
| 7 | 9 | // Les pages anonymes (connexion, erreurs) sont toujours rendues dans la |
| 8 | 10 | // langue par défaut de l'instance : elles ne sont capturées qu'une fois et |
| 9 | -// recopiées dans les trois dossiers. | |
| 11 | +// recopiées dans les autres dossiers. | |
| 10 | 12 | // |
| 11 | 13 | // Prérequis : un serveur exego sur la base DEV, seedée par |
| 12 | 14 | // docs/slides/demo/seed.mjs, et les dépendances node d'a11y/. |
| @@ -41,7 +43,7 @@ const CHROME = | ||
| 41 | 43 | |
| 42 | 44 | const HERE = path.dirname(fileURLToPath(import.meta.url)); |
| 43 | 45 | const IMG = path.join(HERE, 'static', 'img'); |
| 44 | -const LANGS = ['fr', 'en', 'de']; | |
| 46 | +const LANGS = ['fr', 'en', 'de', 'pt-br']; | |
| 45 | 47 | for (const l of LANGS) mkdirSync(path.join(IMG, l), { recursive: true }); |
| 46 | 48 | |
| 47 | 49 | // Semaine ISO précédente : toujours pleine, donc plus parlante que la semaine |
| @@ -108,7 +110,7 @@ async function go(pg, url) { | ||
| 108 | 110 | if (url.includes('#')) await wait(700); |
| 109 | 111 | } |
| 110 | 112 | |
| 111 | -// --- Écrans anonymes : une seule prise, recopiée dans les trois langues ---- | |
| 113 | +// --- Écrans anonymes : une seule prise, recopiée dans les autres langues --- | |
| 112 | 114 | { |
| 113 | 115 | const anon = await browser.createBrowserContext(); |
| 114 | 116 | const pg = await anon.newPage(); |
| @@ -262,7 +264,7 @@ for (const lang of LANGS) { | ||
| 262 | 264 | await go(page, '/temps/nouveau'); |
| 263 | 265 | await full(page, lang, 'minuteur'); |
| 264 | 266 | await go(page, '/stats'); |
| 265 | - await crop(page, lang, 'x-bandeau-minuteur', '.timer-banner', 8); | |
| 267 | + await crop(page, lang, 'x-bandeau-minuteur', '.timer-dock .timer-btn', 8); | |
| 266 | 268 | await go(page, '/temps/nouveau'); |
| 267 | 269 | await page.evaluate(() => { |
| 268 | 270 | document.querySelector('form[action="/timer/abandonner"] button')?.click(); |
| @@ -1,12 +1,14 @@ | |||
| 1 | // Captures d'écran du site de documentation — Chrome headless via | 1 | // Captures d'écran du site de documentation — Chrome headless via |
| 2 | // puppeteer-core, calqué sur docs/slides/demo/capture.mjs. | 2 | // puppeteer-core, calqué sur docs/slides/demo/capture.mjs. |
| 3 | // | 3 | // |
| 4 | -// Particularité : la documentation est trilingue, donc chaque écran est | 4 | +// Particularité : la documentation suit les quatre langues de l'application, |
| 5 | -// capturé trois fois, une par langue de l'utilisateur (la langue est un | 5 | +// donc chaque écran est capturé quatre fois, une par langue de l'utilisateur |
| 6 | -// réglage de compte, pas du navigateur). Sortie dans static/img/<lang>/. | 6 | +// (la langue est un réglage de compte, pas du navigateur). Sortie dans |
| 7 | +// static/img/<lang>/, avec le code de langue de l'application (pt-br compris, | ||
| 8 | +// puisque c'est aussi celui des dossiers et des URL du site). | ||
| 7 | // Les pages anonymes (connexion, erreurs) sont toujours rendues dans la | 9 | // Les pages anonymes (connexion, erreurs) sont toujours rendues dans la |
| 8 | // langue par défaut de l'instance : elles ne sont capturées qu'une fois et | 10 | // langue par défaut de l'instance : elles ne sont capturées qu'une fois et |
| 9 | -// recopiées dans les trois dossiers. | 11 | +// recopiées dans les autres dossiers. |
| 10 | // | 12 | // |
| 11 | // Prérequis : un serveur exego sur la base DEV, seedée par | 13 | // Prérequis : un serveur exego sur la base DEV, seedée par |
| 12 | // docs/slides/demo/seed.mjs, et les dépendances node d'a11y/. | 14 | // docs/slides/demo/seed.mjs, et les dépendances node d'a11y/. |
| @@ -41,7 +43,7 @@ const CHROME = | |||
| 41 | 43 | ||
| 42 | const HERE = path.dirname(fileURLToPath(import.meta.url)); | 44 | const HERE = path.dirname(fileURLToPath(import.meta.url)); |
| 43 | const IMG = path.join(HERE, 'static', 'img'); | 45 | const IMG = path.join(HERE, 'static', 'img'); |
| 44 | -const LANGS = ['fr', 'en', 'de']; | 46 | +const LANGS = ['fr', 'en', 'de', 'pt-br']; |
| 45 | for (const l of LANGS) mkdirSync(path.join(IMG, l), { recursive: true }); | 47 | for (const l of LANGS) mkdirSync(path.join(IMG, l), { recursive: true }); |
| 46 | 48 | ||
| 47 | // Semaine ISO précédente : toujours pleine, donc plus parlante que la semaine | 49 | // Semaine ISO précédente : toujours pleine, donc plus parlante que la semaine |
| @@ -108,7 +110,7 @@ async function go(pg, url) { | |||
| 108 | if (url.includes('#')) await wait(700); | 110 | if (url.includes('#')) await wait(700); |
| 109 | } | 111 | } |
| 110 | 112 | ||
| 111 | -// --- Écrans anonymes : une seule prise, recopiée dans les trois langues ---- | 113 | +// --- Écrans anonymes : une seule prise, recopiée dans les autres langues --- |
| 112 | { | 114 | { |
| 113 | const anon = await browser.createBrowserContext(); | 115 | const anon = await browser.createBrowserContext(); |
| 114 | const pg = await anon.newPage(); | 116 | const pg = await anon.newPage(); |
| @@ -262,7 +264,7 @@ for (const lang of LANGS) { | |||
| 262 | await go(page, '/temps/nouveau'); | 264 | await go(page, '/temps/nouveau'); |
| 263 | await full(page, lang, 'minuteur'); | 265 | await full(page, lang, 'minuteur'); |
| 264 | await go(page, '/stats'); | 266 | await go(page, '/stats'); |
| 265 | - await crop(page, lang, 'x-bandeau-minuteur', '.timer-banner', 8); | 267 | + await crop(page, lang, 'x-bandeau-minuteur', '.timer-dock .timer-btn', 8); |
| 266 | await go(page, '/temps/nouveau'); | 268 | await go(page, '/temps/nouveau'); |
| 267 | await page.evaluate(() => { | 269 | await page.evaluate(() => { |
| 268 | document.querySelector('form[action="/timer/abandonner"] button')?.click(); | 270 | document.querySelector('form[action="/timer/abandonner"] button')?.click(); |
modified
docs/site-documentation/static/img/de/ajouter-categorie.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/de/ajouter-categorie.jxl and b/docs/site-documentation/static/img/de/ajouter-categorie.jxl differ |
| Binary files a/docs/site-documentation/static/img/de/ajouter-categorie.jxl and b/docs/site-documentation/static/img/de/ajouter-categorie.jxl differ | Binary files a/docs/site-documentation/static/img/de/ajouter-categorie.jxl and b/docs/site-documentation/static/img/de/ajouter-categorie.jxl differ |
modified
docs/site-documentation/static/img/de/ajouter-categorie.png +0 -0 | Binary files a/docs/site-documentation/static/img/de/ajouter-categorie.png and b/docs/site-documentation/static/img/de/ajouter-categorie.png differ |
| Binary files a/docs/site-documentation/static/img/de/ajouter-categorie.png and b/docs/site-documentation/static/img/de/ajouter-categorie.png differ | Binary files a/docs/site-documentation/static/img/de/ajouter-categorie.png and b/docs/site-documentation/static/img/de/ajouter-categorie.png differ |
modified
docs/site-documentation/static/img/de/ajouter-choix.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/de/ajouter-choix.jxl and b/docs/site-documentation/static/img/de/ajouter-choix.jxl differ |
| Binary files a/docs/site-documentation/static/img/de/ajouter-choix.jxl and b/docs/site-documentation/static/img/de/ajouter-choix.jxl differ | Binary files a/docs/site-documentation/static/img/de/ajouter-choix.jxl and b/docs/site-documentation/static/img/de/ajouter-choix.jxl differ |
modified
docs/site-documentation/static/img/de/ajouter-choix.png +0 -0 | Binary files a/docs/site-documentation/static/img/de/ajouter-choix.png and b/docs/site-documentation/static/img/de/ajouter-choix.png differ |
| Binary files a/docs/site-documentation/static/img/de/ajouter-choix.png and b/docs/site-documentation/static/img/de/ajouter-choix.png differ | Binary files a/docs/site-documentation/static/img/de/ajouter-choix.png and b/docs/site-documentation/static/img/de/ajouter-choix.png differ |
modified
docs/site-documentation/static/img/de/ajouter-duree.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/de/ajouter-duree.jxl and b/docs/site-documentation/static/img/de/ajouter-duree.jxl differ |
| Binary files a/docs/site-documentation/static/img/de/ajouter-duree.jxl and b/docs/site-documentation/static/img/de/ajouter-duree.jxl differ | Binary files a/docs/site-documentation/static/img/de/ajouter-duree.jxl and b/docs/site-documentation/static/img/de/ajouter-duree.jxl differ |
modified
docs/site-documentation/static/img/de/ajouter-duree.png +0 -0 | Binary files a/docs/site-documentation/static/img/de/ajouter-duree.png and b/docs/site-documentation/static/img/de/ajouter-duree.png differ |
| Binary files a/docs/site-documentation/static/img/de/ajouter-duree.png and b/docs/site-documentation/static/img/de/ajouter-duree.png differ | Binary files a/docs/site-documentation/static/img/de/ajouter-duree.png and b/docs/site-documentation/static/img/de/ajouter-duree.png differ |
modified
docs/site-documentation/static/img/de/categories.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/de/categories.jxl and b/docs/site-documentation/static/img/de/categories.jxl differ |
| Binary files a/docs/site-documentation/static/img/de/categories.jxl and b/docs/site-documentation/static/img/de/categories.jxl differ | Binary files a/docs/site-documentation/static/img/de/categories.jxl and b/docs/site-documentation/static/img/de/categories.jxl differ |
modified
docs/site-documentation/static/img/de/categories.png +0 -0 | Binary files a/docs/site-documentation/static/img/de/categories.png and b/docs/site-documentation/static/img/de/categories.png differ |
| Binary files a/docs/site-documentation/static/img/de/categories.png and b/docs/site-documentation/static/img/de/categories.png differ | Binary files a/docs/site-documentation/static/img/de/categories.png and b/docs/site-documentation/static/img/de/categories.png differ |
modified
docs/site-documentation/static/img/de/connexion.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/de/connexion.jxl and b/docs/site-documentation/static/img/de/connexion.jxl differ |
| Binary files a/docs/site-documentation/static/img/de/connexion.jxl and b/docs/site-documentation/static/img/de/connexion.jxl differ | Binary files a/docs/site-documentation/static/img/de/connexion.jxl and b/docs/site-documentation/static/img/de/connexion.jxl differ |
modified
docs/site-documentation/static/img/de/connexion.png +0 -0 | Binary files a/docs/site-documentation/static/img/de/connexion.png and b/docs/site-documentation/static/img/de/connexion.png differ |
| Binary files a/docs/site-documentation/static/img/de/connexion.png and b/docs/site-documentation/static/img/de/connexion.png differ | Binary files a/docs/site-documentation/static/img/de/connexion.png and b/docs/site-documentation/static/img/de/connexion.png differ |
modified
docs/site-documentation/static/img/de/equipes.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/de/equipes.jxl and b/docs/site-documentation/static/img/de/equipes.jxl differ |
| Binary files a/docs/site-documentation/static/img/de/equipes.jxl and b/docs/site-documentation/static/img/de/equipes.jxl differ | Binary files a/docs/site-documentation/static/img/de/equipes.jxl and b/docs/site-documentation/static/img/de/equipes.jxl differ |
modified
docs/site-documentation/static/img/de/equipes.png +0 -0 | Binary files a/docs/site-documentation/static/img/de/equipes.png and b/docs/site-documentation/static/img/de/equipes.png differ |
| Binary files a/docs/site-documentation/static/img/de/equipes.png and b/docs/site-documentation/static/img/de/equipes.png differ | Binary files a/docs/site-documentation/static/img/de/equipes.png and b/docs/site-documentation/static/img/de/equipes.png differ |
modified
docs/site-documentation/static/img/de/mes-temps.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/de/mes-temps.jxl and b/docs/site-documentation/static/img/de/mes-temps.jxl differ |
| Binary files a/docs/site-documentation/static/img/de/mes-temps.jxl and b/docs/site-documentation/static/img/de/mes-temps.jxl differ | Binary files a/docs/site-documentation/static/img/de/mes-temps.jxl and b/docs/site-documentation/static/img/de/mes-temps.jxl differ |
modified
docs/site-documentation/static/img/de/mes-temps.png +0 -0 | Binary files a/docs/site-documentation/static/img/de/mes-temps.png and b/docs/site-documentation/static/img/de/mes-temps.png differ |
| Binary files a/docs/site-documentation/static/img/de/mes-temps.png and b/docs/site-documentation/static/img/de/mes-temps.png differ | Binary files a/docs/site-documentation/static/img/de/mes-temps.png and b/docs/site-documentation/static/img/de/mes-temps.png differ |
modified
docs/site-documentation/static/img/de/minuteur.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/de/minuteur.jxl and b/docs/site-documentation/static/img/de/minuteur.jxl differ |
| Binary files a/docs/site-documentation/static/img/de/minuteur.jxl and b/docs/site-documentation/static/img/de/minuteur.jxl differ | Binary files a/docs/site-documentation/static/img/de/minuteur.jxl and b/docs/site-documentation/static/img/de/minuteur.jxl differ |
modified
docs/site-documentation/static/img/de/minuteur.png +0 -0 | Binary files a/docs/site-documentation/static/img/de/minuteur.png and b/docs/site-documentation/static/img/de/minuteur.png differ |
| Binary files a/docs/site-documentation/static/img/de/minuteur.png and b/docs/site-documentation/static/img/de/minuteur.png differ | Binary files a/docs/site-documentation/static/img/de/minuteur.png and b/docs/site-documentation/static/img/de/minuteur.png differ |
modified
docs/site-documentation/static/img/de/modifier-temps.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/de/modifier-temps.jxl and b/docs/site-documentation/static/img/de/modifier-temps.jxl differ |
| Binary files a/docs/site-documentation/static/img/de/modifier-temps.jxl and b/docs/site-documentation/static/img/de/modifier-temps.jxl differ | Binary files a/docs/site-documentation/static/img/de/modifier-temps.jxl and b/docs/site-documentation/static/img/de/modifier-temps.jxl differ |
modified
docs/site-documentation/static/img/de/modifier-temps.png +0 -0 | Binary files a/docs/site-documentation/static/img/de/modifier-temps.png and b/docs/site-documentation/static/img/de/modifier-temps.png differ |
| Binary files a/docs/site-documentation/static/img/de/modifier-temps.png and b/docs/site-documentation/static/img/de/modifier-temps.png differ | Binary files a/docs/site-documentation/static/img/de/modifier-temps.png and b/docs/site-documentation/static/img/de/modifier-temps.png differ |
modified
docs/site-documentation/static/img/de/parametres.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/de/parametres.jxl and b/docs/site-documentation/static/img/de/parametres.jxl differ |
| Binary files a/docs/site-documentation/static/img/de/parametres.jxl and b/docs/site-documentation/static/img/de/parametres.jxl differ | Binary files a/docs/site-documentation/static/img/de/parametres.jxl and b/docs/site-documentation/static/img/de/parametres.jxl differ |
modified
docs/site-documentation/static/img/de/parametres.png +0 -0 | Binary files a/docs/site-documentation/static/img/de/parametres.png and b/docs/site-documentation/static/img/de/parametres.png differ |
| Binary files a/docs/site-documentation/static/img/de/parametres.png and b/docs/site-documentation/static/img/de/parametres.png differ | Binary files a/docs/site-documentation/static/img/de/parametres.png and b/docs/site-documentation/static/img/de/parametres.png differ |
modified
docs/site-documentation/static/img/de/stats-asso.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/de/stats-asso.jxl and b/docs/site-documentation/static/img/de/stats-asso.jxl differ |
| Binary files a/docs/site-documentation/static/img/de/stats-asso.jxl and b/docs/site-documentation/static/img/de/stats-asso.jxl differ | Binary files a/docs/site-documentation/static/img/de/stats-asso.jxl and b/docs/site-documentation/static/img/de/stats-asso.jxl differ |
modified
docs/site-documentation/static/img/de/stats-asso.png +0 -0 | Binary files a/docs/site-documentation/static/img/de/stats-asso.png and b/docs/site-documentation/static/img/de/stats-asso.png differ |
| Binary files a/docs/site-documentation/static/img/de/stats-asso.png and b/docs/site-documentation/static/img/de/stats-asso.png differ | Binary files a/docs/site-documentation/static/img/de/stats-asso.png and b/docs/site-documentation/static/img/de/stats-asso.png differ |
modified
docs/site-documentation/static/img/de/stats-detail.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/de/stats-detail.jxl and b/docs/site-documentation/static/img/de/stats-detail.jxl differ |
| Binary files a/docs/site-documentation/static/img/de/stats-detail.jxl and b/docs/site-documentation/static/img/de/stats-detail.jxl differ | Binary files a/docs/site-documentation/static/img/de/stats-detail.jxl and b/docs/site-documentation/static/img/de/stats-detail.jxl differ |
modified
docs/site-documentation/static/img/de/stats-detail.png +0 -0 | Binary files a/docs/site-documentation/static/img/de/stats-detail.png and b/docs/site-documentation/static/img/de/stats-detail.png differ |
| Binary files a/docs/site-documentation/static/img/de/stats-detail.png and b/docs/site-documentation/static/img/de/stats-detail.png differ | Binary files a/docs/site-documentation/static/img/de/stats-detail.png and b/docs/site-documentation/static/img/de/stats-detail.png differ |
modified
docs/site-documentation/static/img/de/stats-groupe.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/de/stats-groupe.jxl and b/docs/site-documentation/static/img/de/stats-groupe.jxl differ |
| Binary files a/docs/site-documentation/static/img/de/stats-groupe.jxl and b/docs/site-documentation/static/img/de/stats-groupe.jxl differ | Binary files a/docs/site-documentation/static/img/de/stats-groupe.jxl and b/docs/site-documentation/static/img/de/stats-groupe.jxl differ |
modified
docs/site-documentation/static/img/de/stats-groupe.png +0 -0 | Binary files a/docs/site-documentation/static/img/de/stats-groupe.png and b/docs/site-documentation/static/img/de/stats-groupe.png differ |
| Binary files a/docs/site-documentation/static/img/de/stats-groupe.png and b/docs/site-documentation/static/img/de/stats-groupe.png differ | Binary files a/docs/site-documentation/static/img/de/stats-groupe.png and b/docs/site-documentation/static/img/de/stats-groupe.png differ |
modified
docs/site-documentation/static/img/de/stats.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/de/stats.jxl and b/docs/site-documentation/static/img/de/stats.jxl differ |
| Binary files a/docs/site-documentation/static/img/de/stats.jxl and b/docs/site-documentation/static/img/de/stats.jxl differ | Binary files a/docs/site-documentation/static/img/de/stats.jxl and b/docs/site-documentation/static/img/de/stats.jxl differ |
modified
docs/site-documentation/static/img/de/stats.png +0 -0 | Binary files a/docs/site-documentation/static/img/de/stats.png and b/docs/site-documentation/static/img/de/stats.png differ |
| Binary files a/docs/site-documentation/static/img/de/stats.png and b/docs/site-documentation/static/img/de/stats.png differ | Binary files a/docs/site-documentation/static/img/de/stats.png and b/docs/site-documentation/static/img/de/stats.png differ |
modified
docs/site-documentation/static/img/de/tache-effectuee.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/de/tache-effectuee.jxl and b/docs/site-documentation/static/img/de/tache-effectuee.jxl differ |
| Binary files a/docs/site-documentation/static/img/de/tache-effectuee.jxl and b/docs/site-documentation/static/img/de/tache-effectuee.jxl differ | Binary files a/docs/site-documentation/static/img/de/tache-effectuee.jxl and b/docs/site-documentation/static/img/de/tache-effectuee.jxl differ |
modified
docs/site-documentation/static/img/de/tache-effectuee.png +0 -0 | Binary files a/docs/site-documentation/static/img/de/tache-effectuee.png and b/docs/site-documentation/static/img/de/tache-effectuee.png differ |
| Binary files a/docs/site-documentation/static/img/de/tache-effectuee.png and b/docs/site-documentation/static/img/de/tache-effectuee.png differ | Binary files a/docs/site-documentation/static/img/de/tache-effectuee.png and b/docs/site-documentation/static/img/de/tache-effectuee.png differ |
modified
docs/site-documentation/static/img/de/tache-modifier.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/de/tache-modifier.jxl and b/docs/site-documentation/static/img/de/tache-modifier.jxl differ |
| Binary files a/docs/site-documentation/static/img/de/tache-modifier.jxl and b/docs/site-documentation/static/img/de/tache-modifier.jxl differ | Binary files a/docs/site-documentation/static/img/de/tache-modifier.jxl and b/docs/site-documentation/static/img/de/tache-modifier.jxl differ |
modified
docs/site-documentation/static/img/de/tache-modifier.png +0 -0 | Binary files a/docs/site-documentation/static/img/de/tache-modifier.png and b/docs/site-documentation/static/img/de/tache-modifier.png differ |
| Binary files a/docs/site-documentation/static/img/de/tache-modifier.png and b/docs/site-documentation/static/img/de/tache-modifier.png differ | Binary files a/docs/site-documentation/static/img/de/tache-modifier.png and b/docs/site-documentation/static/img/de/tache-modifier.png differ |
modified
docs/site-documentation/static/img/de/tache-nouvelle.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/de/tache-nouvelle.jxl and b/docs/site-documentation/static/img/de/tache-nouvelle.jxl differ |
| Binary files a/docs/site-documentation/static/img/de/tache-nouvelle.jxl and b/docs/site-documentation/static/img/de/tache-nouvelle.jxl differ | Binary files a/docs/site-documentation/static/img/de/tache-nouvelle.jxl and b/docs/site-documentation/static/img/de/tache-nouvelle.jxl differ |
modified
docs/site-documentation/static/img/de/tache-nouvelle.png +0 -0 | Binary files a/docs/site-documentation/static/img/de/tache-nouvelle.png and b/docs/site-documentation/static/img/de/tache-nouvelle.png differ |
| Binary files a/docs/site-documentation/static/img/de/tache-nouvelle.png and b/docs/site-documentation/static/img/de/tache-nouvelle.png differ | Binary files a/docs/site-documentation/static/img/de/tache-nouvelle.png and b/docs/site-documentation/static/img/de/tache-nouvelle.png differ |
modified
docs/site-documentation/static/img/de/taches.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/de/taches.jxl and b/docs/site-documentation/static/img/de/taches.jxl differ |
| Binary files a/docs/site-documentation/static/img/de/taches.jxl and b/docs/site-documentation/static/img/de/taches.jxl differ | Binary files a/docs/site-documentation/static/img/de/taches.jxl and b/docs/site-documentation/static/img/de/taches.jxl differ |
modified
docs/site-documentation/static/img/de/taches.png +0 -0 | Binary files a/docs/site-documentation/static/img/de/taches.png and b/docs/site-documentation/static/img/de/taches.png differ |
| Binary files a/docs/site-documentation/static/img/de/taches.png and b/docs/site-documentation/static/img/de/taches.png differ | Binary files a/docs/site-documentation/static/img/de/taches.png and b/docs/site-documentation/static/img/de/taches.png differ |
modified
docs/site-documentation/static/img/de/x-bandeau-minuteur.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/de/x-bandeau-minuteur.jxl and b/docs/site-documentation/static/img/de/x-bandeau-minuteur.jxl differ |
| Binary files a/docs/site-documentation/static/img/de/x-bandeau-minuteur.jxl and b/docs/site-documentation/static/img/de/x-bandeau-minuteur.jxl differ | Binary files a/docs/site-documentation/static/img/de/x-bandeau-minuteur.jxl and b/docs/site-documentation/static/img/de/x-bandeau-minuteur.jxl differ |
modified
docs/site-documentation/static/img/de/x-bandeau-minuteur.png +0 -0 | Binary files a/docs/site-documentation/static/img/de/x-bandeau-minuteur.png and b/docs/site-documentation/static/img/de/x-bandeau-minuteur.png differ |
| Binary files a/docs/site-documentation/static/img/de/x-bandeau-minuteur.png and b/docs/site-documentation/static/img/de/x-bandeau-minuteur.png differ | Binary files a/docs/site-documentation/static/img/de/x-bandeau-minuteur.png and b/docs/site-documentation/static/img/de/x-bandeau-minuteur.png differ |
modified
docs/site-documentation/static/img/de/x-categorie-pill.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/de/x-categorie-pill.jxl and b/docs/site-documentation/static/img/de/x-categorie-pill.jxl differ |
| Binary files a/docs/site-documentation/static/img/de/x-categorie-pill.jxl and b/docs/site-documentation/static/img/de/x-categorie-pill.jxl differ | Binary files a/docs/site-documentation/static/img/de/x-categorie-pill.jxl and b/docs/site-documentation/static/img/de/x-categorie-pill.jxl differ |
modified
docs/site-documentation/static/img/de/x-categorie-pill.png +0 -0 | Binary files a/docs/site-documentation/static/img/de/x-categorie-pill.png and b/docs/site-documentation/static/img/de/x-categorie-pill.png differ |
| Binary files a/docs/site-documentation/static/img/de/x-categorie-pill.png and b/docs/site-documentation/static/img/de/x-categorie-pill.png differ | Binary files a/docs/site-documentation/static/img/de/x-categorie-pill.png and b/docs/site-documentation/static/img/de/x-categorie-pill.png differ |
modified
docs/site-documentation/static/img/de/x-entete.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/de/x-entete.jxl and b/docs/site-documentation/static/img/de/x-entete.jxl differ |
| Binary files a/docs/site-documentation/static/img/de/x-entete.jxl and b/docs/site-documentation/static/img/de/x-entete.jxl differ | Binary files a/docs/site-documentation/static/img/de/x-entete.jxl and b/docs/site-documentation/static/img/de/x-entete.jxl differ |
modified
docs/site-documentation/static/img/de/x-entete.png +0 -0 | Binary files a/docs/site-documentation/static/img/de/x-entete.png and b/docs/site-documentation/static/img/de/x-entete.png differ |
| Binary files a/docs/site-documentation/static/img/de/x-entete.png and b/docs/site-documentation/static/img/de/x-entete.png differ | Binary files a/docs/site-documentation/static/img/de/x-entete.png and b/docs/site-documentation/static/img/de/x-entete.png differ |
modified
docs/site-documentation/static/img/de/x-stepper.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/de/x-stepper.jxl and b/docs/site-documentation/static/img/de/x-stepper.jxl differ |
| Binary files a/docs/site-documentation/static/img/de/x-stepper.jxl and b/docs/site-documentation/static/img/de/x-stepper.jxl differ | Binary files a/docs/site-documentation/static/img/de/x-stepper.jxl and b/docs/site-documentation/static/img/de/x-stepper.jxl differ |
modified
docs/site-documentation/static/img/de/x-stepper.png +0 -0 | Binary files a/docs/site-documentation/static/img/de/x-stepper.png and b/docs/site-documentation/static/img/de/x-stepper.png differ |
| Binary files a/docs/site-documentation/static/img/de/x-stepper.png and b/docs/site-documentation/static/img/de/x-stepper.png differ | Binary files a/docs/site-documentation/static/img/de/x-stepper.png and b/docs/site-documentation/static/img/de/x-stepper.png differ |
modified
docs/site-documentation/static/img/de/x-todo-carte.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/de/x-todo-carte.jxl and b/docs/site-documentation/static/img/de/x-todo-carte.jxl differ |
| Binary files a/docs/site-documentation/static/img/de/x-todo-carte.jxl and b/docs/site-documentation/static/img/de/x-todo-carte.jxl differ | Binary files a/docs/site-documentation/static/img/de/x-todo-carte.jxl and b/docs/site-documentation/static/img/de/x-todo-carte.jxl differ |
modified
docs/site-documentation/static/img/de/x-todo-carte.png +0 -0 | Binary files a/docs/site-documentation/static/img/de/x-todo-carte.png and b/docs/site-documentation/static/img/de/x-todo-carte.png differ |
| Binary files a/docs/site-documentation/static/img/de/x-todo-carte.png and b/docs/site-documentation/static/img/de/x-todo-carte.png differ | Binary files a/docs/site-documentation/static/img/de/x-todo-carte.png and b/docs/site-documentation/static/img/de/x-todo-carte.png differ |
modified
docs/site-documentation/static/img/en/ajouter-categorie.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/en/ajouter-categorie.jxl and b/docs/site-documentation/static/img/en/ajouter-categorie.jxl differ |
| Binary files a/docs/site-documentation/static/img/en/ajouter-categorie.jxl and b/docs/site-documentation/static/img/en/ajouter-categorie.jxl differ | Binary files a/docs/site-documentation/static/img/en/ajouter-categorie.jxl and b/docs/site-documentation/static/img/en/ajouter-categorie.jxl differ |
modified
docs/site-documentation/static/img/en/ajouter-categorie.png +0 -0 | Binary files a/docs/site-documentation/static/img/en/ajouter-categorie.png and b/docs/site-documentation/static/img/en/ajouter-categorie.png differ |
| Binary files a/docs/site-documentation/static/img/en/ajouter-categorie.png and b/docs/site-documentation/static/img/en/ajouter-categorie.png differ | Binary files a/docs/site-documentation/static/img/en/ajouter-categorie.png and b/docs/site-documentation/static/img/en/ajouter-categorie.png differ |
modified
docs/site-documentation/static/img/en/ajouter-choix.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/en/ajouter-choix.jxl and b/docs/site-documentation/static/img/en/ajouter-choix.jxl differ |
| Binary files a/docs/site-documentation/static/img/en/ajouter-choix.jxl and b/docs/site-documentation/static/img/en/ajouter-choix.jxl differ | Binary files a/docs/site-documentation/static/img/en/ajouter-choix.jxl and b/docs/site-documentation/static/img/en/ajouter-choix.jxl differ |
modified
docs/site-documentation/static/img/en/ajouter-choix.png +0 -0 | Binary files a/docs/site-documentation/static/img/en/ajouter-choix.png and b/docs/site-documentation/static/img/en/ajouter-choix.png differ |
| Binary files a/docs/site-documentation/static/img/en/ajouter-choix.png and b/docs/site-documentation/static/img/en/ajouter-choix.png differ | Binary files a/docs/site-documentation/static/img/en/ajouter-choix.png and b/docs/site-documentation/static/img/en/ajouter-choix.png differ |
modified
docs/site-documentation/static/img/en/ajouter-duree.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/en/ajouter-duree.jxl and b/docs/site-documentation/static/img/en/ajouter-duree.jxl differ |
| Binary files a/docs/site-documentation/static/img/en/ajouter-duree.jxl and b/docs/site-documentation/static/img/en/ajouter-duree.jxl differ | Binary files a/docs/site-documentation/static/img/en/ajouter-duree.jxl and b/docs/site-documentation/static/img/en/ajouter-duree.jxl differ |
modified
docs/site-documentation/static/img/en/ajouter-duree.png +0 -0 | Binary files a/docs/site-documentation/static/img/en/ajouter-duree.png and b/docs/site-documentation/static/img/en/ajouter-duree.png differ |
| Binary files a/docs/site-documentation/static/img/en/ajouter-duree.png and b/docs/site-documentation/static/img/en/ajouter-duree.png differ | Binary files a/docs/site-documentation/static/img/en/ajouter-duree.png and b/docs/site-documentation/static/img/en/ajouter-duree.png differ |
modified
docs/site-documentation/static/img/en/categories.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/en/categories.jxl and b/docs/site-documentation/static/img/en/categories.jxl differ |
| Binary files a/docs/site-documentation/static/img/en/categories.jxl and b/docs/site-documentation/static/img/en/categories.jxl differ | Binary files a/docs/site-documentation/static/img/en/categories.jxl and b/docs/site-documentation/static/img/en/categories.jxl differ |
modified
docs/site-documentation/static/img/en/categories.png +0 -0 | Binary files a/docs/site-documentation/static/img/en/categories.png and b/docs/site-documentation/static/img/en/categories.png differ |
| Binary files a/docs/site-documentation/static/img/en/categories.png and b/docs/site-documentation/static/img/en/categories.png differ | Binary files a/docs/site-documentation/static/img/en/categories.png and b/docs/site-documentation/static/img/en/categories.png differ |
modified
docs/site-documentation/static/img/en/connexion.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/en/connexion.jxl and b/docs/site-documentation/static/img/en/connexion.jxl differ |
| Binary files a/docs/site-documentation/static/img/en/connexion.jxl and b/docs/site-documentation/static/img/en/connexion.jxl differ | Binary files a/docs/site-documentation/static/img/en/connexion.jxl and b/docs/site-documentation/static/img/en/connexion.jxl differ |
modified
docs/site-documentation/static/img/en/connexion.png +0 -0 | Binary files a/docs/site-documentation/static/img/en/connexion.png and b/docs/site-documentation/static/img/en/connexion.png differ |
| Binary files a/docs/site-documentation/static/img/en/connexion.png and b/docs/site-documentation/static/img/en/connexion.png differ | Binary files a/docs/site-documentation/static/img/en/connexion.png and b/docs/site-documentation/static/img/en/connexion.png differ |
modified
docs/site-documentation/static/img/en/equipes.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/en/equipes.jxl and b/docs/site-documentation/static/img/en/equipes.jxl differ |
| Binary files a/docs/site-documentation/static/img/en/equipes.jxl and b/docs/site-documentation/static/img/en/equipes.jxl differ | Binary files a/docs/site-documentation/static/img/en/equipes.jxl and b/docs/site-documentation/static/img/en/equipes.jxl differ |
modified
docs/site-documentation/static/img/en/equipes.png +0 -0 | Binary files a/docs/site-documentation/static/img/en/equipes.png and b/docs/site-documentation/static/img/en/equipes.png differ |
| Binary files a/docs/site-documentation/static/img/en/equipes.png and b/docs/site-documentation/static/img/en/equipes.png differ | Binary files a/docs/site-documentation/static/img/en/equipes.png and b/docs/site-documentation/static/img/en/equipes.png differ |
modified
docs/site-documentation/static/img/en/mes-temps.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/en/mes-temps.jxl and b/docs/site-documentation/static/img/en/mes-temps.jxl differ |
| Binary files a/docs/site-documentation/static/img/en/mes-temps.jxl and b/docs/site-documentation/static/img/en/mes-temps.jxl differ | Binary files a/docs/site-documentation/static/img/en/mes-temps.jxl and b/docs/site-documentation/static/img/en/mes-temps.jxl differ |
modified
docs/site-documentation/static/img/en/mes-temps.png +0 -0 | Binary files a/docs/site-documentation/static/img/en/mes-temps.png and b/docs/site-documentation/static/img/en/mes-temps.png differ |
| Binary files a/docs/site-documentation/static/img/en/mes-temps.png and b/docs/site-documentation/static/img/en/mes-temps.png differ | Binary files a/docs/site-documentation/static/img/en/mes-temps.png and b/docs/site-documentation/static/img/en/mes-temps.png differ |
modified
docs/site-documentation/static/img/en/minuteur.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/en/minuteur.jxl and b/docs/site-documentation/static/img/en/minuteur.jxl differ |
| Binary files a/docs/site-documentation/static/img/en/minuteur.jxl and b/docs/site-documentation/static/img/en/minuteur.jxl differ | Binary files a/docs/site-documentation/static/img/en/minuteur.jxl and b/docs/site-documentation/static/img/en/minuteur.jxl differ |
modified
docs/site-documentation/static/img/en/minuteur.png +0 -0 | Binary files a/docs/site-documentation/static/img/en/minuteur.png and b/docs/site-documentation/static/img/en/minuteur.png differ |
| Binary files a/docs/site-documentation/static/img/en/minuteur.png and b/docs/site-documentation/static/img/en/minuteur.png differ | Binary files a/docs/site-documentation/static/img/en/minuteur.png and b/docs/site-documentation/static/img/en/minuteur.png differ |
modified
docs/site-documentation/static/img/en/modifier-temps.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/en/modifier-temps.jxl and b/docs/site-documentation/static/img/en/modifier-temps.jxl differ |
| Binary files a/docs/site-documentation/static/img/en/modifier-temps.jxl and b/docs/site-documentation/static/img/en/modifier-temps.jxl differ | Binary files a/docs/site-documentation/static/img/en/modifier-temps.jxl and b/docs/site-documentation/static/img/en/modifier-temps.jxl differ |
modified
docs/site-documentation/static/img/en/modifier-temps.png +0 -0 | Binary files a/docs/site-documentation/static/img/en/modifier-temps.png and b/docs/site-documentation/static/img/en/modifier-temps.png differ |
| Binary files a/docs/site-documentation/static/img/en/modifier-temps.png and b/docs/site-documentation/static/img/en/modifier-temps.png differ | Binary files a/docs/site-documentation/static/img/en/modifier-temps.png and b/docs/site-documentation/static/img/en/modifier-temps.png differ |
modified
docs/site-documentation/static/img/en/parametres.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/en/parametres.jxl and b/docs/site-documentation/static/img/en/parametres.jxl differ |
| Binary files a/docs/site-documentation/static/img/en/parametres.jxl and b/docs/site-documentation/static/img/en/parametres.jxl differ | Binary files a/docs/site-documentation/static/img/en/parametres.jxl and b/docs/site-documentation/static/img/en/parametres.jxl differ |
modified
docs/site-documentation/static/img/en/parametres.png +0 -0 | Binary files a/docs/site-documentation/static/img/en/parametres.png and b/docs/site-documentation/static/img/en/parametres.png differ |
| Binary files a/docs/site-documentation/static/img/en/parametres.png and b/docs/site-documentation/static/img/en/parametres.png differ | Binary files a/docs/site-documentation/static/img/en/parametres.png and b/docs/site-documentation/static/img/en/parametres.png differ |
modified
docs/site-documentation/static/img/en/stats-asso.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/en/stats-asso.jxl and b/docs/site-documentation/static/img/en/stats-asso.jxl differ |
| Binary files a/docs/site-documentation/static/img/en/stats-asso.jxl and b/docs/site-documentation/static/img/en/stats-asso.jxl differ | Binary files a/docs/site-documentation/static/img/en/stats-asso.jxl and b/docs/site-documentation/static/img/en/stats-asso.jxl differ |
modified
docs/site-documentation/static/img/en/stats-asso.png +0 -0 | Binary files a/docs/site-documentation/static/img/en/stats-asso.png and b/docs/site-documentation/static/img/en/stats-asso.png differ |
| Binary files a/docs/site-documentation/static/img/en/stats-asso.png and b/docs/site-documentation/static/img/en/stats-asso.png differ | Binary files a/docs/site-documentation/static/img/en/stats-asso.png and b/docs/site-documentation/static/img/en/stats-asso.png differ |
modified
docs/site-documentation/static/img/en/stats-detail.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/en/stats-detail.jxl and b/docs/site-documentation/static/img/en/stats-detail.jxl differ |
| Binary files a/docs/site-documentation/static/img/en/stats-detail.jxl and b/docs/site-documentation/static/img/en/stats-detail.jxl differ | Binary files a/docs/site-documentation/static/img/en/stats-detail.jxl and b/docs/site-documentation/static/img/en/stats-detail.jxl differ |
modified
docs/site-documentation/static/img/en/stats-detail.png +0 -0 | Binary files a/docs/site-documentation/static/img/en/stats-detail.png and b/docs/site-documentation/static/img/en/stats-detail.png differ |
| Binary files a/docs/site-documentation/static/img/en/stats-detail.png and b/docs/site-documentation/static/img/en/stats-detail.png differ | Binary files a/docs/site-documentation/static/img/en/stats-detail.png and b/docs/site-documentation/static/img/en/stats-detail.png differ |
modified
docs/site-documentation/static/img/en/stats-groupe.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/en/stats-groupe.jxl and b/docs/site-documentation/static/img/en/stats-groupe.jxl differ |
| Binary files a/docs/site-documentation/static/img/en/stats-groupe.jxl and b/docs/site-documentation/static/img/en/stats-groupe.jxl differ | Binary files a/docs/site-documentation/static/img/en/stats-groupe.jxl and b/docs/site-documentation/static/img/en/stats-groupe.jxl differ |
modified
docs/site-documentation/static/img/en/stats-groupe.png +0 -0 | Binary files a/docs/site-documentation/static/img/en/stats-groupe.png and b/docs/site-documentation/static/img/en/stats-groupe.png differ |
| Binary files a/docs/site-documentation/static/img/en/stats-groupe.png and b/docs/site-documentation/static/img/en/stats-groupe.png differ | Binary files a/docs/site-documentation/static/img/en/stats-groupe.png and b/docs/site-documentation/static/img/en/stats-groupe.png differ |
modified
docs/site-documentation/static/img/en/stats.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/en/stats.jxl and b/docs/site-documentation/static/img/en/stats.jxl differ |
| Binary files a/docs/site-documentation/static/img/en/stats.jxl and b/docs/site-documentation/static/img/en/stats.jxl differ | Binary files a/docs/site-documentation/static/img/en/stats.jxl and b/docs/site-documentation/static/img/en/stats.jxl differ |
modified
docs/site-documentation/static/img/en/stats.png +0 -0 | Binary files a/docs/site-documentation/static/img/en/stats.png and b/docs/site-documentation/static/img/en/stats.png differ |
| Binary files a/docs/site-documentation/static/img/en/stats.png and b/docs/site-documentation/static/img/en/stats.png differ | Binary files a/docs/site-documentation/static/img/en/stats.png and b/docs/site-documentation/static/img/en/stats.png differ |
modified
docs/site-documentation/static/img/en/tache-effectuee.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/en/tache-effectuee.jxl and b/docs/site-documentation/static/img/en/tache-effectuee.jxl differ |
| Binary files a/docs/site-documentation/static/img/en/tache-effectuee.jxl and b/docs/site-documentation/static/img/en/tache-effectuee.jxl differ | Binary files a/docs/site-documentation/static/img/en/tache-effectuee.jxl and b/docs/site-documentation/static/img/en/tache-effectuee.jxl differ |
modified
docs/site-documentation/static/img/en/tache-effectuee.png +0 -0 | Binary files a/docs/site-documentation/static/img/en/tache-effectuee.png and b/docs/site-documentation/static/img/en/tache-effectuee.png differ |
| Binary files a/docs/site-documentation/static/img/en/tache-effectuee.png and b/docs/site-documentation/static/img/en/tache-effectuee.png differ | Binary files a/docs/site-documentation/static/img/en/tache-effectuee.png and b/docs/site-documentation/static/img/en/tache-effectuee.png differ |
modified
docs/site-documentation/static/img/en/tache-modifier.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/en/tache-modifier.jxl and b/docs/site-documentation/static/img/en/tache-modifier.jxl differ |
| Binary files a/docs/site-documentation/static/img/en/tache-modifier.jxl and b/docs/site-documentation/static/img/en/tache-modifier.jxl differ | Binary files a/docs/site-documentation/static/img/en/tache-modifier.jxl and b/docs/site-documentation/static/img/en/tache-modifier.jxl differ |
modified
docs/site-documentation/static/img/en/tache-modifier.png +0 -0 | Binary files a/docs/site-documentation/static/img/en/tache-modifier.png and b/docs/site-documentation/static/img/en/tache-modifier.png differ |
| Binary files a/docs/site-documentation/static/img/en/tache-modifier.png and b/docs/site-documentation/static/img/en/tache-modifier.png differ | Binary files a/docs/site-documentation/static/img/en/tache-modifier.png and b/docs/site-documentation/static/img/en/tache-modifier.png differ |
modified
docs/site-documentation/static/img/en/tache-nouvelle.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/en/tache-nouvelle.jxl and b/docs/site-documentation/static/img/en/tache-nouvelle.jxl differ |
| Binary files a/docs/site-documentation/static/img/en/tache-nouvelle.jxl and b/docs/site-documentation/static/img/en/tache-nouvelle.jxl differ | Binary files a/docs/site-documentation/static/img/en/tache-nouvelle.jxl and b/docs/site-documentation/static/img/en/tache-nouvelle.jxl differ |
modified
docs/site-documentation/static/img/en/tache-nouvelle.png +0 -0 | Binary files a/docs/site-documentation/static/img/en/tache-nouvelle.png and b/docs/site-documentation/static/img/en/tache-nouvelle.png differ |
| Binary files a/docs/site-documentation/static/img/en/tache-nouvelle.png and b/docs/site-documentation/static/img/en/tache-nouvelle.png differ | Binary files a/docs/site-documentation/static/img/en/tache-nouvelle.png and b/docs/site-documentation/static/img/en/tache-nouvelle.png differ |
modified
docs/site-documentation/static/img/en/taches.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/en/taches.jxl and b/docs/site-documentation/static/img/en/taches.jxl differ |
| Binary files a/docs/site-documentation/static/img/en/taches.jxl and b/docs/site-documentation/static/img/en/taches.jxl differ | Binary files a/docs/site-documentation/static/img/en/taches.jxl and b/docs/site-documentation/static/img/en/taches.jxl differ |
modified
docs/site-documentation/static/img/en/taches.png +0 -0 | Binary files a/docs/site-documentation/static/img/en/taches.png and b/docs/site-documentation/static/img/en/taches.png differ |
| Binary files a/docs/site-documentation/static/img/en/taches.png and b/docs/site-documentation/static/img/en/taches.png differ | Binary files a/docs/site-documentation/static/img/en/taches.png and b/docs/site-documentation/static/img/en/taches.png differ |
modified
docs/site-documentation/static/img/en/x-bandeau-minuteur.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/en/x-bandeau-minuteur.jxl and b/docs/site-documentation/static/img/en/x-bandeau-minuteur.jxl differ |
| Binary files a/docs/site-documentation/static/img/en/x-bandeau-minuteur.jxl and b/docs/site-documentation/static/img/en/x-bandeau-minuteur.jxl differ | Binary files a/docs/site-documentation/static/img/en/x-bandeau-minuteur.jxl and b/docs/site-documentation/static/img/en/x-bandeau-minuteur.jxl differ |
modified
docs/site-documentation/static/img/en/x-bandeau-minuteur.png +0 -0 | Binary files a/docs/site-documentation/static/img/en/x-bandeau-minuteur.png and b/docs/site-documentation/static/img/en/x-bandeau-minuteur.png differ |
| Binary files a/docs/site-documentation/static/img/en/x-bandeau-minuteur.png and b/docs/site-documentation/static/img/en/x-bandeau-minuteur.png differ | Binary files a/docs/site-documentation/static/img/en/x-bandeau-minuteur.png and b/docs/site-documentation/static/img/en/x-bandeau-minuteur.png differ |
modified
docs/site-documentation/static/img/en/x-categorie-pill.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/en/x-categorie-pill.jxl and b/docs/site-documentation/static/img/en/x-categorie-pill.jxl differ |
| Binary files a/docs/site-documentation/static/img/en/x-categorie-pill.jxl and b/docs/site-documentation/static/img/en/x-categorie-pill.jxl differ | Binary files a/docs/site-documentation/static/img/en/x-categorie-pill.jxl and b/docs/site-documentation/static/img/en/x-categorie-pill.jxl differ |
modified
docs/site-documentation/static/img/en/x-categorie-pill.png +0 -0 | Binary files a/docs/site-documentation/static/img/en/x-categorie-pill.png and b/docs/site-documentation/static/img/en/x-categorie-pill.png differ |
| Binary files a/docs/site-documentation/static/img/en/x-categorie-pill.png and b/docs/site-documentation/static/img/en/x-categorie-pill.png differ | Binary files a/docs/site-documentation/static/img/en/x-categorie-pill.png and b/docs/site-documentation/static/img/en/x-categorie-pill.png differ |
modified
docs/site-documentation/static/img/en/x-entete.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/en/x-entete.jxl and b/docs/site-documentation/static/img/en/x-entete.jxl differ |
| Binary files a/docs/site-documentation/static/img/en/x-entete.jxl and b/docs/site-documentation/static/img/en/x-entete.jxl differ | Binary files a/docs/site-documentation/static/img/en/x-entete.jxl and b/docs/site-documentation/static/img/en/x-entete.jxl differ |
modified
docs/site-documentation/static/img/en/x-entete.png +0 -0 | Binary files a/docs/site-documentation/static/img/en/x-entete.png and b/docs/site-documentation/static/img/en/x-entete.png differ |
| Binary files a/docs/site-documentation/static/img/en/x-entete.png and b/docs/site-documentation/static/img/en/x-entete.png differ | Binary files a/docs/site-documentation/static/img/en/x-entete.png and b/docs/site-documentation/static/img/en/x-entete.png differ |
modified
docs/site-documentation/static/img/en/x-stepper.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/en/x-stepper.jxl and b/docs/site-documentation/static/img/en/x-stepper.jxl differ |
| Binary files a/docs/site-documentation/static/img/en/x-stepper.jxl and b/docs/site-documentation/static/img/en/x-stepper.jxl differ | Binary files a/docs/site-documentation/static/img/en/x-stepper.jxl and b/docs/site-documentation/static/img/en/x-stepper.jxl differ |
modified
docs/site-documentation/static/img/en/x-stepper.png +0 -0 | Binary files a/docs/site-documentation/static/img/en/x-stepper.png and b/docs/site-documentation/static/img/en/x-stepper.png differ |
| Binary files a/docs/site-documentation/static/img/en/x-stepper.png and b/docs/site-documentation/static/img/en/x-stepper.png differ | Binary files a/docs/site-documentation/static/img/en/x-stepper.png and b/docs/site-documentation/static/img/en/x-stepper.png differ |
modified
docs/site-documentation/static/img/en/x-todo-carte.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/en/x-todo-carte.jxl and b/docs/site-documentation/static/img/en/x-todo-carte.jxl differ |
| Binary files a/docs/site-documentation/static/img/en/x-todo-carte.jxl and b/docs/site-documentation/static/img/en/x-todo-carte.jxl differ | Binary files a/docs/site-documentation/static/img/en/x-todo-carte.jxl and b/docs/site-documentation/static/img/en/x-todo-carte.jxl differ |
modified
docs/site-documentation/static/img/en/x-todo-carte.png +0 -0 | Binary files a/docs/site-documentation/static/img/en/x-todo-carte.png and b/docs/site-documentation/static/img/en/x-todo-carte.png differ |
| Binary files a/docs/site-documentation/static/img/en/x-todo-carte.png and b/docs/site-documentation/static/img/en/x-todo-carte.png differ | Binary files a/docs/site-documentation/static/img/en/x-todo-carte.png and b/docs/site-documentation/static/img/en/x-todo-carte.png differ |
modified
docs/site-documentation/static/img/fr/ajouter-categorie.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/fr/ajouter-categorie.jxl and b/docs/site-documentation/static/img/fr/ajouter-categorie.jxl differ |
| Binary files a/docs/site-documentation/static/img/fr/ajouter-categorie.jxl and b/docs/site-documentation/static/img/fr/ajouter-categorie.jxl differ | Binary files a/docs/site-documentation/static/img/fr/ajouter-categorie.jxl and b/docs/site-documentation/static/img/fr/ajouter-categorie.jxl differ |
modified
docs/site-documentation/static/img/fr/ajouter-categorie.png +0 -0 | Binary files a/docs/site-documentation/static/img/fr/ajouter-categorie.png and b/docs/site-documentation/static/img/fr/ajouter-categorie.png differ |
| Binary files a/docs/site-documentation/static/img/fr/ajouter-categorie.png and b/docs/site-documentation/static/img/fr/ajouter-categorie.png differ | Binary files a/docs/site-documentation/static/img/fr/ajouter-categorie.png and b/docs/site-documentation/static/img/fr/ajouter-categorie.png differ |
modified
docs/site-documentation/static/img/fr/ajouter-choix.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/fr/ajouter-choix.jxl and b/docs/site-documentation/static/img/fr/ajouter-choix.jxl differ |
| Binary files a/docs/site-documentation/static/img/fr/ajouter-choix.jxl and b/docs/site-documentation/static/img/fr/ajouter-choix.jxl differ | Binary files a/docs/site-documentation/static/img/fr/ajouter-choix.jxl and b/docs/site-documentation/static/img/fr/ajouter-choix.jxl differ |
modified
docs/site-documentation/static/img/fr/ajouter-choix.png +0 -0 | Binary files a/docs/site-documentation/static/img/fr/ajouter-choix.png and b/docs/site-documentation/static/img/fr/ajouter-choix.png differ |
| Binary files a/docs/site-documentation/static/img/fr/ajouter-choix.png and b/docs/site-documentation/static/img/fr/ajouter-choix.png differ | Binary files a/docs/site-documentation/static/img/fr/ajouter-choix.png and b/docs/site-documentation/static/img/fr/ajouter-choix.png differ |
modified
docs/site-documentation/static/img/fr/ajouter-duree.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/fr/ajouter-duree.jxl and b/docs/site-documentation/static/img/fr/ajouter-duree.jxl differ |
| Binary files a/docs/site-documentation/static/img/fr/ajouter-duree.jxl and b/docs/site-documentation/static/img/fr/ajouter-duree.jxl differ | Binary files a/docs/site-documentation/static/img/fr/ajouter-duree.jxl and b/docs/site-documentation/static/img/fr/ajouter-duree.jxl differ |
modified
docs/site-documentation/static/img/fr/ajouter-duree.png +0 -0 | Binary files a/docs/site-documentation/static/img/fr/ajouter-duree.png and b/docs/site-documentation/static/img/fr/ajouter-duree.png differ |
| Binary files a/docs/site-documentation/static/img/fr/ajouter-duree.png and b/docs/site-documentation/static/img/fr/ajouter-duree.png differ | Binary files a/docs/site-documentation/static/img/fr/ajouter-duree.png and b/docs/site-documentation/static/img/fr/ajouter-duree.png differ |
modified
docs/site-documentation/static/img/fr/categories.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/fr/categories.jxl and b/docs/site-documentation/static/img/fr/categories.jxl differ |
| Binary files a/docs/site-documentation/static/img/fr/categories.jxl and b/docs/site-documentation/static/img/fr/categories.jxl differ | Binary files a/docs/site-documentation/static/img/fr/categories.jxl and b/docs/site-documentation/static/img/fr/categories.jxl differ |
modified
docs/site-documentation/static/img/fr/categories.png +0 -0 | Binary files a/docs/site-documentation/static/img/fr/categories.png and b/docs/site-documentation/static/img/fr/categories.png differ |
| Binary files a/docs/site-documentation/static/img/fr/categories.png and b/docs/site-documentation/static/img/fr/categories.png differ | Binary files a/docs/site-documentation/static/img/fr/categories.png and b/docs/site-documentation/static/img/fr/categories.png differ |
modified
docs/site-documentation/static/img/fr/connexion.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/fr/connexion.jxl and b/docs/site-documentation/static/img/fr/connexion.jxl differ |
| Binary files a/docs/site-documentation/static/img/fr/connexion.jxl and b/docs/site-documentation/static/img/fr/connexion.jxl differ | Binary files a/docs/site-documentation/static/img/fr/connexion.jxl and b/docs/site-documentation/static/img/fr/connexion.jxl differ |
modified
docs/site-documentation/static/img/fr/connexion.png +0 -0 | Binary files a/docs/site-documentation/static/img/fr/connexion.png and b/docs/site-documentation/static/img/fr/connexion.png differ |
| Binary files a/docs/site-documentation/static/img/fr/connexion.png and b/docs/site-documentation/static/img/fr/connexion.png differ | Binary files a/docs/site-documentation/static/img/fr/connexion.png and b/docs/site-documentation/static/img/fr/connexion.png differ |
modified
docs/site-documentation/static/img/fr/equipes.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/fr/equipes.jxl and b/docs/site-documentation/static/img/fr/equipes.jxl differ |
| Binary files a/docs/site-documentation/static/img/fr/equipes.jxl and b/docs/site-documentation/static/img/fr/equipes.jxl differ | Binary files a/docs/site-documentation/static/img/fr/equipes.jxl and b/docs/site-documentation/static/img/fr/equipes.jxl differ |
modified
docs/site-documentation/static/img/fr/equipes.png +0 -0 | Binary files a/docs/site-documentation/static/img/fr/equipes.png and b/docs/site-documentation/static/img/fr/equipes.png differ |
| Binary files a/docs/site-documentation/static/img/fr/equipes.png and b/docs/site-documentation/static/img/fr/equipes.png differ | Binary files a/docs/site-documentation/static/img/fr/equipes.png and b/docs/site-documentation/static/img/fr/equipes.png differ |
modified
docs/site-documentation/static/img/fr/mes-temps.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/fr/mes-temps.jxl and b/docs/site-documentation/static/img/fr/mes-temps.jxl differ |
| Binary files a/docs/site-documentation/static/img/fr/mes-temps.jxl and b/docs/site-documentation/static/img/fr/mes-temps.jxl differ | Binary files a/docs/site-documentation/static/img/fr/mes-temps.jxl and b/docs/site-documentation/static/img/fr/mes-temps.jxl differ |
modified
docs/site-documentation/static/img/fr/mes-temps.png +0 -0 | Binary files a/docs/site-documentation/static/img/fr/mes-temps.png and b/docs/site-documentation/static/img/fr/mes-temps.png differ |
| Binary files a/docs/site-documentation/static/img/fr/mes-temps.png and b/docs/site-documentation/static/img/fr/mes-temps.png differ | Binary files a/docs/site-documentation/static/img/fr/mes-temps.png and b/docs/site-documentation/static/img/fr/mes-temps.png differ |
modified
docs/site-documentation/static/img/fr/minuteur.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/fr/minuteur.jxl and b/docs/site-documentation/static/img/fr/minuteur.jxl differ |
| Binary files a/docs/site-documentation/static/img/fr/minuteur.jxl and b/docs/site-documentation/static/img/fr/minuteur.jxl differ | Binary files a/docs/site-documentation/static/img/fr/minuteur.jxl and b/docs/site-documentation/static/img/fr/minuteur.jxl differ |
modified
docs/site-documentation/static/img/fr/minuteur.png +0 -0 | Binary files a/docs/site-documentation/static/img/fr/minuteur.png and b/docs/site-documentation/static/img/fr/minuteur.png differ |
| Binary files a/docs/site-documentation/static/img/fr/minuteur.png and b/docs/site-documentation/static/img/fr/minuteur.png differ | Binary files a/docs/site-documentation/static/img/fr/minuteur.png and b/docs/site-documentation/static/img/fr/minuteur.png differ |
modified
docs/site-documentation/static/img/fr/modifier-temps.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/fr/modifier-temps.jxl and b/docs/site-documentation/static/img/fr/modifier-temps.jxl differ |
| Binary files a/docs/site-documentation/static/img/fr/modifier-temps.jxl and b/docs/site-documentation/static/img/fr/modifier-temps.jxl differ | Binary files a/docs/site-documentation/static/img/fr/modifier-temps.jxl and b/docs/site-documentation/static/img/fr/modifier-temps.jxl differ |
modified
docs/site-documentation/static/img/fr/modifier-temps.png +0 -0 | Binary files a/docs/site-documentation/static/img/fr/modifier-temps.png and b/docs/site-documentation/static/img/fr/modifier-temps.png differ |
| Binary files a/docs/site-documentation/static/img/fr/modifier-temps.png and b/docs/site-documentation/static/img/fr/modifier-temps.png differ | Binary files a/docs/site-documentation/static/img/fr/modifier-temps.png and b/docs/site-documentation/static/img/fr/modifier-temps.png differ |
modified
docs/site-documentation/static/img/fr/parametres.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/fr/parametres.jxl and b/docs/site-documentation/static/img/fr/parametres.jxl differ |
| Binary files a/docs/site-documentation/static/img/fr/parametres.jxl and b/docs/site-documentation/static/img/fr/parametres.jxl differ | Binary files a/docs/site-documentation/static/img/fr/parametres.jxl and b/docs/site-documentation/static/img/fr/parametres.jxl differ |
modified
docs/site-documentation/static/img/fr/parametres.png +0 -0 | Binary files a/docs/site-documentation/static/img/fr/parametres.png and b/docs/site-documentation/static/img/fr/parametres.png differ |
| Binary files a/docs/site-documentation/static/img/fr/parametres.png and b/docs/site-documentation/static/img/fr/parametres.png differ | Binary files a/docs/site-documentation/static/img/fr/parametres.png and b/docs/site-documentation/static/img/fr/parametres.png differ |
modified
docs/site-documentation/static/img/fr/stats-asso.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/fr/stats-asso.jxl and b/docs/site-documentation/static/img/fr/stats-asso.jxl differ |
| Binary files a/docs/site-documentation/static/img/fr/stats-asso.jxl and b/docs/site-documentation/static/img/fr/stats-asso.jxl differ | Binary files a/docs/site-documentation/static/img/fr/stats-asso.jxl and b/docs/site-documentation/static/img/fr/stats-asso.jxl differ |
modified
docs/site-documentation/static/img/fr/stats-asso.png +0 -0 | Binary files a/docs/site-documentation/static/img/fr/stats-asso.png and b/docs/site-documentation/static/img/fr/stats-asso.png differ |
| Binary files a/docs/site-documentation/static/img/fr/stats-asso.png and b/docs/site-documentation/static/img/fr/stats-asso.png differ | Binary files a/docs/site-documentation/static/img/fr/stats-asso.png and b/docs/site-documentation/static/img/fr/stats-asso.png differ |
modified
docs/site-documentation/static/img/fr/stats-detail.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/fr/stats-detail.jxl and b/docs/site-documentation/static/img/fr/stats-detail.jxl differ |
| Binary files a/docs/site-documentation/static/img/fr/stats-detail.jxl and b/docs/site-documentation/static/img/fr/stats-detail.jxl differ | Binary files a/docs/site-documentation/static/img/fr/stats-detail.jxl and b/docs/site-documentation/static/img/fr/stats-detail.jxl differ |
modified
docs/site-documentation/static/img/fr/stats-detail.png +0 -0 | Binary files a/docs/site-documentation/static/img/fr/stats-detail.png and b/docs/site-documentation/static/img/fr/stats-detail.png differ |
| Binary files a/docs/site-documentation/static/img/fr/stats-detail.png and b/docs/site-documentation/static/img/fr/stats-detail.png differ | Binary files a/docs/site-documentation/static/img/fr/stats-detail.png and b/docs/site-documentation/static/img/fr/stats-detail.png differ |
modified
docs/site-documentation/static/img/fr/stats-groupe.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/fr/stats-groupe.jxl and b/docs/site-documentation/static/img/fr/stats-groupe.jxl differ |
| Binary files a/docs/site-documentation/static/img/fr/stats-groupe.jxl and b/docs/site-documentation/static/img/fr/stats-groupe.jxl differ | Binary files a/docs/site-documentation/static/img/fr/stats-groupe.jxl and b/docs/site-documentation/static/img/fr/stats-groupe.jxl differ |
modified
docs/site-documentation/static/img/fr/stats-groupe.png +0 -0 | Binary files a/docs/site-documentation/static/img/fr/stats-groupe.png and b/docs/site-documentation/static/img/fr/stats-groupe.png differ |
| Binary files a/docs/site-documentation/static/img/fr/stats-groupe.png and b/docs/site-documentation/static/img/fr/stats-groupe.png differ | Binary files a/docs/site-documentation/static/img/fr/stats-groupe.png and b/docs/site-documentation/static/img/fr/stats-groupe.png differ |
modified
docs/site-documentation/static/img/fr/stats.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/fr/stats.jxl and b/docs/site-documentation/static/img/fr/stats.jxl differ |
| Binary files a/docs/site-documentation/static/img/fr/stats.jxl and b/docs/site-documentation/static/img/fr/stats.jxl differ | Binary files a/docs/site-documentation/static/img/fr/stats.jxl and b/docs/site-documentation/static/img/fr/stats.jxl differ |
modified
docs/site-documentation/static/img/fr/stats.png +0 -0 | Binary files a/docs/site-documentation/static/img/fr/stats.png and b/docs/site-documentation/static/img/fr/stats.png differ |
| Binary files a/docs/site-documentation/static/img/fr/stats.png and b/docs/site-documentation/static/img/fr/stats.png differ | Binary files a/docs/site-documentation/static/img/fr/stats.png and b/docs/site-documentation/static/img/fr/stats.png differ |
modified
docs/site-documentation/static/img/fr/tache-effectuee.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/fr/tache-effectuee.jxl and b/docs/site-documentation/static/img/fr/tache-effectuee.jxl differ |
| Binary files a/docs/site-documentation/static/img/fr/tache-effectuee.jxl and b/docs/site-documentation/static/img/fr/tache-effectuee.jxl differ | Binary files a/docs/site-documentation/static/img/fr/tache-effectuee.jxl and b/docs/site-documentation/static/img/fr/tache-effectuee.jxl differ |
modified
docs/site-documentation/static/img/fr/tache-effectuee.png +0 -0 | Binary files a/docs/site-documentation/static/img/fr/tache-effectuee.png and b/docs/site-documentation/static/img/fr/tache-effectuee.png differ |
| Binary files a/docs/site-documentation/static/img/fr/tache-effectuee.png and b/docs/site-documentation/static/img/fr/tache-effectuee.png differ | Binary files a/docs/site-documentation/static/img/fr/tache-effectuee.png and b/docs/site-documentation/static/img/fr/tache-effectuee.png differ |
modified
docs/site-documentation/static/img/fr/tache-modifier.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/fr/tache-modifier.jxl and b/docs/site-documentation/static/img/fr/tache-modifier.jxl differ |
| Binary files a/docs/site-documentation/static/img/fr/tache-modifier.jxl and b/docs/site-documentation/static/img/fr/tache-modifier.jxl differ | Binary files a/docs/site-documentation/static/img/fr/tache-modifier.jxl and b/docs/site-documentation/static/img/fr/tache-modifier.jxl differ |
modified
docs/site-documentation/static/img/fr/tache-modifier.png +0 -0 | Binary files a/docs/site-documentation/static/img/fr/tache-modifier.png and b/docs/site-documentation/static/img/fr/tache-modifier.png differ |
| Binary files a/docs/site-documentation/static/img/fr/tache-modifier.png and b/docs/site-documentation/static/img/fr/tache-modifier.png differ | Binary files a/docs/site-documentation/static/img/fr/tache-modifier.png and b/docs/site-documentation/static/img/fr/tache-modifier.png differ |
modified
docs/site-documentation/static/img/fr/tache-nouvelle.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/fr/tache-nouvelle.jxl and b/docs/site-documentation/static/img/fr/tache-nouvelle.jxl differ |
| Binary files a/docs/site-documentation/static/img/fr/tache-nouvelle.jxl and b/docs/site-documentation/static/img/fr/tache-nouvelle.jxl differ | Binary files a/docs/site-documentation/static/img/fr/tache-nouvelle.jxl and b/docs/site-documentation/static/img/fr/tache-nouvelle.jxl differ |
modified
docs/site-documentation/static/img/fr/tache-nouvelle.png +0 -0 | Binary files a/docs/site-documentation/static/img/fr/tache-nouvelle.png and b/docs/site-documentation/static/img/fr/tache-nouvelle.png differ |
| Binary files a/docs/site-documentation/static/img/fr/tache-nouvelle.png and b/docs/site-documentation/static/img/fr/tache-nouvelle.png differ | Binary files a/docs/site-documentation/static/img/fr/tache-nouvelle.png and b/docs/site-documentation/static/img/fr/tache-nouvelle.png differ |
modified
docs/site-documentation/static/img/fr/taches.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/fr/taches.jxl and b/docs/site-documentation/static/img/fr/taches.jxl differ |
| Binary files a/docs/site-documentation/static/img/fr/taches.jxl and b/docs/site-documentation/static/img/fr/taches.jxl differ | Binary files a/docs/site-documentation/static/img/fr/taches.jxl and b/docs/site-documentation/static/img/fr/taches.jxl differ |
modified
docs/site-documentation/static/img/fr/taches.png +0 -0 | Binary files a/docs/site-documentation/static/img/fr/taches.png and b/docs/site-documentation/static/img/fr/taches.png differ |
| Binary files a/docs/site-documentation/static/img/fr/taches.png and b/docs/site-documentation/static/img/fr/taches.png differ | Binary files a/docs/site-documentation/static/img/fr/taches.png and b/docs/site-documentation/static/img/fr/taches.png differ |
modified
docs/site-documentation/static/img/fr/x-bandeau-minuteur.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/fr/x-bandeau-minuteur.jxl and b/docs/site-documentation/static/img/fr/x-bandeau-minuteur.jxl differ |
| Binary files a/docs/site-documentation/static/img/fr/x-bandeau-minuteur.jxl and b/docs/site-documentation/static/img/fr/x-bandeau-minuteur.jxl differ | Binary files a/docs/site-documentation/static/img/fr/x-bandeau-minuteur.jxl and b/docs/site-documentation/static/img/fr/x-bandeau-minuteur.jxl differ |
modified
docs/site-documentation/static/img/fr/x-bandeau-minuteur.png +0 -0 | Binary files a/docs/site-documentation/static/img/fr/x-bandeau-minuteur.png and b/docs/site-documentation/static/img/fr/x-bandeau-minuteur.png differ |
| Binary files a/docs/site-documentation/static/img/fr/x-bandeau-minuteur.png and b/docs/site-documentation/static/img/fr/x-bandeau-minuteur.png differ | Binary files a/docs/site-documentation/static/img/fr/x-bandeau-minuteur.png and b/docs/site-documentation/static/img/fr/x-bandeau-minuteur.png differ |
modified
docs/site-documentation/static/img/fr/x-categorie-pill.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/fr/x-categorie-pill.jxl and b/docs/site-documentation/static/img/fr/x-categorie-pill.jxl differ |
| Binary files a/docs/site-documentation/static/img/fr/x-categorie-pill.jxl and b/docs/site-documentation/static/img/fr/x-categorie-pill.jxl differ | Binary files a/docs/site-documentation/static/img/fr/x-categorie-pill.jxl and b/docs/site-documentation/static/img/fr/x-categorie-pill.jxl differ |
modified
docs/site-documentation/static/img/fr/x-categorie-pill.png +0 -0 | Binary files a/docs/site-documentation/static/img/fr/x-categorie-pill.png and b/docs/site-documentation/static/img/fr/x-categorie-pill.png differ |
| Binary files a/docs/site-documentation/static/img/fr/x-categorie-pill.png and b/docs/site-documentation/static/img/fr/x-categorie-pill.png differ | Binary files a/docs/site-documentation/static/img/fr/x-categorie-pill.png and b/docs/site-documentation/static/img/fr/x-categorie-pill.png differ |
modified
docs/site-documentation/static/img/fr/x-entete.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/fr/x-entete.jxl and b/docs/site-documentation/static/img/fr/x-entete.jxl differ |
| Binary files a/docs/site-documentation/static/img/fr/x-entete.jxl and b/docs/site-documentation/static/img/fr/x-entete.jxl differ | Binary files a/docs/site-documentation/static/img/fr/x-entete.jxl and b/docs/site-documentation/static/img/fr/x-entete.jxl differ |
modified
docs/site-documentation/static/img/fr/x-entete.png +0 -0 | Binary files a/docs/site-documentation/static/img/fr/x-entete.png and b/docs/site-documentation/static/img/fr/x-entete.png differ |
| Binary files a/docs/site-documentation/static/img/fr/x-entete.png and b/docs/site-documentation/static/img/fr/x-entete.png differ | Binary files a/docs/site-documentation/static/img/fr/x-entete.png and b/docs/site-documentation/static/img/fr/x-entete.png differ |
modified
docs/site-documentation/static/img/fr/x-stepper.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/fr/x-stepper.jxl and b/docs/site-documentation/static/img/fr/x-stepper.jxl differ |
| Binary files a/docs/site-documentation/static/img/fr/x-stepper.jxl and b/docs/site-documentation/static/img/fr/x-stepper.jxl differ | Binary files a/docs/site-documentation/static/img/fr/x-stepper.jxl and b/docs/site-documentation/static/img/fr/x-stepper.jxl differ |
modified
docs/site-documentation/static/img/fr/x-stepper.png +0 -0 | Binary files a/docs/site-documentation/static/img/fr/x-stepper.png and b/docs/site-documentation/static/img/fr/x-stepper.png differ |
| Binary files a/docs/site-documentation/static/img/fr/x-stepper.png and b/docs/site-documentation/static/img/fr/x-stepper.png differ | Binary files a/docs/site-documentation/static/img/fr/x-stepper.png and b/docs/site-documentation/static/img/fr/x-stepper.png differ |
modified
docs/site-documentation/static/img/fr/x-todo-carte.jxl +0 -0 | Binary files a/docs/site-documentation/static/img/fr/x-todo-carte.jxl and b/docs/site-documentation/static/img/fr/x-todo-carte.jxl differ |
| Binary files a/docs/site-documentation/static/img/fr/x-todo-carte.jxl and b/docs/site-documentation/static/img/fr/x-todo-carte.jxl differ | Binary files a/docs/site-documentation/static/img/fr/x-todo-carte.jxl and b/docs/site-documentation/static/img/fr/x-todo-carte.jxl differ |
modified
docs/site-documentation/static/img/fr/x-todo-carte.png +0 -0 | Binary files a/docs/site-documentation/static/img/fr/x-todo-carte.png and b/docs/site-documentation/static/img/fr/x-todo-carte.png differ |
| Binary files a/docs/site-documentation/static/img/fr/x-todo-carte.png and b/docs/site-documentation/static/img/fr/x-todo-carte.png differ | Binary files a/docs/site-documentation/static/img/fr/x-todo-carte.png and b/docs/site-documentation/static/img/fr/x-todo-carte.png differ |
added
docs/site-documentation/static/img/pt-br/ajouter-categorie.jxl +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/ajouter-categorie.jxl differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/ajouter-categorie.jxl differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/ajouter-categorie.jxl differ | ||
added
docs/site-documentation/static/img/pt-br/ajouter-categorie.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/ajouter-categorie.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/ajouter-categorie.png differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/ajouter-categorie.png differ | ||
added
docs/site-documentation/static/img/pt-br/ajouter-choix.jxl +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/ajouter-choix.jxl differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/ajouter-choix.jxl differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/ajouter-choix.jxl differ | ||
added
docs/site-documentation/static/img/pt-br/ajouter-choix.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/ajouter-choix.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/ajouter-choix.png differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/ajouter-choix.png differ | ||
added
docs/site-documentation/static/img/pt-br/ajouter-duree.jxl +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/ajouter-duree.jxl differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/ajouter-duree.jxl differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/ajouter-duree.jxl differ | ||
added
docs/site-documentation/static/img/pt-br/ajouter-duree.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/ajouter-duree.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/ajouter-duree.png differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/ajouter-duree.png differ | ||
added
docs/site-documentation/static/img/pt-br/categories.jxl +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/categories.jxl differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/categories.jxl differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/categories.jxl differ | ||
added
docs/site-documentation/static/img/pt-br/categories.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/categories.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/categories.png differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/categories.png differ | ||
added
docs/site-documentation/static/img/pt-br/connexion.jxl +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/connexion.jxl differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/connexion.jxl differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/connexion.jxl differ | ||
added
docs/site-documentation/static/img/pt-br/connexion.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/connexion.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/connexion.png differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/connexion.png differ | ||
added
docs/site-documentation/static/img/pt-br/equipes.jxl +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/equipes.jxl differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/equipes.jxl differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/equipes.jxl differ | ||
added
docs/site-documentation/static/img/pt-br/equipes.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/equipes.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/equipes.png differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/equipes.png differ | ||
added
docs/site-documentation/static/img/pt-br/erreur-404.jxl +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/erreur-404.jxl differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/erreur-404.jxl differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/erreur-404.jxl differ | ||
added
docs/site-documentation/static/img/pt-br/erreur-404.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/erreur-404.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/erreur-404.png differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/erreur-404.png differ | ||
added
docs/site-documentation/static/img/pt-br/mes-temps.jxl +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/mes-temps.jxl differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/mes-temps.jxl differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/mes-temps.jxl differ | ||
added
docs/site-documentation/static/img/pt-br/mes-temps.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/mes-temps.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/mes-temps.png differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/mes-temps.png differ | ||
added
docs/site-documentation/static/img/pt-br/minuteur.jxl +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/minuteur.jxl differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/minuteur.jxl differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/minuteur.jxl differ | ||
added
docs/site-documentation/static/img/pt-br/minuteur.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/minuteur.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/minuteur.png differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/minuteur.png differ | ||
added
docs/site-documentation/static/img/pt-br/modifier-temps.jxl +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/modifier-temps.jxl differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/modifier-temps.jxl differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/modifier-temps.jxl differ | ||
added
docs/site-documentation/static/img/pt-br/modifier-temps.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/modifier-temps.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/modifier-temps.png differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/modifier-temps.png differ | ||
added
docs/site-documentation/static/img/pt-br/parametres.jxl +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/parametres.jxl differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/parametres.jxl differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/parametres.jxl differ | ||
added
docs/site-documentation/static/img/pt-br/parametres.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/parametres.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/parametres.png differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/parametres.png differ | ||
added
docs/site-documentation/static/img/pt-br/stats-asso.jxl +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/stats-asso.jxl differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/stats-asso.jxl differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/stats-asso.jxl differ | ||
added
docs/site-documentation/static/img/pt-br/stats-asso.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/stats-asso.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/stats-asso.png differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/stats-asso.png differ | ||
added
docs/site-documentation/static/img/pt-br/stats-detail.jxl +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/stats-detail.jxl differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/stats-detail.jxl differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/stats-detail.jxl differ | ||
added
docs/site-documentation/static/img/pt-br/stats-detail.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/stats-detail.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/stats-detail.png differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/stats-detail.png differ | ||
added
docs/site-documentation/static/img/pt-br/stats-groupe.jxl +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/stats-groupe.jxl differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/stats-groupe.jxl differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/stats-groupe.jxl differ | ||
added
docs/site-documentation/static/img/pt-br/stats-groupe.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/stats-groupe.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/stats-groupe.png differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/stats-groupe.png differ | ||
added
docs/site-documentation/static/img/pt-br/stats.jxl +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/stats.jxl differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/stats.jxl differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/stats.jxl differ | ||
added
docs/site-documentation/static/img/pt-br/stats.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/stats.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/stats.png differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/stats.png differ | ||
added
docs/site-documentation/static/img/pt-br/tache-effectuee.jxl +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/tache-effectuee.jxl differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/tache-effectuee.jxl differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/tache-effectuee.jxl differ | ||
added
docs/site-documentation/static/img/pt-br/tache-effectuee.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/tache-effectuee.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/tache-effectuee.png differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/tache-effectuee.png differ | ||
added
docs/site-documentation/static/img/pt-br/tache-modifier.jxl +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/tache-modifier.jxl differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/tache-modifier.jxl differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/tache-modifier.jxl differ | ||
added
docs/site-documentation/static/img/pt-br/tache-modifier.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/tache-modifier.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/tache-modifier.png differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/tache-modifier.png differ | ||
added
docs/site-documentation/static/img/pt-br/tache-nouvelle.jxl +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/tache-nouvelle.jxl differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/tache-nouvelle.jxl differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/tache-nouvelle.jxl differ | ||
added
docs/site-documentation/static/img/pt-br/tache-nouvelle.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/tache-nouvelle.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/tache-nouvelle.png differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/tache-nouvelle.png differ | ||
added
docs/site-documentation/static/img/pt-br/taches.jxl +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/taches.jxl differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/taches.jxl differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/taches.jxl differ | ||
added
docs/site-documentation/static/img/pt-br/taches.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/taches.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/taches.png differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/taches.png differ | ||
added
docs/site-documentation/static/img/pt-br/x-bandeau-minuteur.jxl +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-bandeau-minuteur.jxl differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-bandeau-minuteur.jxl differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-bandeau-minuteur.jxl differ | ||
added
docs/site-documentation/static/img/pt-br/x-bandeau-minuteur.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-bandeau-minuteur.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-bandeau-minuteur.png differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-bandeau-minuteur.png differ | ||
added
docs/site-documentation/static/img/pt-br/x-categorie-pill.jxl +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-categorie-pill.jxl differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-categorie-pill.jxl differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-categorie-pill.jxl differ | ||
added
docs/site-documentation/static/img/pt-br/x-categorie-pill.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-categorie-pill.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-categorie-pill.png differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-categorie-pill.png differ | ||
added
docs/site-documentation/static/img/pt-br/x-entete.jxl +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-entete.jxl differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-entete.jxl differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-entete.jxl differ | ||
added
docs/site-documentation/static/img/pt-br/x-entete.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-entete.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-entete.png differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-entete.png differ | ||
added
docs/site-documentation/static/img/pt-br/x-groupe-carte.jxl +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-groupe-carte.jxl differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-groupe-carte.jxl differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-groupe-carte.jxl differ | ||
added
docs/site-documentation/static/img/pt-br/x-groupe-carte.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-groupe-carte.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-groupe-carte.png differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-groupe-carte.png differ | ||
added
docs/site-documentation/static/img/pt-br/x-invitation.jxl +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-invitation.jxl differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-invitation.jxl differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-invitation.jxl differ | ||
added
docs/site-documentation/static/img/pt-br/x-invitation.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-invitation.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-invitation.png differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-invitation.png differ | ||
added
docs/site-documentation/static/img/pt-br/x-legende.jxl +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-legende.jxl differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-legende.jxl differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-legende.jxl differ | ||
added
docs/site-documentation/static/img/pt-br/x-legende.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-legende.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-legende.png differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-legende.png differ | ||
added
docs/site-documentation/static/img/pt-br/x-scopes.jxl +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-scopes.jxl differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-scopes.jxl differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-scopes.jxl differ | ||
added
docs/site-documentation/static/img/pt-br/x-scopes.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-scopes.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-scopes.png differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-scopes.png differ | ||
added
docs/site-documentation/static/img/pt-br/x-stepper.jxl +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-stepper.jxl differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-stepper.jxl differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-stepper.jxl differ | ||
added
docs/site-documentation/static/img/pt-br/x-stepper.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-stepper.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-stepper.png differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-stepper.png differ | ||
added
docs/site-documentation/static/img/pt-br/x-tabbar.jxl +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-tabbar.jxl differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-tabbar.jxl differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-tabbar.jxl differ | ||
added
docs/site-documentation/static/img/pt-br/x-tabbar.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-tabbar.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-tabbar.png differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-tabbar.png differ | ||
added
docs/site-documentation/static/img/pt-br/x-todo-carte.jxl +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-todo-carte.jxl differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-todo-carte.jxl differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-todo-carte.jxl differ | ||
added
docs/site-documentation/static/img/pt-br/x-todo-carte.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-todo-carte.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-todo-carte.png differ | Binary files /dev/null and b/docs/site-documentation/static/img/pt-br/x-todo-carte.png differ | ||
modified
docs/site-documentation/templates/base.html +6 -3 | @@ -28,7 +28,7 @@ | ||
| 28 | 28 | {%- for code in config.extra.langs -%} |
| 29 | 29 | {%- set label = trans(key="lang_" ~ code, lang=config.default_language) -%} |
| 30 | 30 | {%- if code == lang -%} |
| 31 | - <span class="lang is-on" aria-current="true"><span class="l-long">{{ label }}</span><span class="l-short">{{ code | upper }}</span></span> | |
| 31 | + <span class="lang is-on" aria-current="true"><span class="l-long">{{ label }}</span><span class="l-short">{{ code | split(pat="-") | first | upper }}</span></span> | |
| 32 | 32 | {%- else -%} |
| 33 | 33 | {%- set_global target = "" -%} |
| 34 | 34 | {%- if page is defined -%} |
| @@ -42,9 +42,9 @@ | ||
| 42 | 42 | {%- if root -%}{%- set_global target = root.permalink -%}{%- endif -%} |
| 43 | 43 | {%- endif -%} |
| 44 | 44 | {%- if target == "" -%} |
| 45 | - <span class="lang is-off"><span class="l-long">{{ label }}</span><span class="l-short">{{ code | upper }}</span></span> | |
| 45 | + <span class="lang is-off"><span class="l-long">{{ label }}</span><span class="l-short">{{ code | split(pat="-") | first | upper }}</span></span> | |
| 46 | 46 | {%- else -%} |
| 47 | - <a class="lang" href="{{ target }}" hreflang="{{ code }}" aria-label="{{ label }}"><span class="l-long">{{ label }}</span><span class="l-short" aria-hidden="true">{{ code | upper }}</span></a> | |
| 47 | + <a class="lang" href="{{ target }}" hreflang="{{ code }}" aria-label="{{ label }}"><span class="l-long">{{ label }}</span><span class="l-short" aria-hidden="true">{{ code | split(pat="-") | first | upper }}</span></a> | |
| 48 | 48 | {%- endif -%} |
| 49 | 49 | {%- endif -%} |
| 50 | 50 | {%- endfor -%} |
| @@ -64,6 +64,9 @@ | ||
| 64 | 64 | <nav class="side" id="sommaire" aria-label="{{ trans(key='sections', lang=lang) }}"> |
| 65 | 65 | <p class="side-head">{{ trans(key="summary", lang=lang) }}</p> |
| 66 | 66 | <a class="side-top{% if here == home?.path %} is-on{% endif %}" href="{{ home?.permalink or config.base_url }}">{{ trans(key="home", lang=lang) }}</a> |
| 67 | + {%- if home %}{% for p in home.pages %} | |
| 68 | + <a class="side-top{% if here == p.path %} is-on{% endif %}" href="{{ p.permalink }}"{% if here == p.path %} aria-current="page"{% endif %}>{{ p.title }}</a> | |
| 69 | + {%- endfor %}{% endif %} | |
| 67 | 70 | {%- for s in [ecrans, cas] %}{% if s %} |
| 68 | 71 | <p class="side-title">{{ s.title }}</p> |
| 69 | 72 | <ul> |
| @@ -28,7 +28,7 @@ | |||
| 28 | {%- for code in config.extra.langs -%} | 28 | {%- for code in config.extra.langs -%} |
| 29 | {%- set label = trans(key="lang_" ~ code, lang=config.default_language) -%} | 29 | {%- set label = trans(key="lang_" ~ code, lang=config.default_language) -%} |
| 30 | {%- if code == lang -%} | 30 | {%- if code == lang -%} |
| 31 | - <span class="lang is-on" aria-current="true"><span class="l-long">{{ label }}</span><span class="l-short">{{ code | upper }}</span></span> | 31 | + <span class="lang is-on" aria-current="true"><span class="l-long">{{ label }}</span><span class="l-short">{{ code | split(pat="-") | first | upper }}</span></span> |
| 32 | {%- else -%} | 32 | {%- else -%} |
| 33 | {%- set_global target = "" -%} | 33 | {%- set_global target = "" -%} |
| 34 | {%- if page is defined -%} | 34 | {%- if page is defined -%} |
| @@ -42,9 +42,9 @@ | |||
| 42 | {%- if root -%}{%- set_global target = root.permalink -%}{%- endif -%} | 42 | {%- if root -%}{%- set_global target = root.permalink -%}{%- endif -%} |
| 43 | {%- endif -%} | 43 | {%- endif -%} |
| 44 | {%- if target == "" -%} | 44 | {%- if target == "" -%} |
| 45 | - <span class="lang is-off"><span class="l-long">{{ label }}</span><span class="l-short">{{ code | upper }}</span></span> | 45 | + <span class="lang is-off"><span class="l-long">{{ label }}</span><span class="l-short">{{ code | split(pat="-") | first | upper }}</span></span> |
| 46 | {%- else -%} | 46 | {%- else -%} |
| 47 | - <a class="lang" href="{{ target }}" hreflang="{{ code }}" aria-label="{{ label }}"><span class="l-long">{{ label }}</span><span class="l-short" aria-hidden="true">{{ code | upper }}</span></a> | 47 | + <a class="lang" href="{{ target }}" hreflang="{{ code }}" aria-label="{{ label }}"><span class="l-long">{{ label }}</span><span class="l-short" aria-hidden="true">{{ code | split(pat="-") | first | upper }}</span></a> |
| 48 | {%- endif -%} | 48 | {%- endif -%} |
| 49 | {%- endif -%} | 49 | {%- endif -%} |
| 50 | {%- endfor -%} | 50 | {%- endfor -%} |
| @@ -64,6 +64,9 @@ | |||
| 64 | <nav class="side" id="sommaire" aria-label="{{ trans(key='sections', lang=lang) }}"> | 64 | <nav class="side" id="sommaire" aria-label="{{ trans(key='sections', lang=lang) }}"> |
| 65 | <p class="side-head">{{ trans(key="summary", lang=lang) }}</p> | 65 | <p class="side-head">{{ trans(key="summary", lang=lang) }}</p> |
| 66 | <a class="side-top{% if here == home?.path %} is-on{% endif %}" href="{{ home?.permalink or config.base_url }}">{{ trans(key="home", lang=lang) }}</a> | 66 | <a class="side-top{% if here == home?.path %} is-on{% endif %}" href="{{ home?.permalink or config.base_url }}">{{ trans(key="home", lang=lang) }}</a> |
| 67 | + {%- if home %}{% for p in home.pages %} | ||
| 68 | + <a class="side-top{% if here == p.path %} is-on{% endif %}" href="{{ p.permalink }}"{% if here == p.path %} aria-current="page"{% endif %}>{{ p.title }}</a> | ||
| 69 | + {%- endfor %}{% endif %} | ||
| 67 | {%- for s in [ecrans, cas] %}{% if s %} | 70 | {%- for s in [ecrans, cas] %}{% if s %} |
| 68 | <p class="side-title">{{ s.title }}</p> | 71 | <p class="side-title">{{ s.title }}</p> |
| 69 | <ul> | 72 | <ul> |
modified
docs/site-documentation/templates/components.html +10 -2 | @@ -1,13 +1,19 @@ | ||
| 1 | 1 | {# Composants Tera appelés depuis le markdown (Zola 0.23 a supprimé les |
| 2 | 2 | shortcodes : le contenu des pages est templaté directement). |
| 3 | 3 | |
| 4 | - Les captures sont trilingues : chaque appel passe la langue de la page, | |
| 4 | + Les captures suivent la langue : chaque appel passe celle de la page, | |
| 5 | 5 | `lang={lang}`, parce qu'un composant ne voit pas le contexte de l'appelant. |
| 6 | - Chaque image existe en JPEG XL (proposé d'abord) et en PNG (repli). #} | |
| 6 | + Chaque image existe en JPEG XL (proposé d'abord) et en PNG (repli). | |
| 7 | + | |
| 8 | + Une langue sans dossier dans static/img/ retombe sur « en » : le portugais | |
| 9 | + emprunte donc les captures anglaises tant que shots.mjs n'a pas fait sa | |
| 10 | + passe. Le repli est écrit en dur parce qu'un composant ne voit pas `config` | |
| 11 | + non plus, seulement ses propres paramètres. #} | |
| 7 | 12 | |
| 8 | 13 | {# Capture pleine page, format téléphone. |
| 9 | 14 | {{<shot name="stats" alt="…" lang={lang} legende="…" />}} #} |
| 10 | 15 | {% component shot(name: string, alt: string, lang: string, legende: string = "") %} |
| 16 | +{% if not get_image_metadata(path="static/img/" ~ lang ~ "/" ~ name ~ ".png", allow_missing=true) %}{% set lang = "en" %}{% endif %} | |
| 11 | 17 | {% set meta = get_image_metadata(path="static/img/" ~ lang ~ "/" ~ name ~ ".png", allow_missing=true) %} |
| 12 | 18 | <figure class="shot"> |
| 13 | 19 | <picture> |
| @@ -22,6 +28,7 @@ | ||
| 22 | 28 | {# Extrait recadré, posé dans le fil du texte. |
| 23 | 29 | {{<extrait name="x-scopes" alt="…" lang={lang} legende="…" />}} #} |
| 24 | 30 | {% component extrait(name: string, alt: string, lang: string, legende: string = "") %} |
| 31 | +{% if not get_image_metadata(path="static/img/" ~ lang ~ "/" ~ name ~ ".png", allow_missing=true) %}{% set lang = "en" %}{% endif %} | |
| 25 | 32 | {% set meta = get_image_metadata(path="static/img/" ~ lang ~ "/" ~ name ~ ".png", allow_missing=true) %} |
| 26 | 33 | <figure class="extrait"> |
| 27 | 34 | <picture> |
| @@ -36,6 +43,7 @@ | ||
| 36 | 43 | {# Deux captures côte à côte (deux étapes, avant et après). |
| 37 | 44 | {{<duo a="…" b="…" alt_a="…" alt_b="…" lang={lang} legende="…" />}} #} |
| 38 | 45 | {% component duo(a: string, b: string, alt_a: string, alt_b: string, lang: string, legende: string = "") %} |
| 46 | +{% if not get_image_metadata(path="static/img/" ~ lang ~ "/" ~ a ~ ".png", allow_missing=true) %}{% set lang = "en" %}{% endif %} | |
| 39 | 47 | {% set ma = get_image_metadata(path="static/img/" ~ lang ~ "/" ~ a ~ ".png", allow_missing=true) %} |
| 40 | 48 | {% set mb = get_image_metadata(path="static/img/" ~ lang ~ "/" ~ b ~ ".png", allow_missing=true) %} |
| 41 | 49 | <figure class="duo"> |
| @@ -1,13 +1,19 @@ | |||
| 1 | {# Composants Tera appelés depuis le markdown (Zola 0.23 a supprimé les | 1 | {# Composants Tera appelés depuis le markdown (Zola 0.23 a supprimé les |
| 2 | shortcodes : le contenu des pages est templaté directement). | 2 | shortcodes : le contenu des pages est templaté directement). |
| 3 | 3 | ||
| 4 | - Les captures sont trilingues : chaque appel passe la langue de la page, | 4 | + Les captures suivent la langue : chaque appel passe celle de la page, |
| 5 | `lang={lang}`, parce qu'un composant ne voit pas le contexte de l'appelant. | 5 | `lang={lang}`, parce qu'un composant ne voit pas le contexte de l'appelant. |
| 6 | - Chaque image existe en JPEG XL (proposé d'abord) et en PNG (repli). #} | 6 | + Chaque image existe en JPEG XL (proposé d'abord) et en PNG (repli). |
| 7 | + | ||
| 8 | + Une langue sans dossier dans static/img/ retombe sur « en » : le portugais | ||
| 9 | + emprunte donc les captures anglaises tant que shots.mjs n'a pas fait sa | ||
| 10 | + passe. Le repli est écrit en dur parce qu'un composant ne voit pas `config` | ||
| 11 | + non plus, seulement ses propres paramètres. #} | ||
| 7 | 12 | ||
| 8 | {# Capture pleine page, format téléphone. | 13 | {# Capture pleine page, format téléphone. |
| 9 | {{<shot name="stats" alt="…" lang={lang} legende="…" />}} #} | 14 | {{<shot name="stats" alt="…" lang={lang} legende="…" />}} #} |
| 10 | {% component shot(name: string, alt: string, lang: string, legende: string = "") %} | 15 | {% component shot(name: string, alt: string, lang: string, legende: string = "") %} |
| 16 | +{% if not get_image_metadata(path="static/img/" ~ lang ~ "/" ~ name ~ ".png", allow_missing=true) %}{% set lang = "en" %}{% endif %} | ||
| 11 | {% set meta = get_image_metadata(path="static/img/" ~ lang ~ "/" ~ name ~ ".png", allow_missing=true) %} | 17 | {% set meta = get_image_metadata(path="static/img/" ~ lang ~ "/" ~ name ~ ".png", allow_missing=true) %} |
| 12 | <figure class="shot"> | 18 | <figure class="shot"> |
| 13 | <picture> | 19 | <picture> |
| @@ -22,6 +28,7 @@ | |||
| 22 | {# Extrait recadré, posé dans le fil du texte. | 28 | {# Extrait recadré, posé dans le fil du texte. |
| 23 | {{<extrait name="x-scopes" alt="…" lang={lang} legende="…" />}} #} | 29 | {{<extrait name="x-scopes" alt="…" lang={lang} legende="…" />}} #} |
| 24 | {% component extrait(name: string, alt: string, lang: string, legende: string = "") %} | 30 | {% component extrait(name: string, alt: string, lang: string, legende: string = "") %} |
| 31 | +{% if not get_image_metadata(path="static/img/" ~ lang ~ "/" ~ name ~ ".png", allow_missing=true) %}{% set lang = "en" %}{% endif %} | ||
| 25 | {% set meta = get_image_metadata(path="static/img/" ~ lang ~ "/" ~ name ~ ".png", allow_missing=true) %} | 32 | {% set meta = get_image_metadata(path="static/img/" ~ lang ~ "/" ~ name ~ ".png", allow_missing=true) %} |
| 26 | <figure class="extrait"> | 33 | <figure class="extrait"> |
| 27 | <picture> | 34 | <picture> |
| @@ -36,6 +43,7 @@ | |||
| 36 | {# Deux captures côte à côte (deux étapes, avant et après). | 43 | {# Deux captures côte à côte (deux étapes, avant et après). |
| 37 | {{<duo a="…" b="…" alt_a="…" alt_b="…" lang={lang} legende="…" />}} #} | 44 | {{<duo a="…" b="…" alt_a="…" alt_b="…" lang={lang} legende="…" />}} #} |
| 38 | {% component duo(a: string, b: string, alt_a: string, alt_b: string, lang: string, legende: string = "") %} | 45 | {% component duo(a: string, b: string, alt_a: string, alt_b: string, lang: string, legende: string = "") %} |
| 46 | +{% if not get_image_metadata(path="static/img/" ~ lang ~ "/" ~ a ~ ".png", allow_missing=true) %}{% set lang = "en" %}{% endif %} | ||
| 39 | {% set ma = get_image_metadata(path="static/img/" ~ lang ~ "/" ~ a ~ ".png", allow_missing=true) %} | 47 | {% set ma = get_image_metadata(path="static/img/" ~ lang ~ "/" ~ a ~ ".png", allow_missing=true) %} |
| 40 | {% set mb = get_image_metadata(path="static/img/" ~ lang ~ "/" ~ b ~ ".png", allow_missing=true) %} | 48 | {% set mb = get_image_metadata(path="static/img/" ~ lang ~ "/" ~ b ~ ".png", allow_missing=true) %} |
| 41 | <figure class="duo"> | 49 | <figure class="duo"> |
modified
docs/site-documentation/templates/index.html +7 -0 | @@ -15,6 +15,13 @@ | ||
| 15 | 15 | {{ section.content | safe }} |
| 16 | 16 | |
| 17 | 17 | <div class="cards"> |
| 18 | + {#- Pages posées à la racine (Démarrage), avant les sections. -#} | |
| 19 | + {%- for p in section.pages %} | |
| 20 | + <a class="card" href="{{ p.permalink }}"> | |
| 21 | + <span class="card-title">{{ p.title }}</span> | |
| 22 | + {%- if p.description %}<span class="card-desc">{{ p.description }}</span>{% endif %} | |
| 23 | + </a> | |
| 24 | + {%- endfor %} | |
| 18 | 25 | {%- for s in section.subsections %} |
| 19 | 26 | {%- set sub = get_section(path=s) %} |
| 20 | 27 | <a class="card" href="{{ sub.permalink }}"> |
| @@ -15,6 +15,13 @@ | |||
| 15 | {{ section.content | safe }} | 15 | {{ section.content | safe }} |
| 16 | 16 | ||
| 17 | <div class="cards"> | 17 | <div class="cards"> |
| 18 | + {#- Pages posées à la racine (Démarrage), avant les sections. -#} | ||
| 19 | + {%- for p in section.pages %} | ||
| 20 | + <a class="card" href="{{ p.permalink }}"> | ||
| 21 | + <span class="card-title">{{ p.title }}</span> | ||
| 22 | + {%- if p.description %}<span class="card-desc">{{ p.description }}</span>{% endif %} | ||
| 23 | + </a> | ||
| 24 | + {%- endfor %} | ||
| 18 | {%- for s in section.subsections %} | 25 | {%- for s in section.subsections %} |
| 19 | {%- set sub = get_section(path=s) %} | 26 | {%- set sub = get_section(path=s) %} |
| 20 | <a class="card" href="{{ sub.permalink }}"> | 27 | <a class="card" href="{{ sub.permalink }}"> |