generate folders from tasks.json export

This commit is contained in:
Tykayn 2023-02-06 13:09:01 +01:00 committed by tykayn
parent b84b85e928
commit f767a19592
9 changed files with 1226 additions and 189 deletions

2
.gitignore vendored
View File

@ -140,4 +140,6 @@ sources/*.json
/scripts/stats.org /scripts/stats.org
all_tasks.org all_tasks.org
stats.org stats.org
emploi-du-temps/folders_build/* emploi-du-temps/folders_build/*
emploi-du-temps/output.org

1
.yarnrc.yml Normal file
View File

@ -0,0 +1 @@
nodeLinker: node-modules

View File

@ -12,3 +12,5 @@ copyTasksJson :
render : render :
serve output serve output
firefox http://localhost:3000/output_all_tasks_report firefox http://localhost:3000/output_all_tasks_report
folders:
node emploi-du-temps/generateur.mjs

View File

@ -1,3 +1,3 @@
default : generate default : generate
generate: generate:
PATH=/home/tykayn/.nix-profile/bin:/home/tykayn/.rbenv/shims:/home/tykayn/.rbenv/bin:/home/tykayn/.nvm/versions/node/v17.3.0/bin:/home/tykayn/.asdf/shims:/home/tykayn/.asdf/bin:/snap/bin:/home/tykayn/.emacs.d/bin:/home/tykayn/.symfony/bin:/home/tykayn/.local/bin:/home/tykayn/.rvm/gems/ruby-2.7.2/bin:/home/tykayn/.rvm/gems/ruby-2.7.2@global/bin:/home/tykayn/.rvm/rubies/ruby-2.7.2/bin:/usr/local/bin:/usr/bin:/bin:/usr/games:/home/tykayn/.rvm/bin:/home/tykayn/.rvm/bin node generateur.js > output.org PATH=/home/tykayn/.nix-profile/bin:/home/tykayn/.rbenv/shims:/home/tykayn/.rbenv/bin:/home/tykayn/.nvm/versions/node/v17.3.0/bin:/home/tykayn/.asdf/shims:/home/tykayn/.asdf/bin:/snap/bin:/home/tykayn/.emacs.d/bin:/home/tykayn/.symfony/bin:/home/tykayn/.local/bin:/home/tykayn/.rvm/gems/ruby-2.7.2/bin:/home/tykayn/.rvm/gems/ruby-2.7.2@global/bin:/home/tykayn/.rvm/rubies/ruby-2.7.2/bin:/usr/local/bin:/usr/bin:/bin:/usr/games:/home/tykayn/.rvm/bin:/home/tykayn/.rvm/bin node generateur.mjs > output.org

View File

@ -0,0 +1,75 @@
/**
* création d'emploi du temps avec des zones découpées en catégorie
* cela permet de parcourir tous les aspects de la méthodologie PARA sur différents créneaux
* @type {{duration: string, start: string, content: null}}
*/
import fs from 'node-fs';
import tasksList from '../sources/tasks.json' assert { type: "json" };
let folderPrefix = './emploi-du-temps/folders_build';
async function foldersGeneration(dirpath){
await fs.promises.mkdir(`${folderPrefix}/${dirpath}`, { recursive: true })
}
export let sectionsCleaned = {}
// TODO prendre le groupe de type projets; récupérer les tâches de level 2
export function get_sections_from_tasks_orgfile(generate_folders= false){
tasksList.contents.map( elem => {
let sectionTitle = elem.properties['raw-value'];
if(sectionTitle){
let cleanSectionName = removeBrackets(elem.properties['raw-value']).replace(/-*/g, "")
sectionsCleaned[cleanSectionName] = {}
if(generate_folders){
foldersGeneration(cleanSectionName);
}
console.log('section PARA: ', cleanSectionName)
elem.contents.map( content => {
let subSectionName = removeBrackets(content.properties['raw-value'])
console.log(' - ',subSectionName )
sectionsCleaned[cleanSectionName][subSectionName] = subSectionName
if(generate_folders){
foldersGeneration(`${cleanSectionName}/${subSectionName}`)
}
})
}
})
console.log('sectionsCleaned',sectionsCleaned)
return sectionsCleaned;
}
/**
* clean org tasks headings of links to roam things, remove counter cookies
* @param input
* @returns {string|*}
*/
export function removeBrackets(input) {
if(!input){
return input;
}
return input
.replace(/{.*?}/g, "")
.replace('\'', ' ')
.replace(' ', ' ')
.replace(/\[.*?\/.*?\]/g, "")
.replace(/\[\[.*?\[/g, "")
.replace(/\]*/g, "")
.replace(/<.*?>/g, "")
.replace(/\(.*?\)/g, "")
.replace(']','')
.toLowerCase()
.trim()
//.replace('[','')
;
}
get_sections_from_tasks_orgfile(true);
console.log("* Emploi du temps pour deux semaines sans inclure les weekend \n")
//displayDays();

View File

@ -3,6 +3,9 @@
* cela permet de parcourir tous les aspects de la méthodologie PARA sur différents créneaux * cela permet de parcourir tous les aspects de la méthodologie PARA sur différents créneaux
* @type {{duration: string, start: string, content: null}} * @type {{duration: string, start: string, content: null}}
*/ */
import fs from 'node-fs';
import tasksList from '../sources/tasks.json'
import {get_sections_from_tasks_orgfile} from "./folder_from_tasks"; assert { type: "json" };
const timespan_base = { const timespan_base = {
start: "8", start: "8",
@ -166,6 +169,10 @@ let day_categories_map = [
] ]
const sections = get_sections_from_tasks_orgfile()
function loopOneDay(){ function loopOneDay(){
// passer sur les catégories et faire progresser l'index des éléments des catégories // passer sur les catégories et faire progresser l'index des éléments des catégories
@ -243,5 +250,4 @@ function convertMinutesOfDayToHourDisplay(max_min_a_day){
console.log("* Emploi du temps pour deux semaines sans inclure les weekend \n") console.log("* Emploi du temps pour deux semaines sans inclure les weekend \n")
displayDays(); //displayDays();
displayDays();

11
emploi-du-temps/readme.md Normal file
View File

@ -0,0 +1,11 @@
# générateur d'emploi du temps
* exporter en json vos tâches Orgmode. tasks.json
* les placer dans le dossier de sources.
* lancer le script
node emploi-du-temps/generateur.mjs > emploi-du-temps/report_generation.org
* utiliser les dossiers générés pour avoir une hiérarchie de fichiers selon le modèle PARA qui soit cohérente avec votre gestion de tâches.
exemple de fichier tasks json

View File

@ -3,7 +3,7 @@
"node-fs": "^0.1.7", "node-fs": "^0.1.7",
"nodemon": "^2.0.19" "nodemon": "^2.0.19"
}, },
"scripts" : { "scripts": {
"start" : "node app.js" "start": "node app.js"
} }
} }

1306
yarn.lock

File diff suppressed because it is too large Load Diff