step 1 : initial, loading search and pagination

This commit is contained in:
sindhu
2024-05-27 12:14:07 +07:00
parent 4ea514c3f0
commit 98f698821c
64 changed files with 9010 additions and 0 deletions

View File

@@ -0,0 +1,479 @@
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_mdgroupresultview "cpone/views/dev/mdgroupresult"
"fmt"
"strconv"
"github.com/a-h/templ"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
type MdGroupResultServices interface {
GetListMdGroupResult(search string, currentPage int, rowPerPage int) ([]models.GroupResult, int, error)
GetMdGroupResultByID(id string) (models.GroupResult, error)
AddMdGroupResult(groupresultname string, groupresultflagpertest string, groupresultflagnonlab string, groupresultresumemcu string) (models.GroupResult, error)
EditMdGroupResult(id string, groupresultname string, groupresultflagpertest string, groupresultflagnonlab string, groupresultresumemcu string) (models.GroupResult, error)
DeleteMdGroupResult(id string) (models.GroupResult, error)
GetMdGroupResultBreadcrumb(title string) (models.BreadCrumbV1, error)
GetMdGroupResultResumeMcu() ([]models.GroupResultResumeMcu, error)
}
func NewMdGroupResultHandler(us MdGroupResultServices) *MdGroupResultHandler {
return &MdGroupResultHandler{
MdGroupResultServices: us,
}
}
type MdGroupResultHandler struct {
MdGroupResultServices MdGroupResultServices
}
// INITIAL
func (lh *MdGroupResultHandler) HandleShowMdGroupResultScreen(c echo.Context) error {
logger, _ := zap.NewProduction()
//get sidebarmenu
tableID := utils.GenerateRandomID("tablebody")
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()
fmt.Println(dataMenu)
fmt.Println(err)
if err != nil {
fmt.Println(dataMenu)
return err
}
//get user login
dataUser, err := services.GetUserLogin()
fmt.Println(dataUser)
fmt.Println(err)
if err != nil {
fmt.Println(dataUser)
return err
}
defer logger.Sync()
logger.Info("LOAD USER DEV",
zap.Any("data", dataUser),
)
title := "Master Group Result"
dataBreadCrumb, err := lh.MdGroupResultServices.GetMdGroupResultBreadcrumb(title)
fmt.Println(dataBreadCrumb)
fmt.Println(err)
if err != nil {
defer logger.Sync()
logger.Info("ERROR BREADCRUMB DEV",
zap.Any("error", err),
)
fmt.Println(dataBreadCrumb)
return err
}
defer logger.Sync()
logger.Info("LOAD BREADCRUMB DEV",
zap.Any("data", dataBreadCrumb),
)
//Breadcrumb component
breadcrumbComponent := breadcrumadmin.MainBreadcrumbAdminV1(dataBreadCrumb)
// navbar menu
navbarmenuComponent := navbarmenu.NavbarMenu(dataMenu)
// navbar user
navbaruserComponent := navbarmenu.Navbar(dataUser)
// sidebar
sidebaruserprofileComponent := sidebaruserprofile.Navbaruserprofile(dataUser)
//Table component
dataGroupResult, totalPage, err := lh.MdGroupResultServices.GetListMdGroupResult("", 1, 5)
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET GROUP RESULT",
zap.Any("error", err),
)
fmt.Println(dataGroupResult)
return err
}
tableComponent := dev_mdgroupresultview.TableGroupResult(dataGroupResult,
tableID,
"/dev/md/groupresultv2/openedit",
"#"+dialogEditBodyID,
"outerHTML",
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
"/dev/md/groupresultv2/opendelete",
"#"+dialogDeleteBodyID,
"outerHTML",
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
)
//filter user group component
usergroupFilterComponent := customtextfieldsearch.MainCustomTextFieldSearchV3(searchID,
"search",
"Cari Group Result Name / Result Resume MCU",
"text",
"/dev/md/groupresultv2/filter",
"input changed delay:500ms, search",
"#"+paginationID, "#loadingcontent", "", "outerHTML", "#tableID, #paginationID, #searchID,#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
dev_mdgroupresultview.BeforeRequestContentMdGroupResult(),
dev_mdgroupresultview.AfterRequestContentMdGroupResult())
//Pagination
userGroupPaginationComponent := pagination.PaginationV3(
totalPage,
1,
"/dev/md/groupresultv2/changepage",
paginationID,
"#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
"#"+paginationID,
"outerHTML", "", "",
dev_mdgroupresultview.BeforeRequestContentMdGroupResult(),
dev_mdgroupresultview.AfterRequestContentMdGroupResult(),
)
// listItem
dataResultMcu, err := lh.MdGroupResultServices.GetMdGroupResultResumeMcu()
fmt.Println(dataResultMcu)
fmt.Println(err)
if err != nil {
defer logger.Sync()
logger.Info("ERROR BREADCRUMB DEV",
zap.Any("error", err),
)
fmt.Println(dataResultMcu)
return err
}
defer logger.Sync()
logger.Info("LOAD BREADCRUMB DEV",
zap.Any("data", dataBreadCrumb),
)
// Component Dropdown MCU
listItemResultMcuComponent := dev_mdgroupresultview.ItemDropdown(dataResultMcu, 0)
//modal add form
dialogAddBodyCmp := dev_mdgroupresultview.BodyFormGroupResult(
models.CustomTextFieldv2Prm{
Label: "Group Result name",
Name: "groupresultid",
Placeholder: "Group Result name",
Type: "hidden",
ID: "groupresultid",
},
models.CustomTextFieldv2Prm{
Label: "Group Result Name",
Name: "groupresultname",
Placeholder: "Group Result Name",
Type: "text", ID: "groupresultname"},
models.CustomCheckboxv1Prm{
Label: "Group Result Flag Per Test (Dicentang Maka Ya)",
Name: "groupresultflagpertest",
ID: "groupresultflagpertest",
Value: "N",
},
models.CustomCheckboxv1Prm{
Label: "Group Result Flag Non Lab (Dicentang Maka Ya)",
Name: "groupresultflagnonlab",
ID: "groupresultflagnonlab",
Value: "N",
},
models.CustomDropdownv1Prm{
Label: "Group Result Resume MCU",
Name: "groupresultresumemcu",
ID: "groupresultresumemcu",
},
listItemResultMcuComponent,
dialogAddBodyID, dev_mdgroupresultview.JsHideModalGroupResult(""))
modalActioAddCmp := dev_mdgroupresultview.ActionFormGroupResult(
"/dev/md/groupresultv2/closeaddform",
"#"+dialogAddBodyID,
"outerHTML",
"#"+dialogAddID)
btnCloaseModalAdd := dev_mdgroupresultview.BtnCloseFormGroupResult(
"/dev/md/groupresultv2/closeaddform",
"#"+dialogAddBodyID,
"outerHTML",
"#"+dialogAddID)
// add
modalAddFormComponent := dev_mdgroupresultview.GroupResultForm(
models.GroupResultFormComponent{
IDComponent: "formgroupresult",
Link: "/dev/md/groupresultv2/add",
HxTarget: "#" + dialogAddBodyID,
HxSwap: "outerHTML",
HxInclude: "#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogEditBodyID, #" + searchID + ", #currpage" + paginationID,
ModalID: dialogAddID,
ModalTitle: "New-Group Result",
DialogBody: dialogAddBodyCmp,
DialogAction: modalActioAddCmp,
ButtonCLose: btnCloaseModalAdd,
},
)
//modal edit form
dialogEditBodyCmp := dev_mdgroupresultview.BodyFormGroupResult(
models.CustomTextFieldv2Prm{
Label: "Group Result name",
Name: "groupresultid",
Placeholder: "Group Result name",
Type: "hidden",
ID: "groupresultid",
},
models.CustomTextFieldv2Prm{
Label: "Group Result Name",
Name: "groupresultname",
Placeholder: "Group Result Name",
Type: "text", ID: "groupresultname"},
models.CustomCheckboxv1Prm{
Label: "Group Result Flag Per Test (Dicentang Maka Ya)",
Name: "groupresultflagpertest",
ID: "groupresultflagpertest",
Value: "N",
},
models.CustomCheckboxv1Prm{
Label: "Group Result Flag Non Lab (Dicentang Maka Ya)",
Name: "groupresultflagnonlab",
ID: "groupresultflagnonlab",
Value: "N",
},
models.CustomDropdownv1Prm{
Label: "Group Result Resume MCU",
Name: "groupresultresumemcu",
ID: "groupresultresumemcu",
},
listItemResultMcuComponent,
dialogEditBodyID, dev_mdgroupresultview.JsHideModalGroupResult(""))
modalActioEditCmp := dev_mdgroupresultview.ActionFormGroupResult(
"/dev/md/groupresultv2/closeeditform",
"#"+dialogEditBodyID,
"outerHTML",
"#"+dialogEditID)
btnCloaseModalEdit := dev_mdgroupresultview.BtnCloseFormGroupResult(
"/dev/md/groupresultv2/closeeditform",
"#"+dialogEditBodyID,
"outerHTML",
"#"+dialogEditID)
modalEditFormComponent := dev_mdgroupresultview.GroupResultForm(
models.GroupResultFormComponent{
IDComponent: "formgroupresult",
Link: "/dev/md/groupresultv2/edit",
HxTarget: "#" + dialogEditBodyID,
HxSwap: "outerHTML",
HxInclude: "#tableID, #paginationID, #searchID, #dialogDeleteBodyID, #dialogEditBodyID, #dialogEditID, #" + searchID + ", #currpage" + paginationID,
ModalID: dialogEditID,
ModalTitle: "New-Group Result",
DialogBody: dialogEditBodyCmp,
DialogAction: modalActioEditCmp,
ButtonCLose: btnCloaseModalEdit,
},
)
//modal delete form
dialogDeleteBodyCmp := dev_mdgroupresultview.BodyFormGroupResult(
models.CustomTextFieldv2Prm{
Label: "Group Result name",
Name: "groupresultid",
Placeholder: "Group Result name",
Type: "hidden",
ID: "groupresultid",
},
models.CustomTextFieldv2Prm{
Label: "Group Result Name",
Name: "groupresultname",
Placeholder: "Group Result Name",
Type: "text", ID: "groupresultname"},
models.CustomCheckboxv1Prm{
Label: "Group Result Flag Per Test (Dicentang Maka Ya)",
Name: "groupresultflagpertest",
ID: "groupresultflagpertest",
Value: "N",
},
models.CustomCheckboxv1Prm{
Label: "Group Result Flag Non Lab (Dicentang Maka Ya)",
Name: "groupresultflagnonlab",
ID: "groupresultflagnonlab",
Value: "N",
},
models.CustomDropdownv1Prm{
Label: "Group Result Resume MCU",
Name: "groupresultresumemcu",
ID: "groupresultresumemcu",
},
listItemResultMcuComponent,
dialogDeleteBodyID, dev_mdgroupresultview.JsHideModalGroupResult(""))
modalActioDeleteCmp := dev_mdgroupresultview.ActionFormGroupResultDelete(
"/dev/md/groupresultv2/closedeleteform",
"#"+dialogDeleteBodyID,
"outerHTML",
"#"+dialogDeleteID)
btnCloaseModalDelete := dev_mdgroupresultview.BtnCloseFormGroupResult(
"/dev/md/groupresultv2/closedeleteform",
"#"+dialogDeleteBodyID,
"outerHTML",
"#"+dialogDeleteID)
modalDeleteFormComponent := dev_mdgroupresultview.GroupResultForm(
models.GroupResultFormComponent{
IDComponent: "formgroupresult",
Link: "/dev/md/groupresultv2/delete",
HxTarget: "#" + dialogDeleteBodyID,
HxSwap: "outerHTML",
HxInclude: "#tableID, #paginationID, #searchID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #" + searchID + ", #currpage" + paginationID,
ModalID: dialogDeleteID,
ModalTitle: "New-Group Result",
DialogBody: dialogDeleteBodyCmp,
DialogAction: modalActioDeleteCmp,
ButtonCLose: btnCloaseModalDelete,
},
)
//content js & css
content := dev_mdgroupresultview.MdGroupResultScreen(
tableID,
paginationID,
searchID,
dialogAddID,
dialogAddBodyID,
dialogEditID,
dialogEditBodyID,
dialogDeleteID,
dialogDeleteBodyID,
breadcrumbComponent,
tableComponent,
usergroupFilterComponent,
userGroupPaginationComponent,
modalAddFormComponent,
modalEditFormComponent,
modalDeleteFormComponent)
css := dev_mdgroupresultview.CssMdGroupResult()
js := dev_mdgroupresultview.JsMdGroupResult()
view := dev_mdgroupresultview.ShowMdGroupResultScreen(title,
content,
css,
js,
navbarmenuComponent,
navbaruserComponent,
sidebaruserprofileComponent)
return utils.View(c, view)
}
// SEARCHING
func (lh *MdGroupResultHandler) HandleFilterMdGroupResult(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()
dataGroupResult, totalpage, err := lh.MdGroupResultServices.GetListMdGroupResult(search, 1, 5)
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET GROUP RESULT",
zap.Any("error", err),
)
fmt.Println(dataGroupResult)
return err
}
tableComponent := dev_mdgroupresultview.TableGroupResult(dataGroupResult,
tableID,
"/dev/md/groupresultv2/openedit",
"#"+dialogEditBodyID,
"outerHTML",
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
"/dev/md/groupresultv2/opendelete",
"#"+dialogDeleteBodyID,
"outerHTML",
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID")
userGroupPaginationComponent := pagination.PaginationV3(
totalpage,
1,
"/dev/md/groupresultv2/changepage",
paginationID,
"#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
"#"+paginationID,
"outerHTML", "", "",
dev_mdgroupresultview.BeforeRequestContentMdGroupResult(),
dev_mdgroupresultview.AfterRequestContentMdGroupResult(),
)
retval = append(retval, tableComponent)
retval = append(retval, userGroupPaginationComponent)
return utils.ViewMulti(c, retval)
}
// PAGINATION
func (lh *MdGroupResultHandler) HandleChangePageMdGroupResult(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
}
dataGroupResult, totalpage, err := lh.MdGroupResultServices.GetListMdGroupResult(search, page, 5)
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET USER GROUP",
zap.Any("error", err),
)
fmt.Println(dataGroupResult)
return err
}
tableComponent := dev_mdgroupresultview.TableGroupResult(dataGroupResult,
tableID,
"/dev/md/groupresultv2/openedit",
"#"+dialogEditBodyID,
"outerHTML",
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
"/dev/md/groupresultv2/opendelete",
"#"+dialogDeleteBodyID,
"outerHTML",
"#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
)
userGroupPaginationComponent := pagination.PaginationV3(
totalpage,
page,
"/dev/md/groupresultv2/changepage",
paginationID,
"#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID",
"#"+paginationID,
"outerHTML", "", "",
dev_mdgroupresultview.BeforeRequestContentMdGroupResult(),
dev_mdgroupresultview.AfterRequestContentMdGroupResult(),
)
retval = append(retval, tableComponent)
retval = append(retval, userGroupPaginationComponent)
return utils.ViewMulti(c, retval)
}

View File

@@ -247,4 +247,26 @@ func SetupRoutesDev(app *echo.Echo, appStore db.AppStore) {
dev.POST("/md/usergroupv2/closedeleteform", devMdUserGroupHandlers.HandleCloseFormDelete)
dev.POST("/md/usergroupv2/delete", devMdUserGroupHandlers.HandleDeleteUserGroup)
// // group result
// devGRServices := dev_services.NewServicesGroupResult(appStore)
// devGRhandlers := dev_handlers.NewGroupResultHandler(devGRServices)
// dev.GET("/groupresult", devGRhandlers.HandlerShowGroupResultV1)
// dev.GET("/searchgroupresultv1", devGRhandlers.HandlerShowGroupResultSearchV1)
// dev.GET("/groupresultv1pagination", devGRhandlers.HandlerShowGroupResultPaginationV1)
// dev.POST("/groupresulthandlecloseform", devGRhandlers.HandleCloseForm)
// dev.POST("/groupresulthandlecloseformedit", devGRhandlers.HandleCloseFormEdit)
// dev.GET("/groupresultshoweditform", devGRhandlers.HandleEditForm)
// dev.GET("/groupresultshowdeleteform", devGRhandlers.HandleDeleteForm)
// // dev.GET("/groupresultshowdeleteform", devGRhandlers.HandleDeleteForm)
// // form add
// dev.POST("/groupresult/add", devGRhandlers.AddGroupResult)
// dev.POST("/groupresult/edit", devGRhandlers.EditGroupResult)
// dev.POST("/groupresult/delete", devGRhandlers.DeleteGroupResult)
// group result v2
devMdGRServices := dev_services.NewServicesMdGroupResult(appStore)
devMdGRhandlers := dev_handlers.NewMdGroupResultHandler(devMdGRServices)
dev.GET("/md/groupresultv2", devMdGRhandlers.HandleShowMdGroupResultScreen)
dev.GET("/md/groupresultv2/filter", devMdGRhandlers.HandleFilterMdGroupResult)
dev.GET("/md/groupresultv2/changepage", devMdGRhandlers.HandleChangePageMdGroupResult)
}