Skip to content

Commit 5abc0da

Browse files
committed
wip
1 parent a2bcbd0 commit 5abc0da

File tree

2 files changed

+70
-36
lines changed

2 files changed

+70
-36
lines changed

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
"@socketsecurity/config": "^2.1.3",
3232
"@socketsecurity/sdk": "^1.2.0",
3333
"ansi-align": "^3.0.1",
34+
"blessed": "^0.1.81",
35+
"blessed-contrib": "^4.11.0",
3436
"chalk-table": "^1.0.2",
3537
"cli-boxes": "^3.0.0",
3638
"cli-spinners": "^2.9.2",

src/commands/analytics.ts

Lines changed: 68 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1+
// @ts-nocheck
2+
// @ts-ignore
3+
import blessed from 'blessed'
4+
import contrib from 'blessed-contrib'
15
import chalk from 'chalk'
2-
import meow from 'meow'
3-
import ora from 'ora'
46
// @ts-ignore
57
import chalkTable from 'chalk-table'
8+
import meow from 'meow'
9+
import ora from 'ora'
610

711
import { outputFlags, validationFlags } from '../flags'
812
import { handleApiCall, handleUnsuccessfulApiResponse } from '../utils/api-helpers'
@@ -108,43 +112,71 @@ async function fetchOrgAnalyticsData (time: string, spinner: Ora, apiKey: string
108112

109113
spinner.stop()
110114

111-
const data = result.data.reduce((acc: { [key: string]: any }, current) => {
112-
const formattedDate = new Date(current.created_at).toLocaleDateString()
113-
114-
if (acc[formattedDate]) {
115-
acc[formattedDate].total_critical_alerts += current.total_critical_alerts
116-
acc[formattedDate].total_high_alerts += current.total_high_alerts
117-
acc[formattedDate].total_critical_added += current.total_critical_added
118-
acc[formattedDate].total_high_added += current.total_high_added
119-
acc[formattedDate].total_critical_prevented += current.total_critical_prevented
120-
acc[formattedDate].total_high_prevented += current.total_high_prevented
121-
acc[formattedDate].total_medium_prevented += current.total_medium_prevented
122-
acc[formattedDate].total_low_prevented += current.total_low_prevented
123-
// acc[formattedDate].top_five_alert_types += current.top_five_alert_types
124-
} else {
125-
acc[formattedDate] = current
126-
acc[formattedDate].created_at = formattedDate
127-
}
115+
// const data = result.data.reduce((acc: { [key: string]: any }, current) => {
116+
// const formattedDate = new Date(current.created_at).toLocaleDateString()
117+
118+
// if (acc[formattedDate]) {
119+
// acc[formattedDate].total_critical_alerts += current.total_critical_alerts
120+
// acc[formattedDate].total_high_alerts += current.total_high_alerts
121+
// acc[formattedDate].total_critical_added += current.total_critical_added
122+
// acc[formattedDate].total_high_added += current.total_high_added
123+
// acc[formattedDate].total_critical_prevented += current.total_critical_prevented
124+
// acc[formattedDate].total_high_prevented += current.total_high_prevented
125+
// acc[formattedDate].total_medium_prevented += current.total_medium_prevented
126+
// acc[formattedDate].total_low_prevented += current.total_low_prevented
127+
// // acc[formattedDate].top_five_alert_types += current.top_five_alert_types
128+
// } else {
129+
// acc[formattedDate] = current
130+
// acc[formattedDate].created_at = formattedDate
131+
// }
132+
133+
// return acc
134+
// }, {})
135+
136+
137+
// const options = {
138+
// columns: [
139+
// { field: 'created_at', name: chalk.cyan('Date') },
140+
// { field: 'total_critical_alerts', name: chalk.cyan('Critical alerts') },
141+
// { field: 'total_high_alerts', name: chalk.cyan('High alerts') },
142+
// { field: 'total_critical_added', name: chalk.cyan('Critical alerts added') },
143+
// { field: 'total_high_added', name: chalk.cyan('High alerts added') },
144+
// { field: 'total_critical_prevented', name: chalk.cyan('Critical alerts prevented') },
145+
// { field: 'total_medium_prevented', name: chalk.cyan('Medium alerts prevented') },
146+
// { field: 'total_low_prevented', name: chalk.cyan('Low alerts prevented') },
147+
// ]
148+
// }
149+
150+
// console.log(chalk.bgMagenta.white.bold(`\n Analytics data at the organization level over the last ${time} days (indicated in total amount): \n`))
151+
// console.log(`${chalkTable(options, Object.values(data))}\n`)
152+
153+
const screen = blessed.screen()
154+
// eslint-disable-next-line
155+
const grid = new contrib.grid({rows: 1, cols: 2, screen})
156+
157+
const line = grid.set(0, 0, 1, 1, contrib.line,
158+
{ style:
159+
{ line: "yellow"
160+
, text: "green"
161+
, baseline: "black"}
162+
, xLabelPadding: 3
163+
, xPadding: 5
164+
, label: 'Stocks'})
165+
166+
// const map = grid.set(0, 1, 1, 1, contrib.map, {label: 'Servers Location'})
167+
168+
const lineData = {
169+
x: ['t1', 't2', 't3', 't4'],
170+
y: [5, 1, 7, 5]
171+
}
128172

129-
return acc
130-
}, {})
173+
line.setData([lineData])
131174

175+
screen.key(['escape', 'q', 'C-c'], function(ch, key) {
176+
return process.exit(0);
177+
});
132178

133-
const options = {
134-
columns: [
135-
{ field: 'created_at', name: chalk.cyan('Date') },
136-
{ field: 'total_critical_alerts', name: chalk.cyan('Critical alerts') },
137-
{ field: 'total_high_alerts', name: chalk.cyan('High alerts') },
138-
{ field: 'total_critical_added', name: chalk.cyan('Critical alerts added') },
139-
{ field: 'total_high_added', name: chalk.cyan('High alerts added') },
140-
{ field: 'total_critical_prevented', name: chalk.cyan('Critical alerts prevented') },
141-
{ field: 'total_medium_prevented', name: chalk.cyan('Medium alerts prevented') },
142-
{ field: 'total_low_prevented', name: chalk.cyan('Low alerts prevented') },
143-
]
144-
}
145-
146-
console.log(chalk.bgMagenta.white.bold(`\n Analytics data at the organization level over the last ${time} days (indicated in total amount): \n`))
147-
console.log(`${chalkTable(options, Object.values(data))}\n`)
179+
screen.render()
148180
}
149181

150182
async function fetchRepoAnalyticsData (repo: string, time: string, spinner: Ora, apiKey: string): Promise<void> {

0 commit comments

Comments
 (0)