diff --git a/main.go b/main.go index afe4998..d601b63 100644 --- a/main.go +++ b/main.go @@ -605,9 +605,9 @@ func main() { cardLogo, ) } - // log.Println("Gowtham", chartData) + cResRaw := utils.ProcessChartData(chartData, languageSourceConverted, langKey) - log.Println("Gowtham", "loop") + //responce data structure chartHeadingKey := "chart_heading_" + language chartSubHeadingKey := "chart_sub_heading_" + language @@ -635,7 +635,6 @@ func main() { } // card data calculation - // Convert cResRaw ([]map[string]interface{}) to []utils.Observation var cRes []utils.Observation cResJSON, err := json.Marshal(cResRaw) if err != nil { diff --git a/pb_data/logs.db b/pb_data/logs.db index a285f56..8e05d54 100644 Binary files a/pb_data/logs.db and b/pb_data/logs.db differ diff --git a/utils/card_calculation.go b/utils/card_calculation.go index b5fc9c7..aa1835c 100644 --- a/utils/card_calculation.go +++ b/utils/card_calculation.go @@ -7,6 +7,7 @@ import ( "math" "sort" "strconv" + "strings" ) // Observation struct with json.Number for flexible value handling @@ -177,6 +178,25 @@ func difference(data []Observation) float64 { // } // } +// Function to add commas to a number string +func addCommas(num string) string { + n := len(num) + if n <= 3 { + return num + } + var sb strings.Builder + start := n % 3 + if start == 0 { + start = 3 + } + sb.WriteString(num[:start]) + + for i := start; i < n; i += 3 { + sb.WriteString("," + num[i:i+3]) + } + return sb.String() +} + func applyConversion(value float64, conversion string, numberFormat string) string { if numberFormat == "T" { value *= 1000000000000 @@ -189,8 +209,22 @@ func applyConversion(value float64, conversion string, numberFormat string) stri } // Helper function to format the number properly + // formatNumber := func(v float64, suffix string) string { + // if v == float64(int(v)) { // Check if v has no decimal part + // return fmt.Sprintf("%d%s", int(v), suffix) + // } + // return fmt.Sprintf("%.2f%s", v, suffix) + // } + + // Helper function to format numbers with a thousands separator only in the default case formatNumber := func(v float64, suffix string) string { - if v == float64(int(v)) { // Check if v has no decimal part + if suffix == "" { // Apply comma formatting only in default case + if v == float64(int(v)) { // No decimal part + return addCommas(strconv.Itoa(int(v))) + } + return addCommas(fmt.Sprintf("%.2f", v)) + } + if v == float64(int(v)) { // No decimal part return fmt.Sprintf("%d%s", int(v), suffix) } return fmt.Sprintf("%.2f%s", v, suffix)