From edef960ae521ecaa5417ab1133c86e3aa6cc51cb Mon Sep 17 00:00:00 2001 From: Sas Andy Date: Tue, 21 May 2024 15:37:05 +0700 Subject: [PATCH 01/14] user group services --- services/dev/md.usergroup.service.go | 259 +++++++++++++++++++++++++++ 1 file changed, 259 insertions(+) create mode 100644 services/dev/md.usergroup.service.go diff --git a/services/dev/md.usergroup.service.go b/services/dev/md.usergroup.service.go new file mode 100644 index 0000000..8ae66cb --- /dev/null +++ b/services/dev/md.usergroup.service.go @@ -0,0 +1,259 @@ +package dev_services + +import ( + "cpone/db" + "cpone/models" + dbx "cpone/package/database" + "fmt" + "math" + "strconv" + "strings" + + "go.uber.org/zap" +) + +func NewServicesMdUserGroup(uStore db.AppStore) *ServicesMdUserGroup { + + return &ServicesMdUserGroup{ + + MdUserGroupStore: uStore, + } +} + +type ServicesMdUserGroup struct { + MdUserGroupStore db.AppStore +} + +func (su *ServicesMdUserGroup) GetListMdUserGroup(search string, currentPage int, rowPerPage int) ([]models.UserGroupV1, int, error) { + var userGroupList []models.UserGroupV1 + var totalData int + offset := (currentPage - 1) * rowPerPage + prm := "%" + strings.TrimSpace(search) + "%" + querytotal := ` + SELECT COUNT(*) + FROM m_usergroup + WHERE M_UserGroupIsActive = 'Y' + AND (M_UserGroupCode LIKE ? OR M_UserGroupName LIKE ?) + ` + if err := dbx.Handlex.Get(&totalData, querytotal, prm, prm); err != nil { + return nil, 0, fmt.Errorf("error querying database: %v", err) + } + query := ` + SELECT + ROW_NUMBER() OVER () AS nomor, + M_UserGroupID, + M_UserGroupCode, + M_UserGroupName, + M_UserGroupCreated, + M_UserGroupLastUpdated, + M_UserGroupIsActive + FROM m_usergroup + WHERE M_UserGroupIsActive = 'Y' + AND (M_UserGroupCode LIKE ? OR M_UserGroupName LIKE ?) + order by M_UserGroupID ASC + LIMIT ? OFFSET ? + ` + + if err := dbx.Handlex.Select(&userGroupList, query, prm, prm, rowPerPage, offset); err != nil { + return nil, 0, fmt.Errorf("error querying database: %v", err) + } + totalPage := int(math.Ceil(float64(totalData) / float64(rowPerPage))) + + return userGroupList, totalPage, nil +} +func (ug *ServicesMdUserGroup) GetMdUserGroupByID(id string) (models.UserGroupV1, error) { + logger, _ := zap.NewProduction() + + var data models.UserGroupV1 + err := dbx.Handlex.Get(&data, `SELECT * FROM m_usergroup + WHERE M_UserGroupID = ?`, id) + + if err != nil { + defer logger.Sync() + logger.Error("Error get data ug by id vs", + zap.String("ID", id), + zap.Error(err), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + return data, nil +} + +func (ug *ServicesMdUserGroup) AddMdUserGroup(code string, name string) (models.UserGroupV1, error) { + logger, _ := zap.NewProduction() + var data models.UserGroupV1 + var datacek []models.UserGroupV1 + + qryCek := `SELECT M_UserGroupCode FROM m_usergroup WHERE M_UserGroupCode = ? AND M_UserGroupIsActive = 'Y'` + err := dbx.Handlex.Select(&datacek, qryCek, code) + + if err != nil { + defer logger.Sync() + logger.Error("Error cek data by code", + zap.String("code", code), + zap.Any("datacek", datacek), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + if len(datacek) > 0 { + defer logger.Sync() + logger.Error("Code already taken by another data", + zap.String("code", code), + ) + return data, fmt.Errorf("code sudah dipakai") + } + qry := `INSERT INTO m_usergroup + (M_UserGroupCode, + M_UserGroupName) + VALUES (?,?);` + // time.Sleep(5 * time.Second) + rst := dbx.Handlex.MustExec(qry, code, name) + insertedID, err := rst.LastInsertId() + if err != nil { + defer logger.Sync() + logger.Error("Error Insert usergroup", + zap.String("code", code), + zap.String("name", name), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + s := strconv.Itoa(int(insertedID)) + data, err = ug.GetMdUserGroupByID(s) + if err != nil { + defer logger.Sync() + logger.Error("Error get usergroup by id", + zap.String("code", code), + zap.String("name", name), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + return data, nil +} +func (ug *ServicesMdUserGroup) EditMdUsergroup(id string, code string, name string) (models.UserGroupV1, error) { + logger, _ := zap.NewProduction() + var data models.UserGroupV1 + var datacek []models.UserGroupV1 + + qryCek := `SELECT M_UserGroupCode FROM m_usergroup WHERE M_UserGroupCode = ? AND M_UserGroupIsActive = 'Y' AND M_UserGroupID <> ?` + err := dbx.Handlex.Select(&datacek, qryCek, code, id) + + if err != nil { + defer logger.Sync() + logger.Error("Error cek data by code", + zap.String("code", code), + zap.Any("datacek", datacek), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + if len(datacek) > 0 { + defer logger.Sync() + logger.Error("Code already taken by another data", + zap.String("code", code), + ) + return data, fmt.Errorf("code sudah dipakai") + } + qry := `UPDATE m_usergroup + SET M_UserGroupCode = ?, + M_UserGroupName= ? + WHERE M_UserGroupID = ?;` + // time.Sleep(5 * time.Second) + rst := dbx.Handlex.MustExec(qry, code, name, id) + _, err = rst.RowsAffected() + if err != nil { + defer logger.Sync() + logger.Error("Error Update usergroup", + zap.String("code", code), + zap.String("name", name), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + + data, err = ug.GetMdUserGroupByID(id) + if err != nil { + defer logger.Sync() + logger.Error("Error get usergroup by id", + zap.String("code", code), + zap.String("name", name), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + return data, nil +} + +func (ug *ServicesMdUserGroup) DeleteMdUserGroup(id string) (models.UserGroupV1, error) { + logger, _ := zap.NewProduction() + var data models.UserGroupV1 + qry := `UPDATE m_usergroup + SET M_UserGroupIsActive = 'N' + WHERE M_UserGroupID = ?;` + // time.Sleep(5 * time.Second) + rst := dbx.Handlex.MustExec(qry, id) + _, err := rst.RowsAffected() + if err != nil { + defer logger.Sync() + logger.Error("Error delete usergroup", + zap.String("id", id), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + + data, err = ug.GetMdUserGroupByID(id) + if err != nil { + defer logger.Sync() + logger.Error("Error get usergroup by id", + zap.String("id", id), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + return data, nil +} +func (su *ServicesMdUserGroup) GetMdUserGroupBreadCrumb(title string) (models.BreadCrumbV1, error) { + var ret models.BreadCrumbV1 + + dummyBreadcrumb := []models.BreadCrumbV1{ + { + Title: "Master User Group", + Item: []models.ItemBreadCrumbV1{ + { + Item: "Dashboard", + Url: "/dev/dashboard", + }, + { + Item: "Master", + Url: "/dev/master", + }, + { + Item: "User Group", + Url: "", + }, + }, + }, + + { + Title: "Master User", + Item: []models.ItemBreadCrumbV1{ + { + Item: "Dashboard", + Url: "/dev/dashboard", + }, + { + Item: "Master", + Url: "/dev/master", + }, + { + Item: "User", + Url: "", + }, + }, + }, + } + + for _, breadcrumb := range dummyBreadcrumb { + if breadcrumb.Title == title { + ret = breadcrumb + return ret, nil + } + } + + return ret, nil +} From e1f76430fcfa379c54a22647d727889833e08257 Mon Sep 17 00:00:00 2001 From: Sas Andy Date: Tue, 21 May 2024 16:20:41 +0700 Subject: [PATCH 02/14] init handler & empty view --- handlers/dev/md.usergroup.handlers.go | 98 +++++++++++++++ handlers/routes.go | 6 + services/dev/md.usergroup.service.go | 18 +-- views/dev/mdusergroup/mdusergroup.templ | 78 ++++++++++++ views/dev/mdusergroup/mdusergroup_templ.go | 133 +++++++++++++++++++++ 5 files changed, 324 insertions(+), 9 deletions(-) create mode 100644 handlers/dev/md.usergroup.handlers.go create mode 100644 views/dev/mdusergroup/mdusergroup.templ create mode 100644 views/dev/mdusergroup/mdusergroup_templ.go diff --git a/handlers/dev/md.usergroup.handlers.go b/handlers/dev/md.usergroup.handlers.go new file mode 100644 index 0000000..e8142cf --- /dev/null +++ b/handlers/dev/md.usergroup.handlers.go @@ -0,0 +1,98 @@ +package dev_handlers + +import ( + breadcrumadmin "cpone/component/breadcrumbadmin" + navbarmenu "cpone/component/navbar" + sidebaruserprofile "cpone/component/sidebar_user_profile" + "cpone/models" + "cpone/services" + "cpone/utils" + dev_mdusergroupview "cpone/views/dev/mdusergroup" + + "fmt" + + "github.com/labstack/echo/v4" + "go.uber.org/zap" +) + +type MdUserGroupServices interface { + GetListMdUserGroup(search string, currentPage int, rowPerPage int) ([]models.UserGroupV1, int, error) + GetMdUserGroupByID(id string) (models.UserGroupV1, error) + AddMdUserGroup(code string, name string) (models.UserGroupV1, error) + EditMdUsergroup(id string, code string, name string) (models.UserGroupV1, error) + DeleteMdUserGroup(id string) (models.UserGroupV1, error) + GetMdUserGroupBreadCrumb(title string) (models.BreadCrumbV1, error) +} + +func NewMdUserGroupHandler(us MdUserGroupServices) *MdUserGroupHandler { + return &MdUserGroupHandler{ + MdUserGroupServices: us, + } +} + +type MdUserGroupHandler struct { + MdUserGroupServices MdUserGroupServices +} + +func (lh *MdUserGroupHandler) HandleShowMdUserGroupScreen(c echo.Context) error { + logger, _ := zap.NewProduction() + //get sidebarmenu + + 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 User Group" + + dataBreadCrumb, err := lh.MdUserGroupServices.GetMdUserGroupBreadCrumb(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) + + //content js & css + content := dev_mdusergroupview.MdUserGroupScreen(breadcrumbComponent) + css := dev_mdusergroupview.CssMdUserGroup() + js := dev_mdusergroupview.JsMdUserGroup() + + view := dev_mdusergroupview.ShowMdUserGroupScreen(title, content, css, js, navbarmenuComponent, navbaruserComponent, sidebaruserprofileComponent) + return utils.View(c, view) +} diff --git a/handlers/routes.go b/handlers/routes.go index 7e23bcd..2b0e31f 100644 --- a/handlers/routes.go +++ b/handlers/routes.go @@ -211,4 +211,10 @@ func SetupRoutesDev(app *echo.Echo, appStore db.AppStore) { // clientgroup.GET("/usergroup/edit", mastermenuusergroupHandler.ChangeFormEdit) // clientgroup.GET("/usergroup/pagination", mastermenuusergroupHandler.HandleChangePage) + + //New User Group + devMdUserGroupServices := dev_services.NewMdUserGroupServices(appStore) + devMdUserGroupHandlers := dev_handlers.NewMdUserGroupHandler(devMdUserGroupServices) + dev.GET("/usergroupv2", devMdUserGroupHandlers.HandleShowMdUserGroupScreen) + } diff --git a/services/dev/md.usergroup.service.go b/services/dev/md.usergroup.service.go index 8ae66cb..f21ded9 100644 --- a/services/dev/md.usergroup.service.go +++ b/services/dev/md.usergroup.service.go @@ -12,19 +12,19 @@ import ( "go.uber.org/zap" ) -func NewServicesMdUserGroup(uStore db.AppStore) *ServicesMdUserGroup { +func NewMdUserGroupServices(uStore db.AppStore) *MdUserGroupServices { - return &ServicesMdUserGroup{ + return &MdUserGroupServices{ MdUserGroupStore: uStore, } } -type ServicesMdUserGroup struct { +type MdUserGroupServices struct { MdUserGroupStore db.AppStore } -func (su *ServicesMdUserGroup) GetListMdUserGroup(search string, currentPage int, rowPerPage int) ([]models.UserGroupV1, int, error) { +func (su *MdUserGroupServices) GetListMdUserGroup(search string, currentPage int, rowPerPage int) ([]models.UserGroupV1, int, error) { var userGroupList []models.UserGroupV1 var totalData int offset := (currentPage - 1) * rowPerPage @@ -61,7 +61,7 @@ func (su *ServicesMdUserGroup) GetListMdUserGroup(search string, currentPage int return userGroupList, totalPage, nil } -func (ug *ServicesMdUserGroup) GetMdUserGroupByID(id string) (models.UserGroupV1, error) { +func (ug *MdUserGroupServices) GetMdUserGroupByID(id string) (models.UserGroupV1, error) { logger, _ := zap.NewProduction() var data models.UserGroupV1 @@ -79,7 +79,7 @@ func (ug *ServicesMdUserGroup) GetMdUserGroupByID(id string) (models.UserGroupV1 return data, nil } -func (ug *ServicesMdUserGroup) AddMdUserGroup(code string, name string) (models.UserGroupV1, error) { +func (ug *MdUserGroupServices) AddMdUserGroup(code string, name string) (models.UserGroupV1, error) { logger, _ := zap.NewProduction() var data models.UserGroupV1 var datacek []models.UserGroupV1 @@ -129,7 +129,7 @@ func (ug *ServicesMdUserGroup) AddMdUserGroup(code string, name string) (models. } return data, nil } -func (ug *ServicesMdUserGroup) EditMdUsergroup(id string, code string, name string) (models.UserGroupV1, error) { +func (ug *MdUserGroupServices) EditMdUsergroup(id string, code string, name string) (models.UserGroupV1, error) { logger, _ := zap.NewProduction() var data models.UserGroupV1 var datacek []models.UserGroupV1 @@ -180,7 +180,7 @@ func (ug *ServicesMdUserGroup) EditMdUsergroup(id string, code string, name stri return data, nil } -func (ug *ServicesMdUserGroup) DeleteMdUserGroup(id string) (models.UserGroupV1, error) { +func (ug *MdUserGroupServices) DeleteMdUserGroup(id string) (models.UserGroupV1, error) { logger, _ := zap.NewProduction() var data models.UserGroupV1 qry := `UPDATE m_usergroup @@ -207,7 +207,7 @@ func (ug *ServicesMdUserGroup) DeleteMdUserGroup(id string) (models.UserGroupV1, } return data, nil } -func (su *ServicesMdUserGroup) GetMdUserGroupBreadCrumb(title string) (models.BreadCrumbV1, error) { +func (su *MdUserGroupServices) GetMdUserGroupBreadCrumb(title string) (models.BreadCrumbV1, error) { var ret models.BreadCrumbV1 dummyBreadcrumb := []models.BreadCrumbV1{ diff --git a/views/dev/mdusergroup/mdusergroup.templ b/views/dev/mdusergroup/mdusergroup.templ new file mode 100644 index 0000000..c2f19a3 --- /dev/null +++ b/views/dev/mdusergroup/mdusergroup.templ @@ -0,0 +1,78 @@ +package dev_mdusergroupview + +import ( + "cpone/layout" +) + +templ MdUserGroupScreen(breadcrumb templ.Component) { +
+
+
+ @breadcrumb +
+
+ //
+
+ +
+
+
+ +
+
+
+} + +templ CssMdUserGroup() { + + + + +} + +templ JsMdUserGroup() { +} + +templ ShowMdUserGroupScreen(title string, cmp templ.Component, css templ.Component, js templ.Component, + navbarmenu templ.Component, + navbaruser templ.Component, + userprofile templ.Component) { + @layout.CorporateLayout(title, css, js, navbarmenu, navbaruser, userprofile) { + @cmp + } +} diff --git a/views/dev/mdusergroup/mdusergroup_templ.go b/views/dev/mdusergroup/mdusergroup_templ.go new file mode 100644 index 0000000..d5506f5 --- /dev/null +++ b/views/dev/mdusergroup/mdusergroup_templ.go @@ -0,0 +1,133 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.2.663 +package dev_mdusergroupview + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import "context" +import "io" +import "bytes" + +import ( + "cpone/layout" +) + +func MdUserGroupScreen(breadcrumb 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_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = breadcrumb.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 + } + if !templ_7745c5c3_IsBuffer { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W) + } + return templ_7745c5c3_Err + }) +} + +func CssMdUserGroup() 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_Var2 := templ.GetChildren(ctx) + if templ_7745c5c3_Var2 == nil { + templ_7745c5c3_Var2 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + 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 + }) +} + +func JsMdUserGroup() 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_Var3 := templ.GetChildren(ctx) + if templ_7745c5c3_Var3 == nil { + templ_7745c5c3_Var3 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + if !templ_7745c5c3_IsBuffer { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W) + } + return templ_7745c5c3_Err + }) +} + +func ShowMdUserGroupScreen(title string, cmp templ.Component, css templ.Component, js templ.Component, + navbarmenu templ.Component, + navbaruser templ.Component, + userprofile 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_Var4 := templ.GetChildren(ctx) + if templ_7745c5c3_Var4 == nil { + templ_7745c5c3_Var4 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Var5 := 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) + } + templ_7745c5c3_Err = cmp.Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if !templ_7745c5c3_IsBuffer { + _, templ_7745c5c3_Err = io.Copy(templ_7745c5c3_W, templ_7745c5c3_Buffer) + } + return templ_7745c5c3_Err + }) + templ_7745c5c3_Err = layout.CorporateLayout(title, css, js, navbarmenu, navbaruser, userprofile).Render(templ.WithChildren(ctx, templ_7745c5c3_Var5), 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 + }) +} From b1dc143e839f08b4223f04d1554576b0f26b9284 Mon Sep 17 00:00:00 2001 From: Sas Andy Date: Tue, 21 May 2024 16:51:57 +0700 Subject: [PATCH 03/14] table listing --- handlers/dev/md.usergroup.handlers.go | 18 ++- views/dev/mdusergroup/mdusergroup.templ | 22 +++- views/dev/mdusergroup/mdusergroup_templ.go | 46 ++++++- views/dev/mdusergroup/mdusergrouptable.templ | 30 +++++ .../dev/mdusergroup/mdusergrouptable_templ.go | 120 ++++++++++++++++++ 5 files changed, 230 insertions(+), 6 deletions(-) create mode 100644 views/dev/mdusergroup/mdusergrouptable.templ create mode 100644 views/dev/mdusergroup/mdusergrouptable_templ.go diff --git a/handlers/dev/md.usergroup.handlers.go b/handlers/dev/md.usergroup.handlers.go index e8142cf..91ee7e9 100644 --- a/handlers/dev/md.usergroup.handlers.go +++ b/handlers/dev/md.usergroup.handlers.go @@ -37,7 +37,9 @@ type MdUserGroupHandler struct { func (lh *MdUserGroupHandler) HandleShowMdUserGroupScreen(c echo.Context) error { logger, _ := zap.NewProduction() //get sidebarmenu - + tableID := utils.GenerateRandomID("tablebody") + paginationID := utils.GenerateRandomID("paginationid") + searchID := utils.GenerateRandomID("searchid") dataMenu, err := services.GetMenu() fmt.Println(dataMenu) fmt.Println(err) @@ -88,8 +90,20 @@ func (lh *MdUserGroupHandler) HandleShowMdUserGroupScreen(c echo.Context) error // sidebar sidebaruserprofileComponent := sidebaruserprofile.Navbaruserprofile(dataUser) + //Table component + dataUserGroup, _, err := lh.MdUserGroupServices.GetListMdUserGroup("", 1, 10) + 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) + //content js & css - content := dev_mdusergroupview.MdUserGroupScreen(breadcrumbComponent) + content := dev_mdusergroupview.MdUserGroupScreen(tableID, paginationID, searchID, breadcrumbComponent, tableComponent) css := dev_mdusergroupview.CssMdUserGroup() js := dev_mdusergroupview.JsMdUserGroup() diff --git a/views/dev/mdusergroup/mdusergroup.templ b/views/dev/mdusergroup/mdusergroup.templ index c2f19a3..06d6b0c 100644 --- a/views/dev/mdusergroup/mdusergroup.templ +++ b/views/dev/mdusergroup/mdusergroup.templ @@ -2,10 +2,29 @@ package dev_mdusergroupview import ( "cpone/layout" + "cpone/component/customtextfield" + "cpone/models" ) -templ MdUserGroupScreen(breadcrumb templ.Component) { +templ MdUserGroupScreen( + tableID string, + paginationID string, + searchID string, + breadcrumb templ.Component, + tablecontent templ.Component) {
+ @customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "tableID", + Name: "tableID", + Type: "hidden", + Value: tableID}) + @customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "paginationID", + Name: "paginationID", + Type: "hidden", + Value: paginationID}) + @customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "searchID", + Name: "searchID", + Type: "hidden", + Value: searchID})
@breadcrumb @@ -28,6 +47,7 @@ templ MdUserGroupScreen(breadcrumb templ.Component) { >Add New
+ @tablecontent
} diff --git a/views/dev/mdusergroup/mdusergroup_templ.go b/views/dev/mdusergroup/mdusergroup_templ.go index d5506f5..efc3111 100644 --- a/views/dev/mdusergroup/mdusergroup_templ.go +++ b/views/dev/mdusergroup/mdusergroup_templ.go @@ -11,10 +11,17 @@ import "io" import "bytes" import ( + "cpone/component/customtextfield" "cpone/layout" + "cpone/models" ) -func MdUserGroupScreen(breadcrumb templ.Component) templ.Component { +func MdUserGroupScreen( + tableID string, + paginationID string, + searchID string, + breadcrumb templ.Component, + tablecontent 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 { @@ -27,7 +34,32 @@ func MdUserGroupScreen(breadcrumb templ.Component) templ.Component { templ_7745c5c3_Var1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "tableID", + Name: "tableID", + Type: "hidden", + Value: tableID}).Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "paginationID", + Name: "paginationID", + Type: "hidden", + Value: paginationID}).Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "searchID", + Name: "searchID", + Type: "hidden", + Value: searchID}).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 } @@ -35,7 +67,15 @@ func MdUserGroupScreen(breadcrumb templ.Component) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + 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 = templ_7745c5c3_Buffer.WriteString("
") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } diff --git a/views/dev/mdusergroup/mdusergrouptable.templ b/views/dev/mdusergroup/mdusergrouptable.templ new file mode 100644 index 0000000..5054479 --- /dev/null +++ b/views/dev/mdusergroup/mdusergrouptable.templ @@ -0,0 +1,30 @@ +package dev_mdusergroupview + +import "cpone/component/table" +import "cpone/models" + +templ TableUserGroup(data []models.UserGroupV1, + tableID string) { +
+ @tablecomponent.TableV3([]string{"KODE", "USERGROUP", "AKSI"}, + []string{"40%", "40%", "20%"}, + RowUserGroup(data)) +
+} + +templ RowUserGroup(data []models.UserGroupV1) { + if len(data) == 0 { + + Data Tidak Ditemukan + + } + for _, v := range data { + + { v.M_UserGroupCode } + { v.M_UserGroupName } + + action + + + } +} diff --git a/views/dev/mdusergroup/mdusergrouptable_templ.go b/views/dev/mdusergroup/mdusergrouptable_templ.go new file mode 100644 index 0000000..9475e3d --- /dev/null +++ b/views/dev/mdusergroup/mdusergrouptable_templ.go @@ -0,0 +1,120 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.2.663 +package dev_mdusergroupview + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import "context" +import "io" +import "bytes" + +import "cpone/component/table" +import "cpone/models" + +func TableUserGroup(data []models.UserGroupV1, + tableID string) 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_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = tablecomponent.TableV3([]string{"KODE", "USERGROUP", "AKSI"}, + []string{"40%", "40%", "20%"}, + RowUserGroup(data)).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 + } + if !templ_7745c5c3_IsBuffer { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W) + } + return templ_7745c5c3_Err + }) +} + +func RowUserGroup(data []models.UserGroupV1) 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_Var3 := templ.GetChildren(ctx) + if templ_7745c5c3_Var3 == nil { + templ_7745c5c3_Var3 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + if len(data) == 0 { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("Data Tidak Ditemukan") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + for _, v := range data { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var4 string + templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(v.M_UserGroupCode) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergrouptable.templ`, Line: 23, Col: 26} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4)) + 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 + } + var templ_7745c5c3_Var5 string + templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(v.M_UserGroupName) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergrouptable.templ`, Line: 24, Col: 26} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("action\r") + 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 + }) +} From e6afeb74b8191d50621a687a115af5fce4e50dc6 Mon Sep 17 00:00:00 2001 From: Sas Andy Date: Wed, 22 May 2024 08:40:54 +0700 Subject: [PATCH 04/14] 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 From fd3609f82f6fc5bcd22806bdd33268681e551a67 Mon Sep 17 00:00:00 2001 From: Sas Andy Date: Wed, 22 May 2024 11:02:58 +0700 Subject: [PATCH 05/14] add user group --- handlers/dev/md.usergroup.handlers.go | 235 +++++++++- handlers/routes.go | 2 + views/dev/mdusergroup/mdusergroup.templ | 16 +- views/dev/mdusergroup/mdusergroup_templ.go | 73 ++- .../mdusergroup/mdusergroupformmodal.templ | 107 +++++ .../mdusergroup/mdusergroupformmodal_templ.go | 424 ++++++++++++++++++ 6 files changed, 842 insertions(+), 15 deletions(-) create mode 100644 views/dev/mdusergroup/mdusergroupformmodal.templ create mode 100644 views/dev/mdusergroup/mdusergroupformmodal_templ.go diff --git a/handlers/dev/md.usergroup.handlers.go b/handlers/dev/md.usergroup.handlers.go index f9cc1ae..5fca14b 100644 --- a/handlers/dev/md.usergroup.handlers.go +++ b/handlers/dev/md.usergroup.handlers.go @@ -6,11 +6,13 @@ import ( navbarmenu "cpone/component/navbar" "cpone/component/pagination" sidebaruserprofile "cpone/component/sidebar_user_profile" + customtoastv2 "cpone/component/toastbootstrap" "cpone/models" "cpone/services" "cpone/utils" dev_mdusergroupview "cpone/views/dev/mdusergroup" "strconv" + "strings" "fmt" @@ -44,6 +46,8 @@ func (lh *MdUserGroupHandler) HandleShowMdUserGroupScreen(c echo.Context) error tableID := utils.GenerateRandomID("tablebody") paginationID := utils.GenerateRandomID("paginationid") searchID := utils.GenerateRandomID("searchid") + dialogAddID := utils.GenerateRandomID("dialogaddID") + dialogAddBodyID := utils.GenerateRandomID("dialogaddbodyID") dataMenu, err := services.GetMenu() fmt.Println(dataMenu) fmt.Println(err) @@ -125,15 +129,61 @@ func (lh *MdUserGroupHandler) HandleShowMdUserGroupScreen(c echo.Context) error "outerHTML", "", "", ) + //modal add form + dialogAddBodyCmp := dev_mdusergroupview.BodyFormUserGroup( + models.CustomTextFieldv2Prm{ + Label: "Kode User Group", + Name: "usergroupcode", + Placeholder: "Kode user group", + Type: "text", ID: "usergroupinputname"}, + models.CustomTextFieldv2Prm{ + Label: "Nama User Group", + Name: "usergroupname", + Placeholder: "Nama user group", + Type: "text", ID: "usergroupinputname"}, + models.CustomTextFieldv2Prm{ + Label: "Kode User Group", + Name: "usergroupid", + Placeholder: "Kode user group", + Type: "hidden", ID: "usergroupinputid"}, + dialogAddBodyID, dev_mdusergroupview.JsHideModal("")) + modalActioAddCmp := dev_mdusergroupview.ActionFormUserGroup( + "/dev/usergroupv2/closeaddform", + "#"+dialogAddBodyID, + "outerHTML", + "#"+dialogAddID) + btnCloaseModalAdd := dev_mdusergroupview.BtnCloseFormUserGroup( + "/dev/usergroupv2/closeaddform", + "#"+dialogAddBodyID, + "outerHTML", + "#"+dialogAddID) + modalAddFormComponent := dev_mdusergroupview.UserGroupForm( + models.UserGroupFormComponent{ + IDComponent: "formusergroup", + Link: "/dev/usergroupv2/add", + HxTarget: "#" + dialogAddBodyID, + HxSwap: "outerHTML", + HxInclude: "#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #" + searchID + ", #currpage" + paginationID, + ModalID: dialogAddID, + ModalTitle: "New-User Group", + DialogBody: dialogAddBodyCmp, + DialogAction: modalActioAddCmp, + ButtonCLose: btnCloaseModalAdd, + }, + ) + //content js & css content := dev_mdusergroupview.MdUserGroupScreen( tableID, paginationID, searchID, + dialogAddID, + dialogAddBodyID, breadcrumbComponent, tableComponent, usergroupFilterComponent, - userGroupPaginationComponent) + userGroupPaginationComponent, + modalAddFormComponent) css := dev_mdusergroupview.CssMdUserGroup() js := dev_mdusergroupview.JsMdUserGroup() @@ -211,3 +261,186 @@ func (lh *MdUserGroupHandler) HandleChangePageMdUserGroup(c echo.Context) error retval = append(retval, userGroupPaginationComponent) return utils.ViewMulti(c, retval) } +func (lh *MdUserGroupHandler) HandleCloseFormAdd(c echo.Context) error { + dialogAddBodyID := c.FormValue("dialogAddBodyID") + newForm := dev_mdusergroupview.BodyFormUserGroup( + models.CustomTextFieldv2Prm{ + Label: "Kode User Group", + Name: "usergroupcode", + Placeholder: "Kode user group", + Type: "text", ID: "usergroupinputname"}, + models.CustomTextFieldv2Prm{ + Label: "Nama User Group", + Name: "usergroupname", + Placeholder: "Nama user group", + Type: "text", ID: "usergroupinputname"}, + models.CustomTextFieldv2Prm{ + Label: "Kode User Group", + Name: "usergroupid", + Placeholder: "Kode user group", + Type: "hidden", ID: "usergroupinputid"}, + dialogAddBodyID, dev_mdusergroupview.JsHideModal("")) + return utils.View(c, newForm) +} +func (lh *MdUserGroupHandler) HandleAddUserGroup(c echo.Context) error { + + logger, _ := zap.NewProduction() + defer logger.Sync() + + //prm form addusergroup + code := c.FormValue("usergroupcode") + name := c.FormValue("usergroupname") + tableID := c.FormValue("tableID") + paginationID := c.FormValue("paginationID") + searchID := c.FormValue("searchID") + search := c.FormValue("search") + currPagePrm := c.FormValue("currpage" + paginationID) + dialogAddBodyID := c.FormValue("dialogAddBodyID") + dialogAddID := c.FormValue("dialogAddID") + + currPage, err := strconv.Atoi(currPagePrm) + if err != nil { + return err + } + logger.Info("ADD USER GROUP PARAM", + zap.Any("code", code), + zap.Any("nama", name), + zap.Any("tableid", tableID), + zap.Any("search", search), + zap.Any("currpage", currPage), + ) + formValidation := "" + codeValidation := "" + nameValidation := "" + if strings.TrimSpace(code) == "" { + formValidation = "Code user group tidak boleh kosong" + codeValidation = "Code user group tidak boleh kosong" + nameValidation = "" + } + if strings.TrimSpace(name) == "" { + formValidation = "Nama user group tidak boleh kosong" + codeValidation = "" + nameValidation = "Nama user group tidak boleh kosong" + } + if strings.TrimSpace(code) == "" && strings.TrimSpace(name) == "" { + formValidation = "Code dan nama user group tidak boleh kosong" + codeValidation = "Code user group tidak boleh kosong" + nameValidation = "Nama user group tidak boleh kosong" + + } + + if formValidation != "" || codeValidation != "" || nameValidation != "" { + newForm := dev_mdusergroupview.BodyFormUserGroup( + models.CustomTextFieldv2Prm{ + Label: "Kode User Group", + Name: "usergroupcode", + Placeholder: "Kode user group", + ErrorMsg: codeValidation, + Value: code, + Type: "text"}, + models.CustomTextFieldv2Prm{ + Label: "Nama User Group", + Name: "usergroupname", + Placeholder: "Nama user group", + ErrorMsg: nameValidation, + Value: name, + Type: "text"}, + models.CustomTextFieldv2Prm{ + Label: "Kode User Group", + Name: "usergroupid", + Placeholder: "Kode user group", + Type: "hidden", ID: "usergroupinputid"}, + dialogAddBodyID, dev_mdusergroupview.JsHideModal("")) + return utils.ViewMulti(c, []templ.Component{customtoastv2.CustomToastV2Show("Warning", formValidation, "warning"), newForm}) + } + //Add user group service + dataUserGroup, err := lh.MdUserGroupServices.AddMdUserGroup(code, name) + if err != nil { + logger.Info("Error", + zap.Any("Error", err), + zap.Any("code", code), + zap.Any("name", name), + ) + newForm := dev_mdusergroupview.BodyFormUserGroup( + models.CustomTextFieldv2Prm{ + Label: "Kode User Group", + Name: "usergroupcode", + Placeholder: "Kode user group", + ErrorMsg: codeValidation, + Value: code, + Type: "text"}, + models.CustomTextFieldv2Prm{ + Label: "Nama User Group", + Name: "usergroupname", + Placeholder: "Nama user group", + ErrorMsg: nameValidation, + Value: name, + Type: "text"}, + models.CustomTextFieldv2Prm{ + Label: "Kode User Group", + Name: "usergroupid", + Placeholder: "Kode user group", + Type: "hidden", ID: "usergroupinputid"}, + dialogAddBodyID, dev_mdusergroupview.JsHideModal("")) + return utils.ViewMulti(c, []templ.Component{ + customtoastv2.CustomToastV2Show("Error", err.Error(), "danger"), + newForm}) + + } + logger.Info("ADD USER GROUP", + zap.Any("return", dataUserGroup), + zap.Any("code", code), + zap.Any("name", name), + ) + //get list user group for table + dataUserGroupList, totalPage, err := lh.MdUserGroupServices.GetListMdUserGroup(search, currPage, 5) + if err != nil { + defer logger.Sync() + logger.Info("ERROR GET USER GROUP", + zap.Any("error", err), + ) + fmt.Println(dataUserGroup) + return err + } + //table component + tableComponent := dev_mdusergroupview.TableUserGroup(dataUserGroupList, tableID) + + //pagination component + //Pagination + userGroupPaginationComponent := pagination.PaginationV2( + totalPage, + currPage, + "/dev/usergroupv2/changepage", + paginationID, + "#tableID, #searchID, #"+searchID+", #paginationID", + "#"+paginationID, + "outerHTML", "", "true", + ) + + newForm := dev_mdusergroupview.BodyFormUserGroup( + models.CustomTextFieldv2Prm{ + Label: "Kode User Group", + Name: "usergroupcode", + Placeholder: "Kode user group", + ErrorMsg: codeValidation, + Type: "text"}, + models.CustomTextFieldv2Prm{ + Label: "Nama User Group", + Name: "usergroupname", + Placeholder: "Nama user group", + ErrorMsg: nameValidation, + Type: "text"}, + models.CustomTextFieldv2Prm{ + Label: "Kode User Group", + Name: "usergroupid", + Placeholder: "Kode user group", + Type: "hidden", ID: "usergroupinputid"}, + dialogAddBodyID, dev_mdusergroupview.JsHideModal("#"+dialogAddID)) + toastSuccess := customtoastv2.CustomToastV2Show("Success", "Berhasil insert User group "+name, "success") + + return utils.ViewMulti(c, []templ.Component{ + toastSuccess, + tableComponent, + userGroupPaginationComponent, + newForm}) +} diff --git a/handlers/routes.go b/handlers/routes.go index 4ab01fb..d294e5b 100644 --- a/handlers/routes.go +++ b/handlers/routes.go @@ -218,5 +218,7 @@ func SetupRoutesDev(app *echo.Echo, appStore db.AppStore) { dev.GET("/usergroupv2", devMdUserGroupHandlers.HandleShowMdUserGroupScreen) dev.GET("/usergroupv2/filter", devMdUserGroupHandlers.HandleFilterMdUserGroup) dev.GET("/usergroupv2/changepage", devMdUserGroupHandlers.HandleChangePageMdUserGroup) + dev.POST("/usergroupv2/closeaddform", devMdUserGroupHandlers.HandleCloseFormAdd) + dev.POST("/usergroupv2/add", devMdUserGroupHandlers.HandleAddUserGroup) } diff --git a/views/dev/mdusergroup/mdusergroup.templ b/views/dev/mdusergroup/mdusergroup.templ index bb52f41..c8279b8 100644 --- a/views/dev/mdusergroup/mdusergroup.templ +++ b/views/dev/mdusergroup/mdusergroup.templ @@ -10,10 +10,13 @@ templ MdUserGroupScreen( tableID string, paginationID string, searchID string, + dialogAddID string, + dialogAddBodyID string, breadcrumb templ.Component, tablecontent templ.Component, filterComponent templ.Component, - paginationComponent templ.Component) { + paginationComponent templ.Component, + modalAddForm templ.Component) {
@customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "tableID", Name: "tableID", @@ -27,6 +30,14 @@ templ MdUserGroupScreen( Name: "searchID", Type: "hidden", Value: searchID}) + @customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "dialogAddID", + Name: "dialogAddID", + Type: "hidden", + Value: dialogAddID}) + @customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "dialogAddBodyID", + Name: "dialogAddBodyID", + Type: "hidden", + Value: dialogAddBodyID})
@breadcrumb @@ -38,6 +49,7 @@ templ MdUserGroupScreen( type="button" class="btn btn-primary" data-toggle="modal" + data-target={ "#" + dialogAddID } >Add New
@@ -46,12 +58,14 @@ templ MdUserGroupScreen( type="button" class="btn btn-primary btn-block" data-toggle="modal" + data-target={ "#" + dialogAddID } >Add New
@filterComponent @tablecontent @paginationComponent + @modalAddForm } diff --git a/views/dev/mdusergroup/mdusergroup_templ.go b/views/dev/mdusergroup/mdusergroup_templ.go index 664f02c..a27638b 100644 --- a/views/dev/mdusergroup/mdusergroup_templ.go +++ b/views/dev/mdusergroup/mdusergroup_templ.go @@ -20,10 +20,13 @@ func MdUserGroupScreen( tableID string, paginationID string, searchID string, + dialogAddID string, + dialogAddBodyID string, breadcrumb templ.Component, tablecontent templ.Component, filterComponent templ.Component, - paginationComponent templ.Component) templ.Component { + paginationComponent templ.Component, + modalAddForm 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 { @@ -61,6 +64,20 @@ func MdUserGroupScreen( if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } + templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "dialogAddID", + Name: "dialogAddID", + Type: "hidden", + Value: dialogAddID}).Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "dialogAddBodyID", + Name: "dialogAddBodyID", + Type: "hidden", + Value: dialogAddBodyID}).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 @@ -69,7 +86,33 @@ func MdUserGroupScreen( if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -85,6 +128,10 @@ func MdUserGroupScreen( if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } + templ_7745c5c3_Err = modalAddForm.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 @@ -104,9 +151,9 @@ func CssMdUserGroup() templ.Component { defer templ.ReleaseBuffer(templ_7745c5c3_Buffer) } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var2 := templ.GetChildren(ctx) - if templ_7745c5c3_Var2 == nil { - templ_7745c5c3_Var2 = templ.NopComponent + templ_7745c5c3_Var4 := templ.GetChildren(ctx) + if templ_7745c5c3_Var4 == nil { + templ_7745c5c3_Var4 = templ.NopComponent } ctx = templ.ClearChildren(ctx) _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") @@ -128,9 +175,9 @@ func JsMdUserGroup() templ.Component { defer templ.ReleaseBuffer(templ_7745c5c3_Buffer) } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var3 := templ.GetChildren(ctx) - if templ_7745c5c3_Var3 == nil { - templ_7745c5c3_Var3 = templ.NopComponent + templ_7745c5c3_Var5 := templ.GetChildren(ctx) + if templ_7745c5c3_Var5 == nil { + templ_7745c5c3_Var5 = templ.NopComponent } ctx = templ.ClearChildren(ctx) if !templ_7745c5c3_IsBuffer { @@ -151,12 +198,12 @@ func ShowMdUserGroupScreen(title string, cmp templ.Component, css templ.Componen defer templ.ReleaseBuffer(templ_7745c5c3_Buffer) } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var4 := templ.GetChildren(ctx) - if templ_7745c5c3_Var4 == nil { - templ_7745c5c3_Var4 = templ.NopComponent + templ_7745c5c3_Var6 := templ.GetChildren(ctx) + if templ_7745c5c3_Var6 == nil { + templ_7745c5c3_Var6 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var5 := templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var7 := 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() @@ -171,7 +218,7 @@ func ShowMdUserGroupScreen(title string, cmp templ.Component, css templ.Componen } return templ_7745c5c3_Err }) - templ_7745c5c3_Err = layout.CorporateLayout(title, css, js, navbarmenu, navbaruser, userprofile).Render(templ.WithChildren(ctx, templ_7745c5c3_Var5), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = layout.CorporateLayout(title, css, js, navbarmenu, navbaruser, userprofile).Render(templ.WithChildren(ctx, templ_7745c5c3_Var7), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } diff --git a/views/dev/mdusergroup/mdusergroupformmodal.templ b/views/dev/mdusergroup/mdusergroupformmodal.templ new file mode 100644 index 0000000..2de8fbc --- /dev/null +++ b/views/dev/mdusergroup/mdusergroupformmodal.templ @@ -0,0 +1,107 @@ +package dev_mdusergroupview + +import "cpone/models" +import "cpone/component/modal" +import "cpone/component/customtextfield" + +templ UserGroupForm(data models.UserGroupFormComponent) { +
+
+ @modalcomponent.Modal(data.ModalID, + data.ModalTitle, + data.DialogBody, + data.DialogAction, + data.ButtonCLose) +
+
+} + +script HandleFormBeforeRequest() { + console.log("handle disable btn add"); + const boxes = document.querySelectorAll('.btnaddact'); + + for (let i = 0; i < boxes.length; i++) { + boxes[i].setAttribute('disabled', 'true'); + + } +} + +script HandleFormAfterRequest() { + console.log("handle enable btn add"); + + const boxes = document.querySelectorAll('.btnaddact'); + + for (let i = 0; i < boxes.length; i++) { + boxes[i].removeAttribute('disabled'); + + } +} + +templ BodyFormUserGroup(inputId models.CustomTextFieldv2Prm, + inputCode models.CustomTextFieldv2Prm, + inputName models.CustomTextFieldv2Prm, + componentID string, + hxOnLoad templ.ComponentScript) { +
+ @customtextfield.CustomTextFieldv2( + inputId) + @customtextfield.CustomTextFieldv2( + inputCode) + @customtextfield.CustomTextFieldv2( + inputName) +
+} + +script JsHideModal(modalID string) { + $(modalID).modal('hide') +} + +script JsShowModal(modalID string) { + $(modalID).modal('show') +} + +templ ActionFormUserGroup(LinkClose string, targetClose string, hxSwapClose string, modalID string) { +
+ + +
+} + +templ BtnCloseFormUserGroup(LinkClose string, targetClose string, hxSwapClose string, modalID string) { + +} diff --git a/views/dev/mdusergroup/mdusergroupformmodal_templ.go b/views/dev/mdusergroup/mdusergroupformmodal_templ.go new file mode 100644 index 0000000..fbc7db5 --- /dev/null +++ b/views/dev/mdusergroup/mdusergroupformmodal_templ.go @@ -0,0 +1,424 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.2.663 +package dev_mdusergroupview + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import "context" +import "io" +import "bytes" + +import "cpone/models" +import "cpone/component/modal" +import "cpone/component/customtextfield" + +func UserGroupForm(data models.UserGroupFormComponent) 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_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, HandleFormBeforeRequest(), HandleFormAfterRequest()) + 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 + } + templ_7745c5c3_Err = modalcomponent.Modal(data.ModalID, + data.ModalTitle, + data.DialogBody, + data.DialogAction, + data.ButtonCLose).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 + } + if !templ_7745c5c3_IsBuffer { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W) + } + return templ_7745c5c3_Err + }) +} + +func HandleFormBeforeRequest() templ.ComponentScript { + return templ.ComponentScript{ + Name: `__templ_HandleFormBeforeRequest_1e3f`, + Function: `function __templ_HandleFormBeforeRequest_1e3f(){console.log("handle disable btn add"); + const boxes = document.querySelectorAll('.btnaddact'); + + for (let i = 0; i < boxes.length; i++) { + boxes[i].setAttribute('disabled', 'true'); + + } +}`, + Call: templ.SafeScript(`__templ_HandleFormBeforeRequest_1e3f`), + CallInline: templ.SafeScriptInline(`__templ_HandleFormBeforeRequest_1e3f`), + } +} + +func HandleFormAfterRequest() templ.ComponentScript { + return templ.ComponentScript{ + Name: `__templ_HandleFormAfterRequest_ee07`, + Function: `function __templ_HandleFormAfterRequest_ee07(){console.log("handle enable btn add"); + + const boxes = document.querySelectorAll('.btnaddact'); + + for (let i = 0; i < boxes.length; i++) { + boxes[i].removeAttribute('disabled'); + + } +}`, + Call: templ.SafeScript(`__templ_HandleFormAfterRequest_ee07`), + CallInline: templ.SafeScriptInline(`__templ_HandleFormAfterRequest_ee07`), + } +} + +func BodyFormUserGroup(inputId models.CustomTextFieldv2Prm, + inputCode models.CustomTextFieldv2Prm, + inputName models.CustomTextFieldv2Prm, + componentID string, + hxOnLoad templ.ComponentScript) 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_Var9 := templ.GetChildren(ctx) + if templ_7745c5c3_Var9 == nil { + templ_7745c5c3_Var9 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, hxOnLoad) + 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 + } + templ_7745c5c3_Err = customtextfield.CustomTextFieldv2( + inputId).Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = customtextfield.CustomTextFieldv2( + inputCode).Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = customtextfield.CustomTextFieldv2( + inputName).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 + } + if !templ_7745c5c3_IsBuffer { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W) + } + return templ_7745c5c3_Err + }) +} + +func JsHideModal(modalID string) templ.ComponentScript { + return templ.ComponentScript{ + Name: `__templ_JsHideModal_da6c`, + Function: `function __templ_JsHideModal_da6c(modalID){$(modalID).modal('hide') +}`, + Call: templ.SafeScript(`__templ_JsHideModal_da6c`, modalID), + CallInline: templ.SafeScriptInline(`__templ_JsHideModal_da6c`, modalID), + } +} + +func JsShowModal(modalID string) templ.ComponentScript { + return templ.ComponentScript{ + Name: `__templ_JsShowModal_3147`, + Function: `function __templ_JsShowModal_3147(modalID){$(modalID).modal('show') +}`, + Call: templ.SafeScript(`__templ_JsShowModal_3147`, modalID), + CallInline: templ.SafeScriptInline(`__templ_JsShowModal_3147`, modalID), + } +} + +func ActionFormUserGroup(LinkClose string, targetClose string, hxSwapClose string, modalID string) 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_Var12 := templ.GetChildren(ctx) + if templ_7745c5c3_Var12 == nil { + templ_7745c5c3_Var12 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, JsHideModal(modalID)) + 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 + } + if !templ_7745c5c3_IsBuffer { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W) + } + return templ_7745c5c3_Err + }) +} + +func BtnCloseFormUserGroup(LinkClose string, targetClose string, hxSwapClose string, modalID string) 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_Var17 := templ.GetChildren(ctx) + if templ_7745c5c3_Var17 == nil { + templ_7745c5c3_Var17 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, JsHideModal(modalID)) + 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 + } + if !templ_7745c5c3_IsBuffer { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W) + } + return templ_7745c5c3_Err + }) +} From 4c12c45aa8048e1a8e26e18cd65cbb6456597955 Mon Sep 17 00:00:00 2001 From: Sas Andy Date: Wed, 22 May 2024 14:00:17 +0700 Subject: [PATCH 06/14] open and close edit form --- handlers/dev/md.usergroup.handlers.go | 179 ++++++++++++++++-- handlers/routes.go | 12 +- views/dev/mdusergroup/mdusergroup.templ | 14 +- views/dev/mdusergroup/mdusergroup_templ.go | 31 ++- views/dev/mdusergroup/mdusergrouptable.templ | 59 +++++- .../dev/mdusergroup/mdusergrouptable_templ.go | 126 +++++++++++- 6 files changed, 385 insertions(+), 36 deletions(-) diff --git a/handlers/dev/md.usergroup.handlers.go b/handlers/dev/md.usergroup.handlers.go index 5fca14b..d3a98e2 100644 --- a/handlers/dev/md.usergroup.handlers.go +++ b/handlers/dev/md.usergroup.handlers.go @@ -48,6 +48,10 @@ func (lh *MdUserGroupHandler) HandleShowMdUserGroupScreen(c echo.Context) error 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) @@ -108,21 +112,28 @@ func (lh *MdUserGroupHandler) HandleShowMdUserGroupScreen(c echo.Context) error fmt.Println(dataUserGroup) return err } - tableComponent := dev_mdusergroupview.TableUserGroup(dataUserGroup, tableID) + + tableComponent := dev_mdusergroupview.TableUserGroup(dataUserGroup, + tableID, + "/dev/md/usergroupv2/openedit", + "#"+dialogEditBodyID, + "outerHTML", + "#dialogEditBodyID, #dialogEditID", + ) //filter user group component usergroupFilterComponent := customtextfieldsearch.MainCustomTextFieldSearchV2(searchID, "search", "Cari Kode/Nama", "text", - "/dev/usergroupv2/filter", + "/dev/md/usergroupv2/filter", "input changed delay:500ms, search", "#"+paginationID, "", "", "outerHTML", "#tableID, #paginationID, #searchID") //Pagination userGroupPaginationComponent := pagination.PaginationV2( totalPage, 1, - "/dev/usergroupv2/changepage", + "/dev/md/usergroupv2/changepage", paginationID, "#tableID, #searchID, #"+searchID+", #paginationID", "#"+paginationID, @@ -148,19 +159,19 @@ func (lh *MdUserGroupHandler) HandleShowMdUserGroupScreen(c echo.Context) error Type: "hidden", ID: "usergroupinputid"}, dialogAddBodyID, dev_mdusergroupview.JsHideModal("")) modalActioAddCmp := dev_mdusergroupview.ActionFormUserGroup( - "/dev/usergroupv2/closeaddform", + "/dev/md/usergroupv2/closeaddform", "#"+dialogAddBodyID, "outerHTML", "#"+dialogAddID) btnCloaseModalAdd := dev_mdusergroupview.BtnCloseFormUserGroup( - "/dev/usergroupv2/closeaddform", + "/dev/md/usergroupv2/closeaddform", "#"+dialogAddBodyID, "outerHTML", "#"+dialogAddID) modalAddFormComponent := dev_mdusergroupview.UserGroupForm( models.UserGroupFormComponent{ IDComponent: "formusergroup", - Link: "/dev/usergroupv2/add", + Link: "/dev/md/usergroupv2/add", HxTarget: "#" + dialogAddBodyID, HxSwap: "outerHTML", HxInclude: "#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #" + searchID + ", #currpage" + paginationID, @@ -172,6 +183,49 @@ func (lh *MdUserGroupHandler) HandleShowMdUserGroupScreen(c echo.Context) error }, ) + //modal edit form + dialogEditBodyCmp := dev_mdusergroupview.BodyFormUserGroup( + models.CustomTextFieldv2Prm{ + Label: "Kode User Group", + Name: "usergroupcode", + Placeholder: "Kode user group", + Type: "text", ID: "usergroupinputname"}, + models.CustomTextFieldv2Prm{ + Label: "Nama User Group", + Name: "usergroupname", + Placeholder: "Nama user group", + Type: "text", ID: "usergroupinputname"}, + models.CustomTextFieldv2Prm{ + Label: "Kode User Group", + Name: "usergroupid", + Placeholder: "Kode user group", + Type: "hidden", ID: "usergroupinputid"}, + dialogEditBodyID, dev_mdusergroupview.JsHideModal("")) + modalActioEditCmp := dev_mdusergroupview.ActionFormUserGroup( + "/dev/md/usergroupv2/closeeditform", + "#"+dialogEditBodyID, + "outerHTML", + "#"+dialogEditID) + btnCloaseModalEdit := dev_mdusergroupview.BtnCloseFormUserGroup( + "/dev/md/usergroupv2/closeeditform", + "#"+dialogEditBodyID, + "outerHTML", + "#"+dialogEditID) + modalEditFormComponent := dev_mdusergroupview.UserGroupForm( + models.UserGroupFormComponent{ + IDComponent: "formusergroup", + Link: "", + HxTarget: "#" + dialogEditBodyID, + HxSwap: "outerHTML", + HxInclude: "#tableID, #paginationID, #searchID, #dialogEditBodyID, #dialogEditID, #" + searchID + ", #currpage" + paginationID, + ModalID: dialogEditID, + ModalTitle: "New-User Group", + DialogBody: dialogEditBodyCmp, + DialogAction: modalActioEditCmp, + ButtonCLose: btnCloaseModalEdit, + }, + ) + //content js & css content := dev_mdusergroupview.MdUserGroupScreen( tableID, @@ -179,15 +233,24 @@ func (lh *MdUserGroupHandler) HandleShowMdUserGroupScreen(c echo.Context) error searchID, dialogAddID, dialogAddBodyID, + dialogEditID, + dialogEditBodyID, breadcrumbComponent, tableComponent, usergroupFilterComponent, userGroupPaginationComponent, - modalAddFormComponent) + modalAddFormComponent, + modalEditFormComponent) css := dev_mdusergroupview.CssMdUserGroup() js := dev_mdusergroupview.JsMdUserGroup() - view := dev_mdusergroupview.ShowMdUserGroupScreen(title, content, css, js, navbarmenuComponent, navbaruserComponent, sidebaruserprofileComponent) + view := dev_mdusergroupview.ShowMdUserGroupScreen(title, + content, + css, + js, + navbarmenuComponent, + navbaruserComponent, + sidebaruserprofileComponent) return utils.View(c, view) } func (lh *MdUserGroupHandler) HandleFilterMdUserGroup(c echo.Context) error { @@ -195,6 +258,7 @@ func (lh *MdUserGroupHandler) HandleFilterMdUserGroup(c echo.Context) error { searchID := c.QueryParam("searchID") tableID := c.QueryParam("tableID") paginationID := c.QueryParam("paginationID") + dialogEditBodyID := c.QueryParam("dialogEditBodyID") var retval []templ.Component logger, _ := zap.NewProduction() @@ -207,11 +271,16 @@ func (lh *MdUserGroupHandler) HandleFilterMdUserGroup(c echo.Context) error { fmt.Println(dataUserGroup) return err } - tableComponent := dev_mdusergroupview.TableUserGroup(dataUserGroup, tableID) + tableComponent := dev_mdusergroupview.TableUserGroup(dataUserGroup, + tableID, + "", + "#"+dialogEditBodyID, + "outerHTML", + "#dialogEditBodyID, #dialogEditID") userGroupPaginationComponent := pagination.PaginationV2( totalpage, 1, - "/dev/usergroupv2/changepage", + "/dev/md/usergroupv2/changepage", paginationID, "#tableID, #searchID, #"+searchID+", #paginationID", "#"+paginationID, @@ -227,6 +296,7 @@ func (lh *MdUserGroupHandler) HandleChangePageMdUserGroup(c echo.Context) error tableID := c.QueryParam("tableID") searchID := c.QueryParam("searchID") paginationID := c.QueryParam("paginationID") + dialogEditBodyID := c.QueryParam("dialogEditBodyID") var retval []templ.Component logger, _ := zap.NewProduction() page, err := strconv.Atoi(pageparam) @@ -247,11 +317,17 @@ func (lh *MdUserGroupHandler) HandleChangePageMdUserGroup(c echo.Context) error fmt.Println(dataUserGroup) return err } - tableComponent := dev_mdusergroupview.TableUserGroup(dataUserGroup, tableID) + tableComponent := dev_mdusergroupview.TableUserGroup(dataUserGroup, + tableID, + "", + "#"+dialogEditBodyID, + "outerHTML", + "#dialogEditBodyID, #dialogEditID", + ) userGroupPaginationComponent := pagination.PaginationV2( totalpage, page, - "/dev/usergroupv2/changepage", + "/dev/md/usergroupv2/changepage", paginationID, "#tableID, #searchID, #"+searchID+", #paginationID", "#"+paginationID, @@ -297,6 +373,7 @@ func (lh *MdUserGroupHandler) HandleAddUserGroup(c echo.Context) error { currPagePrm := c.FormValue("currpage" + paginationID) dialogAddBodyID := c.FormValue("dialogAddBodyID") dialogAddID := c.FormValue("dialogAddID") + dialogEditBodyID := c.FormValue("dialogEditBodyID") currPage, err := strconv.Atoi(currPagePrm) if err != nil { @@ -403,14 +480,19 @@ func (lh *MdUserGroupHandler) HandleAddUserGroup(c echo.Context) error { return err } //table component - tableComponent := dev_mdusergroupview.TableUserGroup(dataUserGroupList, tableID) + tableComponent := dev_mdusergroupview.TableUserGroup(dataUserGroupList, + tableID, + "", + "#"+dialogEditBodyID, + "outerHTML", + "#dialogEditBodyID, #dialogEditID") //pagination component //Pagination userGroupPaginationComponent := pagination.PaginationV2( totalPage, currPage, - "/dev/usergroupv2/changepage", + "/dev/md/usergroupv2/changepage", paginationID, "#tableID, #searchID, #"+searchID+", #paginationID", "#"+paginationID, @@ -444,3 +526,72 @@ func (lh *MdUserGroupHandler) HandleAddUserGroup(c echo.Context) error { userGroupPaginationComponent, newForm}) } +func (lh *MdUserGroupHandler) HandleOpenEditForm(c echo.Context) error { + id := c.QueryParam("id") + dialogEditID := c.QueryParam("dialogEditID") + dialogEditBodyID := c.QueryParam("dialogEditBodyID") + + dataUserGroup, err := lh.MdUserGroupServices.GetMdUserGroupByID(id) + if err != nil { + newForm := dev_mdusergroupview.BodyFormUserGroup( + models.CustomTextFieldv2Prm{ + Label: "Kode User Group", + Name: "usergroupcode", + Placeholder: "Kode user group", + Type: "text", ID: "usergroupinputname"}, + models.CustomTextFieldv2Prm{ + Label: "Nama User Group", + Name: "usergroupname", + Placeholder: "Nama user group", + Type: "text", ID: "usergroupinputname"}, + models.CustomTextFieldv2Prm{ + Label: "Kode User Group", + Name: "usergroupid", + Placeholder: "Kode user group", + Type: "hidden", ID: "usergroupinputid"}, + dialogEditBodyID, dev_mdusergroupview.JsHideModal("")) + return utils.ViewMulti(c, []templ.Component{customtoastv2.CustomToastV2Show("Error", "Get user group error", "danger"), newForm}) + } + newForm := dev_mdusergroupview.BodyFormUserGroup( + models.CustomTextFieldv2Prm{ + Label: "Kode User Group", + Name: "usergroupcode", + Placeholder: "Kode user group", + Value: dataUserGroup.M_UserGroupCode, + Type: "text", ID: "usergroupinputname"}, + models.CustomTextFieldv2Prm{ + Label: "Nama User Group", + Name: "usergroupname", + Placeholder: "Nama user group", + Value: dataUserGroup.M_UserGroupName, + Type: "text", ID: "usergroupinputname"}, + models.CustomTextFieldv2Prm{ + Label: "Kode User Group", + Name: "usergroupid", + Placeholder: "Kode user group", + Value: id, + Type: "hidden", ID: "usergroupinputid"}, + dialogEditBodyID, dev_mdusergroupview.JsShowModal("#"+dialogEditID)) + return utils.View(c, newForm) +} +func (lh *MdUserGroupHandler) HandleCloseFormEdit(c echo.Context) error { + dialogEditBodyID := c.FormValue("dialogEditBodyID") + newForm := dev_mdusergroupview.BodyFormUserGroup( + models.CustomTextFieldv2Prm{ + Label: "Kode User Group", + Name: "usergroupcode", + Placeholder: "Kode user group", + Type: "text", ID: "usergroupinputname"}, + models.CustomTextFieldv2Prm{ + Label: "Nama User Group", + Name: "usergroupname", + Placeholder: "Nama user group", + Type: "text", ID: "usergroupinputname"}, + models.CustomTextFieldv2Prm{ + Label: "Kode User Group", + Name: "usergroupid", + Placeholder: "Kode user group", + Type: "hidden", ID: "usergroupinputid"}, + dialogEditBodyID, dev_mdusergroupview.JsHideModal("")) + return utils.View(c, newForm) +} diff --git a/handlers/routes.go b/handlers/routes.go index d294e5b..5675f99 100644 --- a/handlers/routes.go +++ b/handlers/routes.go @@ -215,10 +215,12 @@ func SetupRoutesDev(app *echo.Echo, appStore db.AppStore) { //New User Group 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) - dev.POST("/usergroupv2/closeaddform", devMdUserGroupHandlers.HandleCloseFormAdd) - dev.POST("/usergroupv2/add", devMdUserGroupHandlers.HandleAddUserGroup) + dev.GET("/md/usergroupv2", devMdUserGroupHandlers.HandleShowMdUserGroupScreen) + dev.GET("/md/usergroupv2/filter", devMdUserGroupHandlers.HandleFilterMdUserGroup) + dev.GET("/md/usergroupv2/changepage", devMdUserGroupHandlers.HandleChangePageMdUserGroup) + dev.POST("/md/usergroupv2/closeaddform", devMdUserGroupHandlers.HandleCloseFormAdd) + dev.POST("/md/usergroupv2/closeeditform", devMdUserGroupHandlers.HandleCloseFormEdit) + dev.POST("/md/usergroupv2/add", devMdUserGroupHandlers.HandleAddUserGroup) + dev.GET("/md/usergroupv2/openedit", devMdUserGroupHandlers.HandleOpenEditForm) } diff --git a/views/dev/mdusergroup/mdusergroup.templ b/views/dev/mdusergroup/mdusergroup.templ index c8279b8..b39e4cd 100644 --- a/views/dev/mdusergroup/mdusergroup.templ +++ b/views/dev/mdusergroup/mdusergroup.templ @@ -12,11 +12,14 @@ templ MdUserGroupScreen( searchID string, dialogAddID string, dialogAddBodyID string, + dialogEditID string, + dialogEditBodyID string, breadcrumb templ.Component, tablecontent templ.Component, filterComponent templ.Component, paginationComponent templ.Component, - modalAddForm templ.Component) { + modalAddForm templ.Component, + modalEditForm templ.Component) {
@customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "tableID", Name: "tableID", @@ -38,6 +41,14 @@ templ MdUserGroupScreen( Name: "dialogAddBodyID", Type: "hidden", Value: dialogAddBodyID}) + @customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "dialogEditID", + Name: "dialogEditID", + Type: "hidden", + Value: dialogEditID}) + @customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "dialogEditBodyID", + Name: "dialogEditBodyID", + Type: "hidden", + Value: dialogEditBodyID})
@breadcrumb @@ -66,6 +77,7 @@ templ MdUserGroupScreen( @tablecontent @paginationComponent @modalAddForm + @modalEditForm
} diff --git a/views/dev/mdusergroup/mdusergroup_templ.go b/views/dev/mdusergroup/mdusergroup_templ.go index a27638b..6679a61 100644 --- a/views/dev/mdusergroup/mdusergroup_templ.go +++ b/views/dev/mdusergroup/mdusergroup_templ.go @@ -22,11 +22,14 @@ func MdUserGroupScreen( searchID string, dialogAddID string, dialogAddBodyID string, + dialogEditID string, + dialogEditBodyID string, breadcrumb templ.Component, tablecontent templ.Component, filterComponent templ.Component, paginationComponent templ.Component, - modalAddForm templ.Component) templ.Component { + modalAddForm templ.Component, + modalEditForm 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 { @@ -78,6 +81,20 @@ func MdUserGroupScreen( if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } + templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "dialogEditID", + Name: "dialogEditID", + Type: "hidden", + Value: dialogEditID}).Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "dialogEditBodyID", + Name: "dialogEditBodyID", + Type: "hidden", + Value: dialogEditBodyID}).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 @@ -86,27 +103,27 @@ func MdUserGroupScreen( if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
} @@ -105,3 +105,53 @@ templ BtnCloseFormUserGroup(LinkClose string, targetClose string, hxSwapClose st } + +templ DeleteConfirmationBody(inputId models.CustomTextFieldv2Prm, + componentID string, + message string, + datHeader []string, + dataText []string, + hxOnLoad templ.ComponentScript) { +
+

{ message }

+
+
+
+ for _, v := range datHeader { +
{ v }
+ } +
+
+ for _, v := range dataText { +
+ { v } +
+ } +
+
+
+ @customtextfield.CustomTextFieldv2(inputId) +
+} + +templ ActionFormUserGroupDelete(LinkClose string, targetClose string, hxSwapClose string, modalID string) { +
+ + +
+} diff --git a/views/dev/mdusergroup/mdusergroupformmodal_templ.go b/views/dev/mdusergroup/mdusergroupformmodal_templ.go index fbc7db5..9b47d79 100644 --- a/views/dev/mdusergroup/mdusergroupformmodal_templ.go +++ b/views/dev/mdusergroup/mdusergroupformmodal_templ.go @@ -336,7 +336,7 @@ func ActionFormUserGroup(LinkClose string, targetClose string, hxSwapClose strin if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" type=\"button\" class=\"btn btn-outline-secondary font-weight-bolder rounded-lg mr-4 btnaddact\" data-dismiss=\"modal\">Batal\r
") + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" type=\"button\" class=\"btn btn-outline-secondary font-weight-bolder rounded-lg mr-4 btnaddact\" data-dismiss=\"modal\">Batal\r
") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -422,3 +422,205 @@ func BtnCloseFormUserGroup(LinkClose string, targetClose string, hxSwapClose str return templ_7745c5c3_Err }) } + +func DeleteConfirmationBody(inputId models.CustomTextFieldv2Prm, + componentID string, + message string, + datHeader []string, + dataText []string, + hxOnLoad templ.ComponentScript) 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_Var22 := templ.GetChildren(ctx) + if templ_7745c5c3_Var22 == nil { + templ_7745c5c3_Var22 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, hxOnLoad) + 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 + } + var templ_7745c5c3_Var25 string + templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.JoinStringErrs(message) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 116, Col: 14} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var25)) + 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 + } + for _, v := range datHeader { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var26 string + templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.JoinStringErrs(v) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 121, Col: 68} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var26)) + 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 + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + for _, v := range dataText { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var27 string + templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.JoinStringErrs(v) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 127, Col: 10} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var27)) + 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 + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(inputId).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 + } + if !templ_7745c5c3_IsBuffer { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W) + } + return templ_7745c5c3_Err + }) +} + +func ActionFormUserGroupDelete(LinkClose string, targetClose string, hxSwapClose string, modalID string) 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_Var28 := templ.GetChildren(ctx) + if templ_7745c5c3_Var28 == nil { + templ_7745c5c3_Var28 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, JsHideModal(modalID)) + 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 + } + if !templ_7745c5c3_IsBuffer { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W) + } + return templ_7745c5c3_Err + }) +} diff --git a/views/dev/mdusergroup/mdusergrouptable.templ b/views/dev/mdusergroup/mdusergrouptable.templ index 449c074..64b2bea 100644 --- a/views/dev/mdusergroup/mdusergrouptable.templ +++ b/views/dev/mdusergroup/mdusergrouptable.templ @@ -10,6 +10,10 @@ templ TableUserGroup(data []models.UserGroupV1, hxTargetEdit string, hxSwapEdit string, hxIncludeEdit string, + hxGetDelete string, + hxTargetDelete string, + hxSwapDelete string, + hxIncludeDelete string, ) {
@tablecomponent.TableV3([]string{"KODE", "USERGROUP", "AKSI"}, @@ -19,6 +23,10 @@ templ TableUserGroup(data []models.UserGroupV1, hxTargetEdit, hxSwapEdit, hxIncludeEdit, + hxGetDelete, + hxTargetDelete, + hxSwapDelete, + hxIncludeDelete, ))
} @@ -28,6 +36,10 @@ templ RowUserGroup(data []models.UserGroupV1, hxTargetEdit string, hxSwapEdit string, hxIncludeEdit string, + hxGetDelete string, + hxTargetDelete string, + hxSwapDelete string, + hxIncludeDelete string, ) { if len(data) == 0 { @@ -44,6 +56,10 @@ templ RowUserGroup(data []models.UserGroupV1, hxTargetEdit, hxSwapEdit, hxIncludeEdit, + hxGetDelete, + hxTargetDelete, + hxSwapDelete, + hxIncludeDelete, ) @@ -56,6 +72,10 @@ templ TableAction( hxTargetEdit string, hxSwapEdit string, hxIncludeEdit string, + hxGetDelete string, + hxTargetDelete string, + hxSwapDelete string, + hxIncludeDelete string, ) {
@@ -74,6 +94,10 @@ templ TableAction( id="btndeleteug" type="button" class=" btndeleteug col-12 col-sm-12 col-md-12 col-lg-5 col-xl-5 col-xxl-5 btn btn-light-danger mb-2" + hx-get={ hxGetDelete + "?id=" + strconv.Itoa(id) } + hx-target={ hxTargetDelete } + hx-swap={ hxSwapDelete } + hx-include={ hxIncludeDelete } > Hapus diff --git a/views/dev/mdusergroup/mdusergrouptable_templ.go b/views/dev/mdusergroup/mdusergrouptable_templ.go index 84492bc..51c21f6 100644 --- a/views/dev/mdusergroup/mdusergrouptable_templ.go +++ b/views/dev/mdusergroup/mdusergrouptable_templ.go @@ -20,6 +20,10 @@ func TableUserGroup(data []models.UserGroupV1, hxTargetEdit string, hxSwapEdit string, hxIncludeEdit string, + hxGetDelete string, + hxTargetDelete string, + hxSwapDelete string, + hxIncludeDelete string, ) 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) @@ -40,7 +44,7 @@ func TableUserGroup(data []models.UserGroupV1, var templ_7745c5c3_Var2 string templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(tableID) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergrouptable.templ`, Line: 14, Col: 18} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergrouptable.templ`, Line: 18, Col: 18} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2)) if templ_7745c5c3_Err != nil { @@ -57,6 +61,10 @@ func TableUserGroup(data []models.UserGroupV1, hxTargetEdit, hxSwapEdit, hxIncludeEdit, + hxGetDelete, + hxTargetDelete, + hxSwapDelete, + hxIncludeDelete, )).Render(ctx, templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err @@ -77,6 +85,10 @@ func RowUserGroup(data []models.UserGroupV1, hxTargetEdit string, hxSwapEdit string, hxIncludeEdit string, + hxGetDelete string, + hxTargetDelete string, + hxSwapDelete string, + hxIncludeDelete string, ) 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) @@ -104,7 +116,7 @@ func RowUserGroup(data []models.UserGroupV1, var templ_7745c5c3_Var4 string templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(v.M_UserGroupCode) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergrouptable.templ`, Line: 39, Col: 26} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergrouptable.templ`, Line: 51, Col: 26} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4)) if templ_7745c5c3_Err != nil { @@ -117,7 +129,7 @@ func RowUserGroup(data []models.UserGroupV1, var templ_7745c5c3_Var5 string templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(v.M_UserGroupName) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergrouptable.templ`, Line: 40, Col: 26} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergrouptable.templ`, Line: 52, Col: 26} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5)) if templ_7745c5c3_Err != nil { @@ -132,6 +144,10 @@ func RowUserGroup(data []models.UserGroupV1, hxTargetEdit, hxSwapEdit, hxIncludeEdit, + hxGetDelete, + hxTargetDelete, + hxSwapDelete, + hxIncludeDelete, ).Render(ctx, templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err @@ -154,6 +170,10 @@ func TableAction( hxTargetEdit string, hxSwapEdit string, hxIncludeEdit string, + hxGetDelete string, + hxTargetDelete string, + hxSwapDelete string, + hxIncludeDelete string, ) templ.Component { return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) { @@ -175,7 +195,7 @@ func TableAction( var templ_7745c5c3_Var7 string templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(hxGetEdit + "?id=" + strconv.Itoa(id)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergrouptable.templ`, Line: 66, Col: 49} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergrouptable.templ`, Line: 86, Col: 49} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7)) if templ_7745c5c3_Err != nil { @@ -188,7 +208,7 @@ func TableAction( var templ_7745c5c3_Var8 string templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(hxTargetEdit) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergrouptable.templ`, Line: 67, Col: 27} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergrouptable.templ`, Line: 87, Col: 27} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8)) if templ_7745c5c3_Err != nil { @@ -201,7 +221,7 @@ func TableAction( var templ_7745c5c3_Var9 string templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(hxSwapEdit) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergrouptable.templ`, Line: 68, Col: 23} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergrouptable.templ`, Line: 88, Col: 23} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9)) if templ_7745c5c3_Err != nil { @@ -214,13 +234,65 @@ func TableAction( var templ_7745c5c3_Var10 string templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(hxIncludeEdit) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergrouptable.templ`, Line: 69, Col: 29} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergrouptable.templ`, Line: 89, Col: 29} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\">Edit\r Hapus\r
") + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\">Edit\r Hapus\r") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } From 9f2ac201808724b3523a3ee7f6f70416ef14a000 Mon Sep 17 00:00:00 2001 From: Sas Andy Date: Fri, 24 May 2024 10:31:37 +0700 Subject: [PATCH 09/14] handler delete user group --- handlers/dev/md.usergroup.handlers.go | 247 ++++++++++++++++++++++++-- 1 file changed, 231 insertions(+), 16 deletions(-) diff --git a/handlers/dev/md.usergroup.handlers.go b/handlers/dev/md.usergroup.handlers.go index f865f52..312decf 100644 --- a/handlers/dev/md.usergroup.handlers.go +++ b/handlers/dev/md.usergroup.handlers.go @@ -50,8 +50,8 @@ func (lh *MdUserGroupHandler) HandleShowMdUserGroupScreen(c echo.Context) error dialogAddBodyID := utils.GenerateRandomID("dialogaddbodyID") dialogEditID := utils.GenerateRandomID("dialogEditID") dialogEditBodyID := utils.GenerateRandomID("dialogEditbodyID") - // dialogDeleteID := utils.GenerateRandomID("dialogDeleteID") - // dialogDeleteBodyID := utils.GenerateRandomID("dialogDeletebodyID") + dialogDeleteID := utils.GenerateRandomID("dialogDeleteID") + dialogDeleteBodyID := utils.GenerateRandomID("dialogDeletebodyID") dataMenu, err := services.GetMenu() fmt.Println(dataMenu) fmt.Println(err) @@ -118,7 +118,11 @@ func (lh *MdUserGroupHandler) HandleShowMdUserGroupScreen(c echo.Context) error "/dev/md/usergroupv2/openedit", "#"+dialogEditBodyID, "outerHTML", - "#dialogEditBodyID, #dialogEditID", + "#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", + "/dev/md/usergroupv2/opendelete", + "#"+dialogDeleteBodyID, + "outerHTML", + "#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", ) //filter user group component @@ -128,14 +132,14 @@ func (lh *MdUserGroupHandler) HandleShowMdUserGroupScreen(c echo.Context) error "text", "/dev/md/usergroupv2/filter", "input changed delay:500ms, search", - "#"+paginationID, "", "", "outerHTML", "#tableID, #paginationID, #searchID, #dialogEditBodyID, #dialogEditID") + "#"+paginationID, "", "", "outerHTML", "#tableID, #paginationID, #searchID,#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID") //Pagination userGroupPaginationComponent := pagination.PaginationV2( totalPage, 1, "/dev/md/usergroupv2/changepage", paginationID, - "#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID", + "#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", "#"+paginationID, "outerHTML", "", "", ) @@ -225,6 +229,48 @@ func (lh *MdUserGroupHandler) HandleShowMdUserGroupScreen(c echo.Context) error ButtonCLose: btnCloaseModalEdit, }, ) + //modal delete form + dialogDeleteBodyCmp := dev_mdusergroupview.BodyFormUserGroup( + models.CustomTextFieldv2Prm{ + Label: "Kode User Group", + Name: "usergroupcode", + Placeholder: "Kode user group", + Type: "text", ID: "usergroupinputname"}, + models.CustomTextFieldv2Prm{ + Label: "Nama User Group", + Name: "usergroupname", + Placeholder: "Nama user group", + Type: "text", ID: "usergroupinputname"}, + models.CustomTextFieldv2Prm{ + Label: "Kode User Group", + Name: "usergroupid", + Placeholder: "Kode user group", + Type: "hidden", ID: "usergroupinputid"}, + dialogDeleteBodyID, dev_mdusergroupview.JsHideModal("")) + modalActioDeleteCmp := dev_mdusergroupview.ActionFormUserGroupDelete( + "/dev/md/usergroupv2/closedeleteform", + "#"+dialogDeleteBodyID, + "outerHTML", + "#"+dialogDeleteID) + btnCloaseModalDelete := dev_mdusergroupview.BtnCloseFormUserGroup( + "/dev/md/usergroupv2/closedeleteform", + "#"+dialogDeleteBodyID, + "outerHTML", + "#"+dialogDeleteID) + modalDeleteFormComponent := dev_mdusergroupview.UserGroupForm( + models.UserGroupFormComponent{ + IDComponent: "formusergroup", + Link: "/dev/md/usergroupv2/delete", + HxTarget: "#" + dialogDeleteBodyID, + HxSwap: "outerHTML", + HxInclude: "#tableID, #paginationID, #searchID, #dialogDeleteBodyID, #dialogDeleteID, #" + searchID + ", #currpage" + paginationID, + ModalID: dialogDeleteID, + ModalTitle: "New-User Group", + DialogBody: dialogDeleteBodyCmp, + DialogAction: modalActioDeleteCmp, + ButtonCLose: btnCloaseModalDelete, + }, + ) //content js & css content := dev_mdusergroupview.MdUserGroupScreen( @@ -235,12 +281,15 @@ func (lh *MdUserGroupHandler) HandleShowMdUserGroupScreen(c echo.Context) error dialogAddBodyID, dialogEditID, dialogEditBodyID, + dialogDeleteID, + dialogDeleteBodyID, breadcrumbComponent, tableComponent, usergroupFilterComponent, userGroupPaginationComponent, modalAddFormComponent, - modalEditFormComponent) + modalEditFormComponent, + modalDeleteFormComponent) css := dev_mdusergroupview.CssMdUserGroup() js := dev_mdusergroupview.JsMdUserGroup() @@ -259,6 +308,7 @@ func (lh *MdUserGroupHandler) HandleFilterMdUserGroup(c echo.Context) error { tableID := c.QueryParam("tableID") paginationID := c.QueryParam("paginationID") dialogEditBodyID := c.QueryParam("dialogEditBodyID") + dialogDeleteBodyID := c.QueryParam("dialogDeleteBodyID") var retval []templ.Component logger, _ := zap.NewProduction() @@ -276,13 +326,17 @@ func (lh *MdUserGroupHandler) HandleFilterMdUserGroup(c echo.Context) error { "/dev/md/usergroupv2/openedit", "#"+dialogEditBodyID, "outerHTML", - "#dialogEditBodyID, #dialogEditID") + "#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", + "/dev/md/usergroupv2/opendelete", + "#"+dialogDeleteBodyID, + "outerHTML", + "#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID") userGroupPaginationComponent := pagination.PaginationV2( totalpage, 1, "/dev/md/usergroupv2/changepage", paginationID, - "#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID", + "#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", "#"+paginationID, "outerHTML", "", "", ) @@ -297,6 +351,7 @@ func (lh *MdUserGroupHandler) HandleChangePageMdUserGroup(c echo.Context) error 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) @@ -322,14 +377,18 @@ func (lh *MdUserGroupHandler) HandleChangePageMdUserGroup(c echo.Context) error "/dev/md/usergroupv2/openedit", "#"+dialogEditBodyID, "outerHTML", - "#dialogEditBodyID, #dialogEditID", + "#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", + "/dev/md/usergroupv2/opendelete", + "#"+dialogDeleteBodyID, + "outerHTML", + "#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", ) userGroupPaginationComponent := pagination.PaginationV2( totalpage, page, "/dev/md/usergroupv2/changepage", paginationID, - "#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID", + "#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", "#"+paginationID, "outerHTML", "", "", ) @@ -374,6 +433,7 @@ func (lh *MdUserGroupHandler) HandleAddUserGroup(c echo.Context) error { dialogAddBodyID := c.FormValue("dialogAddBodyID") dialogAddID := c.FormValue("dialogAddID") dialogEditBodyID := c.FormValue("dialogEditBodyID") + dialogDeleteBodyID := c.FormValue("dialogDeleteBodyID") currPage, err := strconv.Atoi(currPagePrm) if err != nil { @@ -482,10 +542,14 @@ func (lh *MdUserGroupHandler) HandleAddUserGroup(c echo.Context) error { //table component tableComponent := dev_mdusergroupview.TableUserGroup(dataUserGroupList, tableID, - "", + "/dev/md/usergroupv2/openedit", "#"+dialogEditBodyID, "outerHTML", - "#dialogEditBodyID, #dialogEditID") + "#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", + "/dev/md/usergroupv2/opendelete", + "#"+dialogDeleteBodyID, + "outerHTML", + "#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID") //pagination component //Pagination @@ -494,7 +558,7 @@ func (lh *MdUserGroupHandler) HandleAddUserGroup(c echo.Context) error { currPage, "/dev/md/usergroupv2/changepage", paginationID, - "#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID", + "#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", "#"+paginationID, "outerHTML", "", "true", ) @@ -571,6 +635,7 @@ func (lh *MdUserGroupHandler) HandleOpenEditForm(c echo.Context) error { Placeholder: "Kode user group", Value: strconv.Itoa(dataUserGroup.M_UserGroupID), Type: "hidden", ID: "usergroupinputid"}, + dialogEditBodyID, dev_mdusergroupview.JsShowModal("#"+dialogEditID)) return utils.View(c, newForm) } @@ -612,6 +677,7 @@ func (lh *MdUserGroupHandler) HandleEditUserGroup(c echo.Context) error { // dialogAddBodyID := c.FormValue("dialogAddBodyID") dialogEditID := c.FormValue("dialogEditID") dialogEditBodyID := c.FormValue("dialogEditBodyID") + dialogDeleteBodyID := c.FormValue("dialogDeleteBodyID") currPage, err := strconv.Atoi(currPagePrm) if err != nil { @@ -720,10 +786,14 @@ func (lh *MdUserGroupHandler) HandleEditUserGroup(c echo.Context) error { //table component tableComponent := dev_mdusergroupview.TableUserGroup(dataUserGroupList, tableID, - "", + "/dev/md/usergroupv2/openedit", "#"+dialogEditBodyID, "outerHTML", - "#dialogEditBodyID, #dialogEditID") + "#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", + "/dev/md/usergroupv2/opendelete", + "#"+dialogDeleteBodyID, + "outerHTML", + "#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID") //pagination component //Pagination @@ -732,7 +802,7 @@ func (lh *MdUserGroupHandler) HandleEditUserGroup(c echo.Context) error { currPage, "/dev/md/usergroupv2/changepage", paginationID, - "#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID", + "#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", "#"+paginationID, "outerHTML", "", "true", ) @@ -763,3 +833,148 @@ func (lh *MdUserGroupHandler) HandleEditUserGroup(c echo.Context) error { retVal = append(retVal, newForm) return utils.ViewMulti(c, retVal) } +func (lh *MdUserGroupHandler) HandleOpenDeleteForm(c echo.Context) error { + id := c.QueryParam("id") + dialogDeleteID := c.QueryParam("dialogDeleteID") + dialogDeleteBodyID := c.QueryParam("dialogDeleteBodyID") + + dataUserGroup, err := lh.MdUserGroupServices.GetMdUserGroupByID(id) + if err != nil { + newForm := dev_mdusergroupview.DeleteConfirmationBody( + models.CustomTextFieldv2Prm{Name: "usergroupid", Type: "hidden", Value: strconv.Itoa(dataUserGroup.M_UserGroupID)}, + dialogDeleteBodyID, + "Apakah anda yakin menghapus user group berikut ?", + []string{"Kode", "User Group"}, + []string{"", ""}, + dev_mdusergroupview.JsShowModal("")) + return utils.ViewMulti(c, []templ.Component{customtoastv2.CustomToastV2Show("Error", "Get user group error", "danger"), newForm}) + } + newForm := dev_mdusergroupview.DeleteConfirmationBody( + models.CustomTextFieldv2Prm{Name: "usergroupid", Type: "hidden", Value: strconv.Itoa(dataUserGroup.M_UserGroupID)}, + dialogDeleteBodyID, + "Apakah anda yakin menghapus user group berikut ?", + []string{"Kode", "User Group"}, + []string{dataUserGroup.M_UserGroupCode, dataUserGroup.M_UserGroupName}, + dev_mdusergroupview.JsShowModal("#"+dialogDeleteID)) + return utils.View(c, newForm) +} +func (lh *MdUserGroupHandler) HandleCloseFormDelete(c echo.Context) error { + dialogDeleteBodyID := c.FormValue("dialogDeleteBodyID") + newForm := dev_mdusergroupview.DeleteConfirmationBody( + models.CustomTextFieldv2Prm{Name: "usergroupid", Type: "hidden", Value: ""}, + dialogDeleteBodyID, + "Apakah anda yakin menghapus user group berikut ?", + []string{"Kode", "User Group"}, + []string{"", ""}, + dev_mdusergroupview.JsShowModal("")) + return utils.View(c, newForm) +} +func (lh *MdUserGroupHandler) HandleDeleteUserGroup(c echo.Context) error { + + logger, _ := zap.NewProduction() + defer logger.Sync() + + //prm form addusergroup + + id := c.FormValue("usergroupid") + tableID := c.FormValue("tableID") + paginationID := c.FormValue("paginationID") + searchID := c.FormValue("searchID") + search := c.FormValue("search") + currPagePrm := c.FormValue("currpage" + paginationID) + // dialogAddBodyID := c.FormValue("dialogAddBodyID") + dialogDeleteID := c.FormValue("dialogDeleteID") + dialogEditBodyID := c.FormValue("dialogEditBodyID") + dialogDeleteBodyID := c.FormValue("dialogDeleteBodyID") + + currPage, err := strconv.Atoi(currPagePrm) + if err != nil { + return err + } + logger.Info("ADD USER GROUP PARAM", + + zap.Any("tableid", tableID), + zap.Any("search", search), + zap.Any("currpage", currPage), + ) + + //edit user group service + dataUserGroup, err := lh.MdUserGroupServices.DeleteMdUserGroup(id) + if err != nil { + logger.Info("Error", + zap.Any("Error", err), + ) + newForm := dev_mdusergroupview.DeleteConfirmationBody( + models.CustomTextFieldv2Prm{Name: "usergroupid", Type: "hidden", Value: ""}, + dialogDeleteBodyID, + "Apakah anda yakin menghapus user group berikut ?", + []string{"Kode", "User Group"}, + []string{"", ""}, + dev_mdusergroupview.JsShowModal("")) + return utils.ViewMulti(c, []templ.Component{ + customtoastv2.CustomToastV2Show("Error", err.Error(), "danger"), + newForm}) + + } + logger.Info("ADD USER GROUP", + zap.Any("return", dataUserGroup), + ) + //get list user group for table + dataUserGroupList, totalPage, err := lh.MdUserGroupServices.GetListMdUserGroup(search, currPage, 5) + if err != nil { + defer logger.Sync() + logger.Info("ERROR GET USER GROUP", + zap.Any("error", err), + ) + fmt.Println(dataUserGroup) + return err + } + if len(dataUserGroupList) == 0 && totalPage > 1 { + currPage = currPage - 1 + dataUserGroupList, _, err = lh.MdUserGroupServices.GetListMdUserGroup(search, currPage, 5) + if err != nil { + defer logger.Sync() + logger.Info("ERROR GET USER GROUP", + zap.Any("error", err), + ) + return err + } + } + //table component + tableComponent := dev_mdusergroupview.TableUserGroup(dataUserGroupList, + tableID, + "/dev/md/usergroupv2/openedit", + "#"+dialogEditBodyID, + "outerHTML", + "#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", + "/dev/md/usergroupv2/opendelete", + "#"+dialogDeleteBodyID, + "outerHTML", + "#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID") + + //pagination component + //Pagination + userGroupPaginationComponent := pagination.PaginationV2( + totalPage, + currPage, + "/dev/md/usergroupv2/changepage", + paginationID, + "#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", + "#"+paginationID, + "outerHTML", "", "true", + ) + var retVal []templ.Component + newForm := dev_mdusergroupview.DeleteConfirmationBody( + models.CustomTextFieldv2Prm{Name: "usergroupid", Type: "hidden", Value: ""}, + dialogDeleteBodyID, + "Apakah anda yakin menghapus user group berikut ?", + []string{"Kode", "User Group"}, + []string{"", ""}, + dev_mdusergroupview.JsHideModal("#"+dialogDeleteID)) + toastSuccess := customtoastv2.CustomToastV2Show("Success", "Berhasil delete User group ", "success") + retVal = append(retVal, toastSuccess) + retVal = append(retVal, tableComponent) + retVal = append(retVal, userGroupPaginationComponent) + retVal = append(retVal, newForm) + return utils.ViewMulti(c, retVal) +} From b3ef572180b4aa0d69930d8e116a7ca9eba02818 Mon Sep 17 00:00:00 2001 From: Sas Andy Date: Fri, 24 May 2024 10:31:48 +0700 Subject: [PATCH 10/14] route --- handlers/routes.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/handlers/routes.go b/handlers/routes.go index e9836f0..528ebcc 100644 --- a/handlers/routes.go +++ b/handlers/routes.go @@ -223,5 +223,8 @@ func SetupRoutesDev(app *echo.Echo, appStore db.AppStore) { dev.GET("/md/usergroupv2/openedit", devMdUserGroupHandlers.HandleOpenEditForm) dev.POST("/md/usergroupv2/closeeditform", devMdUserGroupHandlers.HandleCloseFormEdit) dev.POST("/md/usergroupv2/edit", devMdUserGroupHandlers.HandleEditUserGroup) + dev.GET("/md/usergroupv2/opendelete", devMdUserGroupHandlers.HandleOpenDeleteForm) + dev.POST("/md/usergroupv2/closedeleteform", devMdUserGroupHandlers.HandleCloseFormDelete) + dev.POST("/md/usergroupv2/delete", devMdUserGroupHandlers.HandleDeleteUserGroup) } From 10c1d3c5ddb57436604afb44723e7a471976dd58 Mon Sep 17 00:00:00 2001 From: Sas Andy Date: Fri, 24 May 2024 13:51:36 +0700 Subject: [PATCH 11/14] revisi toast top right based screen view --- assets/andy/coba.html | 42 +++++++++++++++++++ .../asset-corporate-portal/css/sas.bundle.css | 12 ++++++ component/toastbootstrap/customtoastv2.templ | 23 +++++----- .../toastbootstrap/customtoastv2_templ.go | 2 +- 4 files changed, 67 insertions(+), 12 deletions(-) diff --git a/assets/andy/coba.html b/assets/andy/coba.html index c575067..afdd407 100644 --- a/assets/andy/coba.html +++ b/assets/andy/coba.html @@ -94,6 +94,48 @@ License: You must have a valid license purchased only from themeforest(the above >
+ ") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -222,6 +226,10 @@ func JsMdUserGroup() templ.Component { templ_7745c5c3_Var5 = templ.NopComponent } ctx = templ.ClearChildren(ctx) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } if !templ_7745c5c3_IsBuffer { _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W) } @@ -229,6 +237,40 @@ func JsMdUserGroup() templ.Component { }) } +func BeforeRequestContent() templ.ComponentScript { + return templ.ComponentScript{ + Name: `__templ_BeforeRequestContent_911f`, + Function: `function __templ_BeforeRequestContent_911f(){const loadingParent = document.getElementById("loading-parent"); + const loadingChild = document.getElementById("loading-child"); + const loadingSpinner = document.getElementById("loading-spinner"); + + loadingParent.classList.add("overlay"); + loadingParent.classList.add("overlay-block"); + loadingChild.classList.add("overlay-layer"); + loadingSpinner.classList.remove("d-none"); +}`, + Call: templ.SafeScript(`__templ_BeforeRequestContent_911f`), + CallInline: templ.SafeScriptInline(`__templ_BeforeRequestContent_911f`), + } +} + +func AfterRequestContent() templ.ComponentScript { + return templ.ComponentScript{ + Name: `__templ_AfterRequestContent_6cc0`, + Function: `function __templ_AfterRequestContent_6cc0(){const loadingParent = document.getElementById("loading-parent"); + const loadingChild = document.getElementById("loading-child"); + const loadingSpinner = document.getElementById("loading-spinner"); + + loadingParent.classList.remove("overlay"); + loadingParent.classList.remove("overlay-block"); + loadingChild.classList.remove("overlay-layer"); + loadingSpinner.classList.add("d-none"); +}`, + Call: templ.SafeScript(`__templ_AfterRequestContent_6cc0`), + CallInline: templ.SafeScriptInline(`__templ_AfterRequestContent_6cc0`), + } +} + func ShowMdUserGroupScreen(title string, cmp templ.Component, css templ.Component, js templ.Component, navbarmenu templ.Component, navbaruser templ.Component, diff --git a/views/dev/mdusergroup/mdusergroupformmodal.templ b/views/dev/mdusergroup/mdusergroupformmodal.templ index abcfde7..4e27854 100644 --- a/views/dev/mdusergroup/mdusergroupformmodal.templ +++ b/views/dev/mdusergroup/mdusergroupformmodal.templ @@ -13,6 +13,7 @@ templ UserGroupForm(data models.UserGroupFormComponent) { hx-target={ data.HxTarget } hx-swap={ data.HxSwap } hx-include={ data.HxInclude } + hx-indicator=".formloading" hx-on::before-request={ HandleFormBeforeRequest() } hx-on::after-request={ HandleFormAfterRequest() } > @@ -27,10 +28,15 @@ templ UserGroupForm(data models.UserGroupFormComponent) { script HandleFormBeforeRequest() { console.log("handle disable btn add"); - const boxes = document.querySelectorAll('.btnaddact'); + const btnActCancel = document.querySelectorAll('.btnactcancel'); + const btnactsavedata = document.querySelectorAll('.btnactsavedata'); - for (let i = 0; i < boxes.length; i++) { - boxes[i].setAttribute('disabled', 'true'); + for (let i = 0; i < btnActCancel.length; i++) { + btnActCancel[i].setAttribute('disabled', 'true'); + + } + for (let i = 0; i < btnactsavedata.length; i++) { + btnactsavedata[i].setAttribute('disabled', 'true'); } } @@ -38,10 +44,16 @@ script HandleFormBeforeRequest() { script HandleFormAfterRequest() { console.log("handle enable btn add"); - const boxes = document.querySelectorAll('.btnaddact'); + const btnactcancel = document.querySelectorAll('.btnactcancel'); + const btnactsavedata = document.querySelectorAll('.btnactsavedata'); - for (let i = 0; i < boxes.length; i++) { - boxes[i].removeAttribute('disabled'); + + for (let i = 0; i < btnactcancel.length; i++) { + btnactcancel[i].removeAttribute('disabled'); + + } + for (let i = 0; i < btnactsavedata.length; i++) { + btnactsavedata[i].removeAttribute('disabled'); } } @@ -67,6 +79,18 @@ script JsHideModal(modalID string) { script JsShowModal(modalID string) { $(modalID).modal('show') + const btnactcancel = document.querySelectorAll('.btnactcancel'); + const btnactsavedata = document.querySelectorAll('.btnactsavedata'); + + + for (let i = 0; i < btnactcancel.length; i++) { + btnactcancel[i].removeAttribute('disabled'); + + } + for (let i = 0; i < btnactsavedata.length; i++) { + btnactsavedata[i].removeAttribute('disabled'); + + } } templ ActionFormUserGroup(LinkClose string, targetClose string, hxSwapClose string, modalID string) { @@ -76,16 +100,19 @@ templ ActionFormUserGroup(LinkClose string, targetClose string, hxSwapClose stri hx-post={ LinkClose } hx-target={ targetClose } hx-swap={ hxSwapClose } + hx-indicator=".cancelloading" type="button" - class="btn btn-outline-secondary font-weight-bolder rounded-lg mr-4 btnaddact" + class="btn btn-outline-secondary font-weight-bolder rounded-lg mr-4 btnactcancel " data-dismiss="modal" > + Batal
@@ -98,7 +125,7 @@ templ BtnCloseFormUserGroup(LinkClose string, targetClose string, hxSwapClose st hx-swap={ hxSwapClose } type="button" hx-on::after-request={ JsHideModal(modalID) } - class="close btnaddact" + class="close btnactcancel" data-dismiss="modal" aria-label="Close" > @@ -141,16 +168,19 @@ templ ActionFormUserGroupDelete(LinkClose string, targetClose string, hxSwapClos hx-post={ LinkClose } hx-target={ targetClose } hx-swap={ hxSwapClose } + hx-indicator=".cancelloading" type="button" - class="btn btn-outline-secondary font-weight-bolder rounded-lg mr-4 btnaddact" + class="btn btn-outline-secondary font-weight-bolder rounded-lg mr-4 btnactcancel" data-dismiss="modal" > + Batal diff --git a/views/dev/mdusergroup/mdusergroupformmodal_templ.go b/views/dev/mdusergroup/mdusergroupformmodal_templ.go index 9b47d79..99ce12a 100644 --- a/views/dev/mdusergroup/mdusergroupformmodal_templ.go +++ b/views/dev/mdusergroup/mdusergroupformmodal_templ.go @@ -100,7 +100,7 @@ func UserGroupForm(data models.UserGroupFormComponent) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-on::before-request=\"") + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-indicator=\".formloading\" hx-on::before-request=\"") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -143,34 +143,45 @@ func UserGroupForm(data models.UserGroupFormComponent) templ.Component { func HandleFormBeforeRequest() templ.ComponentScript { return templ.ComponentScript{ - Name: `__templ_HandleFormBeforeRequest_1e3f`, - Function: `function __templ_HandleFormBeforeRequest_1e3f(){console.log("handle disable btn add"); - const boxes = document.querySelectorAll('.btnaddact'); + Name: `__templ_HandleFormBeforeRequest_2922`, + Function: `function __templ_HandleFormBeforeRequest_2922(){console.log("handle disable btn add"); + const btnActCancel = document.querySelectorAll('.btnactcancel'); + const btnactsavedata = document.querySelectorAll('.btnactsavedata'); - for (let i = 0; i < boxes.length; i++) { - boxes[i].setAttribute('disabled', 'true'); + for (let i = 0; i < btnActCancel.length; i++) { + btnActCancel[i].setAttribute('disabled', 'true'); + + } + for (let i = 0; i < btnactsavedata.length; i++) { + btnactsavedata[i].setAttribute('disabled', 'true'); } }`, - Call: templ.SafeScript(`__templ_HandleFormBeforeRequest_1e3f`), - CallInline: templ.SafeScriptInline(`__templ_HandleFormBeforeRequest_1e3f`), + Call: templ.SafeScript(`__templ_HandleFormBeforeRequest_2922`), + CallInline: templ.SafeScriptInline(`__templ_HandleFormBeforeRequest_2922`), } } func HandleFormAfterRequest() templ.ComponentScript { return templ.ComponentScript{ - Name: `__templ_HandleFormAfterRequest_ee07`, - Function: `function __templ_HandleFormAfterRequest_ee07(){console.log("handle enable btn add"); + Name: `__templ_HandleFormAfterRequest_956b`, + Function: `function __templ_HandleFormAfterRequest_956b(){console.log("handle enable btn add"); - const boxes = document.querySelectorAll('.btnaddact'); + const btnactcancel = document.querySelectorAll('.btnactcancel'); + const btnactsavedata = document.querySelectorAll('.btnactsavedata'); - for (let i = 0; i < boxes.length; i++) { - boxes[i].removeAttribute('disabled'); + + for (let i = 0; i < btnactcancel.length; i++) { + btnactcancel[i].removeAttribute('disabled'); + + } + for (let i = 0; i < btnactsavedata.length; i++) { + btnactsavedata[i].removeAttribute('disabled'); } }`, - Call: templ.SafeScript(`__templ_HandleFormAfterRequest_ee07`), - CallInline: templ.SafeScriptInline(`__templ_HandleFormAfterRequest_ee07`), + Call: templ.SafeScript(`__templ_HandleFormAfterRequest_956b`), + CallInline: templ.SafeScriptInline(`__templ_HandleFormAfterRequest_956b`), } } @@ -202,7 +213,7 @@ func BodyFormUserGroup(inputId models.CustomTextFieldv2Prm, var templ_7745c5c3_Var10 string templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(componentID) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 54, Col: 22} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 66, Col: 22} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10)) if templ_7745c5c3_Err != nil { @@ -259,11 +270,23 @@ func JsHideModal(modalID string) templ.ComponentScript { func JsShowModal(modalID string) templ.ComponentScript { return templ.ComponentScript{ - Name: `__templ_JsShowModal_3147`, - Function: `function __templ_JsShowModal_3147(modalID){$(modalID).modal('show') + Name: `__templ_JsShowModal_b74d`, + Function: `function __templ_JsShowModal_b74d(modalID){$(modalID).modal('show') + const btnactcancel = document.querySelectorAll('.btnactcancel'); + const btnactsavedata = document.querySelectorAll('.btnactsavedata'); + + + for (let i = 0; i < btnactcancel.length; i++) { + btnactcancel[i].removeAttribute('disabled'); + + } + for (let i = 0; i < btnactsavedata.length; i++) { + btnactsavedata[i].removeAttribute('disabled'); + + } }`, - Call: templ.SafeScript(`__templ_JsShowModal_3147`, modalID), - CallInline: templ.SafeScriptInline(`__templ_JsShowModal_3147`, modalID), + Call: templ.SafeScript(`__templ_JsShowModal_b74d`, modalID), + CallInline: templ.SafeScriptInline(`__templ_JsShowModal_b74d`, modalID), } } @@ -304,7 +327,7 @@ func ActionFormUserGroup(LinkClose string, targetClose string, hxSwapClose strin var templ_7745c5c3_Var14 string templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(LinkClose) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 76, Col: 22} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 100, Col: 22} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14)) if templ_7745c5c3_Err != nil { @@ -317,7 +340,7 @@ func ActionFormUserGroup(LinkClose string, targetClose string, hxSwapClose strin var templ_7745c5c3_Var15 string templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(targetClose) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 77, Col: 26} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 101, Col: 26} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15)) if templ_7745c5c3_Err != nil { @@ -330,13 +353,13 @@ func ActionFormUserGroup(LinkClose string, targetClose string, hxSwapClose strin var templ_7745c5c3_Var16 string templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinStringErrs(hxSwapClose) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 78, Col: 24} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 102, Col: 24} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" type=\"button\" class=\"btn btn-outline-secondary font-weight-bolder rounded-lg mr-4 btnaddact\" data-dismiss=\"modal\">Batal\r ") + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-indicator=\".cancelloading\" type=\"button\" class=\"btn btn-outline-secondary font-weight-bolder rounded-lg mr-4 btnactcancel \" data-dismiss=\"modal\"> Batal\r ") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -371,7 +394,7 @@ func BtnCloseFormUserGroup(LinkClose string, targetClose string, hxSwapClose str var templ_7745c5c3_Var18 string templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinStringErrs(LinkClose) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 96, Col: 21} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 123, Col: 21} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var18)) if templ_7745c5c3_Err != nil { @@ -384,7 +407,7 @@ func BtnCloseFormUserGroup(LinkClose string, targetClose string, hxSwapClose str var templ_7745c5c3_Var19 string templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinStringErrs(targetClose) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 97, Col: 25} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 124, Col: 25} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19)) if templ_7745c5c3_Err != nil { @@ -397,7 +420,7 @@ func BtnCloseFormUserGroup(LinkClose string, targetClose string, hxSwapClose str var templ_7745c5c3_Var20 string templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.JoinStringErrs(hxSwapClose) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 98, Col: 23} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 125, Col: 23} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var20)) if templ_7745c5c3_Err != nil { @@ -412,7 +435,7 @@ func BtnCloseFormUserGroup(LinkClose string, targetClose string, hxSwapClose str if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" class=\"close btnaddact\" data-dismiss=\"modal\" aria-label=\"Close\">") + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" class=\"close btnactcancel\" data-dismiss=\"modal\" aria-label=\"Close\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -452,7 +475,7 @@ func DeleteConfirmationBody(inputId models.CustomTextFieldv2Prm, var templ_7745c5c3_Var23 string templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.JoinStringErrs(componentID) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 115, Col: 22} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 142, Col: 22} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var23)) if templ_7745c5c3_Err != nil { @@ -474,7 +497,7 @@ func DeleteConfirmationBody(inputId models.CustomTextFieldv2Prm, var templ_7745c5c3_Var25 string templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.JoinStringErrs(message) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 116, Col: 14} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 143, Col: 14} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var25)) if templ_7745c5c3_Err != nil { @@ -492,7 +515,7 @@ func DeleteConfirmationBody(inputId models.CustomTextFieldv2Prm, var templ_7745c5c3_Var26 string templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.JoinStringErrs(v) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 121, Col: 68} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 148, Col: 68} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var26)) if templ_7745c5c3_Err != nil { @@ -515,7 +538,7 @@ func DeleteConfirmationBody(inputId models.CustomTextFieldv2Prm, var templ_7745c5c3_Var27 string templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.JoinStringErrs(v) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 127, Col: 10} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 154, Col: 10} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var27)) if templ_7745c5c3_Err != nil { @@ -582,7 +605,7 @@ func ActionFormUserGroupDelete(LinkClose string, targetClose string, hxSwapClose var templ_7745c5c3_Var30 string templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.JoinStringErrs(LinkClose) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 141, Col: 22} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 168, Col: 22} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var30)) if templ_7745c5c3_Err != nil { @@ -595,7 +618,7 @@ func ActionFormUserGroupDelete(LinkClose string, targetClose string, hxSwapClose var templ_7745c5c3_Var31 string templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.JoinStringErrs(targetClose) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 142, Col: 26} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 169, Col: 26} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var31)) if templ_7745c5c3_Err != nil { @@ -608,13 +631,13 @@ func ActionFormUserGroupDelete(LinkClose string, targetClose string, hxSwapClose var templ_7745c5c3_Var32 string templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinStringErrs(hxSwapClose) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 143, Col: 24} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroupformmodal.templ`, Line: 170, Col: 24} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var32)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" type=\"button\" class=\"btn btn-outline-secondary font-weight-bolder rounded-lg mr-4 btnaddact\" data-dismiss=\"modal\">Batal\r ") + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-indicator=\".cancelloading\" type=\"button\" class=\"btn btn-outline-secondary font-weight-bolder rounded-lg mr-4 btnactcancel\" data-dismiss=\"modal\"> Batal\r ") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } diff --git a/views/dev/mdusergroup/mdusergrouptable.templ b/views/dev/mdusergroup/mdusergrouptable.templ index 64b2bea..a97091f 100644 --- a/views/dev/mdusergroup/mdusergrouptable.templ +++ b/views/dev/mdusergroup/mdusergrouptable.templ @@ -80,26 +80,50 @@ templ TableAction( ) { } + +script HandleBeforeRequestRow(id string) { + var cusid_ele = document.getElementsByClassName('btnactionug'); + for (var i = 0; i < cusid_ele.length; ++i) { + var item = cusid_ele[i]; + item.classList.add('disabled'); + } + console.log(id) +} + +script HandleAfterRequestRow(id string) { + var cusid_ele = document.getElementsByClassName('btnactionug'); + for (var i = 0; i < cusid_ele.length; ++i) { + var item = cusid_ele[i]; + item.classList.remove('disabled'); + } + console.log(id) +} diff --git a/views/dev/mdusergroup/mdusergrouptable_templ.go b/views/dev/mdusergroup/mdusergrouptable_templ.go index 51c21f6..14be310 100644 --- a/views/dev/mdusergroup/mdusergrouptable_templ.go +++ b/views/dev/mdusergroup/mdusergrouptable_templ.go @@ -188,14 +188,22 @@ func TableAction( templ_7745c5c3_Var6 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, HandleBeforeRequestRow(strconv.Itoa(id)), HandleAfterRequestRow(strconv.Itoa(id))) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("Edit\r Edit\r ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, HandleBeforeRequestRow(strconv.Itoa(id)), HandleAfterRequestRow(strconv.Itoa(id))) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("Hapus\r
") + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-indicator=\"") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var19 string + templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinStringErrs("#spnrdel" + strconv.Itoa(id)) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergrouptable.templ`, Line: 103, Col: 47} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-on::before-request=\"") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var20 templ.ComponentScript = HandleBeforeRequestRow(strconv.Itoa(id)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var20.Call) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-on::after-request=\"") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var21 templ.ComponentScript = HandleAfterRequestRow(strconv.Itoa(id)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var21.Call) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\"> Hapus\r") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -302,3 +406,33 @@ func TableAction( return templ_7745c5c3_Err }) } + +func HandleBeforeRequestRow(id string) templ.ComponentScript { + return templ.ComponentScript{ + Name: `__templ_HandleBeforeRequestRow_ee28`, + Function: `function __templ_HandleBeforeRequestRow_ee28(id){var cusid_ele = document.getElementsByClassName('btnactionug'); + for (var i = 0; i < cusid_ele.length; ++i) { + var item = cusid_ele[i]; + item.classList.add('disabled'); + } + console.log(id) +}`, + Call: templ.SafeScript(`__templ_HandleBeforeRequestRow_ee28`, id), + CallInline: templ.SafeScriptInline(`__templ_HandleBeforeRequestRow_ee28`, id), + } +} + +func HandleAfterRequestRow(id string) templ.ComponentScript { + return templ.ComponentScript{ + Name: `__templ_HandleAfterRequestRow_2a96`, + Function: `function __templ_HandleAfterRequestRow_2a96(id){var cusid_ele = document.getElementsByClassName('btnactionug'); + for (var i = 0; i < cusid_ele.length; ++i) { + var item = cusid_ele[i]; + item.classList.remove('disabled'); + } + console.log(id) +}`, + Call: templ.SafeScript(`__templ_HandleAfterRequestRow_2a96`, id), + CallInline: templ.SafeScriptInline(`__templ_HandleAfterRequestRow_2a96`, id), + } +} From 398ee17727e5ad60ae8504683e878577de0ff7c0 Mon Sep 17 00:00:00 2001 From: Sas Andy Date: Mon, 27 May 2024 09:06:00 +0700 Subject: [PATCH 14/14] revisi bug --- handlers/dev/md.usergroup.handlers.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/handlers/dev/md.usergroup.handlers.go b/handlers/dev/md.usergroup.handlers.go index 667fb3f..7a2a750 100644 --- a/handlers/dev/md.usergroup.handlers.go +++ b/handlers/dev/md.usergroup.handlers.go @@ -182,7 +182,7 @@ func (lh *MdUserGroupHandler) HandleShowMdUserGroupScreen(c echo.Context) error Link: "/dev/md/usergroupv2/add", HxTarget: "#" + dialogAddBodyID, HxSwap: "outerHTML", - HxInclude: "#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #" + searchID + ", #currpage" + paginationID, + HxInclude: "#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogEditBodyID, #" + searchID + ", #currpage" + paginationID, ModalID: dialogAddID, ModalTitle: "New-User Group", DialogBody: dialogAddBodyCmp, @@ -225,7 +225,7 @@ func (lh *MdUserGroupHandler) HandleShowMdUserGroupScreen(c echo.Context) error Link: "/dev/md/usergroupv2/edit", HxTarget: "#" + dialogEditBodyID, HxSwap: "outerHTML", - HxInclude: "#tableID, #paginationID, #searchID, #dialogEditBodyID, #dialogEditID, #" + searchID + ", #currpage" + paginationID, + HxInclude: "#tableID, #paginationID, #searchID, #dialogDeleteBodyID, #dialogEditBodyID, #dialogEditID, #" + searchID + ", #currpage" + paginationID, ModalID: dialogEditID, ModalTitle: "New-User Group", DialogBody: dialogEditBodyCmp, @@ -267,7 +267,7 @@ func (lh *MdUserGroupHandler) HandleShowMdUserGroupScreen(c echo.Context) error Link: "/dev/md/usergroupv2/delete", HxTarget: "#" + dialogDeleteBodyID, HxSwap: "outerHTML", - HxInclude: "#tableID, #paginationID, #searchID, #dialogDeleteBodyID, #dialogDeleteID, #" + searchID + ", #currpage" + paginationID, + HxInclude: "#tableID, #paginationID, #searchID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #" + searchID + ", #currpage" + paginationID, ModalID: dialogDeleteID, ModalTitle: "New-User Group", DialogBody: dialogDeleteBodyCmp,