mirror of
https://gitlab.com/MrFry/mrfrys-node-server
synced 2025-04-01 20:24:18 +02:00
Merge
This commit is contained in:
commit
fbdbebd1d5
7 changed files with 160 additions and 182 deletions
|
@ -8,12 +8,10 @@ const colWidth = 40
|
|||
const maxStatLength = colWidth // Math.floor(cols / 4)
|
||||
const statNameSpacing = 4
|
||||
const beforeRowSpace = 13
|
||||
const rowsToPrint = Math.floor(cols / (colWidth + statNameSpacing + beforeRowSpace / 3 + 5)) || 1
|
||||
const colsToPrint =
|
||||
Math.floor(cols / (colWidth + statNameSpacing + beforeRowSpace / 3 + 5)) || 1
|
||||
const coloredWords = {
|
||||
red: [
|
||||
'lred',
|
||||
'thanks'
|
||||
],
|
||||
red: ['lred', 'thanks'],
|
||||
cyan: [
|
||||
'getveteranpw',
|
||||
'pwrequest',
|
||||
|
@ -53,12 +51,7 @@ const coloredWords = {
|
|||
'registerscript',
|
||||
'install',
|
||||
],
|
||||
magenta: [
|
||||
'addPost',
|
||||
'comment',
|
||||
'postfeedback',
|
||||
'quickvote',
|
||||
],
|
||||
magenta: ['addPost', 'comment', 'postfeedback', 'quickvote'],
|
||||
}
|
||||
const filterFromDailyStats = [
|
||||
'savedQuestions',
|
||||
|
@ -164,10 +157,7 @@ function tail(text, number) {
|
|||
}
|
||||
|
||||
function head(text, number) {
|
||||
return text
|
||||
.split('\n')
|
||||
.slice(0, number)
|
||||
.join('\n')
|
||||
return text.split('\n').slice(0, number).join('\n')
|
||||
}
|
||||
|
||||
function countLinesMatching(text, toMatch) {
|
||||
|
@ -180,6 +170,20 @@ function countLinesMatching(text, toMatch) {
|
|||
return count
|
||||
}
|
||||
|
||||
function getDayName(day) {
|
||||
switch (day) {
|
||||
case 0:
|
||||
case undefined:
|
||||
return 'Today'
|
||||
case -1:
|
||||
return 'Yesterday'
|
||||
case -2:
|
||||
return 'Before yesterday'
|
||||
default:
|
||||
return `Day ${day.toString()}`
|
||||
}
|
||||
}
|
||||
|
||||
function readFile(name) {
|
||||
if (fs.existsSync(name)) {
|
||||
return fs.readFileSync(name, 'utf8')
|
||||
|
@ -198,7 +202,7 @@ function pCols(cols, rowTitles, colorNames, firstRowColor) {
|
|||
// console.log(cols)
|
||||
let maxLength = 0
|
||||
cols.reverse().forEach((col, i) => {
|
||||
if (i >= rowsToPrint) {
|
||||
if (i >= colsToPrint) {
|
||||
return
|
||||
}
|
||||
if (col.length > maxLength) {
|
||||
|
@ -211,54 +215,53 @@ function pCols(cols, rowTitles, colorNames, firstRowColor) {
|
|||
for (let i = 0; i < maxLength; i++) {
|
||||
const row = []
|
||||
|
||||
cols
|
||||
.forEach((val, colIndex) => {
|
||||
if (colIndex >= rowsToPrint) {
|
||||
return
|
||||
}
|
||||
if (!val[i]) {
|
||||
row.push(getLetterNTimes(' ', maxStatLength + statNameSpacing + 2))
|
||||
return
|
||||
}
|
||||
cols.forEach((val, colIndex) => {
|
||||
if (colIndex >= colsToPrint) {
|
||||
return
|
||||
}
|
||||
if (!val[i]) {
|
||||
row.push(getLetterNTimes(' ', maxStatLength + statNameSpacing + 2))
|
||||
return
|
||||
}
|
||||
|
||||
const keyName = val[i].name || val[i]
|
||||
const keyName = val[i].name || val[i]
|
||||
|
||||
let slicedName = keyName.slice(0, maxStatLength)
|
||||
const toColor = colorNames
|
||||
? Object.keys(coloredWords).reduce((acc, key) => {
|
||||
const colorArray = coloredWords[key]
|
||||
let slicedName = keyName.slice(0, maxStatLength)
|
||||
const toColor = colorNames
|
||||
? Object.keys(coloredWords).reduce((acc, key) => {
|
||||
const colorArray = coloredWords[key]
|
||||
|
||||
const includes = colorArray.some((colorableIdName) => {
|
||||
return keyName
|
||||
.toLowerCase()
|
||||
.includes(colorableIdName.toLowerCase())
|
||||
})
|
||||
const includes = colorArray.some((colorableIdName) => {
|
||||
return keyName
|
||||
.toLowerCase()
|
||||
.includes(colorableIdName.toLowerCase())
|
||||
})
|
||||
|
||||
if (includes) {
|
||||
return key
|
||||
}
|
||||
if (includes) {
|
||||
return key
|
||||
}
|
||||
|
||||
return acc
|
||||
}, '')
|
||||
: false
|
||||
return acc
|
||||
}, '')
|
||||
: false
|
||||
|
||||
const sep = (i + 1) % 5 === 0 ? '.' : ' '
|
||||
const sep = (i + 1) % 5 === 0 ? '.' : ' '
|
||||
|
||||
while (slicedName.length < maxStatLength) {
|
||||
slicedName = slicedName + sep
|
||||
}
|
||||
while (slicedName.length < maxStatLength) {
|
||||
slicedName = slicedName + sep
|
||||
}
|
||||
|
||||
let ammount = val[i].val ? val[i].val.toString() : ''
|
||||
while (ammount.length < 5) {
|
||||
ammount = ammount + ' '
|
||||
}
|
||||
let ammount = val[i].val ? val[i].val.toString() : ''
|
||||
while (ammount.length < 5) {
|
||||
ammount = ammount + ' '
|
||||
}
|
||||
|
||||
if (toColor) {
|
||||
row.push(C(toColor) + slicedName + ' ' + ammount + C())
|
||||
} else {
|
||||
row.push(slicedName + ' ' + ammount)
|
||||
}
|
||||
})
|
||||
if (toColor) {
|
||||
row.push(C(toColor) + slicedName + ' ' + ammount + C())
|
||||
} else {
|
||||
row.push(slicedName + ' ' + ammount)
|
||||
}
|
||||
})
|
||||
|
||||
// ROW TITLE ---------------------------------------------------
|
||||
let currRowTitle =
|
||||
|
@ -311,7 +314,7 @@ function preProcessDailyStats(obj) {
|
|||
if (i === index) {
|
||||
return {
|
||||
...x,
|
||||
val: z.val + x.val
|
||||
val: z.val + x.val,
|
||||
}
|
||||
}
|
||||
return z
|
||||
|
@ -333,12 +336,15 @@ function preProcessDailyStats(obj) {
|
|||
}
|
||||
})
|
||||
}
|
||||
function getDailyStat(day) {
|
||||
return preProcessDailyStats(dailyStats[getDayIndex(day)])
|
||||
}
|
||||
|
||||
pCols(
|
||||
[
|
||||
preProcessDailyStats(dailyStats[getDayIndex()]),
|
||||
preProcessDailyStats(dailyStats[getDayIndex(-1)]),
|
||||
preProcessDailyStats(dailyStats[getDayIndex(-2)]),
|
||||
...[...Array(colsToPrint).keys()].map((x) => {
|
||||
return getDailyStat(-x)
|
||||
}),
|
||||
],
|
||||
null,
|
||||
true
|
||||
|
@ -361,15 +367,18 @@ function preProcessUIdTestSolving(obj, minLength) {
|
|||
return Object.keys(obj).length.toString()
|
||||
}
|
||||
}
|
||||
function getUserIdTestSolving(day) {
|
||||
return [
|
||||
getDayName(day),
|
||||
preProcessUIdTestSolving(userIdTestSolving[getDayIndex(day)]),
|
||||
]
|
||||
}
|
||||
|
||||
pCols(
|
||||
[
|
||||
['Today', preProcessUIdTestSolving(userIdTestSolving[getDayIndex()])],
|
||||
['Yesterday', preProcessUIdTestSolving(userIdTestSolving[getDayIndex(-1)])],
|
||||
[
|
||||
'Before yesterday',
|
||||
preProcessUIdTestSolving(userIdTestSolving[getDayIndex(-2)]),
|
||||
],
|
||||
...[...Array(colsToPrint).keys()].map((x) => {
|
||||
return getUserIdTestSolving(-x)
|
||||
}),
|
||||
],
|
||||
null,
|
||||
false,
|
||||
|
@ -379,24 +388,19 @@ pCols(
|
|||
// ------------------------------------------------------------------------------
|
||||
printHeader('User id requests')
|
||||
const clientIdTestSolving = readJSON(`${dir}stats/uvstats`)
|
||||
function getUserIdRequests(day) {
|
||||
return [
|
||||
getDayName(day),
|
||||
preProcessUIdTestSolving(clientIdTestSolving[getDayIndex(day)]),
|
||||
preProcessUIdTestSolving(clientIdTestSolving[getDayIndex(day)], 5),
|
||||
]
|
||||
}
|
||||
|
||||
pCols(
|
||||
[
|
||||
[
|
||||
'Today',
|
||||
preProcessUIdTestSolving(clientIdTestSolving[getDayIndex()]),
|
||||
preProcessUIdTestSolving(clientIdTestSolving[getDayIndex()], 5),
|
||||
],
|
||||
[
|
||||
'Yesterday',
|
||||
preProcessUIdTestSolving(clientIdTestSolving[getDayIndex(-1)]),
|
||||
preProcessUIdTestSolving(clientIdTestSolving[getDayIndex(-1)], 5),
|
||||
],
|
||||
[
|
||||
'Before Yesterday',
|
||||
preProcessUIdTestSolving(clientIdTestSolving[getDayIndex(-2)]),
|
||||
preProcessUIdTestSolving(clientIdTestSolving[getDayIndex(-2)], 5),
|
||||
],
|
||||
...[...Array(colsToPrint).keys()].map((x) => {
|
||||
return getUserIdRequests(-x)
|
||||
}),
|
||||
],
|
||||
['', 'All', 'More than 5'],
|
||||
false,
|
||||
|
@ -406,15 +410,18 @@ pCols(
|
|||
// ------------------------------------------------------------------------------
|
||||
printHeader('Daily data count')
|
||||
const dailyDataCount = readFile(`${dir}stats/dailyDataCount`)
|
||||
function getDailyDataCount(count) {
|
||||
return [...Array(count).keys()].map((x) => {
|
||||
return JSON.parse(head(tail(dailyDataCount, x + 1), 1))
|
||||
})
|
||||
}
|
||||
|
||||
printLastDataCount([
|
||||
JSON.parse(head(tail(dailyDataCount, 1), 1)),
|
||||
JSON.parse(head(tail(dailyDataCount, 2), 1)),
|
||||
JSON.parse(head(tail(dailyDataCount, 3), 1)),
|
||||
])
|
||||
printLastDataCount(getDailyDataCount(colsToPrint))
|
||||
|
||||
function printLastDataCount(data) {
|
||||
const res = [['Today'], ['Yesterday'], ['Before yesterday']]
|
||||
const res = [...Array(colsToPrint).keys()].map((x) => {
|
||||
return [getDayName(-x)]
|
||||
})
|
||||
data.forEach((dataCount, i) => {
|
||||
res[i].push(dataCount.userCount.toString())
|
||||
res[i].push(dataCount.subjectCount.toString())
|
||||
|
@ -425,26 +432,24 @@ function printLastDataCount(data) {
|
|||
}
|
||||
// ------------------------------------------------------------------------------
|
||||
printHeader('Daily script install / update check count')
|
||||
const todaysLogs = readFile(`${dir}stats/vlogs/log`)
|
||||
const yesterdaysLogs = readFile(`${dir}stats/vlogs/${getDayIndex(-1)}`) || ''
|
||||
const beforeYesterdaysLogs = readFile(`${dir}stats/vlogs/${getDayIndex(-2)}`) || ''
|
||||
function getDailyScriptStat(day) {
|
||||
const log =
|
||||
!day || day === 0
|
||||
? readFile(`${dir}stats/vlogs/log`)
|
||||
: readFile(`${dir}stats/vlogs/${getDayIndex(day)}`)
|
||||
|
||||
const installs = [
|
||||
[
|
||||
'Today',
|
||||
countLinesMatching(todaysLogs, '?install').toString(),
|
||||
countLinesMatching(todaysLogs, '?up').toString(),
|
||||
],
|
||||
[
|
||||
'Yesterday',
|
||||
countLinesMatching(yesterdaysLogs, '?install').toString(),
|
||||
countLinesMatching(yesterdaysLogs, '?up').toString(),
|
||||
],
|
||||
[
|
||||
'Before yesterday',
|
||||
countLinesMatching(beforeYesterdaysLogs, '?install').toString(),
|
||||
countLinesMatching(beforeYesterdaysLogs, '?up').toString(),
|
||||
],
|
||||
]
|
||||
if (!log) {
|
||||
return [getDayName(day), 0, 0]
|
||||
}
|
||||
return [
|
||||
getDayName(day),
|
||||
countLinesMatching(log, '?install').toString(),
|
||||
countLinesMatching(log, '?up').toString(),
|
||||
]
|
||||
}
|
||||
|
||||
const installs = [...Array(colsToPrint).keys()].map((x) => {
|
||||
return getDailyScriptStat(-x)
|
||||
})
|
||||
|
||||
pCols(installs, ['', 'Installs', 'Updates'], false, 'green')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue