start export markdown
This commit is contained in:
parent
a2d9cc175c
commit
b131a2400b
@ -27,7 +27,7 @@ puis naviguer sur https://localhost:3300
|
||||
Mettre les gtg_tasks.xml
|
||||
|
||||
|
||||
Ce serveur va lire un fichier dans le dossier source, celui des tâches de GTG, puis en faire un json, et en sortir des statistiques dans une page web.
|
||||
Ce serveur va lire un fichier dans le dossier **source**, celui des tâches de GTG, puis en faire un json, et en sortir des statistiques dans une page web.
|
||||
|
||||
|
||||
## sources
|
||||
|
@ -1 +1,140 @@
|
||||
# Export de Tags GTG du 02/03/2021 à 11:09:59
|
||||
# Export de Tâches GTG
|
||||
date: 02/03/2021 à 11:56:59
|
||||
# Rapport des tâches durant les 7 derniers jours
|
||||
|
||||
## ont été fermées
|
||||
|
||||
## ont été ouvertes
|
||||
|
||||
---
|
||||
# Stats de fermeture des tâches
|
||||
|
||||
---
|
||||
|
||||
# Export de toutes les 264 tâches ouvertes GTG
|
||||
|
||||
|
||||
---
|
||||
|
||||
# Export de toutes les 183 tâches fermées GTG
|
||||
|
||||
|
||||
|
||||
# Export de Tags GTG
|
||||
|
||||
|
||||
|
||||
* @osm , 39
|
||||
* @graph , 10
|
||||
* @forum , 2
|
||||
* @dev , 115
|
||||
* @vélo , 6
|
||||
* @écriture , 8
|
||||
* @rémunéré , 16
|
||||
* @edu , 28
|
||||
* @mail , 23
|
||||
* @vacances , 12
|
||||
* @tel , 17
|
||||
* @mobilizon , 26
|
||||
* @elec , 4
|
||||
* @pognon , 9
|
||||
* @travaux , 29
|
||||
* @administratif , 9
|
||||
* @associatif , 34
|
||||
* @serveur , 3
|
||||
* @work , 30
|
||||
* @nextcloud , 16
|
||||
* @encryption , 2
|
||||
* @untouched , 82
|
||||
* @adminsys , 16
|
||||
* @recherche , 19
|
||||
* @tasks , 5
|
||||
* @social , 14
|
||||
* @GTG , 5
|
||||
* @sys , 30
|
||||
* @vps , 5
|
||||
* @qzine , 3
|
||||
* @blog , 11
|
||||
* @solabaie , 2
|
||||
* @createrra , 1
|
||||
* @contacts , 3
|
||||
* @carnet , 1
|
||||
* @opendata , 2
|
||||
* @achat , 15
|
||||
* @cuisine , 1
|
||||
* @livre , 12
|
||||
* @achats , 0
|
||||
* @nas , 7
|
||||
* @musique , 1
|
||||
* @DL , 1
|
||||
* @nginx , 2
|
||||
* @sysadmin , 1
|
||||
* @impots , 1
|
||||
* @degfam , 1
|
||||
* @tesla , 1
|
||||
* @lecture , 13
|
||||
* @boulot , 22
|
||||
* @mastodon , 4
|
||||
* @backup , 33
|
||||
* @claire , 12
|
||||
* @famille , 11
|
||||
* @video , 3
|
||||
* @waiting_for, , 0
|
||||
* @déconfinage , 11
|
||||
* @waiting_for , 11
|
||||
* @josm , 14
|
||||
* @bot , 2
|
||||
* @scraping , 13
|
||||
* @chapril , 1
|
||||
* @jardin , 15
|
||||
* @cil-gometz , 9
|
||||
* @photo , 2
|
||||
* @fanzine , 3
|
||||
* @interview , 4
|
||||
* @audio , 2
|
||||
* @dadou , 2
|
||||
* @gtg , 2
|
||||
* @resolv , 1
|
||||
* @fibre , 1
|
||||
* @peertube , 3
|
||||
* @cloud , 2
|
||||
* @media , 2
|
||||
* @extérieur , 14
|
||||
* @voixdunuc , 5
|
||||
* @fediverse , 42
|
||||
* @admins , 0
|
||||
* @april , 3
|
||||
* @spaceship , 12
|
||||
* @ordi , 1
|
||||
* @plume , 3
|
||||
* @oauth , 9
|
||||
* @monitoring , 3
|
||||
* @bitwarden , 1
|
||||
* @archives , 2
|
||||
* @chiffrement , 14
|
||||
* @graphql , 5
|
||||
* @livestream , 3
|
||||
* @install , 1
|
||||
* @rails , 3
|
||||
* @fatland , 2
|
||||
* @courrier , 1
|
||||
* @klassroom , 2
|
||||
* @caisse , 3
|
||||
* @symfnoy , 0
|
||||
* @domoticz , 2
|
||||
* @autohébergement , 3
|
||||
* @grivery , 3
|
||||
* @framadate , 12
|
||||
* @badoune , 2
|
||||
* @grosse_pierre , 6
|
||||
* @symfony , 13
|
||||
* @inbox , 2
|
||||
* @frontend , 11
|
||||
* @spare , 1
|
||||
* framadate , 0
|
||||
* @vosk , 1
|
||||
* @rangement , 3
|
||||
* @mission , 8
|
||||
* @assurance , 3
|
||||
|
||||
rapport généré avec gtg2nodejs par tykayn - contact@cipherbliss.com
|
@ -12,6 +12,7 @@
|
||||
"fs": "0.0.1-security",
|
||||
"http-errors": "^1.6.3",
|
||||
"jade": "^1.11.0",
|
||||
"lodash": "^4.17.21",
|
||||
"morgan": "^1.9.1",
|
||||
"pug": "^3.0.0"
|
||||
},
|
||||
|
114
routes/index.js
114
routes/index.js
@ -1,5 +1,6 @@
|
||||
var express = require('express');
|
||||
var fs = require('fs');
|
||||
var _ = require('lodash');
|
||||
|
||||
var parseString = require("xml2js").parseString;
|
||||
var router = express.Router();
|
||||
@ -67,17 +68,29 @@ function computeData(jsonAllData) {
|
||||
// let tagCountTasks = Object.create(jsonAllData.tags);
|
||||
|
||||
jsonAllData.stats = {
|
||||
tasksCount : jsonAllData.tasks.project.task.length,
|
||||
tasksClosed: 0,
|
||||
tasksOpen : 0,
|
||||
maxTasksCountPerTag : 0,
|
||||
listOpen : [],
|
||||
listClosed : [],
|
||||
tasksCount : jsonAllData.tasks.project.task.length,
|
||||
tasksClosed : 0,
|
||||
tasksOpen : 0,
|
||||
maxTasksCountPerTag: 0,
|
||||
listOpen : [],
|
||||
listOpenWeekly : [],
|
||||
listClosed : [],
|
||||
listClosedWeekly : [],
|
||||
}
|
||||
|
||||
for (let t of jsonAllData.tasks.project.task) {
|
||||
// console.log('t', t)
|
||||
let tags = t["$"].tags.split(',')
|
||||
// count open and closed tasks
|
||||
|
||||
if(t['$'].status == 'Active'){
|
||||
jsonAllData.stats.listOpen.push(t)
|
||||
|
||||
}else if(t['$'].status == 'Done'){
|
||||
jsonAllData.stats.listClosed.push(t)
|
||||
|
||||
}
|
||||
|
||||
for (let tag of tags) {
|
||||
// console.log('tag', tag)
|
||||
jsonAllData.tags.tagstore.tag.map(elem => {
|
||||
@ -103,25 +116,21 @@ function computeData(jsonAllData) {
|
||||
elem.tasksListByTitle.push(t.title)
|
||||
if (t['$'].status == "Active") {
|
||||
elem.tasksListIsActiveByTitle.push(t.title)
|
||||
|
||||
}
|
||||
if (t['$'].status == "Done") {
|
||||
elem.tasksListIsDoneByTitle.push(t.title)
|
||||
}
|
||||
}
|
||||
if(elem.tasks > jsonAllData.stats.maxTasksCountPerTag){
|
||||
if (elem.tasks > jsonAllData.stats.maxTasksCountPerTag) {
|
||||
jsonAllData.stats.maxTasksCountPerTag = elem.tasks
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
if (t.donedate) {
|
||||
jsonAllData.stats.tasksClosed++;
|
||||
jsonAllData.stats.listOpen.push(t);
|
||||
} else {
|
||||
jsonAllData.stats.tasksOpen++;
|
||||
}
|
||||
// console.log('tags', tags)
|
||||
}
|
||||
// sort tags by name
|
||||
|
||||
return jsonAllData
|
||||
|
||||
}
|
||||
@ -146,28 +155,21 @@ function getPercent(someCount, total) {
|
||||
function computeBgColorOnProportionOfOpenTasks(someProportionNumber) {
|
||||
let result = '';
|
||||
|
||||
if(someProportionNumber >= 95){
|
||||
if (someProportionNumber >= 95) {
|
||||
result = 'proportion-over-95'
|
||||
}
|
||||
else if(someProportionNumber >= 90){
|
||||
} else if (someProportionNumber >= 90) {
|
||||
result = 'proportion-over-90'
|
||||
}
|
||||
else if(someProportionNumber >= 80){
|
||||
} else if (someProportionNumber >= 80) {
|
||||
result = 'proportion-over-80'
|
||||
}
|
||||
else if(someProportionNumber >= 65){
|
||||
} else if (someProportionNumber >= 65) {
|
||||
result = 'proportion-over-65'
|
||||
}
|
||||
else if(someProportionNumber >= 50){
|
||||
} else if (someProportionNumber >= 50) {
|
||||
result = 'proportion-over-50'
|
||||
}
|
||||
else if(someProportionNumber >= 40){
|
||||
} else if (someProportionNumber >= 40) {
|
||||
result = 'proportion-over-40'
|
||||
}
|
||||
else if(someProportionNumber >= 25){
|
||||
} else if (someProportionNumber >= 25) {
|
||||
result = 'proportion-over-25'
|
||||
}
|
||||
else if(someProportionNumber >= 15){
|
||||
} else if (someProportionNumber >= 15) {
|
||||
result = 'proportion-over-15'
|
||||
}
|
||||
|
||||
@ -177,9 +179,59 @@ function computeBgColorOnProportionOfOpenTasks(someProportionNumber) {
|
||||
function exportToMarkdown(res) {
|
||||
|
||||
let datenow = new Date();
|
||||
let dataTagsMd = '# Export de Tags GTG du '+ datenow.toLocaleString();
|
||||
let dataTagsMd = `# Export de Tâches GTG \n date: ` + datenow.toLocaleString();
|
||||
// fichier de rapport des tâches fermées durant les 7 derniers jours
|
||||
dataTagsMd += `\n# Rapport des tâches durant les 7 derniers jours `;
|
||||
dataTagsMd += `\n `;
|
||||
dataTagsMd += `\n## ${jsonAllData.stats.listClosedWeekly} ont été fermées `;
|
||||
dataTagsMd += `\n `;
|
||||
dataTagsMd += `\n## ${jsonAllData.stats.listOpenWeekly} ont été ouvertes `;
|
||||
dataTagsMd += `\n `;
|
||||
dataTagsMd += `\n--- `;
|
||||
// fichier de rapport des tâches fermées durant les 31 derniers jours
|
||||
// stats de fermeture des tâches
|
||||
dataTagsMd += `\n# Stats de fermeture des tâches `;
|
||||
dataTagsMd += `\n `;
|
||||
dataTagsMd += `\n--- `;
|
||||
dataTagsMd += `\n `;
|
||||
dataTagsMd += `\n# Export de toutes les ${jsonAllData.stats.listOpen.length} tâches ouvertes GTG \n `;
|
||||
dataTagsMd += `\n `;
|
||||
|
||||
// jsonAllData.stats.listOpen.map(elem => {
|
||||
// dataTagsMd += `\n## ${elem.title} `;
|
||||
// dataTagsMd += `\n statut : ${elem['$'].status} `;
|
||||
// dataTagsMd += `\n créé le : ${elem.addeddate} `;
|
||||
// dataTagsMd += `\n modifié le : ${elem.modified} `;
|
||||
// dataTagsMd += `\n prévu pour : ${elem.duedate | ''} `;
|
||||
// dataTagsMd += `\n ${elem.content} `;
|
||||
// })
|
||||
dataTagsMd += `\n--- `;
|
||||
dataTagsMd += `\n `;
|
||||
dataTagsMd += `\n# Export de toutes les ${jsonAllData.stats.listClosed.length} tâches fermées GTG \n `;
|
||||
dataTagsMd += `\n `;
|
||||
//
|
||||
// jsonAllData.stats.listClosed.map(elem=>{
|
||||
// dataTagsMd += `\n * ${elem.title} `;
|
||||
// })
|
||||
|
||||
dataTagsMd += `\n `;
|
||||
dataTagsMd += `\n# Export de Tags GTG \n `;
|
||||
dataTagsMd += `\n `;
|
||||
dataTagsMd += `\n `;
|
||||
|
||||
let sortedTagsByTitle = _.sortBy(jsonAllData.tags.tagstore.tag, [(o) => {
|
||||
o["$"].name
|
||||
}])
|
||||
|
||||
sortedTagsByTitle.map(elem => {
|
||||
console.log(`elem `, elem['$'].name, elem.tasks)
|
||||
dataTagsMd += `\n * ${elem['$'].name} , ${elem.tasks | 0}`;
|
||||
})
|
||||
|
||||
dataTagsMd += `\n `;
|
||||
dataTagsMd += `\n rapport généré avec gtg2nodejs par tykayn - contact@cipherbliss.com `;
|
||||
// write file to disk
|
||||
fs.writeFile('output/export_tags.md', dataTagsMd, 'utf8', (err) => {
|
||||
fs.writeFile(`output/export_tags.md`, dataTagsMd, `utf8`, (err) => {
|
||||
|
||||
if (err) {
|
||||
console.log(`Error writing file: ${err}`);
|
||||
|
@ -6,8 +6,10 @@ block content
|
||||
section.tasks
|
||||
h2 #{json.tasks.project.task.length} Tâches
|
||||
ul.stats
|
||||
li #{json.stats.tasksOpen} ouvertes
|
||||
li #{json.stats.tasksClosed} fermées
|
||||
li #{json.stats.listOpen.length} ouvertes
|
||||
li #{json.stats.listOpenWeekly.length} ouvertes cette semaine
|
||||
li #{json.stats.listClosed.length} fermées
|
||||
li #{json.stats.listClosedWeekly.length} fermées cette semaine
|
||||
section.tags
|
||||
h2 #{json.tags.tagstore.tag.length} Tags
|
||||
p maximum de #{json.stats.maxTasksCountPerTag} tâches pour un tag.
|
||||
|
Loading…
Reference in New Issue
Block a user