disable traffic charts if set to zero

This commit is contained in:
Alireza Ahmadi
2025-08-30 02:11:43 +02:00
parent e3c33bf649
commit 560c41acbe
5 changed files with 27 additions and 8 deletions
+5
View File
@@ -90,6 +90,10 @@ func (a *ApiService) getData(c *gin.Context) (interface{}, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
trafficAge, err := a.SettingService.GetTrafficAge()
if err != nil {
return "", err
}
data["config"] = json.RawMessage(config) data["config"] = json.RawMessage(config)
data["clients"] = clients data["clients"] = clients
data["tls"] = tlsConfigs data["tls"] = tlsConfigs
@@ -98,6 +102,7 @@ func (a *ApiService) getData(c *gin.Context) (interface{}, error) {
data["endpoints"] = endpoints data["endpoints"] = endpoints
data["services"] = services data["services"] = services
data["subURI"] = subURI data["subURI"] = subURI
data["enableTraffic"] = trafficAge > 0
data["onlines"] = onlines data["onlines"] = onlines
} else { } else {
data["onlines"] = onlines data["onlines"] = onlines
+3 -1
View File
@@ -20,11 +20,13 @@ func (c *CronJob) Start(loc *time.Location, trafficAge int) error {
go func() { go func() {
// Start stats job // Start stats job
c.cron.AddJob("@every 10s", NewStatsJob()) c.cron.AddJob("@every 10s", NewStatsJob(trafficAge > 0))
// Start expiry job // Start expiry job
c.cron.AddJob("@every 1m", NewDepleteJob()) c.cron.AddJob("@every 1m", NewDepleteJob())
// Start deleting old stats // Start deleting old stats
if trafficAge > 0 {
c.cron.AddJob("@daily", NewDelStatsJob(trafficAge)) c.cron.AddJob("@daily", NewDelStatsJob(trafficAge))
}
// Start core if it is not running // Start core if it is not running
c.cron.AddJob("@every 5s", NewCheckCoreJob()) c.cron.AddJob("@every 5s", NewCheckCoreJob())
}() }()
+6 -3
View File
@@ -7,14 +7,17 @@ import (
type StatsJob struct { type StatsJob struct {
service.StatsService service.StatsService
enableTraffic bool
} }
func NewStatsJob() *StatsJob { func NewStatsJob(saveTraffic bool) *StatsJob {
return &StatsJob{} return &StatsJob{
enableTraffic: saveTraffic,
}
} }
func (s *StatsJob) Run() { func (s *StatsJob) Run() {
err := s.StatsService.SaveStats() err := s.StatsService.SaveStats(s.enableTraffic)
if err != nil { if err != nil {
logger.Warning("Get stats failed: ", err) logger.Warning("Get stats failed: ", err)
return return
+7
View File
@@ -391,6 +391,13 @@ func (s *SettingService) Save(tx *gorm.DB, data json.RawMessage) error {
} }
} }
// Delete all stats if it is set to 0
if key == "trafficAge" && obj == "0" {
err = tx.Where("id > 0").Delete(model.Stats{}).Error
if err != nil {
return err
}
}
err = tx.Model(model.Setting{}).Where("key = ?", key).Update("value", obj).Error err = tx.Model(model.Setting{}).Where("key = ?", key).Update("value", obj).Error
if err != nil { if err != nil {
return err return err
+5 -3
View File
@@ -19,7 +19,7 @@ var onlineResources = &onlines{}
type StatsService struct { type StatsService struct {
} }
func (s *StatsService) SaveStats() error { func (s *StatsService) SaveStats(enableTraffic bool) error {
if !corePtr.IsRunning() { if !corePtr.IsRunning() {
return nil return nil
} }
@@ -70,8 +70,10 @@ func (s *StatsService) SaveStats() error {
} }
} }
err = tx.Create(&stats).Error if !enableTraffic {
return err return nil
}
return tx.Create(&stats).Error
} }
func (s *StatsService) GetStats(resource string, tag string, limit int) ([]model.Stats, error) { func (s *StatsService) GetStats(resource string, tag string, limit int) ([]model.Stats, error) {