From 8b8a7618a24503f4aba99c3710bfea2a262b0fed Mon Sep 17 00:00:00 2001 From: Aleksandr Trushkin Date: Thu, 11 Jan 2024 19:17:26 +0300 Subject: [PATCH] finish breadcumbs and categories --- cmd/kuriweb/http.go | 4 +- internal/kurious/ports/http/course.go | 35 ++- .../kurious/ports/http/templates/get.tmpl | 6 +- .../kurious/ports/http/templates/list.tmpl | 212 +++++++++++------- 4 files changed, 156 insertions(+), 101 deletions(-) diff --git a/cmd/kuriweb/http.go b/cmd/kuriweb/http.go index 67f9161..f3a017f 100644 --- a/cmd/kuriweb/http.go +++ b/cmd/kuriweb/http.go @@ -33,8 +33,8 @@ func setupHTTP(cfg config.HTTP, srv xhttp.Server, log *slog.Logger) *http.Server router.Use(mux.CORSMethodMiddleware(router)) router.Use(middlewareLogger(log)) - router.HandleFunc("/updatedesc", coursesAPI.UdpateDescription).Methods(http.MethodPost) - coursesRouter := router.PathPrefix("/courses").Subrouter() + // router.HandleFunc("/updatedesc", coursesAPI.UdpateDescription).Methods(http.MethodPost) + coursesRouter := router.PathPrefix("/courses").Subrouter().StrictSlash(true) coursesRouter.HandleFunc("/", coursesAPI.List).Methods(http.MethodGet) coursesListLearningOnlyPath := makePathTemplate(xhttp.LearningTypePathParam) coursesRouter.HandleFunc(coursesListLearningOnlyPath, coursesAPI.List).Methods(http.MethodGet) diff --git a/internal/kurious/ports/http/course.go b/internal/kurious/ports/http/course.go index c189d97..0481ff4 100644 --- a/internal/kurious/ports/http/course.go +++ b/internal/kurious/ports/http/course.go @@ -109,28 +109,39 @@ type listCoursesTemplateParams struct { func mapDomainCourseToTemplate(in ...domain.Course) listCoursesTemplateParams { coursesBySubcategory := make(map[string][]domain.Course, len(in)) subcategoriesByCategories := make(map[string]map[string]struct{}, len(in)) + categoryByID := make(map[string]baseInfo, len(in)) + xslices.ForEach(in, func(c domain.Course) { - coursesBySubcategory[c.Thematic] = append(coursesBySubcategory[c.Thematic], c) - if _, ok := subcategoriesByCategories[c.LearningType]; !ok { - subcategoriesByCategories[c.LearningType] = map[string]struct{}{} + coursesBySubcategory[c.ThematicID] = append(coursesBySubcategory[c.ThematicID], c) + if _, ok := subcategoriesByCategories[c.LearningTypeID]; !ok { + subcategoriesByCategories[c.LearningTypeID] = map[string]struct{}{} + } + subcategoriesByCategories[c.LearningTypeID][c.ThematicID] = struct{}{} + if _, ok := categoryByID[c.LearningTypeID]; !ok { + categoryByID[c.LearningTypeID] = baseInfo{ + ID: c.LearningTypeID, + Name: c.LearningType, + } + } + if _, ok := categoryByID[c.ThematicID]; !ok { + categoryByID[c.ThematicID] = baseInfo{ + ID: c.ThematicID, + Name: c.Thematic, + } } - subcategoriesByCategories[c.LearningType][c.Thematic] = struct{}{} }) var out listCoursesTemplateParams for category, subcategoryMap := range subcategoriesByCategories { - outCategory := categoryInfo{} - outCategory.ID = category - outCategory.Name = category - outCategory.Description = "" + outCategory := categoryInfo{ + baseInfo: categoryByID[category], + } for subcategory := range subcategoryMap { outSubCategory := subcategoryInfo{ - Courses: coursesBySubcategory[subcategory], + baseInfo: categoryByID[subcategory], + Courses: coursesBySubcategory[subcategory], } - outSubCategory.ID = subcategory - outSubCategory.Name = subcategory - outSubCategory.Description = "" outCategory.Subcategories = append(outCategory.Subcategories, outSubCategory) } diff --git a/internal/kurious/ports/http/templates/get.tmpl b/internal/kurious/ports/http/templates/get.tmpl index 9831c5b..537d7a8 100644 --- a/internal/kurious/ports/http/templates/get.tmpl +++ b/internal/kurious/ports/http/templates/get.tmpl @@ -13,7 +13,11 @@

{{ .Description }}

-

{{ .FullPrice }} rub.

+ {{ if .FullPrice }} +

{{ .FullPrice }} rub.

+ {{ else }} +

Бесплатно

+ {{ end }}
+ + + +
+ {{ range $category := .Categories }} +
+ + - -
- {{ range $category := .Categories }} -
{{ $category.Name }}
-

{{ $category.Description }}

+
+ Some description about the learning category {{ $category.Description }} +
- {{ range $subcategory := $category.Subcategories }} -
{{ $subcategory.Name }}
-

{{ $subcategory.Description }}

+ {{ range $subcategory := $category.Subcategories }} +
+ +
Some description about course thematics {{ $subcategory.Description }}
{{ range $course := $subcategory.Courses }} - {{ template "course_info" $course }} + {{ template "course_info" $course }} {{ end }}
- {{ end }} +
{{ end }} +
-
-
- - + {{ end }}
+
+ - - {{ template "footer" . }} + + + + + {{ template "footer" . }} + + + + - {{end}}