md nonlab template listing data + filter + pagination

This commit is contained in:
2024-05-27 11:34:33 +07:00
parent 54a0d67ebb
commit 72f3ddbaf1
6 changed files with 425 additions and 17 deletions

View File

@@ -0,0 +1,252 @@
package dev_handlers
import (
breadcrumadmin "cpone/component/breadcrumbadmin"
"cpone/component/customtextfieldsearch"
navbarmenu "cpone/component/navbar"
"cpone/component/pagination"
sidebaruserprofile "cpone/component/sidebar_user_profile"
"cpone/models"
"cpone/services"
"cpone/utils"
dev_mdnonlabtemplateview "cpone/views/dev/mdnonlabtemplate"
"fmt"
"strconv"
"github.com/a-h/templ"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
type MDNonLabTemplateServices interface {
GetMDNonLabTemplateBreadcrumb() (models.BreadCrumbV1, error)
GetMDNonLabTemplateData(search string, currentPage int, rowPerPage int) ([]models.MDNonLabTemplate, int, error)
}
type MDNonLabTemplateHandler struct {
MDNonLabTemplateServices MDNonLabTemplateServices
}
func NewMDNonLabTemplateHandler(nlt MDNonLabTemplateServices) *MDNonLabTemplateHandler {
return &MDNonLabTemplateHandler{
MDNonLabTemplateServices: nlt,
}
}
func (mdnlt *MDNonLabTemplateHandler) HandleShowMDNonLabTemplateScreen(c echo.Context) error {
logger, _ := zap.NewProduction()
tableID := utils.GenerateRandomID("tableid")
paginationID := utils.GenerateRandomID("paginationid")
searchID := utils.GenerateRandomID("searchid")
dialogAddID := utils.GenerateRandomID("dialogaddid")
dialogAddBodyID := utils.GenerateRandomID("dialogaddbodyid")
dialogEditID := utils.GenerateRandomID("dialogeditid")
dialogEditBodyID := utils.GenerateRandomID("dialogeditbodyid")
dialogDeleteID := utils.GenerateRandomID("dialogdeleteid")
dialogDeleteBodyID := utils.GenerateRandomID("dialogdeletebodyid")
dataMenu, err := services.GetMenu()
if err != nil {
fmt.Println(dataMenu)
return err
}
dataUser, err := services.GetUserLogin()
if err != nil {
fmt.Println(dataUser)
return err
}
defer logger.Sync()
logger.Info("LOAD USER DEV", zap.Any("data", dataUser))
title := "Master Non-lab Template"
dataBreadCrumb, err := mdnlt.MDNonLabTemplateServices.GetMDNonLabTemplateBreadcrumb()
if err != nil {
defer logger.Sync()
logger.Info("ERROR BREADCRUMB DEV", zap.Any("error", err))
return err
}
defer logger.Sync()
logger.Info("LOAD BREADCRUMB DEV", zap.Any("data", dataBreadCrumb))
breadcrumbComp := breadcrumadmin.MainBreadcrumbAdminV1(dataBreadCrumb)
navbarmenuComp := navbarmenu.NavbarMenu(dataMenu)
navbaruserComp := navbarmenu.Navbar(dataUser)
sidebarusrComp := sidebaruserprofile.Navbaruserprofile(dataUser)
dataList, totalPage, err := mdnlt.MDNonLabTemplateServices.GetMDNonLabTemplateData("", 1, 5)
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET DATA DEV", zap.Any("error", err))
return err
}
tableComp := dev_mdnonlabtemplateview.TableNonLabTemplate(dataList,
tableID,
"/dev/md/nonlabtemplate/openedit",
"#"+dialogEditBodyID,
"outerHTML",
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
"/dev/md/nonlabtemplate/opendelete",
"#"+dialogDeleteBodyID,
"outerHTML",
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
)
tableFilter := customtextfieldsearch.MainCustomTextFieldSearchV3(searchID,
"search",
"Cari Nama Template",
"text",
"/dev/md/nonlabtemplate/filter",
"input changed delay:500ms, search",
"#"+paginationID,
"#loadingcontent", "",
"outerHTML",
"#tableID, #paginationID, #searchID, #dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
dev_mdnonlabtemplateview.BeforeRequestContent(),
dev_mdnonlabtemplateview.AfterRequestContent(),
)
tablePagination := pagination.PaginationV3(totalPage,
1,
"/dev/md/nonlabtemplate/changepage",
paginationID,
"#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
"#"+paginationID,
"outerHTML", "", "",
dev_mdnonlabtemplateview.BeforeRequestContent(),
dev_mdnonlabtemplateview.AfterRequestContent(),
)
content := dev_mdnonlabtemplateview.MDNonLabTemplateScreen(
tableID,
paginationID,
searchID,
dialogAddID,
dialogAddBodyID,
dialogEditID,
dialogEditBodyID,
dialogDeleteID,
dialogDeleteBodyID,
breadcrumbComp,
tableFilter,
tableComp,
tablePagination,
)
css := dev_mdnonlabtemplateview.CSSMDNonLabTemplate()
js := dev_mdnonlabtemplateview.JSSMDNonLabTemplate()
view := dev_mdnonlabtemplateview.ShowMDNonLabTemplate(
title,
content,
css,
js,
navbarmenuComp,
navbaruserComp,
sidebarusrComp,
)
return utils.View(c, view)
}
func (mdnlt *MDNonLabTemplateHandler) HandleFilterMDNonLabTemplate(c echo.Context) error {
search := c.QueryParam("search")
searchID := c.QueryParam("searchID")
tableID := c.QueryParam("tableID")
paginationID := c.QueryParam("paginationID")
dialogEditBodyID := c.QueryParam("dialogEditBodyID")
dialogDeleteBodyID := c.QueryParam("dialogDeleteBodyID")
var retval []templ.Component
logger, _ := zap.NewProduction()
dataList, totalPage, err := mdnlt.MDNonLabTemplateServices.GetMDNonLabTemplateData(search, 1, 5)
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET DATA", zap.Any("error", err))
return err
}
tableComp := dev_mdnonlabtemplateview.TableNonLabTemplate(dataList,
tableID,
"/dev/md/nonlabtemplate/openedit",
"#"+dialogEditBodyID,
"outerHTML",
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
"/dev/md/nonlabtemplate/opendelete",
"#"+dialogDeleteBodyID,
"outerHTML",
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
)
tablePagination := pagination.PaginationV3(
totalPage,
1,
"/dev/md/nonlabtemplate/changepage",
paginationID,
"#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
"#"+paginationID,
"outerHTML", "", "",
dev_mdnonlabtemplateview.BeforeRequestContent(),
dev_mdnonlabtemplateview.AfterRequestContent(),
)
retval = append(retval, tableComp)
retval = append(retval, tablePagination)
return utils.ViewMulti(c, retval)
}
func (mdnlt *MDNonLabTemplateHandler) HandleChangePageMDNonLabTemplate(c echo.Context) error {
search := c.QueryParam("search")
pageparam := c.QueryParam("page")
tableID := c.QueryParam("tableID")
searchID := c.QueryParam("searchID")
paginationID := c.QueryParam("paginationID")
dialogEditBodyID := c.QueryParam("dialogEditBodyID")
dialogDeleteBodyID := c.QueryParam("dialogDeleteBodyID")
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
}
dataList, totalPage, err := mdnlt.MDNonLabTemplateServices.GetMDNonLabTemplateData(search, page, 5)
if err != nil {
defer logger.Sync()
logger.Info("ERROR CONVERT PAGE PARAM", zap.Any("error", err))
return err
}
tableComp := dev_mdnonlabtemplateview.TableNonLabTemplate(dataList,
tableID,
"/dev/md/nonlabtemplate/openedit",
"#"+dialogEditBodyID,
"outerHTML",
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
"/dev/md/nonlabtemplate/opendelete",
"#"+dialogDeleteBodyID,
"outerHTML",
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
)
tablePagination := pagination.PaginationV3(
totalPage,
page,
"/dev/md/nonlabtemplate/changepage",
paginationID,
"#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
"#"+paginationID,
"outerHTML", "", "",
dev_mdnonlabtemplateview.BeforeRequestContent(),
dev_mdnonlabtemplateview.AfterRequestContent(),
)
retval = append(retval, tableComp)
retval = append(retval, tablePagination)
return utils.ViewMulti(c, retval)
}