diff --git a/handlers/dev/md.samplestation.handlers.go b/handlers/dev/md.samplestation.handlers.go new file mode 100644 index 0000000..69fdb9c --- /dev/null +++ b/handlers/dev/md.samplestation.handlers.go @@ -0,0 +1,68 @@ +package dev_handlers + +import ( + breadcrumbadmin "cpone/component/breadcrumbadmin" + navbarmenu "cpone/component/navbar" + sidebaruserprofile "cpone/component/sidebar_user_profile" + "cpone/models" + "cpone/services" + "cpone/utils" + dev_mdsamplestationview "cpone/views/dev/mdsamplestation" + + "github.com/labstack/echo/v4" + "go.uber.org/zap" +) + +type MDSampleStationServices interface { + GetMDSampleStationBreadcrumb() (models.BreadCrumbV1, error) +} + +func NewMDSampleStationHandler(ss MDSampleStationServices) *MDSampleStationHandler { + return &MDSampleStationHandler{ + MDSampleStationServices: ss, + } +} + +type MDSampleStationHandler struct { + MDSampleStationServices MDSampleStationServices +} + +func (mdss *MDSampleStationHandler) HandleShowMDSampleStationScreen(c echo.Context) error { + logger, _ := zap.NewProduction() + title := "Master Sample Station" + + dialogAddID := utils.GenerateRandomID("dialogaddID") + + dataMenu, err := services.GetMenu() + if err != nil { + return err + } + + dataUser, err := services.GetUserLogin() + if err != nil { + return err + } + defer logger.Sync() + logger.Info("ERROR LOAD DEV", zap.Any("data", dataUser)) + + dataBreadcrumb, err := mdss.MDSampleStationServices.GetMDSampleStationBreadcrumb() + if err != nil { + defer logger.Sync() + logger.Info("ERROR BREADCRUMB DEV", zap.Any("error", err)) + return err + } + navbarmenuComp := navbarmenu.NavbarMenu(dataMenu) + navbaruserComp := navbarmenu.Navbar(dataUser) + breadcrumbComp := breadcrumbadmin.MainBreadcrumbAdminV1(dataBreadcrumb) + sidebaruserprofilceComp := sidebaruserprofile.Navbaruserprofile(dataUser) + + content := dev_mdsamplestationview.ContentMDSampleStation( + dialogAddID, + breadcrumbComp, + ) + css := dev_mdsamplestationview.CSSMDSampleStation() + js := dev_mdsamplestationview.JSMDSampleStation() + + view := dev_mdsamplestationview.ShowMDSampleStation(title, content, css, js, navbarmenuComp, navbaruserComp, sidebaruserprofilceComp) + return utils.View(c, view) +} diff --git a/handlers/routes.go b/handlers/routes.go index d1b13b1..db4a04f 100644 --- a/handlers/routes.go +++ b/handlers/routes.go @@ -262,6 +262,10 @@ func SetupRoutesDev(app *echo.Echo, appStore db.AppStore) { dev.POST("/groupresult/add", devGRhandlers.AddGroupResult) dev.POST("/groupresult/edit", devGRhandlers.EditGroupResult) dev.POST("/groupresult/delete", devGRhandlers.DeleteGroupResult) + // md sample station + devMDSampleStationServices := dev_services.NewMDSampleStationServices(appStore) + devMDSampleStationHandlers := dev_handlers.NewMDSampleStationHandler(devMDSampleStationServices) + dev.GET("/samplestation", devMDSampleStationHandlers.HandleShowMDSampleStationScreen) // masterdata nat unit devMdNatUnitServices := dev_services.NewMdNatUnitServices(appStore) devMdNatUnitHandlers := dev_handlers.NeWMdNatUnitHandler(devMdNatUnitServices) diff --git a/models/samplestation.models.go b/models/samplestation.models.go new file mode 100644 index 0000000..9b4238f --- /dev/null +++ b/models/samplestation.models.go @@ -0,0 +1,10 @@ +package models + +type MDSampleStation struct { + T_SampleStationID int `db:"T_SampleStationID"` + T_SampleStationCode string `db:"T_SampleStationCode"` + T_SampleStationName string `db:"T_SampleStationName"` + T_SampleStationNat_GroupID string `db:"T_SampleStationNat_GroupID"` + T_SampleStationIsNonLab string `db:"T_SampleStationIsNonLab"` + T_SampleStationIsActive string `db:"T_SampleStationIsActive"` +} diff --git a/services/dev/md.samplestation.services.go b/services/dev/md.samplestation.services.go new file mode 100644 index 0000000..6dcd8c5 --- /dev/null +++ b/services/dev/md.samplestation.services.go @@ -0,0 +1,41 @@ +package dev_services + +import ( + "cpone/db" + "cpone/models" +) + +func NewMDSampleStationServices(uStore db.AppStore) *MDSampleStationServices { + return &MDSampleStationServices{ + MDSampleStationStore: uStore, + } +} + +type MDSampleStationServices struct { + MDSampleStationStore db.AppStore +} + +func (ss *MDSampleStationServices) GetMDSampleStationBreadcrumb() (models.BreadCrumbV1, error) { + var ret models.BreadCrumbV1 + + Breadcrumb := models.BreadCrumbV1{ + Title: "Master Sample Station", + Item: []models.ItemBreadCrumbV1{ + { + Item: "Dashboard", + Url: "/dev/dashboard", + }, + { + Item: "Master", + Url: "/dev/master", + }, + { + Item: "Sample Stasion", + Url: "", + }, + }, + } + + ret = Breadcrumb + return ret, nil +} diff --git a/views/dev/mdsamplestation/mdsamplestation.templ b/views/dev/mdsamplestation/mdsamplestation.templ new file mode 100644 index 0000000..d1f4e35 --- /dev/null +++ b/views/dev/mdsamplestation/mdsamplestation.templ @@ -0,0 +1,94 @@ +package dev_mdsamplestationview + +import ( + "cpone/layout" + "cpone/component/customtextfield" + "cpone/models" +) + +templ ContentMDSampleStation( + tableID string, + dialogAddID string, + breadcrumb templ.Component, + tablecontent templ.Component, +) { +
+ @customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "tableID", + Name: "tableID", + Type: "hidden", + Value: tableID}) + @customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "dialogAddID", + Name: "dialogAddID", + Type: "hidden", + Value: dialogAddID}) +
+
+ @breadcrumb +
+
+
+ +
+
+
+ +
+
+ @tablecontent +
+} + +templ CSSMDSampleStation() { + + + + +} + +templ JSMDSampleStation() { + +} + +templ ShowMDSampleStation( + 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 + } +} \ No newline at end of file diff --git a/views/dev/mdsamplestation/mdsamplestation_templ.go b/views/dev/mdsamplestation/mdsamplestation_templ.go new file mode 100644 index 0000000..e407779 --- /dev/null +++ b/views/dev/mdsamplestation/mdsamplestation_templ.go @@ -0,0 +1,196 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.2.663 +package dev_mdsamplestationview + +//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 ContentMDSampleStation( + tableID string, + dialogAddID 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 { + 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: "dialogAddID", + Name: "dialogAddID", + Type: "hidden", + Value: dialogAddID}).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 = 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 + } + if !templ_7745c5c3_IsBuffer { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W) + } + return templ_7745c5c3_Err + }) +} + +func CSSMDSampleStation() 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_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 JSMDSampleStation() 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 !templ_7745c5c3_IsBuffer { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W) + } + return templ_7745c5c3_Err + }) +} + +func ShowMDSampleStation( + 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_Var6 := templ.GetChildren(ctx) + if templ_7745c5c3_Var6 == nil { + templ_7745c5c3_Var6 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + 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() + 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_Var7), 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/mdsamplestation/mdsamplestationtable.templ b/views/dev/mdsamplestation/mdsamplestationtable.templ new file mode 100644 index 0000000..192623b --- /dev/null +++ b/views/dev/mdsamplestation/mdsamplestationtable.templ @@ -0,0 +1,27 @@ +package dev_mdsamplestationview + +import "cpone/models" +import "cpone/component/table" + +templ TableSampleStation(data []models.MDSampleStation, tableID string) { +
+ @tablecomponent.TableV3([]string{"KODE", "NAMA STATION", "GROUP", "AKSI"}, + []string{"20%", "30%", "30%", "20%"}, + ItemRow(data)) +
+} + +templ ItemRow(data []models.MDSampleStation) { + if len(data) == 0 { + + Data Tidak Ditemukan + + } + for _, v := range data { + + { v.T_SampleStationCode } + { v.T_SampleStationName } + { v.T_SampleStationNat_GroupID } + + } +} \ No newline at end of file diff --git a/views/dev/mdsamplestation/mdsamplestationtable_templ.go b/views/dev/mdsamplestation/mdsamplestationtable_templ.go new file mode 100644 index 0000000..f819c96 --- /dev/null +++ b/views/dev/mdsamplestation/mdsamplestationtable_templ.go @@ -0,0 +1,93 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.2.663 +package dev_mdsamplestationview + +//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/table" + +func TableSampleStation(data []models.MDSampleStation, 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", "NAMA STATION", "GROUP", "AKSI"}, + []string{"20%", "30%", "30%", "20%"}, + ItemRow(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 ItemRow(data []models.MDSampleStation) 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 + } + } + if !templ_7745c5c3_IsBuffer { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W) + } + return templ_7745c5c3_Err + }) +} diff --git a/views/dev/mdusergroup/mdusergroup_templ.go b/views/dev/mdusergroup/mdusergroup_templ.go index 4cb6e37..c28b6b4 100644 --- a/views/dev/mdusergroup/mdusergroup_templ.go +++ b/views/dev/mdusergroup/mdusergroup_templ.go @@ -127,7 +127,11 @@ func MdUserGroupScreen( var templ_7745c5c3_Var2 string templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs("#" + dialogAddID) if templ_7745c5c3_Err != nil { +<<<<<<< HEAD return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroup.templ`, Line: 74, Col: 37} +======= + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroup.templ`, Line: 52, Col: 37} +>>>>>>> 3afd212 (add sample station handler, services, model) } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2)) if templ_7745c5c3_Err != nil { @@ -140,7 +144,11 @@ func MdUserGroupScreen( var templ_7745c5c3_Var3 string templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs("#" + dialogAddID) if templ_7745c5c3_Err != nil { +<<<<<<< HEAD return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroup.templ`, Line: 83, Col: 36} +======= + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdusergroup\mdusergroup.templ`, Line: 61, Col: 36} +>>>>>>> 3afd212 (add sample station handler, services, model) } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3)) if templ_7745c5c3_Err != nil { diff --git a/views/dev/samplestation/samplestation.templ b/views/dev/samplestation/samplestation.templ deleted file mode 100644 index 05ac1fc..0000000 --- a/views/dev/samplestation/samplestation.templ +++ /dev/null @@ -1,54 +0,0 @@ -package samplestation - -import "cpone/layout" - -templ ContentMDSampleStation() { - -} - -templ CSSMDSampleStation() { - - - - -} - -templ JSMDSampleStation() { - -} - -templ ShowMDSampleStation( - 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 - } -} \ No newline at end of file