improve stats date

This commit is contained in:
Tykayn 2023-04-18 13:24:20 +02:00 committed by tykayn
parent 24f590d7e5
commit aff36ac2da
1 changed files with 68 additions and 61 deletions

View File

@ -97,14 +97,19 @@ let currentTask = Object.create(task);
* add to tasks to export and refresh current task
*/
function addAndRefreshCurrentTask() {
makeWordsStatistics(currentTask.header.trim())
makeWordsStatistics(currentTask.corpus.trim())
tasksObjectsForJsonExport.push(currentTask)
// réinitialisation de tâche pour remplir de nouveau
currentTask = Object.create(task);
currentTask.dates = {};
currentTask.tags = [];
};
}
function makeWordsStatistics(sentence) {
console.log('sentence', sentence)
let split = sentence.split(' ');
if (split && split.length) {
@ -117,6 +122,36 @@ function makeWordsStatistics(sentence) {
}
}
const dateStats = {
created: 0,
refiled: 0,
closed: 0,
cancelled: 0,
scheduled: 0,
deadline: 0,
}
function fillPeriodTime(periodStat, keyword){
if (keyword === 'CLOSED') {
periodStat.closed++;
}
if (keyword === 'CREATED') {
periodStat.created++;
}
if (keyword === 'Refiled') {
periodStat.refiled++;
}
if (keyword === 'CANCELLED') {
periodStat.cancelled++;
}
if (keyword === 'SCHEDULED') {
periodStat.scheduled++;
}
if (keyword === 'DEADLINE') {
periodStat.deadline++;
}
}
/**
* pour chaque période de temps, compter les tâches créées et fermées
@ -139,59 +174,27 @@ function statisticDateFill(keyword, dateFoundElement) {
let dayOfDate = convertedDate.getFullYear() + '-' + convertedMonth + '-' + convertedDay
if (!statistics.dates.years[yearOfDate]) {
statistics.dates.years[yearOfDate] = {
created: 0,
closed: 0,
}
}
if (keyword === 'CLOSED') {
statistics.dates.years[yearOfDate].closed++;
}
if (keyword === 'CREATED') {
statistics.dates.years[yearOfDate].created++;
statistics.dates.years[yearOfDate] = Object.create(dateStats)
}
fillPeriodTime(statistics.dates.years[yearOfDate], keyword)
// par année-semaine
if (!statistics.dates.weeks[weekOfDate]) {
statistics.dates.weeks[weekOfDate] = {
created: 0,
closed: 0,
}
statistics.dates.weeks[weekOfDate] = Object.create(dateStats)
}
if (keyword === 'CLOSED') {
statistics.dates.weeks[weekOfDate].closed++;
}
if (keyword === 'CREATED') {
statistics.dates.weeks[weekOfDate].created++;
}
fillPeriodTime(statistics.dates.weeks[weekOfDate], keyword)
// décompte par mois
if (!statistics.dates.months[monthOfDate]) {
statistics.dates.months[monthOfDate] = {
created: 0,
closed: 0,
}
}
if (keyword === 'CLOSED') {
statistics.dates.months[monthOfDate].closed++;
}
if (keyword === 'CREATED') {
statistics.dates.months[monthOfDate].created++;
statistics.dates.months[monthOfDate] = Object.create(dateStats)
}
fillPeriodTime(statistics.dates.months[monthOfDate], keyword)
// décompte par jours
if (!statistics.dates.days[dayOfDate]) {
statistics.dates.days[dayOfDate] = {
created: 0,
closed: 0,
}
}
if (keyword === 'CLOSED') {
statistics.dates.days[dayOfDate].closed++;
}
if (keyword === 'CREATED') {
statistics.dates.days[dayOfDate].created++;
statistics.dates.days[dayOfDate] = Object.create(dateStats)
}
fillPeriodTime(statistics.dates.days[dayOfDate], keyword)
}
@ -251,7 +254,6 @@ fs.readFile(sourceFilePath, 'utf8', function (err, data) {
headers.push(cleanHeader(line))
currentTask.header = cleanHeader(line);
// makeWordsStatistics(cleanHeader(line));
stateKeywordList.forEach(keyword => {
let keywordIsFound = lineHasKeyword(line, keyword)
@ -332,20 +334,22 @@ fs.readFile(sourceFilePath, 'utf8', function (err, data) {
line.indexOf(sectionKeywordList) !== -1
) {
// ajouter le corps complet de la section après le header
if (line.length && !isHeader) {
let cleanedLine = line.replace(/\s\s/g, ' ');
cleanedLine = line.replace(/ {2,}/g, ' ')
cleanedLine = cleanedLine.trim()
currentTask.corpus += `${cleanedLine}
`
makeWordsStatistics(cleanedLine)
}
}
}
})
// ajouter la dernière tâche parsée
addAndRefreshCurrentTask();
@ -361,17 +365,14 @@ fs.readFile(sourceFilePath, 'utf8', function (err, data) {
statistics.dates.months = sortByKey(statistics.dates.months)
statistics.dates.days = sortByKey(statistics.dates.days)
statistics.tags = sortByValue(statistics.tags)
statistics.words = sortByValue(statistics.tags)
sorted_stats = sortByKey(statistics)
statistics = sortByKey(statistics)
const jsonContent = {
statistics: {
lines_count: everyline.length,
headers_count: headers.length,
statistics: sorted_stats
statistics
},
meta_data: {
author: '@tykayn@mastodon.Cipherbliss.com',
@ -390,16 +391,6 @@ fs.readFile(sourceFilePath, 'utf8', function (err, data) {
})
/**
* ranger un objet littéral selon la valeur décroissante de ses paires
* @param literalobject
* @returns {any}
*/
function sortByValue(literalobject) {
return Object.fromEntries(
Object.entries(literalobject).sort(([, a], [, b]) => b - a)
);
}
function lineHasKeyword(line, keyword = 'TODO') {
@ -489,10 +480,26 @@ function sortByKey(objectStuff) {
);
}
/**
* ranger un objet littéral selon la valeur décroissante de ses paires
* @param literalobject
* @returns {any}
*/
function sortByValue(literalobject) {
let sortable = [];
for (var keyName in literalobject) {
sortable[keyName] = literalobject[keyName];
}
// return literalobject
return sortable.sort(function (a, b) {
return b[1] - a[1];
});
}
export async function writeFileInOuputFolderFromJsonObject(fileName, jsonObjectThing) {
console.log('statistics.words', statistics.words)
console.log('statistics.dates', statistics.dates)
return await fs.writeFile(
`${outputAbsolutePath}${fileName}`,