diff --git a/main.go b/main.go index 8a77835..5ec9f3d 100644 --- a/main.go +++ b/main.go @@ -405,6 +405,8 @@ func main() { e.Router.GET("/api/getDataSet", func(c echo.Context) error { dataset := c.QueryParam("dataset") + language := c.QueryParam("language") + langKey := "value_" + language if dataset == "" { return c.JSON(http.StatusBadRequest, map[string]string{"error": "dataset is required"}) } @@ -474,9 +476,10 @@ func main() { chartData = filterDynamicChartData(chartData, keyToFilter, valueToExclude) } - langKey := "value_en" cRes := utils.ProcessChartData(chartData, languageSourceConverted, langKey) + chartHeadingKey := "chart_heading_" + language + tabHeadingKey := "tab_heading_" + language // Prepare the structure with URL and its response recordResult := map[string]interface{}{ "url": apiURL, @@ -488,7 +491,8 @@ func main() { "chart_type": record.GetString("chart_type"), "response": cRes, "group_by": record.GetString("group_by"), - "chart_heading": record.GetString("chart_heading"), + "chart_heading": record.GetString(chartHeadingKey), + "tab_heading": record.GetString(tabHeadingKey), "unset_value": record.Get("unset_value"), } @@ -496,6 +500,7 @@ func main() { aggregatedResponse = append(aggregatedResponse, recordResult) } + //-------------------- // get all filter based on kpi var dataSetKpis []struct { @@ -513,7 +518,7 @@ func main() { filterData, err := fetchfilterJSON(kpi) // Translate filter data using the desired dataset and language key - fRes, err := TranslateFilters(app, dataset, filterData, "value_en") + fRes, err := TranslateFilters(app, dataset, filterData, langKey) if err != nil { log.Fatalf("Error translating filters: %v", err) } @@ -521,12 +526,10 @@ func main() { aggregatedFilterResponse[kpi] = fRes } - - temp, err := fetchfilterJSON(dataset) + //-------------------- // Create the response structure response := map[string]interface{}{ - "filter_data": temp, "new_filter_data": aggregatedFilterResponse, "data": aggregatedResponse, } @@ -540,18 +543,21 @@ func main() { e.Router.GET("/api/getHomePageData", func(c echo.Context) error { + language := c.QueryParam("language") + // Define the struct for holding the query results mainTopics := []struct { - MainTopic string `db:"main_topic" json:"main_topic"` + MainTopicEn string `db:"main_topic_en" json:"main_topic_en"` + MainTopicAr string `db:"main_topic_ar" json:"main_topic_ar"` MainTopicListOrder string `db:"main_topic_list_order" json:"main_topic_list_order"` ColorPattern string `db:"color_pattern" json:"color_pattern"` }{} // Execute the query err := app.DB(). - Select("main_topic", "main_topic_list_order", "color_pattern"). + Select("main_topic_en", "main_topic_ar", "main_topic_list_order", "color_pattern"). From("home_screen"). - GroupBy("main_topic", "color_pattern"). + GroupBy("main_topic_en", "main_topic_ar", "color_pattern"). OrderBy("main_topic_list_order ASC"). All(&mainTopics) @@ -579,10 +585,12 @@ func main() { DataSetListOrder string `db:"data_set_list_order" json:"data_set_list_order"` }{} + languageSpecificColumn := "data_set_tile_heading_" + language + query := ` SELECT data_set,` + languageSpecificColumn + ` AS data_set_tile_heading,value_source,value, data_set_list_order FROM home_screen WHERE main_topic_en = {:topic}` err := app.DB(). - NewQuery("SELECT data_set, data_set_tile_heading, value_source, value, data_set_list_order FROM home_screen WHERE main_topic={:topic} "). + NewQuery(query). Bind(dbx.Params{ - "topic": mainTopic.MainTopic, + "topic": mainTopic.MainTopicEn, }). All(&dataSets) @@ -591,9 +599,16 @@ func main() { continue } + var MainTopic string + if language == "en" { + MainTopic = mainTopic.MainTopicEn + } else { + MainTopic = mainTopic.MainTopicAr + } + // Add the main topic and its sub-topics to the result result = append(result, map[string]interface{}{ - "main_topic": mainTopic.MainTopic, + "main_topic": MainTopic, "main_topic_list_order": mainTopic.MainTopicListOrder, "color_pattern": mainTopic.ColorPattern, "tile_data": dataSets, @@ -607,18 +622,21 @@ func main() { e.Router.GET("/api/getUAENumbersData", func(c echo.Context) error { + language := c.QueryParam("language") + // Define the struct for holding the query results mainTopics := []struct { - MainTopic string `db:"main_topic" json:"main_topic"` + MainTopicEn string `db:"main_topic_en" json:"main_topic_en"` + MainTopicAr string `db:"main_topic_ar" json:"main_topic_ar"` MainTopicListOrder string `db:"main_topic_list_order" json:"main_topic_list_order"` ColorPattern string `db:"color_pattern" json:"color_pattern"` }{} // Execute the query err := app.DB(). - Select("main_topic", "main_topic_list_order", "color_pattern"). + Select("main_topic_en", "main_topic_ar", "main_topic_list_order", "color_pattern"). From("uae_numbers_screen"). - GroupBy("main_topic", "color_pattern"). + GroupBy("main_topic_en", "main_topic_ar", "color_pattern"). OrderBy("main_topic_list_order ASC"). All(&mainTopics) @@ -637,22 +655,24 @@ func main() { // Loop through main topics and fetch sub-topic data for each for _, mainTopic := range mainTopics { + subTopics := []struct { - SubTopic string `db:"sub_topic" json:"sub_topic"` + SubTopicEn string `db:"sub_topic_en" json:"sub_topic_en"` + SubTopicAr string `db:"sub_topic_ar" json:"sub_topic_ar"` SubTopicListOrder string `db:"sub_topic_list_order" json:"sub_topic_list_order"` }{} // Query to get sub-topics for the current main topic err := app.DB(). - Select("sub_topic", "sub_topic_list_order"). + Select("sub_topic_en", "sub_topic_ar", "sub_topic_list_order"). From("uae_numbers_screen"). - Where(dbx.HashExp{"main_topic": mainTopic.MainTopic}). - GroupBy("sub_topic"). + Where(dbx.HashExp{"main_topic_en": mainTopic.MainTopicEn}). + GroupBy("sub_topic_en", "sub_topic_ar"). OrderBy("sub_topic_list_order ASC"). All(&subTopics) if err != nil { - log.Printf("Failed to fetch sub-topics for main topic %s: %v", mainTopic.MainTopic, err) + log.Printf("Failed to fetch sub-topics for main topic %s: %v", mainTopic.MainTopicEn, err) continue } @@ -668,29 +688,53 @@ func main() { DataSetListOrder string `db:"data_set_list_order" json:"data_set_list_order"` }{} - // Query to get data-set for the current sub topic + languageSpecificColumn := "data_set_tile_heading_" + language + query := ` SELECT data_set,` + languageSpecificColumn + ` AS data_set_tile_heading,value_source,value, data_set_list_order FROM uae_numbers_screen WHERE sub_topic_en = {:topic}` err := app.DB(). - Select("data_set", "data_set_tile_heading", "value_source", "value", "data_set_list_order"). - From("uae_numbers_screen"). - Where(dbx.HashExp{"sub_topic": subTopic.SubTopic}). - OrderBy("data_set_list_order ASC"). + NewQuery(query). + Bind(dbx.Params{ + "topic": subTopic.SubTopicEn, + }). All(&dataSets) + // languageSpecificColumn := "data_set_tile_heading_" + language + // // Query to get data-set for the current sub topic + // err := app.DB(). + // Select("data_set", languageSpecificColumn, "value_source", "value", "data_set_list_order"). + // From("uae_numbers_screen"). + // Where(dbx.HashExp{"sub_topic_en": subTopic.SubTopicEn}). + // OrderBy("data_set_list_order ASC"). + // All(&dataSets) + if err != nil { - log.Printf("Failed to fetch data-set for sub topic %s: %v", subTopic.SubTopic, err) + log.Printf("Failed to fetch data-set for sub topic %s: %v", subTopic.SubTopicEn, err) continue } + var SubTopic string + if language == "en" { + SubTopic = subTopic.SubTopicEn + } else { + SubTopic = subTopic.SubTopicAr + } + result2 = append(result2, map[string]interface{}{ - "sub_topic": subTopic.SubTopic, + "sub_topic": SubTopic, "sub_topic_list_order": subTopic.SubTopicListOrder, "tile_data": dataSets, }) } + var MainTopic string + if language == "en" { + MainTopic = mainTopic.MainTopicEn + } else { + MainTopic = mainTopic.MainTopicAr + } + // Add the main topic and its sub-topics to the result result = append(result, map[string]interface{}{ - "main_topic": mainTopic.MainTopic, + "main_topic": MainTopic, "main_topic_list_order": mainTopic.MainTopicListOrder, "color_pattern": mainTopic.ColorPattern, "sub_topics": result2, diff --git a/pb_data/data.db b/pb_data/data.db index 1a1ffe4..50a81a7 100644 Binary files a/pb_data/data.db and b/pb_data/data.db differ diff --git a/pb_data/logs.db b/pb_data/logs.db index bbcdc00..c77208c 100644 Binary files a/pb_data/logs.db and b/pb_data/logs.db differ