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
+ })
+}