diff --git a/handlers/dev/md.natunit.handlers.go b/handlers/dev/md.natunit.handlers.go new file mode 100644 index 0000000..7a535e2 --- /dev/null +++ b/handlers/dev/md.natunit.handlers.go @@ -0,0 +1,228 @@ +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_mdnatunitview "cpone/views/dev/mdnatunit" + "fmt" + "strconv" + + "github.com/a-h/templ" + "github.com/labstack/echo/v4" + "go.uber.org/zap" +) + +type MdNatUnitServices interface { + GetListMdNatUnit(search string, currentPage int, rowPerPage int) ([]models.NatUnit, int, error) + GetMdNatUnitBreadCrumb(title string) (models.BreadCrumbV1, error) +} + +func NeWMdNatUnitHandler(nu MdNatUnitServices) *MdNatUnitHandler { + return &MdNatUnitHandler{ + MdNatUnitServices: nu, + } +} + +type MdNatUnitHandler struct { + MdNatUnitServices MdNatUnitServices +} + +func (nh *MdNatUnitHandler) HandleShowMdNatUnitScreen(c echo.Context) error { + logger, _ := zap.NewProduction() + + tableID := utils.GenerateRandomID("tablebody") + paginationID := utils.GenerateRandomID("paginationid") + searchID := utils.GenerateRandomID("searchid") + 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 Unit" + + dataBreadCrumb, err := nh.MdNatUnitServices.GetMdNatUnitBreadCrumb(title) + fmt.Println(dataBreadCrumb) + fmt.Println(err) + if err != nil { + defer logger.Sync() + logger.Info("ERROR BREADCRUMB DEV", + zap.Any("error", err), + ) + fmt.Println(dataBreadCrumb) + return err + } + + defer logger.Sync() + logger.Info("LOAD BREADCRUMB DEV", + zap.Any("data", dataBreadCrumb), + ) + //Breadcrumb component + breadcrumbComponent := breadcrumadmin.MainBreadcrumbAdminV1(dataBreadCrumb) + // navbar menu + navbarmenuComponent := navbarmenu.NavbarMenu(dataMenu) + + // navbar user + navbaruserComponent := navbarmenu.Navbar(dataUser) + + // sidebar + sidebaruserprofileComponent := sidebaruserprofile.Navbaruserprofile(dataUser) + + //Table component + dataNatUnit, totalPage, err := nh.MdNatUnitServices.GetListMdNatUnit("", 1, 5) + if err != nil { + defer logger.Sync() + logger.Info("ERROR GET NAT UNTI", + zap.Any("error", err), + ) + fmt.Println(dataNatUnit) + return err + } + + tableComponent := dev_mdnatunitview.TableNatUnit(dataNatUnit, + tableID, + ) + + //filter user group component + natUnitFilterComponent := customtextfieldsearch.MainCustomTextFieldSearchV2(searchID, + "search", + "Cari Kode/Nama", + "text", + "/dev/md/natunit/filter", + "input changed delay:500ms, search", + "#"+paginationID, "", "", "outerHTML", "#tableID, #paginationID, #searchID") + + //Pagination + natUnitPaginationComponent := pagination.PaginationV2( + totalPage, + 1, + "/dev/md/natunit/changepage", + paginationID, + "#tableID, #searchID, #"+searchID+", #paginationID", + "#"+paginationID, + "outerHTML", "", "", + ) + + // content, css, js + content := dev_mdnatunitview.MdNatUnitScreen( + tableID, + paginationID, + searchID, + breadcrumbComponent, + tableComponent, + natUnitFilterComponent, + natUnitPaginationComponent, + ) + css := dev_mdnatunitview.CssMdNatUnit() + js := dev_mdnatunitview.JsMdNatUnit() + + view := dev_mdnatunitview.ShowMdNatUnitScreen( + title, + content, + css, + js, + navbarmenuComponent, + navbaruserComponent, + sidebaruserprofileComponent, + ) + + return utils.View(c, view) +} + +func (nh *MdNatUnitHandler) HandleFilterMdNatUnit(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() + + dataNatUnit, totalpage, err := nh.MdNatUnitServices.GetListMdNatUnit(search, 1, 5) + if err != nil { + defer logger.Sync() + logger.Info("ERROR GET NAT UNTI", + zap.Any("error", err), + ) + fmt.Println(dataNatUnit) + return err + } + tableComponent := dev_mdnatunitview.TableNatUnit(dataNatUnit, + tableID) + natUnitPaginationComponent := pagination.PaginationV2( + totalpage, + 1, + "/dev/md/natunit/changepage", + paginationID, + "#tableID, #searchID, #"+searchID+", #paginationID", + "#"+paginationID, + "outerHTML", "", "", + ) + retval = append(retval, tableComponent) + retval = append(retval, natUnitPaginationComponent) + return utils.ViewMulti(c, retval) +} + +func (nh *MdNatUnitHandler) HandlerChangePageMdNatUnit(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 + } + + dataNatUnit, totalpage, err := nh.MdNatUnitServices.GetListMdNatUnit(search, page, 5) + if err != nil { + defer logger.Sync() + logger.Info("ERROR GET NAT UNIT", + zap.Any("error", err), + ) + fmt.Println(dataNatUnit) + return err + } + tableComponent := dev_mdnatunitview.TableNatUnit(dataNatUnit, + tableID) + natUnitPaginationComponent := pagination.PaginationV2( + totalpage, + page, + "/dev/md/natunit/changepage", + paginationID, + "#tableID, #searchID, #"+searchID+", #paginationID", + "#"+paginationID, + "outerHTML", "", "", + ) + retval = append(retval, tableComponent) + retval = append(retval, natUnitPaginationComponent) + return utils.ViewMulti(c, retval) +} diff --git a/handlers/routes.go b/handlers/routes.go index 84520a4..54d5ed4 100644 --- a/handlers/routes.go +++ b/handlers/routes.go @@ -247,4 +247,10 @@ func SetupRoutesDev(app *echo.Echo, appStore db.AppStore) { dev.POST("/md/usergroupv2/closedeleteform", devMdUserGroupHandlers.HandleCloseFormDelete) dev.POST("/md/usergroupv2/delete", devMdUserGroupHandlers.HandleDeleteUserGroup) + // masterdata nat unit + devMdNatUnitServices := dev_services.NewMdNatUnitServices(appStore) + devMdNatUnitHandlers := dev_handlers.NeWMdNatUnitHandler(devMdNatUnitServices) + dev.GET("/md/natunit", devMdNatUnitHandlers.HandleShowMdNatUnitScreen) + dev.GET("/md/natunit/filter", devMdNatUnitHandlers.HandleFilterMdNatUnit) + dev.GET("/md/natunit/changepage", devMdNatUnitHandlers.HandlerChangePageMdNatUnit) } diff --git a/models/natunit.models.go b/models/natunit.models.go new file mode 100644 index 0000000..f5cf236 --- /dev/null +++ b/models/natunit.models.go @@ -0,0 +1,11 @@ +package models + +type NatUnit struct { + Nomor string `db:"nomor"` + Nat_UnitID int `db:"Nat_UnitID"` + Nat_UnitCode string `db:"Nat_UnitCode"` + Nat_UnitName string `db:"Nat_UnitName"` + Nat_UnitCreated string `db:"Nat_UnitCreated"` + Nat_UnitLastUpdated string `db:"Nat_UnitLastUpdated"` + Nat_UnitIsActive string `db:"Nat_UnitIsActive"` +} diff --git a/services/dev/md.natunit.services.go b/services/dev/md.natunit.services.go new file mode 100644 index 0000000..43f024c --- /dev/null +++ b/services/dev/md.natunit.services.go @@ -0,0 +1,106 @@ +package dev_services + +import ( + "cpone/db" + "cpone/models" + dbx "cpone/package/database" + "fmt" + "math" + "strings" +) + +func NewMdNatUnitServices(uStore db.AppStore) *MdNatUnitServices { + return &MdNatUnitServices{ + MdNatUnitStore: uStore, + } +} + +type MdNatUnitServices struct { + MdNatUnitStore db.AppStore +} + +func (nu *MdNatUnitServices) GetListMdNatUnit(search string, currentPage int, rowPerPage int) ([]models.NatUnit, int, error) { + var natUnitList []models.NatUnit + var totalData int + offset := (currentPage - 1) * rowPerPage + prm := "%" + strings.TrimSpace(search) + "%" + querytotal := `SELECT COUNT(*) + FROM nat_unit + WHERE Nat_UnitIsActive = 'Y' + AND (Nat_UnitCode LIKE ? OR Nat_UnitName 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 (ORDER BY Nat_UnitID DESC) AS nomor, + Nat_UnitID, + Nat_UnitCode, + Nat_UnitName, + Nat_UnitCreated, + Nat_UnitLastUpdated, + Nat_UnitIsActive + FROM nat_unit + WHERE Nat_UnitIsActive = 'Y' + AND (Nat_UnitCode LIKE ? OR Nat_UnitName LIKE ?) + ORDER BY Nat_UnitID DESC + LIMIT ? OFFSET ?` + + if err := dbx.Handlex.Select(&natUnitList, 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 natUnitList, totalPage, nil +} + +func (nu *MdNatUnitServices) GetMdNatUnitBreadCrumb(title string) (models.BreadCrumbV1, error) { + var ret models.BreadCrumbV1 + + dummyBreadcrumb := []models.BreadCrumbV1{ + { + Title: "Master Unit", + Item: []models.ItemBreadCrumbV1{ + { + Item: "Dashboard", + Url: "/dev/dashboard", + }, + { + Item: "Master", + Url: "/dev/master", + }, + { + Item: "Unit", + 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 +} diff --git a/views/dev/mdnatunit/mdnatunit.templ b/views/dev/mdnatunit/mdnatunit.templ new file mode 100644 index 0000000..51c3544 --- /dev/null +++ b/views/dev/mdnatunit/mdnatunit.templ @@ -0,0 +1,101 @@ +package dev_mdnatunitview + +import ( + "cpone/layout" + "cpone/component/customtextfield" + "cpone/models" +) + +templ MdNatUnitScreen( + tableID string, + paginationID string, + searchID string, + breadcrumb templ.Component, + tablecontent templ.Component, + filterComponent templ.Component, + paginationComponent 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 +
+
+ //
+
+ +
+
+
+ +
+
+ @filterComponent + @tablecontent + @paginationComponent +
+} + +templ CssMdNatUnit() { + + + + +} + +templ JsMdNatUnit() { +} + +templ ShowMdNatUnitScreen(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/mdnatunit/mdnatunit_templ.go b/views/dev/mdnatunit/mdnatunit_templ.go new file mode 100644 index 0000000..800ab15 --- /dev/null +++ b/views/dev/mdnatunit/mdnatunit_templ.go @@ -0,0 +1,183 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.2.663 +package dev_mdnatunitview + +//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/customtextfield" + "cpone/layout" + "cpone/models" +) + +func MdNatUnitScreen( + tableID string, + paginationID string, + searchID string, + breadcrumb 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 { + 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 = 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 + } + 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 + } + 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 + } + if !templ_7745c5c3_IsBuffer { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W) + } + return templ_7745c5c3_Err + }) +} + +func CssMdNatUnit() 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 JsMdNatUnit() 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 ShowMdNatUnitScreen(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 + }) +} diff --git a/views/dev/mdnatunit/mdnatunittable.templ b/views/dev/mdnatunit/mdnatunittable.templ new file mode 100644 index 0000000..4e4edd3 --- /dev/null +++ b/views/dev/mdnatunit/mdnatunittable.templ @@ -0,0 +1,33 @@ +package dev_mdnatunitview + +import ( + "cpone/component/table" + "cpone/models" +) + +templ TableNatUnit(data []models.NatUnit, + tableID string, +) { +
+ @tablecomponent.TableV3([]string{"KODE", "UNIT", "AKSI"}, + []string{"40%", "40%", "20%"}, + RowNatUnit(data)) +
+} + +templ RowNatUnit(data []models.NatUnit) { + if len(data) == 0 { + + Data Tidak Ditemukan + + } + for _, v := range data { + + { v.Nat_UnitCode } + { v.Nat_UnitName } + + Action + + + } +} diff --git a/views/dev/mdnatunit/mdnatunittable_templ.go b/views/dev/mdnatunit/mdnatunittable_templ.go new file mode 100644 index 0000000..271aa07 --- /dev/null +++ b/views/dev/mdnatunit/mdnatunittable_templ.go @@ -0,0 +1,123 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.2.663 +package dev_mdnatunitview + +//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" + "cpone/models" +) + +func TableNatUnit(data []models.NatUnit, + 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", "UNIT", "AKSI"}, + []string{"40%", "40%", "20%"}, + RowNatUnit(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 RowNatUnit(data []models.NatUnit) 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.Nat_UnitCode) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdnatunit\mdnatunittable.templ`, Line: 26, Col: 23} + } + _, 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.Nat_UnitName) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdnatunit\mdnatunittable.templ`, Line: 27, Col: 23} + } + _, 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 + }) +}