func NewPage(numCores int) *MainPage {
	rxSparkLine := viz.NewSparkline()
	rxSparkLine.Data = []float64{}
	txSparkLine := viz.NewSparkline()
	txSparkLine.Data = []float64{}
	page := &MainPage{
		Grid:             ui.NewGrid(),
		MemoryChart:      viz.NewHorizontalBarChart(),
		DiskChart:        viz.NewTable(),
		NetworkChart:     viz.NewSparklineGroup(rxSparkLine, txSparkLine),
		CPUTable:         viz.NewCPUTableChart(),
		CPUChart:         viz.NewLineGraph(),
		TemperatureTable: viz.NewTable(),
		InfoTable:        viz.NewTable(),
		BatteryGauge:     widgets.NewGauge(),
	}
	page.init(numCores)
	return page
}
NewPage returns a new page initialized from the MainPage struct
package general
import (
	"fmt"
	ui "github.com/gizak/termui/v3"
	"github.com/gizak/termui/v3/widgets"
	viz "github.com/pesos/grofer/pkg/utils/visualization"
)
type MainPage struct {
	Grid             *ui.Grid
	MemoryChart      *viz.HorizontalBarChart
	DiskChart        *viz.Table
	NetworkChart     *viz.SparklineGroup
	CPUTable         *viz.CPUTableChart
	CPUChart         *viz.LineGraph
	TemperatureTable *viz.Table
	InfoTable        *viz.Table
	BatteryGauge     *widgets.Gauge
	selectedTable    int
	cpuTableVisible  bool
}
type CPUPage struct {
	Grid        *ui.Grid
	UsrChart    *widgets.Gauge
	NiceChart   *widgets.Gauge
	SysChart    *widgets.Gauge
	IowaitChart *widgets.Gauge
	IrqChart    *widgets.Gauge
	SoftChart   *widgets.Gauge
	IdleChart   *widgets.Gauge
	StealChart  *widgets.Gauge
	CPUChart    *widgets.Table
	CPUTable    *viz.Table
}