From f7f87ef47dbfd28005b4e34ad22b6948452e1dd7 Mon Sep 17 00:00:00 2001 From: Gowtham M Date: Mon, 27 Jan 2025 16:00:40 +0530 Subject: [PATCH] Language changes in all 3 api : GWM --- main.go | 100 ++++++++++++++++++++++++++++++++++-------------- pb_data/data.db | Bin 192512 -> 196608 bytes pb_data/logs.db | Bin 770048 -> 770048 bytes 3 files changed, 72 insertions(+), 28 deletions(-) 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 1a1ffe42d1062c370813e6e9e622befccc54f3d0..50a81a77ea9d147b8ddaf1b48e31d204228402d3 100644 GIT binary patch delta 3571 zcmbVPS!^5E6`i@HBo4O`Eh#KbQ6i-(kw9rQGvshMw8wJltw5|SsFB1n5{05NlP7z=T6ixdRqwPoId<19| z7wp|Ph4RtG<0C^Xi+zn{*aS+j@tabU?@ZDqevkQciv5_~=ls~Y&pu#RtW(xD%Wo{N znmY@v(`{zMgn@|4?sd&kz}% zr8lk}h>sZqE?hAY?^->7b$5I$jWBQSvYX%*1-C3C4ij}8g^Z_9Qsuc~yEYE@OMP9#iShXGV4|+MZYX}Rr!H2wD_Qs^e7p8=DAYAP z82|dZQ##}1{cpg;Sqr$+V`U)G`crLpd|;3t9O%z4DN=9X21dKb`@@L?1-M0%vdBlt zyaj4l+0RE}k`N2aTqG3g(ABj=xx+q9nVE7EQ*I5}o^^hAMkr_8DL-9VrTT)5?DeY2 zQ7_}D^|*WuWX=nnPQ;OP96{lPutNyZ_MeSfXcKyO=qlrSWqy zlS>3Bz0@b3CRBvLH|^Ppi)RsCc{KxV)4 zK!p6m1NE%9!jI>ovXbSO*a**umhqOq3mH-rl&@9nC{)bHqzD&^u2$?{QJmUsHn=f9 zo!cWj7;l!_^=jnyw`zEJnHwJq3mh+pvfTFhV5=w9WqwH4wQ4OYD_)H!D8>Yt3klN7 z>T!Ad)17Ko)5h}@c3;-6W(Q7cb2xn3_@SNGu4Yae zb58pk4UicGS;F}X*$G#4L|lBSiFuc5S6k`Upob1Hs;AZ*X!1G8FE)cxncQ9KDjdR* zHhm=F)cvBwBt9mDI8i1oDtNac;#KXkzOA-|1Q#>Mabu*2tfn$2Gt=3PbKRNK$)*yQ z8ejsseLV>7Ba8xd^;2!Z!BHF3ARWxdAi3M>D(-3Bqz8api@|fpa!wLrqR5HS zNC!%9XvAT$iGOM5PKEypzg_yTF+gX}XHH~~YF0}dhQE~TF}YMXQ=j#MNB6?E!oW+h za3n_BWw4VD^nl@zoUze!q8=!6L59X>5w18P|7UYx&~i4SDEez^fY#lP*67OqopWIR;SH7TY=_T^BoH4{Z#2qdcS?ZdC*OAZWpvtsdMUodT(2qIm3RLIHOY+)}VI#SJ z5vm<^d4m2N)$rJM+TTkxz za+$lno<98)`Qj@4{egJiSf9$;UDLN`p&im!-iANWz4CXSbPOEspQ^!;2}S}0bhM8o9aTusAQs2!Ckk?zbDtd(8OdjAa;<& z%hkZ%q+@qJxdJOncxUks3Y(Nni0WbSrHQCY!!9!N9_-1zE0HW8qpuFckSnG-fIDVvJWf=|4o`!Y_e$I;`!KiSDKB19Y$DW%Tb}+Ipsf(ettX z`@`h@L(q}U$H;;4c;C=KD4$)04$J?)aQ-k%(AoUzd8vEw#gNdqHos<$z;(#x7hXeB ch*K0X{pkeUrtxwBU;5{Vzys-lqj1*rFX?F?hX4Qo delta 2086 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 B1vdZy delta 31143 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