diff --git a/handlers/dev/mdpaket.handlers.go b/handlers/dev/mdpaket.handlers.go index 62476d9..d31ad1f 100644 --- a/handlers/dev/mdpaket.handlers.go +++ b/handlers/dev/mdpaket.handlers.go @@ -3,10 +3,12 @@ package dev_handlers import ( breadcrumadmin "cpone/component/breadcrumbadmin" navbarmenu "cpone/component/navbar" + "cpone/component/pagination" sidebaruserprofile "cpone/component/sidebar_user_profile" "cpone/models" globalservices "cpone/services" "cpone/utils" + "fmt" devmdpaket "cpone/views/dev/mdpaket" @@ -17,6 +19,7 @@ import ( type MasterDataPaketService interface { GetListBreadCrumb() (models.BreadCrumbV1, error) + GetListMasterDataPaket(keyword string, currenPage int, rowPerPage int) ([]models.MDPaket, int, error) } func NewMasterDataPaketServiceHandler(us MasterDataPaketService) *MasterDataPaketHandler { @@ -35,7 +38,7 @@ func (usr *MasterDataPaketHandler) View(c echo.Context, cmp templ.Component) err return cmp.Render(c.Request().Context(), c.Response().Writer) } -func (usr *MasterDataPaketHandler) HandlerShowMasterDataPaket(c echo.Context) error { +func (mdp *MasterDataPaketHandler) HandlerShowMasterDataPaket(c echo.Context) error { logger, _ := zap.NewProduction() dataMenu, err := globalservices.GetMenu() @@ -48,9 +51,22 @@ func (usr *MasterDataPaketHandler) HandlerShowMasterDataPaket(c echo.Context) er return err } + dataPaket, totalPage, err := mdp.MasterDataPaketService.GetListMasterDataPaket("", 1, 3) + if err != nil { + defer logger.Sync() + logger.Info("ERROR GET DATA PAKET", + zap.Any("error", err), + ) + fmt.Println(dataPaket) + return err + } + defer logger.Sync() - dataBreadCrumb, err := usr.MasterDataPaketService.GetListBreadCrumb() + tableID := utils.GenerateRandomID("tablebody") + paginationID := utils.GenerateRandomID("paginationid") + + dataBreadCrumb, err := mdp.MasterDataPaketService.GetListBreadCrumb() if err != nil { return err } @@ -59,10 +75,26 @@ func (usr *MasterDataPaketHandler) HandlerShowMasterDataPaket(c echo.Context) er navbaruserComponent := navbarmenu.Navbar(dataUser) sidebaruserprofileComponent := sidebaruserprofile.Navbaruserprofile(dataUser) - cmp_mdu := devmdpaket.ShowMasterDataPaket( + contentTablePaket := devmdpaket.TablePaket(dataPaket, tableID) + paginationPaket := pagination.PaginationV2( + totalPage, + 1, + "/dev/paketpagination", + paginationID, + "#tableID, #paginationID", + "#"+paginationID, + "outerHTML", + "", + ) + + cmp_mdp := devmdpaket.ShowMasterDataPaket( "Master Paket", devmdpaket.ContentMasterDataPaket( + tableID, + paginationID, breadcrumadmin.MainBreadcrumbAdminV1(dataBreadCrumb), + contentTablePaket, + paginationPaket, ), devmdpaket.CSSMasterDataPaket(), devmdpaket.JsMasterDataPaket(), @@ -71,5 +103,5 @@ func (usr *MasterDataPaketHandler) HandlerShowMasterDataPaket(c echo.Context) er sidebaruserprofileComponent, ) - return utils.View(c, cmp_mdu) + return utils.View(c, cmp_mdp) } diff --git a/models/paket.models.go b/models/paket.models.go new file mode 100644 index 0000000..43b59fa --- /dev/null +++ b/models/paket.models.go @@ -0,0 +1,9 @@ +package models + +type MDPaket struct { + PaketID int `json:"paket_id"` + PaketKode string `json:"paket_kode"` + PaketJenis string `json:"paket_jenis"` + PaketNama string `json:"paket_nama"` + PaketIsActive string `json:"paket_Is_Active"` +} diff --git a/services/dev/mdpaket.services.go b/services/dev/mdpaket.services.go index b333097..fbe4219 100644 --- a/services/dev/mdpaket.services.go +++ b/services/dev/mdpaket.services.go @@ -15,7 +15,7 @@ type ServiceMasterDataPaket struct { MasterDataPaketStore db.AppStore } -func (smdu *ServiceMasterDataPaket) GetListBreadCrumb() (models.BreadCrumbV1, error) { +func (smdp *ServiceMasterDataPaket) GetListBreadCrumb() (models.BreadCrumbV1, error) { var ret models.BreadCrumbV1 dummyBreadcrumb := models.BreadCrumbV1{ @@ -39,3 +39,74 @@ func (smdu *ServiceMasterDataPaket) GetListBreadCrumb() (models.BreadCrumbV1, er ret = dummyBreadcrumb return ret, nil } + +func (smdp *ServiceMasterDataPaket) GetListMasterDataPaket(keyword string, currentPage int, rowPerPage int) ([]models.MDPaket, int, error) { + var ret []models.MDPaket + // var totalData int + + // offset := (currentPage - 1) * rowPerPage + + // // total data + // prm := "%" + strings.TrimSpace(keyword) + "%" + // querytotal := `` + // if err := dbx.Handlex.Get(&totalData, querytotal, prm, prm); err != nil { + // return nil, 0, fmt.Errorf("error query database: %v", err) + // } + + // // get data + // query := `` + // if err := dbx.Handlex.Select(&ret, query, prm, prm, rowPerPage, offset); err != nil { + // return nil, 0, fmt.Errorf("error query database: %v", err) + // } + // totalPage := int(math.Ceil(float64(totalData) / float64(rowPerPage))) + + // return ret, totalPage, nil + + dummyData := []models.MDPaket{ + { + PaketID: 1, + PaketKode: "001", + PaketJenis: "Panel", + PaketNama: "Paket A", + PaketIsActive: "Y", + }, + { + PaketID: 2, + PaketKode: "002", + PaketJenis: "Panel", + PaketNama: "Paket B", + PaketIsActive: "Y", + }, + { + PaketID: 3, + PaketKode: "003", + PaketJenis: "Profile", + PaketNama: "Paket C", + PaketIsActive: "Y", + }, + { + PaketID: 4, + PaketKode: "004", + PaketJenis: "Profile", + PaketNama: "Paket D", + PaketIsActive: "Y", + }, + { + PaketID: 5, + PaketKode: "005", + PaketJenis: "Panel", + PaketNama: "Paket E", + PaketIsActive: "Y", + }, + { + PaketID: 6, + PaketKode: "006", + PaketJenis: "Profile", + PaketNama: "Paket F", + PaketIsActive: "Y", + }, + } + + ret = dummyData + return ret, 2, nil +} diff --git a/views/dev/mdpaket/mdpaket.templ b/views/dev/mdpaket/mdpaket.templ index 50ef2df..47847d1 100644 --- a/views/dev/mdpaket/mdpaket.templ +++ b/views/dev/mdpaket/mdpaket.templ @@ -1,17 +1,29 @@ package devmdpaket -import "cpone/layout" -import "cpone/component/customtextfield" -import "cpone/component/table" +import ( + "cpone/layout" + "cpone/component/customtextfield" + "cpone/component/table" + "cpone/models" + "strconv" +) templ ContentMasterDataPaket( + tableID string, + paginationID string, breadcrumb templ.Component, + tablecontent templ.Component, + paginationPaket 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})
@breadcrumb @@ -30,18 +42,33 @@ templ ContentMasterDataPaket(
+ @tablecontent + @paginationPaket +
+
+ +
+
+
+ +
} -templ TableHeadPaket(data []string, tableID string) { +templ TablePaket(data []models.MDPaket, tableID string) {
- @tablecomponent.TableV3([]string{"KODE", "JENIS PAKET", "NAMA PAKET", "AKSI"} + @tablecomponent.TableV3([]string{"KODE", "JENIS PAKET", "NAMA PAKET", "AKSI"}, []string{"20%", "30%", "30%", "20%"}, TableDataPaket(data))
} -templ TableDataPaket(data []string) { +templ TableDataPaket(data []models.MDPaket) { if len(data) == 0 { Data Tidak Ditemukan @@ -49,15 +76,64 @@ templ TableDataPaket(data []string) { } for _, v := range data { + { v.PaketKode } + { v.PaketJenis } + { v.PaketNama } - +
+ + Edit + + + Hapus + +
} } templ CSSMasterDataPaket() { - + + + + } templ JsMasterDataPaket() { diff --git a/views/dev/mdpaket/mdpaket_templ.go b/views/dev/mdpaket/mdpaket_templ.go index 59d5e54..f17b1e6 100644 --- a/views/dev/mdpaket/mdpaket_templ.go +++ b/views/dev/mdpaket/mdpaket_templ.go @@ -10,10 +10,20 @@ import "context" import "io" import "bytes" -import "cpone/layout" +import ( + "cpone/component/customtextfield" + "cpone/component/table" + "cpone/layout" + "cpone/models" + "strconv" +) func ContentMasterDataPaket( + tableID string, + paginationID string, breadcrumb templ.Component, + tablecontent templ.Component, + paginationPaket 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) @@ -27,7 +37,25 @@ func ContentMasterDataPaket( 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 = templ_7745c5c3_Buffer.WriteString("
") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -35,10 +63,166 @@ func ContentMasterDataPaket( 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 = paginationPaket.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 TablePaket(data []models.MDPaket, 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_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 + } + templ_7745c5c3_Err = tablecomponent.TableV3([]string{"KODE", "JENIS PAKET", "NAMA PAKET", "AKSI"}, + []string{"20%", "30%", "30%", "20%"}, + TableDataPaket(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 TableDataPaket(data []models.MDPaket) 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_Var5 := templ.GetChildren(ctx) + if templ_7745c5c3_Var5 == nil { + templ_7745c5c3_Var5 = 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_Var6 string + templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(v.PaketKode) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdpaket\mdpaket.templ`, Line: 79, Col: 29} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6)) + 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_Var7 string + templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(v.PaketJenis) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdpaket\mdpaket.templ`, Line: 80, Col: 30} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7)) + 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_Var8 string + templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(v.PaketNama) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdpaket\mdpaket.templ`, Line: 81, Col: 29} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
Edit\r Hapus\r
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } if !templ_7745c5c3_IsBuffer { _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W) } @@ -54,11 +238,15 @@ func CSSMasterDataPaket() 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_Var10 := templ.GetChildren(ctx) + if templ_7745c5c3_Var10 == nil { + templ_7745c5c3_Var10 = 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) } @@ -74,9 +262,9 @@ func JsMasterDataPaket() 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_Var11 := templ.GetChildren(ctx) + if templ_7745c5c3_Var11 == nil { + templ_7745c5c3_Var11 = templ.NopComponent } ctx = templ.ClearChildren(ctx) if !templ_7745c5c3_IsBuffer { @@ -102,12 +290,12 @@ func ShowMasterDataPaket( 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_Var12 := templ.GetChildren(ctx) + if templ_7745c5c3_Var12 == nil { + templ_7745c5c3_Var12 = 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_Var13 := 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() @@ -122,7 +310,7 @@ func ShowMasterDataPaket( } 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_Var13), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err }