From e6afeb74b8191d50621a687a115af5fce4e50dc6 Mon Sep 17 00:00:00 2001 From: Sas Andy Date: Wed, 22 May 2024 08:40:54 +0700 Subject: [PATCH] searching & pagination --- handlers/dev/md.usergroup.handlers.go | 105 ++++++++++++++++++++- handlers/routes.go | 2 + views/dev/mdusergroup/mdusergroup.templ | 6 +- views/dev/mdusergroup/mdusergroup_templ.go | 12 ++- 4 files changed, 121 insertions(+), 4 deletions(-) diff --git a/handlers/dev/md.usergroup.handlers.go b/handlers/dev/md.usergroup.handlers.go index 91ee7e9..f9cc1ae 100644 --- a/handlers/dev/md.usergroup.handlers.go +++ b/handlers/dev/md.usergroup.handlers.go @@ -2,15 +2,19 @@ package dev_handlers import ( breadcrumadmin "cpone/component/breadcrumbadmin" + customtextfieldsearch "cpone/component/customtextfieldsearch" navbarmenu "cpone/component/navbar" + "cpone/component/pagination" sidebaruserprofile "cpone/component/sidebar_user_profile" "cpone/models" "cpone/services" "cpone/utils" dev_mdusergroupview "cpone/views/dev/mdusergroup" + "strconv" "fmt" + "github.com/a-h/templ" "github.com/labstack/echo/v4" "go.uber.org/zap" ) @@ -91,7 +95,7 @@ func (lh *MdUserGroupHandler) HandleShowMdUserGroupScreen(c echo.Context) error sidebaruserprofileComponent := sidebaruserprofile.Navbaruserprofile(dataUser) //Table component - dataUserGroup, _, err := lh.MdUserGroupServices.GetListMdUserGroup("", 1, 10) + dataUserGroup, totalPage, err := lh.MdUserGroupServices.GetListMdUserGroup("", 1, 5) if err != nil { defer logger.Sync() logger.Info("ERROR GET USER GROUP", @@ -102,11 +106,108 @@ func (lh *MdUserGroupHandler) HandleShowMdUserGroupScreen(c echo.Context) error } tableComponent := dev_mdusergroupview.TableUserGroup(dataUserGroup, tableID) + //filter user group component + usergroupFilterComponent := customtextfieldsearch.MainCustomTextFieldSearchV2(searchID, + "search", + "Cari Kode/Nama", + "text", + "/dev/usergroupv2/filter", + "input changed delay:500ms, search", + "#"+paginationID, "", "", "outerHTML", "#tableID, #paginationID, #searchID") + //Pagination + userGroupPaginationComponent := pagination.PaginationV2( + totalPage, + 1, + "/dev/usergroupv2/changepage", + paginationID, + "#tableID, #searchID, #"+searchID+", #paginationID", + "#"+paginationID, + "outerHTML", "", "", + ) + //content js & css - content := dev_mdusergroupview.MdUserGroupScreen(tableID, paginationID, searchID, breadcrumbComponent, tableComponent) + content := dev_mdusergroupview.MdUserGroupScreen( + tableID, + paginationID, + searchID, + breadcrumbComponent, + tableComponent, + usergroupFilterComponent, + userGroupPaginationComponent) css := dev_mdusergroupview.CssMdUserGroup() js := dev_mdusergroupview.JsMdUserGroup() view := dev_mdusergroupview.ShowMdUserGroupScreen(title, content, css, js, navbarmenuComponent, navbaruserComponent, sidebaruserprofileComponent) return utils.View(c, view) } +func (lh *MdUserGroupHandler) HandleFilterMdUserGroup(c echo.Context) error { + search := c.QueryParam("search") + searchID := c.QueryParam("searchID") + tableID := c.QueryParam("tableID") + paginationID := c.QueryParam("paginationID") + var retval []templ.Component + logger, _ := zap.NewProduction() + + dataUserGroup, totalpage, err := lh.MdUserGroupServices.GetListMdUserGroup(search, 1, 5) + if err != nil { + defer logger.Sync() + logger.Info("ERROR GET USER GROUP", + zap.Any("error", err), + ) + fmt.Println(dataUserGroup) + return err + } + tableComponent := dev_mdusergroupview.TableUserGroup(dataUserGroup, tableID) + userGroupPaginationComponent := pagination.PaginationV2( + totalpage, + 1, + "/dev/usergroupv2/changepage", + paginationID, + "#tableID, #searchID, #"+searchID+", #paginationID", + "#"+paginationID, + "outerHTML", "", "", + ) + retval = append(retval, tableComponent) + retval = append(retval, userGroupPaginationComponent) + return utils.ViewMulti(c, retval) +} +func (lh *MdUserGroupHandler) HandleChangePageMdUserGroup(c echo.Context) error { + search := c.QueryParam("search") + pageparam := c.QueryParam("page") + tableID := c.QueryParam("tableID") + searchID := c.QueryParam("searchID") + paginationID := c.QueryParam("paginationID") + var retval []templ.Component + logger, _ := zap.NewProduction() + page, err := strconv.Atoi(pageparam) + if err != nil { + defer logger.Sync() + logger.Info("ERROR CONVERT PAGE PARAM", + zap.Any("page", page), + zap.Any("error ", err), + ) + return err + } + dataUserGroup, totalpage, err := lh.MdUserGroupServices.GetListMdUserGroup(search, page, 5) + if err != nil { + defer logger.Sync() + logger.Info("ERROR GET USER GROUP", + zap.Any("error", err), + ) + fmt.Println(dataUserGroup) + return err + } + tableComponent := dev_mdusergroupview.TableUserGroup(dataUserGroup, tableID) + userGroupPaginationComponent := pagination.PaginationV2( + totalpage, + page, + "/dev/usergroupv2/changepage", + paginationID, + "#tableID, #searchID, #"+searchID+", #paginationID", + "#"+paginationID, + "outerHTML", "", "", + ) + retval = append(retval, tableComponent) + retval = append(retval, userGroupPaginationComponent) + return utils.ViewMulti(c, retval) +} diff --git a/handlers/routes.go b/handlers/routes.go index 2b0e31f..4ab01fb 100644 --- a/handlers/routes.go +++ b/handlers/routes.go @@ -216,5 +216,7 @@ func SetupRoutesDev(app *echo.Echo, appStore db.AppStore) { devMdUserGroupServices := dev_services.NewMdUserGroupServices(appStore) devMdUserGroupHandlers := dev_handlers.NewMdUserGroupHandler(devMdUserGroupServices) dev.GET("/usergroupv2", devMdUserGroupHandlers.HandleShowMdUserGroupScreen) + dev.GET("/usergroupv2/filter", devMdUserGroupHandlers.HandleFilterMdUserGroup) + dev.GET("/usergroupv2/changepage", devMdUserGroupHandlers.HandleChangePageMdUserGroup) } diff --git a/views/dev/mdusergroup/mdusergroup.templ b/views/dev/mdusergroup/mdusergroup.templ index 06d6b0c..bb52f41 100644 --- a/views/dev/mdusergroup/mdusergroup.templ +++ b/views/dev/mdusergroup/mdusergroup.templ @@ -11,7 +11,9 @@ templ MdUserGroupScreen( paginationID string, searchID string, breadcrumb templ.Component, - tablecontent templ.Component) { + tablecontent templ.Component, + filterComponent templ.Component, + paginationComponent templ.Component) {
@customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "tableID", Name: "tableID", @@ -47,7 +49,9 @@ templ MdUserGroupScreen( >Add New
+ @filterComponent @tablecontent + @paginationComponent } diff --git a/views/dev/mdusergroup/mdusergroup_templ.go b/views/dev/mdusergroup/mdusergroup_templ.go index efc3111..664f02c 100644 --- a/views/dev/mdusergroup/mdusergroup_templ.go +++ b/views/dev/mdusergroup/mdusergroup_templ.go @@ -21,7 +21,9 @@ func MdUserGroupScreen( paginationID string, searchID string, breadcrumb templ.Component, - tablecontent templ.Component) templ.Component { + tablecontent templ.Component, + filterComponent templ.Component, + paginationComponent templ.Component) templ.Component { return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) { templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer) if !templ_7745c5c3_IsBuffer { @@ -71,10 +73,18 @@ func MdUserGroupScreen( if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } + templ_7745c5c3_Err = filterComponent.Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } templ_7745c5c3_Err = tablecontent.Render(ctx, templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } + templ_7745c5c3_Err = paginationComponent.Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err