searching & pagination

This commit is contained in:
Sas Andy
2024-05-22 08:40:54 +07:00
parent b1dc143e83
commit e6afeb74b8
4 changed files with 121 additions and 4 deletions

View File

@@ -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)
}

View File

@@ -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)
}

View File

@@ -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) {
<div class="container-fluid">
@customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "tableID",
Name: "tableID",
@@ -47,7 +49,9 @@ templ MdUserGroupScreen(
>Add New</button>
</div>
</div>
@filterComponent
@tablecontent
@paginationComponent
</div>
}

View File

@@ -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("</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err