var express = require('express'); var fs = require('fs'); var parseString = require("xml2js").parseString; var router = express.Router(); var fileToOpen = 'gtg_tasks' // const convertFiles = true; const convertFiles = false; const computeDataOnExtract = true; let jsonAllData = { tasks : {}, stats : {}, projects : {}, tags : {}, } /* GET home page. */ /** * obtenir la liste de tags que l'on a entré */ router.get('/', async function (req, res, next) { if(convertFiles){ convertOneXmlToJson('gtg_tasks',res) convertOneXmlToJson('tags',res) convertOneXmlToJson('projects',res) }else{ console.log('================== conversion de fichiers désactivée dans index.js ================== ') } // récupérer le contenu des json jsonAllData.tags = require('../sources/tags_gtg.json') jsonAllData.tasks = require('../sources/gtg_tasks_gtg.json') if(computeDataOnExtract){ jsonAllData = computeData(jsonAllData) }else{ console.log('================== calcul de stats désactivé dans index.js ================== ') } console.log('json files read' ) res.render('index', {title: "Conversion de GTG tâches", json: jsonAllData}) }); async function readfileJson(fileToOpen){ fs.readFile(`sources/${fileToOpen}`, "utf-8", function (err, data) { if (err) console.log(err); console.log('ok ', fileToOpen ) return JSON.parse(data) }); } function computeData(jsonAllData){ // trouver le nombre de tâches ayant un tag en particulier // et rajouter ce nombre à chaque tag, dans countTasks : N // let tagCountTasks = Object.create(jsonAllData.tags); for(let t of jsonAllData.tasks.project.task ) { console.log('t', t) let tags = t["$"].tags // console.log('tags', tags) } return jsonAllData } function convertOneXmlToJson(fileToOpen,res){ fs.readFile(`sources/${fileToOpen}.xml`, "utf-8", function (err, data) { if (err) console.log(err); const results = transformToJson(data, fileToOpen, res) console.log('fichier converti en json', fileToOpen) }); } function transformToJson(xml,fileToOpen, res) { return parseString(xml, function (err, result) { if (err) console.log(err); // console.dir(JSON.stringify(result)); console.log('Done'); // write file to disk fs.writeFile(`sources/${fileToOpen}_gtg.json`, JSON.stringify(result, null, 4), 'utf8', (err) => { if (err) { console.log(`Error writing file: ${err}`); // return JSON.stringify(result) res.send(err) } else { console.log(`File \`sources/${fileToOpen}_gtg.json\` is written successfully!`); } }); }); } module.exports = router;