From 035b4aa430139747fd24b5de970a139534efaadc Mon Sep 17 00:00:00 2001 From: Hanan Askarim Date: Mon, 20 May 2024 17:27:54 +0700 Subject: [PATCH] add search dan pagination --- handlers/dev/masterkelainan.handlers.go | 76 +++++++++++++++++++ handlers/routes.go | 2 + services/dev/masterkelainan.services.go | 2 +- views/dev/masterkelainan/masterkelainan.templ | 7 +- .../masterkelainan/masterkelainan_templ.go | 30 +++++++- 5 files changed, 114 insertions(+), 3 deletions(-) diff --git a/handlers/dev/masterkelainan.handlers.go b/handlers/dev/masterkelainan.handlers.go index 4811c89..01557e1 100644 --- a/handlers/dev/masterkelainan.handlers.go +++ b/handlers/dev/masterkelainan.handlers.go @@ -11,6 +11,7 @@ import ( "cpone/utils" "cpone/views/dev/masterkelainan" "fmt" + "strconv" "github.com/a-h/templ" "github.com/labstack/echo/v4" @@ -145,3 +146,78 @@ func (lh *MasterKelainanHandler) HandlerShowMasterKelainan(c echo.Context) error return utils.View(c, si) } + +func (lh *MasterKelainanHandler) HandlerShowMasterKelainanSearch(c echo.Context) error { + search := c.QueryParam("search") + tableID := c.QueryParam("tableID") + paginationID := c.QueryParam("paginationID") + logger, _ := zap.NewProduction() + + dataKelainan, totalpage, err := lh.MasterKelainanService.GetListMasterKelainan(search, 1, 5) + if err != nil { + defer logger.Sync() + logger.Info("ERROR GET KELAINAN", + zap.Any("error", err), + ) + fmt.Println(dataKelainan) + return err + } + + contentKelainanComponent := masterkelainan.TableKelainan( + dataKelainan, tableID) + + kelainanPaginationComponent := pagination.PaginationV2(totalpage, + 1, + "/dev/kelainanpagination", + paginationID, + "#tableID, #searchID, #paginationID", "#"+paginationID, "outerHTML", "") + + swapTable := masterkelainan.SwapTableKelainan(kelainanPaginationComponent, contentKelainanComponent) + + si := swapTable + + return utils.View(c, si) +} + +func (lh *MasterKelainanHandler) HandlerShowMasterKelainanPagination(c echo.Context) error { + logger, _ := zap.NewProduction() + + search := c.QueryParam("search") + pageparam := c.QueryParam("page") + tableID := c.QueryParam("tableID") + paginationID := c.QueryParam("paginationID") + 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 + } + + dataKelainan, totalpage, err := lh.MasterKelainanService.GetListMasterKelainan(search, page, 5) + if err != nil { + defer logger.Sync() + logger.Info("ERROR GET KELAINAN", + zap.Any("error", err), + ) + fmt.Println(dataKelainan) + return err + } + + contentKelainanComponent := masterkelainan.TableKelainan( + dataKelainan, tableID) + + kelainanPaginationComponent := pagination.PaginationV2(totalpage, + page, + "/dev/kelainanpagination", + paginationID, + "#tableID, #searchID, #paginationID", "#"+paginationID, "outerHTML", "") + + swapTable := masterkelainan.SwapTableKelainan(kelainanPaginationComponent, contentKelainanComponent) + + si := swapTable + + return utils.View(c, si) +} diff --git a/handlers/routes.go b/handlers/routes.go index 65f2541..61e0466 100644 --- a/handlers/routes.go +++ b/handlers/routes.go @@ -213,4 +213,6 @@ func SetupRoutesDev(app *echo.Echo, appStore db.AppStore) { devKLServices := dev_services.NewServicesMasterKelainan(appStore) devKLhandlers := dev_handlers.NewMasterKelainanHandler(devKLServices) dev.GET("/kelainan", devKLhandlers.HandlerShowMasterKelainan) + dev.GET("/searchkelainan", devKLhandlers.HandlerShowMasterKelainanSearch) + dev.GET("/kelainanpagination", devKLhandlers.HandlerShowMasterKelainanPagination) } diff --git a/services/dev/masterkelainan.services.go b/services/dev/masterkelainan.services.go index ae50d5d..3811a5e 100644 --- a/services/dev/masterkelainan.services.go +++ b/services/dev/masterkelainan.services.go @@ -94,7 +94,7 @@ func (su *ServicesMasterKelainan) GetListMasterKelainan(search string, currentPa query := ` SELECT - ROW_NUMBER() OVER () AS nomor, + ROW_NUMBER() OVER (ORDER BY Mcu_KelainanGroupID ASC) AS nomor, Mcu_KelainanGroupID, Mcu_KelainanGroupName, Mcu_KelainanGroupIsActive, diff --git a/views/dev/masterkelainan/masterkelainan.templ b/views/dev/masterkelainan/masterkelainan.templ index 484bc7a..0fe1ac4 100644 --- a/views/dev/masterkelainan/masterkelainan.templ +++ b/views/dev/masterkelainan/masterkelainan.templ @@ -177,7 +177,12 @@ templ ShowKelainan( templ TableKelainan(data []models.Kelainan, tableID string) {
@tablecomponent.TableV3([]string{"NO", "GRUP KELAINAN", "AKSI"}, - []string{"15%", "65%", "20%"}, + []string{"10%", "70%", "20%"}, TableRowV1(data))
} + +templ SwapTableKelainan(pagination templ.Component, table templ.Component) { + @pagination + @table +} diff --git a/views/dev/masterkelainan/masterkelainan_templ.go b/views/dev/masterkelainan/masterkelainan_templ.go index 02b29b7..a7e0974 100644 --- a/views/dev/masterkelainan/masterkelainan_templ.go +++ b/views/dev/masterkelainan/masterkelainan_templ.go @@ -329,7 +329,7 @@ func TableKelainan(data []models.Kelainan, tableID string) templ.Component { return templ_7745c5c3_Err } templ_7745c5c3_Err = tablecomponent.TableV3([]string{"NO", "GRUP KELAINAN", "AKSI"}, - []string{"15%", "65%", "20%"}, + []string{"10%", "70%", "20%"}, TableRowV1(data)).Render(ctx, templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err @@ -344,3 +344,31 @@ func TableKelainan(data []models.Kelainan, tableID string) templ.Component { return templ_7745c5c3_Err }) } + +func SwapTableKelainan(pagination templ.Component, table 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 { + templ_7745c5c3_Buffer = templ.GetBuffer() + defer templ.ReleaseBuffer(templ_7745c5c3_Buffer) + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var14 := templ.GetChildren(ctx) + if templ_7745c5c3_Var14 == nil { + templ_7745c5c3_Var14 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Err = pagination.Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = table.Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if !templ_7745c5c3_IsBuffer { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W) + } + return templ_7745c5c3_Err + }) +}